UNPKG

qukit

Version:

[![Npm](https://badgen.net/npm/v/qukit)](https://www.npmjs.com/package/qukit) [![Crates](https://badgen.net/crates/v/qukit)](https://crates.io/crates/qukit) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/lice

26 lines (25 loc) 952 B
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"); } } }