diff options
Diffstat (limited to 'tester')
| -rw-r--r-- | tester/main.c | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/tester/main.c b/tester/main.c index 13c9257..194fc77 100644 --- a/tester/main.c +++ b/tester/main.c @@ -1,12 +1,5 @@ #include <stdio.h> -#include "core/classical_components.h" -#include "core/custom_gate.h" -#include "core/gates.h" -#include "core/quantum_components.h" -#include "maths/complex.h" -#include "maths/matrix.h" -#include "maths/vector.h" #include "psi.h" int main(void) @@ -128,5 +121,31 @@ int main(void) psi_free_classical_register(&creg); - return 0; + struct PsiQuantumCircuit circuit = psi_new_quantum_circuit(3); + psi_apply_h(&circuit, 0); + psi_apply_cnot(&circuit, 0, 1); + psi_apply_rx(&circuit, 2, 1.5707963267948966); + psi_apply_ccnot(&circuit, 0, 1, 2); + + struct PsiCompositeGateOp cops[] = { { PSI_OP_X, { 0 }, 1 } }; + struct PsiCustomGate xg = psi_new_custom_gate_from_composite("MYX", 1, cops, 1); + size_t ct[] = { 2 }; + psi_apply_custom(&circuit, xg, ct, 1); + + psi_measure_all(&circuit); + + printf("circuit = %zu qubits, %zu classical, %zu ops\n", + circuit.num_qubits, circuit.num_classical, circuit.operation_count); + for (size_t i = 0; i < circuit.operation_count; i++) + { + size_t tc; + const size_t *targets = psi_gate_op_quantum_targets(&circuit.operations[i], &tc); + printf(" %zu: %s on", i, psi_gate_op_name(circuit.operations[i])); + for (size_t j = 0; j < tc; j++) + printf(" q%zu", targets[j]); + printf("\n"); + } + + psi_free_quantum_circuit(&circuit); } + |
