set.seed(20250409) covprod <- distfreereg:::covprod block_dims <- c(7,5,13) n <- sum(block_dims) Sigma_list <- lapply(seq_along(block_dims), function(i) rWishart(1, df = block_dims[i], diag(block_dims[i]))[,,1]) Sigma_mat <- as.matrix(Matrix::bdiag(Sigma_list)) Sigma_vec <- rnorm(n) Sigma_num <- rnorm(1) M <- matrix(rnorm(3*n), nrow = n) all.equal(covprod(Sigma_list, M), Sigma_mat %*% M) all.equal(covprod(Sigma_mat, M), Sigma_mat %*% M) all.equal(covprod(Sigma_vec, M), diag(Sigma_vec) %*% M) all.equal(covprod(Sigma_num, M), diag(Sigma_num, nrow = n) %*% M)