qilisdk 0.1.8__cp312-cp312-win_amd64.whl
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.
- include/eigen3/Eigen/Cholesky +45 -0
- include/eigen3/Eigen/CholmodSupport +48 -0
- include/eigen3/Eigen/Core +384 -0
- include/eigen3/Eigen/Dense +7 -0
- include/eigen3/Eigen/Eigen +2 -0
- include/eigen3/Eigen/Eigenvalues +60 -0
- include/eigen3/Eigen/Geometry +59 -0
- include/eigen3/Eigen/Householder +29 -0
- include/eigen3/Eigen/IterativeLinearSolvers +48 -0
- include/eigen3/Eigen/Jacobi +32 -0
- include/eigen3/Eigen/KLUSupport +41 -0
- include/eigen3/Eigen/LU +47 -0
- include/eigen3/Eigen/MetisSupport +35 -0
- include/eigen3/Eigen/OrderingMethods +70 -0
- include/eigen3/Eigen/PaStiXSupport +49 -0
- include/eigen3/Eigen/PardisoSupport +35 -0
- include/eigen3/Eigen/QR +50 -0
- include/eigen3/Eigen/QtAlignedMalloc +39 -0
- include/eigen3/Eigen/SPQRSupport +34 -0
- include/eigen3/Eigen/SVD +50 -0
- include/eigen3/Eigen/Sparse +34 -0
- include/eigen3/Eigen/SparseCholesky +37 -0
- include/eigen3/Eigen/SparseCore +69 -0
- include/eigen3/Eigen/SparseLU +50 -0
- include/eigen3/Eigen/SparseQR +36 -0
- include/eigen3/Eigen/StdDeque +27 -0
- include/eigen3/Eigen/StdList +26 -0
- include/eigen3/Eigen/StdVector +27 -0
- include/eigen3/Eigen/SuperLUSupport +64 -0
- include/eigen3/Eigen/UmfPackSupport +40 -0
- include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
- include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
- include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
- include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
- include/eigen3/Eigen/src/Core/ArithmeticSequence.h +413 -0
- include/eigen3/Eigen/src/Core/Array.h +417 -0
- include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
- include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
- include/eigen3/Eigen/src/Core/Assign.h +90 -0
- include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
- include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
- include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
- include/eigen3/Eigen/src/Core/Block.h +448 -0
- include/eigen3/Eigen/src/Core/BooleanRedux.h +162 -0
- include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
- include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
- include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
- include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
- include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
- include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
- include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
- include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
- include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
- include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
- include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
- include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
- include/eigen3/Eigen/src/Core/Diagonal.h +258 -0
- include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
- include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
- include/eigen3/Eigen/src/Core/Dot.h +318 -0
- include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
- include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
- include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
- include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
- include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
- include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
- include/eigen3/Eigen/src/Core/IO.h +258 -0
- include/eigen3/Eigen/src/Core/IndexedView.h +237 -0
- include/eigen3/Eigen/src/Core/Inverse.h +117 -0
- include/eigen3/Eigen/src/Core/Map.h +171 -0
- include/eigen3/Eigen/src/Core/MapBase.h +310 -0
- include/eigen3/Eigen/src/Core/MathFunctions.h +2057 -0
- include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
- include/eigen3/Eigen/src/Core/Matrix.h +565 -0
- include/eigen3/Eigen/src/Core/MatrixBase.h +547 -0
- include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
- include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
- include/eigen3/Eigen/src/Core/NumTraits.h +335 -0
- include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
- include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
- include/eigen3/Eigen/src/Core/Product.h +191 -0
- include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
- include/eigen3/Eigen/src/Core/Random.h +218 -0
- include/eigen3/Eigen/src/Core/Redux.h +515 -0
- include/eigen3/Eigen/src/Core/Ref.h +381 -0
- include/eigen3/Eigen/src/Core/Replicate.h +142 -0
- include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
- include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
- include/eigen3/Eigen/src/Core/Reverse.h +217 -0
- include/eigen3/Eigen/src/Core/Select.h +164 -0
- include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
- include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
- include/eigen3/Eigen/src/Core/Solve.h +188 -0
- include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
- include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
- include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
- include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
- include/eigen3/Eigen/src/Core/Stride.h +116 -0
- include/eigen3/Eigen/src/Core/Swap.h +68 -0
- include/eigen3/Eigen/src/Core/Transpose.h +464 -0
- include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
- include/eigen3/Eigen/src/Core/TriangularMatrix.h +1001 -0
- include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
- include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
- include/eigen3/Eigen/src/Core/Visitor.h +381 -0
- include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +372 -0
- include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
- include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
- include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
- include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
- include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
- include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
- include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
- include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
- include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- include/eigen3/Eigen/src/Core/arch/Default/Half.h +942 -0
- include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
- include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
- include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +584 -0
- include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
- include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
- include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +351 -0
- include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
- include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
- include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
- include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
- include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
- include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
- include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
- include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
- include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
- include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
- include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
- include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
- include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
- include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
- include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
- include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
- include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
- include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
- include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
- include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
- include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
- include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
- include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
- include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
- include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
- include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
- include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
- include/eigen3/Eigen/src/Core/util/Macros.h +1464 -0
- include/eigen3/Eigen/src/Core/util/Memory.h +1163 -0
- include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
- include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
- include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
- include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
- include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
- include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
- include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
- include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
- include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
- include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
- include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
- include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
- include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
- include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
- include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +558 -0
- include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
- include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
- include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
- include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
- include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
- include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
- include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
- include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
- include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
- include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
- include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
- include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
- include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
- include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
- include/eigen3/Eigen/src/Geometry/Transform.h +1563 -0
- include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
- include/eigen3/Eigen/src/Geometry/Umeyama.h +166 -0
- include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
- include/eigen3/Eigen/src/Householder/Householder.h +176 -0
- include/eigen3/Eigen/src/Householder/HouseholderSequence.h +545 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
- include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
- include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- include/eigen3/Eigen/src/LU/Determinant.h +117 -0
- include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
- include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
- include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
- include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
- include/eigen3/Eigen/src/LU/arch/InverseSize4.h +351 -0
- include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
- include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
- include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
- include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
- include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
- include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
- include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
- include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
- include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
- include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
- include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
- include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
- include/eigen3/Eigen/src/SVD/BDCSVD.h +1366 -0
- include/eigen3/Eigen/src/SVD/JacobiSVD.h +812 -0
- include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
- include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
- include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
- include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
- include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
- include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
- include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
- include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
- include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
- include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
- include/eigen3/Eigen/src/SparseCore/SparseBlock.h +571 -0
- include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
- include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
- include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
- include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
- include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
- include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
- include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
- include/eigen3/Eigen/src/SparseCore/SparseMap.h +305 -0
- include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
- include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
- include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
- include/eigen3/Eigen/src/SparseCore/SparseProduct.h +181 -0
- include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
- include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
- include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
- include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
- include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
- include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
- include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
- include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
- include/eigen3/Eigen/src/SparseCore/SparseVector.h +478 -0
- include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
- include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU.h +923 -0
- include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
- include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
- include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
- include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
- include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
- include/eigen3/Eigen/src/StlSupport/details.h +84 -0
- include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
- include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
- include/eigen3/Eigen/src/misc/Image.h +82 -0
- include/eigen3/Eigen/src/misc/Kernel.h +79 -0
- include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
- include/eigen3/Eigen/src/misc/blas.h +440 -0
- include/eigen3/Eigen/src/misc/lapack.h +152 -0
- include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
- include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
- include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
- include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
- include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
- include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
- include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
- include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
- include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
- include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
- include/eigen3/signature_of_eigen3_matrix_library +1 -0
- include/eigen3/unsupported/Eigen/AdolcForward +159 -0
- include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
- include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
- include/eigen3/unsupported/Eigen/AutoDiff +46 -0
- include/eigen3/unsupported/Eigen/BVH +95 -0
- include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
- include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
- include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +329 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +247 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1093 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +518 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +377 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1023 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +456 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1132 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +544 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +214 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +347 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +236 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +490 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +236 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +983 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +703 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +388 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +379 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +237 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +302 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +603 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +738 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +247 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +263 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +216 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1102 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +708 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +291 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +322 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +998 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +966 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +465 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +471 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +161 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +346 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +303 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +629 -0
- include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
- include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
- include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
- include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
- include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +537 -0
- include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
- include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
- include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
- include/eigen3/unsupported/Eigen/EulerAngles +43 -0
- include/eigen3/unsupported/Eigen/FFT +419 -0
- include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
- include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
- include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
- include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
- include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
- include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
- include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
- include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
- include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
- include/eigen3/unsupported/Eigen/Polynomials +137 -0
- include/eigen3/unsupported/Eigen/Skyline +39 -0
- include/eigen3/unsupported/Eigen/SparseExtra +54 -0
- include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
- include/eigen3/unsupported/Eigen/Splines +35 -0
- include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
- include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
- include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
- include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
- include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
- include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
- include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +355 -0
- include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +305 -0
- include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
- include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
- include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
- include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
- include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
- include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
- include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
- include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
- include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
- include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
- include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
- include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +428 -0
- include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2045 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +46 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
- include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
- include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
- include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
- qilisdk/__init__.py +26 -0
- qilisdk/__init__.pyi +16 -0
- qilisdk/_logging.py +135 -0
- qilisdk/_optionals.py +137 -0
- qilisdk/analog/__init__.py +18 -0
- qilisdk/analog/exceptions.py +17 -0
- qilisdk/analog/hamiltonian.py +1068 -0
- qilisdk/analog/schedule.py +483 -0
- qilisdk/backends/__init__.py +46 -0
- qilisdk/backends/__init__.pyi +18 -0
- qilisdk/backends/backend.py +132 -0
- qilisdk/backends/cuda_backend.py +752 -0
- qilisdk/backends/qilisim.py +148 -0
- qilisdk/backends/qutip_backend.py +504 -0
- qilisdk/core/__init__.py +70 -0
- qilisdk/core/exceptions.py +29 -0
- qilisdk/core/interpolator.py +640 -0
- qilisdk/core/model.py +1012 -0
- qilisdk/core/parameterizable.py +133 -0
- qilisdk/core/qtensor.py +684 -0
- qilisdk/core/result.py +18 -0
- qilisdk/core/types.py +49 -0
- qilisdk/core/variables.py +2035 -0
- qilisdk/cost_functions/__init__.py +18 -0
- qilisdk/cost_functions/cost_function.py +77 -0
- qilisdk/cost_functions/model_cost_function.py +152 -0
- qilisdk/cost_functions/observable_cost_function.py +112 -0
- qilisdk/digital/__init__.py +67 -0
- qilisdk/digital/ansatz.py +382 -0
- qilisdk/digital/circuit.py +371 -0
- qilisdk/digital/circuit_transpiler.py +46 -0
- qilisdk/digital/circuit_transpiler_passes/__init__.py +18 -0
- qilisdk/digital/circuit_transpiler_passes/circuit_transpiler_pass.py +36 -0
- qilisdk/digital/circuit_transpiler_passes/decompose_multi_controlled_gates_pass.py +220 -0
- qilisdk/digital/circuit_transpiler_passes/numeric_helpers.py +82 -0
- qilisdk/digital/exceptions.py +37 -0
- qilisdk/digital/gates.py +1308 -0
- qilisdk/experiments/__init__.py +36 -0
- qilisdk/experiments/experiment_functional.py +212 -0
- qilisdk/experiments/experiment_result.py +247 -0
- qilisdk/functionals/__init__.py +29 -0
- qilisdk/functionals/functional.py +39 -0
- qilisdk/functionals/functional_result.py +18 -0
- qilisdk/functionals/sampling.py +89 -0
- qilisdk/functionals/sampling_result.py +92 -0
- qilisdk/functionals/time_evolution.py +111 -0
- qilisdk/functionals/time_evolution_result.py +91 -0
- qilisdk/functionals/variational_program.py +138 -0
- qilisdk/functionals/variational_program_result.py +69 -0
- qilisdk/logging_config.yaml +16 -0
- qilisdk/noise/__init__.py +56 -0
- qilisdk/noise/amplitude_damping.py +71 -0
- qilisdk/noise/bit_flip.py +45 -0
- qilisdk/noise/dephasing.py +69 -0
- qilisdk/noise/depolarizing.py +44 -0
- qilisdk/noise/gaussian_perturbation.py +69 -0
- qilisdk/noise/noise.py +20 -0
- qilisdk/noise/noise_abc.py +31 -0
- qilisdk/noise/noise_config.py +77 -0
- qilisdk/noise/noise_model.py +259 -0
- qilisdk/noise/offset_perturbation.py +39 -0
- qilisdk/noise/parameter_perturbation.py +45 -0
- qilisdk/noise/pauli_channel.py +115 -0
- qilisdk/noise/phase_flip.py +45 -0
- qilisdk/noise/protocols.py +107 -0
- qilisdk/noise/readout_assignment.py +60 -0
- qilisdk/noise/representations.py +149 -0
- qilisdk/noise/utils.py +90 -0
- qilisdk/optimizers/__init__.py +17 -0
- qilisdk/optimizers/optimizer.py +39 -0
- qilisdk/optimizers/optimizer_result.py +101 -0
- qilisdk/optimizers/scipy_optimizer.py +118 -0
- qilisdk/py.typed +0 -0
- qilisdk/settings.py +103 -0
- qilisdk/speqtrum/__init__.py +41 -0
- qilisdk/speqtrum/__init__.pyi +18 -0
- qilisdk/speqtrum/keyring.py +58 -0
- qilisdk/speqtrum/speqtrum.py +817 -0
- qilisdk/speqtrum/speqtrum_models.py +560 -0
- qilisdk/utils/__init__.py +13 -0
- qilisdk/utils/openfermion/__init__.py +38 -0
- qilisdk/utils/openfermion/__init__.pyi +17 -0
- qilisdk/utils/openfermion/openfermion.py +45 -0
- qilisdk/utils/openqasm2.py +215 -0
- qilisdk/utils/serialization.py +128 -0
- qilisdk/utils/trotterization/__init__.py +18 -0
- qilisdk/utils/trotterization/trotterization.py +127 -0
- qilisdk/utils/visualization/PlusJakartaSans-SemiBold.ttf +0 -0
- qilisdk/utils/visualization/__init__.py +24 -0
- qilisdk/utils/visualization/circuit_renderers.py +781 -0
- qilisdk/utils/visualization/schedule_renderers.py +175 -0
- qilisdk/utils/visualization/style.py +154 -0
- qilisdk/utils/visualization/themes.py +76 -0
- qilisdk/yaml.py +260 -0
- qilisdk-0.1.8.dist-info/METADATA +657 -0
- qilisdk-0.1.8.dist-info/RECORD +633 -0
- qilisdk-0.1.8.dist-info/WHEEL +5 -0
- qilisdk-0.1.8.dist-info/licenses/LICENCE +201 -0
- qilisim_module.cp312-win_amd64.pyd +0 -0
- share/eigen3/cmake/Eigen3Config.cmake +37 -0
- share/eigen3/cmake/Eigen3ConfigVersion.cmake +65 -0
- share/eigen3/cmake/Eigen3Targets.cmake +106 -0
- share/eigen3/cmake/UseEigen3.cmake +6 -0
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
# Copyright 2025 Qilimanjaro Quantum Tech
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import random
|
|
17
|
+
from typing import TYPE_CHECKING, Iterable
|
|
18
|
+
|
|
19
|
+
import numpy as np
|
|
20
|
+
from typing_extensions import Self
|
|
21
|
+
|
|
22
|
+
from qilisdk.core.parameterizable import Parameterizable
|
|
23
|
+
from qilisdk.core.variables import Domain, Parameter
|
|
24
|
+
from qilisdk.utils.visualization import CircuitStyle
|
|
25
|
+
from qilisdk.yaml import yaml
|
|
26
|
+
|
|
27
|
+
from .exceptions import ParametersNotEqualError, QubitOutOfRangeError
|
|
28
|
+
from .gates import BasicGate, Gate
|
|
29
|
+
|
|
30
|
+
if TYPE_CHECKING:
|
|
31
|
+
from qilisdk.core.types import RealNumber
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@yaml.register_class
|
|
35
|
+
class Circuit(Parameterizable):
|
|
36
|
+
def __init__(self, nqubits: int) -> None:
|
|
37
|
+
"""
|
|
38
|
+
Initialize a Circuit instance with a specified number of qubits.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
nqubits (int): The number of qubits in the circuit.
|
|
42
|
+
"""
|
|
43
|
+
super(Circuit, self).__init__()
|
|
44
|
+
self._nqubits: int = nqubits
|
|
45
|
+
self._gates: list[Gate] = []
|
|
46
|
+
self._init_state: np.ndarray = np.zeros(nqubits)
|
|
47
|
+
self._parameters: dict[str, Parameter] = {}
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def nqubits(self) -> int:
|
|
51
|
+
"""
|
|
52
|
+
Retrieve the number of qubits in the circuit.
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
int: The total number of qubits.
|
|
56
|
+
"""
|
|
57
|
+
return self._nqubits
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def nparameters(self) -> int:
|
|
61
|
+
"""
|
|
62
|
+
Retrieve the total number of parameters required by all parameterized gates in the circuit.
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
int: The total count of parameters from all parameterized gates.
|
|
66
|
+
"""
|
|
67
|
+
return len(self._parameters)
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def gates(self) -> list[Gate]:
|
|
71
|
+
"""
|
|
72
|
+
Retrieve the list of gates in the circuit.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
list[Gate]: A list of gates that have been added to the circuit.
|
|
76
|
+
"""
|
|
77
|
+
return self._gates
|
|
78
|
+
|
|
79
|
+
def get_parameter_values(self) -> list[float]:
|
|
80
|
+
"""
|
|
81
|
+
Retrieve the parameter values from all parameterized gates in the circuit.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
list[float]: A list of parameter values from each parameterized gate.
|
|
85
|
+
"""
|
|
86
|
+
return [param.value for param in self._parameters.values()]
|
|
87
|
+
|
|
88
|
+
def get_parameter_names(self) -> list[str]:
|
|
89
|
+
"""
|
|
90
|
+
Retrieve the parameter values from all parameterized gates in the circuit.
|
|
91
|
+
|
|
92
|
+
Returns:
|
|
93
|
+
list[float]: A list of parameter values from each parameterized gate.
|
|
94
|
+
"""
|
|
95
|
+
return list(self._parameters.keys())
|
|
96
|
+
|
|
97
|
+
def get_parameters(self) -> dict[str, float]:
|
|
98
|
+
"""
|
|
99
|
+
Retrieve the parameter names and values from all parameterized gates in the circuit.
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
dict[str, float]: A dictionary of the parameters with their current values.
|
|
103
|
+
"""
|
|
104
|
+
return {label: param.value for label, param in self._parameters.items()}
|
|
105
|
+
|
|
106
|
+
def set_parameter_values(self, values: list[float]) -> None:
|
|
107
|
+
"""
|
|
108
|
+
Set new parameter values for all parameterized gates in the circuit.
|
|
109
|
+
|
|
110
|
+
Args:
|
|
111
|
+
values (list[float]): A list containing new parameter values to assign to the parameterized gates.
|
|
112
|
+
|
|
113
|
+
Raises:
|
|
114
|
+
ParametersNotEqualError: If the number of provided values does not match the expected number of parameters.
|
|
115
|
+
"""
|
|
116
|
+
if len(values) != self.nparameters:
|
|
117
|
+
raise ParametersNotEqualError
|
|
118
|
+
for i, parameter in enumerate(self._parameters.values()):
|
|
119
|
+
parameter.set_value(values[i])
|
|
120
|
+
|
|
121
|
+
def set_parameters(self, parameters: dict[str, RealNumber]) -> None:
|
|
122
|
+
"""Set the parameter values by their label. No need to provide the full list of parameters.
|
|
123
|
+
|
|
124
|
+
Args:
|
|
125
|
+
parameters (dict[str, float]): A dictionary with the labels of the parameters to be modified and their new value.
|
|
126
|
+
|
|
127
|
+
Raises:
|
|
128
|
+
ValueError: if the label provided doesn't correspond to a parameter defined in this circuit.
|
|
129
|
+
"""
|
|
130
|
+
for label, param in parameters.items():
|
|
131
|
+
if label not in self._parameters:
|
|
132
|
+
raise ValueError(f"Parameter {label} is not defined in this circuit.")
|
|
133
|
+
self._parameters[label].set_value(param)
|
|
134
|
+
|
|
135
|
+
def get_parameter_bounds(self) -> dict[str, tuple[float, float]]:
|
|
136
|
+
return {k: v.bounds for k, v in self._parameters.items()}
|
|
137
|
+
|
|
138
|
+
def set_parameter_bounds(self, ranges: dict[str, tuple[float, float]]) -> None:
|
|
139
|
+
for label, bound in ranges.items():
|
|
140
|
+
if label not in self._parameters:
|
|
141
|
+
raise ValueError(
|
|
142
|
+
f"The provided parameter label {label} is not defined in the list of parameters in this object."
|
|
143
|
+
)
|
|
144
|
+
self._parameters[label].set_bounds(bound[0], bound[1])
|
|
145
|
+
|
|
146
|
+
def _parse_params(self, gate: Gate) -> None:
|
|
147
|
+
"""Parse The parameters in the gate
|
|
148
|
+
|
|
149
|
+
Args:
|
|
150
|
+
gate (Gate): The gate to be parsed.
|
|
151
|
+
"""
|
|
152
|
+
if gate.is_parameterized:
|
|
153
|
+
param_base_label = f"{gate.name}({','.join(map(str, gate.qubits))})"
|
|
154
|
+
for label, parameter in gate.parameters.items():
|
|
155
|
+
if label == parameter.label and label in gate.PARAMETER_NAMES:
|
|
156
|
+
parameter_label = param_base_label + f"_{label}_{len(self._parameters)}"
|
|
157
|
+
else:
|
|
158
|
+
parameter_label = parameter.label
|
|
159
|
+
self._parameters[parameter_label] = gate.parameters[label]
|
|
160
|
+
|
|
161
|
+
def _add(self, gate: Gate) -> None:
|
|
162
|
+
"""
|
|
163
|
+
Add a quantum gate to the circuit.
|
|
164
|
+
|
|
165
|
+
Args:
|
|
166
|
+
gate (Gate): The quantum gate or a list of quantum gates to be added to the circuit.
|
|
167
|
+
|
|
168
|
+
Raises:
|
|
169
|
+
QubitOutOfRangeError: If any qubit index used by the gate is not within the circuit's qubit range.
|
|
170
|
+
"""
|
|
171
|
+
if any(qubit >= self.nqubits for qubit in gate.qubits):
|
|
172
|
+
raise QubitOutOfRangeError
|
|
173
|
+
|
|
174
|
+
self._parse_params(gate)
|
|
175
|
+
self._gates.append(gate)
|
|
176
|
+
|
|
177
|
+
def add(self, gates: Gate | Iterable[Gate]) -> None:
|
|
178
|
+
"""
|
|
179
|
+
Add a quantum gate to the circuit.
|
|
180
|
+
|
|
181
|
+
Args:
|
|
182
|
+
gates (Gate | list[Gate]): The quantum gate or a list of quantum gates to be added to the circuit.
|
|
183
|
+
"""
|
|
184
|
+
if isinstance(gates, Gate):
|
|
185
|
+
self._add(gates)
|
|
186
|
+
return
|
|
187
|
+
for g in gates:
|
|
188
|
+
self._add(g)
|
|
189
|
+
|
|
190
|
+
def _insert(self, gate: Gate, index: int = -1) -> None:
|
|
191
|
+
"""Insert a quantum gate to the circuit at a given index.
|
|
192
|
+
|
|
193
|
+
Args:
|
|
194
|
+
gate (Gate): The gate to be inserted.
|
|
195
|
+
index (int, optional): The index at which the gate is inserted. Defaults to -1.
|
|
196
|
+
|
|
197
|
+
Raises:
|
|
198
|
+
QubitOutOfRangeError: If any qubit index used by the gate is not within the circuit's qubit range.
|
|
199
|
+
"""
|
|
200
|
+
if any(qubit >= self.nqubits for qubit in gate.qubits):
|
|
201
|
+
raise QubitOutOfRangeError
|
|
202
|
+
|
|
203
|
+
self._parse_params(gate)
|
|
204
|
+
self._gates.insert(index, gate)
|
|
205
|
+
|
|
206
|
+
def insert(self, gates: Gate | Iterable[Gate], index: int = -1) -> None:
|
|
207
|
+
"""Insert a quantum gate to the circuit at a given index.
|
|
208
|
+
|
|
209
|
+
Args:
|
|
210
|
+
gates (Gate | list[Gate]): The gate or list of gates to be inserted.
|
|
211
|
+
index (int, optional): The index at which the gate is inserted. Defaults to -1.
|
|
212
|
+
"""
|
|
213
|
+
if isinstance(gates, Gate):
|
|
214
|
+
self._insert(gates, index)
|
|
215
|
+
return
|
|
216
|
+
for i, gate in enumerate(gates):
|
|
217
|
+
self._insert(gate, i + index)
|
|
218
|
+
|
|
219
|
+
def append(self, circuit: Circuit) -> None:
|
|
220
|
+
"""Append circuit elements at the end of the current circuit.
|
|
221
|
+
|
|
222
|
+
Args:
|
|
223
|
+
circuit (Circuit): The circuit to be appended.
|
|
224
|
+
|
|
225
|
+
Raises:
|
|
226
|
+
QubitOutOfRangeError: If the appended circuit acts on more qubits than the current circuit.
|
|
227
|
+
"""
|
|
228
|
+
if circuit.nqubits != self.nqubits:
|
|
229
|
+
raise QubitOutOfRangeError(
|
|
230
|
+
"the appended circuit contains different number of qubits than the current circuit."
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
for g in circuit.gates:
|
|
234
|
+
self.add(g)
|
|
235
|
+
|
|
236
|
+
def prepend(self, circuit: Circuit) -> None:
|
|
237
|
+
"""Prepend circuit elements to the beginning of the current circuit.
|
|
238
|
+
|
|
239
|
+
Args:
|
|
240
|
+
circuit (Circuit): The circuit to be prepended.
|
|
241
|
+
|
|
242
|
+
Raises:
|
|
243
|
+
QubitOutOfRangeError: If the circuit to be prepended acts on more qubits than the current circuit.
|
|
244
|
+
"""
|
|
245
|
+
if circuit.nqubits != self.nqubits:
|
|
246
|
+
raise QubitOutOfRangeError(
|
|
247
|
+
"the prepended circuit contains different number of qubits than the current circuit."
|
|
248
|
+
)
|
|
249
|
+
|
|
250
|
+
for i, g in enumerate(circuit.gates):
|
|
251
|
+
self.insert(g, i)
|
|
252
|
+
|
|
253
|
+
def __add__(self, other: Circuit | Gate) -> Circuit | NotImplementedError:
|
|
254
|
+
if not isinstance(other, (Circuit, Gate)):
|
|
255
|
+
return NotImplementedError(
|
|
256
|
+
"Addition is only supported between Circuit objects or a Circuit and a Gate objects"
|
|
257
|
+
)
|
|
258
|
+
if isinstance(other, Gate):
|
|
259
|
+
self.add(other)
|
|
260
|
+
else:
|
|
261
|
+
self.append(other)
|
|
262
|
+
return self
|
|
263
|
+
|
|
264
|
+
__iadd__ = __add__
|
|
265
|
+
|
|
266
|
+
def __radd__(self, other: Circuit | Gate) -> Circuit | NotImplementedError:
|
|
267
|
+
if not isinstance(other, (Circuit, Gate)):
|
|
268
|
+
return NotImplementedError(
|
|
269
|
+
"Addition is only supported between Circuit objects or a Circuit and a Gate objects"
|
|
270
|
+
)
|
|
271
|
+
if isinstance(other, Gate):
|
|
272
|
+
self.insert(other, 0)
|
|
273
|
+
else:
|
|
274
|
+
self.prepend(other)
|
|
275
|
+
return self
|
|
276
|
+
|
|
277
|
+
def draw(self, style: CircuitStyle = CircuitStyle(), filepath: str | None = None) -> None:
|
|
278
|
+
"""
|
|
279
|
+
Render this circuit with Matplotlib and optionally save it to a file.
|
|
280
|
+
|
|
281
|
+
The circuit is rendered using the provided style configuration. If ``filepath`` is
|
|
282
|
+
given, the resulting figure is saved to disk (the output format is inferred
|
|
283
|
+
from the file extension, e.g. ``.png``, ``.pdf``, ``.svg``).
|
|
284
|
+
|
|
285
|
+
Args:
|
|
286
|
+
style (CircuitStyle): Visual style configuration applied to the plot.
|
|
287
|
+
If not provided, the default :class:`CircuitStyle` is used.
|
|
288
|
+
filepath (str | None): Destination file path for the rendered figure.
|
|
289
|
+
If ``None``, the figure is not saved.
|
|
290
|
+
"""
|
|
291
|
+
from qilisdk.utils.visualization.circuit_renderers import MatplotlibCircuitRenderer # noqa: PLC0415
|
|
292
|
+
|
|
293
|
+
renderer = MatplotlibCircuitRenderer(self, style=style)
|
|
294
|
+
renderer.plot()
|
|
295
|
+
if filepath:
|
|
296
|
+
renderer.save(filepath)
|
|
297
|
+
|
|
298
|
+
@classmethod
|
|
299
|
+
def random(
|
|
300
|
+
cls, nqubits: int, single_qubit_gates: set[type[BasicGate]], two_qubit_gates: set[type[BasicGate]], ngates: int
|
|
301
|
+
) -> Self:
|
|
302
|
+
"""
|
|
303
|
+
Generate a random quantum circuit from a given set of gates.
|
|
304
|
+
|
|
305
|
+
Args:
|
|
306
|
+
nqubits (int): The number of qubits in the circuit.
|
|
307
|
+
single_qubit_gates (set[Gate]): A set of single-qubit gate classes to choose from.
|
|
308
|
+
two_qubit_gates (set[Gate]): A set of two-qubit gate classes to choose from.
|
|
309
|
+
ngates (int): The number of gates to include in the circuit.
|
|
310
|
+
|
|
311
|
+
Returns:
|
|
312
|
+
Circuit: A randomly generated quantum circuit.
|
|
313
|
+
|
|
314
|
+
Raises:
|
|
315
|
+
ValueError: If it is not possible to generate a full random circuit with the provided parameters
|
|
316
|
+
|
|
317
|
+
"""
|
|
318
|
+
|
|
319
|
+
# If we only have one gate and one qubit, throw an error
|
|
320
|
+
if nqubits == 1 and len(single_qubit_gates) == 1:
|
|
321
|
+
raise ValueError("Cannot generate a full random circuit with only one qubit and one gate.")
|
|
322
|
+
|
|
323
|
+
# Make sure we have given gates
|
|
324
|
+
if len(single_qubit_gates) == 0 and len(two_qubit_gates) == 0:
|
|
325
|
+
raise ValueError("At least one gate must be provided to generate a random circuit.")
|
|
326
|
+
|
|
327
|
+
new_circuit = cls(nqubits)
|
|
328
|
+
gate_list: list[type[BasicGate]] = list(single_qubit_gates)
|
|
329
|
+
if nqubits > 1:
|
|
330
|
+
gate_list.extend(list(two_qubit_gates))
|
|
331
|
+
prev_gate_type = None
|
|
332
|
+
prev_qubits = None
|
|
333
|
+
for _ in range(ngates):
|
|
334
|
+
gate_class = random.choice(gate_list)
|
|
335
|
+
gate_nqubits = 1 if gate_class in single_qubit_gates else 2
|
|
336
|
+
qubits = tuple(random.sample(range(nqubits), gate_nqubits))
|
|
337
|
+
|
|
338
|
+
# Avoid adding the same gate on the same qubits consecutively
|
|
339
|
+
if gate_class == prev_gate_type and qubits == prev_qubits:
|
|
340
|
+
# If we only have one qubit, pick a different gate
|
|
341
|
+
if nqubits == 1:
|
|
342
|
+
possible_new_gates = [g for g in single_qubit_gates if g != gate_class]
|
|
343
|
+
gate_class = random.choice(possible_new_gates)
|
|
344
|
+
|
|
345
|
+
# If the gate list does not include all qubits, change the first to be a different qubit
|
|
346
|
+
if len(qubits) < nqubits:
|
|
347
|
+
possible_new_qubits = [q for q in range(nqubits) if q not in qubits]
|
|
348
|
+
new_qubit = random.choice(possible_new_qubits)
|
|
349
|
+
qubits = (new_qubit, *qubits[1:])
|
|
350
|
+
|
|
351
|
+
# Otherwise, flip the order of the qubits
|
|
352
|
+
else:
|
|
353
|
+
qubits = tuple(reversed(qubits))
|
|
354
|
+
|
|
355
|
+
# Update previous gate info
|
|
356
|
+
prev_gate_type = gate_class
|
|
357
|
+
prev_qubits = qubits
|
|
358
|
+
|
|
359
|
+
# Generate random parameters if needed
|
|
360
|
+
params = {}
|
|
361
|
+
if gate_class.PARAMETER_NAMES:
|
|
362
|
+
for param_name in gate_class.PARAMETER_NAMES:
|
|
363
|
+
val = random.uniform(-np.pi, np.pi)
|
|
364
|
+
params[param_name] = Parameter(
|
|
365
|
+
label=param_name + str(val), value=val, domain=Domain.REAL, bounds=(val, val)
|
|
366
|
+
)
|
|
367
|
+
|
|
368
|
+
# Add the gate to the circuit
|
|
369
|
+
new_circuit.add(gate_class(*qubits, **params))
|
|
370
|
+
|
|
371
|
+
return new_circuit
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Copyright 2025 Qilimanjaro Quantum Tech
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
from qilisdk.digital import Circuit
|
|
15
|
+
|
|
16
|
+
from .circuit_transpiler_passes import CircuitTranspilerPass, DecomposeMultiControlledGatesPass
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class CircuitTranspiler:
|
|
20
|
+
"""Apply an ordered pipeline of circuit transpilation passes.
|
|
21
|
+
|
|
22
|
+
The transpiler acts as a thin orchestrator: each pass receives the circuit from the previous
|
|
23
|
+
pass and must return a brand-new circuit, allowing both structural rewrites and device-specific
|
|
24
|
+
lowering steps to be chained deterministically. Today the pipeline defaults to a single
|
|
25
|
+
`DecomposeMultiControlledGatesPass`, but the API is designed so additional passes—e.g. layout,
|
|
26
|
+
routing, or hardware-aware optimizers—can be composed in future iterations without changing
|
|
27
|
+
backend code.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
pipeline (list[CircuitTranspilerPass] | None): Sequential list of passes to execute while transpiling.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
def __init__(self, pipeline: list[CircuitTranspilerPass] | None = None) -> None:
|
|
34
|
+
self._pipeline = pipeline or [DecomposeMultiControlledGatesPass()]
|
|
35
|
+
|
|
36
|
+
def transpile(self, circuit: Circuit) -> Circuit:
|
|
37
|
+
"""Run the configured pass pipeline over the provided circuit.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
circuit (Circuit): Circuit to be rewritten by the transpiler passes.
|
|
41
|
+
Returns:
|
|
42
|
+
Circuit: The circuit returned by the last pass in the pipeline.
|
|
43
|
+
"""
|
|
44
|
+
for transpiler_pass in self._pipeline:
|
|
45
|
+
circuit = transpiler_pass.run(circuit)
|
|
46
|
+
return circuit
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Copyright 2025 Qilimanjaro Quantum Tech
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from .circuit_transpiler_pass import CircuitTranspilerPass
|
|
16
|
+
from .decompose_multi_controlled_gates_pass import DecomposeMultiControlledGatesPass
|
|
17
|
+
|
|
18
|
+
__all__ = ["CircuitTranspilerPass", "DecomposeMultiControlledGatesPass"]
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Copyright 2025 Qilimanjaro Quantum Tech
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from abc import ABC, abstractmethod
|
|
16
|
+
|
|
17
|
+
from qilisdk.digital import Circuit
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class CircuitTranspilerPass(ABC):
|
|
21
|
+
"""Base class for non-mutating circuit transpiler passes.
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
|
+
CircuitTranspilerPass: Instances expose the `run` API required by the transpiler.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
@abstractmethod
|
|
28
|
+
def run(self, circuit: Circuit) -> Circuit:
|
|
29
|
+
"""Create a new circuit built from `circuit` without mutating the input.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
circuit (Circuit): Circuit to be transpiled.
|
|
33
|
+
Returns:
|
|
34
|
+
Circuit: Newly transpiled circuit.
|
|
35
|
+
"""
|
|
36
|
+
...
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# Copyright 2025 Qilimanjaro Quantum Tech
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import math
|
|
16
|
+
from typing import List, TypeGuard
|
|
17
|
+
|
|
18
|
+
from qilisdk.digital import RX, RY, RZ, U1, U2, U3, Circuit, Gate, H, I, S, T, X, Y, Z
|
|
19
|
+
from qilisdk.digital.gates import BasicGate, Controlled
|
|
20
|
+
|
|
21
|
+
from .circuit_transpiler_pass import CircuitTranspilerPass
|
|
22
|
+
from .numeric_helpers import (
|
|
23
|
+
_unitary_sqrt_2x2,
|
|
24
|
+
_zyz_from_unitary,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _is_controlled_basic(g: Gate) -> TypeGuard[Controlled[BasicGate]]:
|
|
29
|
+
return isinstance(g, Controlled)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class DecomposeMultiControlledGatesPass(CircuitTranspilerPass):
|
|
33
|
+
"""Decompose multi-controlled (k >= 2) single-qubit gates.
|
|
34
|
+
|
|
35
|
+
The construction follows Lemma 7.5 from Barenco et al., *Elementary Gates for Quantum Computation*,
|
|
36
|
+
recursively replacing a k-controlled unitary with five layers of (k-1)-controlled operations built
|
|
37
|
+
from sqrt(U), its adjoint, and multi-controlled Pauli-X gates.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
def run(self, circuit: Circuit) -> Circuit:
|
|
41
|
+
"""Rewrite the circuit while decomposing multi-controlled gates.
|
|
42
|
+
|
|
43
|
+
Args:
|
|
44
|
+
circuit (Circuit): Circuit whose gates should be rewritten.
|
|
45
|
+
Returns:
|
|
46
|
+
Circuit: Newly built circuit containing only supported primitives.
|
|
47
|
+
"""
|
|
48
|
+
out = Circuit(circuit.nqubits)
|
|
49
|
+
for g in circuit.gates:
|
|
50
|
+
for h in self._rewrite_gate(g):
|
|
51
|
+
out.add(h)
|
|
52
|
+
|
|
53
|
+
return out
|
|
54
|
+
|
|
55
|
+
def _rewrite_gate(self, gate: Gate) -> List[Gate]: # noqa: PLR6301
|
|
56
|
+
"""Expand unsupported gates into equivalent elementary gates.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
gate (Gate): Candidate gate potentially containing multiple controls.
|
|
60
|
+
Returns:
|
|
61
|
+
list[Gate]: Sequence of equivalent gates that rely on supported primitives.
|
|
62
|
+
"""
|
|
63
|
+
# --- Multi-controlled gates ---
|
|
64
|
+
if _is_controlled_basic(gate):
|
|
65
|
+
base: BasicGate = gate.basic_gate
|
|
66
|
+
if base.nqubits != 1:
|
|
67
|
+
raise NotImplementedError("Controlled version of multi-qubit gates is not supported.")
|
|
68
|
+
|
|
69
|
+
return _decompose(gate)
|
|
70
|
+
|
|
71
|
+
# Everything else is untouched.
|
|
72
|
+
return [gate]
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _decompose(gate: Controlled) -> List[Gate]:
|
|
76
|
+
"""Recursively decompose a multi-controlled single-qubit gate.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
gate (Controlled): Controlled gate whose target operation is single-qubit.
|
|
80
|
+
Returns:
|
|
81
|
+
list[Gate]: Gate sequence computing the same unitary as `gate`.
|
|
82
|
+
"""
|
|
83
|
+
if len(gate.control_qubits) == 1:
|
|
84
|
+
return [gate]
|
|
85
|
+
|
|
86
|
+
c_last = gate.control_qubits[-1]
|
|
87
|
+
rest = gate.control_qubits[:-1]
|
|
88
|
+
|
|
89
|
+
v = _sqrt_of(gate.basic_gate)
|
|
90
|
+
v_adjoint = _adjoint_of(v)
|
|
91
|
+
|
|
92
|
+
seq: List[Gate] = []
|
|
93
|
+
seq += _decompose(Controlled(c_last, basic_gate=v))
|
|
94
|
+
seq += _decompose(X(c_last).controlled(*rest))
|
|
95
|
+
seq += _decompose(Controlled(c_last, basic_gate=v_adjoint))
|
|
96
|
+
seq += _decompose(X(c_last).controlled(*rest))
|
|
97
|
+
seq += _decompose(Controlled(*rest, basic_gate=v))
|
|
98
|
+
|
|
99
|
+
return seq
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _sqrt_of(gate: BasicGate) -> BasicGate:
|
|
103
|
+
"""Return a gate V whose square equals the provided gate.
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
gate (BasicGate): Single-qubit gate to compute the principal square root for.
|
|
107
|
+
Returns:
|
|
108
|
+
BasicGate: New primitive V that satisfies V · V ≡ gate.
|
|
109
|
+
"""
|
|
110
|
+
q = gate.qubits[0]
|
|
111
|
+
|
|
112
|
+
# Identity: sqrt(I) = I
|
|
113
|
+
if isinstance(gate, I):
|
|
114
|
+
return I(q)
|
|
115
|
+
|
|
116
|
+
# Direct parametric rotations.
|
|
117
|
+
if isinstance(gate, RZ):
|
|
118
|
+
return RZ(q, phi=gate.phi / 2.0)
|
|
119
|
+
if isinstance(gate, RX):
|
|
120
|
+
return RX(q, theta=gate.theta / 2.0)
|
|
121
|
+
if isinstance(gate, RY):
|
|
122
|
+
return RY(q, theta=gate.theta / 2.0)
|
|
123
|
+
|
|
124
|
+
# Pauli gates via half-angle rotations.
|
|
125
|
+
if isinstance(gate, Z):
|
|
126
|
+
return RZ(q, phi=math.pi / 2.0)
|
|
127
|
+
if isinstance(gate, X):
|
|
128
|
+
return RX(q, theta=math.pi / 2.0)
|
|
129
|
+
if isinstance(gate, Y):
|
|
130
|
+
return RY(q, theta=math.pi / 2.0)
|
|
131
|
+
|
|
132
|
+
# Phase gate U1(phi) = diag(1, e^{iphi}), sqrt is U1(phi/2).
|
|
133
|
+
if isinstance(gate, U1):
|
|
134
|
+
return RZ(q, phi=gate.phi / 2.0)
|
|
135
|
+
|
|
136
|
+
# S and T: phase gates with known relation to RZ
|
|
137
|
+
# S = RZ(pi/2) ⇒ sqrt(S) = RZ(pi/4) ≡ T
|
|
138
|
+
if isinstance(gate, S):
|
|
139
|
+
return T(q)
|
|
140
|
+
|
|
141
|
+
# T = RZ(pi/4) ⇒ sqrt(T) = RZ(pi/8)
|
|
142
|
+
if isinstance(gate, T):
|
|
143
|
+
return RZ(q, phi=math.pi / 8.0)
|
|
144
|
+
|
|
145
|
+
# Build the 2x2 unitary matrix for gate
|
|
146
|
+
if isinstance(gate, BasicGate) and gate.nqubits == 1:
|
|
147
|
+
U = gate.matrix
|
|
148
|
+
else:
|
|
149
|
+
raise NotImplementedError(f"_sqrt_1q_gate_as_basis only supports 1-qubit gates; got {type(gate).__name__}")
|
|
150
|
+
|
|
151
|
+
# Compute a matrix square root V such that V @ V ≈ U.
|
|
152
|
+
v_sqrt = _unitary_sqrt_2x2(U)
|
|
153
|
+
|
|
154
|
+
# Express V as a U3 on the same qubit. This introduces a new gate in U3 form
|
|
155
|
+
# for the *square root*, but leaves the original g untouched.
|
|
156
|
+
th, ph, lam = _zyz_from_unitary(v_sqrt)
|
|
157
|
+
return U3(q, theta=th, phi=ph, gamma=lam)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def _adjoint_of(gate: BasicGate) -> BasicGate:
|
|
161
|
+
"""Return the single-qubit adjoint (inverse) of a gate.
|
|
162
|
+
|
|
163
|
+
Args:
|
|
164
|
+
gate (BasicGate): Gate whose inverse should be produced.
|
|
165
|
+
Returns:
|
|
166
|
+
BasicGate: Gate that when composed with `gate` yields the identity.
|
|
167
|
+
"""
|
|
168
|
+
q = gate.qubits[0]
|
|
169
|
+
|
|
170
|
+
# Identity: self-adjoint.
|
|
171
|
+
if isinstance(gate, I):
|
|
172
|
+
return I(q)
|
|
173
|
+
|
|
174
|
+
# Pauli & Hadamard: self-adjoint.
|
|
175
|
+
if isinstance(gate, X):
|
|
176
|
+
return X(q)
|
|
177
|
+
if isinstance(gate, Y):
|
|
178
|
+
return Y(q)
|
|
179
|
+
if isinstance(gate, Z):
|
|
180
|
+
return Z(q)
|
|
181
|
+
if isinstance(gate, H):
|
|
182
|
+
return H(q)
|
|
183
|
+
|
|
184
|
+
if isinstance(gate, RX):
|
|
185
|
+
return RX(q, theta=-gate.theta)
|
|
186
|
+
if isinstance(gate, RY):
|
|
187
|
+
return RY(q, theta=-gate.theta)
|
|
188
|
+
if isinstance(gate, RZ):
|
|
189
|
+
return RZ(q, phi=-gate.phi)
|
|
190
|
+
|
|
191
|
+
if isinstance(gate, U1):
|
|
192
|
+
# U1(gamma)† = U1(-gamma)
|
|
193
|
+
return RZ(q, phi=-gate.phi)
|
|
194
|
+
if isinstance(gate, U2):
|
|
195
|
+
# U2(phi, gamma)† = U3(pi/2, phi, gamma)† = U3(-pi/2, -phi, -gamma)
|
|
196
|
+
return U3(q, theta=-math.pi / 2.0, phi=-gate.gamma, gamma=-gate.phi)
|
|
197
|
+
if isinstance(gate, U3):
|
|
198
|
+
# U3(theta, phi, gamma)† = U3(-theta, -gamma, -phi)
|
|
199
|
+
return U3(q, theta=-gate.theta, phi=-gate.gamma, gamma=-gate.phi)
|
|
200
|
+
|
|
201
|
+
# S, T: phase gates about Z.
|
|
202
|
+
# S = RZ(pi/2) ⇒ S† = RZ(-pi/2)
|
|
203
|
+
if isinstance(gate, S):
|
|
204
|
+
return RZ(q, phi=-math.pi / 2.0)
|
|
205
|
+
|
|
206
|
+
# T = RZ(pi/4) ⇒ T† = RZ(-pi/4)
|
|
207
|
+
if isinstance(gate, T):
|
|
208
|
+
return RZ(q, phi=-math.pi / 4.0)
|
|
209
|
+
|
|
210
|
+
# ---------- Generic 1-qubit unitary via matrix adjoint ----------
|
|
211
|
+
|
|
212
|
+
if isinstance(gate, BasicGate) and gate.nqubits == 1:
|
|
213
|
+
U = gate.matrix
|
|
214
|
+
else:
|
|
215
|
+
raise NotImplementedError(f"_adjoint_1q only supports 1-qubit gates; got {type(gate).__name__}")
|
|
216
|
+
|
|
217
|
+
# Take the matrix adjoint U† and convert to ZYZ → U3.
|
|
218
|
+
u_dagger = U.conj().T
|
|
219
|
+
theta, phi, gamma = _zyz_from_unitary(u_dagger)
|
|
220
|
+
return U3(q, theta=theta, phi=phi, gamma=gamma)
|