Implementing a Q# program - Azure Quantum | Microsoft Learn
Fri May 12 2023 20:17:27 GMT+0000 (Coordinated Universal Time)
Saved by
@mybusybeeadmin
namespace Microsoft.Quantum.Samples {
open Microsoft.Quantum.Arithmetic;
open Microsoft.Quantum.Arrays as Array;
open Microsoft.Quantum.Canon;
open Microsoft.Quantum.Convert;
open Microsoft.Quantum.Diagnostics as Diagnostics;
open Microsoft.Quantum.Intrinsic;
open Microsoft.Quantum.Math;
open Microsoft.Quantum.Preparation;
operation ApplyQFT (reg : LittleEndian) : Unit
is Adj + Ctl {
let qs = reg!;
SwapReverseRegister(qs);
for (i in Array.IndexRange(qs)) {
for (j in 0 .. i-1) {
Controlled R1Frac([qs[i]], (1, i - j, qs[j]));
}
H(qs[i]);
}
}
@EntryPoint()
operation RunProgram(vector : Double[]) : Unit {
let n = Floor(Log(IntAsDouble(Length(vector))) / LogOf2());
if (1 <<< n != Length(vector)) {
fail "Length(vector) needs to be a power of two.";
}
let amps = Array.Mapped(ComplexPolar(_,0.), vector);
use qs = Qubit[n] {
let reg = LittleEndian(qs);
PrepareArbitraryState(amps, reg);
Message("Before QFT:");
Diagnostics.DumpRegister((), qs);
ApplyQFT(reg);
Message("After QFT:");
Diagnostics.DumpRegister((), qs);
ResetAll(qs);
}
}
}
content_copyCOPY
https://learn.microsoft.com/en-us/azure/quantum/user-guide/language/programstructure/
Comments