|
numerics
|
Chainable quantum circuit builder. More...
#include <circuit.hpp>
Public Member Functions | |
| Circuit (int n_qubits) | |
| Circuit & | h (int q) |
| Hadamard. | |
| Circuit & | x (int q) |
| Pauli-X (NOT) | |
| Circuit & | y (int q) |
| Pauli-Y. | |
| Circuit & | z (int q) |
| Pauli-Z. | |
| Circuit & | s (int q) |
| Phase S = sqrtZ. | |
| Circuit & | sdg (int q) |
| S† | |
| Circuit & | t (int q) |
| T = sqrtS. | |
| Circuit & | tdg (int q) |
| T† | |
| Circuit & | rx (real theta, int q) |
| R_x(theta) = e^{-ithetaX/2}. | |
| Circuit & | ry (real theta, int q) |
| R_y(theta) = e^{-ithetaY/2}. | |
| Circuit & | rz (real theta, int q) |
| R_z(theta) = e^{-ithetaZ/2}. | |
| Circuit & | p (real lambda, int q) |
| Phase P(lambda) | |
| Circuit & | u (real theta, real phi, real lambda, int q) |
| General SU(2) | |
| Circuit & | cx (int ctrl, int tgt) |
| CNOT. | |
| Circuit & | cy (int ctrl, int tgt) |
| Controlled-Y. | |
| Circuit & | cz (int ctrl, int tgt) |
| Controlled-Z. | |
| Circuit & | cp (real lambda, int ctrl, int tgt) |
| Controlled phase. | |
| Circuit & | swap (int q0, int q1) |
| SWAP. | |
| Circuit & | ccx (int c0, int c1, int tgt) |
| Toffoli (CCX) | |
| Circuit & | cswap (int ctrl, int q0, int q1) |
| Fredkin (CSWAP) | |
| Circuit & | gate (const quantum::Gate &G, int q, std::string label="U") |
| Circuit & | gate (const quantum::Gate2Q &G, int q0, int q1, std::string label="U2") |
| quantum::Statevector | statevector () const |
| Run full circuit -> statevector (no measurement collapse) | |
| quantum::Statevector | statevector_at (int n) const |
Apply first n gates only (0 = bare |0...0>). Useful for stepping through the circuit in a visualiser. | |
| Result | run (int shots=1024, unsigned seed=42) const |
Sample shots measurements from the ideal distribution. Uses pre-computed statevector probabilities – O(2^n + shots). | |
| std::string | diagram () const |
| ASCII wire diagram (Unicode box-drawing characters) | |
| void | print () const |
| Print diagram to stdout. | |
| int | n_qubits () const |
| int | n_gates () const |
| std::vector< GateView > | views () const |
| Gate descriptions with layout columns – for renderers. | |
Chainable quantum circuit builder.
Gates are stored in order and applied to a fresh zero-state statevector when execution is requested. The circuit itself is immutable between calls.
Definition at line 78 of file circuit.hpp.
|
explicit |
Definition at line 48 of file circuit.cpp.
Controlled phase.
Definition at line 89 of file circuit.cpp.
References num::ipow().
Referenced by num::qft_circuit().
CNOT.
Definition at line 80 of file circuit.cpp.
References num::ipow().
Referenced by num::bell_pair(), and num::ghz_state().
| std::string num::Circuit::diagram | ( | ) | const |
ASCII wire diagram (Unicode box-drawing characters)
Definition at line 266 of file circuit.cpp.
References num::ipow().
Referenced by print().
| Circuit & num::Circuit::gate | ( | const quantum::Gate & | G, |
| int | q, | ||
| std::string | label = "U" |
||
| ) |
Definition at line 108 of file circuit.cpp.
References num::ipow().
| Circuit & num::Circuit::gate | ( | const quantum::Gate2Q & | G, |
| int | q0, | ||
| int | q1, | ||
| std::string | label = "U2" |
||
| ) |
Definition at line 113 of file circuit.cpp.
References num::ipow().
Hadamard.
Definition at line 52 of file circuit.cpp.
Referenced by num::bell_pair(), num::ghz_state(), and num::qft_circuit().
|
inline |
Definition at line 140 of file circuit.hpp.
Referenced by main().
|
inline |
Definition at line 139 of file circuit.hpp.
Referenced by main().
| void num::Circuit::print | ( | ) | const |
Sample shots measurements from the ideal distribution. Uses pre-computed statevector probabilities – O(2^n + shots).
Definition at line 167 of file circuit.cpp.
References num::ipow(), num::quantum::probabilities(), statevector(), and num::Result::sv.
Phase S = sqrtZ.
Definition at line 56 of file circuit.cpp.
S†
Definition at line 57 of file circuit.cpp.
| quantum::Statevector num::Circuit::statevector | ( | ) | const |
Run full circuit -> statevector (no measurement collapse)
Definition at line 155 of file circuit.cpp.
References statevector_at().
Referenced by run().
| quantum::Statevector num::Circuit::statevector_at | ( | int | n | ) | const |
Apply first n gates only (0 = bare |0...0>). Useful for stepping through the circuit in a visualiser.
Definition at line 159 of file circuit.cpp.
References num::ipow(), and num::quantum::zero_state().
Referenced by main(), and statevector().
SWAP.
Definition at line 93 of file circuit.cpp.
References num::ipow().
Referenced by num::qft_circuit().
T = sqrtS.
Definition at line 58 of file circuit.cpp.
T†
Definition at line 59 of file circuit.cpp.
| std::vector< GateView > num::Circuit::views | ( | ) | const |
Gate descriptions with layout columns – for renderers.
Definition at line 217 of file circuit.cpp.
References num::GateView::col, num::ipow(), num::GateView::kind, num::GateView::label, num::GateView::q0, num::GateView::q1, and num::GateView::q2.
Referenced by main().
Pauli-X (NOT)
Definition at line 53 of file circuit.cpp.
Pauli-Y.
Definition at line 54 of file circuit.cpp.
Pauli-Z.
Definition at line 55 of file circuit.cpp.