diff options
| author | hachem <im@hachem.wtf> | 2026-09-14 12:20:52 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-14 12:20:52 +0200 |
| commit | ee14ad272e68d9363202d7f668e0b20302827209 (patch) | |
| tree | 88dd1012ad7f9d6ac7abeb7562dac2194794b823 /include/core/noise.h | |
| parent | ae07aab1442a45bbddb79e066f15eaf252a4254a (diff) | |
feat: simd + testing + formatting
Diffstat (limited to 'include/core/noise.h')
| -rw-r--r-- | include/core/noise.h | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/include/core/noise.h b/include/core/noise.h index 6232d8e..320a4ab 100644 --- a/include/core/noise.h +++ b/include/core/noise.h @@ -9,22 +9,24 @@ struct PsiKrausOperator { struct PsiMatrix matrix; - const char *name; + const char* name; }; -struct PsiKrausOperator psi_new_kraus_operator(const char *name, struct PsiMatrix matrix); -void psi_free_kraus_operator(struct PsiKrausOperator *op); +struct PsiKrausOperator psi_new_kraus_operator(const char* name, struct PsiMatrix matrix); +void psi_free_kraus_operator(struct PsiKrausOperator* op); struct PsiNoiseChannel { - const char *name; - struct PsiKrausOperator *operators; + const char* name; + struct PsiKrausOperator* operators; size_t operator_count; size_t num_qubits; }; -struct PsiNoiseChannel psi_new_noise_channel(const char *name, const struct PsiKrausOperator *operators, size_t count, size_t num_qubits); -void psi_free_noise_channel(struct PsiNoiseChannel *channel); +struct PsiNoiseChannel psi_new_noise_channel(const char* name, + const struct PsiKrausOperator* operators, size_t count, + size_t num_qubits); +void psi_free_noise_channel(struct PsiNoiseChannel* channel); struct PsiNoiseChannel psi_depolarising_channel(double p); struct PsiNoiseChannel psi_amplitude_damping_channel(double gamma); @@ -36,22 +38,27 @@ struct PsiNoiseChannel psi_generalised_amplitude_damping_channel(double p, doubl struct PsiDensityMatrix { - struct PsiComplex *data; + struct PsiComplex* data; size_t dim; size_t num_qubits; }; struct PsiDensityMatrix psi_new_density_matrix(size_t num_qubits); -struct PsiDensityMatrix psi_new_density_matrix_from_state(const struct PsiComplex *state, size_t len); -void psi_free_density_matrix(struct PsiDensityMatrix *dm); +struct PsiDensityMatrix psi_new_density_matrix_from_state(const struct PsiComplex* state, + size_t len); +void psi_free_density_matrix(struct PsiDensityMatrix* dm); struct PsiComplex psi_get_density_matrix(struct PsiDensityMatrix dm, size_t row, size_t col); -void psi_set_density_matrix(struct PsiDensityMatrix *dm, size_t row, size_t col, struct PsiComplex value); +void psi_set_density_matrix(struct PsiDensityMatrix* dm, size_t row, size_t col, + struct PsiComplex value); struct PsiComplex psi_trace_density_matrix(struct PsiDensityMatrix dm); double psi_purity_density_matrix(struct PsiDensityMatrix dm); bool psi_is_pure_density_matrix(struct PsiDensityMatrix dm, double tolerance); -void psi_density_matrix_probabilities(struct PsiDensityMatrix dm, double *out); -void psi_apply_unitary_density_matrix(struct PsiDensityMatrix *dm, struct PsiMatrix gate, const size_t *targets, size_t target_count); -void psi_apply_noise_channel(struct PsiDensityMatrix *dm, struct PsiNoiseChannel channel, size_t target); -double psi_measure_probability_density_matrix(struct PsiDensityMatrix dm, size_t qubit, size_t outcome); -double psi_fidelity_density_matrix(struct PsiDensityMatrix dm, const struct PsiComplex *state); +void psi_density_matrix_probabilities(struct PsiDensityMatrix dm, double* out); +void psi_apply_unitary_density_matrix(struct PsiDensityMatrix* dm, struct PsiMatrix gate, + const size_t* targets, size_t target_count); +void psi_apply_noise_channel(struct PsiDensityMatrix* dm, struct PsiNoiseChannel channel, + size_t target); +double psi_measure_probability_density_matrix(struct PsiDensityMatrix dm, size_t qubit, + size_t outcome); +double psi_fidelity_density_matrix(struct PsiDensityMatrix dm, const struct PsiComplex* state); |
