Skip to main content

API Reference

circuit(config, callback)

Creates and returns a Circuit instance.

function circuit(config: CircuitConfig, callback: (q: Circuit) => void): Circuit
interface CircuitConfig {
qubits: number;
bits?: number; // default: 1, grows on demand
version?: string; // default: '3.0'
}

Circuit

Qubit Selection

MethodReturnsDescription
.bit(index)QBitProxySingle qubit by index
.bits(indices)QBitProxyMultiple qubits
.all()QBitProxyAll qubits in scope
.first()QBitProxyQubit at index 0
.last()QBitProxyQubit at highest index

Classical Bits

MethodReturnsDescription
.cbit(index?, reg?)CBitProxyClassical bit reference

Circuit Operations

MethodReturnsDescription
.barrier(indices?)CircuitBarrier across qubits (default: all)
.comment(text)CircuitEmit a QASM comment
.brk()CircuitEmit a blank line
.input(source, options?)CircuitInitialize qubit state
.loop(times, callback)CircuitRepeat callback N times
.mask(maskArray, fn)CircuitApply fn only to qubits where mask is 1
.compile(options?)stringEmit QASM string

Staircase Loops

MethodDescription
.growDown(step?, callback)Top-aligned, growing sub-circuits
.shrinkUp(step?, callback)Top-aligned, shrinking sub-circuits
.growUp(step?, callback)Bottom-aligned, growing sub-circuits
.shrinkDown(step?, callback)Bottom-aligned, shrinking sub-circuits

Sub-Circuit Context Properties

Available inside staircase loop callbacks on the q argument:

PropertyTypeDescription
q.iterationnumberAbsolute active qubit index for this iteration
q.offsetnumberQubit offset applied when merging to parent
q.parentSpannumberParent circuit qubit count
q.inverseSpannumber(1 + parentSpan) - currentSize

Extension

MethodDescription
.addFunction(name, fn)Register a custom chainable function
.fncProxy to call registered functions

Math Helpers

MemberDescription
Q.π.div(n)Symbolic π / n expression
Q.piSymbolic π AST node
Q.div(left, right)Symbolic division expression

QBitProxy

Single-Qubit Gates

h() · x() · y() · z() · s() · s_() · t() · t_() · id() · reset()

Rotation

u(params: (number | Expression)[])

Two-Qubit Gates

cx(target) · cy(target) · cz(target) · ch(target) · swap(target) · cp(target, theta) · cu1(target, theta)

Three-Qubit Gates

ccx(b, c) · toffoli(b, c)

Measurement

MethodDescription
.measure()Measure to same-index classical bit
.measureTo(index?, group?)Measure to specific classical bit
.measureX(...)Measure in X basis (H + measure)
.measureY(...)Measure in Y basis (S† + H + measure)
.measureZ(...)Measure in Z basis
.measureW(...)Measure in W basis (S + H + T + H + measure)
.measureV(...)Measure in V basis (S + H + T† + H + measure)

Utilities

MethodDescription
._if(cbit, callback?)Conditional gate execution
.repeat(times, op, ...params)Repeat a named gate N times
.barrier()Barrier on selected qubits
.comment(text)Emit comment (delegates to circuit)
.brk()Emit blank line (delegates to circuit)

pipeline(config, input?, output?, callback?)

Creates a Pipeline.

function pipeline(
config: CircuitConfig | Circuit,
input?: string | array | function | { source, endian? },
output?: function | { format?, postProcess? },
callback?: (q: Circuit) => void
): Pipeline

Pipeline

MethodDescription
.compile(options?)Emit QASM string
.run(simulator)Run with a quantum-circuit compatible simulator
.rawCircuitAccess the underlying Circuit

Standalone Exports

import { circuit, pipeline, pi, div, BENCH_SAMPLE } from '@quantum-js/dsl';
ExportTypeDescription
circuitfunctionCreate a circuit
pipelinefunctionCreate a pipeline
piAST.ExpressionSymbolic π
divfunctionSymbolic division
BENCH_SAMPLEstringDefault Bench IDE sample code