qukit
Version:
[](https://www.npmjs.com/package/qukit) [](https://crates.io/crates/qukit) [](https://opensource.org/lice
26 lines (25 loc) • 952 B
JavaScript
import * as WasmLib from "../pkg/qukit";
export function ccPhaseRoot(cQbits0, cQbits1, qbits, sameStep = false) {
if (Array.isArray(cQbits0) && Array.isArray(cQbits1) && Array.isArray(qbits)) {
const minLen = Math.min(cQbits0.length, cQbits1.length, qbits.length);
if (minLen > 0) {
ccPhaseRoot(cQbits0[0], cQbits1[0], qbits[0], sameStep);
}
for (let i = 1; i < minLen; i++) {
ccPhaseRoot(cQbits0[i], cQbits1[i], qbits[i], sameStep);
}
}
else {
if (!Array.isArray(cQbits0) && !Array.isArray(cQbits1) && !Array.isArray(qbits)) {
if (sameStep) {
WasmLib.controlled_controlled_phase_root_same_step(cQbits0, cQbits1, qbits);
}
else {
WasmLib.controlled_controlled_phase_root(cQbits0, cQbits1, qbits);
}
}
else {
throw new Error("type mismatch");
}
}
}