qsharp-lang 1.21.1-dev → 1.21.2-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.
- package/dist/katas-content.generated.js +3 -3
- package/dist/katas-content.generated.md.js +3 -3
- package/dist/log.d.ts +1 -1
- package/dist/log.js +1 -1
- package/dist/workers/common.js +1 -1
- package/docs/Microsoft.Quantum.Core/IsRangeEmpty.md +1 -1
- package/docs/Microsoft.Quantum.Core/Length.md +1 -1
- package/docs/Microsoft.Quantum.Core/RangeEnd.md +1 -1
- package/docs/Microsoft.Quantum.Core/RangeStart.md +1 -1
- package/docs/Microsoft.Quantum.Core/Repeated.md +1 -1
- package/docs/Microsoft.Quantum.Core/index.md +1 -1
- package/docs/Std.Arithmetic/AddLE.md +1 -1
- package/docs/Std.Arithmetic/ApplyIfEqualL.md +1 -1
- package/docs/Std.Arithmetic/ApplyIfEqualLE.md +1 -1
- package/docs/Std.Arithmetic/ApplyIfGreaterL.md +1 -1
- package/docs/Std.Arithmetic/ApplyIfGreaterLE.md +1 -1
- package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualL.md +1 -1
- package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualLE.md +1 -1
- package/docs/Std.Arithmetic/ApplyIfLessL.md +1 -1
- package/docs/Std.Arithmetic/ApplyIfLessLE.md +1 -1
- package/docs/Std.Arithmetic/ApplyIfLessOrEqualL.md +1 -1
- package/docs/Std.Arithmetic/ApplyIfLessOrEqualLE.md +1 -1
- package/docs/Std.Arithmetic/FourierTDIncByLE.md +1 -1
- package/docs/Std.Arithmetic/IncByI.md +1 -1
- package/docs/Std.Arithmetic/IncByIUsingIncByLE.md +1 -1
- package/docs/Std.Arithmetic/IncByL.md +1 -1
- package/docs/Std.Arithmetic/IncByLE.md +1 -1
- package/docs/Std.Arithmetic/IncByLEUsingAddLE.md +1 -1
- package/docs/Std.Arithmetic/IncByLUsingIncByLE.md +1 -1
- package/docs/Std.Arithmetic/LookAheadDKRSAddLE.md +1 -1
- package/docs/Std.Arithmetic/MAJ.md +1 -1
- package/docs/Std.Arithmetic/ReflectAboutInteger.md +1 -1
- package/docs/Std.Arithmetic/RippleCarryCGAddLE.md +1 -1
- package/docs/Std.Arithmetic/RippleCarryCGIncByLE.md +1 -1
- package/docs/Std.Arithmetic/RippleCarryTTKIncByLE.md +1 -1
- package/docs/Std.Arithmetic/index.md +1 -1
- package/docs/Std.Arrays/All.md +1 -1
- package/docs/Std.Arrays/Any.md +1 -1
- package/docs/Std.Arrays/Chunks.md +1 -1
- package/docs/Std.Arrays/CircularlyShifted.md +1 -1
- package/docs/Std.Arrays/ColumnAt.md +1 -1
- package/docs/Std.Arrays/Count.md +1 -1
- package/docs/Std.Arrays/Diagonal.md +1 -1
- package/docs/Std.Arrays/DrawMany.md +1 -1
- package/docs/Std.Arrays/Enumerated.md +1 -1
- package/docs/Std.Arrays/Excluding.md +1 -1
- package/docs/Std.Arrays/Filtered.md +1 -1
- package/docs/Std.Arrays/FlatMapped.md +1 -1
- package/docs/Std.Arrays/Flattened.md +1 -1
- package/docs/Std.Arrays/Fold.md +1 -1
- package/docs/Std.Arrays/ForEach.md +1 -1
- package/docs/Std.Arrays/Head.md +1 -1
- package/docs/Std.Arrays/HeadAndRest.md +1 -1
- package/docs/Std.Arrays/IndexOf.md +1 -1
- package/docs/Std.Arrays/IndexRange.md +1 -1
- package/docs/Std.Arrays/Interleaved.md +1 -1
- package/docs/Std.Arrays/IsEmpty.md +1 -1
- package/docs/Std.Arrays/IsRectangularArray.md +1 -1
- package/docs/Std.Arrays/IsSorted.md +1 -1
- package/docs/Std.Arrays/IsSquareArray.md +1 -1
- package/docs/Std.Arrays/Mapped.md +1 -1
- package/docs/Std.Arrays/MappedByIndex.md +1 -1
- package/docs/Std.Arrays/MappedOverRange.md +1 -1
- package/docs/Std.Arrays/Most.md +1 -1
- package/docs/Std.Arrays/MostAndTail.md +1 -1
- package/docs/Std.Arrays/Padded.md +1 -1
- package/docs/Std.Arrays/Partitioned.md +1 -1
- package/docs/Std.Arrays/Rest.md +1 -1
- package/docs/Std.Arrays/Reversed.md +1 -1
- package/docs/Std.Arrays/SequenceI.md +1 -1
- package/docs/Std.Arrays/SequenceL.md +1 -1
- package/docs/Std.Arrays/Sorted.md +1 -1
- package/docs/Std.Arrays/Subarray.md +1 -1
- package/docs/Std.Arrays/Swapped.md +1 -1
- package/docs/Std.Arrays/Tail.md +1 -1
- package/docs/Std.Arrays/Transposed.md +1 -1
- package/docs/Std.Arrays/Unzipped.md +1 -1
- package/docs/Std.Arrays/Where.md +1 -1
- package/docs/Std.Arrays/Windows.md +1 -1
- package/docs/Std.Arrays/Zipped.md +1 -1
- package/docs/Std.Arrays/index.md +1 -1
- package/docs/Std.Canon/ApplyCNOTChain.md +1 -1
- package/docs/Std.Canon/ApplyControlledOnBitString.md +1 -1
- package/docs/Std.Canon/ApplyControlledOnInt.md +1 -1
- package/docs/Std.Canon/ApplyOperationPowerA.md +1 -1
- package/docs/Std.Canon/ApplyOperationPowerCA.md +1 -1
- package/docs/Std.Canon/ApplyP.md +1 -1
- package/docs/Std.Canon/ApplyPauli.md +1 -1
- package/docs/Std.Canon/ApplyPauliFromBitString.md +1 -1
- package/docs/Std.Canon/ApplyPauliFromInt.md +1 -1
- package/docs/Std.Canon/ApplyQFT.md +1 -1
- package/docs/Std.Canon/ApplyQPE.md +1 -1
- package/docs/Std.Canon/ApplyToEach.md +1 -1
- package/docs/Std.Canon/ApplyToEachA.md +1 -1
- package/docs/Std.Canon/ApplyToEachC.md +1 -1
- package/docs/Std.Canon/ApplyToEachCA.md +1 -1
- package/docs/Std.Canon/ApplyXorInPlace.md +1 -1
- package/docs/Std.Canon/ApplyXorInPlaceL.md +1 -1
- package/docs/Std.Canon/CX.md +1 -1
- package/docs/Std.Canon/CY.md +1 -1
- package/docs/Std.Canon/CZ.md +1 -1
- package/docs/Std.Canon/Fst.md +1 -1
- package/docs/Std.Canon/MapPauliAxis.md +1 -1
- package/docs/Std.Canon/Relabel.md +1 -1
- package/docs/Std.Canon/Snd.md +1 -1
- package/docs/Std.Canon/SwapReverseRegister.md +1 -1
- package/docs/Std.Canon/index.md +1 -1
- package/docs/Std.Convert/BigIntAsBoolArray.md +1 -1
- package/docs/Std.Convert/BigIntAsInt.md +1 -1
- package/docs/Std.Convert/BoolArrayAsBigInt.md +1 -1
- package/docs/Std.Convert/BoolArrayAsInt.md +1 -1
- package/docs/Std.Convert/BoolArrayAsResultArray.md +1 -1
- package/docs/Std.Convert/BoolAsResult.md +1 -1
- package/docs/Std.Convert/ComplexAsComplexPolar.md +1 -1
- package/docs/Std.Convert/ComplexPolarAsComplex.md +1 -1
- package/docs/Std.Convert/DoubleAsStringWithPrecision.md +1 -1
- package/docs/Std.Convert/IntAsBigInt.md +1 -1
- package/docs/Std.Convert/IntAsBoolArray.md +1 -1
- package/docs/Std.Convert/IntAsDouble.md +1 -1
- package/docs/Std.Convert/ResultArrayAsBoolArray.md +1 -1
- package/docs/Std.Convert/ResultArrayAsInt.md +1 -1
- package/docs/Std.Convert/ResultAsBool.md +1 -1
- package/docs/Std.Convert/index.md +1 -1
- package/docs/Std.Core/Complex.md +1 -1
- package/docs/Std.Core/Length.md +1 -1
- package/docs/Std.Core/Repeated.md +1 -1
- package/docs/Std.Core/index.md +1 -1
- package/docs/Std.Diagnostics/ApplyIdleNoise.md +1 -1
- package/docs/Std.Diagnostics/BitFlipNoise.md +1 -1
- package/docs/Std.Diagnostics/CheckAllZero.md +1 -1
- package/docs/Std.Diagnostics/CheckOperationsAreEqual.md +1 -1
- package/docs/Std.Diagnostics/CheckZero.md +1 -1
- package/docs/Std.Diagnostics/ConfigurePauliNoise.md +1 -1
- package/docs/Std.Diagnostics/ConfigureQubitLoss.md +1 -1
- package/docs/Std.Diagnostics/DepolarizingNoise.md +1 -1
- package/docs/Std.Diagnostics/DumpMachine.md +1 -1
- package/docs/Std.Diagnostics/DumpOperation.md +1 -1
- package/docs/Std.Diagnostics/DumpRegister.md +1 -1
- package/docs/Std.Diagnostics/Fact.md +1 -1
- package/docs/Std.Diagnostics/NoNoise.md +1 -1
- package/docs/Std.Diagnostics/PhaseFlipNoise.md +1 -1
- package/docs/Std.Diagnostics/StartCountingFunction.md +1 -1
- package/docs/Std.Diagnostics/StartCountingOperation.md +1 -1
- package/docs/Std.Diagnostics/StartCountingQubits.md +1 -1
- package/docs/Std.Diagnostics/StopCountingFunction.md +1 -1
- package/docs/Std.Diagnostics/StopCountingOperation.md +1 -1
- package/docs/Std.Diagnostics/StopCountingQubits.md +1 -1
- package/docs/Std.Diagnostics/index.md +1 -1
- package/docs/Std.Intrinsic/AND.md +1 -1
- package/docs/Std.Intrinsic/ApplyUnitary.md +1 -1
- package/docs/Std.Intrinsic/CCNOT.md +1 -1
- package/docs/Std.Intrinsic/CNOT.md +1 -1
- package/docs/Std.Intrinsic/Exp.md +1 -1
- package/docs/Std.Intrinsic/H.md +1 -1
- package/docs/Std.Intrinsic/I.md +1 -1
- package/docs/Std.Intrinsic/M.md +1 -1
- package/docs/Std.Intrinsic/Measure.md +1 -1
- package/docs/Std.Intrinsic/Message.md +1 -1
- package/docs/Std.Intrinsic/R.md +1 -1
- package/docs/Std.Intrinsic/R1.md +1 -1
- package/docs/Std.Intrinsic/R1Frac.md +1 -1
- package/docs/Std.Intrinsic/RFrac.md +1 -1
- package/docs/Std.Intrinsic/Reset.md +1 -1
- package/docs/Std.Intrinsic/ResetAll.md +1 -1
- package/docs/Std.Intrinsic/Rx.md +1 -1
- package/docs/Std.Intrinsic/Rxx.md +1 -1
- package/docs/Std.Intrinsic/Ry.md +1 -1
- package/docs/Std.Intrinsic/Ryy.md +1 -1
- package/docs/Std.Intrinsic/Rz.md +1 -1
- package/docs/Std.Intrinsic/Rzz.md +1 -1
- package/docs/Std.Intrinsic/S.md +1 -1
- package/docs/Std.Intrinsic/SWAP.md +1 -1
- package/docs/Std.Intrinsic/SX.md +1 -1
- package/docs/Std.Intrinsic/T.md +1 -1
- package/docs/Std.Intrinsic/X.md +1 -1
- package/docs/Std.Intrinsic/Y.md +1 -1
- package/docs/Std.Intrinsic/Z.md +1 -1
- package/docs/Std.Intrinsic/index.md +1 -1
- package/docs/Std.Logical/Xor.md +1 -1
- package/docs/Std.Logical/index.md +1 -1
- package/docs/Std.Math/AbsComplex.md +1 -1
- package/docs/Std.Math/AbsComplexPolar.md +1 -1
- package/docs/Std.Math/AbsD.md +1 -1
- package/docs/Std.Math/AbsI.md +1 -1
- package/docs/Std.Math/AbsL.md +1 -1
- package/docs/Std.Math/AbsSquaredComplex.md +1 -1
- package/docs/Std.Math/AbsSquaredComplexPolar.md +1 -1
- package/docs/Std.Math/ApproximateFactorial.md +1 -1
- package/docs/Std.Math/ArcCos.md +1 -1
- package/docs/Std.Math/ArcCosh.md +1 -1
- package/docs/Std.Math/ArcSin.md +1 -1
- package/docs/Std.Math/ArcSinh.md +1 -1
- package/docs/Std.Math/ArcTan.md +1 -1
- package/docs/Std.Math/ArcTan2.md +1 -1
- package/docs/Std.Math/ArcTanh.md +1 -1
- package/docs/Std.Math/ArgComplex.md +1 -1
- package/docs/Std.Math/ArgComplexPolar.md +1 -1
- package/docs/Std.Math/Binom.md +1 -1
- package/docs/Std.Math/BitSizeI.md +1 -1
- package/docs/Std.Math/BitSizeL.md +1 -1
- package/docs/Std.Math/Ceiling.md +1 -1
- package/docs/Std.Math/Complex.md +1 -1
- package/docs/Std.Math/ComplexPolar.md +1 -1
- package/docs/Std.Math/ContinuedFractionConvergentI.md +1 -1
- package/docs/Std.Math/ContinuedFractionConvergentL.md +1 -1
- package/docs/Std.Math/Cos.md +1 -1
- package/docs/Std.Math/Cosh.md +1 -1
- package/docs/Std.Math/DivRemI.md +1 -1
- package/docs/Std.Math/DivRemL.md +1 -1
- package/docs/Std.Math/DividedByC.md +1 -1
- package/docs/Std.Math/DividedByCP.md +1 -1
- package/docs/Std.Math/E.md +1 -1
- package/docs/Std.Math/ExpModI.md +1 -1
- package/docs/Std.Math/ExpModL.md +1 -1
- package/docs/Std.Math/ExtendedGreatestCommonDivisorI.md +1 -1
- package/docs/Std.Math/ExtendedGreatestCommonDivisorL.md +1 -1
- package/docs/Std.Math/FactorialI.md +1 -1
- package/docs/Std.Math/FactorialL.md +1 -1
- package/docs/Std.Math/Floor.md +1 -1
- package/docs/Std.Math/GreatestCommonDivisorI.md +1 -1
- package/docs/Std.Math/GreatestCommonDivisorL.md +1 -1
- package/docs/Std.Math/HammingWeightI.md +1 -1
- package/docs/Std.Math/InverseModI.md +1 -1
- package/docs/Std.Math/InverseModL.md +1 -1
- package/docs/Std.Math/IsCoprimeI.md +1 -1
- package/docs/Std.Math/IsCoprimeL.md +1 -1
- package/docs/Std.Math/IsInfinite.md +1 -1
- package/docs/Std.Math/IsNaN.md +1 -1
- package/docs/Std.Math/LargestFixedPoint.md +1 -1
- package/docs/Std.Math/Lg.md +1 -1
- package/docs/Std.Math/Log.md +1 -1
- package/docs/Std.Math/Log10.md +1 -1
- package/docs/Std.Math/LogFactorialD.md +1 -1
- package/docs/Std.Math/LogGammaD.md +1 -1
- package/docs/Std.Math/LogOf2.md +1 -1
- package/docs/Std.Math/Max.md +1 -1
- package/docs/Std.Math/MaxD.md +1 -1
- package/docs/Std.Math/MaxI.md +1 -1
- package/docs/Std.Math/MaxL.md +1 -1
- package/docs/Std.Math/Min.md +1 -1
- package/docs/Std.Math/MinD.md +1 -1
- package/docs/Std.Math/MinI.md +1 -1
- package/docs/Std.Math/MinL.md +1 -1
- package/docs/Std.Math/MinusC.md +1 -1
- package/docs/Std.Math/MinusCP.md +1 -1
- package/docs/Std.Math/ModulusI.md +1 -1
- package/docs/Std.Math/ModulusL.md +1 -1
- package/docs/Std.Math/NegationC.md +1 -1
- package/docs/Std.Math/NegationCP.md +1 -1
- package/docs/Std.Math/PI.md +1 -1
- package/docs/Std.Math/PNorm.md +1 -1
- package/docs/Std.Math/PNormalized.md +1 -1
- package/docs/Std.Math/PlusC.md +1 -1
- package/docs/Std.Math/PlusCP.md +1 -1
- package/docs/Std.Math/PowC.md +1 -1
- package/docs/Std.Math/PowCP.md +1 -1
- package/docs/Std.Math/RealMod.md +1 -1
- package/docs/Std.Math/Round.md +1 -1
- package/docs/Std.Math/RoundHalfAwayFromZero.md +1 -1
- package/docs/Std.Math/SignD.md +1 -1
- package/docs/Std.Math/SignI.md +1 -1
- package/docs/Std.Math/SignL.md +1 -1
- package/docs/Std.Math/Sin.md +1 -1
- package/docs/Std.Math/Sinh.md +1 -1
- package/docs/Std.Math/SmallestFixedPoint.md +1 -1
- package/docs/Std.Math/Sqrt.md +1 -1
- package/docs/Std.Math/SquaredNorm.md +1 -1
- package/docs/Std.Math/Tan.md +1 -1
- package/docs/Std.Math/Tanh.md +1 -1
- package/docs/Std.Math/TimesC.md +1 -1
- package/docs/Std.Math/TimesCP.md +1 -1
- package/docs/Std.Math/TrailingZeroCountI.md +1 -1
- package/docs/Std.Math/TrailingZeroCountL.md +1 -1
- package/docs/Std.Math/Truncate.md +1 -1
- package/docs/Std.Math/index.md +1 -1
- package/docs/Std.Measurement/IsLossResult.md +1 -1
- package/docs/Std.Measurement/MResetEachZ.md +1 -1
- package/docs/Std.Measurement/MResetX.md +1 -1
- package/docs/Std.Measurement/MResetY.md +1 -1
- package/docs/Std.Measurement/MResetZ.md +1 -1
- package/docs/Std.Measurement/MResetZChecked.md +1 -1
- package/docs/Std.Measurement/MeasureAllZ.md +1 -1
- package/docs/Std.Measurement/MeasureEachZ.md +1 -1
- package/docs/Std.Measurement/MeasureInteger.md +1 -1
- package/docs/Std.Measurement/index.md +1 -1
- package/docs/Std.Random/DrawRandomBool.md +1 -1
- package/docs/Std.Random/DrawRandomDouble.md +1 -1
- package/docs/Std.Random/DrawRandomInt.md +1 -1
- package/docs/Std.Random/index.md +1 -1
- package/docs/Std.Range/IsRangeEmpty.md +1 -1
- package/docs/Std.Range/RangeEnd.md +1 -1
- package/docs/Std.Range/RangeReverse.md +1 -1
- package/docs/Std.Range/RangeStart.md +1 -1
- package/docs/Std.Range/RangeStep.md +1 -1
- package/docs/Std.Range/index.md +1 -1
- package/docs/Std.ResourceEstimation/AccountForEstimates.md +1 -1
- package/docs/Std.ResourceEstimation/AuxQubitCount.md +1 -1
- package/docs/Std.ResourceEstimation/BeginEstimateCaching.md +1 -1
- package/docs/Std.ResourceEstimation/BeginRepeatEstimates.md +1 -1
- package/docs/Std.ResourceEstimation/CczCount.md +1 -1
- package/docs/Std.ResourceEstimation/EnableMemoryComputeArchitecture.md +34 -0
- package/docs/Std.ResourceEstimation/EndEstimateCaching.md +1 -1
- package/docs/Std.ResourceEstimation/EndRepeatEstimates.md +1 -1
- package/docs/Std.ResourceEstimation/LeastFrequentlyUsed.md +23 -0
- package/docs/Std.ResourceEstimation/LeastRecentlyUsed.md +23 -0
- package/docs/Std.ResourceEstimation/MeasurementCount.md +1 -1
- package/docs/Std.ResourceEstimation/PSSPCLayout.md +1 -1
- package/docs/Std.ResourceEstimation/RepeatEstimates.md +1 -1
- package/docs/Std.ResourceEstimation/RotationCount.md +1 -1
- package/docs/Std.ResourceEstimation/RotationDepth.md +1 -1
- package/docs/Std.ResourceEstimation/SingleVariant.md +1 -1
- package/docs/Std.ResourceEstimation/TCount.md +1 -1
- package/docs/Std.ResourceEstimation/index.md +4 -1
- package/docs/Std.StatePreparation/ApproximatelyPreparePureStateCP.md +1 -1
- package/docs/Std.StatePreparation/PreparePureStateD.md +1 -1
- package/docs/Std.StatePreparation/PrepareUniformSuperposition.md +1 -1
- package/docs/Std.StatePreparation/index.md +1 -1
- package/docs/Std.TableLookup/Select.md +5 -2
- package/docs/Std.TableLookup/index.md +1 -1
- package/docs/index.md +1 -1
- package/docs/toc.yml +3 -0
- package/lib/nodejs/qsc_wasm_bg.wasm +0 -0
- package/lib/web/qsc_wasm_bg.wasm +0 -0
- package/package.json +5 -2
- package/ux/circuit-vis/circuit.ts +3 -3
- package/ux/circuit-vis/circuitManipulation.ts +5 -5
- package/ux/circuit-vis/contextMenu.ts +4 -4
- package/ux/circuit-vis/draggable.ts +38 -38
- package/ux/circuit-vis/events.ts +9 -9
- package/ux/circuit-vis/formatters/formatUtils.ts +15 -6
- package/ux/circuit-vis/formatters/gateFormatter.ts +51 -19
- package/ux/circuit-vis/formatters/inputFormatter.ts +5 -5
- package/ux/circuit-vis/formatters/registerFormatter.ts +4 -4
- package/ux/circuit-vis/gateRenderData.ts +1 -1
- package/ux/circuit-vis/index.ts +3 -3
- package/ux/circuit-vis/panel.ts +6 -6
- package/ux/circuit-vis/process.ts +5 -5
- package/ux/circuit-vis/register.ts +1 -1
- package/ux/circuit-vis/sqore.ts +16 -14
- package/ux/circuit-vis/utils.ts +8 -23
- package/ux/circuit.tsx +2 -2
- package/ux/data.ts +1 -1
- package/ux/histogram.tsx +2 -2
- package/ux/qsharp-ux.css +1 -1
- package/ux/scatterChart.tsx +1 -1
- package/ux/tsconfig.json +5 -2
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.EndRepeatEstimates
|
|
3
3
|
title: EndRepeatEstimates operation
|
|
4
4
|
description: "Q# EndRepeatEstimates operation: Companion operation to `BeginRepeatEstimates`."
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: operation
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.ResourceEstimation
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
uid: Qdk.Std.ResourceEstimation.LeastFrequentlyUsed
|
|
3
|
+
title: LeastFrequentlyUsed function
|
|
4
|
+
description: "Q# LeastFrequentlyUsed function: The LFU (least frequently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`."
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
|
+
qsharp.kind: function
|
|
7
|
+
qsharp.package: __Std__
|
|
8
|
+
qsharp.namespace: Std.ResourceEstimation
|
|
9
|
+
qsharp.name: LeastFrequentlyUsed
|
|
10
|
+
qsharp.summary: "The LFU (least frequently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`."
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# LeastFrequentlyUsed function
|
|
14
|
+
|
|
15
|
+
Fully qualified name: Std.ResourceEstimation.LeastFrequentlyUsed
|
|
16
|
+
|
|
17
|
+
```qsharp
|
|
18
|
+
function LeastFrequentlyUsed() : Int
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Summary
|
|
22
|
+
The LFU (least frequently used) strategy that can be used as input to
|
|
23
|
+
`EnableMemoryComputeArchitecture`.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
uid: Qdk.Std.ResourceEstimation.LeastRecentlyUsed
|
|
3
|
+
title: LeastRecentlyUsed function
|
|
4
|
+
description: "Q# LeastRecentlyUsed function: The LRU (least recently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`."
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
|
+
qsharp.kind: function
|
|
7
|
+
qsharp.package: __Std__
|
|
8
|
+
qsharp.namespace: Std.ResourceEstimation
|
|
9
|
+
qsharp.name: LeastRecentlyUsed
|
|
10
|
+
qsharp.summary: "The LRU (least recently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`."
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# LeastRecentlyUsed function
|
|
14
|
+
|
|
15
|
+
Fully qualified name: Std.ResourceEstimation.LeastRecentlyUsed
|
|
16
|
+
|
|
17
|
+
```qsharp
|
|
18
|
+
function LeastRecentlyUsed() : Int
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Summary
|
|
22
|
+
The LRU (least recently used) strategy that can be used as input to
|
|
23
|
+
`EnableMemoryComputeArchitecture`.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.MeasurementCount
|
|
3
3
|
title: MeasurementCount function
|
|
4
4
|
description: "Q# MeasurementCount function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number Measurements is equal to the `amount`."
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: function
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.ResourceEstimation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.PSSPCLayout
|
|
3
3
|
title: PSSPCLayout function
|
|
4
4
|
description: "Q# PSSPCLayout function: Pass the value returned by the function to the `AccountForEstimates` operation to indicate Parallel Synthesis Sequential Pauli Computation (PSSPC) layout. See https://arxiv.org/pdf/2211.07629.pdf for details."
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: function
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.ResourceEstimation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.RepeatEstimates
|
|
3
3
|
title: RepeatEstimates operation
|
|
4
4
|
description: "Q# RepeatEstimates operation: Instructs the resource estimator to assume that the resources from the call of this operation until a call to `Adjoint RepeatEstimates` are accounted for `count` times, without the need to execute the code that many times."
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: operation
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.ResourceEstimation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.RotationCount
|
|
3
3
|
title: RotationCount function
|
|
4
4
|
description: "Q# RotationCount function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number of rotations is equal to the `amount`."
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: function
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.ResourceEstimation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.RotationDepth
|
|
3
3
|
title: RotationDepth function
|
|
4
4
|
description: "Q# RotationDepth function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the rotation depth is equal to the `amount`."
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: function
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.ResourceEstimation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.SingleVariant
|
|
3
3
|
title: SingleVariant function
|
|
4
4
|
description: "Q# SingleVariant function: Used to specify that there's only one execution variant in `BeginEstimateCaching` function"
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: function
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.ResourceEstimation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.TCount
|
|
3
3
|
title: TCount function
|
|
4
4
|
description: "Q# TCount function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number of the T gates is equal to the `amount`."
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: function
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.ResourceEstimation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation-toc
|
|
3
3
|
title: Std.ResourceEstimation namespace
|
|
4
4
|
description: Table of contents for the Q# ResourceEstimation namespace
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
ms.topic: landing-page
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -17,8 +17,11 @@ The Std.ResourceEstimation namespace contains the following items:
|
|
|
17
17
|
| [BeginEstimateCaching](xref:Qdk.Std.ResourceEstimation.BeginEstimateCaching) | Informs the resource estimator of the start of the code fragment for which estimates caching can be done. This function is only available when using resource estimator execution target. |
|
|
18
18
|
| [BeginRepeatEstimates](xref:Qdk.Std.ResourceEstimation.BeginRepeatEstimates) | Instructs the resource estimator to assume that the resources from the call of this operation until a call to `EndRepeatEstimates` are accounted for `count` times, without the need to execute the code that many times. Calls to `BeginRepeatEstimates` and `EndRepeatEstimates` can be nested. A helper operation `RepeatEstimates` allows to call the two functions in a `within` block. |
|
|
19
19
|
| [CczCount](xref:Qdk.Std.ResourceEstimation.CczCount) | Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number of the CCZ gates is equal to the `amount`. |
|
|
20
|
+
| [EnableMemoryComputeArchitecture](xref:Qdk.Std.ResourceEstimation.EnableMemoryComputeArchitecture) | Instructs the resource estimator to assume a memory/compute architecture, in which computation can only happen on compute qubits. The estimator will automatically move qubits from and back into the memory such that never more than `computeCapacity` qubits are used to compute at any time. |
|
|
20
21
|
| [EndEstimateCaching](xref:Qdk.Std.ResourceEstimation.EndEstimateCaching) | Instructs the resource estimator to stop estimates caching because the code fragment in consideration is over. This function is only available when using resource estimator execution target. |
|
|
21
22
|
| [EndRepeatEstimates](xref:Qdk.Std.ResourceEstimation.EndRepeatEstimates) | Companion operation to `BeginRepeatEstimates`. |
|
|
23
|
+
| [LeastFrequentlyUsed](xref:Qdk.Std.ResourceEstimation.LeastFrequentlyUsed) | The LFU (least frequently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`. |
|
|
24
|
+
| [LeastRecentlyUsed](xref:Qdk.Std.ResourceEstimation.LeastRecentlyUsed) | The LRU (least recently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`. |
|
|
22
25
|
| [MeasurementCount](xref:Qdk.Std.ResourceEstimation.MeasurementCount) | Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number Measurements is equal to the `amount`. |
|
|
23
26
|
| [PSSPCLayout](xref:Qdk.Std.ResourceEstimation.PSSPCLayout) | Pass the value returned by the function to the `AccountForEstimates` operation to indicate Parallel Synthesis Sequential Pauli Computation (PSSPC) layout. See https://arxiv.org/pdf/2211.07629.pdf for details. |
|
|
24
27
|
| [RepeatEstimates](xref:Qdk.Std.ResourceEstimation.RepeatEstimates) | Instructs the resource estimator to assume that the resources from the call of this operation until a call to `Adjoint RepeatEstimates` are accounted for `count` times, without the need to execute the code that many times. |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.StatePreparation.ApproximatelyPreparePureStateCP
|
|
3
3
|
title: ApproximatelyPreparePureStateCP operation
|
|
4
4
|
description: "Q# ApproximatelyPreparePureStateCP operation: Given a set of coefficients and a big-endian quantum register, prepares a state on that register described by the given coefficients, up to a given approximation tolerance."
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: operation
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.StatePreparation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.StatePreparation.PreparePureStateD
|
|
3
3
|
title: PreparePureStateD operation
|
|
4
4
|
description: "Q# PreparePureStateD operation: Given a set of coefficients and a big-endian quantum register, prepares a state on that register described by the given coefficients."
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: operation
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.StatePreparation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.StatePreparation.PrepareUniformSuperposition
|
|
3
3
|
title: PrepareUniformSuperposition operation
|
|
4
4
|
description: "Q# PrepareUniformSuperposition operation: Prepares a uniform superposition of states that represent integers 0 through `nStates - 1` in a little-endian `qubits` register."
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: operation
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.StatePreparation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.TableLookup.Select
|
|
3
3
|
title: Select operation
|
|
4
4
|
description: "Q# Select operation: Performs table lookup using a SELECT network"
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
qsharp.kind: operation
|
|
7
7
|
qsharp.package: __Std__
|
|
8
8
|
qsharp.namespace: Std.TableLookup
|
|
@@ -41,7 +41,7 @@ Zero-initialized target register
|
|
|
41
41
|
The implementation of the SELECT network is based on unary encoding as
|
|
42
42
|
presented in [1]. The recursive implementation of that algorithm is
|
|
43
43
|
presented in [3]. The adjoint variant is optimized using a
|
|
44
|
-
measurement-based unlookup operation [
|
|
44
|
+
measurement-based unlookup operation [4]. The controlled adjoint variant
|
|
45
45
|
is not optimized using this technique.
|
|
46
46
|
|
|
47
47
|
## References
|
|
@@ -52,3 +52,6 @@ is not optimized using this technique.
|
|
|
52
52
|
"Windowed arithmetic"
|
|
53
53
|
3. [arXiv:2211.01133](https://arxiv.org/abs/2211.01133)
|
|
54
54
|
"Space-time optimized table lookup"
|
|
55
|
+
4. [arXiv:2505.15917](https://arxiv.org/abs/2505.15917)
|
|
56
|
+
"How to factor 2048 bit RSA integers with less than a million noisy qubits"
|
|
57
|
+
by Craig Gidney, May 2025.
|
package/docs/index.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Microsoft.Quantum.apiref-toc
|
|
3
3
|
title: Q# standard libraries for the Azure Quantum Development Kit
|
|
4
4
|
description: Table of contents for the Q# standard libraries for Azure Quantum Development Kit
|
|
5
|
-
ms.date: 10/
|
|
5
|
+
ms.date: 10/31/2025
|
|
6
6
|
ms.topic: landing-page
|
|
7
7
|
---
|
|
8
8
|
|
package/docs/toc.yml
CHANGED
|
@@ -341,8 +341,11 @@
|
|
|
341
341
|
- {name: BeginEstimateCaching, uid: Qdk.Std.ResourceEstimation.BeginEstimateCaching}
|
|
342
342
|
- {name: BeginRepeatEstimates, uid: Qdk.Std.ResourceEstimation.BeginRepeatEstimates}
|
|
343
343
|
- {name: CczCount, uid: Qdk.Std.ResourceEstimation.CczCount}
|
|
344
|
+
- {name: EnableMemoryComputeArchitecture, uid: Qdk.Std.ResourceEstimation.EnableMemoryComputeArchitecture}
|
|
344
345
|
- {name: EndEstimateCaching, uid: Qdk.Std.ResourceEstimation.EndEstimateCaching}
|
|
345
346
|
- {name: EndRepeatEstimates, uid: Qdk.Std.ResourceEstimation.EndRepeatEstimates}
|
|
347
|
+
- {name: LeastFrequentlyUsed, uid: Qdk.Std.ResourceEstimation.LeastFrequentlyUsed}
|
|
348
|
+
- {name: LeastRecentlyUsed, uid: Qdk.Std.ResourceEstimation.LeastRecentlyUsed}
|
|
346
349
|
- {name: MeasurementCount, uid: Qdk.Std.ResourceEstimation.MeasurementCount}
|
|
347
350
|
- {name: PSSPCLayout, uid: Qdk.Std.ResourceEstimation.PSSPCLayout}
|
|
348
351
|
- {name: RepeatEstimates, uid: Qdk.Std.ResourceEstimation.RepeatEstimates}
|
|
Binary file
|
package/lib/web/qsc_wasm_bg.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qsharp-lang",
|
|
3
3
|
"description": "qsharp language package for quantum development",
|
|
4
|
-
"version": "1.21.
|
|
4
|
+
"version": "1.21.2-dev",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=16.17.0"
|
|
@@ -25,17 +25,20 @@
|
|
|
25
25
|
"./ux": "./ux/index.ts"
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
|
-
"build": "npm run docs && npm run generate && npm run build:tsc",
|
|
28
|
+
"build": "npm run docs && npm run generate && npm run build:tsc && npm run build:ux",
|
|
29
29
|
"generate": "node generate_katas_content.js && node generate_samples_content.js",
|
|
30
30
|
"generate:force": "node generate_katas_content.js --force && node generate_samples_content.js",
|
|
31
31
|
"docs": "node generate_docs.js",
|
|
32
32
|
"build:tsc": "node ../../../node_modules/typescript/bin/tsc -p ./src/tsconfig.json",
|
|
33
|
+
"build:ux": "node ../../../node_modules/typescript/bin/tsc -p ./ux/tsconfig.json",
|
|
33
34
|
"tsc:watch": "node ../../../node_modules/typescript/bin/tsc -p ./src/tsconfig.json --watch --preserveWatchOutput",
|
|
34
35
|
"test": "node --test"
|
|
35
36
|
},
|
|
36
37
|
"type": "module",
|
|
37
38
|
"files": [
|
|
38
39
|
"dist",
|
|
40
|
+
"!dist/ux",
|
|
41
|
+
"!dist/src",
|
|
39
42
|
"docs",
|
|
40
43
|
"lib",
|
|
41
44
|
"ux"
|
|
@@ -15,7 +15,7 @@ export {
|
|
|
15
15
|
type Unitary,
|
|
16
16
|
type Parameter,
|
|
17
17
|
type Qubit,
|
|
18
|
-
} from "../../src/data-structures/circuit";
|
|
18
|
+
} from "../../src/data-structures/circuit.js";
|
|
19
19
|
|
|
20
|
-
export { CURRENT_VERSION } from "../../src/data-structures/circuit";
|
|
21
|
-
export { toCircuitGroup } from "../../src/data-structures/legacyCircuitUpdate";
|
|
20
|
+
export { CURRENT_VERSION } from "../../src/data-structures/circuit.js";
|
|
21
|
+
export { toCircuitGroup } from "../../src/data-structures/legacyCircuitUpdate.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
|
-
import { getOperationRegisters } from "../../src/utils";
|
|
5
|
-
import { Column, ComponentGrid, Operation, Unitary } from "./circuit";
|
|
6
|
-
import { CircuitEvents } from "./events";
|
|
7
|
-
import { Register } from "./register";
|
|
4
|
+
import { getOperationRegisters } from "../../src/utils.js";
|
|
5
|
+
import { Column, ComponentGrid, Operation, Unitary } from "./circuit.js";
|
|
6
|
+
import { CircuitEvents } from "./events.js";
|
|
7
|
+
import { Register } from "./register.js";
|
|
8
8
|
import {
|
|
9
9
|
findOperation,
|
|
10
10
|
findParentArray,
|
|
11
11
|
findParentOperation,
|
|
12
12
|
getChildTargets,
|
|
13
13
|
locationStringToIndexes,
|
|
14
|
-
} from "./utils";
|
|
14
|
+
} from "./utils.js";
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Move an operation in the circuit.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
|
-
import { Parameter } from "./circuit";
|
|
5
|
-
import { removeControl, removeOperation } from "./circuitManipulation";
|
|
6
|
-
import { CircuitEvents } from "./events";
|
|
7
|
-
import { findGateElem, findOperation } from "./utils";
|
|
4
|
+
import { Parameter } from "./circuit.js";
|
|
5
|
+
import { removeControl, removeOperation } from "./circuitManipulation.js";
|
|
6
|
+
import { CircuitEvents } from "./events.js";
|
|
7
|
+
import { findGateElem, findOperation } from "./utils.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Adds a context menu to a host element in the circuit visualization.
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
|
-
import { ComponentGrid, Operation } from "./circuit";
|
|
4
|
+
import { ComponentGrid, Operation } from "./circuit.js";
|
|
5
5
|
import {
|
|
6
6
|
gatePadding,
|
|
7
7
|
minGateWidth,
|
|
8
8
|
registerHeight,
|
|
9
9
|
regLineStart,
|
|
10
10
|
startX,
|
|
11
|
-
} from "./constants";
|
|
12
|
-
import { box, controlDot, line } from "./formatters/formatUtils";
|
|
13
|
-
import { formatGate } from "./formatters/gateFormatter";
|
|
14
|
-
import { qubitInput } from "./formatters/inputFormatter";
|
|
15
|
-
import { toRenderData } from "./panel";
|
|
16
|
-
import { Sqore } from "./sqore";
|
|
11
|
+
} from "./constants.js";
|
|
12
|
+
import { box, controlDot, line } from "./formatters/formatUtils.js";
|
|
13
|
+
import { formatGate } from "./formatters/gateFormatter.js";
|
|
14
|
+
import { qubitInput } from "./formatters/inputFormatter.js";
|
|
15
|
+
import { toRenderData } from "./panel.js";
|
|
16
|
+
import { Sqore } from "./sqore.js";
|
|
17
17
|
import {
|
|
18
18
|
findLocation,
|
|
19
19
|
getHostElems,
|
|
@@ -21,13 +21,12 @@ import {
|
|
|
21
21
|
getToolboxElems,
|
|
22
22
|
getWireData,
|
|
23
23
|
locationStringToIndexes,
|
|
24
|
-
} from "./utils";
|
|
24
|
+
} from "./utils.js";
|
|
25
25
|
|
|
26
26
|
interface Context {
|
|
27
27
|
container: HTMLElement;
|
|
28
28
|
svg: SVGElement;
|
|
29
29
|
operationGrid: ComponentGrid;
|
|
30
|
-
wireData: number[];
|
|
31
30
|
}
|
|
32
31
|
|
|
33
32
|
/**
|
|
@@ -37,15 +36,14 @@ interface Context {
|
|
|
37
36
|
* @param sqore Sqore object
|
|
38
37
|
*/
|
|
39
38
|
const createDropzones = (container: HTMLElement, sqore: Sqore): void => {
|
|
40
|
-
const svg = container.querySelector("svg
|
|
39
|
+
const svg = container.querySelector("svg.qviz") as SVGElement;
|
|
41
40
|
|
|
42
41
|
const context: Context = {
|
|
43
42
|
container,
|
|
44
43
|
svg,
|
|
45
44
|
operationGrid: sqore.circuit.componentGrid,
|
|
46
|
-
wireData: getWireData(container),
|
|
47
45
|
};
|
|
48
|
-
_addStyles(container
|
|
46
|
+
_addStyles(container);
|
|
49
47
|
_addDataWires(container);
|
|
50
48
|
svg.appendChild(_ghostQubitLayer(context));
|
|
51
49
|
svg.appendChild(_dropzoneLayer(context));
|
|
@@ -66,7 +64,7 @@ const createGateGhost = (
|
|
|
66
64
|
isControl: boolean,
|
|
67
65
|
) => {
|
|
68
66
|
const ghost = isControl
|
|
69
|
-
? controlDot(20, 20)
|
|
67
|
+
? controlDot(20, 20, [])
|
|
70
68
|
: (() => {
|
|
71
69
|
const ghostRenderData = toRenderData(selectedOperation, 0, 0);
|
|
72
70
|
return formatGate(ghostRenderData).cloneNode(true) as SVGElement;
|
|
@@ -233,19 +231,14 @@ const removeAllWireDropzones = (circuitSvg: SVGElement) => {
|
|
|
233
231
|
const _addDataWires = (container: HTMLElement) => {
|
|
234
232
|
const elems = getHostElems(container);
|
|
235
233
|
elems.forEach((elem) => {
|
|
236
|
-
const
|
|
237
|
-
// i.e.
|
|
234
|
+
const wireYs = _wireYs(elem);
|
|
235
|
+
// i.e. wireYs = [40], wireData returns [40, 100, 140, 180]
|
|
238
236
|
// dataWire will return 0, which is the index of 40 in wireData
|
|
239
|
-
const dataWire = getWireData(container).findIndex((y) =>
|
|
237
|
+
const dataWire = getWireData(container).findIndex((y) =>
|
|
238
|
+
wireYs.includes(y),
|
|
239
|
+
);
|
|
240
240
|
if (dataWire !== -1) {
|
|
241
241
|
elem.setAttribute("data-wire", `${dataWire}`);
|
|
242
|
-
} else {
|
|
243
|
-
const { y, height } = elem.getBBox();
|
|
244
|
-
const wireData = getWireData(container);
|
|
245
|
-
const groupDataWire = wireData.findIndex(
|
|
246
|
-
(wireY) => wireY > y && wireY < y + height,
|
|
247
|
-
);
|
|
248
|
-
elem.setAttribute("data-wire", `${groupDataWire}`);
|
|
249
242
|
}
|
|
250
243
|
});
|
|
251
244
|
};
|
|
@@ -255,18 +248,28 @@ const _addDataWires = (container: HTMLElement) => {
|
|
|
255
248
|
* i.e. Gate 'Foo' spans on wire 0 (y=40), 1 (y=100), and 2 (y=140)
|
|
256
249
|
* Function returns [40, 100, 140]
|
|
257
250
|
*/
|
|
258
|
-
const _wireYs = (elem: SVGGraphicsElement
|
|
259
|
-
const
|
|
260
|
-
|
|
251
|
+
const _wireYs = (elem: SVGGraphicsElement): number[] => {
|
|
252
|
+
const wireYsAttr = elem.getAttribute("data-wire-ys");
|
|
253
|
+
if (wireYsAttr) {
|
|
254
|
+
try {
|
|
255
|
+
const wireYs = JSON.parse(wireYsAttr);
|
|
256
|
+
if (Array.isArray(wireYs) && wireYs.every((y) => typeof y === "number")) {
|
|
257
|
+
return wireYs;
|
|
258
|
+
}
|
|
259
|
+
} catch {
|
|
260
|
+
console.warn(`Invalid data-wire-ys attribute: ${wireYsAttr}`);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return [];
|
|
261
264
|
};
|
|
262
265
|
|
|
263
266
|
/**
|
|
264
267
|
* Add custom styles specific to this module
|
|
265
268
|
*/
|
|
266
|
-
const _addStyles = (container: HTMLElement
|
|
269
|
+
const _addStyles = (container: HTMLElement): void => {
|
|
267
270
|
const elems = getHostElems(container);
|
|
268
271
|
elems.forEach((elem) => {
|
|
269
|
-
if (_wireYs(elem
|
|
272
|
+
if (_wireYs(elem).length < 2) elem.style.cursor = "grab";
|
|
270
273
|
});
|
|
271
274
|
|
|
272
275
|
const toolBoxElems = getToolboxElems(container);
|
|
@@ -275,14 +278,6 @@ const _addStyles = (container: HTMLElement, wireData: number[]): void => {
|
|
|
275
278
|
});
|
|
276
279
|
};
|
|
277
280
|
|
|
278
|
-
/**
|
|
279
|
-
* Find center point of element
|
|
280
|
-
*/
|
|
281
|
-
const _center = (elem: SVGGraphicsElement): { cX: number; cY: number } => {
|
|
282
|
-
const { x, y, width, height } = elem.getBBox();
|
|
283
|
-
return { cX: x + width / 2, cY: y + height / 2 };
|
|
284
|
-
};
|
|
285
|
-
|
|
286
281
|
/**
|
|
287
282
|
* Create layer with ghost qubit wire and label
|
|
288
283
|
*/
|
|
@@ -427,15 +422,20 @@ const getColumnOffsetsAndWidths = (
|
|
|
427
422
|
// Compute column widths
|
|
428
423
|
const colWidths = elems.reduce(
|
|
429
424
|
(acc, elem) => {
|
|
425
|
+
const widthAttr = elem.getAttribute("data-width");
|
|
426
|
+
if (!widthAttr) return acc;
|
|
427
|
+
const elemWidth: number = Number(widthAttr);
|
|
428
|
+
if (isNaN(elemWidth) || elemWidth <= 0) return acc;
|
|
429
|
+
|
|
430
430
|
const location = findLocation(elem);
|
|
431
431
|
if (!location) return acc;
|
|
432
432
|
const indexes = locationStringToIndexes(location);
|
|
433
433
|
if (indexes.length != 1) return acc;
|
|
434
434
|
const [colIndex] = indexes[0];
|
|
435
435
|
if (!acc[colIndex]) {
|
|
436
|
-
acc[colIndex] = Math.max(minGateWidth,
|
|
436
|
+
acc[colIndex] = Math.max(minGateWidth, elemWidth);
|
|
437
437
|
} else {
|
|
438
|
-
acc[colIndex] = Math.max(acc[colIndex],
|
|
438
|
+
acc[colIndex] = Math.max(acc[colIndex], elemWidth);
|
|
439
439
|
}
|
|
440
440
|
return acc;
|
|
441
441
|
},
|
package/ux/circuit-vis/events.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
|
-
import { ComponentGrid, Operation, Qubit, Unitary } from "./circuit";
|
|
5
|
-
import { Sqore } from "./sqore";
|
|
6
|
-
import { toolboxGateDictionary } from "./panel";
|
|
4
|
+
import { ComponentGrid, Operation, Qubit, Unitary } from "./circuit.js";
|
|
5
|
+
import { Sqore } from "./sqore.js";
|
|
6
|
+
import { toolboxGateDictionary } from "./panel.js";
|
|
7
7
|
import {
|
|
8
8
|
getGateLocationString,
|
|
9
9
|
findOperation,
|
|
@@ -16,8 +16,8 @@ import {
|
|
|
16
16
|
deepEqual,
|
|
17
17
|
getQubitLabelElems,
|
|
18
18
|
getMinMaxRegIdx,
|
|
19
|
-
} from "./utils";
|
|
20
|
-
import { addContextMenuToHostElem, promptForArguments } from "./contextMenu";
|
|
19
|
+
} from "./utils.js";
|
|
20
|
+
import { addContextMenuToHostElem, promptForArguments } from "./contextMenu.js";
|
|
21
21
|
import {
|
|
22
22
|
removeTrailingUnusedQubits,
|
|
23
23
|
addControl,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
removeControl,
|
|
28
28
|
removeOperation,
|
|
29
29
|
resolveOverlappingOperations,
|
|
30
|
-
} from "./circuitManipulation";
|
|
30
|
+
} from "./circuitManipulation.js";
|
|
31
31
|
import {
|
|
32
32
|
createGateGhost,
|
|
33
33
|
createQubitLabelGhost,
|
|
@@ -35,8 +35,8 @@ import {
|
|
|
35
35
|
getColumnOffsetsAndWidths,
|
|
36
36
|
makeDropzoneBox,
|
|
37
37
|
removeAllWireDropzones,
|
|
38
|
-
} from "./draggable";
|
|
39
|
-
import { getOperationRegisters } from "../../src/utils";
|
|
38
|
+
} from "./draggable.js";
|
|
39
|
+
import { getOperationRegisters } from "../../src/utils.js";
|
|
40
40
|
|
|
41
41
|
let events: CircuitEvents | null = null;
|
|
42
42
|
|
|
@@ -82,7 +82,7 @@ class CircuitEvents {
|
|
|
82
82
|
) {
|
|
83
83
|
this.renderFn = useRefresh;
|
|
84
84
|
|
|
85
|
-
this.circuitSvg = container.querySelector("svg
|
|
85
|
+
this.circuitSvg = container.querySelector("svg.qviz") as SVGElement;
|
|
86
86
|
this.dropzoneLayer = container.querySelector(
|
|
87
87
|
".dropzone-layer",
|
|
88
88
|
) as SVGGElement;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
|
-
import { labelFontSize, svgNS } from "../constants";
|
|
4
|
+
import { labelFontSize, svgNS } from "../constants.js";
|
|
5
5
|
|
|
6
6
|
// Helper functions for basic SVG components
|
|
7
7
|
|
|
@@ -98,12 +98,21 @@ export const circle = (
|
|
|
98
98
|
*
|
|
99
99
|
* @param x x coord of circle.
|
|
100
100
|
* @param y y coord of circle.
|
|
101
|
-
* @param
|
|
101
|
+
* @param wireYs y coords of wire(s) connected to the control dot.
|
|
102
102
|
*
|
|
103
103
|
* @returns SVG element for control dot.
|
|
104
104
|
*/
|
|
105
|
-
export const controlDot = (
|
|
106
|
-
|
|
105
|
+
export const controlDot = (
|
|
106
|
+
x: number,
|
|
107
|
+
y: number,
|
|
108
|
+
wireYs: number[],
|
|
109
|
+
): SVGElement => {
|
|
110
|
+
const radius = 5;
|
|
111
|
+
const dot = circle(x, y, radius, "control-dot");
|
|
112
|
+
dot.setAttribute("data-wire-ys", JSON.stringify(wireYs));
|
|
113
|
+
dot.setAttribute("data-width", `${2 * radius}`);
|
|
114
|
+
return dot;
|
|
115
|
+
};
|
|
107
116
|
|
|
108
117
|
/**
|
|
109
118
|
* Generate the SVG representation of a unitary box that represents an arbitrary unitary operation.
|
|
@@ -121,7 +130,7 @@ export const box = (
|
|
|
121
130
|
y: number,
|
|
122
131
|
width: number,
|
|
123
132
|
height: number,
|
|
124
|
-
className
|
|
133
|
+
className: string,
|
|
125
134
|
): SVGElement =>
|
|
126
135
|
createSvgElement("rect", {
|
|
127
136
|
class: className,
|
|
@@ -211,7 +220,7 @@ export const dashedBox = (
|
|
|
211
220
|
y: number,
|
|
212
221
|
width: number,
|
|
213
222
|
height: number,
|
|
214
|
-
className
|
|
223
|
+
className: string,
|
|
215
224
|
): SVGElement => {
|
|
216
225
|
const el: SVGElement = box(x, y, width, height, className);
|
|
217
226
|
el.setAttribute("fill-opacity", "0");
|