From 35401a58b2f80d73f17a33e51a218d53d27ff506 Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Thu, 7 Oct 2021 17:23:06 -0700 Subject: [PATCH 01/16] Renamed QuantumSimulator to NativeCommonSimulator --- .../ApplyControlledX.cs | 0 .../ApplyControlledZ.cs | 0 .../ApplyUncontrolledH.cs | 0 .../ApplyUncontrolledRx.cs | 0 .../ApplyUncontrolledRy.cs | 0 .../ApplyUncontrolledRz.cs | 0 .../ApplyUncontrolledS.cs | 0 .../ApplyUncontrolledSAdj.cs | 0 .../ApplyUncontrolledSWAP.cs | 0 .../ApplyUncontrolledT.cs | 0 .../ApplyUncontrolledTAdj.cs | 0 .../ApplyUncontrolledX.cs | 0 .../ApplyUncontrolledY.cs | 0 .../ApplyUncontrolledZ.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/Assert.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/AssertProb.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/Dump.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/Exp.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/Extensions.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/H.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/IsingXX.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/IsingYY.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/IsingZZ.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/M.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/MZ.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/Measure.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/NativeImports.cs | 0 .../QuantumSimulator.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/Qubit.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/QubitManager.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/R.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/Reset.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/Rx.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/Ry.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/Rz.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/S.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/SWAP.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/SimulatorBase.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/StackTrace.cs | 0 .../{QuantumSimulator => NativeCommonSimulator}/StateDumper.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/T.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/X.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/Y.cs | 0 .../Simulators/{QuantumSimulator => NativeCommonSimulator}/Z.cs | 0 44 files changed, 0 insertions(+), 0 deletions(-) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyControlledX.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyControlledZ.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledH.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledRx.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledRy.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledRz.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledS.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledSAdj.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledSWAP.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledT.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledTAdj.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledX.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledY.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/ApplyUncontrolledZ.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Assert.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/AssertProb.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Dump.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Exp.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Extensions.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/H.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/IsingXX.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/IsingYY.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/IsingZZ.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/M.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/MZ.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Measure.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/NativeImports.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/QuantumSimulator.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Qubit.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/QubitManager.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/R.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Reset.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Rx.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Ry.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Rz.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/S.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/SWAP.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/SimulatorBase.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/StackTrace.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/StateDumper.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/T.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/X.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Y.cs (100%) rename src/Simulation/Simulators/{QuantumSimulator => NativeCommonSimulator}/Z.cs (100%) diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyControlledX.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyControlledX.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyControlledZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyControlledZ.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledH.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledH.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledRx.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledRx.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledRy.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledRy.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledRz.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledRz.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledS.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledS.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledSAdj.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledSAdj.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledSWAP.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledSWAP.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledT.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledT.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledTAdj.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledTAdj.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledX.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledX.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledY.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledY.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/ApplyUncontrolledZ.cs rename to src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Assert.cs b/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Assert.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Assert.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/AssertProb.cs b/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/AssertProb.cs rename to src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Dump.cs b/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Dump.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Dump.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Exp.cs b/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Exp.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Exp.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Extensions.cs b/src/Simulation/Simulators/NativeCommonSimulator/Extensions.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Extensions.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Extensions.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/H.cs b/src/Simulation/Simulators/NativeCommonSimulator/H.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/H.cs rename to src/Simulation/Simulators/NativeCommonSimulator/H.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/IsingXX.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/IsingXX.cs rename to src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/IsingYY.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/IsingYY.cs rename to src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/IsingZZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/IsingZZ.cs rename to src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/M.cs b/src/Simulation/Simulators/NativeCommonSimulator/M.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/M.cs rename to src/Simulation/Simulators/NativeCommonSimulator/M.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/MZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/MZ.cs rename to src/Simulation/Simulators/NativeCommonSimulator/MZ.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Measure.cs b/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Measure.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Measure.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs b/src/Simulation/Simulators/NativeCommonSimulator/NativeImports.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/NativeImports.cs rename to src/Simulation/Simulators/NativeCommonSimulator/NativeImports.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs b/src/Simulation/Simulators/NativeCommonSimulator/QuantumSimulator.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs rename to src/Simulation/Simulators/NativeCommonSimulator/QuantumSimulator.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Qubit.cs b/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Qubit.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/QubitManager.cs b/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/QubitManager.cs rename to src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/R.cs b/src/Simulation/Simulators/NativeCommonSimulator/R.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/R.cs rename to src/Simulation/Simulators/NativeCommonSimulator/R.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Reset.cs b/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Reset.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Reset.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Rx.cs b/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Rx.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Rx.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Ry.cs b/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Ry.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Ry.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Rz.cs b/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Rz.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Rz.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/S.cs b/src/Simulation/Simulators/NativeCommonSimulator/S.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/S.cs rename to src/Simulation/Simulators/NativeCommonSimulator/S.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/SWAP.cs b/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/SWAP.cs rename to src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/SimulatorBase.cs b/src/Simulation/Simulators/NativeCommonSimulator/SimulatorBase.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/SimulatorBase.cs rename to src/Simulation/Simulators/NativeCommonSimulator/SimulatorBase.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/StackTrace.cs b/src/Simulation/Simulators/NativeCommonSimulator/StackTrace.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/StackTrace.cs rename to src/Simulation/Simulators/NativeCommonSimulator/StackTrace.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/StateDumper.cs b/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/StateDumper.cs rename to src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/T.cs b/src/Simulation/Simulators/NativeCommonSimulator/T.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/T.cs rename to src/Simulation/Simulators/NativeCommonSimulator/T.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/X.cs b/src/Simulation/Simulators/NativeCommonSimulator/X.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/X.cs rename to src/Simulation/Simulators/NativeCommonSimulator/X.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Y.cs b/src/Simulation/Simulators/NativeCommonSimulator/Y.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Y.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Y.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/Z.cs b/src/Simulation/Simulators/NativeCommonSimulator/Z.cs similarity index 100% rename from src/Simulation/Simulators/QuantumSimulator/Z.cs rename to src/Simulation/Simulators/NativeCommonSimulator/Z.cs From a6ffffd87324973867e9aab9850599007a55f3cd Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Thu, 7 Oct 2021 17:25:30 -0700 Subject: [PATCH 02/16] Renamed QuantumSimulator.cs to NativeCommonSimulator.cs --- .../{QuantumSimulator.cs => NativeCommonSimulator.cs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/Simulation/Simulators/NativeCommonSimulator/{QuantumSimulator.cs => NativeCommonSimulator.cs} (100%) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/QuantumSimulator.cs b/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/QuantumSimulator.cs rename to src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs From 53380070510e1adec8d557d1ea05a3b3112f995e Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Thu, 7 Oct 2021 17:47:07 -0700 Subject: [PATCH 03/16] Renamed QuantumSimulator to NativeCommonSimulator --- .../NativeCommonSimulator/ApplyControlledX.cs | 2 +- .../NativeCommonSimulator/ApplyControlledZ.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledH.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledRx.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledRy.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledRz.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledS.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledSAdj.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledSWAP.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledT.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledTAdj.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledX.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledY.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledZ.cs | 2 +- .../Simulators/NativeCommonSimulator/Assert.cs | 6 +++--- .../Simulators/NativeCommonSimulator/AssertProb.cs | 6 +++--- .../Simulators/NativeCommonSimulator/Dump.cs | 10 +++++----- .../Simulators/NativeCommonSimulator/Exp.cs | 2 +- .../Simulators/NativeCommonSimulator/H.cs | 2 +- .../Simulators/NativeCommonSimulator/IsingXX.cs | 2 +- .../Simulators/NativeCommonSimulator/IsingYY.cs | 2 +- .../Simulators/NativeCommonSimulator/IsingZZ.cs | 2 +- .../Simulators/NativeCommonSimulator/M.cs | 2 +- .../Simulators/NativeCommonSimulator/MZ.cs | 2 +- .../Simulators/NativeCommonSimulator/Measure.cs | 2 +- .../NativeCommonSimulator/NativeCommonSimulator.cs | 6 +++--- .../NativeCommonSimulator/NativeImports.cs | 2 +- .../Simulators/NativeCommonSimulator/Qubit.cs | 2 +- .../NativeCommonSimulator/QubitManager.cs | 2 +- .../Simulators/NativeCommonSimulator/R.cs | 2 +- .../Simulators/NativeCommonSimulator/Reset.cs | 2 +- .../Simulators/NativeCommonSimulator/Rx.cs | 2 +- .../Simulators/NativeCommonSimulator/Ry.cs | 2 +- .../Simulators/NativeCommonSimulator/Rz.cs | 2 +- .../Simulators/NativeCommonSimulator/S.cs | 2 +- .../Simulators/NativeCommonSimulator/SWAP.cs | 2 +- .../NativeCommonSimulator/StateDumper.cs | 14 +++++++------- .../Simulators/NativeCommonSimulator/T.cs | 2 +- .../Simulators/NativeCommonSimulator/X.cs | 2 +- .../Simulators/NativeCommonSimulator/Y.cs | 2 +- .../Simulators/NativeCommonSimulator/Z.cs | 2 +- 41 files changed, 57 insertions(+), 57 deletions(-) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs index f8c3a68e3ef..e5a1073cbd9 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyControlledX.Body(Qubit control, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs index 1f0ae75acdc..d72433a6659 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyControlledZ.Body(Qubit control, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs index 242d2bfa069..42ce745bc70 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledH.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs index 1881c6fb24b..5ca3da2d60d 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledRx.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs index d06574ea663..49c14326cce 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledRy.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs index a0349868b44..262ee2706d8 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledRz.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs index 3f106e2d5ae..12080de6d48 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledS.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs index 31da980a3b1..080e16e3525 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledSAdj.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs index 733db0889a2..c932bc19c99 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledSWAP.Body(Qubit qubit1, Qubit qubit2) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs index dbbe5b337f5..822c13cb5c0 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledT.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs index fda29c8cd5f..9a2fa746736 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledTAdj.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs index 673ca0742da..77142fdac3a 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledX.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs index 3f1d13c6a53..082a672da2b 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledY.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs index 10d6d31aca8..4577fe99896 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicApplyUncontrolledZ.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs b/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs index fc54ba1fcc1..7863b0c7a29 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs @@ -7,13 +7,13 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { public class QSimAssert : Microsoft.Quantum.Diagnostics.AssertMeasurement { - private QuantumSimulator Simulator { get; } + private NativeCommonSimulator Simulator { get; } - public QSimAssert(QuantumSimulator m) : base(m) + public QSimAssert(NativeCommonSimulator m) : base(m) { this.Simulator = m; } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs b/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs index 955ba22929b..54c2c77c934 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs @@ -7,13 +7,13 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { public class QSimAssertProb : Microsoft.Quantum.Diagnostics.AssertMeasurementProbability { - private QuantumSimulator Simulator { get; } + private NativeCommonSimulator Simulator { get; } - public QSimAssertProb(QuantumSimulator m) : base(m) + public QSimAssertProb(NativeCommonSimulator m) : base(m) { this.Simulator = m; } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs b/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs index d57d0b7dd4a..1fabdf50bf4 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs @@ -8,7 +8,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { /// /// Dumps the wave function for the given qubits into the given target. @@ -65,9 +65,9 @@ QVoid process(Action channel) public class QsimDumpMachine : Quantum.Diagnostics.DumpMachine { - private QuantumSimulator Simulator { get; } + private NativeCommonSimulator Simulator { get; } - public QsimDumpMachine(QuantumSimulator m) : base(m) + public QsimDumpMachine(NativeCommonSimulator m) : base(m) { this.Simulator = m; } @@ -82,9 +82,9 @@ public QsimDumpMachine(QuantumSimulator m) : base(m) public class QSimDumpRegister : Quantum.Diagnostics.DumpRegister { - private QuantumSimulator Simulator { get; } + private NativeCommonSimulator Simulator { get; } - public QSimDumpRegister(QuantumSimulator m) : base(m) + public QSimDumpRegister(NativeCommonSimulator m) : base(m) { this.Simulator = m; } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs b/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs index 9d1b11511f4..fa60240f1ed 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs @@ -7,7 +7,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicExp.Body(IQArray paulis, double angle, IQArray targets) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/H.cs b/src/Simulation/Simulators/NativeCommonSimulator/H.cs index 3df34308f06..dce7f8bc416 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/H.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/H.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicH.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs index f372f9a02de..6be1631eda2 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicIsingXX.Body(double angle, Qubit target1, Qubit target2) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs index c733988a2cd..c635c743843 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicIsingYY.Body(double angle, Qubit target1, Qubit target2) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs index e19c69347d3..a14b71c8f6d 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicIsingZZ.Body(double angle, Qubit target1, Qubit target2) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/M.cs b/src/Simulation/Simulators/NativeCommonSimulator/M.cs index 0777dd05c54..b696e0d4e31 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/M.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/M.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { Result IIntrinsicM.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs index 2d4cdbc4d94..c6e80cada37 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { Result IIntrinsicMZ.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs b/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs index 4ed4696dad0..f9389533435 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs @@ -7,7 +7,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { Result IIntrinsicMeasure.Body(IQArray paulis, IQArray targets) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs b/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs index 2df2bae2bb7..49474414a4a 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs @@ -12,7 +12,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator : SimulatorBase, IQSharpCore, IType1Core, IType2Core, IType3Core, IDisposable + public partial class NativeCommonSimulator : SimulatorBase, IQSharpCore, IType1Core, IType2Core, IType3Core, IDisposable { public const string QSIM_DLL_NAME = "Microsoft.Quantum.Simulator.Runtime"; @@ -36,7 +36,7 @@ public partial class QuantumSimulator : SimulatorBase, IQSharpCore, IType1Core, /// If set to true, the exception is thrown when trying to release qubits not in zero state. /// Seed for the random number generator used by a simulator for measurement outcomes and the Random operation. /// If true, Borrowing qubits will be disabled, and a new qubit will be allocated instead every time borrowing is requested. Performance may improve. - public QuantumSimulator( + public NativeCommonSimulator( bool throwOnReleasingQubitsNotInZeroState = true, UInt32? randomNumberGeneratorSeed = null, bool disableBorrowing = false) @@ -58,7 +58,7 @@ public override string Name { get { - return "Quantum Simulator"; + return "NativeCommonSimulator"; } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/NativeImports.cs b/src/Simulation/Simulators/NativeCommonSimulator/NativeImports.cs index 30b84a41e8d..8767367b2a3 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/NativeImports.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/NativeImports.cs @@ -7,7 +7,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "allocateQubit")] private static extern void AllocateOne(uint id, uint qubit_id); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs b/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs index 02424dfbc3e..f8b2bace79e 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs @@ -8,7 +8,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator : SimulatorBase, IDisposable + public partial class NativeCommonSimulator : SimulatorBase, IDisposable { class QSimQubit : Qubit { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs b/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs index b1bcc7b09fa..73e565712cd 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs @@ -8,7 +8,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { class QSimQubitManager : QubitManager { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/R.cs b/src/Simulation/Simulators/NativeCommonSimulator/R.cs index e0597eb2783..2c0a58d22e3 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/R.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/R.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicR.Body(Pauli pauli, double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs b/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs index a8bce353976..2cd9f9d2c80 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicReset.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs b/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs index 32f65bd2d82..0e97cb8e8db 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicRx.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs b/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs index b76cca3ec86..e7c06486f34 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicRy.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs b/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs index 8f0b259ca95..467370eef60 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicRz.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/S.cs b/src/Simulation/Simulators/NativeCommonSimulator/S.cs index f3a06adab56..e6c2856e5ba 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/S.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/S.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicS.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs b/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs index b0be124a3b7..932c15b9c1c 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs @@ -7,7 +7,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicSWAP.Body(Qubit target1, Qubit target2) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs b/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs index a7c351fad69..106c190ec49 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs @@ -6,11 +6,11 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { /// /// This class allows you to dump the state (wave function) - /// of the QuantumSimulator into a callback function. + /// of the NativeCommonSimulator into a callback function. /// The callback function is triggered for every state basis /// vector in the wavefunction. /// @@ -19,7 +19,7 @@ public abstract class StateDumper /// /// Basic constructor. Takes the simulator to probe. /// - public StateDumper(QuantumSimulator qsim) + public StateDumper(NativeCommonSimulator qsim) { this.Simulator = qsim; } @@ -27,7 +27,7 @@ public StateDumper(QuantumSimulator qsim) /// /// The callback method that will be used to report the amplitude /// of each basis vector of the wave function. - /// The method should return 'true' if the QuantumSimulator should + /// The method should return 'true' if the NativeCommonSimulator should /// continue reporting the state of the remaining basis vectors. /// /// The index of the basis state vector being reported. @@ -37,9 +37,9 @@ public StateDumper(QuantumSimulator qsim) public abstract bool Callback(uint idx, double real, double img); /// - /// The QuantumSimulator being reported. + /// The NativeCommonSimulator being reported. /// - public QuantumSimulator Simulator { get; } + public NativeCommonSimulator Simulator { get; } /// /// Entry method to get the dump of the wave function. @@ -67,7 +67,7 @@ public class SimpleDumper : StateDumper { private int _maxCharsStateId; - public SimpleDumper(QuantumSimulator qsim, Action channel) : base(qsim) + public SimpleDumper(NativeCommonSimulator qsim, Action channel) : base(qsim) { this.Channel = channel; } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/T.cs b/src/Simulation/Simulators/NativeCommonSimulator/T.cs index 25ca2f61d48..fd7c5887c85 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/T.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/T.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicT.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/X.cs b/src/Simulation/Simulators/NativeCommonSimulator/X.cs index 7af68a2b261..1eec0f581ac 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/X.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/X.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicX.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Y.cs b/src/Simulation/Simulators/NativeCommonSimulator/Y.cs index 8858b2202dd..6d3398f1e97 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Y.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Y.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicY.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Z.cs b/src/Simulation/Simulators/NativeCommonSimulator/Z.cs index 026f4f5c6d2..5fa1787470d 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Z.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Z.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator + public partial class NativeCommonSimulator { void IIntrinsicZ.Body(Qubit target) { From 8d57994dad50fa4f3e249cc909ad696cf8479941 Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Thu, 7 Oct 2021 18:14:23 -0700 Subject: [PATCH 04/16] Added QuantumSimulator/QuantumSimulator.cs --- .../QuantumSimulator/QuantumSimulator.cs | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs diff --git a/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs b/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs new file mode 100644 index 00000000000..49bd4f4e28b --- /dev/null +++ b/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using Microsoft.Quantum.Simulation.Core; +using Microsoft.Quantum.Simulation.Common; +using System.Runtime.InteropServices; +using Microsoft.Quantum.Simulation.Simulators.Exceptions; +using Microsoft.Quantum.Intrinsic.Interfaces; +using System.Collections.Generic; +using System.Diagnostics; + +namespace Microsoft.Quantum.Simulation.Simulators +{ + public partial class QuantumSimulator : NativeCommonSimulator + { + /// + /// Creates a an instance of a quantum simulator. + /// + /// If set to true, the exception is thrown when trying to release qubits not in zero state. + /// Seed for the random number generator used by a simulator for measurement outcomes and the Random operation. + /// If true, Borrowing qubits will be disabled, and a new qubit will be allocated instead every time borrowing is requested. Performance may improve. + public QuantumSimulator( + bool throwOnReleasingQubitsNotInZeroState = true, + UInt32? randomNumberGeneratorSeed = null, + bool disableBorrowing = false) + : base(throwOnReleasingQubitsNotInZeroState, + randomNumberGeneratorSeed, + disableBorrowing) + { + } + + public override string Name + { + get + { + return "QuantumSimulator"; + } + } + } +} From 3d4d09e1fbb9fba57cd360eb4fcfa0d3a7241492 Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Thu, 7 Oct 2021 18:49:04 -0700 Subject: [PATCH 05/16] Moved NativeCommonSimulator/NativeImports.cs to QuantumSimulator/NativeImports.cs --- .../{NativeCommonSimulator => QuantumSimulator}/NativeImports.cs | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/Simulation/Simulators/{NativeCommonSimulator => QuantumSimulator}/NativeImports.cs (100%) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/NativeImports.cs b/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/NativeImports.cs rename to src/Simulation/Simulators/QuantumSimulator/NativeImports.cs From 34a5aadea38b53edfd21f403695eed103a999c87 Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Thu, 7 Oct 2021 18:51:37 -0700 Subject: [PATCH 06/16] Minor renaming --- src/Simulation/Simulators/QuantumSimulator/NativeImports.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs b/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs index 8767367b2a3..30b84a41e8d 100644 --- a/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs +++ b/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs @@ -7,7 +7,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class QuantumSimulator { [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "allocateQubit")] private static extern void AllocateOne(uint id, uint qubit_id); From 01507774a0af1705da0b0b8760d1781cec86c14e Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Wed, 13 Oct 2021 13:23:21 -0700 Subject: [PATCH 07/16] Adjusted teh quantum commands --- .../NativeCommonSimulator/ApplyControlledX.cs | 2 +- .../NativeCommonSimulator/ApplyControlledZ.cs | 2 +- .../ApplyUncontrolledH.cs | 2 +- .../ApplyUncontrolledRx.cs | 2 +- .../ApplyUncontrolledRy.cs | 2 +- .../ApplyUncontrolledRz.cs | 2 +- .../ApplyUncontrolledS.cs | 2 +- .../ApplyUncontrolledSAdj.cs | 2 +- .../ApplyUncontrolledSWAP.cs | 6 +- .../ApplyUncontrolledT.cs | 2 +- .../ApplyUncontrolledTAdj.cs | 2 +- .../ApplyUncontrolledX.cs | 2 +- .../ApplyUncontrolledY.cs | 2 +- .../ApplyUncontrolledZ.cs | 2 +- .../NativeCommonSimulator/Assert.cs | 6 +- .../NativeCommonSimulator/AssertProb.cs | 3 +- .../Simulators/NativeCommonSimulator/Dump.cs | 29 ++-- .../Simulators/NativeCommonSimulator/Exp.cs | 7 +- .../Simulators/NativeCommonSimulator/H.cs | 8 +- .../NativeCommonSimulator/IsingXX.cs | 4 +- .../NativeCommonSimulator/IsingYY.cs | 4 +- .../NativeCommonSimulator/IsingZZ.cs | 4 +- .../Simulators/NativeCommonSimulator/M.cs | 4 +- .../Simulators/NativeCommonSimulator/MZ.cs | 2 +- .../NativeCommonSimulator/Measure.cs | 4 +- .../NativeCommonSimulator.cs | 44 +----- .../Simulators/NativeCommonSimulator/Qubit.cs | 11 +- .../NativeCommonSimulator/QubitManager.cs | 32 ++-- .../Simulators/NativeCommonSimulator/R.cs | 7 +- .../Simulators/NativeCommonSimulator/Reset.cs | 4 +- .../Simulators/NativeCommonSimulator/Rx.cs | 4 +- .../Simulators/NativeCommonSimulator/Ry.cs | 4 +- .../Simulators/NativeCommonSimulator/Rz.cs | 4 +- .../Simulators/NativeCommonSimulator/S.cs | 13 +- .../Simulators/NativeCommonSimulator/SWAP.cs | 12 +- .../NativeCommonSimulator/StateDumper.cs | 9 +- .../Simulators/NativeCommonSimulator/T.cs | 13 +- .../Simulators/NativeCommonSimulator/X.cs | 7 +- .../Simulators/NativeCommonSimulator/Y.cs | 7 +- .../Simulators/NativeCommonSimulator/Z.cs | 7 +- .../Simulators/QuantumSimulator/Dump.cs | 44 ++++++ .../QuantumSimulator/NativeImports.cs | 73 +++++---- .../QuantumSimulator/NativeWrappers.cs | 145 ++++++++++++++++++ .../QuantumSimulator/QuantumSimulator.cs | 12 +- 44 files changed, 387 insertions(+), 172 deletions(-) create mode 100644 src/Simulation/Simulators/QuantumSimulator/Dump.cs create mode 100644 src/Simulation/Simulators/QuantumSimulator/NativeWrappers.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs index e5a1073cbd9..b73c1ce530c 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyControlledX.Body(Qubit control, Qubit target) { this.CheckQubits(new QArray(new Qubit[]{ control, target })); - MCX(this.Id, 1, new uint[]{(uint)control.Id}, (uint)target.Id); + MCX(1, new uint[]{(uint)control.Id}, (uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs index d72433a6659..4e6b20b1bfb 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyControlledZ.Body(Qubit control, Qubit target) { this.CheckQubits(new QArray(new Qubit[]{ control, target })); - MCZ(this.Id, 1, new uint[]{(uint)control.Id}, (uint)target.Id); + MCZ(1, new uint[]{(uint)control.Id}, (uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs index 42ce745bc70..21fa6cebf07 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledH.Body(Qubit target) { this.CheckQubit(target); - H(this.Id, (uint)target.Id); + H((uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs index 5ca3da2d60d..a6213c833e9 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledRx.Body(double angle, Qubit target) { this.CheckQubit(target, nameof(target)); CheckAngle(angle); - R(this.Id, Pauli.PauliX, angle, (uint)target.Id); + R(Pauli.PauliX, angle, (uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs index 49c14326cce..e51c1af90e1 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledRy.Body(double angle, Qubit target) { this.CheckQubit(target, nameof(target)); CheckAngle(angle); - R(this.Id, Pauli.PauliY, angle, (uint)target.Id); + R(Pauli.PauliY, angle, (uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs index 262ee2706d8..0e2940eadb7 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledRz.Body(double angle, Qubit target) { this.CheckQubit(target, nameof(target)); CheckAngle(angle); - R(this.Id, Pauli.PauliZ, angle, (uint)target.Id); + R(Pauli.PauliZ, angle, (uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs index 12080de6d48..f8ce42f916a 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledS.Body(Qubit target) { this.CheckQubit(target); - S(this.Id, (uint)target.Id); + S((uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs index 080e16e3525..5932771c4e5 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledSAdj.Body(Qubit target) { this.CheckQubit(target); - AdjS(this.Id, (uint)target.Id); + AdjS((uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs index c932bc19c99..d64b17adcec 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs @@ -16,9 +16,9 @@ void IIntrinsicApplyUncontrolledSWAP.Body(Qubit qubit1, Qubit qubit2) this.CheckQubits(new QArray(new Qubit[]{ qubit1, qubit2 })); - MCX(this.Id, 1, new uint[]{(uint)qubit1.Id}, (uint)qubit2.Id); - MCX(this.Id, 1, new uint[]{(uint)qubit2.Id}, (uint)qubit1.Id); - MCX(this.Id, 1, new uint[]{(uint)qubit1.Id}, (uint)qubit2.Id); + MCX(1, new uint[]{(uint)qubit1.Id}, (uint)qubit2.Id); + MCX(1, new uint[]{(uint)qubit2.Id}, (uint)qubit1.Id); + MCX(1, new uint[]{(uint)qubit1.Id}, (uint)qubit2.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs index 822c13cb5c0..e40736130bc 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledT.Body(Qubit target) { this.CheckQubit(target); - T(this.Id, (uint)target.Id); + T((uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs index 9a2fa746736..d32383aa85d 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledTAdj.Body(Qubit target) { this.CheckQubit(target); - AdjT(this.Id, (uint)target.Id); + AdjT((uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs index 77142fdac3a..f4f29356975 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledX.Body(Qubit target) { this.CheckQubit(target); - X(this.Id, (uint)target.Id); + X((uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs index 082a672da2b..02b996b71e6 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledY.Body(Qubit target) { this.CheckQubit(target); - Y(this.Id, (uint)target.Id); + Y((uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs index 4577fe99896..060720654cd 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs @@ -12,7 +12,7 @@ void IIntrinsicApplyUncontrolledZ.Body(Qubit target) { this.CheckQubit(target); - Z(this.Id, (uint)target.Id); + Z((uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs b/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs index 7863b0c7a29..bb8f84708d8 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs @@ -9,7 +9,9 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { - public class QSimAssert : Microsoft.Quantum.Diagnostics.AssertMeasurement + protected abstract double JointEnsembleProbability(uint n, Pauli[] b, uint[] q); + + public class QSimAssert : Microsoft.Quantum.Diagnostics.AssertMeasurement // TODO(rokuzmin): QSimAssert is never used? { private NativeCommonSimulator Simulator { get; } @@ -32,7 +34,7 @@ public QSimAssert(NativeCommonSimulator m) : base(m) var tolerance = 1.0e-10; var expectedPr = result == Result.Zero ? 0.0 : 1.0; - var ensemblePr = JointEnsembleProbability(this.Simulator.Id, (uint)paulis.Length, paulis.ToArray(), qubits.GetIds()); + var ensemblePr = this.Simulator.JointEnsembleProbability((uint)paulis.Length, paulis.ToArray(), qubits.GetIds()); if (Abs(ensemblePr - expectedPr) > tolerance) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs b/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs index 54c2c77c934..23be1c122c3 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs @@ -9,6 +9,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + // TODO(rokuzmin): QSimAssertProb is never used? public class QSimAssertProb : Microsoft.Quantum.Diagnostics.AssertMeasurementProbability { private NativeCommonSimulator Simulator { get; } @@ -38,7 +39,7 @@ public QSimAssertProb(NativeCommonSimulator m) : base(m) expectedPr = 1 - expectedPr; } - var ensemblePr = JointEnsembleProbability(Simulator.Id, (uint)paulis.Length, paulis.ToArray(), qubits.GetIds()); + var ensemblePr = this.Simulator.JointEnsembleProbability((uint)paulis.Length, paulis.ToArray(), qubits.GetIds()); if (Abs(ensemblePr - expectedPr) > tol) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs b/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs index 1fabdf50bf4..a7f9fef0da4 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs @@ -10,41 +10,30 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected virtual QVoid process(Action channel, IQArray? qubits) + { + return QVoid.Instance; + } + /// /// Dumps the wave function for the given qubits into the given target. /// If the target is QVoid or an empty string, it dumps it to the console /// using the `Message` function, otherwise it dumps the content into a file /// with the given name. /// If the given qubits is null, it dumps the entire wave function, otherwise - /// it attemps to create the wave function or the resulting subsystem; if it fails + /// it attempts to create the wave function or the resulting subsystem; if it fails /// because the qubits are entangled with some external qubit, it just generates a message. /// protected virtual QVoid Dump(T target, IQArray? qubits = null) { var filename = (target is QVoid) ? "" : target.ToString(); - - QVoid process(Action channel) - { - var ids = qubits?.Select(q => (uint)q.Id).ToArray() ?? QubitIds; - - var dumper = new SimpleDumper(this, channel); - channel($"# wave function for qubits with ids (least to most significant): {string.Join(";", ids)}"); - - if (!dumper.Dump(qubits)) - { - channel("## Qubits were entangled with an external qubit. Cannot dump corresponding wave function. ##"); - } - - return QVoid.Instance; - } - var logMessage = this.Get, Microsoft.Quantum.Intrinsic.Message>(); // If no file provided, use `Message` to generate the message into the console; if (string.IsNullOrWhiteSpace(filename)) { var op = this.Get, Microsoft.Quantum.Intrinsic.Message>(); - return process((msg) => op.Apply(msg)); + return process((msg) => op.Apply(msg), qubits); } else { @@ -52,7 +41,7 @@ QVoid process(Action channel) { using (var file = new StreamWriter(filename)) { - return process(file.WriteLine); + return process(file.WriteLine, qubits); } } catch (Exception e) @@ -63,6 +52,7 @@ QVoid process(Action channel) } } + // TODO(rokuzmin): QsimDumpMachine is never used? public class QsimDumpMachine : Quantum.Diagnostics.DumpMachine { private NativeCommonSimulator Simulator { get; } @@ -80,6 +70,7 @@ public QsimDumpMachine(NativeCommonSimulator m) : base(m) }; } + // TODO(rokuzmin): QSimDumpRegister is never used? public class QSimDumpRegister : Quantum.Diagnostics.DumpRegister { private NativeCommonSimulator Simulator { get; } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs b/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs index fa60240f1ed..47f7d5d2a2d 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs @@ -9,6 +9,9 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected abstract void Exp(uint n, Pauli[] paulis, double angle, uint[] ids); + protected abstract void MCExp(uint n, Pauli[] paulis, double angle, uint nc, uint[] ctrls, uint[] ids); + void IIntrinsicExp.Body(IQArray paulis, double angle, IQArray targets) { this.CheckQubits(targets); @@ -19,7 +22,7 @@ void IIntrinsicExp.Body(IQArray paulis, double angle, IQArray targ throw new InvalidOperationException($"Both input arrays for Exp (paulis, targets), must be of same size."); } - Exp(this.Id, (uint)paulis.Length, paulis.ToArray(), angle, targets.GetIds()); + Exp((uint)paulis.Length, paulis.ToArray(), angle, targets.GetIds()); } void IIntrinsicExp.AdjointBody(IQArray paulis, double angle, IQArray targets) @@ -39,7 +42,7 @@ void IIntrinsicExp.ControlledBody(IQArray controls, IQArray paulis SafeControlled(controls, () => ((IIntrinsicExp)this).Body(paulis, angle, targets), - (count, ids) => MCExp(this.Id, (uint)paulis.Length, paulis.ToArray(), angle, count, ids, targets.GetIds())); + (count, ids) => MCExp((uint)paulis.Length, paulis.ToArray(), angle, count, ids, targets.GetIds())); } void IIntrinsicExp.ControlledAdjointBody(IQArray controls, IQArray paulis, double angle, IQArray targets) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/H.cs b/src/Simulation/Simulators/NativeCommonSimulator/H.cs index dce7f8bc416..cda489230fe 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/H.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/H.cs @@ -8,11 +8,15 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + + protected abstract void H(uint qubit); + protected abstract void MCH(uint count, uint[] ctrls, uint qubit); + void IIntrinsicH.Body(Qubit target) { this.CheckQubit(target); - H(this.Id, (uint)target.Id); + H((uint)target.Id); } void IIntrinsicH.ControlledBody(IQArray controls, Qubit target) @@ -21,7 +25,7 @@ void IIntrinsicH.ControlledBody(IQArray controls, Qubit target) SafeControlled(controls, () => ((IIntrinsicH)this).Body(target), - (count, ids) => MCH(this.Id, count, ids, (uint)target.Id)); + (count, ids) => MCH(count, ids, (uint)target.Id)); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs index 6be1631eda2..7cd11dddb89 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs @@ -15,7 +15,7 @@ void IIntrinsicIsingXX.Body(double angle, Qubit target1, Qubit target2) CheckAngle(angle); this.CheckQubits(targets); - Exp(this.Id, (uint)targets.Length, paulis, angle * 2.0, targets.GetIds()); + Exp((uint)targets.Length, paulis, angle * 2.0, targets.GetIds()); } void IIntrinsicIsingXX.AdjointBody(double angle, Qubit target1, Qubit target2) @@ -36,7 +36,7 @@ void IIntrinsicIsingXX.ControlledBody(IQArray controls, double angle, Qub CheckAngle(angle); this.CheckQubits(QArray.Add(controls, targets)); - MCExp(this.Id, (uint)targets.Length, paulis, angle * 2.0, (uint)controls.Length, controls.GetIds(), targets.GetIds()); + MCExp((uint)targets.Length, paulis, angle * 2.0, (uint)controls.Length, controls.GetIds(), targets.GetIds()); } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs index c635c743843..f5fbf0a26c4 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs @@ -15,7 +15,7 @@ void IIntrinsicIsingYY.Body(double angle, Qubit target1, Qubit target2) CheckAngle(angle); this.CheckQubits(targets); - Exp(this.Id, (uint)targets.Length, paulis, angle * 2.0, targets.GetIds()); + Exp((uint)targets.Length, paulis, angle * 2.0, targets.GetIds()); } void IIntrinsicIsingYY.AdjointBody(double angle, Qubit target1, Qubit target2) @@ -36,7 +36,7 @@ void IIntrinsicIsingYY.ControlledBody(IQArray controls, double angle, Qub CheckAngle(angle); this.CheckQubits(QArray.Add(controls, targets)); - MCExp(this.Id, (uint)targets.Length, paulis, angle * 2.0, (uint)controls.Length, controls.GetIds(), targets.GetIds()); + MCExp((uint)targets.Length, paulis, angle * 2.0, (uint)controls.Length, controls.GetIds(), targets.GetIds()); } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs index a14b71c8f6d..4ff7ec163d8 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs @@ -15,7 +15,7 @@ void IIntrinsicIsingZZ.Body(double angle, Qubit target1, Qubit target2) CheckAngle(angle); this.CheckQubits(targets); - Exp(this.Id, (uint)targets.Length, paulis, angle * 2.0, targets.GetIds()); + Exp((uint)targets.Length, paulis, angle * 2.0, targets.GetIds()); } void IIntrinsicIsingZZ.AdjointBody(double angle, Qubit target1, Qubit target2) @@ -36,7 +36,7 @@ void IIntrinsicIsingZZ.ControlledBody(IQArray controls, double angle, Qub CheckAngle(angle); this.CheckQubits(QArray.Add(controls, targets)); - MCExp(this.Id, (uint)targets.Length, paulis, angle * 2.0, (uint)controls.Length, controls.GetIds(), targets.GetIds()); + MCExp((uint)targets.Length, paulis, angle * 2.0, (uint)controls.Length, controls.GetIds(), targets.GetIds()); } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/M.cs b/src/Simulation/Simulators/NativeCommonSimulator/M.cs index b696e0d4e31..55de11162a3 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/M.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/M.cs @@ -8,12 +8,14 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected abstract uint M(uint q); + Result IIntrinsicM.Body(Qubit target) { this.CheckQubit(target); //setting qubit as measured to allow for release target.IsMeasured = true; - return M(this.Id, (uint)target.Id).ToResult(); + return M((uint)target.Id).ToResult(); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs index c6e80cada37..31e4dd602e7 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs @@ -13,7 +13,7 @@ Result IIntrinsicMZ.Body(Qubit target) this.CheckQubit(target); //setting qubit as measured to allow for release target.IsMeasured = true; - return M(this.Id, (uint)target.Id).ToResult(); + return M((uint)target.Id).ToResult(); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs b/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs index f9389533435..fc695b00d1f 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs @@ -9,6 +9,8 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected abstract uint Measure(uint n, Pauli[] b, uint[] ids); + Result IIntrinsicMeasure.Body(IQArray paulis, IQArray targets) { this.CheckQubits(targets); @@ -22,7 +24,7 @@ Result IIntrinsicMeasure.Body(IQArray paulis, IQArray targets) // that qubit as measured. targets[0].IsMeasured = true; } - return Measure(this.Id, (uint)paulis.Length, paulis.ToArray(), targets.GetIds()).ToResult(); + return Measure((uint)paulis.Length, paulis.ToArray(), targets.GetIds()).ToResult(); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs b/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs index 49474414a4a..9a9356cc0b1 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs @@ -12,24 +12,8 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator : SimulatorBase, IQSharpCore, IType1Core, IType2Core, IType3Core, IDisposable + public abstract partial class NativeCommonSimulator : SimulatorBase, IQSharpCore, IType1Core, IType2Core, IType3Core, IDisposable { - public const string QSIM_DLL_NAME = "Microsoft.Quantum.Simulator.Runtime"; - - private delegate void IdsCallback(uint id); - - [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "DumpIds")] - private static extern void sim_QubitsIds(uint id, IdsCallback callback); - - [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "init")] - private static extern uint Init(); - - [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "destroy")] - private static extern uint Destroy(uint id); - - [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "seed")] - private static extern void SetSeed(uint id, UInt32 seedValue); - /// /// Creates a an instance of a quantum simulator. /// @@ -45,14 +29,11 @@ public NativeCommonSimulator( (int?)randomNumberGeneratorSeed ) { - Id = Init(); - // Make sure that the same seed used by the built-in System.Random - // instance is also used by the native simulator itself. - SetSeed(this.Id, (uint)this.Seed); - ((QSimQubitManager)QubitManager).Init(Id); + Debug.Assert(this.QubitManager != null); + ((QSimQubitManager)this.QubitManager).Simulator = this; } - public uint Id { get; } + public uint Id { get; protected set; } public override string Name { @@ -190,20 +171,6 @@ bool[] CheckQubits(IQArray ctrls, IQArray targets) return used; } - /// - /// Returns the list of the qubits' ids currently allocated in the simulator. - /// - public uint[] QubitIds - { - get - { - var ids = new List(); - sim_QubitsIds(this.Id, ids.Add); - Debug.Assert(ids.Count == this.QubitManager.AllocatedQubitsCount); - return ids.ToArray(); - } - } - static void SafeControlled(IQArray ctrls, Action noControlsAction, Action controlledAction) { if (ctrls == null || ctrls.Length == 0) @@ -217,9 +184,8 @@ static void SafeControlled(IQArray ctrls, Action noControlsAction, Action } } - public void Dispose() + public virtual void Dispose() { - Destroy(this.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs b/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs index f8b2bace79e..e75a3caa10a 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs @@ -14,16 +14,15 @@ class QSimQubit : Qubit { [DebuggerBrowsable(DebuggerBrowsableState.Never)] private static Pauli[] PAULI_Z = new Pauli[] { Pauli.PauliZ }; + + private NativeCommonSimulator Simulator { get; } - public QSimQubit(int id, uint simulatorId) : base(id) + public QSimQubit(int id, NativeCommonSimulator sim) : base(id) { - this.SimulatorId = simulatorId; + this.Simulator = sim; } - [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public uint SimulatorId { get; } - - public double Probability => JointEnsembleProbability(this.SimulatorId, 1, PAULI_Z, new uint[] { (uint)this.Id }); + public double Probability => this.Simulator.JointEnsembleProbability(1, PAULI_Z, new uint[] { (uint)this.Id }); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs b/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs index 73e565712cd..fc5fad5c593 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs @@ -10,11 +10,16 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { - class QSimQubitManager : QubitManager + protected abstract void AllocateOne(uint qubit_id); + protected abstract bool ReleaseOne(uint qubit_id); + + protected class QSimQubitManager : QubitManager { readonly bool throwOnReleasingQubitsNotInZeroState; - public uint SimulatorId { get; private set; } + public NativeCommonSimulator? Simulator { get; set; } // Must not be nullable (and public). But we cannot + // initialize it properly _during construction_. We initialize it _after construction_. + // That is why it is nullable and public. public QSimQubitManager(bool throwOnReleasingQubitsNotInZeroState = true, long qubitCapacity = 32, bool mayExtendCapacity = true, bool disableBorrowing = false) : base(qubitCapacity, mayExtendCapacity, disableBorrowing) @@ -22,11 +27,6 @@ public QSimQubitManager(bool throwOnReleasingQubitsNotInZeroState = true, long q this.throwOnReleasingQubitsNotInZeroState = throwOnReleasingQubitsNotInZeroState; } - public void Init(uint simulatorId) - { - this.SimulatorId = simulatorId; - } - /// /// The max number used as qubit id so far. /// @@ -34,20 +34,25 @@ public void Init(uint simulatorId) public override Qubit CreateQubitObject(long id) { - Debug.Assert(id < 50, "Using a qubit id > 50. This is a full-state simulator! Validating ids uniquenes might start becoming slow."); + Debug.Assert(id < 50, "Using a qubit id > 50. This is a full-state simulator! Validating ids uniqueness might start becoming slow."); if (id >= this.MaxId) { this.MaxId = id + 1; } - return new QSimQubit((int)id, SimulatorId); + Debug.Assert(Simulator != null); + return new QSimQubit((int)id, Simulator); } - protected override Qubit Allocate(bool usedOnlyForBorrowing) + protected override Qubit? Allocate(bool usedOnlyForBorrowing) { - Qubit qubit = base.Allocate(usedOnlyForBorrowing); - if (qubit != null) { AllocateOne(this.SimulatorId, (uint)qubit.Id); } + Qubit? qubit = base.Allocate(usedOnlyForBorrowing); + if (qubit != null) + { + Debug.Assert(Simulator != null); + Simulator.AllocateOne((uint)qubit.Id); + } return qubit; } @@ -56,7 +61,8 @@ protected override void Release(Qubit qubit, bool wasUsedOnlyForBorrowing) base.Release(qubit, wasUsedOnlyForBorrowing); if (qubit != null) { - bool isReleasedQubitZero = ReleaseOne(this.SimulatorId, (uint)qubit.Id); + Debug.Assert(Simulator != null); + bool isReleasedQubitZero = Simulator.ReleaseOne((uint)qubit.Id); if (!(isReleasedQubitZero || qubit.IsMeasured) && throwOnReleasingQubitsNotInZeroState) { throw new ReleasedQubitsAreNotInZeroState(); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/R.cs b/src/Simulation/Simulators/NativeCommonSimulator/R.cs index 2c0a58d22e3..f9520bc3194 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/R.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/R.cs @@ -8,12 +8,15 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected abstract void R(Pauli basis, double angle, uint qubit); + protected abstract void MCR(Pauli basis, double angle, uint count, uint[] ctrls, uint qubit); + void IIntrinsicR.Body(Pauli pauli, double angle, Qubit target) { this.CheckQubit(target); CheckAngle(angle); - R(this.Id, pauli, angle, (uint)target.Id); + R(pauli, angle, (uint)target.Id); } void IIntrinsicR.AdjointBody(Pauli pauli, double angle, Qubit target) @@ -28,7 +31,7 @@ void IIntrinsicR.ControlledBody(IQArray controls, Pauli pauli, double ang SafeControlled(controls, () => ((IIntrinsicR)this).Body(pauli, angle, target), - (count, ids) => MCR(this.Id, pauli, angle, count, ids, (uint)target.Id)); + (count, ids) => MCR(pauli, angle, count, ids, (uint)target.Id)); } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs b/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs index 2cd9f9d2c80..7ff40c72e20 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs @@ -13,10 +13,10 @@ void IIntrinsicReset.Body(Qubit target) // The native simulator doesn't have a reset operation, so simulate // it via an M follow by a conditional X. this.CheckQubit(target); - var res = M(this.Id, (uint)target.Id); + var res = M((uint)target.Id); if (res == 1) { - X(this.Id, (uint)target.Id); + X((uint)target.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs b/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs index 0e97cb8e8db..413d1a92965 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs @@ -12,7 +12,7 @@ void IIntrinsicRx.Body(double angle, Qubit target) { this.CheckQubit(target, nameof(target)); CheckAngle(angle); - R(this.Id, Pauli.PauliX, angle, (uint)target.Id); + R(Pauli.PauliX, angle, (uint)target.Id); } void IIntrinsicRx.AdjointBody(double angle, Qubit target) @@ -24,7 +24,7 @@ void IIntrinsicRx.ControlledBody(IQArray controls, double angle, Qubit ta { this.CheckQubits(controls, target); CheckAngle(angle); - MCR(this.Id, Pauli.PauliX, angle, (uint)controls.Length, controls.GetIds(), (uint)target.Id); + MCR(Pauli.PauliX, angle, (uint)controls.Length, controls.GetIds(), (uint)target.Id); } void IIntrinsicRx.ControlledAdjointBody(IQArray controls, double angle, Qubit target) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs b/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs index e7c06486f34..5d986baea93 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs @@ -12,7 +12,7 @@ void IIntrinsicRy.Body(double angle, Qubit target) { this.CheckQubit(target, nameof(target)); CheckAngle(angle); - R(this.Id, Pauli.PauliY, angle, (uint)target.Id); + R(Pauli.PauliY, angle, (uint)target.Id); } void IIntrinsicRy.AdjointBody(double angle, Qubit target) @@ -24,7 +24,7 @@ void IIntrinsicRy.ControlledBody(IQArray controls, double angle, Qubit ta { this.CheckQubits(controls, target); CheckAngle(angle); - MCR(this.Id, Pauli.PauliY, angle, (uint)controls.Length, controls.GetIds(), (uint)target.Id); + MCR(Pauli.PauliY, angle, (uint)controls.Length, controls.GetIds(), (uint)target.Id); } void IIntrinsicRy.ControlledAdjointBody(IQArray controls, double angle, Qubit target) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs b/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs index 467370eef60..1135e7bd171 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs @@ -12,7 +12,7 @@ void IIntrinsicRz.Body(double angle, Qubit target) { this.CheckQubit(target, nameof(target)); CheckAngle(angle); - R(this.Id, Pauli.PauliZ, angle, (uint)target.Id); + R(Pauli.PauliZ, angle, (uint)target.Id); } void IIntrinsicRz.AdjointBody(double angle, Qubit target) @@ -24,7 +24,7 @@ void IIntrinsicRz.ControlledBody(IQArray controls, double angle, Qubit ta { this.CheckQubits(controls, target); CheckAngle(angle); - MCR(this.Id, Pauli.PauliZ, angle, (uint)controls.Length, controls.GetIds(), (uint)target.Id); + MCR(Pauli.PauliZ, angle, (uint)controls.Length, controls.GetIds(), (uint)target.Id); } void IIntrinsicRz.ControlledAdjointBody(IQArray controls, double angle, Qubit target) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/S.cs b/src/Simulation/Simulators/NativeCommonSimulator/S.cs index e6c2856e5ba..ba585efa5dc 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/S.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/S.cs @@ -8,11 +8,16 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected abstract void S(uint qubit); + protected abstract void AdjS(uint qubit); + protected abstract void MCS(uint count, uint[] ctrls, uint qubit); + protected abstract void MCAdjS(uint count, uint[] ctrls, uint qubit); + void IIntrinsicS.Body(Qubit target) { this.CheckQubit(target); - S(this.Id, (uint)target.Id); + S((uint)target.Id); } void IIntrinsicS.ControlledBody(IQArray controls, Qubit target) @@ -21,14 +26,14 @@ void IIntrinsicS.ControlledBody(IQArray controls, Qubit target) SafeControlled(controls, () => ((IIntrinsicS)this).Body(target), - (count, ids) => MCS(this.Id, count, ids, (uint)target.Id)); + (count, ids) => MCS(count, ids, (uint)target.Id)); } void IIntrinsicS.AdjointBody(Qubit target) { this.CheckQubit(target); - AdjS(this.Id, (uint)target.Id); + AdjS((uint)target.Id); } void IIntrinsicS.ControlledAdjointBody(IQArray controls, Qubit target) @@ -37,7 +42,7 @@ void IIntrinsicS.ControlledAdjointBody(IQArray controls, Qubit target) SafeControlled(controls, () => ((IIntrinsicS)this).AdjointBody(target), - (count, ids) => MCAdjS(this.Id, count, ids, (uint)target.Id)); + (count, ids) => MCAdjS(count, ids, (uint)target.Id)); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs b/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs index 932c15b9c1c..2f33f936f25 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs @@ -15,9 +15,9 @@ void IIntrinsicSWAP.Body(Qubit target1, Qubit target2) var ctrls2 = new QArray(target2); this.CheckQubits(ctrls1, target2); - MCX(this.Id, (uint)ctrls1.Length, ctrls1.GetIds(), (uint)target2.Id); - MCX(this.Id, (uint)ctrls2.Length, ctrls2.GetIds(), (uint)target1.Id); - MCX(this.Id, (uint)ctrls1.Length, ctrls1.GetIds(), (uint)target2.Id); + MCX((uint)ctrls1.Length, ctrls1.GetIds(), (uint)target2.Id); + MCX((uint)ctrls2.Length, ctrls2.GetIds(), (uint)target1.Id); + MCX((uint)ctrls1.Length, ctrls1.GetIds(), (uint)target2.Id); } void IIntrinsicSWAP.ControlledBody(IQArray controls, Qubit target1, Qubit target2) @@ -32,9 +32,9 @@ void IIntrinsicSWAP.ControlledBody(IQArray controls, Qubit target1, Qubit var ctrls_2 = QArray.Add(controls, new QArray(target2)); this.CheckQubits(ctrls_1, target2); - MCX(this.Id, (uint)ctrls_1.Length, ctrls_1.GetIds(), (uint)target2.Id); - MCX(this.Id, (uint)ctrls_2.Length, ctrls_2.GetIds(), (uint)target1.Id); - MCX(this.Id, (uint)ctrls_1.Length, ctrls_1.GetIds(), (uint)target2.Id); + MCX((uint)ctrls_1.Length, ctrls_1.GetIds(), (uint)target2.Id); + MCX((uint)ctrls_2.Length, ctrls_2.GetIds(), (uint)target1.Id); + MCX((uint)ctrls_1.Length, ctrls_1.GetIds(), (uint)target2.Id); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs b/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs index 106c190ec49..4735806cccc 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs @@ -8,6 +8,11 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected delegate bool DumpCallback(uint idx, double real, double img); + + protected abstract void sim_Dump(DumpCallback callback); + protected abstract bool sim_DumpQubits(uint count, uint[] ids, DumpCallback callback); + /// /// This class allows you to dump the state (wave function) /// of the NativeCommonSimulator into a callback function. @@ -48,13 +53,13 @@ public virtual bool Dump(IQArray? qubits = null) { if (qubits == null) { - sim_Dump(Simulator.Id, Callback); + this.Simulator.sim_Dump(Callback); return true; } else { var ids = qubits.GetIds(); - return sim_DumpQubits(Simulator.Id, (uint)ids.Length, ids, Callback); + return this.Simulator.sim_DumpQubits((uint)ids.Length, ids, Callback); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/T.cs b/src/Simulation/Simulators/NativeCommonSimulator/T.cs index fd7c5887c85..7277fae069a 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/T.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/T.cs @@ -8,11 +8,16 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected abstract void T(uint qubit); + protected abstract void AdjT(uint qubit); + protected abstract void MCT(uint count, uint[] ctrls, uint qubit); + protected abstract void MCAdjT(uint count, uint[] ctrls, uint qubit); + void IIntrinsicT.Body(Qubit target) { this.CheckQubit(target); - T(this.Id, (uint)target.Id); + T((uint)target.Id); } void IIntrinsicT.ControlledBody(IQArray controls, Qubit target) @@ -21,14 +26,14 @@ void IIntrinsicT.ControlledBody(IQArray controls, Qubit target) SafeControlled(controls, () => ((IIntrinsicT)this).Body(target), - (count, ids) => MCT(this.Id, count, ids, (uint)target.Id)); + (count, ids) => MCT(count, ids, (uint)target.Id)); } void IIntrinsicT.AdjointBody(Qubit target) { this.CheckQubit(target); - AdjT(this.Id, (uint)target.Id); + AdjT((uint)target.Id); } void IIntrinsicT.ControlledAdjointBody(IQArray controls, Qubit target) @@ -37,7 +42,7 @@ void IIntrinsicT.ControlledAdjointBody(IQArray controls, Qubit target) SafeControlled(controls, () => ((IIntrinsicT)this).AdjointBody(target), - (count, ids) => MCAdjT(this.Id, count, ids, (uint)target.Id)); + (count, ids) => MCAdjT(count, ids, (uint)target.Id)); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/X.cs b/src/Simulation/Simulators/NativeCommonSimulator/X.cs index 1eec0f581ac..16f282cc1c2 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/X.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/X.cs @@ -8,11 +8,14 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected abstract void X(uint qubit); + protected abstract void MCX(uint count, uint[] ctrls, uint qubit); + void IIntrinsicX.Body(Qubit target) { this.CheckQubit(target); - X(this.Id, (uint)target.Id); + X((uint)target.Id); } void IIntrinsicX.ControlledBody(IQArray controls, Qubit target) @@ -21,7 +24,7 @@ void IIntrinsicX.ControlledBody(IQArray controls, Qubit target) SafeControlled(controls, () => ((IIntrinsicX)this).Body(target), - (count, ids) => MCX(this.Id, count, ids, (uint)target.Id)); + (count, ids) => MCX(count, ids, (uint)target.Id)); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Y.cs b/src/Simulation/Simulators/NativeCommonSimulator/Y.cs index 6d3398f1e97..1ba4e23db2f 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Y.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Y.cs @@ -8,11 +8,14 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected abstract void Y(uint qubit); + protected abstract void MCY(uint count, uint[] ctrls, uint qubit); + void IIntrinsicY.Body(Qubit target) { this.CheckQubit(target); - Y(this.Id, (uint)target.Id); + Y((uint)target.Id); } void IIntrinsicY.ControlledBody(IQArray controls, Qubit target) @@ -21,7 +24,7 @@ void IIntrinsicY.ControlledBody(IQArray controls, Qubit target) SafeControlled(controls, () => ((IIntrinsicY)this).Body(target), - (count, ids) => MCY(this.Id, count, ids, (uint)target.Id)); + (count, ids) => MCY(count, ids, (uint)target.Id)); } } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Z.cs b/src/Simulation/Simulators/NativeCommonSimulator/Z.cs index 5fa1787470d..ae94d9b56dc 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Z.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Z.cs @@ -8,11 +8,14 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class NativeCommonSimulator { + protected abstract void Z(uint qubit); + protected abstract void MCZ(uint count, uint[] ctrls, uint qubit); + void IIntrinsicZ.Body(Qubit target) { this.CheckQubit(target); - Z(this.Id, (uint)target.Id); + Z((uint)target.Id); } void IIntrinsicZ.ControlledBody(IQArray controls, Qubit target) @@ -21,7 +24,7 @@ void IIntrinsicZ.ControlledBody(IQArray controls, Qubit target) SafeControlled(controls, () => ((IIntrinsicZ)this).Body(target), - (count, ids) => MCZ(this.Id, count, ids, (uint)target.Id)); + (count, ids) => MCZ(count, ids, (uint)target.Id)); } } } diff --git a/src/Simulation/Simulators/QuantumSimulator/Dump.cs b/src/Simulation/Simulators/QuantumSimulator/Dump.cs new file mode 100644 index 00000000000..3e414204905 --- /dev/null +++ b/src/Simulation/Simulators/QuantumSimulator/Dump.cs @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Diagnostics; +using System.Collections.Generic; +using System.Linq; +using Microsoft.Quantum.Simulation.Core; + +namespace Microsoft.Quantum.Simulation.Simulators +{ + public partial class QuantumSimulator + { + /// + /// Returns the list of the qubits' ids currently allocated in the simulator. + /// + public uint[] QubitIds + { + get + { + var ids = new List(); + sim_QubitsIdsNative(this.Id, ids.Add); + Debug.Assert(this.QubitManager != null); + Debug.Assert(ids.Count == this.QubitManager.AllocatedQubitsCount); + return ids.ToArray(); + } + } + + protected override QVoid process(Action channel, IQArray? qubits) + { + var ids = qubits?.Select(q => (uint)q.Id).ToArray() ?? QubitIds; + + var dumper = new SimpleDumper(this, channel); + channel($"# wave function for qubits with ids (least to most significant): {string.Join(";", ids)}"); + + if (!dumper.Dump(qubits)) + { + channel("## Qubits were entangled with an external qubit. Cannot dump corresponding wave function. ##"); + } + + return QVoid.Instance; + } + } +} diff --git a/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs b/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs index 30b84a41e8d..0f38b7fd866 100644 --- a/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs +++ b/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs @@ -9,90 +9,103 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class QuantumSimulator { + private const string QSIM_DLL_NAME = "Microsoft.Quantum.Simulator.Runtime"; + + private delegate void IdsCallback(uint id); + [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "DumpIds")] + private static extern void sim_QubitsIdsNative(uint id, IdsCallback callback); + + [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "init")] + private static extern uint InitNative(); + + [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "destroy")] + private static extern uint DestroyNative(uint id); + + [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "seed")] + private static extern void SetSeedNative(uint id, UInt32 seedValue); + [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "allocateQubit")] - private static extern void AllocateOne(uint id, uint qubit_id); + private static extern void AllocateOneNative(uint id, uint qubit_id); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "release")] - private static extern bool ReleaseOne(uint id, uint qubit_id); + private static extern bool ReleaseOneNative(uint id, uint qubit_id); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "Exp")] - private static extern void Exp(uint id, uint n, Pauli[] paulis, double angle, uint[] ids); + private static extern void ExpNative(uint id, uint n, Pauli[] paulis, double angle, uint[] ids); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MCExp")] - private static extern void MCExp(uint id, uint n, Pauli[] paulis, double angle, uint nc, uint[] ctrls, uint[] ids); + private static extern void MCExpNative(uint id, uint n, Pauli[] paulis, double angle, uint nc, uint[] ctrls, uint[] ids); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "H")] - private static extern void H(uint id, uint qubit); + private static extern void HNative(uint id, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MCH")] - private static extern void MCH(uint id, uint count, uint[] ctrls, uint qubit); + private static extern void MCHNative(uint id, uint count, uint[] ctrls, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "M")] - private static extern uint M(uint id, uint q); + private static extern uint MNative(uint id, uint q); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "Measure")] - private static extern uint Measure(uint id, uint n, Pauli[] b, uint[] ids); + private static extern uint MeasureNative(uint id, uint n, Pauli[] b, uint[] ids); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "R")] - private static extern void R(uint id, Pauli basis, double angle, uint qubit); + private static extern void RNative(uint id, Pauli basis, double angle, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MCR")] - private static extern void MCR(uint id, Pauli basis, double angle, uint count, uint[] ctrls, uint qubit); + private static extern void MCRNative(uint id, Pauli basis, double angle, uint count, uint[] ctrls, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "S")] - private static extern void S(uint id, uint qubit); + private static extern void SNative(uint id, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "AdjS")] - private static extern void AdjS(uint id, uint qubit); + private static extern void AdjSNative(uint id, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MCS")] - private static extern void MCS(uint id, uint count, uint[] ctrls, uint qubit); + private static extern void MCSNative(uint id, uint count, uint[] ctrls, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MCAdjS")] - private static extern void MCAdjS(uint id, uint count, uint[] ctrls, uint qubit); + private static extern void MCAdjSNative(uint id, uint count, uint[] ctrls, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "T")] - private static extern void T(uint id, uint qubit); + private static extern void TNative(uint id, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "AdjT")] - private static extern void AdjT(uint id, uint qubit); + private static extern void AdjTNative(uint id, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MCT")] - private static extern void MCT(uint id, uint count, uint[] ctrls, uint qubit); + private static extern void MCTNative(uint id, uint count, uint[] ctrls, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MCAdjT")] - private static extern void MCAdjT(uint id, uint count, uint[] ctrls, uint qubit); + private static extern void MCAdjTNative(uint id, uint count, uint[] ctrls, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "X")] - private static extern void X(uint id, uint qubit); + private static extern void XNative(uint id, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MCX")] - private static extern void MCX(uint id, uint count, uint[] ctrls, uint qubit); + private static extern void MCXNative(uint id, uint count, uint[] ctrls, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "Y")] - private static extern void Y(uint id, uint qubit); + private static extern void YNative(uint id, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MCY")] - private static extern void MCY(uint id, uint count, uint[] ctrls, uint qubit); + private static extern void MCYNative(uint id, uint count, uint[] ctrls, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "Z")] - private static extern void Z(uint id, uint qubit); + private static extern void ZNative(uint id, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MCZ")] - private static extern void MCZ(uint id, uint count, uint[] ctrls, uint qubit); - - private delegate bool DumpCallback(uint idx, double real, double img); + private static extern void MCZNative(uint id, uint count, uint[] ctrls, uint qubit); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "Dump")] - private static extern void sim_Dump(uint id, DumpCallback callback); + private static extern void sim_DumpNative(uint id, DumpCallback callback); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "DumpQubits")] - private static extern bool sim_DumpQubits(uint id, uint cout, uint[] ids, DumpCallback callback); + private static extern bool sim_DumpQubitsNative(uint id, uint cout, uint[] ids, DumpCallback callback); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "JointEnsembleProbability")] - private static extern double JointEnsembleProbability(uint id, uint n, Pauli[] b, uint[] q); + private static extern double JointEnsembleProbabilityNative(uint id, uint n, Pauli[] b, uint[] q); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "random_choice")] - private static extern Int64 random_choice(uint id, Int64 size, double[] p); + private static extern Int64 random_choiceNative(uint id, Int64 size, double[] p); } } \ No newline at end of file diff --git a/src/Simulation/Simulators/QuantumSimulator/NativeWrappers.cs b/src/Simulation/Simulators/QuantumSimulator/NativeWrappers.cs new file mode 100644 index 00000000000..4ad08dc2a3d --- /dev/null +++ b/src/Simulation/Simulators/QuantumSimulator/NativeWrappers.cs @@ -0,0 +1,145 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + + +using Microsoft.Quantum.Simulation.Core; + +namespace Microsoft.Quantum.Simulation.Simulators +{ + public partial class QuantumSimulator + { + protected override void MCX(uint count, uint[] ctrls, uint qubit) + { + MCXNative(this.Id, count, ctrls, qubit); + } + + protected override void MCZ(uint count, uint[] ctrls, uint qubit) + { + MCZNative(this.Id, count, ctrls, qubit); + } + + protected override void H(uint qubit) + { + HNative(this.Id, qubit); + } + protected override void MCH(uint count, uint[] ctrls, uint qubit) + { + MCHNative(this.Id, count, ctrls, qubit); + } + + protected override void R(Pauli basis, double angle, uint qubit) + { + RNative(this.Id, basis, angle, qubit); + } + + protected override void S(uint qubit) + { + SNative(this.Id, qubit); + } + + protected override void AdjS(uint qubit) + { + AdjSNative(this.Id, qubit); + } + + protected override void T(uint qubit) + { + TNative(this.Id, qubit); + } + + protected override void AdjT(uint qubit) + { + AdjTNative(this.Id, qubit); + } + + protected override void X(uint qubit) + { + XNative(this.Id, qubit); + } + + protected override void Y(uint qubit) + { + YNative(this.Id, qubit); + } + + protected override void Z(uint qubit) + { + ZNative(this.Id, qubit); + } + + protected override double JointEnsembleProbability(uint n, Pauli[] b, uint[] q) + { + return JointEnsembleProbabilityNative(this.Id, n, b, q); + } + + protected override void Exp(uint n, Pauli[] paulis, double angle, uint[] ids) + { + ExpNative(this.Id, n, paulis, angle, ids); + } + + protected override void MCExp(uint n, Pauli[] paulis, double angle, uint nc, uint[] ctrls, uint[] ids) + { + MCExpNative(this.Id, n, paulis, angle, nc, ctrls, ids); + } + + protected override uint M(uint q) + { + return MNative(this.Id, q); + } + + protected override uint Measure(uint n, Pauli[] b, uint[] ids) + { + return MeasureNative(this.Id, n, b, ids); + } + + protected override void MCR(Pauli basis, double angle, uint count, uint[] ctrls, uint qubit) + { + MCRNative(this.Id, basis, angle, count, ctrls, qubit); + } + + protected override void MCS(uint count, uint[] ctrls, uint qubit) + { + MCSNative(this.Id, count, ctrls, qubit); + } + + protected override void MCAdjS(uint count, uint[] ctrls, uint qubit) + { + MCAdjSNative(this.Id, count, ctrls, qubit); + } + + protected override void sim_Dump(DumpCallback callback) + { + sim_DumpNative(this.Id, callback); + } + + protected override bool sim_DumpQubits(uint count, uint[] ids, DumpCallback callback) + { + return sim_DumpQubitsNative(this.Id, count, ids, callback); + } + + protected override void MCT(uint count, uint[] ctrls, uint qubit) + { + MCTNative(this.Id, count, ctrls, qubit); + } + + protected override void MCAdjT(uint count, uint[] ctrls, uint qubit) + { + MCAdjTNative(this.Id, count, ctrls, qubit); + } + + protected override void MCY(uint count, uint[] ctrls, uint qubit) + { + MCYNative(this.Id, count, ctrls, qubit); + } + + protected override void AllocateOne(uint qubit_id) + { + AllocateOneNative(this.Id, qubit_id); + } + protected override bool ReleaseOne(uint qubit_id) + { + return ReleaseOneNative(this.Id, qubit_id); + } + + } +} \ No newline at end of file diff --git a/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs b/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs index 49bd4f4e28b..9fe75bd1701 100644 --- a/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs +++ b/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs @@ -28,13 +28,23 @@ public QuantumSimulator( randomNumberGeneratorSeed, disableBorrowing) { + Id = InitNative(); + // Make sure that the same seed used by the built-in System.Random + // instance is also used by the native simulator itself. + SetSeedNative(this.Id, (uint)this.Seed); + //((QSimQubitManager)QubitManager).Init(Id); + } + + public override void Dispose() + { + DestroyNative(this.Id); } public override string Name { get { - return "QuantumSimulator"; + return "Quantum Simulator"; } } } From 8297a8499e601888119c2f051bd771cf9146c38b Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Wed, 13 Oct 2021 13:48:02 -0700 Subject: [PATCH 08/16] Made NativeCommonSimulator ctor private protected --- .../Simulators/NativeCommonSimulator/NativeCommonSimulator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs b/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs index 9a9356cc0b1..d6e484f9b61 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs @@ -20,7 +20,7 @@ public abstract partial class NativeCommonSimulator : SimulatorBase, IQSharpCore /// If set to true, the exception is thrown when trying to release qubits not in zero state. /// Seed for the random number generator used by a simulator for measurement outcomes and the Random operation. /// If true, Borrowing qubits will be disabled, and a new qubit will be allocated instead every time borrowing is requested. Performance may improve. - public NativeCommonSimulator( + private protected NativeCommonSimulator( bool throwOnReleasingQubitsNotInZeroState = true, UInt32? randomNumberGeneratorSeed = null, bool disableBorrowing = false) From 6b3b334feaba0d2251a4aef7ef28d6ec8e62bf75 Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Wed, 13 Oct 2021 13:52:10 -0700 Subject: [PATCH 09/16] Renamed the NativeCommonSimulator class to CommonNativeSimulator --- .../NativeCommonSimulator/ApplyControlledX.cs | 2 +- .../NativeCommonSimulator/ApplyControlledZ.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledH.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledRx.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledRy.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledRz.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledS.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledSAdj.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledSWAP.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledT.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledTAdj.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledX.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledY.cs | 2 +- .../NativeCommonSimulator/ApplyUncontrolledZ.cs | 2 +- .../Simulators/NativeCommonSimulator/Assert.cs | 6 +++--- .../Simulators/NativeCommonSimulator/AssertProb.cs | 6 +++--- .../Simulators/NativeCommonSimulator/Dump.cs | 10 +++++----- src/Simulation/Simulators/NativeCommonSimulator/Exp.cs | 2 +- src/Simulation/Simulators/NativeCommonSimulator/H.cs | 2 +- .../Simulators/NativeCommonSimulator/IsingXX.cs | 2 +- .../Simulators/NativeCommonSimulator/IsingYY.cs | 2 +- .../Simulators/NativeCommonSimulator/IsingZZ.cs | 2 +- src/Simulation/Simulators/NativeCommonSimulator/M.cs | 2 +- src/Simulation/Simulators/NativeCommonSimulator/MZ.cs | 2 +- .../Simulators/NativeCommonSimulator/Measure.cs | 2 +- .../NativeCommonSimulator/NativeCommonSimulator.cs | 6 +++--- .../Simulators/NativeCommonSimulator/Qubit.cs | 6 +++--- .../Simulators/NativeCommonSimulator/QubitManager.cs | 4 ++-- src/Simulation/Simulators/NativeCommonSimulator/R.cs | 2 +- .../Simulators/NativeCommonSimulator/Reset.cs | 2 +- src/Simulation/Simulators/NativeCommonSimulator/Rx.cs | 2 +- src/Simulation/Simulators/NativeCommonSimulator/Ry.cs | 2 +- src/Simulation/Simulators/NativeCommonSimulator/Rz.cs | 2 +- src/Simulation/Simulators/NativeCommonSimulator/S.cs | 2 +- .../Simulators/NativeCommonSimulator/SWAP.cs | 2 +- .../Simulators/NativeCommonSimulator/StateDumper.cs | 8 ++++---- src/Simulation/Simulators/NativeCommonSimulator/T.cs | 2 +- src/Simulation/Simulators/NativeCommonSimulator/X.cs | 2 +- src/Simulation/Simulators/NativeCommonSimulator/Y.cs | 2 +- src/Simulation/Simulators/NativeCommonSimulator/Z.cs | 2 +- .../Simulators/QuantumSimulator/QuantumSimulator.cs | 2 +- 41 files changed, 57 insertions(+), 57 deletions(-) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs index b73c1ce530c..2e7a5944f3c 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyControlledX.Body(Qubit control, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs index 4e6b20b1bfb..760f0d8fe5e 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyControlledZ.Body(Qubit control, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs index 21fa6cebf07..6dbafb55d77 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledH.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs index a6213c833e9..ecbf61e66eb 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledRx.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs index e51c1af90e1..77400a58075 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledRy.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs index 0e2940eadb7..31de582fd84 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledRz.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs index f8ce42f916a..9abcb19f4c4 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledS.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs index 5932771c4e5..f50b097225c 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledSAdj.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs index d64b17adcec..f6042967b00 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledSWAP.Body(Qubit qubit1, Qubit qubit2) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs index e40736130bc..dce12faedef 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledT.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs index d32383aa85d..818447f16bd 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledTAdj.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs index f4f29356975..f40fd124921 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledX.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs index 02b996b71e6..aa52dff46b8 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledY.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs index 060720654cd..f47bec9f114 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicApplyUncontrolledZ.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs b/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs index bb8f84708d8..bd3d83749b2 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs @@ -7,15 +7,15 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract double JointEnsembleProbability(uint n, Pauli[] b, uint[] q); public class QSimAssert : Microsoft.Quantum.Diagnostics.AssertMeasurement // TODO(rokuzmin): QSimAssert is never used? { - private NativeCommonSimulator Simulator { get; } + private CommonNativeSimulator Simulator { get; } - public QSimAssert(NativeCommonSimulator m) : base(m) + public QSimAssert(CommonNativeSimulator m) : base(m) { this.Simulator = m; } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs b/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs index 23be1c122c3..db4c98a32f0 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs @@ -7,14 +7,14 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { // TODO(rokuzmin): QSimAssertProb is never used? public class QSimAssertProb : Microsoft.Quantum.Diagnostics.AssertMeasurementProbability { - private NativeCommonSimulator Simulator { get; } + private CommonNativeSimulator Simulator { get; } - public QSimAssertProb(NativeCommonSimulator m) : base(m) + public QSimAssertProb(CommonNativeSimulator m) : base(m) { this.Simulator = m; } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs b/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs index a7f9fef0da4..664686611ea 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs @@ -8,7 +8,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected virtual QVoid process(Action channel, IQArray? qubits) { @@ -55,9 +55,9 @@ protected virtual QVoid Dump(T target, IQArray? qubits = null) // TODO(rokuzmin): QsimDumpMachine is never used? public class QsimDumpMachine : Quantum.Diagnostics.DumpMachine { - private NativeCommonSimulator Simulator { get; } + private CommonNativeSimulator Simulator { get; } - public QsimDumpMachine(NativeCommonSimulator m) : base(m) + public QsimDumpMachine(CommonNativeSimulator m) : base(m) { this.Simulator = m; } @@ -73,9 +73,9 @@ public QsimDumpMachine(NativeCommonSimulator m) : base(m) // TODO(rokuzmin): QSimDumpRegister is never used? public class QSimDumpRegister : Quantum.Diagnostics.DumpRegister { - private NativeCommonSimulator Simulator { get; } + private CommonNativeSimulator Simulator { get; } - public QSimDumpRegister(NativeCommonSimulator m) : base(m) + public QSimDumpRegister(CommonNativeSimulator m) : base(m) { this.Simulator = m; } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs b/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs index 47f7d5d2a2d..f6c70ea9c27 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs @@ -7,7 +7,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract void Exp(uint n, Pauli[] paulis, double angle, uint[] ids); protected abstract void MCExp(uint n, Pauli[] paulis, double angle, uint nc, uint[] ctrls, uint[] ids); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/H.cs b/src/Simulation/Simulators/NativeCommonSimulator/H.cs index cda489230fe..fce8e5eeac0 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/H.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/H.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract void H(uint qubit); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs index 7cd11dddb89..5f114db803a 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicIsingXX.Body(double angle, Qubit target1, Qubit target2) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs index f5fbf0a26c4..1aa000ec554 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicIsingYY.Body(double angle, Qubit target1, Qubit target2) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs index 4ff7ec163d8..ffdef477228 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicIsingZZ.Body(double angle, Qubit target1, Qubit target2) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/M.cs b/src/Simulation/Simulators/NativeCommonSimulator/M.cs index 55de11162a3..637e972f43b 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/M.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/M.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract uint M(uint q); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs b/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs index 31e4dd602e7..2110bf96ff8 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { Result IIntrinsicMZ.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs b/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs index fc695b00d1f..b345c89e4c0 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs @@ -7,7 +7,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract uint Measure(uint n, Pauli[] b, uint[] ids); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs b/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs index d6e484f9b61..dda46fc992a 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs @@ -12,7 +12,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public abstract partial class NativeCommonSimulator : SimulatorBase, IQSharpCore, IType1Core, IType2Core, IType3Core, IDisposable + public abstract partial class CommonNativeSimulator : SimulatorBase, IQSharpCore, IType1Core, IType2Core, IType3Core, IDisposable { /// /// Creates a an instance of a quantum simulator. @@ -20,7 +20,7 @@ public abstract partial class NativeCommonSimulator : SimulatorBase, IQSharpCore /// If set to true, the exception is thrown when trying to release qubits not in zero state. /// Seed for the random number generator used by a simulator for measurement outcomes and the Random operation. /// If true, Borrowing qubits will be disabled, and a new qubit will be allocated instead every time borrowing is requested. Performance may improve. - private protected NativeCommonSimulator( + private protected CommonNativeSimulator( bool throwOnReleasingQubitsNotInZeroState = true, UInt32? randomNumberGeneratorSeed = null, bool disableBorrowing = false) @@ -39,7 +39,7 @@ public override string Name { get { - return "NativeCommonSimulator"; + return "CommonNativeSimulator"; } } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs b/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs index e75a3caa10a..76ab9222808 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs @@ -8,16 +8,16 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator : SimulatorBase, IDisposable + public partial class CommonNativeSimulator : SimulatorBase, IDisposable { class QSimQubit : Qubit { [DebuggerBrowsable(DebuggerBrowsableState.Never)] private static Pauli[] PAULI_Z = new Pauli[] { Pauli.PauliZ }; - private NativeCommonSimulator Simulator { get; } + private CommonNativeSimulator Simulator { get; } - public QSimQubit(int id, NativeCommonSimulator sim) : base(id) + public QSimQubit(int id, CommonNativeSimulator sim) : base(id) { this.Simulator = sim; } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs b/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs index fc5fad5c593..580d0d2fc10 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs @@ -8,7 +8,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract void AllocateOne(uint qubit_id); protected abstract bool ReleaseOne(uint qubit_id); @@ -17,7 +17,7 @@ protected class QSimQubitManager : QubitManager { readonly bool throwOnReleasingQubitsNotInZeroState; - public NativeCommonSimulator? Simulator { get; set; } // Must not be nullable (and public). But we cannot + public CommonNativeSimulator? Simulator { get; set; } // Must not be nullable (and public). But we cannot // initialize it properly _during construction_. We initialize it _after construction_. // That is why it is nullable and public. diff --git a/src/Simulation/Simulators/NativeCommonSimulator/R.cs b/src/Simulation/Simulators/NativeCommonSimulator/R.cs index f9520bc3194..dcf57b0dcf8 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/R.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/R.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract void R(Pauli basis, double angle, uint qubit); protected abstract void MCR(Pauli basis, double angle, uint count, uint[] ctrls, uint qubit); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs b/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs index 7ff40c72e20..065ba0a615d 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicReset.Body(Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs b/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs index 413d1a92965..4d6a6449e64 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicRx.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs b/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs index 5d986baea93..710d805bcd8 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicRy.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs b/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs index 1135e7bd171..10ea0196fea 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicRz.Body(double angle, Qubit target) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/S.cs b/src/Simulation/Simulators/NativeCommonSimulator/S.cs index ba585efa5dc..5a130c6c834 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/S.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/S.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract void S(uint qubit); protected abstract void AdjS(uint qubit); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs b/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs index 2f33f936f25..b444dba0d03 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs @@ -7,7 +7,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { void IIntrinsicSWAP.Body(Qubit target1, Qubit target2) { diff --git a/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs b/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs index 4735806cccc..f4f01e879d2 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected delegate bool DumpCallback(uint idx, double real, double img); @@ -24,7 +24,7 @@ public abstract class StateDumper /// /// Basic constructor. Takes the simulator to probe. /// - public StateDumper(NativeCommonSimulator qsim) + public StateDumper(CommonNativeSimulator qsim) { this.Simulator = qsim; } @@ -44,7 +44,7 @@ public StateDumper(NativeCommonSimulator qsim) /// /// The NativeCommonSimulator being reported. /// - public NativeCommonSimulator Simulator { get; } + public CommonNativeSimulator Simulator { get; } /// /// Entry method to get the dump of the wave function. @@ -72,7 +72,7 @@ public class SimpleDumper : StateDumper { private int _maxCharsStateId; - public SimpleDumper(NativeCommonSimulator qsim, Action channel) : base(qsim) + public SimpleDumper(CommonNativeSimulator qsim, Action channel) : base(qsim) { this.Channel = channel; } diff --git a/src/Simulation/Simulators/NativeCommonSimulator/T.cs b/src/Simulation/Simulators/NativeCommonSimulator/T.cs index 7277fae069a..00304283932 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/T.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/T.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract void T(uint qubit); protected abstract void AdjT(uint qubit); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/X.cs b/src/Simulation/Simulators/NativeCommonSimulator/X.cs index 16f282cc1c2..c7b35f5822e 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/X.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/X.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract void X(uint qubit); protected abstract void MCX(uint count, uint[] ctrls, uint qubit); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Y.cs b/src/Simulation/Simulators/NativeCommonSimulator/Y.cs index 1ba4e23db2f..11552d0a20c 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Y.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Y.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract void Y(uint qubit); protected abstract void MCY(uint count, uint[] ctrls, uint qubit); diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Z.cs b/src/Simulation/Simulators/NativeCommonSimulator/Z.cs index ae94d9b56dc..e4a326f0171 100644 --- a/src/Simulation/Simulators/NativeCommonSimulator/Z.cs +++ b/src/Simulation/Simulators/NativeCommonSimulator/Z.cs @@ -6,7 +6,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class NativeCommonSimulator + public partial class CommonNativeSimulator { protected abstract void Z(uint qubit); protected abstract void MCZ(uint count, uint[] ctrls, uint qubit); diff --git a/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs b/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs index 9fe75bd1701..a6a89750887 100644 --- a/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs +++ b/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs @@ -12,7 +12,7 @@ namespace Microsoft.Quantum.Simulation.Simulators { - public partial class QuantumSimulator : NativeCommonSimulator + public partial class QuantumSimulator : CommonNativeSimulator { /// /// Creates a an instance of a quantum simulator. From c08d1b025f974971e263c71177ed7352cebcd6fc Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Wed, 13 Oct 2021 13:54:03 -0700 Subject: [PATCH 10/16] Renamed NativeCommonSimulator.cs to CommonNativeSimulator.cs --- .../{NativeCommonSimulator.cs => CommonNativeSimulator.cs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/Simulation/Simulators/NativeCommonSimulator/{NativeCommonSimulator.cs => CommonNativeSimulator.cs} (100%) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs b/src/Simulation/Simulators/NativeCommonSimulator/CommonNativeSimulator.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/NativeCommonSimulator.cs rename to src/Simulation/Simulators/NativeCommonSimulator/CommonNativeSimulator.cs From 08090960ca15fac47fd84231d75f27481a43de23 Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Wed, 13 Oct 2021 13:54:59 -0700 Subject: [PATCH 11/16] Renamed NativeCommonSimulator dir to CommonNativeSimulator --- .../ApplyControlledX.cs | 0 .../ApplyControlledZ.cs | 0 .../ApplyUncontrolledH.cs | 0 .../ApplyUncontrolledRx.cs | 0 .../ApplyUncontrolledRy.cs | 0 .../ApplyUncontrolledRz.cs | 0 .../ApplyUncontrolledS.cs | 0 .../ApplyUncontrolledSAdj.cs | 0 .../ApplyUncontrolledSWAP.cs | 0 .../ApplyUncontrolledT.cs | 0 .../ApplyUncontrolledTAdj.cs | 0 .../ApplyUncontrolledX.cs | 0 .../ApplyUncontrolledY.cs | 0 .../ApplyUncontrolledZ.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Assert.cs | 0 .../AssertProb.cs | 0 .../CommonNativeSimulator.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Dump.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Exp.cs | 0 .../Extensions.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/H.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/IsingXX.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/IsingYY.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/IsingZZ.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/M.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/MZ.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Measure.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Qubit.cs | 0 .../QubitManager.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/R.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Reset.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Rx.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Ry.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Rz.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/S.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/SWAP.cs | 0 .../SimulatorBase.cs | 0 .../StackTrace.cs | 0 .../StateDumper.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/T.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/X.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Y.cs | 0 .../{NativeCommonSimulator => CommonNativeSimulator}/Z.cs | 0 43 files changed, 0 insertions(+), 0 deletions(-) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyControlledX.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyControlledZ.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledH.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledRx.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledRy.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledRz.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledS.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledSAdj.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledSWAP.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledT.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledTAdj.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledX.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledY.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/ApplyUncontrolledZ.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Assert.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/AssertProb.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/CommonNativeSimulator.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Dump.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Exp.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Extensions.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/H.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/IsingXX.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/IsingYY.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/IsingZZ.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/M.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/MZ.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Measure.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Qubit.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/QubitManager.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/R.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Reset.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Rx.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Ry.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Rz.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/S.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/SWAP.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/SimulatorBase.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/StackTrace.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/StateDumper.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/T.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/X.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Y.cs (100%) rename src/Simulation/Simulators/{NativeCommonSimulator => CommonNativeSimulator}/Z.cs (100%) diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyControlledX.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledX.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyControlledX.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyControlledZ.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyControlledZ.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyControlledZ.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledH.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledH.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledH.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledRx.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRx.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledRx.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledRy.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRy.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledRy.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledRz.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledRz.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledRz.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledS.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledS.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledS.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledSAdj.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSAdj.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledSAdj.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledSWAP.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledSWAP.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledSWAP.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledT.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledT.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledT.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledTAdj.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledTAdj.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledTAdj.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledX.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledX.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledX.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledY.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledY.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledY.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs b/src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledZ.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/ApplyUncontrolledZ.cs rename to src/Simulation/Simulators/CommonNativeSimulator/ApplyUncontrolledZ.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Assert.cs b/src/Simulation/Simulators/CommonNativeSimulator/Assert.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Assert.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Assert.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs b/src/Simulation/Simulators/CommonNativeSimulator/AssertProb.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/AssertProb.cs rename to src/Simulation/Simulators/CommonNativeSimulator/AssertProb.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/CommonNativeSimulator.cs b/src/Simulation/Simulators/CommonNativeSimulator/CommonNativeSimulator.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/CommonNativeSimulator.cs rename to src/Simulation/Simulators/CommonNativeSimulator/CommonNativeSimulator.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Dump.cs b/src/Simulation/Simulators/CommonNativeSimulator/Dump.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Dump.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Dump.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Exp.cs b/src/Simulation/Simulators/CommonNativeSimulator/Exp.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Exp.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Exp.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Extensions.cs b/src/Simulation/Simulators/CommonNativeSimulator/Extensions.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Extensions.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Extensions.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/H.cs b/src/Simulation/Simulators/CommonNativeSimulator/H.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/H.cs rename to src/Simulation/Simulators/CommonNativeSimulator/H.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs b/src/Simulation/Simulators/CommonNativeSimulator/IsingXX.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/IsingXX.cs rename to src/Simulation/Simulators/CommonNativeSimulator/IsingXX.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs b/src/Simulation/Simulators/CommonNativeSimulator/IsingYY.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/IsingYY.cs rename to src/Simulation/Simulators/CommonNativeSimulator/IsingYY.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs b/src/Simulation/Simulators/CommonNativeSimulator/IsingZZ.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/IsingZZ.cs rename to src/Simulation/Simulators/CommonNativeSimulator/IsingZZ.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/M.cs b/src/Simulation/Simulators/CommonNativeSimulator/M.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/M.cs rename to src/Simulation/Simulators/CommonNativeSimulator/M.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/MZ.cs b/src/Simulation/Simulators/CommonNativeSimulator/MZ.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/MZ.cs rename to src/Simulation/Simulators/CommonNativeSimulator/MZ.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Measure.cs b/src/Simulation/Simulators/CommonNativeSimulator/Measure.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Measure.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Measure.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs b/src/Simulation/Simulators/CommonNativeSimulator/Qubit.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Qubit.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Qubit.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs b/src/Simulation/Simulators/CommonNativeSimulator/QubitManager.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/QubitManager.cs rename to src/Simulation/Simulators/CommonNativeSimulator/QubitManager.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/R.cs b/src/Simulation/Simulators/CommonNativeSimulator/R.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/R.cs rename to src/Simulation/Simulators/CommonNativeSimulator/R.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Reset.cs b/src/Simulation/Simulators/CommonNativeSimulator/Reset.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Reset.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Reset.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Rx.cs b/src/Simulation/Simulators/CommonNativeSimulator/Rx.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Rx.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Rx.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Ry.cs b/src/Simulation/Simulators/CommonNativeSimulator/Ry.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Ry.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Ry.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Rz.cs b/src/Simulation/Simulators/CommonNativeSimulator/Rz.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Rz.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Rz.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/S.cs b/src/Simulation/Simulators/CommonNativeSimulator/S.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/S.cs rename to src/Simulation/Simulators/CommonNativeSimulator/S.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs b/src/Simulation/Simulators/CommonNativeSimulator/SWAP.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/SWAP.cs rename to src/Simulation/Simulators/CommonNativeSimulator/SWAP.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/SimulatorBase.cs b/src/Simulation/Simulators/CommonNativeSimulator/SimulatorBase.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/SimulatorBase.cs rename to src/Simulation/Simulators/CommonNativeSimulator/SimulatorBase.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/StackTrace.cs b/src/Simulation/Simulators/CommonNativeSimulator/StackTrace.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/StackTrace.cs rename to src/Simulation/Simulators/CommonNativeSimulator/StackTrace.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs b/src/Simulation/Simulators/CommonNativeSimulator/StateDumper.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/StateDumper.cs rename to src/Simulation/Simulators/CommonNativeSimulator/StateDumper.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/T.cs b/src/Simulation/Simulators/CommonNativeSimulator/T.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/T.cs rename to src/Simulation/Simulators/CommonNativeSimulator/T.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/X.cs b/src/Simulation/Simulators/CommonNativeSimulator/X.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/X.cs rename to src/Simulation/Simulators/CommonNativeSimulator/X.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Y.cs b/src/Simulation/Simulators/CommonNativeSimulator/Y.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Y.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Y.cs diff --git a/src/Simulation/Simulators/NativeCommonSimulator/Z.cs b/src/Simulation/Simulators/CommonNativeSimulator/Z.cs similarity index 100% rename from src/Simulation/Simulators/NativeCommonSimulator/Z.cs rename to src/Simulation/Simulators/CommonNativeSimulator/Z.cs From 61f9fa8abfe2dec5132d3e45b142613fb82be739 Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Wed, 13 Oct 2021 15:17:42 -0700 Subject: [PATCH 12/16] Minor fixes. --- src/Simulation/Simulators/CommonNativeSimulator/H.cs | 1 - .../Simulators/CommonNativeSimulator/StateDumper.cs | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Simulation/Simulators/CommonNativeSimulator/H.cs b/src/Simulation/Simulators/CommonNativeSimulator/H.cs index fce8e5eeac0..5fd213e161f 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/H.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/H.cs @@ -8,7 +8,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract void H(uint qubit); protected abstract void MCH(uint count, uint[] ctrls, uint qubit); diff --git a/src/Simulation/Simulators/CommonNativeSimulator/StateDumper.cs b/src/Simulation/Simulators/CommonNativeSimulator/StateDumper.cs index f4f01e879d2..04712849d60 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/StateDumper.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/StateDumper.cs @@ -15,7 +15,7 @@ public partial class CommonNativeSimulator /// /// This class allows you to dump the state (wave function) - /// of the NativeCommonSimulator into a callback function. + /// of the CommonNativeSimulator into a callback function. /// The callback function is triggered for every state basis /// vector in the wavefunction. /// @@ -32,7 +32,7 @@ public StateDumper(CommonNativeSimulator qsim) /// /// The callback method that will be used to report the amplitude /// of each basis vector of the wave function. - /// The method should return 'true' if the NativeCommonSimulator should + /// The method should return 'true' if the CommonNativeSimulator should /// continue reporting the state of the remaining basis vectors. /// /// The index of the basis state vector being reported. @@ -42,7 +42,7 @@ public StateDumper(CommonNativeSimulator qsim) public abstract bool Callback(uint idx, double real, double img); /// - /// The NativeCommonSimulator being reported. + /// The CommonNativeSimulator being reported. /// public CommonNativeSimulator Simulator { get; } From 277da4eca5307603d82792d1b5a95a1d0481c277 Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Thu, 14 Oct 2021 12:31:23 -0700 Subject: [PATCH 13/16] CI build fixes A. --- src/Simulation/Simulators/QuantumSimulator/NativeImports.cs | 5 ++++- .../StateDumper.cs | 0 2 files changed, 4 insertions(+), 1 deletion(-) rename src/Simulation/Simulators/{CommonNativeSimulator => QuantumSimulator}/StateDumper.cs (100%) diff --git a/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs b/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs index 0f38b7fd866..dd77a4299d0 100644 --- a/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs +++ b/src/Simulation/Simulators/QuantumSimulator/NativeImports.cs @@ -9,7 +9,10 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class QuantumSimulator { - private const string QSIM_DLL_NAME = "Microsoft.Quantum.Simulator.Runtime"; + public const string QSIM_DLL_NAME = "Microsoft.Quantum.Simulator.Runtime"; // If this is not public then + // we get a CI build error: + // Preparation\Arbitrary.cs(23,41): error CS0117: 'QuantumSimulator' does not contain a definition for + // 'QSIM_DLL_NAME' [D:\a\1\s\submodules\QuantumLibraries\Standard\src\Standard.csproj] private delegate void IdsCallback(uint id); [DllImport(QSIM_DLL_NAME, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl, EntryPoint = "DumpIds")] diff --git a/src/Simulation/Simulators/CommonNativeSimulator/StateDumper.cs b/src/Simulation/Simulators/QuantumSimulator/StateDumper.cs similarity index 100% rename from src/Simulation/Simulators/CommonNativeSimulator/StateDumper.cs rename to src/Simulation/Simulators/QuantumSimulator/StateDumper.cs From d40fff748b2ace93cf738dc75d09861d1595937e Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Thu, 14 Oct 2021 13:20:34 -0700 Subject: [PATCH 14/16] CI build fixes B. --- .../QuantumSimulator/NativeWrappers.cs | 4 ++-- .../QuantumSimulator/StateDumper.cs | 23 +++++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/Simulation/Simulators/QuantumSimulator/NativeWrappers.cs b/src/Simulation/Simulators/QuantumSimulator/NativeWrappers.cs index 4ad08dc2a3d..b185f287771 100644 --- a/src/Simulation/Simulators/QuantumSimulator/NativeWrappers.cs +++ b/src/Simulation/Simulators/QuantumSimulator/NativeWrappers.cs @@ -107,12 +107,12 @@ protected override void MCAdjS(uint count, uint[] ctrls, uint qubit) MCAdjSNative(this.Id, count, ctrls, qubit); } - protected override void sim_Dump(DumpCallback callback) + protected virtual void sim_Dump(DumpCallback callback) { sim_DumpNative(this.Id, callback); } - protected override bool sim_DumpQubits(uint count, uint[] ids, DumpCallback callback) + protected virtual bool sim_DumpQubits(uint count, uint[] ids, DumpCallback callback) { return sim_DumpQubitsNative(this.Id, count, ids, callback); } diff --git a/src/Simulation/Simulators/QuantumSimulator/StateDumper.cs b/src/Simulation/Simulators/QuantumSimulator/StateDumper.cs index 04712849d60..00d9d507a75 100644 --- a/src/Simulation/Simulators/QuantumSimulator/StateDumper.cs +++ b/src/Simulation/Simulators/QuantumSimulator/StateDumper.cs @@ -2,29 +2,30 @@ // Licensed under the MIT License. using System; +using System.Diagnostics; using Microsoft.Quantum.Simulation.Core; namespace Microsoft.Quantum.Simulation.Simulators { - public partial class CommonNativeSimulator + public partial class QuantumSimulator { protected delegate bool DumpCallback(uint idx, double real, double img); - protected abstract void sim_Dump(DumpCallback callback); - protected abstract bool sim_DumpQubits(uint count, uint[] ids, DumpCallback callback); + //protected virtual void sim_Dump(DumpCallback callback); + //protected virtual bool sim_DumpQubits(uint count, uint[] ids, DumpCallback callback); /// /// This class allows you to dump the state (wave function) - /// of the CommonNativeSimulator into a callback function. + /// of the QuantumSimulator into a callback function. /// The callback function is triggered for every state basis /// vector in the wavefunction. /// - public abstract class StateDumper + public abstract class StateDumper // Is used by "iqsharp\src\Jupyter\Visualization\StateDisplayOperations.cs". { /// /// Basic constructor. Takes the simulator to probe. /// - public StateDumper(CommonNativeSimulator qsim) + public StateDumper(QuantumSimulator qsim) { this.Simulator = qsim; } @@ -32,7 +33,7 @@ public StateDumper(CommonNativeSimulator qsim) /// /// The callback method that will be used to report the amplitude /// of each basis vector of the wave function. - /// The method should return 'true' if the CommonNativeSimulator should + /// The method should return 'true' if the QuantumSimulator should /// continue reporting the state of the remaining basis vectors. /// /// The index of the basis state vector being reported. @@ -42,9 +43,9 @@ public StateDumper(CommonNativeSimulator qsim) public abstract bool Callback(uint idx, double real, double img); /// - /// The CommonNativeSimulator being reported. + /// The QuantumSimulator being reported. /// - public CommonNativeSimulator Simulator { get; } + public QuantumSimulator Simulator { get; } /// /// Entry method to get the dump of the wave function. @@ -72,7 +73,7 @@ public class SimpleDumper : StateDumper { private int _maxCharsStateId; - public SimpleDumper(CommonNativeSimulator qsim, Action channel) : base(qsim) + public SimpleDumper(QuantumSimulator qsim, Action channel) : base(qsim) { this.Channel = channel; } @@ -172,6 +173,8 @@ public override bool Callback(uint idx, double real, double img) public override bool Dump(IQArray? qubits = null) { + Debug.Assert(this.Simulator.QubitManager != null); + var count = qubits == null ? this.Simulator.QubitManager.AllocatedQubitsCount : qubits.Length; From ea0d2945bdb477ef77a407d7b80a9964ceb2a3e0 Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Thu, 14 Oct 2021 14:13:03 -0700 Subject: [PATCH 15/16] CR changes --- .../CommonNativeSimulator/Assert.cs | 8 +++-- .../CommonNativeSimulator/AssertProb.cs | 5 ++- .../Simulators/CommonNativeSimulator/Dump.cs | 10 ++++-- .../Simulators/CommonNativeSimulator/Exp.cs | 3 -- .../Simulators/CommonNativeSimulator/H.cs | 3 -- .../Simulators/CommonNativeSimulator/M.cs | 2 -- .../CommonNativeSimulator/Measure.cs | 2 -- .../CommonNativeSimulator/NativeWrappers.cs | 33 +++++++++++++++++++ .../CommonNativeSimulator/QubitManager.cs | 3 -- .../Simulators/CommonNativeSimulator/R.cs | 3 -- .../Simulators/CommonNativeSimulator/S.cs | 5 --- .../Simulators/CommonNativeSimulator/T.cs | 5 --- .../Simulators/CommonNativeSimulator/X.cs | 3 -- .../Simulators/CommonNativeSimulator/Y.cs | 3 -- .../Simulators/CommonNativeSimulator/Z.cs | 3 -- .../QuantumSimulator/QuantumSimulator.cs | 3 +- .../QuantumSimulator/StateDumper.cs | 3 -- 17 files changed, 51 insertions(+), 46 deletions(-) create mode 100644 src/Simulation/Simulators/CommonNativeSimulator/NativeWrappers.cs diff --git a/src/Simulation/Simulators/CommonNativeSimulator/Assert.cs b/src/Simulation/Simulators/CommonNativeSimulator/Assert.cs index bd3d83749b2..9d7d1681aa8 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/Assert.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/Assert.cs @@ -9,9 +9,11 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract double JointEnsembleProbability(uint n, Pauli[] b, uint[] q); - - public class QSimAssert : Microsoft.Quantum.Diagnostics.AssertMeasurement // TODO(rokuzmin): QSimAssert is never used? + // `QSimAssert` makes an impression that it is never used, + // but since it inherits from Quantum.Diagnostics.AssertMeasurement + // (which is a C# class that corresponds to a Q# operation in our core libraries), it will be automatically used. + // It is instantiated via reflection, hence we don't see it easily in the code. + public class QSimAssert : Microsoft.Quantum.Diagnostics.AssertMeasurement { private CommonNativeSimulator Simulator { get; } diff --git a/src/Simulation/Simulators/CommonNativeSimulator/AssertProb.cs b/src/Simulation/Simulators/CommonNativeSimulator/AssertProb.cs index db4c98a32f0..fb038b23b4b 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/AssertProb.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/AssertProb.cs @@ -9,7 +9,10 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - // TODO(rokuzmin): QSimAssertProb is never used? + // `QSimAssertProb` makes an impression that it is never used, + // but since it inherits from Quantum.Diagnostics.AssertMeasurementProbability + // (which is a C# class that corresponds to a Q# operation in our core libraries), it will be automatically used. + // It is instantiated via reflection, hence we don't see it easily in the code. public class QSimAssertProb : Microsoft.Quantum.Diagnostics.AssertMeasurementProbability { private CommonNativeSimulator Simulator { get; } diff --git a/src/Simulation/Simulators/CommonNativeSimulator/Dump.cs b/src/Simulation/Simulators/CommonNativeSimulator/Dump.cs index 664686611ea..51fa1c153fa 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/Dump.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/Dump.cs @@ -52,7 +52,10 @@ protected virtual QVoid Dump(T target, IQArray? qubits = null) } } - // TODO(rokuzmin): QsimDumpMachine is never used? + // `QsimDumpMachine` makes an impression that it is never used, + // but since it inherits from Quantum.Diagnostics.DumpMachine (which is a C# class that corresponds to a + // Q# operation in our core libraries), it will be automatically used. + // It is instantiated via reflection, hence we don't see it easily in the code. public class QsimDumpMachine : Quantum.Diagnostics.DumpMachine { private CommonNativeSimulator Simulator { get; } @@ -70,7 +73,10 @@ public QsimDumpMachine(CommonNativeSimulator m) : base(m) }; } - // TODO(rokuzmin): QSimDumpRegister is never used? + // `QSimDumpRegister` makes an impression that it is never used, + // but since it inherits from Quantum.Diagnostics.QSimDumpRegister (which is a C# class that corresponds to a + // Q# operation in our core libraries), it will be automatically used. + // It is instantiated via reflection, hence we don't see it easily in the code. public class QSimDumpRegister : Quantum.Diagnostics.DumpRegister { private CommonNativeSimulator Simulator { get; } diff --git a/src/Simulation/Simulators/CommonNativeSimulator/Exp.cs b/src/Simulation/Simulators/CommonNativeSimulator/Exp.cs index f6c70ea9c27..61233f2d17b 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/Exp.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/Exp.cs @@ -9,9 +9,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract void Exp(uint n, Pauli[] paulis, double angle, uint[] ids); - protected abstract void MCExp(uint n, Pauli[] paulis, double angle, uint nc, uint[] ctrls, uint[] ids); - void IIntrinsicExp.Body(IQArray paulis, double angle, IQArray targets) { this.CheckQubits(targets); diff --git a/src/Simulation/Simulators/CommonNativeSimulator/H.cs b/src/Simulation/Simulators/CommonNativeSimulator/H.cs index 5fd213e161f..179c363b987 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/H.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/H.cs @@ -8,9 +8,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract void H(uint qubit); - protected abstract void MCH(uint count, uint[] ctrls, uint qubit); - void IIntrinsicH.Body(Qubit target) { this.CheckQubit(target); diff --git a/src/Simulation/Simulators/CommonNativeSimulator/M.cs b/src/Simulation/Simulators/CommonNativeSimulator/M.cs index 637e972f43b..a258a29ec91 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/M.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/M.cs @@ -8,8 +8,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract uint M(uint q); - Result IIntrinsicM.Body(Qubit target) { this.CheckQubit(target); diff --git a/src/Simulation/Simulators/CommonNativeSimulator/Measure.cs b/src/Simulation/Simulators/CommonNativeSimulator/Measure.cs index b345c89e4c0..e787d9aa707 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/Measure.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/Measure.cs @@ -9,8 +9,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract uint Measure(uint n, Pauli[] b, uint[] ids); - Result IIntrinsicMeasure.Body(IQArray paulis, IQArray targets) { this.CheckQubits(targets); diff --git a/src/Simulation/Simulators/CommonNativeSimulator/NativeWrappers.cs b/src/Simulation/Simulators/CommonNativeSimulator/NativeWrappers.cs new file mode 100644 index 00000000000..7e33cea1441 --- /dev/null +++ b/src/Simulation/Simulators/CommonNativeSimulator/NativeWrappers.cs @@ -0,0 +1,33 @@ +using Microsoft.Quantum.Simulation.Core; + +namespace Microsoft.Quantum.Simulation.Simulators +{ + public partial class CommonNativeSimulator + { + protected abstract double JointEnsembleProbability(uint n, Pauli[] b, uint[] q); + protected abstract void Exp(uint n, Pauli[] paulis, double angle, uint[] ids); + protected abstract void MCExp(uint n, Pauli[] paulis, double angle, uint nc, uint[] ctrls, uint[] ids); + protected abstract void H(uint qubit); + protected abstract void MCH(uint count, uint[] ctrls, uint qubit); + protected abstract uint M(uint q); + protected abstract uint Measure(uint n, Pauli[] b, uint[] ids); + protected abstract void AllocateOne(uint qubit_id); + protected abstract bool ReleaseOne(uint qubit_id); + protected abstract void R(Pauli basis, double angle, uint qubit); + protected abstract void MCR(Pauli basis, double angle, uint count, uint[] ctrls, uint qubit); + protected abstract void S(uint qubit); + protected abstract void AdjS(uint qubit); + protected abstract void MCS(uint count, uint[] ctrls, uint qubit); + protected abstract void MCAdjS(uint count, uint[] ctrls, uint qubit); + protected abstract void T(uint qubit); + protected abstract void AdjT(uint qubit); + protected abstract void MCT(uint count, uint[] ctrls, uint qubit); + protected abstract void MCAdjT(uint count, uint[] ctrls, uint qubit); + protected abstract void X(uint qubit); + protected abstract void MCX(uint count, uint[] ctrls, uint qubit); + protected abstract void Y(uint qubit); + protected abstract void MCY(uint count, uint[] ctrls, uint qubit); + protected abstract void Z(uint qubit); + protected abstract void MCZ(uint count, uint[] ctrls, uint qubit); + } +} diff --git a/src/Simulation/Simulators/CommonNativeSimulator/QubitManager.cs b/src/Simulation/Simulators/CommonNativeSimulator/QubitManager.cs index 580d0d2fc10..4c1c9d73756 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/QubitManager.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/QubitManager.cs @@ -10,9 +10,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract void AllocateOne(uint qubit_id); - protected abstract bool ReleaseOne(uint qubit_id); - protected class QSimQubitManager : QubitManager { readonly bool throwOnReleasingQubitsNotInZeroState; diff --git a/src/Simulation/Simulators/CommonNativeSimulator/R.cs b/src/Simulation/Simulators/CommonNativeSimulator/R.cs index dcf57b0dcf8..bfdb35c9e5d 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/R.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/R.cs @@ -8,9 +8,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract void R(Pauli basis, double angle, uint qubit); - protected abstract void MCR(Pauli basis, double angle, uint count, uint[] ctrls, uint qubit); - void IIntrinsicR.Body(Pauli pauli, double angle, Qubit target) { this.CheckQubit(target); diff --git a/src/Simulation/Simulators/CommonNativeSimulator/S.cs b/src/Simulation/Simulators/CommonNativeSimulator/S.cs index 5a130c6c834..2254039c66f 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/S.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/S.cs @@ -8,11 +8,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract void S(uint qubit); - protected abstract void AdjS(uint qubit); - protected abstract void MCS(uint count, uint[] ctrls, uint qubit); - protected abstract void MCAdjS(uint count, uint[] ctrls, uint qubit); - void IIntrinsicS.Body(Qubit target) { this.CheckQubit(target); diff --git a/src/Simulation/Simulators/CommonNativeSimulator/T.cs b/src/Simulation/Simulators/CommonNativeSimulator/T.cs index 00304283932..5d52c89a953 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/T.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/T.cs @@ -8,11 +8,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract void T(uint qubit); - protected abstract void AdjT(uint qubit); - protected abstract void MCT(uint count, uint[] ctrls, uint qubit); - protected abstract void MCAdjT(uint count, uint[] ctrls, uint qubit); - void IIntrinsicT.Body(Qubit target) { this.CheckQubit(target); diff --git a/src/Simulation/Simulators/CommonNativeSimulator/X.cs b/src/Simulation/Simulators/CommonNativeSimulator/X.cs index c7b35f5822e..9c54616a134 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/X.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/X.cs @@ -8,9 +8,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract void X(uint qubit); - protected abstract void MCX(uint count, uint[] ctrls, uint qubit); - void IIntrinsicX.Body(Qubit target) { this.CheckQubit(target); diff --git a/src/Simulation/Simulators/CommonNativeSimulator/Y.cs b/src/Simulation/Simulators/CommonNativeSimulator/Y.cs index 11552d0a20c..10613ceed86 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/Y.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/Y.cs @@ -8,9 +8,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract void Y(uint qubit); - protected abstract void MCY(uint count, uint[] ctrls, uint qubit); - void IIntrinsicY.Body(Qubit target) { this.CheckQubit(target); diff --git a/src/Simulation/Simulators/CommonNativeSimulator/Z.cs b/src/Simulation/Simulators/CommonNativeSimulator/Z.cs index e4a326f0171..aca4aade2e6 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/Z.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/Z.cs @@ -8,9 +8,6 @@ namespace Microsoft.Quantum.Simulation.Simulators { public partial class CommonNativeSimulator { - protected abstract void Z(uint qubit); - protected abstract void MCZ(uint count, uint[] ctrls, uint qubit); - void IIntrinsicZ.Body(Qubit target) { this.CheckQubit(target); diff --git a/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs b/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs index a6a89750887..58bceb2903f 100644 --- a/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs +++ b/src/Simulation/Simulators/QuantumSimulator/QuantumSimulator.cs @@ -32,7 +32,6 @@ public QuantumSimulator( // Make sure that the same seed used by the built-in System.Random // instance is also used by the native simulator itself. SetSeedNative(this.Id, (uint)this.Seed); - //((QSimQubitManager)QubitManager).Init(Id); } public override void Dispose() @@ -44,7 +43,7 @@ public override string Name { get { - return "Quantum Simulator"; + return "Quantum Simulator"; // There is a test case that expects exactly this string literal. } } } diff --git a/src/Simulation/Simulators/QuantumSimulator/StateDumper.cs b/src/Simulation/Simulators/QuantumSimulator/StateDumper.cs index 00d9d507a75..22c42a05f6e 100644 --- a/src/Simulation/Simulators/QuantumSimulator/StateDumper.cs +++ b/src/Simulation/Simulators/QuantumSimulator/StateDumper.cs @@ -11,9 +11,6 @@ public partial class QuantumSimulator { protected delegate bool DumpCallback(uint idx, double real, double img); - //protected virtual void sim_Dump(DumpCallback callback); - //protected virtual bool sim_DumpQubits(uint count, uint[] ids, DumpCallback callback); - /// /// This class allows you to dump the state (wave function) /// of the QuantumSimulator into a callback function. From c8e5ff473b8fa904c518d053735c73e38a0622f8 Mon Sep 17 00:00:00 2001 From: Robin Kuzmin Date: Mon, 18 Oct 2021 17:41:09 -0700 Subject: [PATCH 16/16] CR changes. --- src/Simulation/Common/QubitManager.cs | 31 +++---------------- .../CommonNativeSimulator/QubitManager.cs | 11 +++---- 2 files changed, 9 insertions(+), 33 deletions(-) diff --git a/src/Simulation/Common/QubitManager.cs b/src/Simulation/Common/QubitManager.cs index 9b5faffe20f..0313b9fd732 100644 --- a/src/Simulation/Common/QubitManager.cs +++ b/src/Simulation/Common/QubitManager.cs @@ -321,13 +321,13 @@ public void Disable(IQArray qubitsToDisable) /// Allocates a qubit. /// Returns null if the qubit cannot be allocated. /// - protected virtual Qubit? Allocate(bool usedOnlyForBorrowing) + protected virtual Qubit Allocate(bool usedOnlyForBorrowing) { if (free == None) { if (!MayExtendCapacity) { - return null; + throw new NotEnoughQubits(1, this.FreeQubitsCount); } long oldNumQubits = NumQubits; @@ -398,12 +398,7 @@ public void Disable(IQArray qubitsToDisable) /// public Qubit Allocate() { - Qubit? qb = Allocate(usedOnlyForBorrowing: false); - if (qb == null) - { - throw new NotEnoughQubits(1, this.FreeQubitsCount); - } - return qb; + return Allocate(usedOnlyForBorrowing: false); } /// @@ -429,15 +424,7 @@ public IQArray Allocate(long numToAllocate) } for (int i = 0; i < numToAllocate; i++) { - Qubit? allocated = Allocate(usedOnlyForBorrowing: false); - if (allocated == null) - { - for (int k = 0; k < i; k++) - { - Release(result[k], wasUsedOnlyForBorrowing: false); - } - throw new NotEnoughQubits(numToAllocate, this.FreeQubitsCount); - } + Qubit allocated = Allocate(usedOnlyForBorrowing: false); result.Modify(i, allocated); } @@ -594,15 +581,7 @@ internal IQArray Borrow(long numToBorrow, HashSet qubitsInUse) { // Not enough qubits to borrow. Allocate what was not borrowed. for (long i = numBorrowed; i < numToBorrow; i++) { - Qubit? allocated = Allocate(usedOnlyForBorrowing: true); - if (allocated == null) - { - for (long k = numBorrowed; k < i; k++) - { - Release(borrowed[(int)k], wasUsedOnlyForBorrowing: true); - } - throw new NotEnoughQubits(numToBorrow, numBorrowed + this.FreeQubitsCount); - } + Qubit allocated = Allocate(usedOnlyForBorrowing: true); borrowed.Modify(i, allocated); } } diff --git a/src/Simulation/Simulators/CommonNativeSimulator/QubitManager.cs b/src/Simulation/Simulators/CommonNativeSimulator/QubitManager.cs index 4c1c9d73756..c32ff84800d 100644 --- a/src/Simulation/Simulators/CommonNativeSimulator/QubitManager.cs +++ b/src/Simulation/Simulators/CommonNativeSimulator/QubitManager.cs @@ -42,14 +42,11 @@ public override Qubit CreateQubitObject(long id) return new QSimQubit((int)id, Simulator); } - protected override Qubit? Allocate(bool usedOnlyForBorrowing) + protected override Qubit Allocate(bool usedOnlyForBorrowing) { - Qubit? qubit = base.Allocate(usedOnlyForBorrowing); - if (qubit != null) - { - Debug.Assert(Simulator != null); - Simulator.AllocateOne((uint)qubit.Id); - } + Qubit qubit = base.Allocate(usedOnlyForBorrowing); + Debug.Assert(Simulator != null); + Simulator.AllocateOne((uint)qubit.Id); return qubit; }