Skip to main content

Crate prism_q

Crate prism_q 

Source
Expand description

PRISM-Q: Performance Rust Interoperable Simulator for Quantum

A performance-first quantum circuit simulator with pluggable backends.

§Quick start

use prism_q::run_qasm;

let qasm = r#"
    OPENQASM 3.0;
    include "stdgates.inc";
    qubit[2] q;
    bit[2] c;
    h q[0];
    cx q[0], q[1];
"#;

let result = run_qasm(qasm, 42).expect("parse/sim failed");
let probs = result.probabilities.expect("no probabilities").to_vec();
// Bell state: ~50% |00>, ~50% |11>
assert!((probs[0] - 0.5).abs() < 1e-10);
assert!((probs[3] - 0.5).abs() < 1e-10);

§Input model

The primary entrypoint accepts OpenQASM 3.0 strings (&str). See circuit::openqasm for the supported subset.

§Backends

§Native QEC

Measurement-record QEC programs use QecProgram or parse_qec_program. run_qec_program executes supported Clifford QEC programs through packed compiled sampling with Pauli-noise annotations. run_qec_program_reference runs small correctness checks through the reference path.

Re-exports§

pub use backend::factored::FactoredBackend;
pub use backend::factored_stabilizer::FactoredStabilizerBackend;
pub use backend::mps::MpsBackend;
pub use backend::product::ProductStateBackend;
pub use backend::sparse::SparseBackend;
pub use backend::stabilizer::StabilizerBackend;
pub use backend::statevector::StatevectorBackend;
pub use backend::tensornetwork::TensorNetworkBackend;
pub use circuit::builder::CircuitBuilder;
pub use circuit::Circuit;
pub use circuit::ClassicalCondition;
pub use circuit::Instruction;
pub use circuit::SvgOptions;
pub use circuit::TextOptions;
pub use error::PrismError;
pub use error::Result;
pub use gates::BatchPhaseData;
pub use gates::Gate;
pub use gates::McuData;
pub use gates::Multi2qData;
pub use gates::MultiFusedData;
pub use qec::compile_qec_program_rows;
pub use qec::parse_qec_program;
pub use qec::run_qec_program;
pub use qec::run_qec_program_reference;
pub use qec::QecBasis;
pub use qec::QecCompiledRows;
pub use qec::QecMeasurementRow;
pub use qec::QecNoise;
pub use qec::QecOp;
pub use qec::QecOptions;
pub use qec::QecPauli;
pub use qec::QecProgram;
pub use qec::QecRecordRef;
pub use qec::QecSampleResult;
pub use sim::compiled::compile_detector_sampler;
pub use sim::compiled::compile_forward;
pub use sim::compiled::compile_measurements;
pub use sim::compiled::run_shots_compiled;
pub use sim::compiled::CompiledDetectorSampler;
pub use sim::compiled::CompiledSampler;
pub use sim::compiled::CorrelatorAccumulator;
pub use sim::compiled::DetectorSampleBatch;
pub use sim::compiled::HistogramAccumulator;
pub use sim::compiled::MarginalsAccumulator;
pub use sim::compiled::NullAccumulator;
pub use sim::compiled::PackedShots;
pub use sim::compiled::ParityStats;
pub use sim::compiled::PauliExpectationAccumulator;
pub use sim::compiled::ShotAccumulator;
pub use sim::compiled::ShotLayout;
pub use sim::homological::noisy_marginals_analytical;
pub use sim::homological::run_shots_homological;
pub use sim::homological::ErrorChainComplex;
pub use sim::homological::HomologicalSampler;
pub use sim::noise::compile_noisy;
pub use sim::noise::run_shots_noisy;
pub use sim::noise::NoiseChannel;
pub use sim::noise::NoiseEvent;
pub use sim::noise::NoiseModel;
pub use sim::noise::NoisyCompiledSampler;
pub use sim::noise::ReadoutError;
pub use sim::stabilizer_rank::run_stabilizer_rank;
pub use sim::stabilizer_rank::run_stabilizer_rank_approx;
pub use sim::stabilizer_rank::stabilizer_overlap_sq;
pub use sim::stabilizer_rank::StabRankResult;
pub use sim::unified_pauli::run_spd;
pub use sim::unified_pauli::run_spp;
pub use sim::unified_pauli::spd_to_probabilities;
pub use sim::unified_pauli::spp_to_probabilities;
pub use sim::unified_pauli::SpdResult;
pub use sim::unified_pauli::SppResult;
pub use sim::bitstring;
pub use sim::run;
pub use sim::run_counts;
pub use sim::run_marginals;
pub use sim::run_on;
pub use sim::run_qasm;
pub use sim::run_shots;
pub use sim::run_shots_with;
pub use sim::run_shots_with_noise;
pub use sim::run_with;
pub use sim::BackendKind;
pub use sim::FactoredBlock;
pub use sim::Probabilities;
pub use sim::ShotsResult;
pub use sim::SimulationResult;

Modules§

backend
Simulation backend trait and implementations.
circuit
Circuit intermediate representation.
circuits
Reusable benchmark and test circuit builders.
error
Error types for PRISM-Q.
gates
Gate definitions and matrix representations.
qec
Native measurement-record QEC program IR, parser, and runners.
sim
Simulation orchestration.