From 8b324f2f4676e1848a85f5d953deeac707d12eac Mon Sep 17 00:00:00 2001
From: Shi-Ning Sun <snsunx@gmail.com>
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<Type>::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<Type>::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<ComplexDP> 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;