From 17598056a69a14e0390a07251d383f413ded9eea Mon Sep 17 00:00:00 2001 From: hachem Date: Fri, 18 Sep 2026 12:25:32 +0200 Subject: feat: add matrix, vector, and circuit display + fmt --- tester/clifford.c | 108 +++++++++++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) (limited to 'tester/clifford.c') 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); } -- cgit v1.3