From 8b324f2f4676e1848a85f5d953deeac707d12eac Mon Sep 17 00:00:00 2001 From: Shi-Ning Sun Date: Mon, 12 Jun 2023 06:46:17 -0700 Subject: [PATCH] Fix default constructor of QubitRegister --- src/qureg_init.cpp | 7 ++++--- unit_test/include/one_qubit_register_test.hpp | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/qureg_init.cpp b/src/qureg_init.cpp index 574f54cc..4f8f8885 100644 --- a/src/qureg_init.cpp +++ b/src/qureg_init.cpp @@ -35,8 +35,9 @@ QubitRegister::QubitRegister() fusion = false; - Resize(1UL); - state_storage[0] = {1., 0.}; + Resize(2UL); + state[0] = {1., 0.}; + state[1] = {0., 0.}; if (nprocs > 1) { fprintf(stderr, @@ -57,7 +58,7 @@ void QubitRegister::Resize(std::size_t new_num_amplitudes) log2_nprocs = iqs::ilog2(nprocs); // FIXME GG: I believe this limits the use of "resize" to adding a single qubit - if(GlobalSize()) assert(GlobalSize() * 2UL == new_num_amplitudes); + // if(GlobalSize()) assert(GlobalSize() * 2UL == new_num_amplitudes); num_qubits = iqs::ilog2(new_num_amplitudes); local_size_ = UL(1L << UL(num_qubits - log2_nprocs)); diff --git a/unit_test/include/one_qubit_register_test.hpp b/unit_test/include/one_qubit_register_test.hpp index 9cce285e..5efa42d6 100644 --- a/unit_test/include/one_qubit_register_test.hpp +++ b/unit_test/include/one_qubit_register_test.hpp @@ -37,6 +37,20 @@ class OneQubitRegisterTest : public ::testing::Test ////////////////////////////////////////////////////////////////////////////// // Test macros: +TEST_F(OneQubitRegisterTest, InitializeWithDefault) +{ + ComplexDP amplitude; + + iqs::QubitRegister psi_0; + // |psi_0> = |0> + amplitude = psi_0.GetGlobalAmplitude(0); + ASSERT_DOUBLE_EQ(amplitude.real(), 1.); + ASSERT_DOUBLE_EQ(amplitude.imag(), 0.); + amplitude = psi_0.GetGlobalAmplitude(1); + ASSERT_DOUBLE_EQ(amplitude.real(), 0.); + ASSERT_DOUBLE_EQ(amplitude.imag(), 0.); +} + TEST_F(OneQubitRegisterTest, InitializeInComputationalBasis) { ComplexDP amplitude;