qulacs-wasm 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +3 -2
  2. package/lib/bundle/index.d.ts +3 -3
  3. package/lib/bundle/index.js +19 -19
  4. package/lib/bundle/main/emsciptenModule/QulacsWasmModule.d.ts +4 -3
  5. package/lib/bundle/main/emsciptenModule/QulacsWasmModule.js +2 -2
  6. package/lib/bundle/main/init.d.ts +5 -5
  7. package/lib/bundle/main/init.js +88 -84
  8. package/lib/bundle/main/instance.d.ts +101 -101
  9. package/lib/bundle/main/instance.js +205 -205
  10. package/lib/bundle/main/type/QulacsClass.d.ts +227 -227
  11. package/lib/bundle/main/type/QulacsClass.js +2 -2
  12. package/lib/bundle/main/type/common.d.ts +25 -25
  13. package/lib/bundle/main/type/common.js +38 -38
  14. package/lib/bundle/wasm/emscriptem-types.d.ts +85 -0
  15. package/lib/bundle/wasm/emscriptem-types.js +5 -0
  16. package/lib/bundle/wasm/module.d.ts +4 -0
  17. package/lib/bundle/wasm/module.worker.js +1 -0
  18. package/lib/nobundle/index.d.ts +3 -3
  19. package/lib/nobundle/index.js +19 -19
  20. package/lib/nobundle/main/emsciptenModule/QulacsWasmModule.d.ts +4 -3
  21. package/lib/nobundle/main/emsciptenModule/QulacsWasmModule.js +2 -2
  22. package/lib/nobundle/main/init.d.ts +5 -5
  23. package/lib/nobundle/main/init.js +88 -84
  24. package/lib/nobundle/main/instance.d.ts +101 -101
  25. package/lib/nobundle/main/instance.js +205 -205
  26. package/lib/nobundle/main/type/QulacsClass.d.ts +227 -227
  27. package/lib/nobundle/main/type/QulacsClass.js +2 -2
  28. package/lib/nobundle/main/type/common.d.ts +25 -25
  29. package/lib/nobundle/main/type/common.js +38 -38
  30. package/lib/nobundle/wasm/emscriptem-types.d.ts +85 -0
  31. package/lib/nobundle/wasm/emscriptem-types.js +5 -0
  32. package/lib/nobundle/wasm/module.d.ts +4 -0
  33. package/package.json +6 -3
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Qulacs Wasm
2
2
 
3
- qulacs-wasm lets you use Qulacs in JavaScript via WebAssembly. It provides a convenient syntax similar to Qulacs on Python in JavaScript/TypeScript, and aims an efficient way to manipulate quantum computation on JavaScript runtime environment.
3
+ qulacs-wasm lets you use [Qulacs](https://github.com/qulacs/qulacs) in JavaScript via WebAssembly. It provides a convenient syntax similar to Qulacs on Python in JavaScript/TypeScript, and aims an efficient way to manipulate quantum computation on JavaScript runtime environment.
4
4
 
5
5
  Qulacs and qulacs-wasm is licensed under the [MIT license](https://github.com/qulacs/qulacs/blob/master/LICENSE).
6
6
 
@@ -58,7 +58,7 @@ This benchmark test complies with [benchmark-qulacs](https://github.com/qulacs/b
58
58
 
59
59
  ### Single-thread benchmark
60
60
 
61
- ![single thread benchmark](./img/fig_both_singlethread.png)
61
+ ![single thread benchmark](https://user-images.githubusercontent.com/3122541/228353793-48d629d1-3f4a-4f69-875e-4e4babb81762.png)
62
62
 
63
63
  ## How to import from external .wasm file
64
64
 
@@ -105,5 +105,6 @@ npm run build
105
105
  - [ ] GPU class (ex: QuantumStateGpu)
106
106
  - [ ] ITYPE(long long int) type (automatically cast to int)
107
107
  - [ ] file access functions (ex: create_quantum_operator_from_openfermion_file / create_observable_from_openfermion_file / create_split_quantum_operator)
108
+ - [ ] Multi-thread (limited by currently WebAssembly Specifications)
108
109
 
109
110
  Pull Requests Welcome!
@@ -1,3 +1,3 @@
1
- export * from "./main/init";
2
- export * from "./main/type/common";
3
- export * from "./main/instance";
1
+ export * from "./main/init";
2
+ export * from "./main/type/common";
3
+ export * from "./main/instance";
@@ -1,19 +1,19 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./main/init"), exports);
18
- __exportStar(require("./main/type/common"), exports);
19
- __exportStar(require("./main/instance"), exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./main/init"), exports);
18
+ __exportStar(require("./main/type/common"), exports);
19
+ __exportStar(require("./main/instance"), exports);
@@ -1,3 +1,4 @@
1
- export interface QulacsWasmModule extends EmscriptenWasm.Module {
2
- getExceptionMessage(exceptionPtr: number): string;
3
- }
1
+ import { EmscriptenWasm } from "../../wasm/emscriptem-types";
2
+ export interface QulacsWasmModule extends EmscriptenWasm.Module {
3
+ getExceptionMessage(exceptionPtr: number): string;
4
+ }
@@ -1,2 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,5 @@
1
- import { QulacsWasmModule } from "./emsciptenModule/QulacsWasmModule";
2
- export interface InitQulacsOption {
3
- module?: WebAssembly.Module;
4
- }
5
- export declare function initQulacs(option?: InitQulacsOption): Promise<QulacsWasmModule>;
1
+ import { QulacsWasmModule } from "./emsciptenModule/QulacsWasmModule";
2
+ export interface InitQulacsOption {
3
+ module?: WebAssembly.Module;
4
+ }
5
+ export declare function initQulacs(option?: InitQulacsOption): Promise<QulacsWasmModule>;
@@ -1,84 +1,88 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.initQulacs = void 0;
40
- var ModuleQulacsWasm = require("../wasm/module.js");
41
- var instance_1 = require("./instance");
42
- function initQulacs(option) {
43
- if (option === void 0) { option = {}; }
44
- return __awaiter(this, void 0, void 0, function () {
45
- var qulacsModule;
46
- return __generator(this, function (_a) {
47
- switch (_a.label) {
48
- case 0:
49
- if (!option.module) return [3 /*break*/, 2];
50
- return [4 /*yield*/, _initQulacsFromModule(option.module)];
51
- case 1:
52
- qulacsModule = _a.sent();
53
- return [3 /*break*/, 4];
54
- case 2: return [4 /*yield*/, _initQulacs()];
55
- case 3:
56
- qulacsModule = _a.sent();
57
- _a.label = 4;
58
- case 4:
59
- (0, instance_1.applyModule)(qulacsModule);
60
- return [2 /*return*/, qulacsModule];
61
- }
62
- });
63
- });
64
- }
65
- exports.initQulacs = initQulacs;
66
- function _initQulacs() {
67
- return Promise.resolve(ModuleQulacsWasm());
68
- }
69
- function _initQulacsFromModule(compiledModule) {
70
- return new Promise(function (resolve, reject) {
71
- function onInstantiateWasm(importObject, successCallback) {
72
- WebAssembly.instantiate(compiledModule, importObject)
73
- .then(function (instance) {
74
- successCallback(instance);
75
- })
76
- .catch(function (e) { return reject(e); });
77
- }
78
- ModuleQulacsWasm({ instantiateWasm: onInstantiateWasm })
79
- .then(function (emscriptenModule) {
80
- resolve(emscriptenModule);
81
- })
82
- .catch(function (e) { return reject(e); });
83
- });
84
- }
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.initQulacs = void 0;
43
+ var module_1 = __importDefault(require("../wasm/module"));
44
+ var instance_1 = require("./instance");
45
+ function initQulacs(option) {
46
+ if (option === void 0) { option = {}; }
47
+ return __awaiter(this, void 0, void 0, function () {
48
+ var qulacsModule;
49
+ return __generator(this, function (_a) {
50
+ switch (_a.label) {
51
+ case 0:
52
+ if (!option.module) return [3 /*break*/, 2];
53
+ return [4 /*yield*/, _initQulacsFromModule(option.module)];
54
+ case 1:
55
+ qulacsModule = _a.sent();
56
+ return [3 /*break*/, 4];
57
+ case 2: return [4 /*yield*/, _initQulacs()];
58
+ case 3:
59
+ qulacsModule = _a.sent();
60
+ _a.label = 4;
61
+ case 4:
62
+ (0, instance_1.applyModule)(qulacsModule);
63
+ return [2 /*return*/, qulacsModule];
64
+ }
65
+ });
66
+ });
67
+ }
68
+ exports.initQulacs = initQulacs;
69
+ function _initQulacs() {
70
+ return Promise.resolve((0, module_1.default)());
71
+ }
72
+ function _initQulacsFromModule(compiledModule) {
73
+ return new Promise(function (resolve, reject) {
74
+ function onInstantiateWasm(importObject, successCallback) {
75
+ WebAssembly.instantiate(compiledModule, importObject)
76
+ .then(function (instance) {
77
+ successCallback(instance);
78
+ })
79
+ .catch(function (e) { return reject(e); });
80
+ return undefined; // NOTE: @types/emscriptenでは不要なnon-null assertionかもしれない
81
+ }
82
+ (0, module_1.default)({ instantiateWasm: onInstantiateWasm })
83
+ .then(function (emscriptenModule) {
84
+ resolve(emscriptenModule);
85
+ })
86
+ .catch(function (e) { return reject(e); });
87
+ });
88
+ }
@@ -1,101 +1,101 @@
1
- import { QulacsWasmModule } from "./emsciptenModule/QulacsWasmModule";
2
- import { Complex } from "./type/common";
3
- import type { CausalConeSimulatorImpl, ClsNoisyEvolution_fast, ClsOneControlOneTargetGate, ClsOneQubitGate, ClsOneQubitRotationGate, ClsReversibleBooleanGate, ClsStateReflectionGate, DensityMatrixImpl, GeneralQuantumOperatorImpl, GradCalculatorImpl, HermitianQuantumOperatorImpl, NoiseSimulatorImpl, ParametricQuantumCircuitImpl, PauliOperatorImpl, QuantumCircuitImpl, QuantumCircuitOptimizerImpl, QuantumCircuitSimulatorImpl, QuantumGateBase, QuantumGateDiagonalMatrix, QuantumGateMatrix, QuantumGateSparseMatrix, QuantumGate_CPTP, QuantumGate_Instrument, QuantumGate_Probabilistic, QuantumGate_SingleParameter, QuantumStateBase, QuantumStateImpl } from "./type/QulacsClass";
4
- export declare type QuantumState = QuantumStateImpl;
5
- export declare type QuantumCircuit = QuantumCircuitImpl;
6
- export declare type ParametricQuantumCircuit = ParametricQuantumCircuitImpl;
7
- export declare type DensityMatrix = DensityMatrixImpl;
8
- export declare type GeneralQuantumOperator = GeneralQuantumOperatorImpl;
9
- export declare type HermitianQuantumOperator = HermitianQuantumOperatorImpl;
10
- export declare type Observable = HermitianQuantumOperatorImpl;
11
- export declare type PauliOperator = PauliOperatorImpl;
12
- export declare type QuantumCircuitOptimizer = QuantumCircuitOptimizerImpl;
13
- export declare type GradCalculator = GradCalculatorImpl;
14
- export declare type QuantumCircuitSimulator = QuantumCircuitSimulatorImpl;
15
- export declare type NoiseSimulator = NoiseSimulatorImpl;
16
- export declare type CausalConeSimulator = CausalConeSimulatorImpl;
17
- export declare var getExceptionMessage: (exceptionPtr: number) => string;
18
- export declare var addFunction: (func: any, flag: string) => number;
19
- export declare var removeFunction: (funcPtr: number) => void;
20
- export declare var QuantumState: QuantumState;
21
- export declare var QuantumCircuit: QuantumCircuit;
22
- export declare var ParametricQuantumCircuit: ParametricQuantumCircuit;
23
- export declare var DensityMatrix: DensityMatrix;
24
- export declare var GeneralQuantumOperator: GeneralQuantumOperator;
25
- export declare var HermitianQuantumOperator: HermitianQuantumOperator;
26
- export declare var Observable: Observable;
27
- export declare var PauliOperator: PauliOperator;
28
- export declare var QuantumCircuitOptimizer: QuantumCircuitOptimizer;
29
- export declare var GradCalculator: GradCalculator;
30
- export declare var QuantumCircuitSimulator: QuantumCircuitSimulator;
31
- export declare var NoiseSimulator: NoiseSimulator;
32
- export declare var CausalConeSimulator: CausalConeSimulator;
33
- export declare var Identity: (target_qubit_index: number) => ClsOneQubitGate;
34
- export declare var X: (target_qubit_index: number) => ClsOneQubitGate;
35
- export declare var Y: (target_qubit_index: number) => ClsOneQubitGate;
36
- export declare var Z: (target_qubit_index: number) => ClsOneQubitGate;
37
- export declare var H: (target_qubit_index: number) => ClsOneQubitGate;
38
- export declare var S: (target_qubit_index: number) => ClsOneQubitGate;
39
- export declare var Sdag: (target_qubit_index: number) => ClsOneQubitGate;
40
- export declare var T: (target_qubit_index: number) => ClsOneQubitGate;
41
- export declare var Tdag: (target_qubit_index: number) => ClsOneQubitGate;
42
- export declare var sqrtX: (target_qubit_index: number) => ClsOneQubitGate;
43
- export declare var sqrtXdag: (target_qubit_index: number) => ClsOneQubitGate;
44
- export declare var sqrtY: (target_qubit_index: number) => ClsOneQubitGate;
45
- export declare var sqrtYdag: (target_qubit_index: number) => ClsOneQubitGate;
46
- export declare var P0: (target_qubit_index: number) => ClsOneQubitGate;
47
- export declare var P1: (target_qubit_index: number) => ClsOneQubitGate;
48
- export declare var U1: (target_qubit_index: number, lambda: number) => QuantumGateMatrix;
49
- export declare var U2: (target_qubit_index: number, phi: number, lambda: number) => QuantumGateMatrix;
50
- export declare var U3: (target_qubit_index: number, theta: number, phi: number, lambda: number) => QuantumGateMatrix;
51
- export declare var RX: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
52
- export declare var RY: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
53
- export declare var RZ: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
54
- export declare var RotInvX: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
55
- export declare var RotInvY: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
56
- export declare var RotInvZ: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
57
- export declare var RotX: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
58
- export declare var RotY: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
59
- export declare var RotZ: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
60
- export declare var CNOT: (control_qubit_index: number, target_qubit_index: number) => ClsOneControlOneTargetGate;
61
- export declare var CZ: (control_qubit_index: number, target_qubit_index: number) => ClsOneControlOneTargetGate;
62
- export declare var SWAP: (qubit_index1: number, qubit_index2: number) => ClsOneControlOneTargetGate;
63
- export declare var TOFFOLI: (control_index1: number, control_index2: number, target_index: number) => QuantumGateMatrix;
64
- export declare var FREDKIN: (control_index: number, target_index1: number, target_index2: number) => QuantumGateMatrix;
65
- export declare var Pauli: (target_qubit_index_list: number[], pauli_ids: number[]) => QuantumGateMatrix;
66
- export declare var PauliRotation: (target_qubit_index_list: number[], pauli_ids: number[], angle: number) => QuantumGateMatrix;
67
- export declare var DenseMatrix: (target_qubit_index_list: number | number[], matrix: (Complex | number)[][]) => QuantumGateMatrix;
68
- export declare var SparseMatrix: (target_qubit_index_list: number[], matrix: (Complex | number)[][]) => QuantumGateSparseMatrix;
69
- export declare var DiagonalMatrix: (target_qubit_index_list: number[], diagonal_element: (Complex | number)[]) => QuantumGateDiagonalMatrix;
70
- export declare var RandomUnitary: (target_qubit_index_list: number[], seed?: number) => QuantumGateMatrix;
71
- export declare var ReversibleBoolean: (target_qubit_index_list: number[], function_ptr: (val: number, dim: number) => number) => ClsReversibleBooleanGate;
72
- export declare var StateReflection: (reflection_state: QuantumStateBase) => ClsStateReflectionGate;
73
- export declare var BitFlipNoise: (target_index: number, prob: number) => QuantumGate_Probabilistic;
74
- export declare var DephasingNoise: (target_index: number, prob: number) => QuantumGate_Probabilistic;
75
- export declare var IndependentXZNoise: (target_index: number, prob: number) => QuantumGate_Probabilistic;
76
- export declare var DepolarizingNoise: (target_index: number, prob: number) => QuantumGate_Probabilistic;
77
- export declare var TwoQubitDepolarizingNoise: (target_index1: number, target_index2: number, prob: number) => QuantumGate_Probabilistic;
78
- export declare var AmplitudeDampingNoise: (target_index: number, prob: number) => QuantumGate_CPTP;
79
- export declare var Measurement: (target_index: number, classical_register_address: number) => QuantumGate_Instrument;
80
- export declare var NoisyEvolution_fast: (hamiltonian: Observable, c_ops: GeneralQuantumOperator[], time: number) => ClsNoisyEvolution_fast;
81
- export declare var partial_trace: (state: QuantumState | DensityMatrix, target_traceout: number[]) => DensityMatrix;
82
- export declare var to_matrix_gate: (gate: QuantumGateBase) => QuantumGateMatrix;
83
- export declare var inner_product: (state_bra: QuantumState, state_ket: QuantumState) => Complex;
84
- export declare var tensor_product: <T = QuantumState | DensityMatrix>(state_left: T, state_right: T) => QuantumState;
85
- export declare var drop_qubit: (state: QuantumState, target: number[], order: number[]) => QuantumState;
86
- export declare var make_superposition: (coef1: number | Complex, state1: QuantumState, coef2: number | Complex, state2: QuantumState) => QuantumState;
87
- export declare var make_mixture: (prob1: number | Complex, state1: QuantumStateBase, prob2: number | Complex, state2: QuantumStateBase) => DensityMatrix;
88
- export declare var permutate_qubit: <T = QuantumState | DensityMatrix>(state: T, qubit_order: number[]) => T;
89
- export declare var merge: (gate_applied_firstOrGateList: QuantumGateBase | QuantumGateBase[], gate_applied_later?: QuantumGateBase) => QuantumGateMatrix;
90
- export declare var add: (gate1OrGateList: QuantumGateBase | QuantumGateBase[], gate2?: QuantumGateBase) => QuantumGateMatrix;
91
- export declare var Probabilistic: (distribution: number[], gate_list: QuantumGateBase[]) => QuantumGateBase;
92
- export declare var CPTP: (gate_list: QuantumGateBase[]) => QuantumGateBase;
93
- export declare var CP: (gate_list: QuantumGateBase[], state_normalize: boolean, probability_normalize: boolean, assign_zero_if_not_matched: boolean) => QuantumGateBase;
94
- export declare var Instrument: (gate_list: QuantumGateBase[], classical_register_address: number) => QuantumGateBase;
95
- export declare var Adaptive: (gate: QuantumGateBase, function_ptr: (list: number[]) => boolean) => QuantumGateBase;
96
- export declare var ParametricRX: (target_qubit_index: number, initial_angle: number) => QuantumGate_SingleParameter;
97
- export declare var ParametricRY: (target_qubit_index: number, initial_angle: number) => QuantumGate_SingleParameter;
98
- export declare var ParametricRZ: (target_qubit_index: number, initial_angle: number) => QuantumGate_SingleParameter;
99
- export declare var from_json: <T = GeneralQuantumOperator | HermitianQuantumOperator | QuantumState | DensityMatrix | QuantumStateBase | QuantumGateBase | QuantumCircuit>(json: string) => T;
100
- export declare var create_quantum_operator_from_openfermion_text: (text: string) => GeneralQuantumOperator;
101
- export declare function applyModule(qulacsModule: QulacsWasmModule): void;
1
+ import { QulacsWasmModule } from "./emsciptenModule/QulacsWasmModule";
2
+ import { Complex } from "./type/common";
3
+ import type { CausalConeSimulatorImpl, ClsNoisyEvolution_fast, ClsOneControlOneTargetGate, ClsOneQubitGate, ClsOneQubitRotationGate, ClsReversibleBooleanGate, ClsStateReflectionGate, DensityMatrixImpl, GeneralQuantumOperatorImpl, GradCalculatorImpl, HermitianQuantumOperatorImpl, NoiseSimulatorImpl, ParametricQuantumCircuitImpl, PauliOperatorImpl, QuantumCircuitImpl, QuantumCircuitOptimizerImpl, QuantumCircuitSimulatorImpl, QuantumGateBase, QuantumGateDiagonalMatrix, QuantumGateMatrix, QuantumGateSparseMatrix, QuantumGate_CPTP, QuantumGate_Instrument, QuantumGate_Probabilistic, QuantumGate_SingleParameter, QuantumStateBase, QuantumStateImpl } from "./type/QulacsClass";
4
+ export declare type QuantumState = QuantumStateImpl;
5
+ export declare type QuantumCircuit = QuantumCircuitImpl;
6
+ export declare type ParametricQuantumCircuit = ParametricQuantumCircuitImpl;
7
+ export declare type DensityMatrix = DensityMatrixImpl;
8
+ export declare type GeneralQuantumOperator = GeneralQuantumOperatorImpl;
9
+ export declare type HermitianQuantumOperator = HermitianQuantumOperatorImpl;
10
+ export declare type Observable = HermitianQuantumOperatorImpl;
11
+ export declare type PauliOperator = PauliOperatorImpl;
12
+ export declare type QuantumCircuitOptimizer = QuantumCircuitOptimizerImpl;
13
+ export declare type GradCalculator = GradCalculatorImpl;
14
+ export declare type QuantumCircuitSimulator = QuantumCircuitSimulatorImpl;
15
+ export declare type NoiseSimulator = NoiseSimulatorImpl;
16
+ export declare type CausalConeSimulator = CausalConeSimulatorImpl;
17
+ export declare var getExceptionMessage: (exceptionPtr: number) => string;
18
+ export declare var addFunction: (func: any, flag: string) => number;
19
+ export declare var removeFunction: (funcPtr: number) => void;
20
+ export declare var QuantumState: QuantumState;
21
+ export declare var QuantumCircuit: QuantumCircuit;
22
+ export declare var ParametricQuantumCircuit: ParametricQuantumCircuit;
23
+ export declare var DensityMatrix: DensityMatrix;
24
+ export declare var GeneralQuantumOperator: GeneralQuantumOperator;
25
+ export declare var HermitianQuantumOperator: HermitianQuantumOperator;
26
+ export declare var Observable: Observable;
27
+ export declare var PauliOperator: PauliOperator;
28
+ export declare var QuantumCircuitOptimizer: QuantumCircuitOptimizer;
29
+ export declare var GradCalculator: GradCalculator;
30
+ export declare var QuantumCircuitSimulator: QuantumCircuitSimulator;
31
+ export declare var NoiseSimulator: NoiseSimulator;
32
+ export declare var CausalConeSimulator: CausalConeSimulator;
33
+ export declare var Identity: (target_qubit_index: number) => ClsOneQubitGate;
34
+ export declare var X: (target_qubit_index: number) => ClsOneQubitGate;
35
+ export declare var Y: (target_qubit_index: number) => ClsOneQubitGate;
36
+ export declare var Z: (target_qubit_index: number) => ClsOneQubitGate;
37
+ export declare var H: (target_qubit_index: number) => ClsOneQubitGate;
38
+ export declare var S: (target_qubit_index: number) => ClsOneQubitGate;
39
+ export declare var Sdag: (target_qubit_index: number) => ClsOneQubitGate;
40
+ export declare var T: (target_qubit_index: number) => ClsOneQubitGate;
41
+ export declare var Tdag: (target_qubit_index: number) => ClsOneQubitGate;
42
+ export declare var sqrtX: (target_qubit_index: number) => ClsOneQubitGate;
43
+ export declare var sqrtXdag: (target_qubit_index: number) => ClsOneQubitGate;
44
+ export declare var sqrtY: (target_qubit_index: number) => ClsOneQubitGate;
45
+ export declare var sqrtYdag: (target_qubit_index: number) => ClsOneQubitGate;
46
+ export declare var P0: (target_qubit_index: number) => ClsOneQubitGate;
47
+ export declare var P1: (target_qubit_index: number) => ClsOneQubitGate;
48
+ export declare var U1: (target_qubit_index: number, lambda: number) => QuantumGateMatrix;
49
+ export declare var U2: (target_qubit_index: number, phi: number, lambda: number) => QuantumGateMatrix;
50
+ export declare var U3: (target_qubit_index: number, theta: number, phi: number, lambda: number) => QuantumGateMatrix;
51
+ export declare var RX: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
52
+ export declare var RY: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
53
+ export declare var RZ: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
54
+ export declare var RotInvX: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
55
+ export declare var RotInvY: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
56
+ export declare var RotInvZ: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
57
+ export declare var RotX: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
58
+ export declare var RotY: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
59
+ export declare var RotZ: (target_qubit_index: number, angle: number) => ClsOneQubitRotationGate;
60
+ export declare var CNOT: (control_qubit_index: number, target_qubit_index: number) => ClsOneControlOneTargetGate;
61
+ export declare var CZ: (control_qubit_index: number, target_qubit_index: number) => ClsOneControlOneTargetGate;
62
+ export declare var SWAP: (qubit_index1: number, qubit_index2: number) => ClsOneControlOneTargetGate;
63
+ export declare var TOFFOLI: (control_index1: number, control_index2: number, target_index: number) => QuantumGateMatrix;
64
+ export declare var FREDKIN: (control_index: number, target_index1: number, target_index2: number) => QuantumGateMatrix;
65
+ export declare var Pauli: (target_qubit_index_list: number[], pauli_ids: number[]) => QuantumGateMatrix;
66
+ export declare var PauliRotation: (target_qubit_index_list: number[], pauli_ids: number[], angle: number) => QuantumGateMatrix;
67
+ export declare var DenseMatrix: (target_qubit_index_list: number | number[], matrix: (Complex | number)[][]) => QuantumGateMatrix;
68
+ export declare var SparseMatrix: (target_qubit_index_list: number[], matrix: (Complex | number)[][]) => QuantumGateSparseMatrix;
69
+ export declare var DiagonalMatrix: (target_qubit_index_list: number[], diagonal_element: (Complex | number)[]) => QuantumGateDiagonalMatrix;
70
+ export declare var RandomUnitary: (target_qubit_index_list: number[], seed?: number) => QuantumGateMatrix;
71
+ export declare var ReversibleBoolean: (target_qubit_index_list: number[], function_ptr: (val: number, dim: number) => number) => ClsReversibleBooleanGate;
72
+ export declare var StateReflection: (reflection_state: QuantumStateBase) => ClsStateReflectionGate;
73
+ export declare var BitFlipNoise: (target_index: number, prob: number) => QuantumGate_Probabilistic;
74
+ export declare var DephasingNoise: (target_index: number, prob: number) => QuantumGate_Probabilistic;
75
+ export declare var IndependentXZNoise: (target_index: number, prob: number) => QuantumGate_Probabilistic;
76
+ export declare var DepolarizingNoise: (target_index: number, prob: number) => QuantumGate_Probabilistic;
77
+ export declare var TwoQubitDepolarizingNoise: (target_index1: number, target_index2: number, prob: number) => QuantumGate_Probabilistic;
78
+ export declare var AmplitudeDampingNoise: (target_index: number, prob: number) => QuantumGate_CPTP;
79
+ export declare var Measurement: (target_index: number, classical_register_address: number) => QuantumGate_Instrument;
80
+ export declare var NoisyEvolution_fast: (hamiltonian: Observable, c_ops: GeneralQuantumOperator[], time: number) => ClsNoisyEvolution_fast;
81
+ export declare var partial_trace: (state: QuantumState | DensityMatrix, target_traceout: number[]) => DensityMatrix;
82
+ export declare var to_matrix_gate: (gate: QuantumGateBase) => QuantumGateMatrix;
83
+ export declare var inner_product: (state_bra: QuantumState, state_ket: QuantumState) => Complex;
84
+ export declare var tensor_product: <T = QuantumState | DensityMatrix>(state_left: T, state_right: T) => QuantumState;
85
+ export declare var drop_qubit: (state: QuantumState, target: number[], order: number[]) => QuantumState;
86
+ export declare var make_superposition: (coef1: number | Complex, state1: QuantumState, coef2: number | Complex, state2: QuantumState) => QuantumState;
87
+ export declare var make_mixture: (prob1: number | Complex, state1: QuantumStateBase, prob2: number | Complex, state2: QuantumStateBase) => DensityMatrix;
88
+ export declare var permutate_qubit: <T = QuantumState | DensityMatrix>(state: T, qubit_order: number[]) => T;
89
+ export declare var merge: (gate_applied_firstOrGateList: QuantumGateBase | QuantumGateBase[], gate_applied_later?: QuantumGateBase) => QuantumGateMatrix;
90
+ export declare var add: (gate1OrGateList: QuantumGateBase | QuantumGateBase[], gate2?: QuantumGateBase) => QuantumGateMatrix;
91
+ export declare var Probabilistic: (distribution: number[], gate_list: QuantumGateBase[]) => QuantumGateBase;
92
+ export declare var CPTP: (gate_list: QuantumGateBase[]) => QuantumGateBase;
93
+ export declare var CP: (gate_list: QuantumGateBase[], state_normalize: boolean, probability_normalize: boolean, assign_zero_if_not_matched: boolean) => QuantumGateBase;
94
+ export declare var Instrument: (gate_list: QuantumGateBase[], classical_register_address: number) => QuantumGateBase;
95
+ export declare var Adaptive: (gate: QuantumGateBase, function_ptr: (list: number[]) => boolean) => QuantumGateBase;
96
+ export declare var ParametricRX: (target_qubit_index: number, initial_angle: number) => QuantumGate_SingleParameter;
97
+ export declare var ParametricRY: (target_qubit_index: number, initial_angle: number) => QuantumGate_SingleParameter;
98
+ export declare var ParametricRZ: (target_qubit_index: number, initial_angle: number) => QuantumGate_SingleParameter;
99
+ export declare var from_json: <T = GeneralQuantumOperator | HermitianQuantumOperator | QuantumState | DensityMatrix | QuantumStateBase | QuantumGateBase | QuantumCircuit>(json: string) => T;
100
+ export declare var create_quantum_operator_from_openfermion_text: (text: string) => GeneralQuantumOperator;
101
+ export declare function applyModule(qulacsModule: QulacsWasmModule): void;