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

36 lines (35 loc) 1.19 kB
import * as WasmLib from "../pkg/qukit"; export function swap(qbits0, qbits1, cControl, sameStep = false) { if (Array.isArray(qbits0) && Array.isArray(qbits1)) { const minLen = Math.min(qbits0.length, qbits1.length); if (minLen > 0) { swap(qbits0[0], qbits1[0], cControl, sameStep); } for (let i = 1; i < minLen; i++) { swap(qbits0[i], qbits1[i], cControl, sameStep); } } else { if (!Array.isArray(qbits0) && !Array.isArray(qbits1)) { if (cControl !== null && cControl !== undefined) { if (sameStep) { WasmLib.swap_same_step_classically_controlled(qbits0, qbits1, cControl); } else { WasmLib.swap_classically_controlled(qbits0, qbits1, cControl); } } else { if (sameStep) { WasmLib.swap_same_step(qbits0, qbits1); } else { WasmLib.swap(qbits0, qbits1); } } } else { throw new Error("type mismatch"); } } }