|
| QEngineOCL (bitLenInt qBitCount, bitCapInt initState, qrack_rand_gen_ptr rgp=nullptr, complex phaseFac=CMPLX_DEFAULT_ARG, bool doNorm=false, bool randomGlobalPhase=true, bool useHostMem=false, int devID=-1, bool useHardwareRNG=true, bool ignored=false, real1_f norm_thresh=REAL1_EPSILON, std::vector< int > ignored2={}, bitLenInt ignored4=0, real1_f ignored3=FP_NORM_EPSILON) |
| Initialize a Qrack::QEngineOCL object. More...
|
|
virtual | ~QEngineOCL () |
|
virtual void | FreeAll () |
|
virtual void | ZeroAmplitudes () |
| Set all amplitudes to 0, and optionally temporarily deallocate state vector RAM. More...
|
|
virtual void | FreeStateVec (complex *sv=NULL) |
|
virtual bool | IsZeroAmplitude () |
| Returns "true" only if amplitudes are all totally 0. More...
|
|
virtual void | CopyStateVec (QEnginePtr src) |
| Exactly copy the state vector of a different QEngine instance. More...
|
|
virtual real1_f | FirstNonzeroPhase () |
| Get phase of lowest permutation nonzero amplitude. More...
|
|
virtual void | GetAmplitudePage (complex *pagePtr, bitCapIntOcl offset, bitCapIntOcl length) |
| Copy a "page" of amplitudes from this QEngine's internal state, into pagePtr . More...
|
|
virtual void | SetAmplitudePage (const complex *pagePtr, bitCapIntOcl offset, bitCapIntOcl length) |
| Copy a "page" of amplitudes from pagePtr into this QEngine's internal state. More...
|
|
virtual void | SetAmplitudePage (QEnginePtr pageEnginePtr, bitCapIntOcl srcOffset, bitCapIntOcl dstOffset, bitCapIntOcl length) |
| Copy a "page" of amplitudes from another QEngine, pointed to by pageEnginePtr , into this QEngine's internal state. More...
|
|
virtual void | ShuffleBuffers (QEnginePtr engine) |
| Swap the high half of this engine with the low half of another. More...
|
|
virtual QEnginePtr | CloneEmpty () |
| Clone this QEngine's settings, with a zeroed state vector. More...
|
|
virtual void | QueueSetDoNormalize (bool doNorm) |
| Add an operation to the (OpenCL) queue, to set the value of doNormalize , which controls whether to automatically normalize the state. More...
|
|
virtual void | QueueSetRunningNorm (real1_f runningNrm) |
| Add an operation to the (OpenCL) queue, to set the value of runningNorm , which is the normalization constant for the next normalization operation. More...
|
|
virtual void | AddQueueItem (const QueueItem &item) |
|
virtual void | QueueCall (OCLAPI api_call, size_t workItemCount, size_t localGroupSize, std::vector< BufferPtr > args, size_t localBuffSize=0, size_t deallocSize=0) |
|
bitCapIntOcl | GetMaxSize () |
|
virtual void | SetPermutation (bitCapInt perm, complex phaseFac=CMPLX_DEFAULT_ARG) |
| Set to a specific permutation of all qubits. More...
|
|
virtual void | UniformlyControlledSingleBit (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubitIndex, const complex *mtrxs, const bitCapInt *mtrxSkipPowers, bitLenInt mtrxSkipLen, bitCapInt mtrxSkipValueMask) |
|
virtual void | UniformParityRZ (bitCapInt mask, real1_f angle) |
| If the target qubit set parity is odd, this applies a phase factor of \(e^{i angle}\). More...
|
|
virtual void | CUniformParityRZ (const bitLenInt *controls, bitLenInt controlLen, bitCapInt mask, real1_f angle) |
| If the controls are set and the target qubit set parity is odd, this applies a phase factor of \(e^{i angle}\). More...
|
|
virtual void | X (bitLenInt target) |
| NOT gate, which is also Pauli x matrix. More...
|
|
virtual void | Z (bitLenInt target) |
| Apply Pauli Z matrix to bit. More...
|
|
virtual void | Invert (complex topRight, complex bottomLeft, bitLenInt qubitIndex) |
| Apply a single bit transformation that reverses bit probability and might effect phase. More...
|
|
virtual void | Phase (complex topLeft, complex bottomRight, bitLenInt qubitIndex) |
| Apply a single bit transformation that only effects phase. More...
|
|
virtual void | XMask (bitCapInt mask) |
| Masked X gate. More...
|
|
virtual void | PhaseParity (real1_f radians, bitCapInt mask) |
| Parity phase gate. More...
|
|
virtual bitLenInt | Compose (QEngineOCLPtr toCopy) |
|
virtual bitLenInt | Compose (QInterfacePtr toCopy) |
| Combine another QInterface with this one, after the last bit index of this one. More...
|
|
virtual bitLenInt | Compose (QEngineOCLPtr toCopy, bitLenInt start) |
|
virtual bitLenInt | Compose (QInterfacePtr toCopy, bitLenInt start) |
|
virtual void | Decompose (bitLenInt start, QInterfacePtr dest) |
| Minimally decompose a set of contiguous bits from the separably composed unit, into "destination". More...
|
|
virtual void | Dispose (bitLenInt start, bitLenInt length) |
| Minimally decompose a set of contiguous bits from the separably composed unit, and discard the separable bits from index "start" for "length.". More...
|
|
virtual void | Dispose (bitLenInt start, bitLenInt length, bitCapInt disposedPerm) |
| Dispose a a contiguous set of qubits that are already in a permutation eigenstate. More...
|
|
virtual void | ROL (bitLenInt shift, bitLenInt start, bitLenInt length) |
| "Circular shift left" - shift bits left, and carry last bits. More...
|
|
virtual void | INC (bitCapInt toAdd, bitLenInt start, bitLenInt length) |
| Increment integer (without sign, with carry) More...
|
|
virtual void | CINC (bitCapInt toAdd, bitLenInt inOutStart, bitLenInt length, const bitLenInt *controls, bitLenInt controlLen) |
| Add integer (without sign, with controls) More...
|
|
virtual void | INCS (bitCapInt toAdd, bitLenInt start, bitLenInt length, bitLenInt carryIndex) |
| Increment integer (without sign, with carry) More...
|
|
virtual void | INCBCD (bitCapInt toAdd, bitLenInt start, bitLenInt length) |
| Increment integer (BCD) More...
|
|
virtual void | MUL (bitCapInt toMul, bitLenInt inOutStart, bitLenInt carryStart, bitLenInt length) |
| Multiply by integer. More...
|
|
virtual void | DIV (bitCapInt toDiv, bitLenInt inOutStart, bitLenInt carryStart, bitLenInt length) |
| Divide by integer. More...
|
|
virtual void | MULModNOut (bitCapInt toMul, bitCapInt modN, bitLenInt inStart, bitLenInt outStart, bitLenInt length) |
| Multiplication modulo N by integer, (out of place) More...
|
|
virtual void | IMULModNOut (bitCapInt toMul, bitCapInt modN, bitLenInt inStart, bitLenInt outStart, bitLenInt length) |
| Inverse of multiplication modulo N by integer, (out of place) More...
|
|
virtual void | POWModNOut (bitCapInt base, bitCapInt modN, bitLenInt inStart, bitLenInt outStart, bitLenInt length) |
| Raise a classical base to a quantum power, modulo N, (out of place) More...
|
|
virtual void | CMUL (bitCapInt toMul, bitLenInt inOutStart, bitLenInt carryStart, bitLenInt length, const bitLenInt *controls, bitLenInt controlLen) |
| Controlled multiplication by integer. More...
|
|
virtual void | CDIV (bitCapInt toDiv, bitLenInt inOutStart, bitLenInt carryStart, bitLenInt length, const bitLenInt *controls, bitLenInt controlLen) |
| Controlled division by integer. More...
|
|
virtual void | CMULModNOut (bitCapInt toMul, bitCapInt modN, bitLenInt inStart, bitLenInt outStart, bitLenInt length, const bitLenInt *controls, bitLenInt controlLen) |
| Controlled multiplication modulo N by integer, (out of place) More...
|
|
virtual void | CIMULModNOut (bitCapInt toMul, bitCapInt modN, bitLenInt inStart, bitLenInt outStart, bitLenInt length, const bitLenInt *controls, bitLenInt controlLen) |
| Inverse of controlled multiplication modulo N by integer, (out of place) More...
|
|
virtual void | CPOWModNOut (bitCapInt base, bitCapInt modN, bitLenInt inStart, bitLenInt outStart, bitLenInt length, const bitLenInt *controls, bitLenInt controlLen) |
| Controlled multiplication modulo N by integer, (out of place) More...
|
|
virtual void | FullAdd (bitLenInt inputBit1, bitLenInt inputBit2, bitLenInt carryInSumOut, bitLenInt carryOut) |
| Quantum analog of classical "Full Adder" gate. More...
|
|
virtual void | IFullAdd (bitLenInt inputBit1, bitLenInt inputBit2, bitLenInt carryInSumOut, bitLenInt carryOut) |
| Inverse of FullAdd. More...
|
|
virtual bitCapInt | IndexedLDA (bitLenInt indexStart, bitLenInt indexLength, bitLenInt valueStart, bitLenInt valueLength, const unsigned char *values, bool resetValue=true) |
| Set 8 bit register bits based on read from classical memory. More...
|
|
virtual bitCapInt | IndexedADC (bitLenInt indexStart, bitLenInt indexLength, bitLenInt valueStart, bitLenInt valueLength, bitLenInt carryIndex, const unsigned char *values) |
| Add based on an indexed load from classical memory. More...
|
|
virtual bitCapInt | IndexedSBC (bitLenInt indexStart, bitLenInt indexLength, bitLenInt valueStart, bitLenInt valueLength, bitLenInt carryIndex, const unsigned char *values) |
| Subtract based on an indexed load from classical memory. More...
|
|
virtual void | Hash (bitLenInt start, bitLenInt length, const unsigned char *values) |
| Set 8 bit register bits based on read from classical memory. More...
|
|
virtual void | CPhaseFlipIfLess (bitCapInt greaterPerm, bitLenInt start, bitLenInt length, bitLenInt flagIndex) |
| The 6502 uses its carry flag also as a greater-than/less-than flag, for the CMP operation. More...
|
|
virtual void | PhaseFlipIfLess (bitCapInt greaterPerm, bitLenInt start, bitLenInt length) |
| This is an expedient for an adaptive Grover's search for a function's global minimum. More...
|
|
virtual real1_f | Prob (bitLenInt qubit) |
| PSEUDO-QUANTUM Direct measure of bit probability to be in |1> state. More...
|
|
virtual real1_f | ProbReg (bitLenInt start, bitLenInt length, bitCapInt permutation) |
| Direct measure of register permutation probability. More...
|
|
virtual void | ProbRegAll (bitLenInt start, bitLenInt length, real1 *probsArray) |
|
virtual real1_f | ProbMask (bitCapInt mask, bitCapInt permutation) |
| Direct measure of masked permutation probability. More...
|
|
virtual void | ProbMaskAll (bitCapInt mask, real1 *probsArray) |
| Direct measure of masked permutation probability. More...
|
|
virtual real1_f | ProbParity (bitCapInt mask) |
| Overall probability of any odd permutation of the masked set of bits. More...
|
|
virtual bool | ForceMParity (bitCapInt mask, bool result, bool doForce=true) |
| Act as if is a measurement of parity of the masked set of qubits was applied, except force the (usually random) result. More...
|
|
virtual real1_f | ExpectationBitsAll (const bitLenInt *bits, bitLenInt length, bitCapInt offset=0) |
| Get permutation expectation value of bits. More...
|
|
virtual void | SetDevice (int dID, bool forceReInit=false) |
| Set the device index, if more than one device is available. More...
|
|
virtual int64_t | GetDevice () |
| Get the device index. More...
|
|
virtual void | SetQuantumState (const complex *inputState) |
| Set arbitrary pure quantum state, in unsigned int permutation basis. More...
|
|
virtual void | GetQuantumState (complex *outputState) |
| Get pure quantum state, in unsigned int permutation basis. More...
|
|
virtual void | GetProbs (real1 *outputProbs) |
| Get all probabilities, in unsigned int permutation basis. More...
|
|
virtual complex | GetAmplitude (bitCapInt perm) |
| Get the representational amplitude of a full permutation. More...
|
|
virtual void | SetAmplitude (bitCapInt perm, complex amp) |
| Sets the representational amplitude of a full permutation. More...
|
|
virtual real1_f | SumSqrDiff (QInterfacePtr toCompare) |
|
virtual real1_f | SumSqrDiff (QEngineOCLPtr toCompare) |
|
virtual void | NormalizeState (real1_f nrm=REAL1_DEFAULT_ARG, real1_f norm_thresh=REAL1_DEFAULT_ARG, real1_f phaseArg=ZERO_R1) |
| Apply the normalization factor found by UpdateRunningNorm() or on the fly by a single bit gate. More...
|
|
virtual void | UpdateRunningNorm (real1_f norm_thresh=REAL1_DEFAULT_ARG) |
| Force a calculation of the norm of the state vector, in order to make it unit length before the next probability or measurement operation. More...
|
|
virtual void | Finish () |
| If asynchronous work is still running, block until it finishes. More...
|
|
virtual bool | isFinished () |
| Returns "false" if asynchronous work is still running, and "true" if all previously dispatched asynchronous work is done. More...
|
|
virtual QInterfacePtr | Clone () |
| Clone this QInterface. More...
|
|
void | PopQueue (cl_event event, cl_int type) |
|
void | DispatchQueue (cl_event event, cl_int type) |
|
| QEngine (bitLenInt qBitCount, qrack_rand_gen_ptr rgp=nullptr, bool doNorm=false, bool randomGlobalPhase=true, bool useHostMem=false, bool useHardwareRNG=true, real1_f norm_thresh=REAL1_EPSILON) |
|
| QEngine () |
| Default constructor, primarily for protected internal use. More...
|
|
virtual void | SetQubitCount (bitLenInt qb) |
|
virtual real1_f | GetRunningNorm () |
| Get in-flight renormalization factor. More...
|
|
virtual void | ZMask (bitCapInt mask) |
| Masked Z gate. More...
|
|
virtual bool | ForceM (bitLenInt qubitIndex, bool result, bool doForce=true, bool doApply=true) |
| PSEUDO-QUANTUM - Acts like a measurement gate, except with a specified forced result. More...
|
|
virtual bitCapInt | ForceM (const bitLenInt *bits, bitLenInt length, const bool *values, bool doApply=true) |
| Measure permutation state of a register. More...
|
|
virtual bitCapInt | ForceMReg (bitLenInt start, bitLenInt length, bitCapInt result, bool doForce=true, bool doApply=true) |
| Measure permutation state of a register. More...
|
|
virtual void | Mtrx (const complex *mtrx, bitLenInt qubit) |
| Apply an arbitrary single bit unitary transformation. More...
|
|
virtual void | MCMtrx (const bitLenInt *controls, bitLenInt controlLen, const complex *mtrx, bitLenInt target) |
| Apply an arbitrary single bit unitary transformation, with arbitrary control bits. More...
|
|
virtual void | MACMtrx (const bitLenInt *controls, bitLenInt controlLen, const complex *mtrx, bitLenInt target) |
| Apply an arbitrary single bit unitary transformation, with arbitrary (anti-)control bits. More...
|
|
virtual void | CSwap (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubit1, bitLenInt qubit2) |
| Apply a swap with arbitrary control bits. More...
|
|
virtual void | AntiCSwap (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubit1, bitLenInt qubit2) |
| Apply a swap with arbitrary (anti) control bits. More...
|
|
virtual void | CSqrtSwap (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubit1, bitLenInt qubit2) |
| Apply a square root of swap with arbitrary control bits. More...
|
|
virtual void | AntiCSqrtSwap (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubit1, bitLenInt qubit2) |
| Apply a square root of swap with arbitrary (anti) control bits. More...
|
|
virtual void | CISqrtSwap (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubit1, bitLenInt qubit2) |
| Apply an inverse square root of swap with arbitrary control bits. More...
|
|
virtual void | AntiCISqrtSwap (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubit1, bitLenInt qubit2) |
| Apply an inverse square root of swap with arbitrary (anti) control bits. More...
|
|
virtual bool | M (bitLenInt q) |
|
virtual void | DEC (bitCapInt toSub, bitLenInt start, bitLenInt length) |
| Add integer (without sign) More...
|
|
virtual void | INCC (bitCapInt toAdd, bitLenInt start, bitLenInt length, bitLenInt carryIndex) |
| Add integer (without sign, with carry) More...
|
|
virtual void | DECC (bitCapInt toSub, bitLenInt start, bitLenInt length, bitLenInt carryIndex) |
| Subtract classical integer (without sign, with carry) More...
|
|
virtual void | DECS (bitCapInt toSub, bitLenInt start, bitLenInt length, bitLenInt overflowIndex) |
| Add a classical integer to the register, with sign and without carry. More...
|
|
virtual void | CDEC (bitCapInt toSub, bitLenInt inOutStart, bitLenInt length, const bitLenInt *controls, bitLenInt controlLen) |
| Subtract integer (without sign, with controls) More...
|
|
virtual void | Swap (bitLenInt qubit1, bitLenInt qubit2) |
| Swap values of two bits in register. More...
|
|
virtual void | ISwap (bitLenInt qubit1, bitLenInt qubit2) |
| Swap values of two bits in register, applying a phase factor of i if bits are different. More...
|
|
virtual void | SqrtSwap (bitLenInt qubit1, bitLenInt qubit2) |
| Square root of swap gate. More...
|
|
virtual void | ISqrtSwap (bitLenInt qubit1, bitLenInt qubit2) |
| Inverse of square root of swap gate. More...
|
|
virtual void | FSim (real1_f theta, real1_f phi, bitLenInt qubitIndex1, bitLenInt qubitIndex2) |
| "fSim" gate, (useful in the simulation of particles with fermionic statistics) More...
|
|
virtual real1_f | ProbAll (bitCapInt fullRegister) |
| PSEUDO-QUANTUM Direct measure of full register probability to be in permutation state. More...
|
|
virtual void | ApplyControlled2x2 (const bitLenInt *controls, bitLenInt controlLen, bitLenInt target, const complex *mtrx) |
|
virtual void | ApplyAntiControlled2x2 (const bitLenInt *controls, bitLenInt controlLen, bitLenInt target, const complex *mtrx) |
|
virtual QInterfacePtr | Decompose (bitLenInt start, bitLenInt length) |
| Schmidt decompose a length of qubits. More...
|
|
virtual void | INCSC (bitCapInt toAdd, bitLenInt start, bitLenInt length, bitLenInt overflowIndex, bitLenInt carryIndex) |
| Add a classical integer to the register, with sign and with carry. More...
|
|
virtual void | INCSC (bitCapInt toAdd, bitLenInt start, bitLenInt length, bitLenInt carryIndex) |
| Add a classical integer to the register, with sign and with (phase-based) carry. More...
|
|
virtual void | DECSC (bitCapInt toSub, bitLenInt start, bitLenInt length, bitLenInt overflowIndex, bitLenInt carryIndex) |
| Subtract a classical integer from the register, with sign and with carry. More...
|
|
virtual void | DECSC (bitCapInt toSub, bitLenInt start, bitLenInt length, bitLenInt carryIndex) |
| Subtract a classical integer from the register, with sign and with carry. More...
|
|
virtual void | DECBCD (bitCapInt toSub, bitLenInt start, bitLenInt length) |
| Subtract classical BCD integer (without sign) More...
|
|
virtual void | INCBCDC (bitCapInt toAdd, bitLenInt start, bitLenInt length, bitLenInt carryIndex) |
| Add classical BCD integer (without sign, with carry) More...
|
|
virtual void | DECBCDC (bitCapInt toSub, bitLenInt start, bitLenInt length, bitLenInt carryIndex) |
| Subtract BCD integer (without sign, with carry) More...
|
|
virtual bool | MParity (bitCapInt mask) |
| Measure (and collapse) parity of the masked set of qubits. More...
|
|
| QInterface (bitLenInt n, qrack_rand_gen_ptr rgp=nullptr, bool doNorm=false, bool useHardwareRNG=true, bool randomGlobalPhase=true, real1_f norm_thresh=REAL1_EPSILON) |
|
| QInterface () |
| Default constructor, primarily for protected internal use. More...
|
|
virtual | ~QInterface () |
|
void | SetRandomSeed (uint32_t seed) |
|
virtual void | SetConcurrency (uint32_t threadsPerEngine) |
| Set the number of threads in parallel for loops, per component QEngine. More...
|
|
virtual bitLenInt | GetQubitCount () |
| Get the count of bits in this register. More...
|
|
virtual bitCapInt | GetMaxQPower () |
| Get the maximum number of basis states, namely \( 2^n \) for \( n \) qubits. More...
|
|
virtual bool | GetIsArbitraryGlobalPhase () |
|
real1_f | Rand () |
| Generate a random real number between 0 and 1. More...
|
|
virtual std::map< QInterfacePtr, bitLenInt > | Compose (std::vector< QInterfacePtr > toCopy) |
|
virtual void | MCPhase (const bitLenInt *controls, bitLenInt controlLen, complex topLeft, complex bottomRight, bitLenInt target) |
| Apply a single bit transformation that only effects phase, with arbitrary control bits. More...
|
|
virtual void | MCInvert (const bitLenInt *controls, bitLenInt controlLen, complex topRight, complex bottomLeft, bitLenInt target) |
| Apply a single bit transformation that reverses bit probability and might effect phase, with arbitrary control bits. More...
|
|
virtual void | MACPhase (const bitLenInt *controls, bitLenInt controlLen, complex topLeft, complex bottomRight, bitLenInt target) |
| Apply a single bit transformation that only effects phase, with arbitrary (anti-)control bits. More...
|
|
virtual void | MACInvert (const bitLenInt *controls, bitLenInt controlLen, complex topRight, complex bottomLeft, bitLenInt target) |
| Apply a single bit transformation that reverses bit probability and might effect phase, with arbitrary (anti-)control bits. More...
|
|
virtual void | UniformlyControlledSingleBit (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubitIndex, const complex *mtrxs) |
| Apply a "uniformly controlled" arbitrary single bit unitary transformation. More...
|
|
virtual void | TimeEvolve (Hamiltonian h, real1_f timeDiff) |
| To define a Hamiltonian, give a vector of controlled single bit gates ("HamiltonianOp" instances) that are applied by left-multiplication in low-to-high vector index order on the state vector. More...
|
|
virtual void | CCNOT (bitLenInt control1, bitLenInt control2, bitLenInt target) |
| Doubly-controlled NOT gate. More...
|
|
virtual void | AntiCCNOT (bitLenInt control1, bitLenInt control2, bitLenInt target) |
| Anti doubly-controlled NOT gate. More...
|
|
virtual void | CNOT (bitLenInt control, bitLenInt target) |
| Controlled NOT gate. More...
|
|
virtual void | AntiCNOT (bitLenInt control, bitLenInt target) |
| Anti controlled NOT gate. More...
|
|
virtual void | CY (bitLenInt control, bitLenInt target) |
| Controlled Y gate. More...
|
|
virtual void | AntiCY (bitLenInt control, bitLenInt target) |
| Anti controlled Y gate. More...
|
|
virtual void | CCY (bitLenInt control1, bitLenInt control2, bitLenInt target) |
| Doubly-Controlled Y gate. More...
|
|
virtual void | AntiCCY (bitLenInt control1, bitLenInt control2, bitLenInt target) |
| Anti doubly-controlled Y gate. More...
|
|
virtual void | CZ (bitLenInt control, bitLenInt target) |
| Controlled Z gate. More...
|
|
virtual void | AntiCZ (bitLenInt control, bitLenInt target) |
| Anti controlled Z gate. More...
|
|
virtual void | CCZ (bitLenInt control1, bitLenInt control2, bitLenInt target) |
| Doubly-Controlled Z gate. More...
|
|
virtual void | AntiCCZ (bitLenInt control1, bitLenInt control2, bitLenInt target) |
| Anti doubly-controlled Z gate. More...
|
|
virtual void | U (bitLenInt target, real1_f theta, real1_f phi, real1_f lambda) |
| General unitary gate. More...
|
|
virtual void | U2 (bitLenInt target, real1_f phi, real1_f lambda) |
| 2-parameter unitary gate More...
|
|
virtual void | IU2 (bitLenInt target, real1_f phi, real1_f lambda) |
| Inverse 2-parameter unitary gate. More...
|
|
virtual void | AI (bitLenInt target, real1_f azimuth, real1_f inclination) |
| "Azimuth, Inclination" (RY-RZ) More...
|
|
virtual void | IAI (bitLenInt target, real1_f azimuth, real1_f inclination) |
| Invert "Azimuth, Inclination" (RY-RZ) More...
|
|
virtual void | CU (const bitLenInt *controls, bitLenInt controlLen, bitLenInt target, real1_f theta, real1_f phi, real1_f lambda) |
| Controlled general unitary gate. More...
|
|
virtual void | AntiCU (const bitLenInt *controls, bitLenInt controlLen, bitLenInt target, real1_f theta, real1_f phi, real1_f lambda) |
| (Anti-)Controlled general unitary gate More...
|
|
virtual void | H (bitLenInt qubitIndex) |
| Hadamard gate. More...
|
|
virtual void | SqrtH (bitLenInt qubitIndex) |
| Square root of Hadamard gate. More...
|
|
virtual void | SH (bitLenInt qubitIndex) |
| Y-basis transformation gate. More...
|
|
virtual void | HIS (bitLenInt qubitIndex) |
| Y-basis (inverse) transformation gate. More...
|
|
virtual void | S (bitLenInt qubitIndex) |
| S gate. More...
|
|
virtual void | IS (bitLenInt qubitIndex) |
| Inverse S gate. More...
|
|
virtual void | T (bitLenInt qubitIndex) |
| T gate. More...
|
|
virtual void | IT (bitLenInt qubitIndex) |
| Inverse T gate. More...
|
|
virtual void | PhaseRootN (bitLenInt n, bitLenInt qubitIndex) |
| "PhaseRootN" gate More...
|
|
virtual void | IPhaseRootN (bitLenInt n, bitLenInt qubitIndex) |
| Inverse "PhaseRootN" gate. More...
|
|
virtual void | Y (bitLenInt qubitIndex) |
| Y gate. More...
|
|
virtual void | YMask (bitCapInt mask) |
| Masked Y gate. More...
|
|
virtual void | SqrtX (bitLenInt qubitIndex) |
| Square root of X gate. More...
|
|
virtual void | ISqrtX (bitLenInt qubitIndex) |
| Inverse square root of X gate. More...
|
|
virtual void | SqrtXConjT (bitLenInt qubitIndex) |
| Phased square root of X gate. More...
|
|
virtual void | ISqrtXConjT (bitLenInt qubitIndex) |
| Inverse phased square root of X gate. More...
|
|
virtual void | SqrtY (bitLenInt qubitIndex) |
| Square root of Y gate. More...
|
|
virtual void | ISqrtY (bitLenInt qubitIndex) |
| Square root of Y gate. More...
|
|
virtual void | CH (bitLenInt control, bitLenInt target) |
| Controlled H gate. More...
|
|
virtual void | AntiCH (bitLenInt control, bitLenInt target) |
| (Anti-)controlled H gate More...
|
|
virtual void | CS (bitLenInt control, bitLenInt target) |
| Controlled S gate. More...
|
|
virtual void | AntiCS (bitLenInt control, bitLenInt target) |
| (Anti-)controlled S gate More...
|
|
virtual void | CIS (bitLenInt control, bitLenInt target) |
| Controlled inverse S gate. More...
|
|
virtual void | AntiCIS (bitLenInt control, bitLenInt target) |
| (Anti-)controlled inverse S gate More...
|
|
virtual void | CT (bitLenInt control, bitLenInt target) |
| Controlled T gate. More...
|
|
virtual void | CIT (bitLenInt control, bitLenInt target) |
| Controlled inverse T gate. More...
|
|
virtual void | CPhaseRootN (bitLenInt n, bitLenInt control, bitLenInt target) |
| Controlled "PhaseRootN" gate. More...
|
|
virtual void | AntiCPhaseRootN (bitLenInt n, bitLenInt control, bitLenInt target) |
| (Anti-)controlled "PhaseRootN" gate More...
|
|
virtual void | CIPhaseRootN (bitLenInt n, bitLenInt control, bitLenInt target) |
| Controlled inverse "PhaseRootN" gate. More...
|
|
virtual void | AntiCIPhaseRootN (bitLenInt n, bitLenInt control, bitLenInt target) |
| (Anti-)controlled inverse "PhaseRootN" gate More...
|
|
virtual void | AND (bitLenInt inputBit1, bitLenInt inputBit2, bitLenInt outputBit) |
| Quantum analog of classical "AND" gate. More...
|
|
virtual void | OR (bitLenInt inputBit1, bitLenInt inputBit2, bitLenInt outputBit) |
| Quantum analog of classical "OR" gate. More...
|
|
virtual void | XOR (bitLenInt inputBit1, bitLenInt inputBit2, bitLenInt outputBit) |
| Quantum analog of classical "XOR" gate. More...
|
|
virtual void | CLAND (bitLenInt inputQBit, bool inputClassicalBit, bitLenInt outputBit) |
| Quantum analog of classical "AND" gate. More...
|
|
virtual void | CLOR (bitLenInt inputQBit, bool inputClassicalBit, bitLenInt outputBit) |
| Quantum analog of classical "OR" gate. More...
|
|
virtual void | CLXOR (bitLenInt inputQBit, bool inputClassicalBit, bitLenInt outputBit) |
| Quantum analog of classical "XOR" gate. More...
|
|
virtual void | NAND (bitLenInt inputBit1, bitLenInt inputBit2, bitLenInt outputBit) |
| Quantum analog of classical "NAND" gate. More...
|
|
virtual void | NOR (bitLenInt inputBit1, bitLenInt inputBit2, bitLenInt outputBit) |
| Quantum analog of classical "NOR" gate. More...
|
|
virtual void | XNOR (bitLenInt inputBit1, bitLenInt inputBit2, bitLenInt outputBit) |
| Quantum analog of classical "XNOR" gate. More...
|
|
virtual void | CLNAND (bitLenInt inputQBit, bool inputClassicalBit, bitLenInt outputBit) |
| Quantum analog of classical "NAND" gate. More...
|
|
virtual void | CLNOR (bitLenInt inputQBit, bool inputClassicalBit, bitLenInt outputBit) |
| Quantum analog of classical "NOR" gate. More...
|
|
virtual void | CLXNOR (bitLenInt inputQBit, bool inputClassicalBit, bitLenInt outputBit) |
| Quantum analog of classical "XNOR" gate. More...
|
|
virtual void | UniformlyControlledRY (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubitIndex, const real1 *angles) |
| Apply a "uniformly controlled" rotation of a bit around the Pauli Y axis. More...
|
|
virtual void | UniformlyControlledRZ (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubitIndex, const real1 *angles) |
| Apply a "uniformly controlled" rotation of a bit around the Pauli Z axis. More...
|
|
virtual void | RT (real1_f radians, bitLenInt qubitIndex) |
| Phase shift gate. More...
|
|
virtual void | RX (real1_f radians, bitLenInt qubitIndex) |
| X axis rotation gate. More...
|
|
virtual void | RY (real1_f radians, bitLenInt qubitIndex) |
| Y axis rotation gate. More...
|
|
virtual void | RZ (real1_f radians, bitLenInt qubitIndex) |
| Z axis rotation gate. More...
|
|
virtual void | CRZ (real1_f radians, bitLenInt control, bitLenInt target) |
| Controlled Z axis rotation gate. More...
|
|
virtual void | RTDyad (int numerator, int denomPower, bitLenInt qubitIndex) |
| Dyadic fraction phase shift gate. More...
|
|
virtual void | RXDyad (int numerator, int denomPower, bitLenInt qubitIndex) |
| Dyadic fraction X axis rotation gate. More...
|
|
virtual void | Exp (real1_f radians, bitLenInt qubitIndex) |
| (Identity) Exponentiation gate More...
|
|
virtual void | Exp (const bitLenInt *controls, bitLenInt controlLen, bitLenInt qubit, const complex *matrix2x2, bool antiCtrled=false) |
| Imaginary exponentiation of arbitrary 2x2 gate. More...
|
|
virtual void | ExpDyad (int numerator, int denomPower, bitLenInt qubitIndex) |
| Dyadic fraction (identity) exponentiation gate. More...
|
|
virtual void | ExpX (real1_f radians, bitLenInt qubitIndex) |
| Pauli X exponentiation gate. More...
|
|
virtual void | ExpXDyad (int numerator, int denomPower, bitLenInt qubitIndex) |
| Dyadic fraction Pauli X exponentiation gate. More...
|
|
virtual void | ExpY (real1_f radians, bitLenInt qubitIndex) |
| Pauli Y exponentiation gate. More...
|
|
virtual void | ExpYDyad (int numerator, int denomPower, bitLenInt qubitIndex) |
| Dyadic fraction Pauli Y exponentiation gate. More...
|
|
virtual void | ExpZ (real1_f radians, bitLenInt qubitIndex) |
| Pauli Z exponentiation gate. More...
|
|
virtual void | ExpZDyad (int numerator, int denomPower, bitLenInt qubitIndex) |
| Dyadic fraction Pauli Z exponentiation gate. More...
|
|
virtual void | CRX (real1_f radians, bitLenInt control, bitLenInt target) |
| Controlled X axis rotation gate. More...
|
|
virtual void | CRXDyad (int numerator, int denomPower, bitLenInt control, bitLenInt target) |
| Controlled dyadic fraction X axis rotation gate. More...
|
|
virtual void | RYDyad (int numerator, int denomPower, bitLenInt qubitIndex) |
| Dyadic fraction Y axis rotation gate. More...
|
|
virtual void | CRY (real1_f radians, bitLenInt control, bitLenInt target) |
| Controlled Y axis rotation gate. More...
|
|
virtual void | CRYDyad (int numerator, int denomPower, bitLenInt control, bitLenInt target) |
| Controlled dyadic fraction y axis rotation gate. More...
|
|
virtual void | RZDyad (int numerator, int denomPower, bitLenInt qubitIndex) |
| Dyadic fraction Z axis rotation gate. More...
|
|
virtual void | CRZDyad (int numerator, int denomPower, bitLenInt control, bitLenInt target) |
| Controlled dyadic fraction Z axis rotation gate. More...
|
|
virtual void | CRT (real1_f radians, bitLenInt control, bitLenInt target) |
| Controlled "phase shift gate". More...
|
|
virtual void | CRTDyad (int numerator, int denomPower, bitLenInt control, bitLenInt target) |
| Controlled dyadic fraction "phase shift gate". More...
|
|
virtual void | H (bitLenInt start, bitLenInt length) |
| Bitwise Hadamard. More...
|
|
virtual void | X (bitLenInt start, bitLenInt length) |
| Bitwise Pauli X (or logical "NOT") operator. More...
|
|
virtual void | ROR (bitLenInt shift, bitLenInt start, bitLenInt length) |
| Circular shift right - shift bits right, and carry first bits. More...
|
|
virtual void | ASL (bitLenInt shift, bitLenInt start, bitLenInt length) |
| Arithmetic shift left, with last 2 bits as sign and carry. More...
|
|
virtual void | ASR (bitLenInt shift, bitLenInt start, bitLenInt length) |
| Arithmetic shift right, with last 2 bits as sign and carry. More...
|
|
virtual void | LSL (bitLenInt shift, bitLenInt start, bitLenInt length) |
| Logical shift left, filling the extra bits with |0> More...
|
|
virtual void | LSR (bitLenInt shift, bitLenInt start, bitLenInt length) |
| Logical shift right, filling the extra bits with |0> More...
|
|
virtual void | CFullAdd (const bitLenInt *controls, bitLenInt controlLen, bitLenInt inputBit1, bitLenInt inputBit2, bitLenInt carryInSumOut, bitLenInt carryOut) |
| Controlled quantum analog of classical "Full Adder" gate. More...
|
|
virtual void | CIFullAdd (const bitLenInt *controls, bitLenInt controlLen, bitLenInt inputBit1, bitLenInt inputBit2, bitLenInt carryInSumOut, bitLenInt carryOut) |
| Inverse of CFullAdd. More...
|
|
virtual void | ADC (bitLenInt input1, bitLenInt input2, bitLenInt output, bitLenInt length, bitLenInt carry) |
| Add a quantum integer to a quantum integer, with carry. More...
|
|
virtual void | IADC (bitLenInt input1, bitLenInt input2, bitLenInt output, bitLenInt length, bitLenInt carry) |
| Inverse of ADC. More...
|
|
virtual void | CADC (const bitLenInt *controls, bitLenInt controlLen, bitLenInt input1, bitLenInt input2, bitLenInt output, bitLenInt length, bitLenInt carry) |
| Add a quantum integer to a quantum integer, with carry and with controls. More...
|
|
virtual void | CIADC (const bitLenInt *controls, bitLenInt controlLen, bitLenInt input1, bitLenInt input2, bitLenInt output, bitLenInt length, bitLenInt carry) |
| Inverse of CADC. More...
|
|
virtual void | QFT (bitLenInt start, bitLenInt length, bool trySeparate=false) |
| Quantum Fourier Transform - Apply the quantum Fourier transform to the register. More...
|
|
virtual void | QFTR (const bitLenInt *qubits, bitLenInt length, bool trySeparate=false) |
| Quantum Fourier Transform (random access) - Apply the quantum Fourier transform to the register. More...
|
|
virtual void | IQFT (bitLenInt start, bitLenInt length, bool trySeparate=false) |
| Inverse Quantum Fourier Transform - Apply the inverse quantum Fourier transform to the register. More...
|
|
virtual void | IQFTR (const bitLenInt *qubits, bitLenInt length, bool trySeparate=false) |
| Inverse Quantum Fourier Transform (random access) - Apply the inverse quantum Fourier transform to the register. More...
|
|
virtual void | ZeroPhaseFlip (bitLenInt start, bitLenInt length) |
| Reverse the phase of the state where the register equals zero. More...
|
|
virtual void | PhaseFlip () |
| Phase flip always - equivalent to Z X Z X on any bit in the QInterface. More...
|
|
virtual void | SetReg (bitLenInt start, bitLenInt length, bitCapInt value) |
| Set register bits to given permutation. More...
|
|
virtual bitCapInt | MReg (bitLenInt start, bitLenInt length) |
| Measure permutation state of a register. More...
|
|
virtual bitCapInt | MAll () |
| Measure permutation state of all coherent bits. More...
|
|
virtual bitCapInt | M (const bitLenInt *bits, bitLenInt length) |
| Measure bits with indices in array, and return a mask of the results. More...
|
|
virtual void | Reverse (bitLenInt first, bitLenInt last) |
| Reverse all of the bits in a sequence. More...
|
|
virtual void | ProbBitsAll (const bitLenInt *bits, bitLenInt length, real1 *probsArray) |
| Direct measure of listed permutation probability. More...
|
|
virtual std::map< bitCapInt, int > | MultiShotMeasureMask (const bitCapInt *qPowers, bitLenInt qPowerCount, unsigned shots) |
| Statistical measure of masked permutation probability. More...
|
|
virtual void | MultiShotMeasureMask (const bitCapInt *qPowers, bitLenInt qPowerCount, unsigned shots, unsigned *shotsArray) |
| Statistical measure of masked permutation probability (returned as array) More...
|
|
virtual void | SetBit (bitLenInt qubitIndex1, bool value) |
| Set individual bit to pure |0> (false) or |1> (true) state. More...
|
|
virtual bool | ApproxCompare (QInterfacePtr toCompare, real1_f error_tol=TRYDECOMPOSE_EPSILON) |
| Compare state vectors approximately, component by component, to determine whether this state vector is the same as the target. More...
|
|
virtual bool | TryDecompose (bitLenInt start, QInterfacePtr dest, real1_f error_tol=TRYDECOMPOSE_EPSILON) |
|
virtual void | Dump () |
| If asynchronous work is still running, let the simulator know that it can be aborted. More...
|
|
virtual bool | isBinaryDecisionTree () |
| Returns "true" if current state representation is definitely a binary decision tree, "false" if it is definitely not, or "true" if it cannot be determined. More...
|
|
virtual bool | isClifford () |
| Returns "true" if current state is identifiably within the Clifford set, or "false" if it is not or cannot be determined. More...
|
|
virtual bool | isClifford (bitLenInt qubit) |
| Returns "true" if current qubit state is identifiably within the Clifford set, or "false" if it is not or cannot be determined. More...
|
|
virtual bool | TrySeparate (const bitLenInt *qubits, bitLenInt length, real1_f error_tol) |
| Qrack::QUnit types maintain explicit separation of representations of qubits, which reduces memory usage and increases gate speed. More...
|
|
virtual bool | TrySeparate (bitLenInt qubit) |
| Single-qubit TrySeparate() More...
|
|
virtual bool | TrySeparate (bitLenInt qubit1, bitLenInt qubit2) |
| Two-qubit TrySeparate() More...
|
|
virtual void | SetReactiveSeparate (bool isAggSep) |
| Set reactive separation option (on by default if available) More...
|
|
virtual bool | GetReactiveSeparate () |
| Get reactive separation option. More...
|
|
bitCapIntOcl | GetMaxSize () |
| Get maximum number of amplitudes that can be allocated on current device. More...
|
|
| ParallelFor () |
|
virtual | ~ParallelFor () |
|
void | SetConcurrencyLevel (unsigned num) |
|
unsigned | GetConcurrencyLevel () |
|
bitCapIntOcl | GetStride () |
|
void | par_for_inc (const bitCapIntOcl begin, const bitCapIntOcl itemCount, IncrementFunc, ParallelFunc fn) |
| Iterate through the permutations a maximum of end-begin times, allowing the caller to control the incrementation offset through 'inc'. More...
|
|
void | par_for (const bitCapIntOcl begin, const bitCapIntOcl end, ParallelFunc fn) |
| Call fn once for every numerical value between begin and end. More...
|
|
void | par_for_skip (const bitCapIntOcl begin, const bitCapIntOcl end, const bitCapIntOcl skipPower, const bitLenInt skipBitCount, ParallelFunc fn) |
| Skip over the skipPower bits. More...
|
|
void | par_for_mask (const bitCapIntOcl, const bitCapIntOcl, const bitCapIntOcl *maskArray, const bitLenInt maskLen, ParallelFunc fn) |
| Skip over the bits listed in maskArray in the same fashion as par_for_skip. More...
|
|
void | par_for_set (const std::set< bitCapIntOcl > &sparseSet, ParallelFunc fn) |
| Iterate over a sparse state vector. More...
|
|
void | par_for_set (const std::vector< bitCapIntOcl > &sparseSet, ParallelFunc fn) |
| Iterate over a sparse state vector. More...
|
|
void | par_for_sparse_compose (const std::vector< bitCapIntOcl > &lowSet, const std::vector< bitCapIntOcl > &highSet, const bitLenInt &highStart, ParallelFunc fn) |
| Iterate over the power set of 2 sparse state vectors. More...
|
|
void | par_for_qbdt (const bitCapInt begin, const bitCapInt end, BdtFunc fn) |
| Iterate over a QBDT tree. More...
|
|
real1_f | par_norm (const bitCapIntOcl maxQPower, const StateVectorPtr stateArray, real1_f norm_thresh=ZERO_R1) |
| Calculate the normal for the array, (with flooring). More...
|
|
real1_f | par_norm_exact (const bitCapIntOcl maxQPower, const StateVectorPtr stateArray) |
| Calculate the normal for the array, (without flooring.) More...
|
|