diff --git a/libs/solvers/lib/operators/operator_pools/uccsd_operator_pool.cpp b/libs/solvers/lib/operators/operator_pools/uccsd_operator_pool.cpp index 99ed06cf..22ddd476 100644 --- a/libs/solvers/lib/operators/operator_pools/uccsd_operator_pool.cpp +++ b/libs/solvers/lib/operators/operator_pools/uccsd_operator_pool.cpp @@ -39,8 +39,10 @@ uccsd::generate(const heterogeneous_map &config) const { for (std::size_t i = p + 1; i < q; i++) o *= cudaq::spin::z(i); - cudaq::spin_op t = cudaq::spin::y(p) * o * cudaq::spin::x(q) - cudaq::spin::x(p) * o * cudaq::spin::y(q); - ops.emplace_back(cudaq::spin::y(p) * o * cudaq::spin::x(q) - cudaq::spin::x(p) * o * cudaq::spin::y(q)); + cudaq::spin_op t = cudaq::spin::y(p) * o * cudaq::spin::x(q) - + cudaq::spin::x(p) * o * cudaq::spin::y(q); + ops.emplace_back(cudaq::spin::y(p) * o * cudaq::spin::x(q) - + cudaq::spin::x(p) * o * cudaq::spin::y(q)); }; auto addDoublesExcitation = [numQubits](std::vector &ops, @@ -78,31 +80,24 @@ uccsd::generate(const heterogeneous_map &config) const { for (std::size_t i = a_virt + 1; i < b_virt; i++) parity_b *= cudaq::spin::z(i); - - auto op_term_temp = cudaq::spin::x(i_occ) * parity_a * cudaq::spin::x(j_occ) * - cudaq::spin::x(a_virt) * parity_b * - cudaq::spin::y(b_virt); + + auto op_term_temp = cudaq::spin::x(i_occ) * parity_a * + cudaq::spin::x(j_occ) * cudaq::spin::x(a_virt) * + parity_b * cudaq::spin::y(b_virt); op_term_temp += cudaq::spin::x(i_occ) * parity_a * cudaq::spin::x(j_occ) * - cudaq::spin::y(a_virt) * parity_b * - cudaq::spin::x(b_virt); + cudaq::spin::y(a_virt) * parity_b * cudaq::spin::x(b_virt); op_term_temp += cudaq::spin::x(i_occ) * parity_a * cudaq::spin::y(j_occ) * - cudaq::spin::y(a_virt) * parity_b * - cudaq::spin::y(b_virt); + cudaq::spin::y(a_virt) * parity_b * cudaq::spin::y(b_virt); op_term_temp += cudaq::spin::y(i_occ) * parity_a * cudaq::spin::x(j_occ) * - cudaq::spin::y(a_virt) * parity_b * - cudaq::spin::y(b_virt); + cudaq::spin::y(a_virt) * parity_b * cudaq::spin::y(b_virt); op_term_temp -= cudaq::spin::x(i_occ) * parity_a * cudaq::spin::y(j_occ) * - cudaq::spin::x(a_virt) * parity_b * - cudaq::spin::x(b_virt); + cudaq::spin::x(a_virt) * parity_b * cudaq::spin::x(b_virt); op_term_temp -= cudaq::spin::y(i_occ) * parity_a * cudaq::spin::x(j_occ) * - cudaq::spin::x(a_virt) * parity_b * - cudaq::spin::x(b_virt); + cudaq::spin::x(a_virt) * parity_b * cudaq::spin::x(b_virt); op_term_temp -= cudaq::spin::y(i_occ) * parity_a * cudaq::spin::y(j_occ) * - cudaq::spin::x(a_virt) * parity_b * - cudaq::spin::y(b_virt); + cudaq::spin::x(a_virt) * parity_b * cudaq::spin::y(b_virt); op_term_temp -= cudaq::spin::y(i_occ) * parity_a * cudaq::spin::y(j_occ) * - cudaq::spin::y(a_virt) * parity_b * - cudaq::spin::x(b_virt); + cudaq::spin::y(a_virt) * parity_b * cudaq::spin::x(b_virt); ops.emplace_back(op_term_temp); }; diff --git a/libs/solvers/unittests/test_operator_pools.cpp b/libs/solvers/unittests/test_operator_pools.cpp index 4ffce39c..008156ef 100644 --- a/libs/solvers/unittests/test_operator_pools.cpp +++ b/libs/solvers/unittests/test_operator_pools.cpp @@ -19,7 +19,7 @@ TEST(UCCSDTest, GenerateWithDefaultConfig) { auto operators = pool->generate(config); ASSERT_FALSE(operators.empty()); - EXPECT_EQ(operators.size(), 2 + 1); + EXPECT_EQ(operators.size(), 2 + 1); for (const auto &op : operators) { EXPECT_EQ(op.num_qubits(), 4); @@ -51,16 +51,15 @@ TEST(UCCSDTest, GenerateWithCustomCoefficients) { std::vector> temp_coeffs; for (size_t i = 0; i < operators.size(); ++i) { EXPECT_EQ(operators[i].num_qubits(), 4); - + operators[i].for_each_term([&](const auto &term) { - temp_coeffs.push_back(term.get_coefficient()); - }); + temp_coeffs.push_back(term.get_coefficient()); + }); } - + for (size_t j = 0; j < temp_coeffs.size(); ++j) EXPECT_DOUBLE_EQ(1.0, std::abs(temp_coeffs[j].real())); - //EXPECT_DOUBLE_EQ(1.0, operators[i].get_coefficient().real()); - + // EXPECT_DOUBLE_EQ(1.0, operators[i].get_coefficient().real()); } TEST(UCCSDTest, GenerateWithOddElectrons) { @@ -116,21 +115,21 @@ TEST(UccsdOperatorPoolTest, GeneratesCorrectOperators) { } // Assert - std::vector expected_terms = {"XZYI", "YZXI", "IXZY", "IYZX", - "YYYX", "YXXX", "XXYX","YYXY", - "XYYY", "XXXY","YXYY", "XYXX"}; + std::vector expected_terms = {"XZYI", "YZXI", "IXZY", "IYZX", + "YYYX", "YXXX", "XXYX", "YYXY", + "XYYY", "XXXY", "YXYY", "XYXX"}; - std::vector expected_operators = {"XZYIYZXI","IXZYIYZX", "XXXYXXYXXYXXXYYYYXXXYXYYYYXYYYYX"}; + std::vector expected_operators = { + "XZYIYZXI", "IXZYIYZX", "XXXYXXYXXYXXXYYYYXXXYXYYYYXYYYYX"}; ASSERT_EQ(terms_strings.size(), expected_terms.size()) << "Number of generated operators does not match expected count"; for (size_t i = 0; i < expected_terms.size(); ++i) { - EXPECT_EQ(terms_strings[i], expected_terms[i]) - << "Mismatch at index " << i; + EXPECT_EQ(terms_strings[i], expected_terms[i]) << "Mismatch at index " << i; } - for(size_t i = 0; i < expected_operators.size(); ++i) { + for (size_t i = 0; i < expected_operators.size(); ++i) { EXPECT_EQ(operator_strings[i], expected_operators[i]) << "Mismatch operators at index " << i; }