diff --git a/tests/blocks/spinhalf_symmetric/test_spinhalf_symmetric_apply.cpp b/tests/blocks/spinhalf_symmetric/test_spinhalf_symmetric_apply.cpp index e49c7101..7c7e78a3 100644 --- a/tests/blocks/spinhalf_symmetric/test_spinhalf_symmetric_apply.cpp +++ b/tests/blocks/spinhalf_symmetric/test_spinhalf_symmetric_apply.cpp @@ -30,6 +30,11 @@ void test_spinhalf_symmetric_apply(OpSum ops, PermutationGroup space_group, arma::cx_vec w2(block.size(), arma::fill::zeros); apply(ops, block, v, block, w2); REQUIRE(close(w1, w2)); + arma::cx_mat m(block.size(), 5, arma::fill::randn); + arma::cx_mat n1 = H * m; + arma::cx_mat n2(block.size(), 5, arma::fill::zeros); + apply(ops, block, m, block, n2); + REQUIRE(close(n1, n2)); // Compute eigenvalues and compare arma::vec evals_mat; diff --git a/xdiag/algebra/apply.cpp b/xdiag/algebra/apply.cpp index 894218ea..932e6890 100644 --- a/xdiag/algebra/apply.cpp +++ b/xdiag/algebra/apply.cpp @@ -141,6 +141,9 @@ void apply(OpSum const &ops, Spinhalf const &block_in, template void apply(OpSum const &, Spinhalf const &, arma::Mat const &, Spinhalf const &, arma::Mat &, double); +template void apply(OpSum const &, Spinhalf const &, + arma::Mat const &, Spinhalf const &, + arma::Mat &, double); template void apply(OpSum const &ops, tJ const &block_in, @@ -177,6 +180,9 @@ void apply(OpSum const &ops, tJ const &block_in, template void apply(OpSum const &, tJ const &, arma::Mat const &, tJ const &, arma::Mat &, double); +template void apply(OpSum const &, tJ const &, + arma::Mat const &, tJ const &, + arma::Mat &, double); template void apply(OpSum const &ops, Electron const &block_in, @@ -213,6 +219,9 @@ void apply(OpSum const &ops, Electron const &block_in, template void apply(OpSum const &, Electron const &, arma::Mat const &, Electron const &, arma::Mat &, double); +template void apply(OpSum const &, Electron const &, + arma::Mat const &, Electron const &, + arma::Mat &, double); #ifdef XDIAG_USE_MPI