From 3967f3b60f3f1fe1feb3d8690e0b77f45dcbc9d6 Mon Sep 17 00:00:00 2001 From: Mathias Soeken Date: Tue, 8 Sep 2020 18:01:23 +0200 Subject: [PATCH 1/2] Improved assertion. --- Standard/src/Preparation/UniformSuperposition.qs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Standard/src/Preparation/UniformSuperposition.qs b/Standard/src/Preparation/UniformSuperposition.qs index 177c43dcef9..29b263f5717 100644 --- a/Standard/src/Preparation/UniformSuperposition.qs +++ b/Standard/src/Preparation/UniformSuperposition.qs @@ -5,6 +5,7 @@ namespace Microsoft.Quantum.Preparation { open Microsoft.Quantum.Canon; open Microsoft.Quantum.Intrinsic; open Microsoft.Quantum.Convert; + open Microsoft.Quantum.Diagnostics; open Microsoft.Quantum.Arithmetic; open Microsoft.Quantum.AmplitudeAmplification; open Microsoft.Quantum.Oracles; @@ -53,6 +54,7 @@ namespace Microsoft.Quantum.Preparation { } using (flagQubit = Qubit[3]) { + AssertAllZero(indexRegister!); let targetQubits = indexRegister![0..nQubits - 1]; let qubits = flagQubit + targetQubits; let stateOracle = StateOracle(PrepareUniformSuperposition_(nIndices, nQubits, _, _)); From c0654f42fb792d647a5536b0cadfda80324d94c3 Mon Sep 17 00:00:00 2001 From: Mathias Soeken Date: Tue, 8 Sep 2020 18:36:57 +0200 Subject: [PATCH 2/2] Clarifying remark on adjointable call. --- Standard/src/Preparation/UniformSuperposition.qs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Standard/src/Preparation/UniformSuperposition.qs b/Standard/src/Preparation/UniformSuperposition.qs index 29b263f5717..e68599eeb33 100644 --- a/Standard/src/Preparation/UniformSuperposition.qs +++ b/Standard/src/Preparation/UniformSuperposition.qs @@ -12,7 +12,7 @@ namespace Microsoft.Quantum.Preparation { open Microsoft.Quantum.Math; /// # Summary - /// Creates a uniform superposition over states that encode 0 through `nIndices`. + /// Creates a uniform superposition over states that encode 0 through `nIndices - 1`. /// /// That is, this unitary $U$ creates a uniform superposition over all number states /// $0$ to $M-1$, given an input state $\ket{0\cdots 0}$. In other words, @@ -31,13 +31,17 @@ namespace Microsoft.Quantum.Preparation { /// initialized in the state $\ket{0\cdots 0}$. /// /// # Remarks - /// ## Example + /// The operation is adjointable, but requires that `indexRegister` is in a uniform + /// superposition over the first `nIndices` basis states in that case. + /// + /// # Example /// The following example prepares the state $\frac{1}{\sqrt{6}}\sum_{j=0}^{5}\ket{j}$ /// on $3$ qubits. /// ``` Q# /// let nIndices = 6; /// using(indexRegister = Qubit[3]) { /// PrepareUniformSuperposition(nIndices, LittleEndian(indexRegister)); + /// // ... /// } /// ``` operation PrepareUniformSuperposition(nIndices: Int, indexRegister: LittleEndian) : Unit is Adj + Ctl {