aboutsummaryrefslogtreecommitdiff
path: root/include/core/noise.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/core/noise.h')
-rw-r--r--include/core/noise.h39
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);