aboutsummaryrefslogtreecommitdiff
path: root/tester/clifford.c
diff options
context:
space:
mode:
Diffstat (limited to 'tester/clifford.c')
-rw-r--r--tester/clifford.c108
1 files changed, 54 insertions, 54 deletions
diff --git a/tester/clifford.c b/tester/clifford.c
index 3be9234..4bed17e 100644
--- a/tester/clifford.c
+++ b/tester/clifford.c
@@ -4,72 +4,72 @@ static const double R2 = 0.7071067811865476;
static void build_bell(struct PsiQuantumCircuit* c)
{
- psi_apply_h(c, 0);
- psi_apply_cnot(c, 0, 1);
+ psi_apply_h(c, 0);
+ psi_apply_cnot(c, 0, 1);
}
static void build_ghz(struct PsiQuantumCircuit* c)
{
- psi_apply_h(c, 0);
- psi_apply_cnot(c, 0, 1);
- psi_apply_cnot(c, 0, 2);
+ psi_apply_h(c, 0);
+ psi_apply_cnot(c, 0, 1);
+ psi_apply_cnot(c, 0, 2);
}
void run_clifford_tests(void)
{
- psi_test_section("Clifford gates");
+ psi_test_section("Clifford gates");
- struct PsiQuantumCircuit x = psi_new_quantum_circuit(1);
- psi_apply_x(&x, 0);
- struct PsiComplex x_exp[] = { psi_new_complex(0.0, 0.0), psi_new_complex(1.0, 0.0) };
- psi_check_circuit("X|0> = |1>", &x, x_exp, 2);
- psi_free_quantum_circuit(&x);
+ struct PsiQuantumCircuit x = psi_new_quantum_circuit(1);
+ psi_apply_x(&x, 0);
+ struct PsiComplex x_exp[] = { psi_new_complex(0.0, 0.0), psi_new_complex(1.0, 0.0) };
+ psi_check_circuit("X|0> = |1>", &x, x_exp, 2);
+ psi_free_quantum_circuit(&x);
- struct PsiQuantumCircuit bell = psi_new_quantum_circuit(2);
- build_bell(&bell);
- struct PsiComplex bell_exp[] = {
- psi_new_complex(R2, 0.0),
- psi_new_complex(0.0, 0.0),
- psi_new_complex(0.0, 0.0),
- psi_new_complex(R2, 0.0),
- };
- psi_check_circuit("Bell = (|00>+|11>)/sqrt2", &bell, bell_exp, 4);
- psi_free_quantum_circuit(&bell);
+ struct PsiQuantumCircuit bell = psi_new_quantum_circuit(2);
+ build_bell(&bell);
+ struct PsiComplex bell_exp[] = {
+ psi_new_complex(R2, 0.0),
+ psi_new_complex(0.0, 0.0),
+ psi_new_complex(0.0, 0.0),
+ psi_new_complex(R2, 0.0),
+ };
+ psi_check_circuit("Bell = (|00>+|11>)/sqrt2", &bell, bell_exp, 4);
+ psi_free_quantum_circuit(&bell);
- struct PsiQuantumCircuit ghz = psi_new_quantum_circuit(3);
- build_ghz(&ghz);
- struct PsiComplex ghz_exp[] = {
- psi_new_complex(R2, 0.0), psi_new_complex(0.0, 0.0), psi_new_complex(0.0, 0.0),
- psi_new_complex(0.0, 0.0), psi_new_complex(0.0, 0.0), psi_new_complex(0.0, 0.0),
- psi_new_complex(0.0, 0.0), psi_new_complex(R2, 0.0),
- };
- psi_check_circuit("GHZ = (|000>+|111>)/sqrt2", &ghz, ghz_exp, 8);
- psi_free_quantum_circuit(&ghz);
+ struct PsiQuantumCircuit ghz = psi_new_quantum_circuit(3);
+ build_ghz(&ghz);
+ struct PsiComplex ghz_exp[] = {
+ psi_new_complex(R2, 0.0), psi_new_complex(0.0, 0.0), psi_new_complex(0.0, 0.0),
+ psi_new_complex(0.0, 0.0), psi_new_complex(0.0, 0.0), psi_new_complex(0.0, 0.0),
+ psi_new_complex(0.0, 0.0), psi_new_complex(R2, 0.0),
+ };
+ psi_check_circuit("GHZ = (|000>+|111>)/sqrt2", &ghz, ghz_exp, 8);
+ psi_free_quantum_circuit(&ghz);
- struct PsiQuantumCircuit swap = psi_new_quantum_circuit(2);
- psi_apply_x(&swap, 0);
- psi_apply_cnot(&swap, 0, 1);
- psi_apply_cnot(&swap, 1, 0);
- psi_apply_cnot(&swap, 0, 1);
- struct PsiComplex swap_exp[] = {
- psi_new_complex(0.0, 0.0),
- psi_new_complex(1.0, 0.0),
- psi_new_complex(0.0, 0.0),
- psi_new_complex(0.0, 0.0),
- };
- psi_check_circuit("SWAP via 3 CNOTs: |10> -> |01>", &swap, swap_exp, 4);
- psi_free_quantum_circuit(&swap);
+ struct PsiQuantumCircuit swap = psi_new_quantum_circuit(2);
+ psi_apply_x(&swap, 0);
+ psi_apply_cnot(&swap, 0, 1);
+ psi_apply_cnot(&swap, 1, 0);
+ psi_apply_cnot(&swap, 0, 1);
+ struct PsiComplex swap_exp[] = {
+ psi_new_complex(0.0, 0.0),
+ psi_new_complex(1.0, 0.0),
+ psi_new_complex(0.0, 0.0),
+ psi_new_complex(0.0, 0.0),
+ };
+ psi_check_circuit("SWAP via 3 CNOTs: |10> -> |01>", &swap, swap_exp, 4);
+ psi_free_quantum_circuit(&swap);
- struct PsiQuantumCircuit toffoli = psi_new_quantum_circuit(3);
- psi_apply_x(&toffoli, 0);
- psi_apply_x(&toffoli, 1);
- psi_apply_ccnot(&toffoli, 0, 1, 2);
- struct PsiComplex toffoli_exp[8];
- for (size_t i = 0; i < 8; i++)
- toffoli_exp[i] = psi_new_complex(0.0, 0.0);
- toffoli_exp[7] = psi_new_complex(1.0, 0.0);
- psi_check_circuit("Toffoli: |110> -> |111>", &toffoli, toffoli_exp, 8);
- psi_free_quantum_circuit(&toffoli);
+ struct PsiQuantumCircuit toffoli = psi_new_quantum_circuit(3);
+ psi_apply_x(&toffoli, 0);
+ psi_apply_x(&toffoli, 1);
+ psi_apply_ccnot(&toffoli, 0, 1, 2);
+ struct PsiComplex toffoli_exp[8];
+ for (size_t i = 0; i < 8; i++)
+ toffoli_exp[i] = psi_new_complex(0.0, 0.0);
+ toffoli_exp[7] = psi_new_complex(1.0, 0.0);
+ psi_check_circuit("Toffoli: |110> -> |111>", &toffoli, toffoli_exp, 8);
+ psi_free_quantum_circuit(&toffoli);
- psi_check_runtimes_agree("Runtimes agree on GHZ", 3, build_ghz);
+ psi_check_runtimes_agree("Runtimes agree on GHZ", 3, build_ghz);
}