diff options
Diffstat (limited to 'include/core/circuit.h')
| -rw-r--r-- | include/core/circuit.h | 91 |
1 files changed, 47 insertions, 44 deletions
diff --git a/include/core/circuit.h b/include/core/circuit.h index 7c0d371..ce36b1c 100644 --- a/include/core/circuit.h +++ b/include/core/circuit.h @@ -2,53 +2,54 @@ #include <stdbool.h> #include <stddef.h> +#include <stdio.h> #include "core/custom_gate.h" #include "maths/vector.h" enum PsiGateKind { - PSI_GATE_H, - PSI_GATE_X, - PSI_GATE_Y, - PSI_GATE_Z, - PSI_GATE_S, - PSI_GATE_T, - PSI_GATE_SDG, - PSI_GATE_TDG, - PSI_GATE_SX, - PSI_GATE_SXDG, - PSI_GATE_RX, - PSI_GATE_RY, - PSI_GATE_RZ, - PSI_GATE_P, - PSI_GATE_U1, - PSI_GATE_U2, - PSI_GATE_U3, - PSI_GATE_CNOT, - PSI_GATE_CZ, - PSI_GATE_SWAP, - PSI_GATE_CRX, - PSI_GATE_CRY, - PSI_GATE_CRZ, - PSI_GATE_CP, - PSI_GATE_CCNOT, - PSI_GATE_CSWAP, - PSI_GATE_MEASURE, - PSI_GATE_CUSTOM, + PSI_GATE_H, + PSI_GATE_X, + PSI_GATE_Y, + PSI_GATE_Z, + PSI_GATE_S, + PSI_GATE_T, + PSI_GATE_SDG, + PSI_GATE_TDG, + PSI_GATE_SX, + PSI_GATE_SXDG, + PSI_GATE_RX, + PSI_GATE_RY, + PSI_GATE_RZ, + PSI_GATE_P, + PSI_GATE_U1, + PSI_GATE_U2, + PSI_GATE_U3, + PSI_GATE_CNOT, + PSI_GATE_CZ, + PSI_GATE_SWAP, + PSI_GATE_CRX, + PSI_GATE_CRY, + PSI_GATE_CRZ, + PSI_GATE_CP, + PSI_GATE_CCNOT, + PSI_GATE_CSWAP, + PSI_GATE_MEASURE, + PSI_GATE_CUSTOM, }; struct PsiGateOp { - enum PsiGateKind kind; - size_t qubits[3]; - size_t qubit_count; - double params[3]; - size_t param_count; - size_t classical; - struct PsiCustomGate* custom; - size_t* custom_targets; - size_t custom_target_count; + enum PsiGateKind kind; + size_t qubits[3]; + size_t qubit_count; + double params[3]; + size_t param_count; + size_t classical; + struct PsiCustomGate* custom; + size_t* custom_targets; + size_t custom_target_count; }; const char* psi_gate_op_name(struct PsiGateOp op); @@ -60,13 +61,13 @@ bool psi_gate_op_is_non_clifford(struct PsiGateOp op); struct PsiQuantumCircuit { - size_t num_qubits; - size_t num_classical; - struct PsiGateOp* operations; - size_t operation_count; - size_t operation_capacity; - struct PsiVector computed_state; - bool is_computed; + size_t num_qubits; + size_t num_classical; + struct PsiGateOp* operations; + size_t operation_count; + size_t operation_capacity; + struct PsiVector computed_state; + bool is_computed; }; struct PsiQuantumCircuit psi_new_quantum_circuit(size_t num_qubits); @@ -111,3 +112,5 @@ void psi_measure_all(struct PsiQuantumCircuit* c); void psi_apply_custom(struct PsiQuantumCircuit* c, struct PsiCustomGate gate, const size_t* targets, size_t count); + +void psi_print_circuit(const struct PsiQuantumCircuit* circuit, FILE* out); |
