qsharp-lang 1.3.5-dev → 1.3.6-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 (277) hide show
  1. package/dist/browser.d.ts +2 -2
  2. package/dist/compiler/compiler.d.ts +10 -4
  3. package/dist/compiler/compiler.js +15 -6
  4. package/dist/katas-content.generated.js +273 -77
  5. package/docs/Microsoft.Quantum.Arrays/All.md +1 -1
  6. package/docs/Microsoft.Quantum.Arrays/Any.md +1 -1
  7. package/docs/Microsoft.Quantum.Arrays/Chunks.md +1 -1
  8. package/docs/Microsoft.Quantum.Arrays/CircularlyShifted.md +1 -1
  9. package/docs/Microsoft.Quantum.Arrays/ColumnAt.md +1 -1
  10. package/docs/Microsoft.Quantum.Arrays/Count.md +1 -1
  11. package/docs/Microsoft.Quantum.Arrays/Diagonal.md +1 -1
  12. package/docs/Microsoft.Quantum.Arrays/DrawMany.md +1 -1
  13. package/docs/Microsoft.Quantum.Arrays/Enumerated.md +1 -1
  14. package/docs/Microsoft.Quantum.Arrays/Excluding.md +1 -1
  15. package/docs/Microsoft.Quantum.Arrays/Filtered.md +1 -1
  16. package/docs/Microsoft.Quantum.Arrays/FlatMapped.md +1 -1
  17. package/docs/Microsoft.Quantum.Arrays/Flattened.md +1 -1
  18. package/docs/Microsoft.Quantum.Arrays/Fold.md +1 -1
  19. package/docs/Microsoft.Quantum.Arrays/ForEach.md +1 -1
  20. package/docs/Microsoft.Quantum.Arrays/Head.md +1 -1
  21. package/docs/Microsoft.Quantum.Arrays/HeadAndRest.md +1 -1
  22. package/docs/Microsoft.Quantum.Arrays/IndexOf.md +1 -1
  23. package/docs/Microsoft.Quantum.Arrays/IndexRange.md +1 -1
  24. package/docs/Microsoft.Quantum.Arrays/Interleaved.md +1 -1
  25. package/docs/Microsoft.Quantum.Arrays/IsEmpty.md +1 -1
  26. package/docs/Microsoft.Quantum.Arrays/IsRectangularArray.md +1 -1
  27. package/docs/Microsoft.Quantum.Arrays/IsSorted.md +1 -1
  28. package/docs/Microsoft.Quantum.Arrays/IsSquareArray.md +1 -1
  29. package/docs/Microsoft.Quantum.Arrays/Mapped.md +1 -1
  30. package/docs/Microsoft.Quantum.Arrays/MappedByIndex.md +1 -1
  31. package/docs/Microsoft.Quantum.Arrays/MappedOverRange.md +1 -1
  32. package/docs/Microsoft.Quantum.Arrays/Most.md +1 -1
  33. package/docs/Microsoft.Quantum.Arrays/MostAndTail.md +1 -1
  34. package/docs/Microsoft.Quantum.Arrays/Padded.md +1 -1
  35. package/docs/Microsoft.Quantum.Arrays/Partitioned.md +1 -1
  36. package/docs/Microsoft.Quantum.Arrays/Rest.md +1 -1
  37. package/docs/Microsoft.Quantum.Arrays/Reversed.md +1 -1
  38. package/docs/Microsoft.Quantum.Arrays/SequenceI.md +1 -1
  39. package/docs/Microsoft.Quantum.Arrays/SequenceL.md +1 -1
  40. package/docs/Microsoft.Quantum.Arrays/Sorted.md +1 -1
  41. package/docs/Microsoft.Quantum.Arrays/Subarray.md +1 -1
  42. package/docs/Microsoft.Quantum.Arrays/Swapped.md +1 -1
  43. package/docs/Microsoft.Quantum.Arrays/Tail.md +1 -1
  44. package/docs/Microsoft.Quantum.Arrays/Transposed.md +1 -1
  45. package/docs/Microsoft.Quantum.Arrays/Unzipped.md +1 -1
  46. package/docs/Microsoft.Quantum.Arrays/Where.md +1 -1
  47. package/docs/Microsoft.Quantum.Arrays/Windows.md +1 -1
  48. package/docs/Microsoft.Quantum.Arrays/Zipped.md +1 -1
  49. package/docs/Microsoft.Quantum.Canon/ApplyCNOTChain.md +1 -1
  50. package/docs/Microsoft.Quantum.Canon/ApplyControlledOnBitString.md +1 -1
  51. package/docs/Microsoft.Quantum.Canon/ApplyControlledOnInt.md +1 -1
  52. package/docs/Microsoft.Quantum.Canon/ApplyP.md +1 -1
  53. package/docs/Microsoft.Quantum.Canon/ApplyPauli.md +1 -1
  54. package/docs/Microsoft.Quantum.Canon/ApplyPauliFromBitString.md +1 -1
  55. package/docs/Microsoft.Quantum.Canon/ApplyPauliFromInt.md +1 -1
  56. package/docs/Microsoft.Quantum.Canon/ApplyQFT.md +1 -1
  57. package/docs/Microsoft.Quantum.Canon/ApplyToEach.md +1 -1
  58. package/docs/Microsoft.Quantum.Canon/ApplyToEachA.md +1 -1
  59. package/docs/Microsoft.Quantum.Canon/ApplyToEachC.md +1 -1
  60. package/docs/Microsoft.Quantum.Canon/ApplyToEachCA.md +1 -1
  61. package/docs/Microsoft.Quantum.Canon/ApplyXorInPlace.md +1 -1
  62. package/docs/Microsoft.Quantum.Canon/ApplyXorInPlaceL.md +1 -1
  63. package/docs/Microsoft.Quantum.Canon/CX.md +1 -1
  64. package/docs/Microsoft.Quantum.Canon/CY.md +1 -1
  65. package/docs/Microsoft.Quantum.Canon/CZ.md +1 -1
  66. package/docs/Microsoft.Quantum.Canon/Fst.md +1 -1
  67. package/docs/Microsoft.Quantum.Canon/Snd.md +1 -1
  68. package/docs/Microsoft.Quantum.Canon/SwapReverseRegister.md +1 -1
  69. package/docs/Microsoft.Quantum.Convert/BigIntAsBoolArray.md +1 -1
  70. package/docs/Microsoft.Quantum.Convert/BoolArrayAsBigInt.md +1 -1
  71. package/docs/Microsoft.Quantum.Convert/BoolArrayAsInt.md +1 -1
  72. package/docs/Microsoft.Quantum.Convert/BoolArrayAsResultArray.md +1 -1
  73. package/docs/Microsoft.Quantum.Convert/BoolAsResult.md +1 -1
  74. package/docs/Microsoft.Quantum.Convert/ComplexAsComplexPolar.md +1 -1
  75. package/docs/Microsoft.Quantum.Convert/ComplexPolarAsComplex.md +1 -1
  76. package/docs/Microsoft.Quantum.Convert/IntAsBigInt.md +1 -1
  77. package/docs/Microsoft.Quantum.Convert/IntAsBoolArray.md +1 -1
  78. package/docs/Microsoft.Quantum.Convert/IntAsDouble.md +1 -1
  79. package/docs/Microsoft.Quantum.Convert/ResultArrayAsBoolArray.md +1 -1
  80. package/docs/Microsoft.Quantum.Convert/ResultArrayAsInt.md +1 -1
  81. package/docs/Microsoft.Quantum.Convert/ResultAsBool.md +1 -1
  82. package/docs/Microsoft.Quantum.Core/IsRangeEmpty.md +1 -1
  83. package/docs/Microsoft.Quantum.Core/Length.md +1 -1
  84. package/docs/Microsoft.Quantum.Core/RangeEnd.md +1 -1
  85. package/docs/Microsoft.Quantum.Core/RangeReverse.md +1 -1
  86. package/docs/Microsoft.Quantum.Core/RangeStart.md +1 -1
  87. package/docs/Microsoft.Quantum.Core/RangeStep.md +1 -1
  88. package/docs/Microsoft.Quantum.Core/Repeated.md +1 -1
  89. package/docs/Microsoft.Quantum.Diagnostics/CheckAllZero.md +1 -1
  90. package/docs/Microsoft.Quantum.Diagnostics/CheckOperationsAreEqual.md +1 -1
  91. package/docs/Microsoft.Quantum.Diagnostics/CheckZero.md +1 -1
  92. package/docs/Microsoft.Quantum.Diagnostics/DumpMachine.md +1 -1
  93. package/docs/Microsoft.Quantum.Diagnostics/DumpRegister.md +1 -1
  94. package/docs/Microsoft.Quantum.Diagnostics/Fact.md +1 -1
  95. package/docs/Microsoft.Quantum.Intrinsic/CCNOT.md +1 -1
  96. package/docs/Microsoft.Quantum.Intrinsic/CNOT.md +1 -1
  97. package/docs/Microsoft.Quantum.Intrinsic/Exp.md +1 -1
  98. package/docs/Microsoft.Quantum.Intrinsic/H.md +1 -1
  99. package/docs/Microsoft.Quantum.Intrinsic/I.md +1 -1
  100. package/docs/Microsoft.Quantum.Intrinsic/M.md +1 -1
  101. package/docs/Microsoft.Quantum.Intrinsic/Measure.md +1 -1
  102. package/docs/Microsoft.Quantum.Intrinsic/Message.md +1 -1
  103. package/docs/Microsoft.Quantum.Intrinsic/R.md +1 -1
  104. package/docs/Microsoft.Quantum.Intrinsic/R1.md +1 -1
  105. package/docs/Microsoft.Quantum.Intrinsic/R1Frac.md +1 -1
  106. package/docs/Microsoft.Quantum.Intrinsic/RFrac.md +1 -1
  107. package/docs/Microsoft.Quantum.Intrinsic/Reset.md +1 -1
  108. package/docs/Microsoft.Quantum.Intrinsic/ResetAll.md +1 -1
  109. package/docs/Microsoft.Quantum.Intrinsic/Rx.md +1 -1
  110. package/docs/Microsoft.Quantum.Intrinsic/Rxx.md +1 -1
  111. package/docs/Microsoft.Quantum.Intrinsic/Ry.md +1 -1
  112. package/docs/Microsoft.Quantum.Intrinsic/Ryy.md +1 -1
  113. package/docs/Microsoft.Quantum.Intrinsic/Rz.md +1 -1
  114. package/docs/Microsoft.Quantum.Intrinsic/Rzz.md +1 -1
  115. package/docs/Microsoft.Quantum.Intrinsic/S.md +1 -1
  116. package/docs/Microsoft.Quantum.Intrinsic/SWAP.md +1 -1
  117. package/docs/Microsoft.Quantum.Intrinsic/T.md +1 -1
  118. package/docs/Microsoft.Quantum.Intrinsic/X.md +1 -1
  119. package/docs/Microsoft.Quantum.Intrinsic/Y.md +1 -1
  120. package/docs/Microsoft.Quantum.Intrinsic/Z.md +1 -1
  121. package/docs/Microsoft.Quantum.Logical/Xor.md +1 -1
  122. package/docs/Microsoft.Quantum.Math/AbsComplex.md +1 -1
  123. package/docs/Microsoft.Quantum.Math/AbsComplexPolar.md +1 -1
  124. package/docs/Microsoft.Quantum.Math/AbsD.md +1 -1
  125. package/docs/Microsoft.Quantum.Math/AbsI.md +1 -1
  126. package/docs/Microsoft.Quantum.Math/AbsL.md +1 -1
  127. package/docs/Microsoft.Quantum.Math/AbsSquaredComplex.md +1 -1
  128. package/docs/Microsoft.Quantum.Math/AbsSquaredComplexPolar.md +1 -1
  129. package/docs/Microsoft.Quantum.Math/ApproximateFactorial.md +1 -1
  130. package/docs/Microsoft.Quantum.Math/ArcCos.md +1 -1
  131. package/docs/Microsoft.Quantum.Math/ArcCosh.md +1 -1
  132. package/docs/Microsoft.Quantum.Math/ArcSin.md +1 -1
  133. package/docs/Microsoft.Quantum.Math/ArcSinh.md +1 -1
  134. package/docs/Microsoft.Quantum.Math/ArcTan.md +1 -1
  135. package/docs/Microsoft.Quantum.Math/ArcTan2.md +1 -1
  136. package/docs/Microsoft.Quantum.Math/ArcTanh.md +1 -1
  137. package/docs/Microsoft.Quantum.Math/ArgComplex.md +1 -1
  138. package/docs/Microsoft.Quantum.Math/ArgComplexPolar.md +1 -1
  139. package/docs/Microsoft.Quantum.Math/Binom.md +1 -1
  140. package/docs/Microsoft.Quantum.Math/BitSizeI.md +1 -1
  141. package/docs/Microsoft.Quantum.Math/BitSizeL.md +1 -1
  142. package/docs/Microsoft.Quantum.Math/Ceiling.md +1 -1
  143. package/docs/Microsoft.Quantum.Math/Complex.md +1 -1
  144. package/docs/Microsoft.Quantum.Math/ComplexPolar.md +1 -1
  145. package/docs/Microsoft.Quantum.Math/ContinuedFractionConvergentI.md +1 -1
  146. package/docs/Microsoft.Quantum.Math/ContinuedFractionConvergentL.md +1 -1
  147. package/docs/Microsoft.Quantum.Math/Cos.md +1 -1
  148. package/docs/Microsoft.Quantum.Math/Cosh.md +1 -1
  149. package/docs/Microsoft.Quantum.Math/DivRemI.md +1 -1
  150. package/docs/Microsoft.Quantum.Math/DivRemL.md +1 -1
  151. package/docs/Microsoft.Quantum.Math/DividedByC.md +1 -1
  152. package/docs/Microsoft.Quantum.Math/DividedByCP.md +1 -1
  153. package/docs/Microsoft.Quantum.Math/E.md +1 -1
  154. package/docs/Microsoft.Quantum.Math/ExpModI.md +1 -1
  155. package/docs/Microsoft.Quantum.Math/ExpModL.md +1 -1
  156. package/docs/Microsoft.Quantum.Math/ExtendedGreatestCommonDivisorI.md +1 -1
  157. package/docs/Microsoft.Quantum.Math/ExtendedGreatestCommonDivisorL.md +1 -1
  158. package/docs/Microsoft.Quantum.Math/FactorialI.md +1 -1
  159. package/docs/Microsoft.Quantum.Math/FactorialL.md +1 -1
  160. package/docs/Microsoft.Quantum.Math/Floor.md +1 -1
  161. package/docs/Microsoft.Quantum.Math/GreatestCommonDivisorI.md +1 -1
  162. package/docs/Microsoft.Quantum.Math/GreatestCommonDivisorL.md +1 -1
  163. package/docs/Microsoft.Quantum.Math/HammingWeightI.md +1 -1
  164. package/docs/Microsoft.Quantum.Math/InverseModI.md +1 -1
  165. package/docs/Microsoft.Quantum.Math/InverseModL.md +1 -1
  166. package/docs/Microsoft.Quantum.Math/IsCoprimeI.md +1 -1
  167. package/docs/Microsoft.Quantum.Math/IsCoprimeL.md +1 -1
  168. package/docs/Microsoft.Quantum.Math/IsInfinite.md +1 -1
  169. package/docs/Microsoft.Quantum.Math/IsNaN.md +1 -1
  170. package/docs/Microsoft.Quantum.Math/LargestFixedPoint.md +1 -1
  171. package/docs/Microsoft.Quantum.Math/Lg.md +1 -1
  172. package/docs/Microsoft.Quantum.Math/Log.md +1 -1
  173. package/docs/Microsoft.Quantum.Math/Log10.md +1 -1
  174. package/docs/Microsoft.Quantum.Math/LogFactorialD.md +1 -1
  175. package/docs/Microsoft.Quantum.Math/LogGammaD.md +1 -1
  176. package/docs/Microsoft.Quantum.Math/LogOf2.md +1 -1
  177. package/docs/Microsoft.Quantum.Math/Max.md +1 -1
  178. package/docs/Microsoft.Quantum.Math/MaxD.md +1 -1
  179. package/docs/Microsoft.Quantum.Math/MaxI.md +1 -1
  180. package/docs/Microsoft.Quantum.Math/MaxL.md +1 -1
  181. package/docs/Microsoft.Quantum.Math/Min.md +1 -1
  182. package/docs/Microsoft.Quantum.Math/MinD.md +1 -1
  183. package/docs/Microsoft.Quantum.Math/MinI.md +1 -1
  184. package/docs/Microsoft.Quantum.Math/MinL.md +1 -1
  185. package/docs/Microsoft.Quantum.Math/MinusC.md +1 -1
  186. package/docs/Microsoft.Quantum.Math/MinusCP.md +1 -1
  187. package/docs/Microsoft.Quantum.Math/ModulusI.md +1 -1
  188. package/docs/Microsoft.Quantum.Math/ModulusL.md +1 -1
  189. package/docs/Microsoft.Quantum.Math/NegationC.md +1 -1
  190. package/docs/Microsoft.Quantum.Math/NegationCP.md +1 -1
  191. package/docs/Microsoft.Quantum.Math/PI.md +1 -1
  192. package/docs/Microsoft.Quantum.Math/PNorm.md +1 -1
  193. package/docs/Microsoft.Quantum.Math/PNormalized.md +1 -1
  194. package/docs/Microsoft.Quantum.Math/PlusC.md +1 -1
  195. package/docs/Microsoft.Quantum.Math/PlusCP.md +1 -1
  196. package/docs/Microsoft.Quantum.Math/PowC.md +1 -1
  197. package/docs/Microsoft.Quantum.Math/PowCP.md +1 -1
  198. package/docs/Microsoft.Quantum.Math/RealMod.md +1 -1
  199. package/docs/Microsoft.Quantum.Math/Round.md +1 -1
  200. package/docs/Microsoft.Quantum.Math/SignD.md +1 -1
  201. package/docs/Microsoft.Quantum.Math/SignI.md +1 -1
  202. package/docs/Microsoft.Quantum.Math/SignL.md +1 -1
  203. package/docs/Microsoft.Quantum.Math/Sin.md +1 -1
  204. package/docs/Microsoft.Quantum.Math/Sinh.md +1 -1
  205. package/docs/Microsoft.Quantum.Math/SmallestFixedPoint.md +1 -1
  206. package/docs/Microsoft.Quantum.Math/Sqrt.md +1 -1
  207. package/docs/Microsoft.Quantum.Math/SquaredNorm.md +1 -1
  208. package/docs/Microsoft.Quantum.Math/Tan.md +1 -1
  209. package/docs/Microsoft.Quantum.Math/Tanh.md +1 -1
  210. package/docs/Microsoft.Quantum.Math/TimesC.md +1 -1
  211. package/docs/Microsoft.Quantum.Math/TimesCP.md +1 -1
  212. package/docs/Microsoft.Quantum.Math/TrailingZeroCountI.md +1 -1
  213. package/docs/Microsoft.Quantum.Math/TrailingZeroCountL.md +1 -1
  214. package/docs/Microsoft.Quantum.Math/Truncate.md +1 -1
  215. package/docs/Microsoft.Quantum.Measurement/MResetEachZ.md +1 -1
  216. package/docs/Microsoft.Quantum.Measurement/MResetX.md +1 -1
  217. package/docs/Microsoft.Quantum.Measurement/MResetY.md +1 -1
  218. package/docs/Microsoft.Quantum.Measurement/MResetZ.md +1 -1
  219. package/docs/Microsoft.Quantum.Measurement/MeasureAllZ.md +1 -1
  220. package/docs/Microsoft.Quantum.Measurement/MeasureEachZ.md +1 -1
  221. package/docs/Microsoft.Quantum.Measurement/MeasureInteger.md +1 -1
  222. package/docs/Microsoft.Quantum.Random/DrawRandomDouble.md +1 -1
  223. package/docs/Microsoft.Quantum.Random/DrawRandomInt.md +1 -1
  224. package/docs/Microsoft.Quantum.ResourceEstimation/AccountForEstimates.md +1 -1
  225. package/docs/Microsoft.Quantum.ResourceEstimation/AuxQubitCount.md +1 -1
  226. package/docs/Microsoft.Quantum.ResourceEstimation/BeginEstimateCaching.md +1 -1
  227. package/docs/Microsoft.Quantum.ResourceEstimation/BeginRepeatEstimates.md +1 -1
  228. package/docs/Microsoft.Quantum.ResourceEstimation/CczCount.md +1 -1
  229. package/docs/Microsoft.Quantum.ResourceEstimation/EndEstimateCaching.md +1 -1
  230. package/docs/Microsoft.Quantum.ResourceEstimation/EndRepeatEstimates.md +1 -1
  231. package/docs/Microsoft.Quantum.ResourceEstimation/MeasurementCount.md +1 -1
  232. package/docs/Microsoft.Quantum.ResourceEstimation/PSSPCLayout.md +1 -1
  233. package/docs/Microsoft.Quantum.ResourceEstimation/RepeatEstimates.md +1 -1
  234. package/docs/Microsoft.Quantum.ResourceEstimation/RotationCount.md +1 -1
  235. package/docs/Microsoft.Quantum.ResourceEstimation/RotationDepth.md +1 -1
  236. package/docs/Microsoft.Quantum.ResourceEstimation/SingleVariant.md +1 -1
  237. package/docs/Microsoft.Quantum.ResourceEstimation/TCount.md +1 -1
  238. package/docs/Microsoft.Quantum.Unstable.Arithmetic/AddLE.md +1 -1
  239. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfEqualL.md +1 -1
  240. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfEqualLE.md +1 -1
  241. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterL.md +1 -1
  242. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterLE.md +1 -1
  243. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterOrEqualL.md +1 -1
  244. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterOrEqualLE.md +1 -1
  245. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessL.md +1 -1
  246. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessLE.md +1 -1
  247. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessOrEqualL.md +1 -1
  248. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessOrEqualLE.md +1 -1
  249. package/docs/Microsoft.Quantum.Unstable.Arithmetic/FourierTDIncByLE.md +1 -1
  250. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByI.md +1 -1
  251. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByIUsingIncByLE.md +1 -1
  252. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByL.md +1 -1
  253. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByLE.md +1 -1
  254. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByLEUsingAddLE.md +1 -1
  255. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByLUsingIncByLE.md +1 -1
  256. package/docs/Microsoft.Quantum.Unstable.Arithmetic/LookAheadDKRSAddLE.md +1 -1
  257. package/docs/Microsoft.Quantum.Unstable.Arithmetic/MAJ.md +1 -1
  258. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ReflectAboutInteger.md +1 -1
  259. package/docs/Microsoft.Quantum.Unstable.Arithmetic/RippleCarryCGAddLE.md +1 -1
  260. package/docs/Microsoft.Quantum.Unstable.Arithmetic/RippleCarryCGIncByLE.md +1 -1
  261. package/docs/Microsoft.Quantum.Unstable.Arithmetic/RippleCarryTTKIncByLE.md +1 -1
  262. package/docs/Microsoft.Quantum.Unstable.StatePreparation/ApproximatelyPreparePureStateCP.md +1 -1
  263. package/docs/Microsoft.Quantum.Unstable.StatePreparation/PreparePureStateD.md +1 -1
  264. package/docs/Microsoft.Quantum.Unstable.TableLookup/Select.md +1 -1
  265. package/lib/node/qsc_wasm.cjs +60 -21
  266. package/lib/node/qsc_wasm.d.cts +21 -7
  267. package/lib/node/qsc_wasm_bg.wasm +0 -0
  268. package/lib/web/qsc_wasm.d.ts +25 -10
  269. package/lib/web/qsc_wasm.js +60 -21
  270. package/lib/web/qsc_wasm_bg.wasm +0 -0
  271. package/package.json +3 -3
  272. package/ux/circuit.tsx +157 -59
  273. package/ux/data.ts +4 -1
  274. package/ux/estimatesPanel.tsx +2 -10
  275. package/ux/qsharp-ux.css +8 -0
  276. package/ux/spinner.tsx +17 -0
  277. package/ux/tsconfig.json +2 -1
package/ux/circuit.tsx CHANGED
@@ -2,8 +2,9 @@
2
2
  // Licensed under the MIT License.
3
3
 
4
4
  import * as qviz from "@microsoft/quantum-viz.js/lib";
5
- import { useEffect, useRef } from "preact/hooks";
5
+ import { useEffect, useRef, useState } from "preact/hooks";
6
6
  import { CircuitProps } from "./data.js";
7
+ import { Spinner } from "./spinner.js";
7
8
 
8
9
  // For perf reasons we set a limit on how many gates/qubits
9
10
  // we attempt to render. This is still a lot higher than a human would
@@ -12,56 +13,165 @@ import { CircuitProps } from "./data.js";
12
13
  const MAX_OPERATIONS = 10000;
13
14
  const MAX_QUBITS = 1000;
14
15
 
15
- /* This component is shared by the Python widget and the VS Code panel */
16
+ // This component is shared by the Python widget and the VS Code panel
16
17
  export function Circuit(props: { circuit: qviz.Circuit }) {
18
+ const circuit = props.circuit;
19
+ const unrenderable =
20
+ circuit.qubits.length === 0 ||
21
+ circuit.operations.length > MAX_OPERATIONS ||
22
+ circuit.qubits.length > MAX_QUBITS;
23
+
24
+ return (
25
+ <div>
26
+ {unrenderable ? (
27
+ <Unrenderable
28
+ qubits={props.circuit.qubits.length}
29
+ operations={props.circuit.operations.length}
30
+ />
31
+ ) : (
32
+ <ZoomableCircuit circuit={props.circuit} />
33
+ )}
34
+ </div>
35
+ );
36
+ }
37
+
38
+ function ZoomableCircuit(props: { circuit: qviz.Circuit }) {
17
39
  const circuitDiv = useRef<HTMLDivElement>(null);
40
+ const [zoomLevel, setZoomLevel] = useState(100);
41
+ const [rendering, setRendering] = useState(true);
42
+
43
+ useEffect(() => {
44
+ // Enable "rendering" text while the circuit is being drawn
45
+ setRendering(true);
46
+ const container = circuitDiv.current!;
47
+ container.innerHTML = "";
48
+ }, [props.circuit]);
49
+
50
+ useEffect(() => {
51
+ if (rendering) {
52
+ const container = circuitDiv.current!;
53
+ // Draw the circuit - may take a while for large circuits
54
+ const svg = renderCircuit(props.circuit, container);
55
+ // Calculate the initial zoom level based on the container width
56
+ const initialZoom = calculateZoomToFit(container, svg as SVGElement);
57
+ // Set the initial zoom level
58
+ setZoomLevel(initialZoom);
59
+ // Resize the SVG to fit
60
+ updateWidth();
61
+ // Disable "rendering" text
62
+ setRendering(false);
63
+ }
64
+ }, [rendering]);
65
+
66
+ useEffect(() => {
67
+ updateWidth();
68
+ }, [zoomLevel]);
69
+
70
+ return (
71
+ <div>
72
+ <div>
73
+ {rendering ? null : (
74
+ <ZoomControl zoom={zoomLevel} onChange={setZoomLevel} />
75
+ )}
76
+ </div>
77
+ <div>
78
+ {rendering
79
+ ? `Rendering diagram with ${props.circuit.operations.length} gates...`
80
+ : ""}
81
+ </div>
82
+ <div class="qs-circuit" ref={circuitDiv}></div>
83
+ </div>
84
+ );
85
+
86
+ function updateWidth() {
87
+ const svg = circuitDiv.current?.querySelector(".qviz");
88
+ if (svg) {
89
+ // The width attribute contains the true width, generated by qviz.
90
+ // We'll leave this attribute untouched, so we can use it again if the
91
+ // zoom level is ever updated.
92
+ const width = svg.getAttribute("width")!;
93
+
94
+ // We'll set the width in the style attribute to (true width * zoom level).
95
+ // This value takes precedence over the true width in the width attribute.
96
+ svg.setAttribute(
97
+ "style",
98
+ `max-width: ${width}; width: ${(parseInt(width) * (zoomLevel || 100)) / 100}; height: auto`,
99
+ );
100
+ }
101
+ }
102
+
103
+ function renderCircuit(circuit: qviz.Circuit, container: HTMLDivElement) {
104
+ qviz.draw(circuit, container);
18
105
 
106
+ // quantum-viz hardcodes the styles in the SVG.
107
+ // Remove the style elements -- we'll define the styles in our own CSS.
108
+ const styleElements = container.querySelectorAll("style");
109
+ styleElements?.forEach((tag) => tag.remove());
110
+
111
+ return container.getElementsByClassName("qviz")[0]!;
112
+ }
113
+
114
+ function calculateZoomToFit(container: HTMLDivElement, svg: SVGElement) {
115
+ const containerWidth = container.clientWidth;
116
+ // width and height are the true dimensions generated by qviz
117
+ const width = parseInt(svg.getAttribute("width")!);
118
+ const height = svg.getAttribute("height")!;
119
+
120
+ svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
121
+ const zoom = Math.min(Math.ceil((containerWidth / width) * 100), 100);
122
+ return zoom;
123
+ }
124
+ }
125
+
126
+ function Unrenderable(props: { qubits: number; operations: number }) {
19
127
  const errorDiv =
20
- props.circuit.qubits.length === 0 ? (
128
+ props.qubits === 0 ? (
21
129
  <div>
22
130
  <p>No circuit to display. No qubits have been allocated.</p>
23
131
  </div>
24
- ) : props.circuit.operations.length > MAX_OPERATIONS ? (
132
+ ) : props.operations > MAX_OPERATIONS ? (
25
133
  <div>
26
134
  <p>
27
- This circuit has too many gates to display. It has{" "}
28
- {props.circuit.operations.length} gates, but the maximum supported is{" "}
29
- {MAX_OPERATIONS}.
135
+ This circuit has too many gates to display. It has {props.operations}{" "}
136
+ gates, but the maximum supported is {MAX_OPERATIONS}.
30
137
  </p>
31
138
  </div>
32
- ) : props.circuit.qubits.length > MAX_QUBITS ? (
139
+ ) : props.qubits > MAX_QUBITS ? (
33
140
  <div>
34
141
  <p>
35
- This circuit has too many qubits to display. It has{" "}
36
- {props.circuit.qubits.length} qubits, but the maximum supported is{" "}
37
- {MAX_QUBITS}.
142
+ This circuit has too many qubits to display. It has {props.qubits}{" "}
143
+ qubits, but the maximum supported is {MAX_QUBITS}.
38
144
  </p>
39
145
  </div>
40
146
  ) : undefined;
41
147
 
42
- useEffect(() => {
43
- if (errorDiv !== undefined) {
44
- circuitDiv.current!.innerHTML = "";
45
- return;
46
- }
47
-
48
- qviz.draw(props.circuit, circuitDiv.current!);
49
-
50
- // quantum-viz hardcodes the styles in the SVG.
51
- // Remove the style elements -- we'll define the styles in our own CSS.
52
- const styleElements = circuitDiv.current?.querySelectorAll("style");
53
- styleElements?.forEach((tag) => tag.remove());
54
- }, [props.circuit]);
148
+ return <div class="qs-circuit-error">{errorDiv}</div>;
149
+ }
55
150
 
151
+ function ZoomControl(props: {
152
+ zoom: number;
153
+ onChange: (zoom: number) => void;
154
+ }) {
56
155
  return (
57
- <div>
58
- <div class="qs-circuit-error">{errorDiv}</div>
59
- <div class="qs-circuit" ref={circuitDiv}></div>
60
- </div>
156
+ <p>
157
+ <label htmlFor="qs-circuit-zoom">Zoom </label>
158
+ <input
159
+ id="qs-circuit-zoom"
160
+ type="number"
161
+ min="10"
162
+ max="100"
163
+ step="10"
164
+ value={props.zoom}
165
+ onInput={(e) =>
166
+ props.onChange(parseInt((e.target as HTMLInputElement).value) || 0)
167
+ }
168
+ />
169
+ %
170
+ </p>
61
171
  );
62
172
  }
63
173
 
64
- /* This component is exclusive to the VS Code panel */
174
+ // This component is exclusive to the VS Code panel
65
175
  export function CircuitPanel(props: CircuitProps) {
66
176
  const error = props.errorHtml ? (
67
177
  <div>
@@ -78,41 +188,29 @@ export function CircuitPanel(props: CircuitProps) {
78
188
  return (
79
189
  <div class="qs-circuit-panel">
80
190
  <div>
81
- <h1>{props.title}</h1>
191
+ <h1>
192
+ {props.title} {props.simulated ? "(Trace)" : ""}
193
+ </h1>
82
194
  </div>
83
- {props.circuit ? <Circuit circuit={props.circuit}></Circuit> : null}
84
195
  <div class="qs-circuit-error">{error}</div>
85
196
  <p>{props.targetProfile}</p>
86
- {props.simulating ? (
87
- <p>
88
- This circuit diagram was generated while running the program in the
89
- simulator.
90
- <br />
91
- <br />
92
- If your program contains behavior that is conditional on a qubit
93
- measurement result, note that this circuit only shows the outcome that
94
- was encountered during this simulation. Running the program again may
95
- result in a different circuit being generated.
96
- </p>
97
- ) : null}
98
- {
99
- // show tip when the circuit is empty and we didn't run under the simulator (i.e. debugging)
100
- !props.simulating &&
101
- !props.errorHtml &&
102
- props.circuit?.qubits.length === 0 ? (
103
- <p>
104
- <em>
105
- Tip: you can generate a circuit diagram for any operation that
106
- takes qubits or arrays of qubits as input.
107
- </em>
108
- </p>
109
- ) : null
110
- }
111
197
  <p>
112
- <a href="https://github.com/microsoft/qsharp/wiki/Circuit-Diagrams-from-Q%23-Code">
113
- Learn more
114
- </a>
198
+ {
199
+ props.simulated
200
+ ? "WARNING: This diagram shows the result of tracing a dynamic circuit, and may change from run to run."
201
+ : "\xa0" // nbsp to keep line height consistent
202
+ }
115
203
  </p>
204
+ <p>
205
+ Learn more at{" "}
206
+ <a href="https://aka.ms/qdk.circuits">https://aka.ms/qdk.circuits</a>
207
+ </p>
208
+ {props.calculating ? (
209
+ <div>
210
+ <Spinner />
211
+ </div>
212
+ ) : null}
213
+ {props.circuit ? <Circuit circuit={props.circuit}></Circuit> : null}
116
214
  </div>
117
215
  );
118
216
  }
package/ux/data.ts CHANGED
@@ -69,7 +69,10 @@ export type CircuitProps = {
69
69
  circuit?: CircuitData;
70
70
  errorHtml?: string;
71
71
  targetProfile: string;
72
- simulating: boolean;
72
+ /** Circuit was generated by running the simulator */
73
+ simulated: boolean;
74
+ /** Circuit is still being generated */
75
+ calculating: boolean;
73
76
  };
74
77
 
75
78
  export type CircuitData = import("@microsoft/quantum-viz.js/lib").Circuit;
@@ -6,6 +6,7 @@ import { type ReData, SingleEstimateResult } from "./data.js";
6
6
  import { EstimatesOverview } from "./estimatesOverview.js";
7
7
  import { ReTable } from "./reTable.js";
8
8
  import { SpaceChart } from "./spaceChart.js";
9
+ import { Spinner } from "./spinner.js";
9
10
 
10
11
  export function EstimatesPanel(props: {
11
12
  estimatesData: ReData[];
@@ -52,16 +53,7 @@ export function EstimatesPanel(props: {
52
53
  </g>
53
54
  </svg>
54
55
  {props.calculating ? (
55
- <svg
56
- width="40"
57
- height="40"
58
- viewBox="0 0 16 16"
59
- xmlns="http://www.w3.org/2000/svg"
60
- class="codicon-modifier-spin"
61
- style="position: absolute; top: 11px; left: 4px;"
62
- >
63
- <path d="M2.006 8.267L.78 9.5 0 8.73l2.09-2.07.76.01 2.09 2.12-.76.76-1.167-1.18a5 5 0 0 0 9.4 1.983l.813.597a6 6 0 0 1-11.22-2.683zm10.99-.466L11.76 6.55l-.76.76 2.09 2.11.76.01 2.09-2.07-.75-.76-1.194 1.18a6 6 0 0 0-11.11-2.92l.81.594a5 5 0 0 1 9.3 2.346z"></path>
64
- </svg>
56
+ <Spinner style="position: absolute; top: 11px; left: 4px;" />
65
57
  ) : null}
66
58
  <h1>Azure Quantum Resource Estimator</h1>
67
59
  </div>
package/ux/qsharp-ux.css CHANGED
@@ -259,6 +259,14 @@ html {
259
259
  cursor: pointer;
260
260
  }
261
261
 
262
+ .ast-output {
263
+ height: 40vh;
264
+ min-height: 400px;
265
+ width: 100%;
266
+ resize: none;
267
+ white-space: pre;
268
+ }
269
+
262
270
  .hir-output {
263
271
  height: 40vh;
264
272
  min-height: 400px;
package/ux/spinner.tsx ADDED
@@ -0,0 +1,17 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ export function Spinner(props: { style?: string }) {
5
+ return (
6
+ <svg
7
+ width="40"
8
+ height="40"
9
+ viewBox="0 0 16 16"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ class="codicon-modifier-spin"
12
+ style={props.style}
13
+ >
14
+ <path d="M2.006 8.267L.78 9.5 0 8.73l2.09-2.07.76.01 2.09 2.12-.76.76-1.167-1.18a5 5 0 0 0 9.4 1.983l.813.597a6 6 0 0 1-11.22-2.683zm10.99-.466L11.76 6.55l-.76.76 2.09 2.11.76.01 2.09-2.07-.75-.76-1.194 1.18a6 6 0 0 0-11.11-2.92l.81.594a5 5 0 0 1 9.3 2.346z"></path>
15
+ </svg>
16
+ );
17
+ }
package/ux/tsconfig.json CHANGED
@@ -9,6 +9,7 @@
9
9
  "jsxImportSource": "preact",
10
10
  "isolatedModules": true,
11
11
  "esModuleInterop": true,
12
- "skipLibCheck": true
12
+ "skipLibCheck": true,
13
+ "types": []
13
14
  }
14
15
  }