Qrack  9.13
General classical-emulating-quantum development framework
Classes | Namespaces | Typedefs | Functions
wasm_api.hpp File Reference
#include "common/pauli.hpp"
#include "common/qneuron_activation_function.hpp"
#include "common/qrack_types.hpp"
#include <set>
#include <string>
#include <vector>
Include dependency graph for wasm_api.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Qrack::QubitIndexState
 
struct  Qrack::QubitIntegerExpVar
 
struct  Qrack::QubitRealExpVar
 
struct  Qrack::QubitPauliBasis
 
struct  Qrack::QubitU3Basis
 
struct  Qrack::QubitMatrixBasis
 
struct  Qrack::QubitU3BasisEigenVal
 
struct  Qrack::QubitMatrixBasisEigenVal
 

Namespaces

 Qrack
 GLOSSARY: bitLenInt - "bit-length integer" - unsigned integer ID of qubit position in register bitCapInt - "bit-capacity integer" - unsigned integer single-permutation value of a qubit register (typically "big integer") real1 - "real number (1-dimensional)" - floating-point real-valued number complex - "complex number" - floating-point complex-valued number (with two real1 component dimensions) quid - "quantum (simulator) unique identifier" - unsigned integer that indexes and IDs running simulators, circuits, and neurons.
 

Typedefs

typedef uint64_t Qrack::quid
 

Functions

quid Qrack::init_count_type (bitLenInt q, bool tn, bool md, bool sd, bool sh, bool bdt, bool pg, bool nw, bool hy, bool oc, bool hp)
 Options for simulator type in initialization (any set of options theoretically functions together): tn - "Tensor network" layer - JIT local circuit simplification, light-cone optimization md - "Multi-device" (TURN OFF IN SERIAL BUILDS) - distribute Schmidt-decomposed or factorized subsytems to different OpenCL devices. More...
 
quid Qrack::init_count (bitLenInt q, bool dm)
 "Default optimal" (BQP-complete-targeted) simulator type initialization (with "direct memory" option) More...
 
quid Qrack::init ()
 "Quasi-default constructor" (for an empty simulator) More...
 
quid Qrack::init_clone (quid sid)
 "Clone" simulator (no-clone theorem does not apply to classical simulation) More...
 
quid Qrack::init_qbdd_count (bitLenInt q)
 "Default optimal" (BQP-complete-targeted) simulator type initialization (with "direct memory" option) More...
 
void Qrack::destroy (quid sid)
 "Destroy" or release simulator allocation More...
 
void Qrack::seed (quid sid, unsigned s)
 "Seed" random number generator (if pseudo-random Mersenne twister is in use) More...
 
void Qrack::set_concurrency (quid sid, unsigned p)
 Set CPU concurrency (if build isn't serial) More...
 
void Qrack::allocateQubit (quid sid, bitLenInt qid)
 Allocate new qubit with ID. More...
 
bool Qrack::release (quid sid, bitLenInt q)
 Release qubit ID. More...
 
bitLenInt Qrack::num_qubits (quid sid)
 Total count of qubits in simulator instance. More...
 
void Qrack::SetPermutation (quid sid, bitCapInt p)
 Set bit string permutation eigenstate of simulator instance. More...
 
void Qrack::qstabilizer_out_to_file (quid sid, std::string f)
 Output stabilizer simulation tableau to file (or raise exception for "get_error()" if incompatible simulator type) More...
 
void Qrack::qstabilizer_in_from_file (quid sid, std::string f)
 Initialize stabilizer simulation from a tableau file (or raise exception for "get_error()" if incompatible simulator type) More...
 
std::vector< real1 > Qrack::ProbAll (quid sid, std::vector< bitLenInt > q)
 Get the probabilities of all permutations of the requested subset of qubits. More...
 
real1_f Qrack::Prob (quid sid, bitLenInt q)
 Z-basis expectation value of qubit. More...
 
real1_f Qrack::ProbRdm (quid sid, bitLenInt q)
 "Reduced density matrix" Z-basis expectation value of qubit More...
 
real1_f Qrack::PermutationProb (quid sid, std::vector< QubitIndexState > q)
 Probability of specified (single) permutation of any arbitrary group of qubits. More...
 
real1_f Qrack::PermutationProbRdm (quid sid, std::vector< QubitIndexState > q, bool r)
 "Reduced density matrix" probability of specified (single) permutation of any arbitrary group of qubits More...
 
real1_f Qrack::PermutationExpectation (quid sid, std::vector< bitLenInt > q)
 Expectation value for bit-string integer equivalent of specified arbitrary group of qubits. More...
 
real1_f Qrack::PermutationExpectationRdm (quid sid, std::vector< bitLenInt > q, bool r)
 "Reduced density matrix" expectation value for bit-string integer equivalent of specified arbitrary group of qubits More...
 
real1_f Qrack::FactorizedExpectation (quid sid, std::vector< QubitIntegerExpVar > q)
 Expectation value for bit-string integer from group of qubits with per-qubit integer expectation value. More...
 
real1_f Qrack::FactorizedExpectationRdm (quid sid, std::vector< QubitIntegerExpVar > q, bool r)
 "Reduced density matrix" Expectation value for bit-string integer from group of qubits with per-qubit integer expectation value More...
 
real1_f Qrack::FactorizedExpectationFp (quid sid, std::vector< QubitRealExpVar > q)
 Expectation value for bit-string integer from group of qubits with per-qubit real1 expectation value. More...
 
real1_f Qrack::FactorizedExpectationFpRdm (quid sid, std::vector< QubitRealExpVar > q, bool r)
 "Reduced density matrix" Expectation value for bit-string integer from group of qubits with per-qubit real1 expectation value More...
 
real1_f Qrack::UnitaryExpectation (quid sid, std::vector< QubitU3Basis > q)
 Get the single-qubit (3-parameter) operator expectation value for the array of qubits and bases. More...
 
real1_f Qrack::MatrixExpectation (quid sid, std::vector< QubitMatrixBasis > q)
 Get the single-qubit (2x2) operator expectation value for the array of qubits and bases. More...
 
real1_f Qrack::UnitaryExpectationEigenVal (quid sid, std::vector< QubitU3BasisEigenVal > q)
 Get the single-qubit (3-parameter) operator expectation value for the array of qubits and bases. More...
 
real1_f Qrack::MatrixExpectationEigenVal (quid sid, std::vector< QubitMatrixBasisEigenVal > q)
 Get the single-qubit (2x2) operator expectation value for the array of qubits and bases. More...
 
real1_f Qrack::PauliExpectation (quid sid, std::vector< QubitPauliBasis > q)
 Pauli operator expectation value for the array of qubits and bases. More...
 
real1_f Qrack::Variance (quid sid, std::vector< bitLenInt > q)
 Variance for bit-string integer equivalent of specified arbitrary group of qubits. More...
 
real1_f Qrack::VarianceRdm (quid sid, std::vector< bitLenInt > q, bool r)
 "Reduced density matrix" variance for bit-string integer equivalent of specified arbitrary group of qubits More...
 
real1_f Qrack::FactorizedVariance (quid sid, std::vector< QubitIntegerExpVar > q)
 Variance for bit-string integer from group of qubits with per-qubit integer variance. More...
 
real1_f Qrack::FactorizedVarianceRdm (quid sid, std::vector< QubitIntegerExpVar > q, bool r)
 "Reduced density matrix" variance for bit-string integer from group of qubits with per-qubit integer variance More...
 
real1_f Qrack::FactorizedVarianceFp (quid sid, std::vector< QubitRealExpVar > q)
 Variance for bit-string integer from group of qubits with per-qubit real1 variance. More...
 
real1_f Qrack::FactorizedVarianceFpRdm (quid sid, std::vector< QubitRealExpVar > q, bool r)
 "Reduced density matrix" variance for bit-string integer from group of qubits with per-qubit real1 variance More...
 
real1_f Qrack::UnitaryVariance (quid sid, std::vector< QubitU3Basis > q)
 Get the single-qubit (3-parameter) operator variance for the array of qubits and bases. More...
 
real1_f Qrack::MatrixVariance (quid sid, std::vector< QubitMatrixBasis > q)
 Get the single-qubit (2x2) operator variance for the array of qubits and bases. More...
 
real1_f Qrack::UnitaryVarianceEigenVal (quid sid, std::vector< QubitU3BasisEigenVal > q)
 Get the single-qubit (3-parameter) operator variance for the array of qubits and bases. More...
 
real1_f Qrack::MatrixVarianceEigenVal (quid sid, std::vector< QubitMatrixBasisEigenVal > q)
 Get the single-qubit (2x2) operator variance for the array of qubits and bases. More...
 
real1_f Qrack::PauliVariance (quid sid, std::vector< QubitPauliBasis > q)
 Pauli operator variance for the array of qubits and bases. More...
 
size_t Qrack::random_choice (quid sid, std::vector< real1 > p)
 Select from a distribution of "p.size()" count of elements according to the discrete probabilities in "p.". More...
 
void Qrack::PhaseParity (quid sid, real1_f lambda, std::vector< bitLenInt > q)
 Applies e^(i*angle) phase factor to all combinations of bits with odd parity, based upon permutations of qubits. More...
 
void Qrack::PhaseRootN (quid sid, bitLenInt p, std::vector< bitLenInt > q)
 Applies a -2 * PI_R1 / (2^N) phase rotation to each qubit. More...
 
real1_f Qrack::JointEnsembleProbability (quid sid, std::vector< QubitPauliBasis > q)
 Overall probability of any odd permutation of the masked set of bits. More...
 
bool Qrack::M (quid sid, bitLenInt q)
 Measure single qubit (according to Born rules) and return the result. More...
 
bool Qrack::ForceM (quid sid, bitLenInt q, bool r)
 (PSEUDO-QUANTUM:) Force measurement result of single qubit (and return the result) More...
 
bool Qrack::Measure (quid sid, std::vector< QubitPauliBasis > q)
 Each in its specified Pauli basis, collapse an ensemble of qubits jointly via measurement. More...
 
bitCapInt Qrack::MAll (quid sid)
 Measure all qubits (according to Born rules) and return the result as a bit string (integer). More...
 
std::vector< long long unsigned int > Qrack::MeasureShots (quid sid, std::vector< bitLenInt > q, unsigned s)
 Repeat (Z-basis) measurement of a set of qubits for a count of "shots" (without collapsing the simulator) More...
 
void Qrack::ResetAll (quid sid)
 Set simulator to |0> permutation state. More...
 
void Qrack::X (quid sid, bitLenInt q)
 (External API) "X" Gate More...
 
void Qrack::Y (quid sid, bitLenInt q)
 (External API) "Y" Gate More...
 
void Qrack::Z (quid sid, bitLenInt q)
 (External API) "Z" Gate More...
 
void Qrack::H (quid sid, bitLenInt q)
 (External API) Walsh-Hadamard transform applied for simulator ID and qubit ID More...
 
void Qrack::S (quid sid, bitLenInt q)
 (External API) "S" Gate More...
 
void Qrack::SX (quid sid, bitLenInt q)
 (External API) Square root of X gate More...
 
void Qrack::SY (quid sid, bitLenInt q)
 (External API) Square root of Y gate More...
 
void Qrack::T (quid sid, bitLenInt q)
 (External API) "T" Gate More...
 
void Qrack::AdjS (quid sid, bitLenInt q)
 (External API) Inverse "S" Gate More...
 
void Qrack::AdjSX (quid sid, bitLenInt q)
 (External API) Inverse square root of X gate More...
 
void Qrack::AdjSY (quid sid, bitLenInt q)
 (External API) Inverse square root of Y gate More...
 
void Qrack::AdjT (quid sid, bitLenInt q)
 (External API) Inverse "T" Gate More...
 
void Qrack::U (quid sid, bitLenInt q, real1_f theta, real1_f phi, real1_f lambda)
 (External API) 3-parameter unitary gate More...
 
void Qrack::Mtrx (quid sid, std::vector< complex > m, bitLenInt q)
 (External API) 2x2 complex matrix unitary gate More...
 
void Qrack::MCX (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) Controlled "X" Gate More...
 
void Qrack::MCY (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) Controlled "Y" Gate More...
 
void Qrack::MCZ (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) Controlled "Z" Gate More...
 
void Qrack::MCH (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) Controlled "H" Gate More...
 
void Qrack::MCS (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) Controlled "S" Gate More...
 
void Qrack::MCT (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) Controlled "T" Gate More...
 
void Qrack::MCAdjS (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) Controlled Inverse "S" Gate More...
 
void Qrack::MCAdjT (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) Controlled Inverse "T" Gate More...
 
void Qrack::MCU (quid sid, std::vector< bitLenInt > c, bitLenInt q, real1_f theta, real1_f phi, real1_f lambda)
 (External API) Controlled 3-parameter unitary gate More...
 
void Qrack::MCMtrx (quid sid, std::vector< bitLenInt > c, std::vector< complex > m, bitLenInt q)
 (External API) Controlled 2x2 complex matrix unitary gate More...
 
void Qrack::MACX (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) "Anti-"Controlled "X" Gate More...
 
void Qrack::MACY (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) "Anti-"Controlled "Y" Gate More...
 
void Qrack::MACZ (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) "Anti-"Controlled "Z" Gate More...
 
void Qrack::MACH (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) "Anti-"Controlled "H" Gate More...
 
void Qrack::MACS (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) "Anti-"Controlled "S" Gate More...
 
void Qrack::MACT (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) "Anti-"Controlled "T" Gate More...
 
void Qrack::MACAdjS (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) "Anti-"Controlled Inverse "S" Gate More...
 
void Qrack::MACAdjT (quid sid, std::vector< bitLenInt > c, bitLenInt q)
 (External API) "Anti-"Controlled Inverse "T" Gate More...
 
void Qrack::MACU (quid sid, std::vector< bitLenInt > c, bitLenInt q, real1_f theta, real1_f phi, real1_f lambda)
 (External API) Controlled 3-parameter unitary gate More...
 
void Qrack::MACMtrx (quid sid, std::vector< bitLenInt > c, std::vector< complex > m, bitLenInt q)
 (External API) Controlled 2x2 complex matrix unitary gate More...
 
void Qrack::UCMtrx (quid sid, std::vector< bitLenInt > c, std::vector< complex > m, bitLenInt q, bitCapIntOcl p)
 Multi-controlled gate that activates only for the specified permutation of controls, "p". More...
 
void Qrack::Multiplex1Mtrx (quid sid, std::vector< bitLenInt > c, bitLenInt q, std::vector< complex > m)
 Multi-controlled, single-target multiplexer gate. More...
 
void Qrack::MX (quid sid, std::vector< bitLenInt > q)
 (External API) Multiple "X" Gate More...
 
void Qrack::MY (quid sid, std::vector< bitLenInt > q)
 (External API) Multiple "Y" Gate More...
 
void Qrack::MZ (quid sid, std::vector< bitLenInt > q)
 (External API) Multiple "Z" Gate More...
 
void Qrack::R (quid sid, real1_f phi, QubitPauliBasis q)
 (External API) Rotation around Pauli axes More...
 
void Qrack::MCR (quid sid, real1_f phi, std::vector< bitLenInt > c, QubitPauliBasis q)
 (External API) Controlled rotation around Pauli axes More...
 
void Qrack::Exp (quid sid, real1_f phi, std::vector< QubitPauliBasis > q)
 (External API) Exponentiation of Pauli operators More...
 
void Qrack::MCExp (quid sid, real1_f phi, std::vector< bitLenInt > cs, std::vector< QubitPauliBasis > q)
 (External API) Controlled exponentiation of Pauli operators More...
 
void Qrack::SWAP (quid sid, bitLenInt qi1, bitLenInt qi2)
 
void Qrack::ISWAP (quid sid, bitLenInt qi1, bitLenInt qi2)
 
void Qrack::AdjISWAP (quid sid, bitLenInt qi1, bitLenInt qi2)
 
void Qrack::FSim (quid sid, real1_f theta, real1_f phi, bitLenInt qi1, bitLenInt qi2)
 
void Qrack::CSWAP (quid sid, std::vector< bitLenInt > c, bitLenInt qi1, bitLenInt qi2)
 
void Qrack::ACSWAP (quid sid, std::vector< bitLenInt > c, bitLenInt qi1, bitLenInt qi2)
 
void Qrack::Compose (quid sid1, quid sid2, std::vector< bitLenInt > q)
 
quid Qrack::Decompose (quid sid, std::vector< bitLenInt > q)
 
void Qrack::Dispose (quid sid, std::vector< bitLenInt > q)
 
void Qrack::AND (quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
 
void Qrack::OR (quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
 
void Qrack::XOR (quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
 
void Qrack::NAND (quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
 
void Qrack::NOR (quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
 
void Qrack::XNOR (quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
 
void Qrack::CLAND (quid sid, bool ci, bitLenInt qi, bitLenInt qo)
 
void Qrack::CLOR (quid sid, bool ci, bitLenInt qi, bitLenInt qo)
 
void Qrack::CLXOR (quid sid, bool ci, bitLenInt qi, bitLenInt qo)
 
void Qrack::CLNAND (quid sid, bool ci, bitLenInt qi, bitLenInt qo)
 
void Qrack::CLNOR (quid sid, bool ci, bitLenInt qi, bitLenInt qo)
 
void Qrack::CLXNOR (quid sid, bool ci, bitLenInt qi, bitLenInt qo)
 
void Qrack::QFT (quid sid, std::vector< bitLenInt > q)
 Quantum Fourier Transform. More...
 
void Qrack::IQFT (quid sid, std::vector< bitLenInt > q)
 (Inverse) Quantum Fourier Transform More...
 
void Qrack::ADD (quid sid, bitCapInt a, std::vector< bitLenInt > q)
 
void Qrack::SUB (quid sid, bitCapInt a, std::vector< bitLenInt > q)
 
void Qrack::ADDS (quid sid, bitCapInt a, bitLenInt s, std::vector< bitLenInt > q)
 
void Qrack::SUBS (quid sid, bitCapInt a, bitLenInt s, std::vector< bitLenInt > q)
 
void Qrack::MCADD (quid sid, bitCapInt a, std::vector< bitLenInt > c, std::vector< bitLenInt > q)
 
void Qrack::MCSUB (quid sid, bitCapInt a, std::vector< bitLenInt > c, std::vector< bitLenInt > q)
 
void Qrack::MUL (quid sid, bitCapInt a, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
 
void Qrack::DIV (quid sid, bitCapInt a, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
 
void Qrack::MULN (quid sid, bitCapInt a, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
 
void Qrack::DIVN (quid sid, bitCapInt a, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
 
void Qrack::POWN (quid sid, bitCapInt a, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
 
void Qrack::MCMUL (quid sid, bitCapInt a, std::vector< bitLenInt > c, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
 
void Qrack::MCDIV (quid sid, bitCapInt a, std::vector< bitLenInt > c, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
 
void Qrack::MCMULN (quid sid, bitCapInt a, std::vector< bitLenInt > c, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
 
void Qrack::MCDIVN (quid sid, bitCapInt a, std::vector< bitLenInt > c, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
 
void Qrack::MCPOWN (quid sid, bitCapInt a, std::vector< bitLenInt > c, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
 
bool Qrack::TrySeparate1Qb (quid sid, bitLenInt qi1)
 Try to factorize a single-qubit subsystem out of "bulk" simulator state. More...
 
bool Qrack::TrySeparate2Qb (quid sid, bitLenInt qi1, bitLenInt qi2)
 Try to factorize a two-qubit subsystem out of "bulk" simulator state. More...
 
bool Qrack::TrySeparateTol (quid sid, std::vector< bitLenInt > q, real1_f tol)
 Try to factorize a qubit subsystem out of "bulk" simulator state. More...
 
void Qrack::Separate (quid sid, std::vector< bitLenInt > q)
 Force (inexact) factorization of qubit subsystem out of "bulk" simulator state. More...
 
double Qrack::GetUnitaryFidelity (quid sid)
 Report fidelity for "Schmidt decomposition rounding parameter" (SDRP) and "near-Clifford rounding". More...
 
void Qrack::ResetUnitaryFidelity (quid sid)
 Reset fidelity to 1 for "Schmidt decomposition rounding parameter" (SDRP) and "near-Clifford rounding". More...
 
void Qrack::SetSdrp (quid sid, double sdrp)
 Set "Schmidt decomposition rounding parameter" (SDRP) value (see https://arxiv.org/abs/2304.14969) More...
 
void Qrack::SetNcrp (quid sid, double sdrp)
 Set "Near-Clifford rounding parameter". More...
 
void Qrack::SetReactiveSeparate (quid sid, bool irs)
 Turn off/on "reactive separation" feature (for less/more aggressive automatic state factorization) More...
 
void Qrack::SetTInjection (quid sid, bool iti)
 Turn off/on "T-injection" feature (for "near-Clifford" simulation with RZ gates) More...
 
void Qrack::SetNoiseParameter (quid sid, double np)
 Set noise parameter (for QInterfaceNoisy) More...
 
void Qrack::Normalize (quid sid)
 Normalize the state (which should never be necessary unless Decompose() is "abused") More...
 
quid Qrack::init_qneuron (quid sid, std::vector< bitLenInt > c, bitLenInt q, QNeuronActivationFn f, real1_f a, real1_f tol)
 Initialize a "quantum neuron" that takes a list of qubit "controls" for input and acts on a single "target" output qubit. More...
 
quid Qrack::clone_qneuron (quid nid)
 "Clone" a quantum neuron (which is a classical state) More...
 
void Qrack::destroy_qneuron (quid nid)
 "Destroy" or release simulator allocation More...
 
void Qrack::set_qneuron_angles (quid nid, std::vector< real1 > angles)
 Set the (RY-rotation) angle parameters for each permutation of quantum neuron input qubits. More...
 
std::vector< real1 > Qrack::get_qneuron_angles (quid nid)
 Get the (RY-rotation) angle parameters for each permutation of quantum neuron input qubits. More...
 
void Qrack::set_qneuron_alpha (quid nid, real1_f alpha)
 Set the "leakage" parameter for "leaky" quantum neuron activation functions. More...
 
real1_f Qrack::get_qneuron_alpha (quid nid)
 Get the "leakage" parameter for "leaky" quantum neuron activation functions. More...
 
void Qrack::set_qneuron_activation_fn (quid nid, QNeuronActivationFn f)
 Set the activation function for a quantum neuron. More...
 
QNeuronActivationFn Qrack::get_qneuron_activation_fn (quid nid)
 Get the activation function for a quantum neuron. More...
 
real1_f Qrack::qneuron_predict (quid nid, bool e, bool r)
 Infer quantum neuron output from inputs (after training) More...
 
real1_f Qrack::qneuron_unpredict (quid nid, bool e)
 Perform the inverse of quantum neuron inference (for "uncomputation") More...
 
real1_f Qrack::qneuron_learn_cycle (quid nid, bool e)
 Train a quantum neuron for one epoch, and also uncompute the intermediate side-effects. More...
 
void Qrack::qneuron_learn (quid nid, real1_f eta, bool e, bool r)
 Train a quantum neuron for one epoh (without uncomputing any intermediate side-effects) More...
 
void Qrack::qneuron_learn_permutation (quid nid, real1_f eta, bool e, bool r)
 Train a quantum neuron for one epoch, assuming that the input state is a Z-basis eigenstate. More...
 
quid Qrack::init_qcircuit (bool collapse, bool clifford)
 
quid Qrack::init_qcircuit_clone (quid cid)
 
quid Qrack::qcircuit_inverse (quid cid)
 
quid Qrack::qcircuit_past_light_cone (quid cid, std::set< bitLenInt > q)
 
void Qrack::destroy_qcircuit (quid cid)
 
bitLenInt Qrack::get_qcircuit_qubit_count (quid cid)
 
void Qrack::qcircuit_swap (quid cid, bitLenInt q1, bitLenInt q2)
 
void Qrack::qcircuit_append_1qb (quid cid, std::vector< complex > m, bitLenInt q)
 
void Qrack::qcircuit_append_mc (quid cid, std::vector< complex > m, std::vector< bitLenInt > c, bitLenInt q, bitCapInt p)
 
void Qrack::qcircuit_run (quid cid, quid sid)
 
void Qrack::qcircuit_out_to_file (quid cid, std::string f)
 
void Qrack::qcircuit_in_from_file (quid cid, std::string f)
 
std::string Qrack::qcircuit_out_to_string (quid cid)