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/simd.c | 108 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) (limited to 'tester/simd.c') diff --git a/tester/simd.c b/tester/simd.c index bea2f06..cfc38e2 100644 --- a/tester/simd.c +++ b/tester/simd.c @@ -6,58 +6,58 @@ static const double R2 = 0.7071067811865476; void run_simd_tests(void) { - psi_test_section("SIMD single-qubit kernels"); - - printf(" detected: %s\n", psi_simd_name(psi_detect_simd())); - - struct PsiComplex h[2][2] = { - { psi_new_complex(R2, 0.0), psi_new_complex(R2, 0.0) }, - { psi_new_complex(R2, 0.0), psi_new_complex(-R2, 0.0) }, - }; - - struct PsiComplex two[4] = { - psi_new_complex(1.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_apply_single_qubit_gate_simd(two, h, 0, 2); - struct PsiComplex two_exp[] = { - psi_new_complex(R2, 0.0), - psi_new_complex(0.0, 0.0), - psi_new_complex(R2, 0.0), - psi_new_complex(0.0, 0.0), - }; - psi_test_check(psi_amps_match(two, two_exp, 4), "SIMD H on q0 of |00>"); - - struct PsiComplex three[8]; - for (size_t i = 0; i < 8; i++) - three[i] = psi_new_complex(0.0, 0.0); - three[0] = psi_new_complex(1.0, 0.0); - psi_apply_single_qubit_gate_simd(three, h, 0, 3); - struct PsiComplex three_exp[8]; - for (size_t i = 0; i < 8; i++) - three_exp[i] = psi_new_complex(0.0, 0.0); - three_exp[0] = psi_new_complex(R2, 0.0); - three_exp[4] = psi_new_complex(R2, 0.0); - psi_test_check(psi_amps_match(three, three_exp, 8), "SIMD H on q0 of |000> (chunked)"); - - struct PsiComplex x[2][2] = { - { psi_new_complex(0.0, 0.0), psi_new_complex(1.0, 0.0) }, - { psi_new_complex(1.0, 0.0), psi_new_complex(0.0, 0.0) }, - }; - struct PsiComplex flip[4] = { - psi_new_complex(1.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_apply_single_qubit_gate_simd(flip, x, 1, 2); - struct PsiComplex flip_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_test_check(psi_amps_match(flip, flip_exp, 4), "SIMD X on q1 of |00> = |01>"); + psi_test_section("SIMD single-qubit kernels"); + + printf(" detected: %s\n", psi_simd_name(psi_detect_simd())); + + struct PsiComplex h[2][2] = { + { psi_new_complex(R2, 0.0), psi_new_complex(R2, 0.0) }, + { psi_new_complex(R2, 0.0), psi_new_complex(-R2, 0.0) }, + }; + + struct PsiComplex two[4] = { + psi_new_complex(1.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_apply_single_qubit_gate_simd(two, h, 0, 2); + struct PsiComplex two_exp[] = { + psi_new_complex(R2, 0.0), + psi_new_complex(0.0, 0.0), + psi_new_complex(R2, 0.0), + psi_new_complex(0.0, 0.0), + }; + psi_test_check(psi_amps_match(two, two_exp, 4), "SIMD H on q0 of |00>"); + + struct PsiComplex three[8]; + for (size_t i = 0; i < 8; i++) + three[i] = psi_new_complex(0.0, 0.0); + three[0] = psi_new_complex(1.0, 0.0); + psi_apply_single_qubit_gate_simd(three, h, 0, 3); + struct PsiComplex three_exp[8]; + for (size_t i = 0; i < 8; i++) + three_exp[i] = psi_new_complex(0.0, 0.0); + three_exp[0] = psi_new_complex(R2, 0.0); + three_exp[4] = psi_new_complex(R2, 0.0); + psi_test_check(psi_amps_match(three, three_exp, 8), "SIMD H on q0 of |000> (chunked)"); + + struct PsiComplex x[2][2] = { + { psi_new_complex(0.0, 0.0), psi_new_complex(1.0, 0.0) }, + { psi_new_complex(1.0, 0.0), psi_new_complex(0.0, 0.0) }, + }; + struct PsiComplex flip[4] = { + psi_new_complex(1.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_apply_single_qubit_gate_simd(flip, x, 1, 2); + struct PsiComplex flip_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_test_check(psi_amps_match(flip, flip_exp, 4), "SIMD X on q1 of |00> = |01>"); } -- cgit v1.3