public void PartialRy() { var target = new FreeQubit(0); var op = new QuantumSimulator().Get <Intrinsic.Ry>().Partial((double d) => new ValueTuple <double, Qubit>(d, target)); var args = op.__dataIn(2.1); var expected = new RuntimeMetadata() { Label = "Ry", FormattedNonQubitArgs = "(2.1)", IsAdjoint = false, IsControlled = false, IsMeasurement = false, IsComposite = false, Children = null, Controls = new List <Qubit>() { }, Targets = new List <Qubit>() { target }, }; Assert.Equal(op.GetRuntimeMetadata(args), expected); }
public void AdjointAdjointH() { Qubit target = new FreeQubit(0); var op = new QuantumSimulator().Get <Intrinsic.H>().Adjoint.Adjoint; var args = op.__dataIn(target); var expected = new RuntimeMetadata() { Label = "H", FormattedNonQubitArgs = "", IsAdjoint = false, IsControlled = false, IsMeasurement = false, IsComposite = false, Children = null, Controls = new List <Qubit>() { }, Targets = new List <Qubit>() { target }, }; Assert.Equal(op.GetRuntimeMetadata(args), expected); }
public void MResetZ() { var measureQubit = new FreeQubit(0); var op = new QuantumSimulator().Get <Measurement.MResetZ>(); var args = op.__dataIn(measureQubit); var expected = new RuntimeMetadata() { Label = "MResetZ", FormattedNonQubitArgs = "", IsAdjoint = false, IsControlled = false, IsMeasurement = true, IsComposite = false, Children = null, Controls = new List <Qubit>() { }, Targets = new List <Qubit>() { measureQubit }, }; Assert.Equal(op.GetRuntimeMetadata(args), expected); }
public void ResetAll() { IQArray <Qubit> targets = new QArray <Qubit>(new[] { new FreeQubit(0) }); var op = new QuantumSimulator().Get <Intrinsic.ResetAll>(); var args = op.__dataIn(targets); var expected = new RuntimeMetadata() { Label = "ResetAll", FormattedNonQubitArgs = "", IsAdjoint = false, IsControlled = false, IsMeasurement = false, IsComposite = true, Children = null, Controls = new List <Qubit>() { }, Targets = targets, }; Assert.Equal(op.GetRuntimeMetadata(args), expected); }
public void NestedOperation() { var op = new QuantumSimulator().Get <Circuits.NestedOp>(); var args = op.__dataIn(QVoid.Instance); var expected = new RuntimeMetadata() { Label = "NestedOp", FormattedNonQubitArgs = "", IsAdjoint = false, IsControlled = false, IsMeasurement = false, IsComposite = false, Children = null, Controls = new List <Qubit>() { }, Targets = new List <Qubit>() { }, }; Assert.Equal(op.GetRuntimeMetadata(args), expected); }