Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Fully qualified name: Std.Canon.ApplyControlledOnBitString
operation ApplyControlledOnBitString<'T>(bits : Bool[], oracle : ('T => Unit is Adj + Ctl), controlRegister : Qubit[], target : 'T) : Unit is Adj + Ctl
Summary
Applies oracle on target when controlRegister
is in the state specified by bits.
Description
Applies a unitary operation oracle on the target, controlled
on a state specified by a given bit mask bits.
The bit at bits[i] corresponds to qubit at controlRegister[i].
The pattern given by bits may be shorter than controlRegister,
in which case additional control qubits are ignored (that is, neither
controlled on |0⟩ nor |1⟩).
If bits is longer than controlRegister, an error is raised.
Input
bits
The bit string to control the given unitary operation on.
oracle
The unitary operation to be applied on the target.
target
The target to be passed to oracle as an input.
controlRegister
A quantum register that controls application of oracle.
Example
// When bits = [1,0,0] oracle is applied if and only if controlRegister
// is in the state |100⟩.
use t = Qubit();
use c = Qubit[3];
X(c[0]);
ApplyControlledOnBitString([true, false, false], X, c, t);
Message($"{M(t)}"); // Prints `One` since oracle `X` was applied.