qilisdk 0.1.8__cp312-cp312-win32.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-win32.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
qilisdk/core/qtensor.py
ADDED
|
@@ -0,0 +1,684 @@
|
|
|
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 defaultdict
|
|
17
|
+
from typing import Iterable, Literal
|
|
18
|
+
|
|
19
|
+
import numpy as np
|
|
20
|
+
from scipy.sparse import coo_matrix, csr_matrix, issparse, kron, sparray, spmatrix
|
|
21
|
+
from scipy.sparse.linalg import ArpackNoConvergence, eigsh, expm
|
|
22
|
+
from scipy.sparse.linalg import norm as scipy_norm
|
|
23
|
+
|
|
24
|
+
from qilisdk.settings import get_settings
|
|
25
|
+
from qilisdk.yaml import yaml
|
|
26
|
+
|
|
27
|
+
Complex = int | float | complex
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _complex_dtype() -> np.dtype:
|
|
31
|
+
return get_settings().complex_precision.dtype
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _is_pow2(n: int) -> bool:
|
|
35
|
+
return n > 0 and (n & (n - 1)) == 0
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _prod(xs: Iterable[int]) -> int:
|
|
39
|
+
p = 1
|
|
40
|
+
for x in xs:
|
|
41
|
+
p *= int(x)
|
|
42
|
+
return p
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
###############################################################################
|
|
46
|
+
# Main Class Definition
|
|
47
|
+
###############################################################################
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@yaml.register_class
|
|
51
|
+
class QTensor:
|
|
52
|
+
"""
|
|
53
|
+
Lightweight wrapper around sparse matrices representing quantum states or operators.
|
|
54
|
+
|
|
55
|
+
The QTensor class is a wrapper around sparse matrices (or NumPy arrays,
|
|
56
|
+
which are converted to sparse matrices) that represent quantum states (kets, bras, or density matrices)
|
|
57
|
+
or operators. It provides utility methods for common quantum operations such as
|
|
58
|
+
taking the adjoint (dagger), computing tensor products, partial traces, and norms.
|
|
59
|
+
|
|
60
|
+
The internal data is stored as a SciPy CSR (Compressed Sparse Row) matrix for
|
|
61
|
+
efficient arithmetic and manipulation. The expected shapes for the data are:
|
|
62
|
+
- (2**N, 2**N) for operators or density matrices (or scalars),
|
|
63
|
+
- (2**N, 1) for ket states,
|
|
64
|
+
- (1, 2**N) for bra states.
|
|
65
|
+
|
|
66
|
+
Converts a NumPy array to a CSR matrix if needed and validates the shape of the input.
|
|
67
|
+
The input must represent a valid quantum state or operator with appropriate dimensions.
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
Example:
|
|
71
|
+
.. code-block:: python
|
|
72
|
+
|
|
73
|
+
import numpy as np
|
|
74
|
+
from qilisdk.core import QTensor
|
|
75
|
+
|
|
76
|
+
ket = QTensor(np.array([[1.0], [0.0]]))
|
|
77
|
+
density = ket * ket.adjoint()
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
def __init__(self, data: np.ndarray | sparray | spmatrix) -> None:
|
|
81
|
+
"""
|
|
82
|
+
Args:
|
|
83
|
+
data (np.ndarray | sparray | spmatrix): Dense or sparse matrix defining the quantum object. Expected
|
|
84
|
+
shapes are ``(2**N, 2**N)`` for operators, ``(2**N, 1)`` for kets, ``(1, 2**N)`` for bras, or ``(1, 1)`` for scalars.
|
|
85
|
+
|
|
86
|
+
Raises:
|
|
87
|
+
ValueError: If ``data`` is not 2-D or does not correspond to valid qubit dimensions.
|
|
88
|
+
"""
|
|
89
|
+
if isinstance(data, np.ndarray):
|
|
90
|
+
if data.ndim != 2: # noqa: PLR2004
|
|
91
|
+
raise ValueError("Input ndarray must be 2D")
|
|
92
|
+
self._data = csr_matrix(data)
|
|
93
|
+
elif issparse(data):
|
|
94
|
+
self._data = data.tocsr() # ty:ignore[unresolved-attribute]
|
|
95
|
+
else:
|
|
96
|
+
raise ValueError("Input must be a NumPy array or a SciPy sparse matrix")
|
|
97
|
+
|
|
98
|
+
r, c = self._data.shape
|
|
99
|
+
|
|
100
|
+
# Validate "qubit-like" shapes
|
|
101
|
+
valid = (
|
|
102
|
+
(r == c and _is_pow2(r)) # operator/density
|
|
103
|
+
or (c == 1 and _is_pow2(r)) # ket
|
|
104
|
+
or (r == 1 and _is_pow2(c)) # bra
|
|
105
|
+
or (r == c == 1) # scalar
|
|
106
|
+
)
|
|
107
|
+
if not valid:
|
|
108
|
+
raise ValueError(
|
|
109
|
+
f"Data must have shape (2**N, 2**N), (2**N, 1), (1, 2**N), or (1,1). Got {self._data.shape}."
|
|
110
|
+
)
|
|
111
|
+
# Cache nqubits (immutable once constructed since we never resize in-place)
|
|
112
|
+
if r == c:
|
|
113
|
+
self._nqubits = int(np.log2(r))
|
|
114
|
+
elif r == 1:
|
|
115
|
+
self._nqubits = int(np.log2(c))
|
|
116
|
+
else:
|
|
117
|
+
self._nqubits = int(np.log2(r))
|
|
118
|
+
|
|
119
|
+
# ------------- Properties --------------
|
|
120
|
+
|
|
121
|
+
@property
|
|
122
|
+
def data(self) -> csr_matrix:
|
|
123
|
+
"""
|
|
124
|
+
Get the internal sparse matrix representation of the QTensor.
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
csc_matrix: The internal representation as a CSR matrix.
|
|
128
|
+
"""
|
|
129
|
+
return self._data
|
|
130
|
+
|
|
131
|
+
@property
|
|
132
|
+
def nqubits(self) -> int:
|
|
133
|
+
"""
|
|
134
|
+
Compute the number of qubits represented by the QTensor.
|
|
135
|
+
|
|
136
|
+
Returns:
|
|
137
|
+
int: The number of qubits if determinable; otherwise, -1.
|
|
138
|
+
"""
|
|
139
|
+
return self._nqubits
|
|
140
|
+
|
|
141
|
+
@property
|
|
142
|
+
def shape(self) -> tuple[int, int]:
|
|
143
|
+
"""
|
|
144
|
+
Get the shape of the QTensor's internal matrix.
|
|
145
|
+
|
|
146
|
+
Returns:
|
|
147
|
+
tuple[int, ...]: The shape of the internal matrix.
|
|
148
|
+
"""
|
|
149
|
+
return self._data.shape
|
|
150
|
+
|
|
151
|
+
def dense(self) -> np.ndarray:
|
|
152
|
+
"""
|
|
153
|
+
Get the dense (NumPy array) representation of the QTensor.
|
|
154
|
+
|
|
155
|
+
Returns:
|
|
156
|
+
np.ndarray: The dense array representation.
|
|
157
|
+
"""
|
|
158
|
+
return self._data.toarray()
|
|
159
|
+
|
|
160
|
+
# ------------- Basic structural tests -------------
|
|
161
|
+
|
|
162
|
+
def is_ket(self) -> bool:
|
|
163
|
+
r, c = self.shape
|
|
164
|
+
return c == 1 and _is_pow2(r)
|
|
165
|
+
|
|
166
|
+
def is_bra(self) -> bool:
|
|
167
|
+
r, c = self.shape
|
|
168
|
+
return r == 1 and _is_pow2(c)
|
|
169
|
+
|
|
170
|
+
def is_scalar(self) -> bool:
|
|
171
|
+
return self.shape == (1, 1)
|
|
172
|
+
|
|
173
|
+
def is_operator(self) -> bool:
|
|
174
|
+
r, c = self.shape
|
|
175
|
+
return r == c and _is_pow2(r)
|
|
176
|
+
|
|
177
|
+
# ----------- Matrix Operations ------------
|
|
178
|
+
|
|
179
|
+
def adjoint(self) -> QTensor:
|
|
180
|
+
"""
|
|
181
|
+
Compute the adjoint (conjugate transpose) of the QTensor.
|
|
182
|
+
|
|
183
|
+
Returns:
|
|
184
|
+
QTensor: A new QTensor that is the adjoint of this object.
|
|
185
|
+
"""
|
|
186
|
+
return QTensor(self._data.getH())
|
|
187
|
+
|
|
188
|
+
def trace(self) -> complex:
|
|
189
|
+
# diagonal() returns dense 1D array; summing it is cheap
|
|
190
|
+
return complex(self._data.diagonal().sum())
|
|
191
|
+
|
|
192
|
+
def ptrace(self, keep: list[int], dims: list[int] | None = None) -> QTensor:
|
|
193
|
+
"""
|
|
194
|
+
Compute the partial trace over subsystems not in 'keep'.
|
|
195
|
+
|
|
196
|
+
This method calculates the reduced density matrix by tracing out
|
|
197
|
+
the subsystems that are not specified in the 'keep' parameter.
|
|
198
|
+
The input 'dims' represents the dimensions of each subsystem (optional),
|
|
199
|
+
and 'keep' indicates the indices of those subsystems to be retained.
|
|
200
|
+
|
|
201
|
+
If the QTensor is a ket or bra, it will first be converted to a density matrix.
|
|
202
|
+
|
|
203
|
+
Args:
|
|
204
|
+
keep (list[int]): A list of indices corresponding to the subsystems to retain.
|
|
205
|
+
The order of the indices in 'keep' is not important, since dimensions will
|
|
206
|
+
be returned in the tensor original order, but the indices must be unique.
|
|
207
|
+
dims (list[int], optional): A list specifying the dimensions of each subsystem.
|
|
208
|
+
If not specified, a density matrix of qubit states is assumed, and the
|
|
209
|
+
dimensions are inferred accordingly (i.e. we split the state in dim 2 states).
|
|
210
|
+
|
|
211
|
+
Raises:
|
|
212
|
+
ValueError: If the product of the dimensions in dims does not match the
|
|
213
|
+
shape of the QTensor's dense representation or if any dimension is non-positive.
|
|
214
|
+
ValueError: If the indices in 'keep' are not unique or are out of range.
|
|
215
|
+
ValueError: If the QTensor is not a valid density matrix or state vector.
|
|
216
|
+
ValueError: If the number of subsystems exceeds the available ASCII letters.
|
|
217
|
+
|
|
218
|
+
Returns:
|
|
219
|
+
QTensor: A new QTensor representing the reduced density matrix
|
|
220
|
+
for the subsystems specified in 'keep'.
|
|
221
|
+
"""
|
|
222
|
+
if dims is None:
|
|
223
|
+
dims = [2] * self.nqubits
|
|
224
|
+
if any(d <= 0 for d in dims):
|
|
225
|
+
raise ValueError("All subsystem dimensions must be positive")
|
|
226
|
+
|
|
227
|
+
dim_total = self.shape[0] if self.is_operator() else (self.shape[0] if self.is_ket() else self.shape[1])
|
|
228
|
+
if _prod(dims) != dim_total:
|
|
229
|
+
raise ValueError(
|
|
230
|
+
f"Product of dims {dims} = {_prod(dims)} does not match Hilbert space dimension {dim_total}."
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
nsub = len(dims)
|
|
234
|
+
keep_set = set(keep)
|
|
235
|
+
if len(keep_set) != len(keep):
|
|
236
|
+
raise ValueError("Duplicate indices in keep")
|
|
237
|
+
if any(i < 0 or i >= nsub for i in keep_set):
|
|
238
|
+
raise ValueError("keep indices out of range")
|
|
239
|
+
|
|
240
|
+
keep_idx = sorted(keep_set) # return order is “original” ordering
|
|
241
|
+
drop_idx = [i for i in range(nsub) if i not in keep_set]
|
|
242
|
+
dims_keep = [dims[i] for i in keep_idx]
|
|
243
|
+
dims_drop = [dims[i] for i in drop_idx]
|
|
244
|
+
Kdim = _prod(dims_keep) if dims_keep else 1
|
|
245
|
+
|
|
246
|
+
# Pure-state path ψ ⇒ p_keep = M @ M† (no NxN density matrix created)
|
|
247
|
+
if self.is_ket() or self.is_bra():
|
|
248
|
+
psi = self._data
|
|
249
|
+
if self.is_bra():
|
|
250
|
+
psi = psi.T.conj() # make it a column vector
|
|
251
|
+
# Decide whether to process as dense vector or sparse-vector path
|
|
252
|
+
N = _prod(dims)
|
|
253
|
+
density = psi.nnz / N
|
|
254
|
+
# Dense vector path is faster once the vector is reasonably filled
|
|
255
|
+
if density >= 0.05 or N <= (1 << 20): # noqa: PLR2004
|
|
256
|
+
psi1d = np.asarray(psi.toarray().reshape(-1)) # only vector, not matrix
|
|
257
|
+
psi_nd = psi1d.reshape(dims)
|
|
258
|
+
perm = keep_idx + drop_idx # bring keep first
|
|
259
|
+
psi_perm = np.transpose(psi_nd, perm)
|
|
260
|
+
M = psi_perm.reshape(Kdim, -1)
|
|
261
|
+
rho_keep = M @ M.conj().T
|
|
262
|
+
return QTensor(csr_matrix(rho_keep))
|
|
263
|
+
# Truly sparse ψ: build M implicitly by grouping by the traced index
|
|
264
|
+
coo = psi.tocoo()
|
|
265
|
+
nz_idx = coo.row
|
|
266
|
+
nz_val = coo.data
|
|
267
|
+
# unravel all non-zero positions once
|
|
268
|
+
digits = np.vstack(np.unravel_index(nz_idx, dims)) # (nsub, nnz)
|
|
269
|
+
k_digits = digits[keep_idx, :] if keep_idx else np.zeros((0, nz_val.size), dtype=int)
|
|
270
|
+
t_digits = digits[drop_idx, :] if drop_idx else np.zeros((0, nz_val.size), dtype=int)
|
|
271
|
+
k_lin = np.ravel_multi_index(k_digits, dims_keep) if keep_idx else np.zeros(nz_val.size, dtype=int)
|
|
272
|
+
t_lin = np.ravel_multi_index(t_digits, dims_drop) if drop_idx else np.zeros(nz_val.size, dtype=int)
|
|
273
|
+
|
|
274
|
+
# For each traced index t, accumulate outer products of the K-dimensional slice
|
|
275
|
+
buckets: dict[int, list[tuple[int, complex]]] = defaultdict(list)
|
|
276
|
+
for kl, tl, v in zip(k_lin, t_lin, nz_val):
|
|
277
|
+
buckets[int(tl)].append((int(kl), v))
|
|
278
|
+
|
|
279
|
+
data, row, col = [], [], []
|
|
280
|
+
for _, items in buckets.items():
|
|
281
|
+
# x is (Kdim,) sparse vector represented by indices & values
|
|
282
|
+
ks = np.fromiter((i for i, _ in items), dtype=int)
|
|
283
|
+
vs = np.fromiter((v for _, v in items), dtype=_complex_dtype())
|
|
284
|
+
# Outer product of this slice: accumulate into COO lists
|
|
285
|
+
# Note: number of pairs is len(items)^2 which is fine for very sparse ψ.
|
|
286
|
+
r = np.repeat(ks, ks.size)
|
|
287
|
+
c = np.tile(ks, ks.size)
|
|
288
|
+
d = (vs[:, None] * np.conj(vs[None, :])).ravel()
|
|
289
|
+
row.append(r)
|
|
290
|
+
col.append(c)
|
|
291
|
+
data.append(d)
|
|
292
|
+
|
|
293
|
+
if data:
|
|
294
|
+
np_row = np.concatenate(row)
|
|
295
|
+
np_col = np.concatenate(col)
|
|
296
|
+
np_data = np.concatenate(data)
|
|
297
|
+
out = coo_matrix((np_data, (np_row, np_col)), shape=(Kdim, Kdim))
|
|
298
|
+
out.sum_duplicates()
|
|
299
|
+
return QTensor(out.tocsr())
|
|
300
|
+
return QTensor(csr_matrix((Kdim, Kdim)))
|
|
301
|
+
|
|
302
|
+
# Operator/density-matrix path: COO remapping with traced-equal mask
|
|
303
|
+
if self.is_operator():
|
|
304
|
+
rho = self._data.tocoo()
|
|
305
|
+
# unravel rows/cols to multi-indices
|
|
306
|
+
r_multi = np.vstack(np.unravel_index(rho.row, dims)) # (nsub, nnz)
|
|
307
|
+
c_multi = np.vstack(np.unravel_index(rho.col, dims))
|
|
308
|
+
if drop_idx:
|
|
309
|
+
mask = np.all(r_multi[drop_idx, :] == c_multi[drop_idx, :], axis=0)
|
|
310
|
+
else:
|
|
311
|
+
mask = np.ones(rho.nnz, dtype=bool)
|
|
312
|
+
|
|
313
|
+
if keep_idx:
|
|
314
|
+
rK = r_multi[keep_idx, :][:, mask]
|
|
315
|
+
cK = c_multi[keep_idx, :][:, mask]
|
|
316
|
+
new_r = np.ravel_multi_index(rK, dims_keep)
|
|
317
|
+
new_c = np.ravel_multi_index(cK, dims_keep)
|
|
318
|
+
data = rho.data[mask]
|
|
319
|
+
else:
|
|
320
|
+
# keep nothing → scalar
|
|
321
|
+
new_r = np.zeros(mask.sum(), dtype=int)
|
|
322
|
+
new_c = np.zeros(mask.sum(), dtype=int)
|
|
323
|
+
data = rho.data[mask]
|
|
324
|
+
|
|
325
|
+
out = coo_matrix((data, (new_r, new_c)), shape=(Kdim, Kdim))
|
|
326
|
+
out.sum_duplicates()
|
|
327
|
+
return QTensor(out.tocsr())
|
|
328
|
+
|
|
329
|
+
raise ValueError("The QTensor is not a valid state or operator for ptrace().")
|
|
330
|
+
|
|
331
|
+
def norm(self, order: int | Literal["fro", "tr"] = 1) -> float:
|
|
332
|
+
"""
|
|
333
|
+
Compute the norm of the QTensor.
|
|
334
|
+
|
|
335
|
+
For density matrices, the norm order can be specified. For state vectors, the norm is computed accordingly.
|
|
336
|
+
|
|
337
|
+
Args:
|
|
338
|
+
order (int or {"fro", "tr"}, optional): The order of the norm.
|
|
339
|
+
Only applies if the QTensor represents a density matrix. Other than all the
|
|
340
|
+
orders accepted by scipy, it also accepts 'tr' for the trace norm. Defaults to 1.
|
|
341
|
+
|
|
342
|
+
Raises:
|
|
343
|
+
ValueError: If the QTensor is not a valid density matrix or state vector,
|
|
344
|
+
|
|
345
|
+
Returns:
|
|
346
|
+
float: The computed norm of the QTensor.
|
|
347
|
+
"""
|
|
348
|
+
if self.is_scalar():
|
|
349
|
+
return float(abs(self._data.toarray()[0, 0]))
|
|
350
|
+
|
|
351
|
+
if self.is_operator():
|
|
352
|
+
if order == "tr":
|
|
353
|
+
if self.is_density_matrix():
|
|
354
|
+
return 1.0
|
|
355
|
+
# Only correct for Hermitian; otherwise, nuclear norm requires SVD
|
|
356
|
+
if self.is_hermitian():
|
|
357
|
+
r, _ = self.shape
|
|
358
|
+
if r <= 1024: # noqa: PLR2004
|
|
359
|
+
w = np.linalg.eigvalsh(self._data.toarray())
|
|
360
|
+
return float(np.sum(np.abs(w)))
|
|
361
|
+
raise ValueError("Trace norm for large Hermitian operators is not implemented without densifying.")
|
|
362
|
+
r, _ = self.shape
|
|
363
|
+
if r <= 1024: # noqa: PLR2004
|
|
364
|
+
s = np.linalg.svd(self._data.toarray(), compute_uv=False)
|
|
365
|
+
return float(np.sum(s))
|
|
366
|
+
raise ValueError(
|
|
367
|
+
"Trace (nuclear) norm for large non-Hermitian operators requires SVD; not implemented."
|
|
368
|
+
)
|
|
369
|
+
# Delegate other norms to SciPy; supported: 'fro', 1, np.inf, etc.
|
|
370
|
+
return float(scipy_norm(self._data, ord=order))
|
|
371
|
+
|
|
372
|
+
# kets/bras: 2-norm of vector
|
|
373
|
+
v = self._data
|
|
374
|
+
if self.is_bra():
|
|
375
|
+
v = v.T.conj()
|
|
376
|
+
return float(np.sqrt(np.real(v.conj().multiply(v).sum())))
|
|
377
|
+
|
|
378
|
+
def unit(self, order: int | Literal["fro", "tr"] = "tr") -> QTensor:
|
|
379
|
+
"""
|
|
380
|
+
Normalize the QTensor.
|
|
381
|
+
|
|
382
|
+
Scales the QTensor so that its norm becomes 1, according to the specified norm order.
|
|
383
|
+
|
|
384
|
+
Args:
|
|
385
|
+
order (int or {"fro", "tr"}, optional): The order of the norm to use for normalization.
|
|
386
|
+
Only applies if the QTensor represents a density matrix. Other than all the
|
|
387
|
+
orders accepted by scipy, it also accepts 'tr' for the trace norm. Defaults to "tr".
|
|
388
|
+
|
|
389
|
+
Raises:
|
|
390
|
+
ValueError: If the norm of the QTensor is 0, making normalization impossible.
|
|
391
|
+
|
|
392
|
+
Returns:
|
|
393
|
+
QTensor: A new QTensor that is the normalized version of this object.
|
|
394
|
+
"""
|
|
395
|
+
norm = self.norm(order=order)
|
|
396
|
+
if abs(norm) < get_settings().atol:
|
|
397
|
+
raise ValueError("Cannot normalize a zero-norm Quantum Object")
|
|
398
|
+
|
|
399
|
+
return QTensor(self._data / norm)
|
|
400
|
+
|
|
401
|
+
def expm(self) -> QTensor:
|
|
402
|
+
"""
|
|
403
|
+
Compute the matrix exponential of the QTensor.
|
|
404
|
+
|
|
405
|
+
Returns:
|
|
406
|
+
QTensor: A new QTensor representing the matrix exponential.
|
|
407
|
+
"""
|
|
408
|
+
return QTensor(expm(self._data.tocsc()))
|
|
409
|
+
|
|
410
|
+
def to_density_matrix(self) -> QTensor:
|
|
411
|
+
"""
|
|
412
|
+
Convert the QTensor to a density matrix.
|
|
413
|
+
|
|
414
|
+
If the QTensor represents a state vector (ket or bra), this method
|
|
415
|
+
calculates the corresponding density matrix by taking the outer product.
|
|
416
|
+
If the QTensor is already a density matrix, it is returned unchanged.
|
|
417
|
+
The resulting density matrix is normalized.
|
|
418
|
+
|
|
419
|
+
Raises:
|
|
420
|
+
ValueError: If the QTensor is a scalar, as a density matrix cannot be derived.
|
|
421
|
+
ValueError: If the QTensor is an operator that is not a density matrix.
|
|
422
|
+
|
|
423
|
+
Returns:
|
|
424
|
+
QTensor: A new QTensor representing the density matrix.
|
|
425
|
+
"""
|
|
426
|
+
if self.is_scalar():
|
|
427
|
+
raise ValueError("Cannot make a density matrix from a scalar.")
|
|
428
|
+
if self.is_density_matrix():
|
|
429
|
+
return self
|
|
430
|
+
if self.is_ket():
|
|
431
|
+
rho = self @ self.adjoint()
|
|
432
|
+
elif self.is_bra():
|
|
433
|
+
rho = self.adjoint() @ self
|
|
434
|
+
elif self.is_operator():
|
|
435
|
+
raise ValueError("Operator is not a density matrix (trace≠1 or not Hermitian).")
|
|
436
|
+
else:
|
|
437
|
+
raise ValueError("Invalid object for density matrix conversion.")
|
|
438
|
+
|
|
439
|
+
tr = float(np.real(rho.trace()))
|
|
440
|
+
if abs(tr) < get_settings().atol:
|
|
441
|
+
raise ValueError("Cannot normalize density matrix with zero trace.")
|
|
442
|
+
return QTensor(rho.data / tr) # keep it sparse
|
|
443
|
+
|
|
444
|
+
def is_density_matrix(self, tol: float | None = None) -> bool:
|
|
445
|
+
"""
|
|
446
|
+
Determine if the QTensor is a valid density matrix.
|
|
447
|
+
|
|
448
|
+
A valid density matrix must be square, Hermitian, positive semi-definite, and have a trace equal to 1.
|
|
449
|
+
|
|
450
|
+
Args:
|
|
451
|
+
tol (float, optional): The numerical tolerance for verifying Hermiticity,
|
|
452
|
+
eigenvalue non-negativity, and trace. Defaults to the global setting for zero tolerance.
|
|
453
|
+
|
|
454
|
+
Returns:
|
|
455
|
+
bool: True if the QTensor is a valid density matrix, False otherwise.
|
|
456
|
+
"""
|
|
457
|
+
if tol is None:
|
|
458
|
+
tol = get_settings().atol
|
|
459
|
+
# Check if rho is a square matrix
|
|
460
|
+
if not self.is_operator():
|
|
461
|
+
return False
|
|
462
|
+
if abs(self.trace() - 1.0) > tol:
|
|
463
|
+
return False
|
|
464
|
+
if not self.is_hermitian(tol=tol):
|
|
465
|
+
return False
|
|
466
|
+
# PSD check via smallest eigenvalue of Hermitian matrix
|
|
467
|
+
try:
|
|
468
|
+
vals = eigsh(self._data, k=1, which="SA", return_eigenvectors=False, tol=1e-6)
|
|
469
|
+
lam_min = float(np.real(vals[0]))
|
|
470
|
+
except ArpackNoConvergence:
|
|
471
|
+
# If ARPACK fails, fall back to dense only if small
|
|
472
|
+
r, _ = self.shape
|
|
473
|
+
if r <= 2048: # noqa: PLR2004
|
|
474
|
+
lam_min = float(np.linalg.eigvalsh(self._data.toarray()).min())
|
|
475
|
+
else:
|
|
476
|
+
# Conservative fallback: don't claim it's a DM if we can't certify PSD
|
|
477
|
+
return False
|
|
478
|
+
return lam_min >= -tol
|
|
479
|
+
|
|
480
|
+
def is_hermitian(self, tol: float | None = None) -> bool:
|
|
481
|
+
"""
|
|
482
|
+
Check if the QTensor is Hermitian.
|
|
483
|
+
|
|
484
|
+
Args:
|
|
485
|
+
tol (float, optional): The numerical tolerance for verifying Hermiticity.
|
|
486
|
+
Defaults to the global setting for zero tolerance.
|
|
487
|
+
|
|
488
|
+
Returns:
|
|
489
|
+
bool: True if the QTensor is Hermitian, False otherwise.
|
|
490
|
+
"""
|
|
491
|
+
if tol is None:
|
|
492
|
+
tol = get_settings().atol
|
|
493
|
+
if not self.is_operator():
|
|
494
|
+
return False
|
|
495
|
+
diff = self._data - self._data.getH()
|
|
496
|
+
if diff.nnz == 0:
|
|
497
|
+
return True
|
|
498
|
+
return float(scipy_norm(diff, ord="fro")) <= tol
|
|
499
|
+
|
|
500
|
+
# ----------- Basic Arithmetic Operators ------------
|
|
501
|
+
|
|
502
|
+
def __add__(self, other: QTensor | Complex) -> QTensor:
|
|
503
|
+
if isinstance(other, QTensor):
|
|
504
|
+
return QTensor(self._data + other._data)
|
|
505
|
+
if isinstance(other, Complex) and abs(other) < get_settings().atol:
|
|
506
|
+
return self
|
|
507
|
+
return NotImplemented
|
|
508
|
+
|
|
509
|
+
def __radd__(self, other: QTensor | Complex) -> QTensor:
|
|
510
|
+
return self.__add__(other)
|
|
511
|
+
|
|
512
|
+
def __sub__(self, other: QTensor) -> QTensor:
|
|
513
|
+
if isinstance(other, QTensor):
|
|
514
|
+
return QTensor(self._data - other._data)
|
|
515
|
+
return NotImplemented
|
|
516
|
+
|
|
517
|
+
def __mul__(self, other: QTensor | Complex) -> QTensor:
|
|
518
|
+
if isinstance(other, (int, float, complex)):
|
|
519
|
+
return QTensor(self._data * other)
|
|
520
|
+
if isinstance(other, QTensor):
|
|
521
|
+
return QTensor(self._data * other._data)
|
|
522
|
+
return NotImplemented
|
|
523
|
+
|
|
524
|
+
def __matmul__(self, other: QTensor) -> QTensor:
|
|
525
|
+
if isinstance(other, QTensor):
|
|
526
|
+
return QTensor(self._data @ other._data)
|
|
527
|
+
return NotImplemented
|
|
528
|
+
|
|
529
|
+
def __rmul__(self, other: QTensor | Complex) -> QTensor:
|
|
530
|
+
return self.__mul__(other)
|
|
531
|
+
|
|
532
|
+
def __repr__(self) -> str:
|
|
533
|
+
r, c = self.shape
|
|
534
|
+
nnz = self._data.nnz
|
|
535
|
+
s = f"QTensor(shape={r}x{c}, nnz={nnz}, format='csr')"
|
|
536
|
+
if r * c <= 64: # noqa: PLR2004
|
|
537
|
+
s += f"\n{self._data.toarray()}"
|
|
538
|
+
return s
|
|
539
|
+
|
|
540
|
+
def __eq__(self, other: object) -> bool:
|
|
541
|
+
if not isinstance(other, QTensor):
|
|
542
|
+
return NotImplemented
|
|
543
|
+
# this checks the sparsity of the inequality array (i.e. no nonzeros means equal)
|
|
544
|
+
return (self._data != other._data).nnz == 0
|
|
545
|
+
|
|
546
|
+
def __hash__(self) -> int:
|
|
547
|
+
coo = self._data.tocoo()
|
|
548
|
+
return hash((self.shape, tuple(zip(coo.row, coo.col, coo.data))))
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
###############################################################################
|
|
552
|
+
# Outside class Function Definitions
|
|
553
|
+
###############################################################################
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
def basis_state(n: int, N: int) -> QTensor:
|
|
557
|
+
r"""
|
|
558
|
+
Generate the n'th basis vector representation, on a N-size Hilbert space (N=2**num_qubits).
|
|
559
|
+
|
|
560
|
+
This function creates a column vector (ket) representing the Fock state \|n⟩ in a Hilbert space of dimension N.
|
|
561
|
+
|
|
562
|
+
Args:
|
|
563
|
+
n (int): The desired number state (from 0 to N-1).
|
|
564
|
+
N (int): The dimension of the Hilbert space, has a value 2**num_qubits.
|
|
565
|
+
|
|
566
|
+
Raises:
|
|
567
|
+
ValueError: If n >= N.
|
|
568
|
+
|
|
569
|
+
Returns:
|
|
570
|
+
QTensor: A QTensor representing the \|n⟩'th basis state on a N-size Hilbert space (N=2**num_qubits).
|
|
571
|
+
"""
|
|
572
|
+
if not (0 <= n < N):
|
|
573
|
+
raise ValueError(f"n must be in [0, {N - 1}]")
|
|
574
|
+
# one nonzero at (row=n, col=0), value=1.0
|
|
575
|
+
mat = csr_matrix(([1.0], ([n], [0])), shape=(N, 1))
|
|
576
|
+
return QTensor(mat)
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
def ket(*state: int) -> QTensor:
|
|
580
|
+
r"""
|
|
581
|
+
Generate a ket state for a multi-qubit system.
|
|
582
|
+
|
|
583
|
+
This function creates a tensor product of individual qubit states (kets) based on the input values.
|
|
584
|
+
Each input must be either 0 or 1. For example, ket(0, 1) creates a two-qubit ket state \|0⟩ ⊗ \|1⟩.
|
|
585
|
+
|
|
586
|
+
Args:
|
|
587
|
+
*state (int): A sequence of integers representing the state of each qubit (0 or 1).
|
|
588
|
+
|
|
589
|
+
Raises:
|
|
590
|
+
ValueError: If any of the provided qubit states is not 0 or 1.
|
|
591
|
+
|
|
592
|
+
Returns:
|
|
593
|
+
QTensor: A QTensor representing the multi-qubit ket state.
|
|
594
|
+
"""
|
|
595
|
+
if not state:
|
|
596
|
+
raise ValueError("ket() requires at least one qubit (0/1).")
|
|
597
|
+
if any(s not in {0, 1} for s in state):
|
|
598
|
+
raise ValueError(f"state must contain only 0s/1s, got {state}")
|
|
599
|
+
|
|
600
|
+
# Number of qubits
|
|
601
|
+
n = len(state)
|
|
602
|
+
N = 1 << n # 2**n
|
|
603
|
+
|
|
604
|
+
# Big-endian linear index: kron(|s0>, |s1>, ..., |s_{n-1}>) -> index int(s0...s_{n-1}, base=2)
|
|
605
|
+
idx = 0
|
|
606
|
+
for s in state:
|
|
607
|
+
idx = (idx << 1) | s
|
|
608
|
+
|
|
609
|
+
# Reuse existing basis_state creator (sparse, single 1 at (idx, 0))
|
|
610
|
+
return basis_state(idx, N)
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
def bra(*state: int) -> QTensor:
|
|
614
|
+
r"""
|
|
615
|
+
Generate a bra state for a multi-qubit system.
|
|
616
|
+
|
|
617
|
+
This function creates a tensor product of individual qubit states (bras) based on the input values.
|
|
618
|
+
Each input must be either 0 or 1. For example, bra(0, 1) creates a two-qubit bra state ⟨0\| ⊗ ⟨1\|.
|
|
619
|
+
|
|
620
|
+
Args:
|
|
621
|
+
*state (int): A sequence of integers representing the state of each qubit (0 or 1).
|
|
622
|
+
|
|
623
|
+
Returns:
|
|
624
|
+
QTensor: A QTensor representing the multi-qubit bra state.
|
|
625
|
+
"""
|
|
626
|
+
return ket(*state).adjoint()
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
def tensor_prod(operators: list[QTensor]) -> QTensor:
|
|
630
|
+
"""
|
|
631
|
+
Calculate the tensor product of a list of QTensors.
|
|
632
|
+
|
|
633
|
+
This function computes the tensor (Kronecker) product of all input QTensors,
|
|
634
|
+
resulting in a composite QTensor that represents the combined state or operator.
|
|
635
|
+
|
|
636
|
+
Args:
|
|
637
|
+
operators (list[QTensor]): A list of QTensors to be combined via tensor product.
|
|
638
|
+
|
|
639
|
+
Returns:
|
|
640
|
+
QTensor: A new QTensor representing the tensor product of the inputs.
|
|
641
|
+
|
|
642
|
+
Raises:
|
|
643
|
+
ValueError: If operators list is empty.
|
|
644
|
+
"""
|
|
645
|
+
if not operators:
|
|
646
|
+
raise ValueError("tensor_prod requires at least one operator/state")
|
|
647
|
+
out = operators[0].data
|
|
648
|
+
for op in operators[1:]:
|
|
649
|
+
# Sparse kron returns same sparse type; keep CSR at the end
|
|
650
|
+
out = kron(out, op.data).tocsr()
|
|
651
|
+
return QTensor(out)
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
def expect_val(operator: QTensor, state: QTensor) -> Complex:
|
|
655
|
+
r"""
|
|
656
|
+
Calculate the expectation value of an operator with respect to a quantum state.
|
|
657
|
+
|
|
658
|
+
Computes the expectation value ⟨state\| operator \|state⟩. The function handles both
|
|
659
|
+
pure state vectors and density matrices appropriately.
|
|
660
|
+
|
|
661
|
+
Args:
|
|
662
|
+
operator (QTensor): The quantum operator represented as a QTensor.
|
|
663
|
+
state (QTensor): The quantum state or density matrix represented as a QTensor.
|
|
664
|
+
|
|
665
|
+
Raises:
|
|
666
|
+
ValueError: If the operator is not a square matrix.
|
|
667
|
+
ValueError: If the state provided is not a valid quantum state.
|
|
668
|
+
|
|
669
|
+
Returns:
|
|
670
|
+
Complex: The expectation value. The result is guaranteed to be real if the operator is Hermitian, and may be complex otherwise.
|
|
671
|
+
"""
|
|
672
|
+
if not operator.is_operator():
|
|
673
|
+
raise ValueError("operator must be square")
|
|
674
|
+
# p case: tr(O p) = sum((O.T) ⊙ p)
|
|
675
|
+
if state.is_density_matrix():
|
|
676
|
+
return complex((operator.data.T.multiply(state.data)).sum())
|
|
677
|
+
# |ψ⟩ case: ⟨ψ| O |ψ⟩ = (ψ† (O ψ))
|
|
678
|
+
if state.is_ket():
|
|
679
|
+
v = operator.data @ state.data # (N,1)
|
|
680
|
+
return complex((state.data.getH() @ v).toarray()[0, 0])
|
|
681
|
+
if state.is_bra():
|
|
682
|
+
v = state.data @ operator.data # (1,N)
|
|
683
|
+
return complex((v @ state.data.getH()).toarray()[0, 0])
|
|
684
|
+
raise ValueError("state is invalid for expect_val")
|
qilisdk/core/result.py
ADDED
|
@@ -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
|
+
from abc import ABC
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Result(ABC):
|
|
18
|
+
"""Marker base class for results produced by QiliSDK workflows."""
|