qsharp-lang 1.14.4-dev → 1.14.5-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/dist/samples.generated.js +36 -11
  2. package/docs/Microsoft.Quantum.Core/Length.md +1 -1
  3. package/docs/Microsoft.Quantum.Core/Repeated.md +1 -1
  4. package/docs/Microsoft.Quantum.Core/index.md +1 -1
  5. package/docs/Std.Arithmetic/AddLE.md +1 -1
  6. package/docs/Std.Arithmetic/ApplyIfEqualL.md +1 -1
  7. package/docs/Std.Arithmetic/ApplyIfEqualLE.md +1 -1
  8. package/docs/Std.Arithmetic/ApplyIfGreaterL.md +1 -1
  9. package/docs/Std.Arithmetic/ApplyIfGreaterLE.md +1 -1
  10. package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualL.md +1 -1
  11. package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualLE.md +1 -1
  12. package/docs/Std.Arithmetic/ApplyIfLessL.md +1 -1
  13. package/docs/Std.Arithmetic/ApplyIfLessLE.md +1 -1
  14. package/docs/Std.Arithmetic/ApplyIfLessOrEqualL.md +1 -1
  15. package/docs/Std.Arithmetic/ApplyIfLessOrEqualLE.md +1 -1
  16. package/docs/Std.Arithmetic/FourierTDIncByLE.md +1 -1
  17. package/docs/Std.Arithmetic/IncByI.md +1 -1
  18. package/docs/Std.Arithmetic/IncByIUsingIncByLE.md +1 -1
  19. package/docs/Std.Arithmetic/IncByL.md +1 -1
  20. package/docs/Std.Arithmetic/IncByLE.md +1 -1
  21. package/docs/Std.Arithmetic/IncByLEUsingAddLE.md +1 -1
  22. package/docs/Std.Arithmetic/IncByLUsingIncByLE.md +1 -1
  23. package/docs/Std.Arithmetic/LookAheadDKRSAddLE.md +1 -1
  24. package/docs/Std.Arithmetic/MAJ.md +1 -1
  25. package/docs/Std.Arithmetic/ReflectAboutInteger.md +1 -1
  26. package/docs/Std.Arithmetic/RippleCarryCGAddLE.md +1 -1
  27. package/docs/Std.Arithmetic/RippleCarryCGIncByLE.md +1 -1
  28. package/docs/Std.Arithmetic/RippleCarryTTKIncByLE.md +1 -1
  29. package/docs/Std.Arithmetic/index.md +1 -1
  30. package/docs/Std.Arrays/All.md +1 -1
  31. package/docs/Std.Arrays/Any.md +1 -1
  32. package/docs/Std.Arrays/Chunks.md +1 -1
  33. package/docs/Std.Arrays/CircularlyShifted.md +1 -1
  34. package/docs/Std.Arrays/ColumnAt.md +1 -1
  35. package/docs/Std.Arrays/Count.md +1 -1
  36. package/docs/Std.Arrays/Diagonal.md +1 -1
  37. package/docs/Std.Arrays/DrawMany.md +1 -1
  38. package/docs/Std.Arrays/Enumerated.md +1 -1
  39. package/docs/Std.Arrays/Excluding.md +1 -1
  40. package/docs/Std.Arrays/Filtered.md +1 -1
  41. package/docs/Std.Arrays/FlatMapped.md +1 -1
  42. package/docs/Std.Arrays/Flattened.md +1 -1
  43. package/docs/Std.Arrays/Fold.md +1 -1
  44. package/docs/Std.Arrays/ForEach.md +1 -1
  45. package/docs/Std.Arrays/Head.md +1 -1
  46. package/docs/Std.Arrays/HeadAndRest.md +1 -1
  47. package/docs/Std.Arrays/IndexOf.md +1 -1
  48. package/docs/Std.Arrays/IndexRange.md +1 -1
  49. package/docs/Std.Arrays/Interleaved.md +1 -1
  50. package/docs/Std.Arrays/IsEmpty.md +1 -1
  51. package/docs/Std.Arrays/IsRectangularArray.md +1 -1
  52. package/docs/Std.Arrays/IsSorted.md +1 -1
  53. package/docs/Std.Arrays/IsSquareArray.md +1 -1
  54. package/docs/Std.Arrays/Mapped.md +1 -1
  55. package/docs/Std.Arrays/MappedByIndex.md +1 -1
  56. package/docs/Std.Arrays/MappedOverRange.md +1 -1
  57. package/docs/Std.Arrays/Most.md +1 -1
  58. package/docs/Std.Arrays/MostAndTail.md +1 -1
  59. package/docs/Std.Arrays/Padded.md +1 -1
  60. package/docs/Std.Arrays/Partitioned.md +1 -1
  61. package/docs/Std.Arrays/Rest.md +1 -1
  62. package/docs/Std.Arrays/Reversed.md +1 -1
  63. package/docs/Std.Arrays/SequenceI.md +1 -1
  64. package/docs/Std.Arrays/SequenceL.md +1 -1
  65. package/docs/Std.Arrays/Sorted.md +1 -1
  66. package/docs/Std.Arrays/Subarray.md +1 -1
  67. package/docs/Std.Arrays/Swapped.md +1 -1
  68. package/docs/Std.Arrays/Tail.md +1 -1
  69. package/docs/Std.Arrays/Transposed.md +1 -1
  70. package/docs/Std.Arrays/Unzipped.md +1 -1
  71. package/docs/Std.Arrays/Where.md +1 -1
  72. package/docs/Std.Arrays/Windows.md +1 -1
  73. package/docs/Std.Arrays/Zipped.md +1 -1
  74. package/docs/Std.Arrays/index.md +1 -1
  75. package/docs/Std.Canon/ApplyCNOTChain.md +1 -1
  76. package/docs/Std.Canon/ApplyControlledOnBitString.md +1 -1
  77. package/docs/Std.Canon/ApplyControlledOnInt.md +1 -1
  78. package/docs/Std.Canon/ApplyP.md +1 -1
  79. package/docs/Std.Canon/ApplyPauli.md +1 -1
  80. package/docs/Std.Canon/ApplyPauliFromBitString.md +1 -1
  81. package/docs/Std.Canon/ApplyPauliFromInt.md +1 -1
  82. package/docs/Std.Canon/ApplyQFT.md +1 -1
  83. package/docs/Std.Canon/ApplyToEach.md +1 -1
  84. package/docs/Std.Canon/ApplyToEachA.md +1 -1
  85. package/docs/Std.Canon/ApplyToEachC.md +1 -1
  86. package/docs/Std.Canon/ApplyToEachCA.md +1 -1
  87. package/docs/Std.Canon/ApplyXorInPlace.md +1 -1
  88. package/docs/Std.Canon/ApplyXorInPlaceL.md +1 -1
  89. package/docs/Std.Canon/CX.md +1 -1
  90. package/docs/Std.Canon/CY.md +1 -1
  91. package/docs/Std.Canon/CZ.md +1 -1
  92. package/docs/Std.Canon/Fst.md +1 -1
  93. package/docs/Std.Canon/Relabel.md +1 -1
  94. package/docs/Std.Canon/Snd.md +1 -1
  95. package/docs/Std.Canon/SwapReverseRegister.md +1 -1
  96. package/docs/Std.Canon/index.md +1 -1
  97. package/docs/Std.Convert/BigIntAsBoolArray.md +1 -1
  98. package/docs/Std.Convert/BoolArrayAsBigInt.md +1 -1
  99. package/docs/Std.Convert/BoolArrayAsInt.md +1 -1
  100. package/docs/Std.Convert/BoolArrayAsResultArray.md +1 -1
  101. package/docs/Std.Convert/BoolAsResult.md +1 -1
  102. package/docs/Std.Convert/ComplexAsComplexPolar.md +1 -1
  103. package/docs/Std.Convert/ComplexPolarAsComplex.md +1 -1
  104. package/docs/Std.Convert/DoubleAsStringWithPrecision.md +1 -1
  105. package/docs/Std.Convert/IntAsBigInt.md +1 -1
  106. package/docs/Std.Convert/IntAsBoolArray.md +1 -1
  107. package/docs/Std.Convert/IntAsDouble.md +1 -1
  108. package/docs/Std.Convert/ResultArrayAsBoolArray.md +1 -1
  109. package/docs/Std.Convert/ResultArrayAsInt.md +1 -1
  110. package/docs/Std.Convert/ResultAsBool.md +1 -1
  111. package/docs/Std.Convert/index.md +1 -1
  112. package/docs/Std.Core/Length.md +1 -1
  113. package/docs/Std.Core/Repeated.md +1 -1
  114. package/docs/Std.Core/index.md +1 -1
  115. package/docs/Std.Diagnostics/ApplyIdleNoise.md +1 -1
  116. package/docs/Std.Diagnostics/BitFlipNoise.md +1 -1
  117. package/docs/Std.Diagnostics/CheckAllZero.md +1 -1
  118. package/docs/Std.Diagnostics/CheckOperationsAreEqual.md +1 -1
  119. package/docs/Std.Diagnostics/CheckZero.md +1 -1
  120. package/docs/Std.Diagnostics/ConfigurePauliNoise.md +1 -1
  121. package/docs/Std.Diagnostics/DepolarizingNoise.md +1 -1
  122. package/docs/Std.Diagnostics/DumpMachine.md +1 -1
  123. package/docs/Std.Diagnostics/DumpOperation.md +1 -1
  124. package/docs/Std.Diagnostics/DumpRegister.md +1 -1
  125. package/docs/Std.Diagnostics/Fact.md +1 -1
  126. package/docs/Std.Diagnostics/NoNoise.md +1 -1
  127. package/docs/Std.Diagnostics/PhaseFlipNoise.md +1 -1
  128. package/docs/Std.Diagnostics/StartCountingFunction.md +1 -1
  129. package/docs/Std.Diagnostics/StartCountingOperation.md +1 -1
  130. package/docs/Std.Diagnostics/StartCountingQubits.md +1 -1
  131. package/docs/Std.Diagnostics/StopCountingFunction.md +1 -1
  132. package/docs/Std.Diagnostics/StopCountingOperation.md +1 -1
  133. package/docs/Std.Diagnostics/StopCountingQubits.md +1 -1
  134. package/docs/Std.Diagnostics/index.md +1 -1
  135. package/docs/Std.Intrinsic/AND.md +1 -1
  136. package/docs/Std.Intrinsic/ApplyUnitary.md +1 -1
  137. package/docs/Std.Intrinsic/CCNOT.md +1 -1
  138. package/docs/Std.Intrinsic/CNOT.md +1 -1
  139. package/docs/Std.Intrinsic/Exp.md +1 -1
  140. package/docs/Std.Intrinsic/H.md +1 -1
  141. package/docs/Std.Intrinsic/I.md +1 -1
  142. package/docs/Std.Intrinsic/M.md +1 -1
  143. package/docs/Std.Intrinsic/Measure.md +1 -1
  144. package/docs/Std.Intrinsic/Message.md +1 -1
  145. package/docs/Std.Intrinsic/R.md +1 -1
  146. package/docs/Std.Intrinsic/R1.md +1 -1
  147. package/docs/Std.Intrinsic/R1Frac.md +1 -1
  148. package/docs/Std.Intrinsic/RFrac.md +1 -1
  149. package/docs/Std.Intrinsic/Reset.md +1 -1
  150. package/docs/Std.Intrinsic/ResetAll.md +1 -1
  151. package/docs/Std.Intrinsic/Rx.md +1 -1
  152. package/docs/Std.Intrinsic/Rxx.md +1 -1
  153. package/docs/Std.Intrinsic/Ry.md +1 -1
  154. package/docs/Std.Intrinsic/Ryy.md +1 -1
  155. package/docs/Std.Intrinsic/Rz.md +1 -1
  156. package/docs/Std.Intrinsic/Rzz.md +1 -1
  157. package/docs/Std.Intrinsic/S.md +1 -1
  158. package/docs/Std.Intrinsic/SWAP.md +1 -1
  159. package/docs/Std.Intrinsic/T.md +1 -1
  160. package/docs/Std.Intrinsic/X.md +1 -1
  161. package/docs/Std.Intrinsic/Y.md +1 -1
  162. package/docs/Std.Intrinsic/Z.md +1 -1
  163. package/docs/Std.Intrinsic/index.md +1 -1
  164. package/docs/Std.Logical/Xor.md +1 -1
  165. package/docs/Std.Logical/index.md +1 -1
  166. package/docs/Std.Math/AbsComplex.md +1 -1
  167. package/docs/Std.Math/AbsComplexPolar.md +1 -1
  168. package/docs/Std.Math/AbsD.md +1 -1
  169. package/docs/Std.Math/AbsI.md +1 -1
  170. package/docs/Std.Math/AbsL.md +1 -1
  171. package/docs/Std.Math/AbsSquaredComplex.md +1 -1
  172. package/docs/Std.Math/AbsSquaredComplexPolar.md +1 -1
  173. package/docs/Std.Math/ApproximateFactorial.md +1 -1
  174. package/docs/Std.Math/ArcCos.md +1 -1
  175. package/docs/Std.Math/ArcCosh.md +1 -1
  176. package/docs/Std.Math/ArcSin.md +1 -1
  177. package/docs/Std.Math/ArcSinh.md +1 -1
  178. package/docs/Std.Math/ArcTan.md +1 -1
  179. package/docs/Std.Math/ArcTan2.md +1 -1
  180. package/docs/Std.Math/ArcTanh.md +1 -1
  181. package/docs/Std.Math/ArgComplex.md +1 -1
  182. package/docs/Std.Math/ArgComplexPolar.md +1 -1
  183. package/docs/Std.Math/Binom.md +1 -1
  184. package/docs/Std.Math/BitSizeI.md +1 -1
  185. package/docs/Std.Math/BitSizeL.md +1 -1
  186. package/docs/Std.Math/Ceiling.md +1 -1
  187. package/docs/Std.Math/Complex.md +1 -1
  188. package/docs/Std.Math/ComplexPolar.md +1 -1
  189. package/docs/Std.Math/ContinuedFractionConvergentI.md +1 -1
  190. package/docs/Std.Math/ContinuedFractionConvergentL.md +1 -1
  191. package/docs/Std.Math/Cos.md +1 -1
  192. package/docs/Std.Math/Cosh.md +1 -1
  193. package/docs/Std.Math/DivRemI.md +1 -1
  194. package/docs/Std.Math/DivRemL.md +1 -1
  195. package/docs/Std.Math/DividedByC.md +1 -1
  196. package/docs/Std.Math/DividedByCP.md +1 -1
  197. package/docs/Std.Math/E.md +1 -1
  198. package/docs/Std.Math/ExpModI.md +1 -1
  199. package/docs/Std.Math/ExpModL.md +1 -1
  200. package/docs/Std.Math/ExtendedGreatestCommonDivisorI.md +1 -1
  201. package/docs/Std.Math/ExtendedGreatestCommonDivisorL.md +1 -1
  202. package/docs/Std.Math/FactorialI.md +1 -1
  203. package/docs/Std.Math/FactorialL.md +1 -1
  204. package/docs/Std.Math/Floor.md +1 -1
  205. package/docs/Std.Math/GreatestCommonDivisorI.md +1 -1
  206. package/docs/Std.Math/GreatestCommonDivisorL.md +1 -1
  207. package/docs/Std.Math/HammingWeightI.md +1 -1
  208. package/docs/Std.Math/InverseModI.md +1 -1
  209. package/docs/Std.Math/InverseModL.md +1 -1
  210. package/docs/Std.Math/IsCoprimeI.md +1 -1
  211. package/docs/Std.Math/IsCoprimeL.md +1 -1
  212. package/docs/Std.Math/IsInfinite.md +1 -1
  213. package/docs/Std.Math/IsNaN.md +1 -1
  214. package/docs/Std.Math/LargestFixedPoint.md +1 -1
  215. package/docs/Std.Math/Lg.md +1 -1
  216. package/docs/Std.Math/Log.md +1 -1
  217. package/docs/Std.Math/Log10.md +1 -1
  218. package/docs/Std.Math/LogFactorialD.md +1 -1
  219. package/docs/Std.Math/LogGammaD.md +1 -1
  220. package/docs/Std.Math/LogOf2.md +1 -1
  221. package/docs/Std.Math/Max.md +1 -1
  222. package/docs/Std.Math/MaxD.md +1 -1
  223. package/docs/Std.Math/MaxI.md +1 -1
  224. package/docs/Std.Math/MaxL.md +1 -1
  225. package/docs/Std.Math/Min.md +1 -1
  226. package/docs/Std.Math/MinD.md +1 -1
  227. package/docs/Std.Math/MinI.md +1 -1
  228. package/docs/Std.Math/MinL.md +1 -1
  229. package/docs/Std.Math/MinusC.md +1 -1
  230. package/docs/Std.Math/MinusCP.md +1 -1
  231. package/docs/Std.Math/ModulusI.md +1 -1
  232. package/docs/Std.Math/ModulusL.md +1 -1
  233. package/docs/Std.Math/NegationC.md +1 -1
  234. package/docs/Std.Math/NegationCP.md +1 -1
  235. package/docs/Std.Math/PI.md +1 -1
  236. package/docs/Std.Math/PNorm.md +1 -1
  237. package/docs/Std.Math/PNormalized.md +1 -1
  238. package/docs/Std.Math/PlusC.md +1 -1
  239. package/docs/Std.Math/PlusCP.md +1 -1
  240. package/docs/Std.Math/PowC.md +1 -1
  241. package/docs/Std.Math/PowCP.md +1 -1
  242. package/docs/Std.Math/RealMod.md +1 -1
  243. package/docs/Std.Math/Round.md +1 -1
  244. package/docs/Std.Math/SignD.md +1 -1
  245. package/docs/Std.Math/SignI.md +1 -1
  246. package/docs/Std.Math/SignL.md +1 -1
  247. package/docs/Std.Math/Sin.md +1 -1
  248. package/docs/Std.Math/Sinh.md +1 -1
  249. package/docs/Std.Math/SmallestFixedPoint.md +1 -1
  250. package/docs/Std.Math/Sqrt.md +1 -1
  251. package/docs/Std.Math/SquaredNorm.md +1 -1
  252. package/docs/Std.Math/Tan.md +1 -1
  253. package/docs/Std.Math/Tanh.md +1 -1
  254. package/docs/Std.Math/TimesC.md +1 -1
  255. package/docs/Std.Math/TimesCP.md +1 -1
  256. package/docs/Std.Math/TrailingZeroCountI.md +1 -1
  257. package/docs/Std.Math/TrailingZeroCountL.md +1 -1
  258. package/docs/Std.Math/Truncate.md +1 -1
  259. package/docs/Std.Math/index.md +1 -1
  260. package/docs/Std.Measurement/MResetEachZ.md +1 -1
  261. package/docs/Std.Measurement/MResetX.md +1 -1
  262. package/docs/Std.Measurement/MResetY.md +1 -1
  263. package/docs/Std.Measurement/MResetZ.md +1 -1
  264. package/docs/Std.Measurement/MeasureAllZ.md +1 -1
  265. package/docs/Std.Measurement/MeasureEachZ.md +1 -1
  266. package/docs/Std.Measurement/MeasureInteger.md +1 -1
  267. package/docs/Std.Measurement/index.md +1 -1
  268. package/docs/Std.Random/DrawRandomBool.md +1 -1
  269. package/docs/Std.Random/DrawRandomDouble.md +1 -1
  270. package/docs/Std.Random/DrawRandomInt.md +1 -1
  271. package/docs/Std.Random/index.md +1 -1
  272. package/docs/Std.Range/IsRangeEmpty.md +1 -1
  273. package/docs/Std.Range/RangeEnd.md +1 -1
  274. package/docs/Std.Range/RangeReverse.md +1 -1
  275. package/docs/Std.Range/RangeStart.md +1 -1
  276. package/docs/Std.Range/RangeStep.md +1 -1
  277. package/docs/Std.Range/index.md +1 -1
  278. package/docs/Std.ResourceEstimation/AccountForEstimates.md +1 -1
  279. package/docs/Std.ResourceEstimation/AuxQubitCount.md +1 -1
  280. package/docs/Std.ResourceEstimation/BeginEstimateCaching.md +1 -1
  281. package/docs/Std.ResourceEstimation/BeginRepeatEstimates.md +1 -1
  282. package/docs/Std.ResourceEstimation/CczCount.md +1 -1
  283. package/docs/Std.ResourceEstimation/EndEstimateCaching.md +1 -1
  284. package/docs/Std.ResourceEstimation/EndRepeatEstimates.md +1 -1
  285. package/docs/Std.ResourceEstimation/MeasurementCount.md +1 -1
  286. package/docs/Std.ResourceEstimation/PSSPCLayout.md +1 -1
  287. package/docs/Std.ResourceEstimation/RepeatEstimates.md +1 -1
  288. package/docs/Std.ResourceEstimation/RotationCount.md +1 -1
  289. package/docs/Std.ResourceEstimation/RotationDepth.md +1 -1
  290. package/docs/Std.ResourceEstimation/SingleVariant.md +1 -1
  291. package/docs/Std.ResourceEstimation/TCount.md +1 -1
  292. package/docs/Std.ResourceEstimation/index.md +1 -1
  293. package/docs/Std.StatePreparation/ApproximatelyPreparePureStateCP.md +1 -1
  294. package/docs/Std.StatePreparation/PreparePureStateD.md +1 -1
  295. package/docs/Std.StatePreparation/PrepareUniformSuperposition.md +1 -1
  296. package/docs/Std.StatePreparation/index.md +1 -1
  297. package/docs/Std.TableLookup/Select.md +1 -1
  298. package/docs/Std.TableLookup/index.md +1 -1
  299. package/docs/index.md +1 -1
  300. package/lib/node/qsc_wasm_bg.wasm +0 -0
  301. package/lib/web/qsc_wasm_bg.wasm +0 -0
  302. package/package.json +1 -1
  303. package/ux/histogram.tsx +26 -19
@@ -4,35 +4,60 @@ export default [
4
4
  "shots": 100,
5
5
  "code": "// # Sample\n// Getting started\n//\n// # Description\n// This is a minimal Q# program that can be used to start writing Q# code.\n\noperation Main() : Unit {\n // TODO: Write your Q# code here.\n}\n"
6
6
  },
7
+ {
8
+ "title": "Quantum Hello World",
9
+ "shots": 100,
10
+ "code": "/// # Summary\n/// Quantum Hello World sample\n///\n/// # Description\n/// This is one of the simplest Q# programs that contains quantum part.\n/// This code prints the message then allocates a qubit and immediately measures it.\n/// Since the qubit starts in |0〉 state such measurement will always yield `Zero`.\noperation Main() : Result {\n // Print the message (when running on a simulator).\n Message(\"Hello world!\");\n\n // Allocate a qubit. Qubit is in |0〉 state after allocation.\n use qubit = Qubit();\n\n // Measure then reset the qubit. Last statement returns result from `Main`.\n // Measurement result is `Zero` as the qubit is in |0〉 state.\n MResetZ(qubit)\n\n // Note, that `qubit` is automatically deallocated at the end of the block.\n}\n"
11
+ },
12
+ {
13
+ "title": "Measurement",
14
+ "shots": 100,
15
+ "code": "/// # Summary\n/// Measurement sample\n///\n/// # Description\n/// This Q# program demonstrates how to perform measurements in Z basis.\n///\n/// # Remarks\n/// Quantum measurement is an irreversible operation in which a quantum system\n/// is manipulated to yield a numerical result. Measuring a quantum system\n/// generally changes the quantum state that describes that system.\noperation Main() : (Result, Result[]) {\n // Allocate a qubit. Qubit is in |0〉 state after allocation.\n use q = Qubit();\n // Flip the state. Qubit is in |1〉 state now.\n X(q);\n\n // The `MResetZ` operation performs a measurement of a single qubit in the\n // computational basis, also known as the Pauli Z basis. Then it resets\n // the qubit to |0〉 state. `MResetZ` may be more efficient than measuring\n // a qubit and resetting it using two separate operations.\n let result = MResetZ(q);\n\n // Allocate a two-qubit array (or register).\n use qs = Qubit[2];\n\n // The `MResetEachZ` operation measures each qubit in an array in the\n // computational basis and resets each qubit to |0〉 state. It returns\n // an array of `Result` values.\n let results = MResetEachZ(qs);\n\n // Return all results. In Q#, the result of a measurement is a value\n // of the type `Result`, that is, `One` or `Zero`.\n (result, results)\n}\n"
16
+ },
7
17
  {
8
18
  "title": "Superposition",
9
19
  "shots": 100,
10
- "code": "/// # Sample\n/// Superposition\n///\n/// # Description\n/// This Q# program sets a qubit in a superposition of the computational basis\n/// states |0〉 and |1〉 by applying a Hadamard transformation.\noperation Main() : Result {\n // Qubits are only accessible for the duration of the scope where they\n // are allocated and are automatically released at the end of the scope.\n use qubit = Qubit();\n\n // Set the qubit in superposition by applying a Hadamard transformation.\n H(qubit);\n\n // Measure the qubit. There is a 50% probability of measuring either\n // `Zero` or `One`.\n let result = M(qubit);\n\n // Reset the qubit so it can be safely released.\n Reset(qubit);\n return result;\n}\n"
20
+ "code": "/// # Summary\n/// Superposition sample\n///\n/// # Description\n/// This Q# program sets a qubit in a superposition of the computational basis\n/// states |0〉 and |1〉 by applying a Hadamard transformation.\noperation Main() : Result {\n // Allocate a qubit. Qubit is in |0〉 state after allocation.\n use qubit = Qubit();\n // Qubits are only accessible for the duration of the scope where they\n // are allocated and are automatically released at the end of the scope.\n\n // Set the qubit in superposition by applying a Hadamard transformation.\n H(qubit);\n\n // Show the quantum state (when running on a simulator).\n Std.Diagnostics.DumpMachine();\n\n // Measure then reset the qubit. Return the result.\n // There is a 50% probability of measuring either `Zero` or `One`.\n MResetZ(qubit)\n}\n"
11
21
  },
12
22
  {
13
23
  "title": "Entanglement",
14
24
  "shots": 100,
15
- "code": "/// # Sample\n/// Entanglement\n///\n/// # Description\n/// Qubits are said to be entangled when the state of each one of them cannot be\n/// described independently from the state of the others.\n///\n/// This Q# program entangles two qubits.\nimport Std.Diagnostics.*;\n\noperation Main() : (Result, Result) {\n // Allocate the two qubits that will be entangled.\n use (q1, q2) = (Qubit(), Qubit());\n\n // Set the first qubit in superposition by calling the `H` operation,\n // which applies a Hadamard transformation to the qubit.\n // Then, entangle the two qubits using the `CNOT` operation.\n H(q1);\n CNOT(q1, q2);\n\n // Show the entangled state using the `DumpMachine` function.\n DumpMachine();\n\n // Measurements of entangled qubits are always correlated.\n let (m1, m2) = (M(q1), M(q2));\n Reset(q1);\n Reset(q2);\n return (m1, m2);\n}\n"
25
+ "code": "/// # Summary\n/// Entanglement sample\n///\n/// # Description\n/// This Q# program entangles two qubits and measures them.\n///\n/// # Remarks\n/// Qubits are said to be entangled when the state of each one of them\n/// cannot be described independently from the state of the others.\noperation Main() : Result[] {\n // Allocate the two qubits that will be entangled.\n use q1 = Qubit();\n use q2 = Qubit();\n\n // Set the first qubit in superposition by calling the `H` operation,\n // which applies a Hadamard transformation to the qubit.\n H(q1);\n // Entangle the two qubits using the `CNOT` operation.\n CNOT(q1, q2);\n\n // Show the entangled state using the `DumpMachine` function.\n // Note that the state is a superposition of |00〉 and |11〉,\n // but not |01〉 and |10〉.\n Std.Diagnostics.DumpMachine();\n\n // Create an array (register) out of the two qubits, measure each qubit,\n // reset each qubit, return the array of measurement results.\n MResetEachZ([q1, q2])\n}\n"
16
26
  },
17
27
  {
18
- "title": "Bell States",
28
+ "title": "Bell Pair",
19
29
  "shots": 100,
20
- "code": "/// # Sample\n/// Bell States\n///\n/// # Description\n/// Bell states or EPR pairs are specific quantum states of two qubits\n/// that represent the simplest (and maximal) examples of quantum entanglement.\n///\n/// This Q# program implements the four different Bell states.\nimport Std.Diagnostics.*;\n\noperation Main() : (Result, Result)[] {\n // This array contains a label and a preparation operation for each one\n // of the four Bell states.\n let bellStateTuples = [\n (\"|Φ+〉\", PreparePhiPlus),\n (\"|Φ-〉\", PreparePhiMinus),\n (\"|Ψ+〉\", PreparePsiPlus),\n (\"|Ψ-〉\", PreparePsiMinus)\n ];\n\n // Prepare all Bell states, show them using the `DumpMachine` operation\n // and measure the Bell state qubits.\n mutable measurements = [];\n for (label, prepare) in bellStateTuples {\n // Allocate the two qubits that will be used to create a Bell state.\n use register = Qubit[2];\n prepare(register);\n Message($\"Bell state {label}:\");\n DumpMachine();\n measurements += [(MResetZ(register[0]), MResetZ(register[1]))];\n }\n return measurements;\n}\n\n/// # Summary\n/// Prepares |Φ+⟩ = (|00⟩+|11⟩)/√2 state assuming `register` is in |00⟩ state.\noperation PreparePhiPlus(register : Qubit[]) : Unit {\n H(register[0]); // |+0〉\n CNOT(register[0], register[1]); // 1/sqrt(2)(|00〉 + |11〉)\n}\n\n/// # Summary\n/// Prepares |Φ−⟩ = (|00⟩-|11⟩)/√2 state assuming `register` is in |00⟩ state.\noperation PreparePhiMinus(register : Qubit[]) : Unit {\n H(register[0]); // |+0〉\n Z(register[0]); // |-0〉\n CNOT(register[0], register[1]); // 1/sqrt(2)(|00〉 - |11〉)\n}\n\n/// # Summary\n/// Prepares |Ψ+⟩ = (|01⟩+|10)/√2 state assuming `register` is in |00⟩ state.\noperation PreparePsiPlus(register : Qubit[]) : Unit {\n H(register[0]); // |+0〉\n X(register[1]); // |+1〉\n CNOT(register[0], register[1]); // 1/sqrt(2)(|01〉 + |10〉)\n}\n\n/// # Summary\n/// Prepares |Ψ−⟩ = (|01⟩-|10⟩)/√2 state assuming `register` is in |00⟩ state.\noperation PreparePsiMinus(register : Qubit[]) : Unit {\n H(register[0]); // |+0〉\n Z(register[0]); // |-0〉\n X(register[1]); // |-1〉\n CNOT(register[0], register[1]); // 1/sqrt(2)(|01〉 - |10〉)\n}\n"
30
+ "code": "/// # Summary\n/// Bell Pair sample\n///\n/// # Description\n/// Bell pairs are specific quantum states of two qubits that represent\n/// the simplest (and maximal) examples of quantum entanglement. This sample\n/// prepares |Φ⁺⟩ = (|00⟩+|11⟩)/√2. For other Bell states see BellStates.qs\n///\n/// # References\n/// - [Bell state](https://en.wikipedia.org/wiki/Bell_state)\noperation Main() : (Result, Result) {\n // Allocate the two qubits that will be used to create a Bell pair.\n use (q1, q2) = (Qubit(), Qubit());\n\n // Create Bell pair by calling `PrepareBellPair` operation defined below.\n PrepareBellPair(q1, q2);\n\n // Show the state of qubits using the `DumpMachine` function.\n Std.Diagnostics.DumpMachine();\n\n // Measure the two qubits and reset them. Return measurement results.\n (MResetZ(q1), MResetZ(q2))\n}\n\n/// # Summary\n/// Prepare Bell pair |Φ⁺⟩ = (|00⟩+|11⟩)/√2 on two qubits.\n/// Qubits are assumed to be in |00⟩ state.\noperation PrepareBellPair(q1 : Qubit, q2 : Qubit) : Unit {\n // Set qubit `q1` in superposition of |0⟩ and |1by applying a Hadamard gate.\n H(q1);\n\n // Entangle the two qubits `q1` and `q2` using the `CNOT` gate.\n CNOT(q1, q2);\n}\n"
21
31
  },
22
32
  {
23
- "title": "Teleportation",
24
- "shots": 1,
25
- "code": "/// # Sample\n/// Quantum Teleportation\n///\n/// # Description\n/// Quantum teleportation provides a way of moving a quantum state from one\n/// location to another without having to move physical particle(s) along with\n/// it. This is done with the help of previously shared quantum entanglement\n/// between the sending and the receiving locations, and classical\n/// communication.\n///\n/// This Q# program implements quantum teleportation.\nimport Std.Diagnostics.*;\nimport Std.Intrinsic.*;\nimport Std.Measurement.*;\n\noperation Main() : Result[] {\n // Use the `Teleport` operation to send different quantum states.\n let stateInitializerBasisTuples = [\n (\"|0〉\", I, PauliZ),\n (\"|1〉\", X, PauliZ),\n (\"|+〉\", SetToPlus, PauliX),\n (\"|-〉\", SetToMinus, PauliX)\n ];\n\n mutable results = [];\n for (state, initializer, basis) in stateInitializerBasisTuples {\n // Allocate the message and target qubits.\n use (message, target) = (Qubit(), Qubit());\n\n // Initialize the message and show its state using the `DumpMachine`\n // function.\n initializer(message);\n Message($\"Teleporting state {state}\");\n DumpRegister([message]);\n\n // Teleport the message and show the quantum state after\n // teleportation.\n Teleport(message, target);\n Message($\"Received state {state}\");\n DumpRegister([target]);\n\n // Measure target in the corresponding basis and reset the qubits to\n // continue teleporting more messages.\n let result = Measure([basis], [target]);\n results += [result];\n ResetAll([message, target]);\n }\n\n return results;\n}\n\n/// # Summary\n/// Sends the state of one qubit to a target qubit by using teleportation.\n///\n/// Notice that after calling Teleport, the state of `message` is collapsed.\n///\n/// # Input\n/// ## message\n/// A qubit whose state we wish to send.\n/// ## target\n/// A qubit initially in the |0〉 state that we want to send\n/// the state of message to.\noperation Teleport(message : Qubit, target : Qubit) : Unit {\n // Allocate an auxiliary qubit.\n use auxiliary = Qubit();\n\n // Create some entanglement that we can use to send our message.\n H(auxiliary);\n CNOT(auxiliary, target);\n\n // Encode the message into the entangled pair.\n CNOT(message, auxiliary);\n H(message);\n\n // Measure the qubits to extract the classical data we need to decode\n // the message by applying the corrections on the target qubit\n // accordingly.\n if M(auxiliary) == One {\n X(target);\n }\n\n if M(message) == One {\n Z(target);\n }\n\n // Reset auxiliary qubit before releasing.\n Reset(auxiliary);\n}\n\n/// # Summary\n/// Sets a qubit in state |0to |+⟩.\noperation SetToPlus(q : Qubit) : Unit is Adj + Ctl {\n H(q);\n}\n\n/// # Summary\n/// Sets a qubit in state |0 to |−⟩.\noperation SetToMinus(q : Qubit) : Unit is Adj + Ctl {\n X(q);\n H(q);\n}\n"
33
+ "title": "Bell States",
34
+ "shots": 100,
35
+ "code": "/// # Summary\n/// Bell States sample\n///\n/// # Description\n/// This Q# sample shows how to prepare the four different Bell states.\n///\n/// # Remarks\n/// Bell states or EPR pairs are specific quantum states of two qubits\n/// that represent the simplest (and maximal) examples of quantum entanglement.\n///\n/// # References\n/// - [Bell state](https://en.wikipedia.org/wiki/Bell_state)\noperation Main() : (Result, Result)[] {\n // Prepare and measure each pair. Return an array of these results.\n [\n PrepareAndMeasurePair(PreparePhiPlus, \"|Φ+〉\"),\n PrepareAndMeasurePair(PreparePhiMinus, \"|Φ-〉\"),\n PrepareAndMeasurePair(PreparePsiPlus, \"|Ψ+〉\"),\n PrepareAndMeasurePair(PreparePsiMinus, \"|Ψ-〉\")\n ]\n}\n\n/// # Summary\n/// Allocates a pair of qubits, prepares them using `preparation` operation,\n/// Then measures and resets them. Returns a pair of results.\noperation PrepareAndMeasurePair(\n preparation : Qubit[] => Unit,\n name : String\n) : (Result, Result) {\n // Allocate a pair of qubits\n use pair = Qubit[2];\n // Prepare them using the preparation operation\n preparation(pair);\n // Show the name of the prepared state\n Message($\"Bell state {name}:\");\n // Show the prepared state\n Std.Diagnostics.DumpMachine();\n // Measure, reset and return\n (MResetZ(pair[0]), MResetZ(pair[1]))\n}\n\n/// # Summary\n/// Prepares |Φ+⟩ = (|00⟩+|11⟩)/√2 state assuming `register` is in |00⟩ state.\noperation PreparePhiPlus(register : Qubit[]) : Unit {\n H(register[0]); // |+0〉\n CNOT(register[0], register[1]); // (|00〉 + |11〉)/sqrt(2)\n}\n\n/// # Summary\n/// Prepares |Φ−⟩ = (|00⟩-|11⟩)/√2 state assuming `register` is in |00⟩ state.\noperation PreparePhiMinus(register : Qubit[]) : Unit {\n H(register[0]); // |+0〉\n Z(register[0]); // |-0〉\n CNOT(register[0], register[1]); // (|00〉 - |11〉)/sqrt(2)\n}\n\n/// # Summary\n/// Prepares |Ψ+⟩ = (|01⟩+|10⟩)/√2 state assuming `register` is in |00⟩ state.\noperation PreparePsiPlus(register : Qubit[]) : Unit {\n H(register[0]); // |+0〉\n X(register[1]); // |+1〉\n CNOT(register[0], register[1]); // (|01〉 + |10〉)/sqrt(2)\n}\n\n/// # Summary\n/// Prepares |Ψ−⟩ = (|01⟩-|10⟩)/√2 state assuming `register` is in |00state.\noperation PreparePsiMinus(register : Qubit[]) : Unit {\n H(register[0]); // |+0〉\n Z(register[0]); // |-0〉\n X(register[1]); // |-1〉\n CNOT(register[0], register[1]); // (|01〉 - |10〉)/sqrt(2)\n}\n"
26
36
  },
27
37
  {
28
- "title": "Random Bit",
38
+ "title": "Cat States",
29
39
  "shots": 100,
30
- "code": "/// # Sample\n/// Random Bit\n///\n/// # Description\n/// This Q# program generates a random bit by setting a qubit in a superposition\n/// of the computational basis states |0〉 and |1〉, and returning the measurement\n/// result.\noperation Main() : Result {\n // Qubits are only accessible for the duration of the scope where they\n // are allocated and are automatically released at the end of the scope.\n use qubit = Qubit();\n\n // Set the qubit in superposition by applying a Hadamard transformation.\n H(qubit);\n\n // Measure the qubit. There is a 50% probability of measuring either\n // `Zero` or `One`.\n let result = M(qubit);\n\n // Reset the qubit so it can be safely released.\n Reset(qubit);\n return result;\n}\n"
40
+ "code": "/// # Summary\n/// Greenberger–Horne–Zeilinger state sample\n///\n/// # Description\n/// This Q# program shows how to prepare a generalized Greenberger–Horne–Zeilinger\n/// state (aka Cat state) in a register of 5 qubits.\n///\n/// # Remarks\n/// The Greenberger–Horne–Zeilinger state, or GHZ state, aka Cat state,\n/// is a state defined as: |GHZ〉 = (|0...0+ |1...1〉)/√2.\n///\n/// The GHZ state is said to be a maximally entangled state, a multi-qubit\n/// state where the state of any one qubit is not separable from the state\n/// of any of the other qubits.\n///\n/// # References\n/// - [Greenberger–Horne–Zeilinger state](https://en.wikipedia.org/wiki/Greenberger%E2%80%93Horne%E2%80%93Zeilinger_state)\n/// - [Cat state](https://en.wikipedia.org/wiki/Cat_state)\noperation Main() : Result[] {\n // Allocate 5 qubits for Cat₅ state.\n use cat5 = Qubit[5];\n // Prepare a Cat₅ state in the register.\n PrepareGHZState(cat5);\n // Show the Cat₅ state.\n Std.Diagnostics.DumpMachine();\n // Measure and reset qubits. Return results.\n MResetEachZ(cat5)\n}\n\n/// # Summary\n/// Prepares GHZ state (|0...0〉 + |1...1〉) / √2 (aka Cat state) in `qs` register.\n/// All qubits are assumed to be in |0〉 state on input.\noperation PrepareGHZState(qs : Qubit[]) : Unit {\n Std.Diagnostics.Fact(Length(qs) > 0, \"Qubit register must not be empty.\");\n\n // Set the first qubit into a (|0〉 + |1〉) / √2 superposition.\n H(qs[0]);\n\n // Then apply a CNOT to the remaining qubits using the first qubit as control.\n // This entangles first qubit with all the other qubits in the register.\n for q in qs[1...] {\n CNOT(qs[0], q);\n }\n}\n"
31
41
  },
32
42
  {
33
- "title": "Random Number Generator",
43
+ "title": "Random Bits",
34
44
  "shots": 1000,
35
- "code": "/// # Sample\n/// Quantum Random Number Generator\n///\n/// # Description\n/// This program implements a quantum random number generator by setting qubits\n/// in superposition and then using the measurement results as random bits.\nimport Std.Measurement.*;\nimport Std.Intrinsic.*;\n\noperation Main() : Result[] {\n // Generate 5-bit random number.\n let nBits = 5;\n return GenerateNRandomBits(nBits);\n}\n\n/// # Summary\n/// Generates N random bits.\noperation GenerateNRandomBits(nBits : Int) : Result[] {\n // Allocate N qubits.\n use register = Qubit[nBits];\n\n // Set the qubits into superposition of 0 and 1 using the Hadamard\n // operation `H`.\n for qubit in register {\n H(qubit);\n }\n\n // At this point each has 50% chance of being measured in the |0〉 state\n // and 50% chance of being measured in the |1〉 state.\n // Measure each qubit and reset them all so they can be safely\n // deallocated.\n let results = MResetEachZ(register);\n return results;\n}\n"
45
+ "code": "/// # Summary\n/// Simple Quantum Random Number Generator sample\n///\n/// # Description\n/// This program implements a quantum random number generator by setting qubits\n/// into superposition and then using the measurement results as random bits.\n/// This is equivalent to generating a random number in the range of 0..2ᴺ-1.\noperation Main() : Result[] {\n // Generate a 5-bit random number.\n GenerateNRandomBits(5)\n}\n\n/// # Summary\n/// Generates N random bits in the form of `Zero` or `One` results.\noperation GenerateNRandomBits(nBits : Int) : Result[] {\n // Array for the results\n mutable results = [];\n for _ in 1..nBits {\n // Append next random result to the array\n results += [GenerateRandomBit()];\n }\n results\n}\n\n/// # Summary\n/// Generates a random bit in the form of `Zero` or `One` result.\noperation GenerateRandomBit() : Result {\n // Allocate a qubit\n use q = Qubit();\n // Set the qubit into uniform superposition of |0〉 and |1〉\n H(q);\n // Now the qubit has 50% chance of being measured as `One`\n // and 50% chance of being measured as `Zero`.\n // Measure and reset the qubit. Return the result.\n MResetZ(q)\n}\n"
46
+ },
47
+ {
48
+ "title": "Teleportation (Simple).qs",
49
+ "shots": 100,
50
+ "code": "/// # Summary\n/// Simple quantum teleportation sample\n///\n/// # Description\n/// This Q# program demonstrates how to teleport quantum state\n/// by communicating two classical bits and using previously entangled qubits.\n/// This code teleports one specific state, but any state can be teleported.\noperation Main() : Bool {\n // Allocate `qAlice`, `qBob` qubits\n use (qAlice, qBob) = (Qubit(), Qubit());\n\n // Entangle `qAlice`, `qBob` qubits\n H(qAlice);\n CNOT(qAlice, qBob);\n\n // From now on qubits `qAlice` and `qBob` will not interact directly.\n\n // Allocate `qToTeleport` qubit and prepare it to be |𝜓⟩≈0.9394|0⟩−0.3429𝑖|1⟩\n use qToTeleport = Qubit();\n Rx(0.7, qToTeleport);\n\n // Prepare the message by entangling `qToTeleport` and `qAlice` qubits\n CNOT(qToTeleport, qAlice);\n H(qToTeleport);\n\n // Obtain classical measurement results b1 and b2 at Alice's site.\n let b1 = M(qToTeleport) == One;\n let b2 = M(qAlice) == One;\n\n // At this point classical bits b1 and b2 are \"sent\" to the Bob's site.\n\n // Decode the message by applying adjustments based on classical data b1 and b2.\n if b1 {\n Z(qBob);\n }\n if b2 {\n X(qBob);\n }\n\n // Make sure that the obtained message is |𝜓⟩≈0.9394|0⟩−0.3429𝑖|1⟩\n Rx(-0.7, qBob);\n let correct = Std.Diagnostics.CheckZero(qBob);\n Message($\"Teleportation successful: {correct}.\");\n\n // Reset all qubits to |0⟩ state.\n ResetAll([qAlice, qBob, qToTeleport]);\n\n // Return indication if the measurement of the state was correct\n correct\n}\n"
51
+ },
52
+ {
53
+ "title": "JointMeasurement",
54
+ "shots": 100,
55
+ "code": "import Std.Diagnostics.*;\n\n/// # Summary\n/// Joint Measurement sample\n///\n/// # Description\n/// This Q# program demonstrates how to use Joint measurements.\n/// Joint measurement, also known as Pauli measurements, are a generalization\n/// of 2-outcome measurements to multiple qubits and other bases.\noperation Main() : (Result, Result[]) {\n // Prepare an entangled state.\n use qs = Qubit[2]; // |00〉\n H(qs[0]); // (|00〉 + |10〉)/sqrt(2)\n CNOT(qs[0], qs[1]); // (|00〉 + |11〉)/sqrt(2)\n\n // Show the quantum state before performing the joint measurement.\n DumpMachine();\n\n // The below code uses a joint measurement as a way to check the parity\n // of the two qubits. In this case, the parity measurement result\n // will always be `Zero`.\n // Notice how the state was not collapsed by the joint measurement\n // because this state is the eigenvector of the Z⊗Z operator.\n let parityResult = Measure([PauliZ, PauliZ], qs);\n DumpMachine();\n\n // However, if we perform a measurement just on the first qubit, we can\n // see how the state collapses.\n let firstQubitResult = M(qs[0]);\n DumpMachine();\n\n // Measuring the last qubit does not change the quantum state\n // since the state of the second qubit collapsed when the first qubit\n // was measured because they were entangled.\n let secondQubitResult = M(qs[1]);\n DumpMachine();\n\n // Reset qubits before they are released.\n ResetAll(qs);\n\n // Return results\n (parityResult, [firstQubitResult, secondQubitResult])\n}\n"
56
+ },
57
+ {
58
+ "title": "Teleportation",
59
+ "shots": 1,
60
+ "code": "/// # Sample\n/// Quantum Teleportation\n///\n/// # Description\n/// Quantum teleportation provides a way of moving a quantum state from one\n/// location to another without having to move physical particle(s) along with\n/// it. This is done with the help of previously shared quantum entanglement\n/// between the sending and the receiving locations, and classical\n/// communication.\n///\n/// This Q# program implements quantum teleportation.\nimport Std.Diagnostics.*;\nimport Std.Intrinsic.*;\nimport Std.Measurement.*;\n\noperation Main() : Result[] {\n // Use the `Teleport` operation to send different quantum states.\n let stateInitializerBasisTuples = [\n (\"|0〉\", I, PauliZ),\n (\"|1〉\", X, PauliZ),\n (\"|+〉\", SetToPlus, PauliX),\n (\"|-〉\", SetToMinus, PauliX)\n ];\n\n mutable results = [];\n for (state, initializer, basis) in stateInitializerBasisTuples {\n // Allocate the message and target qubits.\n use (message, target) = (Qubit(), Qubit());\n\n // Initialize the message and show its state using the `DumpMachine`\n // function.\n initializer(message);\n Message($\"Teleporting state {state}\");\n DumpRegister([message]);\n\n // Teleport the message and show the quantum state after\n // teleportation.\n Teleport(message, target);\n Message($\"Received state {state}\");\n DumpRegister([target]);\n\n // Measure target in the corresponding basis and reset the qubits to\n // continue teleporting more messages.\n let result = Measure([basis], [target]);\n results += [result];\n ResetAll([message, target]);\n }\n\n return results;\n}\n\n/// # Summary\n/// Sends the state of one qubit to a target qubit by using teleportation.\n///\n/// Notice that after calling Teleport, the state of `message` is collapsed.\n///\n/// # Input\n/// ## message\n/// A qubit whose state we wish to send.\n/// ## target\n/// A qubit initially in the |0〉 state that we want to send\n/// the state of message to.\noperation Teleport(message : Qubit, target : Qubit) : Unit {\n // Allocate an auxiliary qubit.\n use auxiliary = Qubit();\n\n // Create some entanglement that we can use to send our message.\n H(auxiliary);\n CNOT(auxiliary, target);\n\n // Encode the message into the entangled pair.\n CNOT(message, auxiliary);\n H(message);\n\n // Measure the qubits to extract the classical data we need to decode\n // the message by applying the corrections on the target qubit\n // accordingly.\n if M(auxiliary) == One {\n X(target);\n }\n\n if M(message) == One {\n Z(target);\n }\n\n // Reset auxiliary qubit before releasing.\n Reset(auxiliary);\n}\n\n/// # Summary\n/// Sets a qubit in state |0⟩ to |+⟩.\noperation SetToPlus(q : Qubit) : Unit is Adj + Ctl {\n H(q);\n}\n\n/// # Summary\n/// Sets a qubit in state |0⟩ to |−⟩.\noperation SetToMinus(q : Qubit) : Unit is Adj + Ctl {\n X(q);\n H(q);\n}\n"
36
61
  },
37
62
  {
38
63
  "title": "Random Number Generator (Advanced)",
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Microsoft.Quantum.Core.Length
3
3
  title: Length exported item
4
4
  description: "Q# Length exported item: This is an exported item. The actual definition is found here: [Std.Core.Length](xref:Qdk.Std.Core.Length)"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: export
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Microsoft.Quantum.Core.Repeated
3
3
  title: Repeated exported item
4
4
  description: "Q# Repeated exported item: This is an exported item. The actual definition is found here: [Std.Core.Repeated](xref:Qdk.Std.Core.Repeated)"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: export
8
8
  qsharp.package: __Std__
@@ -4,7 +4,7 @@ title: Microsoft.Quantum.Core namespace
4
4
  description: Table of contents for the Q# Microsoft.Quantum.Core namespace
5
5
  author: {AUTHOR}
6
6
  ms.author: {MS_AUTHOR}
7
- ms.date: 03/20/2025
7
+ ms.date: 03/31/2025
8
8
  ms.topic: landing-page
9
9
  ---
10
10
 
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.AddLE
3
3
  title: AddLE operation
4
4
  description: "Q# AddLE operation: Sets a zero-initialized little-endian register zs to the sum of little-endian registers xs and ys"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ApplyIfEqualL
3
3
  title: ApplyIfEqualL operation
4
4
  description: "Q# ApplyIfEqualL operation: Computes `if (c == x) { action(target) }`, that is, applies `action` to `target` if a BigInt value `c` is equal to the little-endian qubit register `x`"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ApplyIfEqualLE
3
3
  title: ApplyIfEqualLE operation
4
4
  description: "Q# ApplyIfEqualLE operation: Computes `if x == y { action(target) }`, that is, applies `action` to `target` if register `x` is equal to the register `y`. Both qubit registers should be in a little-endian format."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ApplyIfGreaterL
3
3
  title: ApplyIfGreaterL operation
4
4
  description: "Q# ApplyIfGreaterL operation: Computes `if (c > x) { action(target) }`, that is, applies `action` to `target` if a BigInt value `c` is greater than the little-endian qubit register `x`"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ApplyIfGreaterLE
3
3
  title: ApplyIfGreaterLE operation
4
4
  description: "Q# ApplyIfGreaterLE operation: Computes `if x > y { action(target) }`, that is, applies `action` to `target` if register `x` is greater than the register `y`. Both qubit registers should be in a little-endian format."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ApplyIfGreaterOrEqualL
3
3
  title: ApplyIfGreaterOrEqualL operation
4
4
  description: "Q# ApplyIfGreaterOrEqualL operation: Computes `if (c >= x) { action(target) }`, that is, applies `action` to `target` if a BigInt value `c` is greater or equal to the little-endian qubit register `x`"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ApplyIfGreaterOrEqualLE
3
3
  title: ApplyIfGreaterOrEqualLE operation
4
4
  description: "Q# ApplyIfGreaterOrEqualLE operation: Computes `if x >= y { action(target) }`, that is, applies `action` to `target` if register `x` is greater or equal to the register `y`. Both qubit registers should be in a little-endian format."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ApplyIfLessL
3
3
  title: ApplyIfLessL operation
4
4
  description: "Q# ApplyIfLessL operation: Computes `if (c < x) { action(target) }`, that is, applies `action` to `target` if a BigInt value `c` is less than the little-endian qubit register `x`"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ApplyIfLessLE
3
3
  title: ApplyIfLessLE operation
4
4
  description: "Q# ApplyIfLessLE operation: Computes `if x < y { action(target) }`, that is, applies `action` to `target` if register `x` is less than the register `y`. Both qubit registers should be in a little-endian format."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ApplyIfLessOrEqualL
3
3
  title: ApplyIfLessOrEqualL operation
4
4
  description: "Q# ApplyIfLessOrEqualL operation: Computes `if (c <= x) { action(target) }`, that is, applies `action` to `target` if a BigInt value `c` is less or equal to the little-endian qubit register `x`"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ApplyIfLessOrEqualLE
3
3
  title: ApplyIfLessOrEqualLE operation
4
4
  description: "Q# ApplyIfLessOrEqualLE operation: Computes `if x <= y { action(target) }`, that is, applies `action` to `target` if register `x` is less or equal to the register `y`. Both qubit registers should be in a little-endian format."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.FourierTDIncByLE
3
3
  title: FourierTDIncByLE operation
4
4
  description: "Q# FourierTDIncByLE operation: Increments a little-endian register ys by a little-endian register xs using Quantum Fourier Transform."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.IncByI
3
3
  title: IncByI operation
4
4
  description: "Q# IncByI operation: Increments a little-endian register ys by an integer number c"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.IncByIUsingIncByLE
3
3
  title: IncByIUsingIncByLE operation
4
4
  description: "Q# IncByIUsingIncByLE operation: Increments a little-endian register ys by an Int number c using provided adder."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.IncByL
3
3
  title: IncByL operation
4
4
  description: "Q# IncByL operation: Increments a little-endian register ys by a BigInt number c"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.IncByLE
3
3
  title: IncByLE operation
4
4
  description: "Q# IncByLE operation: Increments a little-endian register ys by a little-endian register xs"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.IncByLEUsingAddLE
3
3
  title: IncByLEUsingAddLE operation
4
4
  description: "Q# IncByLEUsingAddLE operation: Generic operation to turn two out-place adders into one in-place adder"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.IncByLUsingIncByLE
3
3
  title: IncByLUsingIncByLE operation
4
4
  description: "Q# IncByLUsingIncByLE operation: Increments a little-endian register ys by a BigInt number c using provided adder."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.LookAheadDKRSAddLE
3
3
  title: LookAheadDKRSAddLE operation
4
4
  description: "Q# LookAheadDKRSAddLE operation: Sets a zero-initialized little-endian register zs to the sum of little-endian registers xs and ys using the carry-lookahead algorithm."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.MAJ
3
3
  title: MAJ operation
4
4
  description: "Q# MAJ operation: This applies the in-place majority operation to 3 qubits."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.ReflectAboutInteger
3
3
  title: ReflectAboutInteger operation
4
4
  description: "Q# ReflectAboutInteger operation: Reflects a quantum register about a given classical integer."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.RippleCarryCGAddLE
3
3
  title: RippleCarryCGAddLE operation
4
4
  description: "Q# RippleCarryCGAddLE operation: Sets a zero-initialized little-endian register zs to the sum of little-endian registers xs and ys using the ripple-carry algorithm."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.RippleCarryCGIncByLE
3
3
  title: RippleCarryCGIncByLE operation
4
4
  description: "Q# RippleCarryCGIncByLE operation: Increments a little-endian register ys by a little-endian register xs using the ripple-carry algorithm."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arithmetic.RippleCarryTTKIncByLE
3
3
  title: RippleCarryTTKIncByLE operation
4
4
  description: "Q# RippleCarryTTKIncByLE operation: Reversible, in-place ripple-carry addition of two integers."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -4,7 +4,7 @@ title: Std.Arithmetic namespace
4
4
  description: Table of contents for the Q# Arithmetic namespace
5
5
  author: {AUTHOR}
6
6
  ms.author: {MS_AUTHOR}
7
- ms.date: 03/20/2025
7
+ ms.date: 03/31/2025
8
8
  ms.topic: landing-page
9
9
  ---
10
10
 
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.All
3
3
  title: All function
4
4
  description: "Q# All function: Given an array and a predicate that is defined for the elements of the array, and checks if all elements of the array satisfy the predicate."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.Any
3
3
  title: Any function
4
4
  description: "Q# Any function: Given an array and a predicate that is defined for the elements of the array, checks if at least one element of the array satisfies the predicate."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.Chunks
3
3
  title: Chunks function
4
4
  description: "Q# Chunks function: Splits an array into multiple parts of equal length."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.CircularlyShifted
3
3
  title: CircularlyShifted function
4
4
  description: "Q# CircularlyShifted function: Shift an array circularly left or right by a specific step size."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.ColumnAt
3
3
  title: ColumnAt function
4
4
  description: "Q# ColumnAt function: Extracts a column from a matrix."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.Count
3
3
  title: Count function
4
4
  description: "Q# Count function: Given an array and a predicate that is defined for the elements of the array, returns the number of elements an array that consists of those elements that satisfy the predicate."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.Diagonal
3
3
  title: Diagonal function
4
4
  description: "Q# Diagonal function: Returns an array of diagonal elements of a 2-dimensional array"
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.DrawMany
3
3
  title: DrawMany operation
4
4
  description: "Q# DrawMany operation: Repeats an operation for a given number of samples, collecting its outputs in an array."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.Enumerated
3
3
  title: Enumerated function
4
4
  description: "Q# Enumerated function: Given an array, returns a new array containing elements of the original array along with the indices of each element."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.Excluding
3
3
  title: Excluding function
4
4
  description: "Q# Excluding function: Returns an array containing the elements of another array, excluding elements at a given list of indices."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.Filtered
3
3
  title: Filtered function
4
4
  description: "Q# Filtered function: Given an array and a predicate that is defined for the elements of the array, returns an array that consists of those elements that satisfy the predicate."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.FlatMapped
3
3
  title: FlatMapped function
4
4
  description: "Q# FlatMapped function: Given an array and a function that maps an array element to some output array, returns the concatenated output arrays for each array element."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.Flattened
3
3
  title: Flattened function
4
4
  description: "Q# Flattened function: Given an array of arrays, returns the concatenation of all arrays."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.Fold
3
3
  title: Fold function
4
4
  description: "Q# Fold function: Iterates a function `f` through an array `array`, returning `f(...f(f(initialState, array[0]), array[1]), ...)`."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.ForEach
3
3
  title: ForEach operation
4
4
  description: "Q# ForEach operation: Given an array and an operation that is defined for the elements of the array, returns a new array that consists of the images of the original array under the operation."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: operation
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.Head
3
3
  title: Head function
4
4
  description: "Q# Head function: Returns the first element of the array."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.Arrays.HeadAndRest
3
3
  title: HeadAndRest function
4
4
  description: "Q# HeadAndRest function: Returns a tuple of first and all remaining elements of the array."
5
- ms.date: 03/20/2025
5
+ ms.date: 03/31/2025
6
6
  ms.topic: managed-reference
7
7
  qsharp.kind: function
8
8
  qsharp.package: __Std__