From b87306d35499b79a971172ae6b4ac5fbb57d970b Mon Sep 17 00:00:00 2001 From: Glacialte Date: Thu, 11 Jan 2024 07:40:17 +0000 Subject: [PATCH] fix test_gate.cpp --- tests/gate/gate_test.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/gate/gate_test.cpp b/tests/gate/gate_test.cpp index 14f46e87..cf034441 100644 --- a/tests/gate/gate_test.cpp +++ b/tests/gate/gate_test.cpp @@ -121,11 +121,11 @@ void run_random_gate_apply_two_qubit(UINT n_qubits) { Random random; Eigen::VectorXcd test_state = Eigen::VectorXcd::Zero(dim); - QuantumGate* gate; std::function func_eig; for (int repeat = 0; repeat < 10; repeat++) { auto state = StateVector::Haar_random_state(n_qubits); for (int g = 0; g < 2; g++) { + QuantumGate* gate; auto state_cp = state.amplitudes(); for (int i = 0; i < dim; i++) { test_state[i] = state[i]; @@ -150,12 +150,13 @@ void run_random_gate_apply_two_qubit(UINT n_qubits) { for (int i = 0; i < dim; i++) { ASSERT_NEAR(std::abs((CComplex)state_cp[i] - test_state[i]), 0, eps); } + delete gate; } - delete gate; } func_eig = get_eigen_matrix_full_qubit_SWAP; for (int repeat = 0; repeat < 10; repeat++) { + QuantumGate* gate; auto state = StateVector::Haar_random_state(n_qubits); auto state_cp = state.amplitudes(); for (int i = 0; i < dim; i++) { @@ -175,27 +176,28 @@ void run_random_gate_apply_two_qubit(UINT n_qubits) { for (int i = 0; i < dim; i++) { ASSERT_NEAR(std::abs((CComplex)state_cp[i] - test_state[i]), 0, eps); } + delete gate; } - delete gate; } void run_random_gate_apply_fused(UINT n_qubits, UINT target0, UINT target1, UINT block_size) { const UINT dim = 1ULL << n_qubits; StateVector state_ref = StateVector::Haar_random_state(n_qubits); StateVector state = state_ref; - QuantumGate* swap_gate; // update "state_ref" using SWAP gate for (UINT i = 0; i < block_size; i++) { + QuantumGate* swap_gate; swap_gate = new SWAP(target0 + i, target1 + i); swap_gate->update_quantum_state(state_ref); delete swap_gate; } auto state_ref_cp = state_ref.amplitudes(); - swap_gate = new FusedSWAP(target0, target1, block_size); - swap_gate->update_quantum_state(state); - delete swap_gate; + QuantumGate* fused_swap_gate; + fused_swap_gate = new FusedSWAP(target0, target1, block_size); + fused_swap_gate->update_quantum_state(state); + delete fused_swap_gate; auto state_cp = state.amplitudes(); for (UINT i = 0; i < dim; i++) {