Qx.Draw.SVG.Circuit (Qx - Quantum Computing Simulator v0.5.0)

View Source

SVG rendering of quantum circuit diagrams.

This module provides sophisticated SVG-based circuit visualization with:

  • Publication-quality IEEE-style gate notation
  • Support for all common quantum gates
  • Automatic gate layout with collision avoidance
  • Multi-qubit gates (CNOT, CZ, Toffoli)
  • Measurement operations with classical bit connections
  • Conditional gates (classical feedback)
  • Parametric gates with π-notation
  • Barrier markers for circuit organization

Circuit Diagram Features

  • Single-qubit gates: H, X, Y, Z, S, T, RX, RY, RZ, Phase
  • Multi-qubit gates: CNOT (CX), Controlled-Z (CZ), Toffoli (CCX)
  • Measurements: With visual connection to classical registers
  • Conditionals: Gates controlled by classical bit values
  • Barriers: Visual separators for circuit sections

Internal Module

This module is part of the Qx.Draw refactoring and should be accessed through the public Qx.Draw API rather than directly.

Summary

Functions

Renders a quantum circuit as an SVG diagram.

Functions

render(circuit, title \\ nil)

Renders a quantum circuit as an SVG diagram.

Parameters

  • circuit - Qx.QuantumCircuit struct to visualize
  • title - Optional circuit title (default: nil)

Returns

SVG string representing the complete circuit diagram.

Validation

Raises ArgumentError if:

  • Circuit exceeds 20 qubits
  • Invalid gate types are present
  • Qubit or classical bit indices are out of range

Examples

circuit = Qx.QuantumCircuit.new(2, 2)
|> Qx.Operations.h(0)
|> Qx.Operations.cx(0, 1)

svg = Qx.Draw.SVG.Circuit.render(circuit, "Bell State")
File.write!("bell_circuit.svg", svg)