Home Reference Source

src/setups/decompositions/r2rzandph.js

import {Control} from '../../meta/control';
import DecompositionRule from '../../cengines/replacer/decompositionrule';
import {R, Rz, Ph} from '../../ops/gates';

const _decompose_R = (cmd) => {
  const ctrl = cmd.controlQubits
  const eng = cmd.engine
  const gate = cmd.gate

  Control(eng, ctrl, () => {
    new Ph(0.5 * gate.angle).or(cmd.qubits)
    new Rz(gate.angle).or(cmd.qubits)
  })
}

export default [
  new DecompositionRule(R, _decompose_R)
]