Qrack  10.0
General classical-emulating-quantum development framework
wasm_api.hpp
Go to the documentation of this file.
1 // Copyright (c) Microsoft Corporation. All rights reserved.
2 // Licensed under the MIT License.
3 //
4 // (Extensively modified and adapted by Daniel Strano in unitaryfund/qrack)
5 
6 #pragma once
7 
8 #include "common/pauli.hpp"
10 #include "common/qrack_types.hpp"
11 
12 #include <set>
13 #include <string>
14 #include <vector>
15 
25 namespace Qrack {
26 
27 typedef uint64_t quid;
28 
31  bool val;
33  : qid(q)
34  , val(v)
35  {
36  // Intentionally left blank
37  }
38 };
39 
44  : qid(q)
45  , val(v)
46  {
47  // Intentionally left blank
48  }
49 };
50 
55  : qid(q)
56  , val(v)
57  {
58  // Intentionally left blank
59  }
60 };
61 
66  : qid(q)
67  , b(basis)
68  {
69  // Intentionally left blank
70  }
71 };
72 
73 struct QubitU3Basis {
75  real1_f b[3U];
76  QubitU3Basis(bitLenInt q, std::vector<real1_f> basis)
77  : qid(q)
78  {
79  if (basis.size() != 3U) {
80  throw std::invalid_argument("QubitU3Basis must have 3 basis angles!");
81  }
82  for (int i = 0; i < 3; ++i) {
83  b[i] = basis[i];
84  }
85  }
86 };
87 
90  complex b[4U];
91  QubitMatrixBasis(bitLenInt q, std::vector<complex> basis)
92  : qid(q)
93  {
94  if (basis.size() != 4U) {
95  throw std::invalid_argument("QubitMatrixBasis must have 4 matrix components for basis!");
96  }
97  for (int i = 0; i < 4; ++i) {
98  b[i] = basis[i];
99  }
100  }
101 };
102 
105  real1_f b[3U];
106  real1_f e[2U];
107  QubitU3BasisEigenVal(bitLenInt q, std::vector<real1_f> basis, std::vector<real1_f> ex)
108  : qid(q)
109  {
110  if (basis.size() != 3U) {
111  throw std::invalid_argument("QubitU3BasisEigenVal must have 3 basis angles!");
112  }
113  if (ex.size() != 2U) {
114  throw std::invalid_argument("QubitU3BasisEigenVal must have 2 eigenvalues!");
115  }
116  for (int i = 0; i < 3; ++i) {
117  b[i] = basis[i];
118  }
119  e[0U] = ex[0U];
120  e[1U] = ex[1U];
121  }
122 };
123 
126  complex b[4U];
127  real1_f e[2U];
128  QubitMatrixBasisEigenVal(bitLenInt q, std::vector<complex> basis, std::vector<real1_f> ex)
129  : qid(q)
130  {
131  if (basis.size() != 4U) {
132  throw std::invalid_argument("QubitMatrixBasisEigenVal must have 4 matrix components for basis!");
133  }
134  if (ex.size() != 2U) {
135  throw std::invalid_argument("QubitMatrixBasisEigenVal must have 2 eigenvalues!");
136  }
137  for (int i = 0; i < 4; ++i) {
138  b[i] = basis[i];
139  }
140  e[0U] = ex[0U];
141  e[1U] = ex[1U];
142  }
143 };
144 
159  bitLenInt q, bool tn, bool md, bool sd, bool sh, bool bdt, bool pg, bool nw, bool hy, bool oc, bool hp);
160 
161 // Utility
162 
166 quid init_count(bitLenInt q, bool dm);
167 
172 
176 quid init();
177 
181 quid init_clone(quid sid);
182 
187 
191 void destroy(quid sid);
192 
196 void seed(quid sid, unsigned s);
197 
201 void set_concurrency(quid sid, unsigned p);
202 
206 void set_device(quid sid, int64_t did);
207 
211 void set_device_list(quid sid, std::vector<int64_t> dids);
212 
216 void allocateQubit(quid sid, bitLenInt qid);
220 bool release(quid sid, bitLenInt q);
228 void SetPermutation(quid sid, bitCapInt p);
229 
233 void qstabilizer_out_to_file(quid sid, std::string f);
238 void qstabilizer_in_from_file(quid sid, std::string f);
239 
243 std::vector<real1> ProbAll(quid sid, std::vector<bitLenInt> q);
247 real1_f Prob(quid sid, bitLenInt q);
251 real1_f ProbRdm(quid sid, bitLenInt q);
255 real1_f PermutationProb(quid sid, std::vector<QubitIndexState> q);
259 real1_f PermutationProbRdm(quid sid, std::vector<QubitIndexState> q, bool r);
263 real1_f PermutationExpectation(quid sid, std::vector<bitLenInt> q);
267 real1_f PermutationExpectationRdm(quid sid, std::vector<bitLenInt> q, bool r);
271 real1_f FactorizedExpectation(quid sid, std::vector<QubitIntegerExpVar> q);
276 real1_f FactorizedExpectationRdm(quid sid, std::vector<QubitIntegerExpVar> q, bool r);
280 real1_f FactorizedExpectationFp(quid sid, std::vector<QubitRealExpVar> q);
285 real1_f FactorizedExpectationFpRdm(quid sid, std::vector<QubitRealExpVar> q, bool r);
289 real1_f UnitaryExpectation(quid sid, std::vector<QubitU3Basis> q);
293 real1_f MatrixExpectation(quid sid, std::vector<QubitMatrixBasis> q);
297 real1_f UnitaryExpectationEigenVal(quid sid, std::vector<QubitU3BasisEigenVal> q);
301 real1_f MatrixExpectationEigenVal(quid sid, std::vector<QubitMatrixBasisEigenVal> q);
305 real1_f PauliExpectation(quid sid, std::vector<QubitPauliBasis> q);
309 real1_f Variance(quid sid, std::vector<bitLenInt> q);
313 real1_f VarianceRdm(quid sid, std::vector<bitLenInt> q, bool r);
317 real1_f FactorizedVariance(quid sid, std::vector<QubitIntegerExpVar> q);
322 real1_f FactorizedVarianceRdm(quid sid, std::vector<QubitIntegerExpVar> q, bool r);
326 real1_f FactorizedVarianceFp(quid sid, std::vector<QubitRealExpVar> q);
331 real1_f FactorizedVarianceFpRdm(quid sid, std::vector<QubitRealExpVar> q, bool r);
335 real1_f UnitaryVariance(quid sid, std::vector<QubitU3Basis> q);
339 real1_f MatrixVariance(quid sid, std::vector<QubitMatrixBasis> q);
343 real1_f UnitaryVarianceEigenVal(quid sid, std::vector<QubitU3BasisEigenVal> q);
347 real1_f MatrixVarianceEigenVal(quid sid, std::vector<QubitMatrixBasisEigenVal> q);
351 real1_f PauliVariance(quid sid, std::vector<QubitPauliBasis> q);
352 
356 size_t random_choice(quid sid, std::vector<real1> p);
357 
361 void PhaseParity(quid sid, real1_f lambda, std::vector<bitLenInt> q);
362 
366 void PhaseRootN(quid sid, bitLenInt p, std::vector<bitLenInt> q);
367 
371 real1_f JointEnsembleProbability(quid sid, std::vector<QubitPauliBasis> q);
372 
373 // SPAM and non-unitary
374 
378 bool M(quid sid, bitLenInt q);
382 bool ForceM(quid sid, bitLenInt q, bool r);
386 bool Measure(quid sid, std::vector<QubitPauliBasis> q);
390 bitCapInt MAll(quid sid);
394 std::vector<long long unsigned int> MeasureShots(quid sid, std::vector<bitLenInt> q, unsigned s);
398 void ResetAll(quid sid);
399 
400 // single-qubit gates
401 void X(quid sid, bitLenInt q);
402 void Y(quid sid, bitLenInt q);
403 void Z(quid sid, bitLenInt q);
404 void H(quid sid, bitLenInt q);
405 void S(quid sid, bitLenInt q);
406 void SX(quid sid, bitLenInt q);
407 void SY(quid sid, bitLenInt q);
408 void T(quid sid, bitLenInt q);
409 void AdjS(quid sid, bitLenInt q);
410 void AdjSX(quid sid, bitLenInt q);
411 void AdjSY(quid sid, bitLenInt q);
412 void AdjT(quid sid, bitLenInt q);
413 void U(quid sid, bitLenInt q, real1_f theta, real1_f phi, real1_f lambda);
414 void Mtrx(quid sid, std::vector<complex> m, bitLenInt q);
415 
416 // multi-controlled single-qubit gates
417 void MCX(quid sid, std::vector<bitLenInt> c, bitLenInt q);
418 void MCY(quid sid, std::vector<bitLenInt> c, bitLenInt q);
419 void MCZ(quid sid, std::vector<bitLenInt> c, bitLenInt q);
420 void MCH(quid sid, std::vector<bitLenInt> c, bitLenInt q);
421 void MCS(quid sid, std::vector<bitLenInt> c, bitLenInt q);
422 void MCT(quid sid, std::vector<bitLenInt> c, bitLenInt q);
423 void MCAdjS(quid sid, std::vector<bitLenInt> c, bitLenInt q);
424 void MCAdjT(quid sid, std::vector<bitLenInt> c, bitLenInt q);
425 void MCU(quid sid, std::vector<bitLenInt> c, bitLenInt q, real1_f theta, real1_f phi, real1_f lambda);
426 void MCMtrx(quid sid, std::vector<bitLenInt> c, std::vector<complex> m, bitLenInt q);
427 // multi-("anti"-) controlled single-qubits gates (that activate when all controls are |0>)
428 void MACX(quid sid, std::vector<bitLenInt> c, bitLenInt q);
429 void MACY(quid sid, std::vector<bitLenInt> c, bitLenInt q);
430 void MACZ(quid sid, std::vector<bitLenInt> c, bitLenInt q);
431 void MACH(quid sid, std::vector<bitLenInt> c, bitLenInt q);
432 void MACS(quid sid, std::vector<bitLenInt> c, bitLenInt q);
433 void MACT(quid sid, std::vector<bitLenInt> c, bitLenInt q);
434 void MACAdjS(quid sid, std::vector<bitLenInt> c, bitLenInt q);
435 void MACAdjT(quid sid, std::vector<bitLenInt> c, bitLenInt q);
436 void MACU(quid sid, std::vector<bitLenInt> c, bitLenInt q, real1_f theta, real1_f phi, real1_f lambda);
437 void MACMtrx(quid sid, std::vector<bitLenInt> c, std::vector<complex> m, bitLenInt q);
438 
442 void UCMtrx(quid sid, std::vector<bitLenInt> c, std::vector<complex> m, bitLenInt q, bitCapIntOcl p);
446 void Multiplex1Mtrx(quid sid, std::vector<bitLenInt> c, bitLenInt q, std::vector<complex> m);
447 
448 // coalesced single-qubit gates
449 void MX(quid sid, std::vector<bitLenInt> q);
450 void MY(quid sid, std::vector<bitLenInt> q);
451 void MZ(quid sid, std::vector<bitLenInt> q);
452 
453 // single-qubit rotations
454 void R(quid sid, real1_f phi, QubitPauliBasis q);
455 // multi-controlled single-qubit rotations
456 void MCR(quid sid, real1_f phi, std::vector<bitLenInt> c, QubitPauliBasis q);
457 
458 // exponential of Pauli operators
459 void Exp(quid sid, real1_f phi, std::vector<QubitPauliBasis> q);
460 // multi-controlled exponential of Pauli operators
461 void MCExp(quid sid, real1_f phi, std::vector<bitLenInt> c, std::vector<QubitPauliBasis> q);
462 
463 // swap variants
464 void SWAP(quid sid, bitLenInt qi1, bitLenInt qi2);
465 void ISWAP(quid sid, bitLenInt qi1, bitLenInt qi2);
466 void AdjISWAP(quid sid, bitLenInt qi1, bitLenInt qi2);
467 void FSim(quid sid, real1_f theta, real1_f phi, bitLenInt qi1, bitLenInt qi2);
468 void CSWAP(quid sid, std::vector<bitLenInt> c, bitLenInt qi1, bitLenInt qi2);
469 void ACSWAP(quid sid, std::vector<bitLenInt> c, bitLenInt qi1, bitLenInt qi2);
470 
471 // Schmidt decomposition
472 void Compose(quid sid1, quid sid2, std::vector<bitLenInt> q);
473 quid Decompose(quid sid, std::vector<bitLenInt> q);
474 void Dispose(quid sid, std::vector<bitLenInt> q);
475 
476 // Quantum boolean (Toffoli) operations:
477 // Two qubits input
478 void AND(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo);
479 void OR(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo);
480 void XOR(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo);
481 void NAND(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo);
482 void NOR(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo);
483 void XNOR(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo);
484 // One qubit, one classical bit input
485 void CLAND(quid sid, bool ci, bitLenInt qi, bitLenInt qo);
486 void CLOR(quid sid, bool ci, bitLenInt qi, bitLenInt qo);
487 void CLXOR(quid sid, bool ci, bitLenInt qi, bitLenInt qo);
488 void CLNAND(quid sid, bool ci, bitLenInt qi, bitLenInt qo);
489 void CLNOR(quid sid, bool ci, bitLenInt qi, bitLenInt qo);
490 void CLXNOR(quid sid, bool ci, bitLenInt qi, bitLenInt qo);
491 
495 void QFT(quid sid, std::vector<bitLenInt> q);
499 void IQFT(quid sid, std::vector<bitLenInt> q);
500 
501 #if ENABLE_ALU
502 // Arithmetic logic unit:
503 // Two's complement
504 void ADD(quid sid, bitCapInt a, std::vector<bitLenInt> q);
505 void SUB(quid sid, bitCapInt a, std::vector<bitLenInt> q);
506 // Overflow
507 void ADDS(quid sid, bitCapInt a, bitLenInt s, std::vector<bitLenInt> q);
508 void SUBS(quid sid, bitCapInt a, bitLenInt s, std::vector<bitLenInt> q);
509 // Controlled
510 void MCADD(quid sid, bitCapInt a, std::vector<bitLenInt> c, std::vector<bitLenInt> q);
511 void MCSUB(quid sid, bitCapInt a, std::vector<bitLenInt> c, std::vector<bitLenInt> q);
512 // In-place
513 void MUL(quid sid, bitCapInt a, std::vector<bitLenInt> q, std::vector<bitLenInt> o);
514 void DIV(quid sid, bitCapInt a, std::vector<bitLenInt> q, std::vector<bitLenInt> o);
515 // Modulo, out-of-place
516 void MULN(quid sid, bitCapInt a, bitCapInt m, std::vector<bitLenInt> q, std::vector<bitLenInt> o);
517 void DIVN(quid sid, bitCapInt a, bitCapInt m, std::vector<bitLenInt> q, std::vector<bitLenInt> o);
518 void POWN(quid sid, bitCapInt a, bitCapInt m, std::vector<bitLenInt> q, std::vector<bitLenInt> o);
519 // Controlled in-place
520 void MCMUL(quid sid, bitCapInt a, std::vector<bitLenInt> c, std::vector<bitLenInt> q, std::vector<bitLenInt> o);
521 void MCDIV(quid sid, bitCapInt a, std::vector<bitLenInt> c, std::vector<bitLenInt> q, std::vector<bitLenInt> o);
522 // Controlled modulo, out-of-place
523 void MCMULN(
524  quid sid, bitCapInt a, std::vector<bitLenInt> c, bitCapInt m, std::vector<bitLenInt> q, std::vector<bitLenInt> o);
525 void MCDIVN(
526  quid sid, bitCapInt a, std::vector<bitLenInt> c, bitCapInt m, std::vector<bitLenInt> q, std::vector<bitLenInt> o);
527 void MCPOWN(
528  quid sid, bitCapInt a, std::vector<bitLenInt> c, bitCapInt m, std::vector<bitLenInt> q, std::vector<bitLenInt> o);
529 
530 #if 0
531 // Amplitude amplification
532 void LDA(quid sid, std::vector<bitLenInt> qi, std::vector<bitLenInt> qv, std::vector<unsigned char> t);
533 void ADC(quid sid, bitLenInt s, std::vector<bitLenInt> qi, std::vector<bitLenInt> qv, std::vector<unsigned char> t);
534 void SBC(quid sid, bitLenInt s, std::vector<bitLenInt> qi, std::vector<bitLenInt> qv, std::vector<unsigned char> t);
535 void Hash(quid sid, std::vector<bitLenInt> q, std::vector<unsigned char> t);
536 #endif
537 #endif
538 
539 // Utility functions
544 bool TrySeparate1Qb(quid sid, bitLenInt qi1);
549 bool TrySeparate2Qb(quid sid, bitLenInt qi1, bitLenInt qi2);
554 bool TrySeparateTol(quid sid, std::vector<bitLenInt> q, real1_f tol);
558 void Separate(quid sid, std::vector<bitLenInt> q);
562 double GetUnitaryFidelity(quid sid);
566 void ResetUnitaryFidelity(quid sid);
570 void SetSdrp(quid sid, double sdrp);
574 void SetNcrp(quid sid, double sdrp);
578 void SetReactiveSeparate(quid sid, bool irs);
582 void SetTInjection(quid sid, bool iti);
586 void SetNoiseParameter(quid sid, double np);
590 void Normalize(quid sid);
591 
596 quid init_qneuron(quid sid, std::vector<bitLenInt> c, bitLenInt q, QNeuronActivationFn f, real1_f a, real1_f tol);
600 quid clone_qneuron(quid nid);
604 void destroy_qneuron(quid nid);
608 void set_qneuron_angles(quid nid, std::vector<real1> angles);
612 std::vector<real1> get_qneuron_angles(quid nid);
616 void set_qneuron_alpha(quid nid, real1_f alpha);
632 real1_f qneuron_predict(quid nid, bool e, bool r);
636 real1_f qneuron_unpredict(quid nid, bool e);
640 real1_f qneuron_learn_cycle(quid nid, bool e);
644 void qneuron_learn(quid nid, real1_f eta, bool e, bool r);
648 void qneuron_learn_permutation(quid nid, real1_f eta, bool e, bool r);
649 
650 // Quantum circuit objects
651 quid init_qcircuit(bool collapse, bool clifford);
654 quid qcircuit_past_light_cone(quid cid, std::set<bitLenInt> q);
655 void destroy_qcircuit(quid cid);
657 void qcircuit_swap(quid cid, bitLenInt q1, bitLenInt q2);
658 void qcircuit_append_1qb(quid cid, std::vector<complex> m, bitLenInt q);
659 void qcircuit_append_mc(quid cid, std::vector<complex> m, std::vector<bitLenInt> c, bitLenInt q, bitCapInt p);
660 void qcircuit_run(quid cid, quid sid);
661 void qcircuit_out_to_file(quid cid, std::string f);
662 void qcircuit_in_from_file(quid cid, std::string f);
663 std::string qcircuit_out_to_string(quid cid);
664 } // namespace Qrack
GLOSSARY: bitLenInt - "bit-length integer" - unsigned integer ID of qubit position in register bitCap...
Definition: complex16x2simd.hpp:25
real1_f qneuron_learn_cycle(quid nid, bool e)
Train a quantum neuron for one epoch, and also uncompute the intermediate side-effects.
Definition: wasm_api.cpp:2674
bool TrySeparate1Qb(quid sid, bitLenInt qi1)
Try to factorize a single-qubit subsystem out of "bulk" simulator state.
Definition: wasm_api.cpp:2415
real1_f ProbRdm(quid sid, bitLenInt q)
"Reduced density matrix" Z-basis expectation value of qubit
Definition: wasm_api.cpp:1856
void set_qneuron_alpha(quid nid, real1_f alpha)
Set the "leakage" parameter for "leaky" quantum neuron activation functions.
Definition: wasm_api.cpp:2626
void MCT(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) Controlled "T" Gate
Definition: wasm_api.cpp:1277
void CLNOR(quid sid, bool ci, bitLenInt qi, bitLenInt qo)
Definition: wasm_api.cpp:1792
void X(quid sid, bitLenInt q)
(External API) "X" Gate
Definition: wasm_api.cpp:1091
quid qcircuit_past_light_cone(quid cid, std::set< bitLenInt > q)
Definition: wasm_api.cpp:2772
void MACS(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) "Anti-"Controlled "S" Gate
Definition: wasm_api.cpp:1367
void Y(quid sid, bitLenInt q)
(External API) "Y" Gate
Definition: wasm_api.cpp:1100
void ADD(quid sid, bitCapInt a, std::vector< bitLenInt > q)
Definition: wasm_api.cpp:2230
void MCMULN(quid sid, bitCapInt a, std::vector< bitLenInt > c, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
Definition: wasm_api.cpp:2345
void MY(quid sid, std::vector< bitLenInt > q)
(External API) Multiple "Y" Gate
Definition: wasm_api.cpp:1467
void XOR(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
Definition: wasm_api.cpp:1744
void SetPermutation(quid sid, bitCapInt p)
Set bit string permutation eigenstate of simulator instance.
Definition: wasm_api.cpp:1082
void MCADD(quid sid, bitCapInt a, std::vector< bitLenInt > c, std::vector< bitLenInt > q)
Definition: wasm_api.cpp:2251
real1_f JointEnsembleProbability(quid sid, std::vector< QubitPauliBasis > q)
Overall probability of any odd permutation of the masked set of bits.
Definition: wasm_api.cpp:989
void ISWAP(quid sid, bitLenInt qi1, bitLenInt qi2)
Definition: wasm_api.cpp:1626
quid init()
"Quasi-default constructor" (for an empty simulator)
Definition: wasm_api.cpp:634
void Compose(quid sid1, quid sid2, std::vector< bitLenInt > q)
Definition: wasm_api.cpp:1656
void allocateQubit(quid sid, bitLenInt qid)
Allocate new qubit with ID.
Definition: wasm_api.cpp:1014
void POWN(quid sid, bitCapInt a, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
Definition: wasm_api.cpp:2308
void MCPOWN(quid sid, bitCapInt a, std::vector< bitLenInt > c, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
Definition: wasm_api.cpp:2373
real1_f MatrixVariance(quid sid, std::vector< QubitMatrixBasis > q)
Get the single-qubit (2x2) operator variance for the array of qubits and bases.
Definition: wasm_api.cpp:2097
void set_qneuron_angles(quid nid, std::vector< real1 > angles)
Set the (RY-rotation) angle parameters for each permutation of quantum neuron input qubits.
Definition: wasm_api.cpp:2594
void qcircuit_append_1qb(quid cid, std::vector< complex > m, bitLenInt q)
void SetNoiseParameter(quid sid, double np)
Set noise parameter (for QInterfaceNoisy)
Definition: wasm_api.cpp:2491
quid init_qcircuit_clone(quid cid)
Definition: wasm_api.cpp:2768
void SetReactiveSeparate(quid sid, bool irs)
Turn off/on "reactive separation" feature (for less/more aggressive automatic state factorization)
Definition: wasm_api.cpp:2479
bitLenInt get_qcircuit_qubit_count(quid cid)
Definition: wasm_api.cpp:2783
void MCH(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) Controlled "H" Gate
Definition: wasm_api.cpp:1256
void SetSdrp(quid sid, double sdrp)
Set "Schmidt decomposition rounding parameter" (SDRP) value (see https://arxiv.org/abs/2304....
Definition: wasm_api.cpp:2467
void qcircuit_out_to_file(quid cid, std::string f)
Definition: wasm_api.cpp:2837
void qstabilizer_out_to_file(quid sid, std::string f)
Output stabilizer simulation tableau to file (or raise exception for "get_error()" if incompatible si...
Definition: wasm_api.cpp:906
void SY(quid sid, bitLenInt q)
(External API) Square root of Y gate
Definition: wasm_api.cpp:1145
void MUL(quid sid, bitCapInt a, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
Definition: wasm_api.cpp:2268
bool TrySeparateTol(quid sid, std::vector< bitLenInt > q, real1_f tol)
Try to factorize a qubit subsystem out of "bulk" simulator state.
Definition: wasm_api.cpp:2427
void MCX(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) Controlled "X" Gate
Definition: wasm_api.cpp:1229
void XNOR(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
Definition: wasm_api.cpp:1762
void MCY(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) Controlled "Y" Gate
Definition: wasm_api.cpp:1238
void T(quid sid, bitLenInt q)
(External API) "T" Gate
Definition: wasm_api.cpp:1154
void IQFT(quid sid, std::vector< bitLenInt > q)
(Inverse) Quantum Fourier Transform
Definition: wasm_api.cpp:2218
void MACT(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) "Anti-"Controlled "T" Gate
Definition: wasm_api.cpp:1376
void 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
Definition: wasm_api.cpp:1403
void MCAdjS(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) Controlled Inverse "S" Gate
Definition: wasm_api.cpp:1286
void Mtrx(quid sid, std::vector< complex > m, bitLenInt q)
(External API) 2x2 complex matrix unitary gate
Definition: wasm_api.cpp:1208
void MCDIV(quid sid, bitCapInt a, std::vector< bitLenInt > c, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
Definition: wasm_api.cpp:2332
void CSWAP(quid sid, std::vector< bitLenInt > c, bitLenInt qi1, bitLenInt qi2)
Definition: wasm_api.cpp:1644
bool Measure(quid sid, std::vector< QubitPauliBasis > q)
Each in its specified Pauli basis, collapse an ensemble of qubits jointly via measurement.
Definition: wasm_api.cpp:1583
real1_f UnitaryVariance(quid sid, std::vector< QubitU3Basis > q)
Get the single-qubit (3-parameter) operator variance for the array of qubits and bases.
Definition: wasm_api.cpp:2065
quid clone_qneuron(quid nid)
"Clone" a quantum neuron (which is a classical state)
Definition: wasm_api.cpp:2547
void AdjISWAP(quid sid, bitLenInt qi1, bitLenInt qi2)
Definition: wasm_api.cpp:1632
void 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,...
Definition: wasm_api.cpp:1427
real1_f FactorizedExpectation(quid sid, std::vector< QubitIntegerExpVar > q)
Expectation value for bit-string integer from group of qubits with per-qubit integer expectation valu...
Definition: wasm_api.cpp:1952
real1_f UnitaryExpectationEigenVal(quid sid, std::vector< QubitU3BasisEigenVal > q)
Get the single-qubit (3-parameter) operator expectation value for the array of qubits and bases.
Definition: wasm_api.cpp:2127
void MCMUL(quid sid, bitCapInt a, std::vector< bitLenInt > c, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
Definition: wasm_api.cpp:2319
void seed(quid sid, unsigned s)
"Seed" random number generator (if pseudo-random Mersenne twister is in use)
Definition: wasm_api.cpp:873
real1_f FactorizedVariance(quid sid, std::vector< QubitIntegerExpVar > q)
Variance for bit-string integer from group of qubits with per-qubit integer variance.
Definition: wasm_api.cpp:1960
void ACSWAP(quid sid, std::vector< bitLenInt > c, bitLenInt qi1, bitLenInt qi2)
Definition: wasm_api.cpp:1650
void MACZ(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) "Anti-"Controlled "Z" Gate
Definition: wasm_api.cpp:1346
void MCAdjT(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) Controlled Inverse "T" Gate
Definition: wasm_api.cpp:1295
void U(quid sid, bitLenInt q, real1_f theta, real1_f phi, real1_f lambda)
(External API) 3-parameter unitary gate
Definition: wasm_api.cpp:1199
bool M(quid sid, bitLenInt q)
Measure single qubit (according to Born rules) and return the result.
Definition: wasm_api.cpp:1555
size_t random_choice(quid sid, std::vector< real1 > p)
Select from a distribution of "p.size()" count of elements according to the discrete probabilities in...
Definition: wasm_api.cpp:940
void AdjSY(quid sid, bitLenInt q)
(External API) Inverse square root of Y gate
Definition: wasm_api.cpp:1181
void CLNAND(quid sid, bool ci, bitLenInt qi, bitLenInt qo)
Definition: wasm_api.cpp:1786
std::complex< real1 > complex
Definition: qrack_types.hpp:136
void FSim(quid sid, real1_f theta, real1_f phi, bitLenInt qi1, bitLenInt qi2)
Definition: wasm_api.cpp:1638
real1_f VarianceRdm(quid sid, std::vector< bitLenInt > q, bool r)
"Reduced density matrix" variance for bit-string integer equivalent of specified arbitrary group of q...
Definition: wasm_api.cpp:1928
void MCMtrx(quid sid, std::vector< bitLenInt > c, std::vector< complex > m, bitLenInt q)
(External API) Controlled 2x2 complex matrix unitary gate
Definition: wasm_api.cpp:1313
void 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...
Definition: wasm_api.cpp:960
real1_f FactorizedVarianceFp(quid sid, std::vector< QubitRealExpVar > q)
Variance for bit-string integer from group of qubits with per-qubit real1 variance.
Definition: wasm_api.cpp:2013
real1_f FactorizedExpectationFp(quid sid, std::vector< QubitRealExpVar > q)
Expectation value for bit-string integer from group of qubits with per-qubit real1 expectation value.
Definition: wasm_api.cpp:2005
real1_f Variance(quid sid, std::vector< bitLenInt > q)
Variance for bit-string integer equivalent of specified arbitrary group of qubits.
Definition: wasm_api.cpp:1922
void 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.
Definition: wasm_api.cpp:2697
void AdjT(quid sid, bitLenInt q)
(External API) Inverse "T" Gate
Definition: wasm_api.cpp:1190
bitCapInt MAll(quid sid)
Measure all qubits (according to Born rules) and return the result as a bit string (integer).
Definition: wasm_api.cpp:1574
void Exp(quid sid, real1_f phi, std::vector< QubitPauliBasis > q)
(External API) Exponentiation of Pauli operators
Definition: wasm_api.cpp:1503
real1_f PermutationProb(quid sid, std::vector< QubitIndexState > q)
Probability of specified (single) permutation of any arbitrary group of qubits.
Definition: wasm_api.cpp:1878
void S(quid sid, bitLenInt q)
(External API) "S" Gate
Definition: wasm_api.cpp:1127
void MACX(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) "Anti-"Controlled "X" Gate
Definition: wasm_api.cpp:1328
void destroy(quid sid)
"Destroy" or release simulator allocation
Definition: wasm_api.cpp:860
QNeuronActivationFn get_qneuron_activation_fn(quid nid)
Get the activation function for a quantum neuron.
Definition: wasm_api.cpp:2644
quid 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 "t...
Definition: wasm_api.cpp:2504
void destroy_qcircuit(quid cid)
Definition: wasm_api.cpp:2774
void MACH(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) "Anti-"Controlled "H" Gate
Definition: wasm_api.cpp:1355
void set_qneuron_activation_fn(quid nid, QNeuronActivationFn f)
Set the activation function for a quantum neuron.
Definition: wasm_api.cpp:2638
real1_f MatrixExpectation(quid sid, std::vector< QubitMatrixBasis > q)
Get the single-qubit (2x2) operator expectation value for the array of qubits and bases.
Definition: wasm_api.cpp:2092
uint64_t quid
Definition: wasm_api.hpp:27
void ADDS(quid sid, bitCapInt a, bitLenInt s, std::vector< bitLenInt > q)
Definition: wasm_api.cpp:2240
void Separate(quid sid, std::vector< bitLenInt > q)
Force (inexact) factorization of qubit subsystem out of "bulk" simulator state.
Definition: wasm_api.cpp:2433
void H(quid sid, bitLenInt q)
(External API) Walsh-Hadamard transform applied for simulator ID and qubit ID
Definition: wasm_api.cpp:1118
void QFT(quid sid, std::vector< bitLenInt > q)
Quantum Fourier Transform.
Definition: wasm_api.cpp:2208
void qcircuit_in_from_file(quid cid, std::string f)
Definition: wasm_api.cpp:2847
void PhaseRootN(quid sid, bitLenInt p, std::vector< bitLenInt > q)
Applies a -2 * PI_R1 / (2^N) phase rotation to each qubit.
Definition: wasm_api.cpp:962
void OR(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
Definition: wasm_api.cpp:1738
real1_f PauliExpectation(quid sid, std::vector< QubitPauliBasis > q)
Pauli operator expectation value for the array of qubits and bases.
Definition: wasm_api.cpp:2201
bool ForceM(quid sid, bitLenInt q, bool r)
(PSEUDO-QUANTUM:) Force measurement result of single qubit (and return the result)
Definition: wasm_api.cpp:1564
void SX(quid sid, bitLenInt q)
(External API) Square root of X gate
Definition: wasm_api.cpp:1136
void R(quid sid, real1_f phi, QubitPauliBasis q)
(External API) Rotation around Pauli axes
Definition: wasm_api.cpp:1485
void DIV(quid sid, bitCapInt a, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
Definition: wasm_api.cpp:2278
void MACAdjT(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) "Anti-"Controlled Inverse "T" Gate
Definition: wasm_api.cpp:1394
void MCDIVN(quid sid, bitCapInt a, std::vector< bitLenInt > c, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
Definition: wasm_api.cpp:2359
void qcircuit_swap(quid cid, bitLenInt q1, bitLenInt q2)
Definition: wasm_api.cpp:2788
real1_f UnitaryVarianceEigenVal(quid sid, std::vector< QubitU3BasisEigenVal > q)
Get the single-qubit (3-parameter) operator variance for the array of qubits and bases.
Definition: wasm_api.cpp:2135
void CLOR(quid sid, bool ci, bitLenInt qi, bitLenInt qo)
Definition: wasm_api.cpp:1774
real1_f PermutationExpectationRdm(quid sid, std::vector< bitLenInt > q, bool r)
"Reduced density matrix" expectation value for bit-string integer equivalent of specified arbitrary g...
Definition: wasm_api.cpp:1914
bitLenInt num_qubits(quid sid)
Total count of qubits in simulator instance.
Definition: wasm_api.cpp:1076
quid init_count_stabilizer(bitLenInt q)
Initialize a simulator ID with "q" qubits as purely a stabilizer simulator.
Definition: wasm_api.cpp:684
void CLXOR(quid sid, bool ci, bitLenInt qi, bitLenInt qo)
Definition: wasm_api.cpp:1780
real1_f PermutationProbRdm(quid sid, std::vector< QubitIndexState > q, bool r)
"Reduced density matrix" probability of specified (single) permutation of any arbitrary group of qubi...
Definition: wasm_api.cpp:1884
void MCSUB(quid sid, bitCapInt a, std::vector< bitLenInt > c, std::vector< bitLenInt > q)
Definition: wasm_api.cpp:2259
void qstabilizer_in_from_file(quid sid, std::string f)
Initialize stabilizer simulation from a tableau file (or raise exception for "get_error()" if incompa...
Definition: wasm_api.cpp:920
void AdjSX(quid sid, bitLenInt q)
(External API) Inverse square root of X gate
Definition: wasm_api.cpp:1172
void MZ(quid sid, std::vector< bitLenInt > q)
(External API) Multiple "Z" Gate
Definition: wasm_api.cpp:1476
void MULN(quid sid, bitCapInt a, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
Definition: wasm_api.cpp:2288
real1_f Prob(quid sid, bitLenInt q)
Z-basis expectation value of qubit.
Definition: wasm_api.cpp:1850
void destroy_qneuron(quid nid)
"Destroy" or release simulator allocation
Definition: wasm_api.cpp:2584
real1_f 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...
Definition: wasm_api.cpp:1969
real1_f get_qneuron_alpha(quid nid)
Get the "leakage" parameter for "leaky" quantum neuron activation functions.
Definition: wasm_api.cpp:2632
void SetTInjection(quid sid, bool iti)
Turn off/on "T-injection" feature (for "near-Clifford" simulation with RZ gates)
Definition: wasm_api.cpp:2485
float real1_f
Definition: qrack_types.hpp:103
void qneuron_learn(quid nid, real1_f eta, bool e, bool r)
Train a quantum neuron for one epoh (without uncomputing any intermediate side-effects)
Definition: wasm_api.cpp:2686
quid Decompose(quid sid, std::vector< bitLenInt > q)
Definition: wasm_api.cpp:1686
void Dispose(quid sid, std::vector< bitLenInt > q)
Definition: wasm_api.cpp:1712
void CLAND(quid sid, bool ci, bitLenInt qi, bitLenInt qo)
Definition: wasm_api.cpp:1768
std::string qcircuit_out_to_string(quid cid)
Definition: wasm_api.cpp:2857
quid init_qcircuit(bool collapse, bool clifford)
Definition: wasm_api.cpp:2708
quid qcircuit_inverse(quid cid)
Definition: wasm_api.cpp:2770
void qcircuit_append_mc(quid cid, std::vector< complex > m, std::vector< bitLenInt > c, bitLenInt q, bitCapInt p)
void NAND(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
Definition: wasm_api.cpp:1750
real1_f qneuron_unpredict(quid nid, bool e)
Perform the inverse of quantum neuron inference (for "uncomputation")
Definition: wasm_api.cpp:2662
void SetNcrp(quid sid, double sdrp)
Set "Near-Clifford rounding parameter".
Definition: wasm_api.cpp:2473
void set_concurrency(quid sid, unsigned p)
Set CPU concurrency (if build isn't serial)
Definition: wasm_api.cpp:882
void set_device_list(quid sid, std::vector< int64_t > dids)
Set GPU device IDs on the simulator (if the simulator is GPU-accelerated)
Definition: wasm_api.cpp:900
bool TrySeparate2Qb(quid sid, bitLenInt qi1, bitLenInt qi2)
Try to factorize a two-qubit subsystem out of "bulk" simulator state.
Definition: wasm_api.cpp:2421
double GetUnitaryFidelity(quid sid)
Report fidelity for "Schmidt decomposition rounding parameter" (SDRP) and "near-Clifford rounding".
Definition: wasm_api.cpp:2455
void ResetUnitaryFidelity(quid sid)
Reset fidelity to 1 for "Schmidt decomposition rounding parameter" (SDRP) and "near-Clifford rounding...
Definition: wasm_api.cpp:2461
void ResetAll(quid sid)
Set simulator to |0> permutation state.
Definition: wasm_api.cpp:1005
void MACAdjS(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) "Anti-"Controlled Inverse "S" Gate
Definition: wasm_api.cpp:1385
void DIVN(quid sid, bitCapInt a, bitCapInt m, std::vector< bitLenInt > q, std::vector< bitLenInt > o)
Definition: wasm_api.cpp:2298
std::vector< real1 > get_qneuron_angles(quid nid)
Get the (RY-rotation) angle parameters for each permutation of quantum neuron input qubits.
Definition: wasm_api.cpp:2606
real1_f qneuron_predict(quid nid, bool e, bool r)
Infer quantum neuron output from inputs (after training)
Definition: wasm_api.cpp:2650
void CLXNOR(quid sid, bool ci, bitLenInt qi, bitLenInt qo)
Definition: wasm_api.cpp:1798
void SWAP(quid sid, bitLenInt qi1, bitLenInt qi2)
Definition: wasm_api.cpp:1620
void NOR(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
Definition: wasm_api.cpp:1756
void SUBS(quid sid, bitCapInt a, bitLenInt s, std::vector< bitLenInt > q)
Definition: wasm_api.cpp:2245
std::vector< long long unsigned int > 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 simula...
Definition: wasm_api.cpp:1594
quid init_count(bitLenInt q, bool dm)
"Default optimal" (BQP-complete-targeted) simulator type initialization (with "direct memory" option)
Definition: wasm_api.cpp:639
void AND(quid sid, bitLenInt qi1, bitLenInt qi2, bitLenInt qo)
Definition: wasm_api.cpp:1732
real1_f PauliVariance(quid sid, std::vector< QubitPauliBasis > q)
Pauli operator variance for the array of qubits and bases.
Definition: wasm_api.cpp:2206
real1_f PermutationExpectation(quid sid, std::vector< bitLenInt > q)
Expectation value for bit-string integer equivalent of specified arbitrary group of qubits.
Definition: wasm_api.cpp:1905
void 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
Definition: wasm_api.cpp:1304
void Normalize(quid sid)
Normalize the state (which should never be necessary unless Decompose() is "abused")
Definition: wasm_api.cpp:2497
void AdjS(quid sid, bitLenInt q)
(External API) Inverse "S" Gate
Definition: wasm_api.cpp:1163
void MACY(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) "Anti-"Controlled "Y" Gate
Definition: wasm_api.cpp:1337
Pauli
Enumerated list of Pauli bases.
Definition: pauli.hpp:19
std::vector< real1 > ProbAll(quid sid, std::vector< bitLenInt > q)
Get the probabilities of all permutations of the requested subset of qubits.
Definition: wasm_api.cpp:1804
real1_f 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 va...
Definition: wasm_api.cpp:2031
void SUB(quid sid, bitCapInt a, std::vector< bitLenInt > q)
Definition: wasm_api.cpp:2235
real1_f 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...
Definition: wasm_api.cpp:2022
void qcircuit_run(quid cid, quid sid)
Definition: wasm_api.cpp:2831
void MCR(quid sid, real1_f phi, std::vector< bitLenInt > c, QubitPauliBasis q)
(External API) Controlled rotation around Pauli axes
Definition: wasm_api.cpp:1494
void MCExp(quid sid, real1_f phi, std::vector< bitLenInt > c, std::vector< QubitPauliBasis > q)
(External API) Controlled exponentiation of Pauli operators
Definition: wasm_api.cpp:1529
void Z(quid sid, bitLenInt q)
(External API) "Z" Gate
Definition: wasm_api.cpp:1109
real1_f UnitaryExpectation(quid sid, std::vector< QubitU3Basis > q)
Get the single-qubit (3-parameter) operator expectation value for the array of qubits and bases.
Definition: wasm_api.cpp:2060
QNeuronActivationFn
Enumerated list of activation functions.
Definition: qneuron_activation_function.hpp:19
real1_f 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 ...
Definition: wasm_api.cpp:1978
void Multiplex1Mtrx(quid sid, std::vector< bitLenInt > c, bitLenInt q, std::vector< complex > m)
Multi-controlled, single-target multiplexer gate.
Definition: wasm_api.cpp:1439
quid 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): t...
Definition: wasm_api.cpp:549
quid init_qbdd_count(bitLenInt q)
"Default optimal" (BQP-complete-targeted) simulator type initialization (with "direct memory" option)
Definition: wasm_api.cpp:814
void MX(quid sid, std::vector< bitLenInt > q)
(External API) Multiple "X" Gate
Definition: wasm_api.cpp:1458
void set_device(quid sid, int64_t did)
Set GPU device ID on the simulator (if the simulator is GPU-accelerated)
Definition: wasm_api.cpp:891
void MACMtrx(quid sid, std::vector< bitLenInt > c, std::vector< complex > m, bitLenInt q)
(External API) Controlled 2x2 complex matrix unitary gate
Definition: wasm_api.cpp:1412
quid init_clone(quid sid)
"Clone" simulator (no-clone theorem does not apply to classical simulation)
Definition: wasm_api.cpp:730
void MCS(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) Controlled "S" Gate
Definition: wasm_api.cpp:1268
real1_f MatrixExpectationEigenVal(quid sid, std::vector< QubitMatrixBasisEigenVal > q)
Get the single-qubit (2x2) operator expectation value for the array of qubits and bases.
Definition: wasm_api.cpp:2169
void MCZ(quid sid, std::vector< bitLenInt > c, bitLenInt q)
(External API) Controlled "Z" Gate
Definition: wasm_api.cpp:1247
real1_f MatrixVarianceEigenVal(quid sid, std::vector< QubitMatrixBasisEigenVal > q)
Get the single-qubit (2x2) operator variance for the array of qubits and bases.
Definition: wasm_api.cpp:2177
bool release(quid sid, bitLenInt q)
Release qubit ID.
Definition: wasm_api.cpp:1044
MICROSOFT_QUANTUM_DECL void SBC(_In_ uintq sid, uintq s, _In_ uintq ni, _In_reads_(ni) uintq *qi, _In_ uintq nv, _In_reads_(nv) uintq *qv, unsigned char *t)
Definition: pinvoke_api.cpp:3502
MICROSOFT_QUANTUM_DECL void Hash(_In_ uintq sid, _In_ uintq n, _In_reads_(n) uintq *q, unsigned char *t)
Definition: pinvoke_api.cpp:3514
MICROSOFT_QUANTUM_DECL void ADC(_In_ uintq sid, uintq s, _In_ uintq ni, _In_reads_(ni) uintq *qi, _In_ uintq nv, _In_reads_(nv) uintq *qv, unsigned char *t)
Definition: pinvoke_api.cpp:3490
MICROSOFT_QUANTUM_DECL void LDA(_In_ uintq sid, _In_ uintq ni, _In_reads_(ni) uintq *qi, _In_ uintq nv, _In_reads_(nv) uintq *qv, unsigned char *t)
Definition: pinvoke_api.cpp:3478
#define bitLenInt
Definition: qrack_types.hpp:42
#define bitCapInt
Definition: qrack_types.hpp:66
#define bitCapIntOcl
Definition: qrack_types.hpp:54
Definition: wasm_api.hpp:29
QubitIndexState(bitLenInt q, bool v)
Definition: wasm_api.hpp:32
bool val
Definition: wasm_api.hpp:31
bitLenInt qid
Definition: wasm_api.hpp:30
Definition: wasm_api.hpp:40
QubitIntegerExpVar(bitLenInt q, bitCapInt v)
Definition: wasm_api.hpp:43
bitLenInt qid
Definition: wasm_api.hpp:41
bitCapInt val
Definition: wasm_api.hpp:42
Definition: wasm_api.hpp:124
complex b[4U]
Definition: wasm_api.hpp:126
real1_f e[2U]
Definition: wasm_api.hpp:127
bitLenInt qid
Definition: wasm_api.hpp:125
QubitMatrixBasisEigenVal(bitLenInt q, std::vector< complex > basis, std::vector< real1_f > ex)
Definition: wasm_api.hpp:128
Definition: wasm_api.hpp:88
complex b[4U]
Definition: wasm_api.hpp:90
QubitMatrixBasis(bitLenInt q, std::vector< complex > basis)
Definition: wasm_api.hpp:91
bitLenInt qid
Definition: wasm_api.hpp:89
Definition: wasm_api.hpp:62
Pauli b
Definition: wasm_api.hpp:64
QubitPauliBasis(bitLenInt q, Pauli basis)
Definition: wasm_api.hpp:65
bitLenInt qid
Definition: wasm_api.hpp:63
Definition: wasm_api.hpp:51
QubitRealExpVar(bitLenInt q, real1_f v)
Definition: wasm_api.hpp:54
bitLenInt qid
Definition: wasm_api.hpp:52
real1_f val
Definition: wasm_api.hpp:53
Definition: wasm_api.hpp:103
bitLenInt qid
Definition: wasm_api.hpp:104
QubitU3BasisEigenVal(bitLenInt q, std::vector< real1_f > basis, std::vector< real1_f > ex)
Definition: wasm_api.hpp:107
real1_f e[2U]
Definition: wasm_api.hpp:106
real1_f b[3U]
Definition: wasm_api.hpp:105
Definition: wasm_api.hpp:73
bitLenInt qid
Definition: wasm_api.hpp:74
real1_f b[3U]
Definition: wasm_api.hpp:75
QubitU3Basis(bitLenInt q, std::vector< real1_f > basis)
Definition: wasm_api.hpp:76