diff options
| author | hachem <im@hachem.wtf> | 2026-09-18 12:25:32 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-18 12:25:32 +0200 |
| commit | 17598056a69a14e0390a07251d383f413ded9eea (patch) | |
| tree | 79cf23ea99072f065407da3e0b92ee03f8972695 /tester/noise.c | |
| parent | ee14ad272e68d9363202d7f668e0b20302827209 (diff) | |
feat: add matrix, vector, and circuit display + fmt
Diffstat (limited to 'tester/noise.c')
| -rw-r--r-- | tester/noise.c | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/tester/noise.c b/tester/noise.c index df791ae..184537c 100644 --- a/tester/noise.c +++ b/tester/noise.c @@ -4,46 +4,46 @@ void run_noise_tests(void) { - psi_test_section("Noise channels"); + psi_test_section("Noise channels"); - struct PsiDensityMatrix pure = psi_new_density_matrix(1); - psi_test_check(psi_is_pure_density_matrix(pure, 1e-10), "fresh density matrix is pure"); - psi_test_check(fabs(psi_trace_density_matrix(pure).real - 1.0) < 1e-10, "trace = 1"); - psi_free_density_matrix(&pure); + struct PsiDensityMatrix pure = psi_new_density_matrix(1); + psi_test_check(psi_is_pure_density_matrix(pure, 1e-10), "fresh density matrix is pure"); + psi_test_check(fabs(psi_trace_density_matrix(pure).real - 1.0) < 1e-10, "trace = 1"); + psi_free_density_matrix(&pure); - struct PsiDensityMatrix bf = psi_new_density_matrix(1); - struct PsiNoiseChannel flip = psi_bit_flip_channel(0.25); - psi_apply_noise_channel(&bf, flip, 0); - double probs[2]; - psi_density_matrix_probabilities(bf, probs); - psi_test_check(fabs(probs[0] - 0.75) < 1e-10 && fabs(probs[1] - 0.25) < 1e-10, - "bit_flip(0.25) on |0>: p = [0.75, 0.25]"); - psi_test_check(fabs(psi_purity_density_matrix(bf) - 0.625) < 1e-10, - "bit_flip(0.25) purity = 0.625"); - psi_free_noise_channel(&flip); - psi_free_density_matrix(&bf); + struct PsiDensityMatrix bf = psi_new_density_matrix(1); + struct PsiNoiseChannel flip = psi_bit_flip_channel(0.25); + psi_apply_noise_channel(&bf, flip, 0); + double probs[2]; + psi_density_matrix_probabilities(bf, probs); + psi_test_check(fabs(probs[0] - 0.75) < 1e-10 && fabs(probs[1] - 0.25) < 1e-10, + "bit_flip(0.25) on |0>: p = [0.75, 0.25]"); + psi_test_check(fabs(psi_purity_density_matrix(bf) - 0.625) < 1e-10, + "bit_flip(0.25) purity = 0.625"); + psi_free_noise_channel(&flip); + psi_free_density_matrix(&bf); - struct PsiComplex one[2] = { psi_new_complex(0.0, 0.0), psi_new_complex(1.0, 0.0) }; - struct PsiDensityMatrix damp = psi_new_density_matrix_from_state(one, 2); - struct PsiNoiseChannel ad = psi_amplitude_damping_channel(1.0); - psi_apply_noise_channel(&damp, ad, 0); - double dprobs[2]; - psi_density_matrix_probabilities(damp, dprobs); - psi_test_check(fabs(dprobs[0] - 1.0) < 1e-10, "amplitude_damping(1.0) fully decays |1> -> |0>"); - psi_free_noise_channel(&ad); - psi_free_density_matrix(&damp); + struct PsiComplex one[2] = { psi_new_complex(0.0, 0.0), psi_new_complex(1.0, 0.0) }; + struct PsiDensityMatrix damp = psi_new_density_matrix_from_state(one, 2); + struct PsiNoiseChannel ad = psi_amplitude_damping_channel(1.0); + psi_apply_noise_channel(&damp, ad, 0); + double dprobs[2]; + psi_density_matrix_probabilities(damp, dprobs); + psi_test_check(fabs(dprobs[0] - 1.0) < 1e-10, "amplitude_damping(1.0) fully decays |1> -> |0>"); + psi_free_noise_channel(&ad); + psi_free_density_matrix(&damp); - struct PsiComplex zero[2] = { psi_new_complex(1.0, 0.0), psi_new_complex(0.0, 0.0) }; - struct PsiDensityMatrix fid = psi_new_density_matrix_from_state(zero, 2); - psi_test_check(fabs(psi_fidelity_density_matrix(fid, zero) - 1.0) < 1e-10, - "fidelity(|0><0|, |0>) = 1"); - psi_free_density_matrix(&fid); + struct PsiComplex zero[2] = { psi_new_complex(1.0, 0.0), psi_new_complex(0.0, 0.0) }; + struct PsiDensityMatrix fid = psi_new_density_matrix_from_state(zero, 2); + psi_test_check(fabs(psi_fidelity_density_matrix(fid, zero) - 1.0) < 1e-10, + "fidelity(|0><0|, |0>) = 1"); + psi_free_density_matrix(&fid); - struct PsiDensityMatrix depo = psi_new_density_matrix(1); - struct PsiNoiseChannel dc = psi_depolarising_channel(0.3); - psi_apply_noise_channel(&depo, dc, 0); - psi_test_check(fabs(psi_trace_density_matrix(depo).real - 1.0) < 1e-10, - "depolarising preserves trace"); - psi_free_noise_channel(&dc); - psi_free_density_matrix(&depo); + struct PsiDensityMatrix depo = psi_new_density_matrix(1); + struct PsiNoiseChannel dc = psi_depolarising_channel(0.3); + psi_apply_noise_channel(&depo, dc, 0); + psi_test_check(fabs(psi_trace_density_matrix(depo).real - 1.0) < 1e-10, + "depolarising preserves trace"); + psi_free_noise_channel(&dc); + psi_free_density_matrix(&depo); } |
