qilisdk 0.1.8__cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.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 +635 -0
- qilisdk-0.1.8.dist-info/WHEEL +6 -0
- qilisdk-0.1.8.dist-info/licenses/LICENCE +201 -0
- qilisdk.libs/libgomp-65f46eca.so.1.0.0 +0 -0
- qilisim_module.cpython-313-i386-linux-gnu.so +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
- share/pkgconfig/eigen3.pc +9 -0
|
@@ -0,0 +1,148 @@
|
|
|
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 os
|
|
17
|
+
import secrets
|
|
18
|
+
from typing import TYPE_CHECKING
|
|
19
|
+
|
|
20
|
+
from loguru import logger
|
|
21
|
+
from qilisim_module import QiliSimCpp # ty:ignore[unresolved-import]
|
|
22
|
+
|
|
23
|
+
from qilisdk.backends.backend import Backend
|
|
24
|
+
|
|
25
|
+
if TYPE_CHECKING:
|
|
26
|
+
from qilisdk.core import QTensor
|
|
27
|
+
from qilisdk.functionals.sampling import Sampling
|
|
28
|
+
from qilisdk.functionals.sampling_result import SamplingResult
|
|
29
|
+
from qilisdk.functionals.time_evolution import TimeEvolution
|
|
30
|
+
from qilisdk.functionals.time_evolution_result import TimeEvolutionResult
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class QiliSim(Backend):
|
|
34
|
+
"""
|
|
35
|
+
Backend based that runs both digital-circuit sampling and analog
|
|
36
|
+
time-evolution experiments using a custom C++ simulator.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(
|
|
40
|
+
self,
|
|
41
|
+
evolution_method: str = "integrate",
|
|
42
|
+
arnoldi_dim: int = 10,
|
|
43
|
+
num_arnoldi_substeps: int = 1,
|
|
44
|
+
num_integrate_substeps: int = 2,
|
|
45
|
+
monte_carlo: bool = False,
|
|
46
|
+
num_monte_carlo_trajectories: int = 100,
|
|
47
|
+
max_cache_size: int = 1000,
|
|
48
|
+
num_threads: int = 0,
|
|
49
|
+
seed: int | None = None,
|
|
50
|
+
atol: float = 1e-12,
|
|
51
|
+
) -> None:
|
|
52
|
+
"""
|
|
53
|
+
Instantiate a new :class:`QiliSim` backend. This is a CPU-based simulator
|
|
54
|
+
implemented in C++, using pybind11 for bindings.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
evolution_method (str): The solver method to use. Options are 'direct', 'arnoldi' and 'integrate'.
|
|
58
|
+
arnoldi_dim (int): The dimension of the Arnoldi subspace to use for the 'arnoldi' method.
|
|
59
|
+
num_arnoldi_substeps (int): The number of substeps to use when using the Arnoldi method.
|
|
60
|
+
num_integrate_substeps (int): The number of substeps to use when using the Integrate method.
|
|
61
|
+
monte_carlo (bool): Whether to use the Monte Carlo method for open systems.
|
|
62
|
+
num_monte_carlo_trajectories (int): The number of trajectories to use when using the Monte Carlo method.
|
|
63
|
+
max_cache_size (int): The maximum size of the internal cache for gate caching.
|
|
64
|
+
num_threads (int): The number of threads to use for parallel execution. If 0, uses all available cores.
|
|
65
|
+
seed (int | None): Seed for the random number generator. If None, a random seed is chosen.
|
|
66
|
+
atol (float): Absolute tolerance for numerical methods.
|
|
67
|
+
|
|
68
|
+
Raises:
|
|
69
|
+
ValueError: If any of the parameters are invalid.
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
# Sanity checks on params
|
|
73
|
+
# Note that these are also in the C++ code, so update there as well if changed here for consistency
|
|
74
|
+
if evolution_method not in {"direct", "arnoldi", "integrate"}:
|
|
75
|
+
raise ValueError(f"Unknown time evolution method: {evolution_method}")
|
|
76
|
+
if arnoldi_dim <= 0:
|
|
77
|
+
raise ValueError("arnoldi_dim must be a positive integer")
|
|
78
|
+
if num_arnoldi_substeps <= 0:
|
|
79
|
+
raise ValueError("num_arnoldi_substeps must be a positive integer")
|
|
80
|
+
if num_integrate_substeps <= 0:
|
|
81
|
+
raise ValueError("num_integrate_substeps must be a positive integer")
|
|
82
|
+
if num_monte_carlo_trajectories <= 0:
|
|
83
|
+
raise ValueError("num_monte_carlo_trajectories must be a positive integer")
|
|
84
|
+
if max_cache_size < 0:
|
|
85
|
+
raise ValueError("max_cache_size cannot be negative")
|
|
86
|
+
if atol <= 0:
|
|
87
|
+
raise ValueError("atol must be a positive float")
|
|
88
|
+
|
|
89
|
+
# Set number of threads if non-positive
|
|
90
|
+
if num_threads <= 0:
|
|
91
|
+
num_threads = os.cpu_count() or 1
|
|
92
|
+
|
|
93
|
+
# Set a random seed
|
|
94
|
+
if seed is None:
|
|
95
|
+
seed = secrets.randbelow(2**15)
|
|
96
|
+
|
|
97
|
+
# Initialize the backend and the class vars
|
|
98
|
+
super().__init__()
|
|
99
|
+
self.qili_sim = QiliSimCpp()
|
|
100
|
+
self._noise_model = None
|
|
101
|
+
self.solver_params = {
|
|
102
|
+
"evolution_method": evolution_method,
|
|
103
|
+
"arnoldi_dim": arnoldi_dim,
|
|
104
|
+
"num_arnoldi_substeps": num_arnoldi_substeps,
|
|
105
|
+
"num_integrate_substeps": num_integrate_substeps,
|
|
106
|
+
"monte_carlo": monte_carlo,
|
|
107
|
+
"num_monte_carlo_trajectories": num_monte_carlo_trajectories,
|
|
108
|
+
"max_cache_size": max_cache_size,
|
|
109
|
+
"num_threads": num_threads,
|
|
110
|
+
"seed": seed,
|
|
111
|
+
"atol": atol,
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
def _execute_sampling(self, functional: Sampling, initial_state: QTensor | None = None) -> SamplingResult:
|
|
115
|
+
"""
|
|
116
|
+
Execute a quantum circuit and return the measurement results.
|
|
117
|
+
|
|
118
|
+
Args:
|
|
119
|
+
functional (Sampling): The Sampling function to execute.
|
|
120
|
+
|
|
121
|
+
Returns:
|
|
122
|
+
SamplingResult: A result object containing the measurement samples and computed probabilities.
|
|
123
|
+
|
|
124
|
+
"""
|
|
125
|
+
logger.info("Executing Sampling with {} shots", functional.nshots)
|
|
126
|
+
result = self.qili_sim.execute_sampling(functional, self._noise_model, initial_state, self.solver_params)
|
|
127
|
+
logger.success("Sampling finished")
|
|
128
|
+
return result
|
|
129
|
+
|
|
130
|
+
def _execute_time_evolution(self, functional: TimeEvolution) -> TimeEvolutionResult:
|
|
131
|
+
"""
|
|
132
|
+
Computes the time evolution under of an initial state under the given schedule.
|
|
133
|
+
|
|
134
|
+
Args:
|
|
135
|
+
functional (TimeEvolution): The TimeEvolution functional to execute.
|
|
136
|
+
|
|
137
|
+
Returns:
|
|
138
|
+
TimeEvolutionResult: The results of the evolution.
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
# Get the time steps
|
|
142
|
+
logger.info("Executing TimeEvolution (T={}, dt={})", functional.schedule.T, functional.schedule.dt)
|
|
143
|
+
|
|
144
|
+
# Execute the time evolution
|
|
145
|
+
result = self.qili_sim.execute_time_evolution(functional, self._noise_model, self.solver_params)
|
|
146
|
+
|
|
147
|
+
logger.success("TimeEvolution finished")
|
|
148
|
+
return result
|
|
@@ -0,0 +1,504 @@
|
|
|
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
|
+
from collections import Counter
|
|
17
|
+
from typing import TYPE_CHECKING, Callable, Type, TypeVar
|
|
18
|
+
|
|
19
|
+
import numpy as np
|
|
20
|
+
import qutip_qip.operations as QutipGates
|
|
21
|
+
from loguru import logger
|
|
22
|
+
from qutip import Qobj, basis, mesolve, qeye, tensor
|
|
23
|
+
from qutip_qip.circuit import CircuitSimulator, QubitCircuit
|
|
24
|
+
from qutip_qip.operations.gateclass import SingleQubitGate, is_qutip5
|
|
25
|
+
|
|
26
|
+
from qilisdk.analog.hamiltonian import Hamiltonian, PauliI, PauliOperator
|
|
27
|
+
from qilisdk.backends.backend import Backend
|
|
28
|
+
from qilisdk.core.qtensor import QTensor, tensor_prod
|
|
29
|
+
from qilisdk.digital import RX, RY, RZ, SWAP, U1, U2, U3, Circuit, H, I, M, S, T, X, Y, Z
|
|
30
|
+
from qilisdk.digital.circuit_transpiler_passes import DecomposeMultiControlledGatesPass
|
|
31
|
+
from qilisdk.digital.exceptions import UnsupportedGateError
|
|
32
|
+
from qilisdk.digital.gates import Adjoint, BasicGate, Controlled
|
|
33
|
+
from qilisdk.functionals.sampling_result import SamplingResult
|
|
34
|
+
from qilisdk.functionals.time_evolution_result import TimeEvolutionResult
|
|
35
|
+
from qilisdk.settings import get_settings
|
|
36
|
+
|
|
37
|
+
if TYPE_CHECKING:
|
|
38
|
+
from qilisdk.functionals.sampling import Sampling
|
|
39
|
+
from qilisdk.functionals.time_evolution import TimeEvolution
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
TBasicGate = TypeVar("TBasicGate", bound=BasicGate)
|
|
43
|
+
BasicGateHandlersMapping = dict[Type[TBasicGate], Callable[[QubitCircuit, TBasicGate, int], None]]
|
|
44
|
+
|
|
45
|
+
TPauliOperator = TypeVar("TPauliOperator", bound=PauliOperator)
|
|
46
|
+
PauliOperatorHandlersMapping = dict[Type[TPauliOperator], Callable[[TPauliOperator], Qobj]]
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def _complex_dtype() -> np.dtype:
|
|
50
|
+
return get_settings().complex_precision.dtype
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class QutipI(SingleQubitGate):
|
|
54
|
+
"""
|
|
55
|
+
Single-qubit I gate.
|
|
56
|
+
|
|
57
|
+
Examples
|
|
58
|
+
--------
|
|
59
|
+
>>> from qutip_qip.operations import X
|
|
60
|
+
>>> I(0).get_compact_qobj() # doctest: +NORMALIZE_WHITESPACE
|
|
61
|
+
Quantum object: dims=[[2], [2]], shape=(2, 2), type='oper', dtype=Dense, isherm=True
|
|
62
|
+
Qobj data =
|
|
63
|
+
[[1. 0.]
|
|
64
|
+
[0. 1.]]
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
def __init__(self, targets, **kwargs) -> None: # noqa: ANN001, ANN003
|
|
68
|
+
super().__init__(targets=targets, **kwargs)
|
|
69
|
+
self.name = "I"
|
|
70
|
+
self.latex_str = r"I"
|
|
71
|
+
|
|
72
|
+
def get_compact_qobj(self): # noqa: ANN201, PLR6301
|
|
73
|
+
return qeye(2) if not is_qutip5 else qeye(2, dtype="dense")
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class QutipBackend(Backend):
|
|
77
|
+
"""
|
|
78
|
+
Backend that runs both digital-circuit sampling and analog
|
|
79
|
+
time-evolution experiments using the **QuTiP** simulation library.
|
|
80
|
+
|
|
81
|
+
The backend is CPU-only and has no hardware dependencies, which makes it
|
|
82
|
+
ideal for local development, CI pipelines, and educational notebooks.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
def __init__(self, nsteps: int = 10_000) -> None:
|
|
86
|
+
"""Instantiate a new :class:`QutipBackend`.
|
|
87
|
+
Args:
|
|
88
|
+
nsteps (int): The maximum number of internal steps for the ODE solver."""
|
|
89
|
+
self.nsteps = nsteps
|
|
90
|
+
|
|
91
|
+
super().__init__()
|
|
92
|
+
self._basic_gate_handlers: BasicGateHandlersMapping = {
|
|
93
|
+
I: QutipBackend._handle_I,
|
|
94
|
+
X: QutipBackend._handle_X,
|
|
95
|
+
Y: QutipBackend._handle_Y,
|
|
96
|
+
Z: QutipBackend._handle_Z,
|
|
97
|
+
H: QutipBackend._handle_H,
|
|
98
|
+
S: QutipBackend._handle_S,
|
|
99
|
+
T: QutipBackend._handle_T,
|
|
100
|
+
RX: QutipBackend._handle_RX,
|
|
101
|
+
RY: QutipBackend._handle_RY,
|
|
102
|
+
RZ: QutipBackend._handle_RZ,
|
|
103
|
+
U1: QutipBackend._handle_U1,
|
|
104
|
+
U2: QutipBackend._handle_U2,
|
|
105
|
+
U3: QutipBackend._handle_U3,
|
|
106
|
+
SWAP: QutipBackend._handle_SWAP,
|
|
107
|
+
}
|
|
108
|
+
logger.success("QutipBackend initialised")
|
|
109
|
+
|
|
110
|
+
def _execute_sampling(self, functional: Sampling) -> SamplingResult:
|
|
111
|
+
"""
|
|
112
|
+
Execute a quantum circuit and return the measurement results.
|
|
113
|
+
|
|
114
|
+
This method applies the selected simulation method, translates the circuit's gates into
|
|
115
|
+
CUDA operations via their respective handlers, runs the simulation, and returns the result
|
|
116
|
+
as a QutipDigitalResult.
|
|
117
|
+
|
|
118
|
+
Args:
|
|
119
|
+
functional (Sampling): The Sampling function to execute.
|
|
120
|
+
|
|
121
|
+
Returns:
|
|
122
|
+
DigitalResult: A result object containing the measurement samples and computed probabilities.
|
|
123
|
+
|
|
124
|
+
"""
|
|
125
|
+
logger.info("Executing Sampling (shots={})", functional.nshots)
|
|
126
|
+
|
|
127
|
+
init_state = tensor(*[basis(2, 0) for _ in range(functional.circuit.nqubits)])
|
|
128
|
+
|
|
129
|
+
measurements_set = set()
|
|
130
|
+
for m in functional.circuit.gates:
|
|
131
|
+
if isinstance(m, M):
|
|
132
|
+
measurements_set.update(list(m.target_qubits))
|
|
133
|
+
measurements = sorted(measurements_set)
|
|
134
|
+
|
|
135
|
+
transpiled_circuit = DecomposeMultiControlledGatesPass().run(functional.circuit)
|
|
136
|
+
qutip_circuit = self._get_qutip_circuit(transpiled_circuit)
|
|
137
|
+
sim = CircuitSimulator(qutip_circuit)
|
|
138
|
+
|
|
139
|
+
res = sim.run_statistics(init_state) # runs the full circuit for one shot
|
|
140
|
+
_bits = res.cbits # classical measurement bits
|
|
141
|
+
bits = []
|
|
142
|
+
probs = res.probabilities
|
|
143
|
+
|
|
144
|
+
if sum(probs) != 1:
|
|
145
|
+
probs /= sum(probs)
|
|
146
|
+
|
|
147
|
+
if len(measurements) > 0:
|
|
148
|
+
for b in _bits:
|
|
149
|
+
aux = []
|
|
150
|
+
for i in measurements:
|
|
151
|
+
aux.append(b[i])
|
|
152
|
+
bits.append(aux)
|
|
153
|
+
else:
|
|
154
|
+
bits = _bits
|
|
155
|
+
|
|
156
|
+
bits_list = ["".join(map(str, cb)) for cb in bits]
|
|
157
|
+
|
|
158
|
+
rng = np.random.default_rng(42)
|
|
159
|
+
samples = rng.choice(bits_list, size=functional.nshots, p=probs)
|
|
160
|
+
samples_py = map(str, samples)
|
|
161
|
+
|
|
162
|
+
counts = Counter(samples_py)
|
|
163
|
+
|
|
164
|
+
logger.success("Sampling finished; {} distinct bitstrings", len(counts))
|
|
165
|
+
return SamplingResult(nshots=functional.nshots, samples=dict(counts))
|
|
166
|
+
|
|
167
|
+
@staticmethod
|
|
168
|
+
def _to_qubip_observables(obs: Hamiltonian | PauliOperator, nqubits: int) -> Qobj:
|
|
169
|
+
"""Convert a QiliSDK observable to a QuTiP Qobj.
|
|
170
|
+
|
|
171
|
+
Args:
|
|
172
|
+
obs (Hamiltonian | PauliOperator): The observable to convert.
|
|
173
|
+
nqubits (int): The total number of qubits in the system.
|
|
174
|
+
|
|
175
|
+
Returns:
|
|
176
|
+
Qobj: The corresponding QuTiP Qobj representation of the observable.
|
|
177
|
+
|
|
178
|
+
Raises:
|
|
179
|
+
ValueError: If the observable type is unsupported.
|
|
180
|
+
"""
|
|
181
|
+
aux_obs = None
|
|
182
|
+
identity = QTensor(PauliI(0).matrix)
|
|
183
|
+
if isinstance(obs, PauliOperator):
|
|
184
|
+
for i in range(nqubits):
|
|
185
|
+
if aux_obs is None:
|
|
186
|
+
aux_obs = identity if i != obs.qubit else QTensor(obs.matrix)
|
|
187
|
+
else:
|
|
188
|
+
aux_obs = (
|
|
189
|
+
tensor_prod([aux_obs, identity])
|
|
190
|
+
if i != obs.qubit
|
|
191
|
+
else tensor_prod([aux_obs, QTensor(obs.matrix)])
|
|
192
|
+
)
|
|
193
|
+
elif isinstance(obs, Hamiltonian):
|
|
194
|
+
aux_obs = QTensor(obs.to_matrix())
|
|
195
|
+
if obs.nqubits < nqubits:
|
|
196
|
+
for _ in range(nqubits - obs.nqubits):
|
|
197
|
+
aux_obs = tensor_prod([aux_obs, identity])
|
|
198
|
+
elif isinstance(obs, QTensor):
|
|
199
|
+
aux_obs = obs
|
|
200
|
+
if aux_obs is not None:
|
|
201
|
+
return Qobj(aux_obs.dense(), dims=[[2 for _ in range(nqubits)] for _ in range(2)])
|
|
202
|
+
logger.error("Unsupported observable type {}", obs.__class__.__name__)
|
|
203
|
+
raise ValueError(f"unsupported observable type of {obs.__class__}")
|
|
204
|
+
|
|
205
|
+
def _execute_time_evolution(self, functional: TimeEvolution) -> TimeEvolutionResult:
|
|
206
|
+
"""computes the time evolution under of an initial state under the given schedule.
|
|
207
|
+
|
|
208
|
+
Args:
|
|
209
|
+
functional (TimeEvolution): The TimeEvolution functional to execute.
|
|
210
|
+
|
|
211
|
+
Returns:
|
|
212
|
+
TimeEvolutionResult: The results of the evolution.
|
|
213
|
+
|
|
214
|
+
Raises:
|
|
215
|
+
ValueError: if the initial state provided is invalid.
|
|
216
|
+
"""
|
|
217
|
+
|
|
218
|
+
logger.info("Executing TimeEvolution (T={}, dt={})", functional.schedule.T, functional.schedule.dt)
|
|
219
|
+
steps = functional.schedule.tlist
|
|
220
|
+
|
|
221
|
+
qutip_hamiltonians = []
|
|
222
|
+
for hamiltonian in functional.schedule.hamiltonians.values():
|
|
223
|
+
qutip_hamiltonians.append(
|
|
224
|
+
Qobj(
|
|
225
|
+
hamiltonian.to_qtensor(total_nqubits=functional.schedule.nqubits).dense(),
|
|
226
|
+
dims=[[2 for _ in range(functional.schedule.nqubits)] for _ in range(2)],
|
|
227
|
+
)
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
h_t = [
|
|
231
|
+
[
|
|
232
|
+
qutip_hamiltonians[i],
|
|
233
|
+
np.array(
|
|
234
|
+
[functional.schedule.coefficients[h][t] for t in steps],
|
|
235
|
+
dtype=_complex_dtype(),
|
|
236
|
+
),
|
|
237
|
+
]
|
|
238
|
+
for i, h in enumerate(functional.schedule.hamiltonians)
|
|
239
|
+
]
|
|
240
|
+
state_dim = []
|
|
241
|
+
if functional.initial_state.is_density_matrix():
|
|
242
|
+
state_dim = [[2 for _ in range(functional.initial_state.nqubits)] for _ in range(2)]
|
|
243
|
+
elif functional.initial_state.is_bra():
|
|
244
|
+
state_dim = [[1], [2 for _ in range(functional.initial_state.nqubits)]]
|
|
245
|
+
elif functional.initial_state.is_ket():
|
|
246
|
+
state_dim = [[2 for _ in range(functional.initial_state.nqubits)], [1]]
|
|
247
|
+
else:
|
|
248
|
+
logger.error("Invalid initial state provided")
|
|
249
|
+
raise ValueError("invalid initial state provided.")
|
|
250
|
+
|
|
251
|
+
qutip_init_state = Qobj(functional.initial_state.dense(), dims=state_dim)
|
|
252
|
+
|
|
253
|
+
qutip_obs: list[Qobj] = []
|
|
254
|
+
for obs in functional.observables:
|
|
255
|
+
qutip_obs.append(self._to_qubip_observables(obs, functional.schedule.nqubits))
|
|
256
|
+
|
|
257
|
+
results = mesolve(
|
|
258
|
+
H=h_t,
|
|
259
|
+
e_ops=qutip_obs,
|
|
260
|
+
rho0=qutip_init_state,
|
|
261
|
+
tlist=steps,
|
|
262
|
+
options={
|
|
263
|
+
"store_states": functional.store_intermediate_results,
|
|
264
|
+
"store_final_state": True,
|
|
265
|
+
"nsteps": self.nsteps,
|
|
266
|
+
},
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
logger.success("TimeEvolution finished")
|
|
270
|
+
return TimeEvolutionResult(
|
|
271
|
+
final_expected_values=np.array(
|
|
272
|
+
[results.expect[i][-1] for i in range(len(qutip_obs))], # ty:ignore[not-subscriptable]
|
|
273
|
+
dtype=_complex_dtype(),
|
|
274
|
+
),
|
|
275
|
+
expected_values=(
|
|
276
|
+
np.array(
|
|
277
|
+
[
|
|
278
|
+
[results.expect[val][i] for val in range(len(results.expect))] # ty:ignore[not-subscriptable]
|
|
279
|
+
for i in range(len(results.expect[0])) # ty:ignore[invalid-argument-type]
|
|
280
|
+
],
|
|
281
|
+
dtype=_complex_dtype(),
|
|
282
|
+
)
|
|
283
|
+
if len(results.expect) > 0 and functional.store_intermediate_results
|
|
284
|
+
else None
|
|
285
|
+
),
|
|
286
|
+
final_state=(QTensor(results.final_state.full()) if results.final_state is not None else None),
|
|
287
|
+
intermediate_states=(
|
|
288
|
+
[QTensor(state.full()) for state in results.states]
|
|
289
|
+
if len(results.states) > 1 and functional.store_intermediate_results
|
|
290
|
+
else None
|
|
291
|
+
),
|
|
292
|
+
)
|
|
293
|
+
|
|
294
|
+
def _get_qutip_circuit(self, circuit: Circuit) -> QubitCircuit:
|
|
295
|
+
"""_summary_
|
|
296
|
+
|
|
297
|
+
Args:
|
|
298
|
+
circuit (Circuit): the qiliSDK circuit to be translated to qutip.
|
|
299
|
+
|
|
300
|
+
Raises:
|
|
301
|
+
UnsupportedGateError: If the circuit contains a gate for which no handler is registered.
|
|
302
|
+
|
|
303
|
+
Returns:
|
|
304
|
+
QubitCircuit: the translated qutip circuit.
|
|
305
|
+
"""
|
|
306
|
+
qutip_circuit = QubitCircuit(
|
|
307
|
+
circuit.nqubits, num_cbits=circuit.nqubits, input_states=[0 for _ in range(circuit.nqubits)]
|
|
308
|
+
)
|
|
309
|
+
|
|
310
|
+
for gate in circuit.gates:
|
|
311
|
+
if isinstance(gate, Controlled):
|
|
312
|
+
self._handle_controlled(qutip_circuit, gate)
|
|
313
|
+
elif isinstance(gate, Adjoint):
|
|
314
|
+
self._handle_adjoint(qutip_circuit, gate)
|
|
315
|
+
elif isinstance(gate, M):
|
|
316
|
+
self._handle_M(qutip_circuit, gate)
|
|
317
|
+
else:
|
|
318
|
+
handler = self._basic_gate_handlers.get(type(gate), None)
|
|
319
|
+
if handler is None:
|
|
320
|
+
logger.error("Unsupported gate {}", type(gate).__name__)
|
|
321
|
+
raise UnsupportedGateError(f"Unsupported gate {type(gate).__name__}")
|
|
322
|
+
qubits = gate.target_qubits
|
|
323
|
+
handler(qutip_circuit, gate, *qubits)
|
|
324
|
+
|
|
325
|
+
no_measurement = True
|
|
326
|
+
|
|
327
|
+
for g in circuit.gates:
|
|
328
|
+
if isinstance(g, M):
|
|
329
|
+
no_measurement = False
|
|
330
|
+
|
|
331
|
+
if no_measurement:
|
|
332
|
+
for i in range(circuit.nqubits):
|
|
333
|
+
qutip_circuit.add_measurement(f"M{i}", targets=i, classical_store=i)
|
|
334
|
+
return qutip_circuit
|
|
335
|
+
|
|
336
|
+
def _handle_controlled(self, circuit: QubitCircuit, gate: Controlled) -> None: # noqa: PLR6301
|
|
337
|
+
"""
|
|
338
|
+
Handle a controlled gate operation by registering a custom QuTiP gate.
|
|
339
|
+
|
|
340
|
+
For non-native controlled gates we construct the block-matrix explicitly, mirroring
|
|
341
|
+
the approach recommended in the QuTiP QIP documentation for custom controlled rotations.
|
|
342
|
+
|
|
343
|
+
"""
|
|
344
|
+
|
|
345
|
+
if gate.name == "CNOT":
|
|
346
|
+
circuit.add_gate("CNOT", targets=[*gate.target_qubits], controls=[*gate.control_qubits])
|
|
347
|
+
else:
|
|
348
|
+
base_matrix = gate.basic_gate.matrix
|
|
349
|
+
dim_target = base_matrix.shape[0]
|
|
350
|
+
dim_total = 2 * dim_target
|
|
351
|
+
dims = [[2] + [2] * len(gate.target_qubits), [2] + [2] * len(gate.target_qubits)]
|
|
352
|
+
|
|
353
|
+
def qutip_controlled_gate() -> Qobj:
|
|
354
|
+
mat = np.zeros((dim_total, dim_total), dtype=np.complex128)
|
|
355
|
+
mat[:dim_target, :dim_target] = np.eye(dim_target, dtype=np.complex128)
|
|
356
|
+
mat[dim_target:, dim_target:] = base_matrix
|
|
357
|
+
return Qobj(mat, dims=dims)
|
|
358
|
+
|
|
359
|
+
matrix_digest = base_matrix.tobytes().hex()[:16]
|
|
360
|
+
gate_name = f"{gate.name}_{matrix_digest}"
|
|
361
|
+
if gate_name not in circuit.user_gates:
|
|
362
|
+
circuit.user_gates[gate_name] = qutip_controlled_gate
|
|
363
|
+
circuit.add_gate(gate_name, targets=[*gate.control_qubits, *gate.target_qubits])
|
|
364
|
+
|
|
365
|
+
def _handle_adjoint(self, circuit: QubitCircuit, gate: Adjoint) -> None: # noqa: PLR6301
|
|
366
|
+
"""
|
|
367
|
+
Handle an adjoint (inverse) gate operation.
|
|
368
|
+
|
|
369
|
+
This method creates a temporary kernel for the basic gate wrapped by the adjoint,
|
|
370
|
+
applies the corresponding handler, and then integrates it into the main kernel as an adjoint operation.
|
|
371
|
+
"""
|
|
372
|
+
|
|
373
|
+
def qutip_adjoined_gate() -> Qobj:
|
|
374
|
+
return Qobj(gate.matrix)
|
|
375
|
+
|
|
376
|
+
gate_name = "Adjoint_" + gate.name
|
|
377
|
+
if gate_name not in circuit.user_gates:
|
|
378
|
+
circuit.user_gates[gate_name] = qutip_adjoined_gate
|
|
379
|
+
circuit.add_gate(gate_name, targets=[*gate.target_qubits])
|
|
380
|
+
|
|
381
|
+
@staticmethod
|
|
382
|
+
def _handle_M(qutip_circuit: QubitCircuit, gate: M) -> None:
|
|
383
|
+
"""
|
|
384
|
+
Handle a measurement gate.
|
|
385
|
+
|
|
386
|
+
Depending on whether the measurement targets all qubits or a subset,
|
|
387
|
+
this method applies measurement operations accordingly.
|
|
388
|
+
"""
|
|
389
|
+
for i in gate.target_qubits:
|
|
390
|
+
qutip_circuit.add_measurement(f"M{i}", targets=[i], classical_store=i)
|
|
391
|
+
|
|
392
|
+
@staticmethod
|
|
393
|
+
def _handle_I(circuit: QubitCircuit, gate: I, qubit: int) -> None:
|
|
394
|
+
"""Handle an X gate operation."""
|
|
395
|
+
circuit.add_gate(QutipI(targets=qubit))
|
|
396
|
+
|
|
397
|
+
@staticmethod
|
|
398
|
+
def _handle_X(circuit: QubitCircuit, gate: X, qubit: int) -> None:
|
|
399
|
+
"""Handle an X gate operation."""
|
|
400
|
+
circuit.add_gate(QutipGates.X(targets=qubit))
|
|
401
|
+
|
|
402
|
+
@staticmethod
|
|
403
|
+
def _handle_Y(circuit: QubitCircuit, gate: Y, qubit: int) -> None:
|
|
404
|
+
"""Handle an Y gate operation."""
|
|
405
|
+
circuit.add_gate(QutipGates.Y(targets=qubit))
|
|
406
|
+
|
|
407
|
+
@staticmethod
|
|
408
|
+
def _handle_Z(circuit: QubitCircuit, gate: Z, qubit: int) -> None:
|
|
409
|
+
"""Handle an Z gate operation."""
|
|
410
|
+
circuit.add_gate(QutipGates.Z(targets=qubit))
|
|
411
|
+
|
|
412
|
+
@staticmethod
|
|
413
|
+
def _handle_H(circuit: QubitCircuit, gate: H, qubit: int) -> None:
|
|
414
|
+
"""Handle an H gate operation."""
|
|
415
|
+
circuit.add_gate(QutipGates.H(targets=qubit))
|
|
416
|
+
|
|
417
|
+
@staticmethod
|
|
418
|
+
def _handle_S(circuit: QubitCircuit, gate: S, qubit: int) -> None:
|
|
419
|
+
"""Handle an S gate operation."""
|
|
420
|
+
circuit.add_gate(QutipGates.S(targets=qubit))
|
|
421
|
+
|
|
422
|
+
@staticmethod
|
|
423
|
+
def _handle_T(circuit: QubitCircuit, gate: T, qubit: int) -> None:
|
|
424
|
+
"""Handle an T gate operation."""
|
|
425
|
+
circuit.add_gate(QutipGates.T(targets=qubit))
|
|
426
|
+
|
|
427
|
+
@staticmethod
|
|
428
|
+
def _handle_RX(circuit: QubitCircuit, gate: RX, qubit: int) -> None:
|
|
429
|
+
"""Handle an RX gate operation."""
|
|
430
|
+
circuit.add_gate(QutipGates.RX(targets=[qubit], arg_value=gate.get_parameter_values()[0]))
|
|
431
|
+
|
|
432
|
+
@staticmethod
|
|
433
|
+
def _handle_RY(circuit: QubitCircuit, gate: RY, qubit: int) -> None:
|
|
434
|
+
"""Handle an RY gate operation."""
|
|
435
|
+
circuit.add_gate(QutipGates.RY(targets=[qubit], arg_value=gate.get_parameter_values()[0]))
|
|
436
|
+
|
|
437
|
+
@staticmethod
|
|
438
|
+
def _handle_RZ(circuit: QubitCircuit, gate: RZ, qubit: int) -> None:
|
|
439
|
+
"""Handle an RZ gate operation."""
|
|
440
|
+
circuit.add_gate(QutipGates.RZ(targets=[qubit], arg_value=gate.get_parameter_values()[0]))
|
|
441
|
+
|
|
442
|
+
@staticmethod
|
|
443
|
+
def _qutip_U1(phi: float) -> Qobj:
|
|
444
|
+
mat = np.array([[1, 0], [0, np.exp(1j * phi)]], dtype=_complex_dtype())
|
|
445
|
+
return Qobj(mat, dims=[[2], [2]])
|
|
446
|
+
|
|
447
|
+
@staticmethod
|
|
448
|
+
def _handle_U1(circuit: QubitCircuit, gate: U1, qubit: int) -> None:
|
|
449
|
+
"""Handle an U1 gate operation."""
|
|
450
|
+
u1_label = "U1"
|
|
451
|
+
|
|
452
|
+
if u1_label not in circuit.user_gates:
|
|
453
|
+
circuit.user_gates[u1_label] = QutipBackend._qutip_U1
|
|
454
|
+
circuit.add_gate(u1_label, targets=qubit, arg_value=gate.phi)
|
|
455
|
+
|
|
456
|
+
@staticmethod
|
|
457
|
+
def _qutip_U2(angles: list[float]) -> Qobj:
|
|
458
|
+
phi = angles[0]
|
|
459
|
+
gamma = angles[1]
|
|
460
|
+
mat = (1 / np.sqrt(2)) * np.array(
|
|
461
|
+
[
|
|
462
|
+
[1, -np.exp(1j * gamma)],
|
|
463
|
+
[np.exp(1j * phi), np.exp(1j * (phi + gamma))],
|
|
464
|
+
],
|
|
465
|
+
dtype=_complex_dtype(),
|
|
466
|
+
)
|
|
467
|
+
return Qobj(mat, dims=[[2], [2]])
|
|
468
|
+
|
|
469
|
+
@staticmethod
|
|
470
|
+
def _handle_U2(circuit: QubitCircuit, gate: U2, qubit: int) -> None:
|
|
471
|
+
"""Handle an U2 gate operation."""
|
|
472
|
+
u2_label = "U2"
|
|
473
|
+
|
|
474
|
+
if u2_label not in circuit.user_gates:
|
|
475
|
+
circuit.user_gates[u2_label] = QutipBackend._qutip_U2
|
|
476
|
+
circuit.add_gate(u2_label, targets=qubit, arg_value=[gate.phi, gate.gamma])
|
|
477
|
+
|
|
478
|
+
@staticmethod
|
|
479
|
+
def _qutip_U3(angles: list[float]) -> Qobj:
|
|
480
|
+
phi = angles[0]
|
|
481
|
+
gamma = angles[1]
|
|
482
|
+
theta = angles[2]
|
|
483
|
+
mat = np.array(
|
|
484
|
+
[
|
|
485
|
+
[np.cos(theta / 2), -np.exp(1j * gamma) * np.sin(theta / 2)],
|
|
486
|
+
[np.exp(1j * phi) * np.sin(theta / 2), np.exp(1j * (phi + gamma)) * np.cos(theta / 2)],
|
|
487
|
+
],
|
|
488
|
+
dtype=_complex_dtype(),
|
|
489
|
+
)
|
|
490
|
+
return Qobj(mat, dims=[[2], [2]])
|
|
491
|
+
|
|
492
|
+
@staticmethod
|
|
493
|
+
def _handle_U3(circuit: QubitCircuit, gate: U3, qubit: int) -> None:
|
|
494
|
+
"""Handle an U3 gate operation."""
|
|
495
|
+
u3_label = "U3"
|
|
496
|
+
|
|
497
|
+
if u3_label not in circuit.user_gates:
|
|
498
|
+
circuit.user_gates[u3_label] = QutipBackend._qutip_U3
|
|
499
|
+
circuit.add_gate(u3_label, targets=qubit, arg_value=[gate.phi, gate.gamma, gate.theta])
|
|
500
|
+
|
|
501
|
+
@staticmethod
|
|
502
|
+
def _handle_SWAP(circuit: QubitCircuit, gate: SWAP, qubit_0: int, qubit_1: int) -> None:
|
|
503
|
+
"""Handle a SWAP gate operation."""
|
|
504
|
+
circuit.add_gate(QutipGates.SWAP(targets=[qubit_0, qubit_1]))
|