numerics
Loading...
Searching...
No Matches
circuit.hpp File Reference

Fluent quantum circuit builder and statevector simulator. More...

#include "quantum/statevector.hpp"
#include <map>
#include <string>
#include <vector>

Go to the source code of this file.

Classes

struct  num::Result
 Measurement outcome from Circuit::run() More...
 
struct  num::GateView
 Compact gate description used by visualisation code. More...
 
class  num::Circuit
 Chainable quantum circuit builder. More...
 

Namespaces

namespace  num
 

Functions

Circuit num::bell_pair (int q0=0, int q1=1)
 Bell state |Phi+> = (|00> + |11>)/sqrt2 on qubits q0, q1.
 
Circuit num::ghz_state (int n_qubits)
 n-qubit GHZ state (|00...0> + |11...1>)/sqrt2
 
Circuit num::qft_circuit (int n_qubits)
 n-qubit Quantum Fourier Transform circuit Applied to |0...0> unless you prepend state-preparation gates.
 
void num::print_state (const quantum::Statevector &sv, int n_qubits, real threshold=1e-6)
 Pretty-print a statevector, hiding amplitudes below threshold.
 

Detailed Description

Fluent quantum circuit builder and statevector simulator.

Provides a chainable Circuit class that reads like a circuit diagram. Gates are recorded and replayed on a statevector on demand, so you can inspect intermediate states (step-through) or sample measurement outcomes.

Quick start

// Bell state
auto sv = Circuit(2).h(0).cx(0,1).statevector();
// Grover search (2 qubits, finds |11>)
auto result = Circuit(2)
.h(0).h(1)
.cz(0,1) // oracle
.h(0).h(1).x(0).x(1).cz(0,1).x(0).x(1).h(0).h(1) // diffusion
.run(4096);
result.print(); // |11>: 4096/4096
// QFT on 3 qubits
Circuit qft(3);
qft.x(0)
.h(2).cp(M_PI/2, 1,2).cp(M_PI/4, 0,2)
.h(1).cp(M_PI/2, 0,1)
.h(0).swap(0,2);
qft.print(); // ASCII diagram
Fluent quantum circuit builder and statevector simulator.
Chainable quantum circuit builder.
Definition circuit.hpp:78
Circuit & cx(int ctrl, int tgt)
CNOT.
Definition circuit.cpp:80
Circuit & h(int q)
Hadamard.
Definition circuit.cpp:52
quantum::Statevector statevector() const
Run full circuit -> statevector (no measurement collapse)
Definition circuit.cpp:155

Definition in file circuit.hpp.