pylibsparseir 0.1.0__cp310-cp310-macosx_15_0_arm64.whl → 0.6.0__cp310-cp310-macosx_15_0_arm64.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.
Potentially problematic release.
This version of pylibsparseir might be problematic. Click here for more details.
- 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
- pylibsparseir/__init__.py +31 -0
- pylibsparseir/clean_build_artifacts.py +0 -1
- pylibsparseir/core.py +178 -62
- pylibsparseir/libsparseir.dylib +0 -0
- pylibsparseir-0.6.0.dist-info/METADATA +213 -0
- pylibsparseir-0.6.0.dist-info/RECORD +545 -0
- {pylibsparseir-0.1.0.dist-info → pylibsparseir-0.6.0.dist-info}/WHEEL +1 -1
- pylibsparseir-0.6.0.dist-info/licenses/LICENSE +21 -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
- pylibsparseir/libsparseir.0.4.2.dylib +0 -0
- pylibsparseir/libsparseir.0.dylib +0 -0
- pylibsparseir-0.1.0.dist-info/METADATA +0 -130
- pylibsparseir-0.1.0.dist-info/RECORD +0 -12
- pylibsparseir-0.1.0.dist-info/entry_points.txt +0 -2
- pylibsparseir-0.1.0.dist-info/top_level.txt +0 -1
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
|
|
5
|
+
|
|
6
|
+
/* NOTE The functions of this file have been adapted from the GMM++ library */
|
|
7
|
+
|
|
8
|
+
//========================================================================
|
|
9
|
+
//
|
|
10
|
+
// Copyright (C) 2002-2007 Yves Renard
|
|
11
|
+
//
|
|
12
|
+
// This file is a part of GETFEM++
|
|
13
|
+
//
|
|
14
|
+
// Getfem++ is free software; you can redistribute it and/or modify
|
|
15
|
+
// it under the terms of the GNU Lesser General Public License as
|
|
16
|
+
// published by the Free Software Foundation; version 2.1 of the License.
|
|
17
|
+
//
|
|
18
|
+
// This program is distributed in the hope that it will be useful,
|
|
19
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
21
|
+
// GNU Lesser General Public License for more details.
|
|
22
|
+
// You should have received a copy of the GNU Lesser General Public
|
|
23
|
+
// License along with this program; if not, write to the Free Software
|
|
24
|
+
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
|
|
25
|
+
// USA.
|
|
26
|
+
//
|
|
27
|
+
//========================================================================
|
|
28
|
+
|
|
29
|
+
#include "../../../../Eigen/src/Core/util/NonMPL2.h"
|
|
30
|
+
|
|
31
|
+
#ifndef EIGEN_CONSTRAINEDCG_H
|
|
32
|
+
#define EIGEN_CONSTRAINEDCG_H
|
|
33
|
+
|
|
34
|
+
#include "../../../../Eigen/Core"
|
|
35
|
+
|
|
36
|
+
namespace Eigen {
|
|
37
|
+
|
|
38
|
+
namespace internal {
|
|
39
|
+
|
|
40
|
+
/** \ingroup IterativeLinearSolvers_Module
|
|
41
|
+
* Compute the pseudo inverse of the non-square matrix C such that
|
|
42
|
+
* \f$ CINV = (C * C^T)^{-1} * C \f$ based on a conjugate gradient method.
|
|
43
|
+
*
|
|
44
|
+
* This function is internally used by constrained_cg.
|
|
45
|
+
*/
|
|
46
|
+
template <typename CMatrix, typename CINVMatrix>
|
|
47
|
+
void pseudo_inverse(const CMatrix &C, CINVMatrix &CINV)
|
|
48
|
+
{
|
|
49
|
+
// optimisable : copie de la ligne, precalcul de C * trans(C).
|
|
50
|
+
typedef typename CMatrix::Scalar Scalar;
|
|
51
|
+
typedef typename CMatrix::Index Index;
|
|
52
|
+
// FIXME use sparse vectors ?
|
|
53
|
+
typedef Matrix<Scalar,Dynamic,1> TmpVec;
|
|
54
|
+
|
|
55
|
+
Index rows = C.rows(), cols = C.cols();
|
|
56
|
+
|
|
57
|
+
TmpVec d(rows), e(rows), l(cols), p(rows), q(rows), r(rows);
|
|
58
|
+
Scalar rho, rho_1, alpha;
|
|
59
|
+
d.setZero();
|
|
60
|
+
|
|
61
|
+
typedef Triplet<double> T;
|
|
62
|
+
std::vector<T> tripletList;
|
|
63
|
+
|
|
64
|
+
for (Index i = 0; i < rows; ++i)
|
|
65
|
+
{
|
|
66
|
+
d[i] = 1.0;
|
|
67
|
+
rho = 1.0;
|
|
68
|
+
e.setZero();
|
|
69
|
+
r = d;
|
|
70
|
+
p = d;
|
|
71
|
+
|
|
72
|
+
while (rho >= 1e-38)
|
|
73
|
+
{ /* conjugate gradient to compute e */
|
|
74
|
+
/* which is the i-th row of inv(C * trans(C)) */
|
|
75
|
+
l = C.transpose() * p;
|
|
76
|
+
q = C * l;
|
|
77
|
+
alpha = rho / p.dot(q);
|
|
78
|
+
e += alpha * p;
|
|
79
|
+
r += -alpha * q;
|
|
80
|
+
rho_1 = rho;
|
|
81
|
+
rho = r.dot(r);
|
|
82
|
+
p = (rho/rho_1) * p + r;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
l = C.transpose() * e; // l is the i-th row of CINV
|
|
86
|
+
// FIXME add a generic "prune/filter" expression for both dense and sparse object to sparse
|
|
87
|
+
for (Index j=0; j<l.size(); ++j)
|
|
88
|
+
if (l[j]<1e-15)
|
|
89
|
+
tripletList.push_back(T(i,j,l(j)));
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
d[i] = 0.0;
|
|
93
|
+
}
|
|
94
|
+
CINV.setFromTriplets(tripletList.begin(), tripletList.end());
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
/** \ingroup IterativeLinearSolvers_Module
|
|
100
|
+
* Constrained conjugate gradient
|
|
101
|
+
*
|
|
102
|
+
* Computes the minimum of \f$ 1/2((Ax).x) - bx \f$ under the constraint \f$ Cx \le f \f$
|
|
103
|
+
*/
|
|
104
|
+
template<typename TMatrix, typename CMatrix,
|
|
105
|
+
typename VectorX, typename VectorB, typename VectorF>
|
|
106
|
+
void constrained_cg(const TMatrix& A, const CMatrix& C, VectorX& x,
|
|
107
|
+
const VectorB& b, const VectorF& f, IterationController &iter)
|
|
108
|
+
{
|
|
109
|
+
using std::sqrt;
|
|
110
|
+
typedef typename TMatrix::Scalar Scalar;
|
|
111
|
+
typedef typename TMatrix::Index Index;
|
|
112
|
+
typedef Matrix<Scalar,Dynamic,1> TmpVec;
|
|
113
|
+
|
|
114
|
+
Scalar rho = 1.0, rho_1, lambda, gamma;
|
|
115
|
+
Index xSize = x.size();
|
|
116
|
+
TmpVec p(xSize), q(xSize), q2(xSize),
|
|
117
|
+
r(xSize), old_z(xSize), z(xSize),
|
|
118
|
+
memox(xSize);
|
|
119
|
+
std::vector<bool> satured(C.rows());
|
|
120
|
+
p.setZero();
|
|
121
|
+
iter.setRhsNorm(sqrt(b.dot(b))); // gael vect_sp(PS, b, b)
|
|
122
|
+
if (iter.rhsNorm() == 0.0) iter.setRhsNorm(1.0);
|
|
123
|
+
|
|
124
|
+
SparseMatrix<Scalar,RowMajor> CINV(C.rows(), C.cols());
|
|
125
|
+
pseudo_inverse(C, CINV);
|
|
126
|
+
|
|
127
|
+
while(true)
|
|
128
|
+
{
|
|
129
|
+
// computation of residual
|
|
130
|
+
old_z = z;
|
|
131
|
+
memox = x;
|
|
132
|
+
r = b;
|
|
133
|
+
r += A * -x;
|
|
134
|
+
z = r;
|
|
135
|
+
bool transition = false;
|
|
136
|
+
for (Index i = 0; i < C.rows(); ++i)
|
|
137
|
+
{
|
|
138
|
+
Scalar al = C.row(i).dot(x) - f.coeff(i);
|
|
139
|
+
if (al >= -1.0E-15)
|
|
140
|
+
{
|
|
141
|
+
if (!satured[i])
|
|
142
|
+
{
|
|
143
|
+
satured[i] = true;
|
|
144
|
+
transition = true;
|
|
145
|
+
}
|
|
146
|
+
Scalar bb = CINV.row(i).dot(z);
|
|
147
|
+
if (bb > 0.0)
|
|
148
|
+
// FIXME: we should allow that: z += -bb * C.row(i);
|
|
149
|
+
for (typename CMatrix::InnerIterator it(C,i); it; ++it)
|
|
150
|
+
z.coeffRef(it.index()) -= bb*it.value();
|
|
151
|
+
}
|
|
152
|
+
else
|
|
153
|
+
satured[i] = false;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// descent direction
|
|
157
|
+
rho_1 = rho;
|
|
158
|
+
rho = r.dot(z);
|
|
159
|
+
|
|
160
|
+
if (iter.finished(rho)) break;
|
|
161
|
+
if (transition || iter.first()) gamma = 0.0;
|
|
162
|
+
else gamma = (std::max)(0.0, (rho - old_z.dot(z)) / rho_1);
|
|
163
|
+
p = z + gamma*p;
|
|
164
|
+
|
|
165
|
+
++iter;
|
|
166
|
+
// one dimensionnal optimization
|
|
167
|
+
q = A * p;
|
|
168
|
+
lambda = rho / q.dot(p);
|
|
169
|
+
for (Index i = 0; i < C.rows(); ++i)
|
|
170
|
+
{
|
|
171
|
+
if (!satured[i])
|
|
172
|
+
{
|
|
173
|
+
Scalar bb = C.row(i).dot(p) - f[i];
|
|
174
|
+
if (bb > 0.0)
|
|
175
|
+
lambda = (std::min)(lambda, (f.coeff(i)-C.row(i).dot(x)) / bb);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
x += lambda * p;
|
|
179
|
+
memox -= x;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
} // end namespace internal
|
|
184
|
+
|
|
185
|
+
} // end namespace Eigen
|
|
186
|
+
|
|
187
|
+
#endif // EIGEN_CONSTRAINEDCG_H
|
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2012 Désiré Nuentsa-Wakam <desire.nuentsa_wakam@inria.fr>
|
|
5
|
+
//
|
|
6
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
7
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
8
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
9
|
+
|
|
10
|
+
#ifndef EIGEN_DGMRES_H
|
|
11
|
+
#define EIGEN_DGMRES_H
|
|
12
|
+
|
|
13
|
+
#include "../../../../Eigen/Eigenvalues"
|
|
14
|
+
|
|
15
|
+
namespace Eigen {
|
|
16
|
+
|
|
17
|
+
template< typename _MatrixType,
|
|
18
|
+
typename _Preconditioner = DiagonalPreconditioner<typename _MatrixType::Scalar> >
|
|
19
|
+
class DGMRES;
|
|
20
|
+
|
|
21
|
+
namespace internal {
|
|
22
|
+
|
|
23
|
+
template< typename _MatrixType, typename _Preconditioner>
|
|
24
|
+
struct traits<DGMRES<_MatrixType,_Preconditioner> >
|
|
25
|
+
{
|
|
26
|
+
typedef _MatrixType MatrixType;
|
|
27
|
+
typedef _Preconditioner Preconditioner;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/** \brief Computes a permutation vector to have a sorted sequence
|
|
31
|
+
* \param vec The vector to reorder.
|
|
32
|
+
* \param perm gives the sorted sequence on output. Must be initialized with 0..n-1
|
|
33
|
+
* \param ncut Put the ncut smallest elements at the end of the vector
|
|
34
|
+
* WARNING This is an expensive sort, so should be used only
|
|
35
|
+
* for small size vectors
|
|
36
|
+
* TODO Use modified QuickSplit or std::nth_element to get the smallest values
|
|
37
|
+
*/
|
|
38
|
+
template <typename VectorType, typename IndexType>
|
|
39
|
+
void sortWithPermutation (VectorType& vec, IndexType& perm, typename IndexType::Scalar& ncut)
|
|
40
|
+
{
|
|
41
|
+
eigen_assert(vec.size() == perm.size());
|
|
42
|
+
bool flag;
|
|
43
|
+
for (Index k = 0; k < ncut; k++)
|
|
44
|
+
{
|
|
45
|
+
flag = false;
|
|
46
|
+
for (Index j = 0; j < vec.size()-1; j++)
|
|
47
|
+
{
|
|
48
|
+
if ( vec(perm(j)) < vec(perm(j+1)) )
|
|
49
|
+
{
|
|
50
|
+
std::swap(perm(j),perm(j+1));
|
|
51
|
+
flag = true;
|
|
52
|
+
}
|
|
53
|
+
if (!flag) break; // The vector is in sorted order
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* \ingroup IterativeLinearSolvers_Module
|
|
61
|
+
* \brief A Restarted GMRES with deflation.
|
|
62
|
+
* This class implements a modification of the GMRES solver for
|
|
63
|
+
* sparse linear systems. The basis is built with modified
|
|
64
|
+
* Gram-Schmidt. At each restart, a few approximated eigenvectors
|
|
65
|
+
* corresponding to the smallest eigenvalues are used to build a
|
|
66
|
+
* preconditioner for the next cycle. This preconditioner
|
|
67
|
+
* for deflation can be combined with any other preconditioner,
|
|
68
|
+
* the IncompleteLUT for instance. The preconditioner is applied
|
|
69
|
+
* at right of the matrix and the combination is multiplicative.
|
|
70
|
+
*
|
|
71
|
+
* \tparam _MatrixType the type of the sparse matrix A, can be a dense or a sparse matrix.
|
|
72
|
+
* \tparam _Preconditioner the type of the preconditioner. Default is DiagonalPreconditioner
|
|
73
|
+
* Typical usage :
|
|
74
|
+
* \code
|
|
75
|
+
* SparseMatrix<double> A;
|
|
76
|
+
* VectorXd x, b;
|
|
77
|
+
* //Fill A and b ...
|
|
78
|
+
* DGMRES<SparseMatrix<double> > solver;
|
|
79
|
+
* solver.set_restart(30); // Set restarting value
|
|
80
|
+
* solver.setEigenv(1); // Set the number of eigenvalues to deflate
|
|
81
|
+
* solver.compute(A);
|
|
82
|
+
* x = solver.solve(b);
|
|
83
|
+
* \endcode
|
|
84
|
+
*
|
|
85
|
+
* DGMRES can also be used in a matrix-free context, see the following \link MatrixfreeSolverExample example \endlink.
|
|
86
|
+
*
|
|
87
|
+
* References :
|
|
88
|
+
* [1] D. NUENTSA WAKAM and F. PACULL, Memory Efficient Hybrid
|
|
89
|
+
* Algebraic Solvers for Linear Systems Arising from Compressible
|
|
90
|
+
* Flows, Computers and Fluids, In Press,
|
|
91
|
+
* https://doi.org/10.1016/j.compfluid.2012.03.023
|
|
92
|
+
* [2] K. Burrage and J. Erhel, On the performance of various
|
|
93
|
+
* adaptive preconditioned GMRES strategies, 5(1998), 101-121.
|
|
94
|
+
* [3] J. Erhel, K. Burrage and B. Pohl, Restarted GMRES
|
|
95
|
+
* preconditioned by deflation,J. Computational and Applied
|
|
96
|
+
* Mathematics, 69(1996), 303-318.
|
|
97
|
+
|
|
98
|
+
*
|
|
99
|
+
*/
|
|
100
|
+
template< typename _MatrixType, typename _Preconditioner>
|
|
101
|
+
class DGMRES : public IterativeSolverBase<DGMRES<_MatrixType,_Preconditioner> >
|
|
102
|
+
{
|
|
103
|
+
typedef IterativeSolverBase<DGMRES> Base;
|
|
104
|
+
using Base::matrix;
|
|
105
|
+
using Base::m_error;
|
|
106
|
+
using Base::m_iterations;
|
|
107
|
+
using Base::m_info;
|
|
108
|
+
using Base::m_isInitialized;
|
|
109
|
+
using Base::m_tolerance;
|
|
110
|
+
public:
|
|
111
|
+
using Base::_solve_impl;
|
|
112
|
+
using Base::_solve_with_guess_impl;
|
|
113
|
+
typedef _MatrixType MatrixType;
|
|
114
|
+
typedef typename MatrixType::Scalar Scalar;
|
|
115
|
+
typedef typename MatrixType::StorageIndex StorageIndex;
|
|
116
|
+
typedef typename MatrixType::RealScalar RealScalar;
|
|
117
|
+
typedef _Preconditioner Preconditioner;
|
|
118
|
+
typedef Matrix<Scalar,Dynamic,Dynamic> DenseMatrix;
|
|
119
|
+
typedef Matrix<RealScalar,Dynamic,Dynamic> DenseRealMatrix;
|
|
120
|
+
typedef Matrix<Scalar,Dynamic,1> DenseVector;
|
|
121
|
+
typedef Matrix<RealScalar,Dynamic,1> DenseRealVector;
|
|
122
|
+
typedef Matrix<std::complex<RealScalar>, Dynamic, 1> ComplexVector;
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
/** Default constructor. */
|
|
126
|
+
DGMRES() : Base(),m_restart(30),m_neig(0),m_r(0),m_maxNeig(5),m_isDeflAllocated(false),m_isDeflInitialized(false) {}
|
|
127
|
+
|
|
128
|
+
/** Initialize the solver with matrix \a A for further \c Ax=b solving.
|
|
129
|
+
*
|
|
130
|
+
* This constructor is a shortcut for the default constructor followed
|
|
131
|
+
* by a call to compute().
|
|
132
|
+
*
|
|
133
|
+
* \warning this class stores a reference to the matrix A as well as some
|
|
134
|
+
* precomputed values that depend on it. Therefore, if \a A is changed
|
|
135
|
+
* this class becomes invalid. Call compute() to update it with the new
|
|
136
|
+
* matrix A, or modify a copy of A.
|
|
137
|
+
*/
|
|
138
|
+
template<typename MatrixDerived>
|
|
139
|
+
explicit DGMRES(const EigenBase<MatrixDerived>& A) : Base(A.derived()), m_restart(30),m_neig(0),m_r(0),m_maxNeig(5),m_isDeflAllocated(false),m_isDeflInitialized(false) {}
|
|
140
|
+
|
|
141
|
+
~DGMRES() {}
|
|
142
|
+
|
|
143
|
+
/** \internal */
|
|
144
|
+
template<typename Rhs,typename Dest>
|
|
145
|
+
void _solve_vector_with_guess_impl(const Rhs& b, Dest& x) const
|
|
146
|
+
{
|
|
147
|
+
EIGEN_STATIC_ASSERT(Rhs::ColsAtCompileTime==1 || Dest::ColsAtCompileTime==1, YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX);
|
|
148
|
+
|
|
149
|
+
m_iterations = Base::maxIterations();
|
|
150
|
+
m_error = Base::m_tolerance;
|
|
151
|
+
|
|
152
|
+
dgmres(matrix(), b, x, Base::m_preconditioner);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Get the restart value
|
|
157
|
+
*/
|
|
158
|
+
Index restart() { return m_restart; }
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Set the restart value (default is 30)
|
|
162
|
+
*/
|
|
163
|
+
void set_restart(const Index restart) { m_restart=restart; }
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Set the number of eigenvalues to deflate at each restart
|
|
167
|
+
*/
|
|
168
|
+
void setEigenv(const Index neig)
|
|
169
|
+
{
|
|
170
|
+
m_neig = neig;
|
|
171
|
+
if (neig+1 > m_maxNeig) m_maxNeig = neig+1; // To allow for complex conjugates
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Get the size of the deflation subspace size
|
|
176
|
+
*/
|
|
177
|
+
Index deflSize() {return m_r; }
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Set the maximum size of the deflation subspace
|
|
181
|
+
*/
|
|
182
|
+
void setMaxEigenv(const Index maxNeig) { m_maxNeig = maxNeig; }
|
|
183
|
+
|
|
184
|
+
protected:
|
|
185
|
+
// DGMRES algorithm
|
|
186
|
+
template<typename Rhs, typename Dest>
|
|
187
|
+
void dgmres(const MatrixType& mat,const Rhs& rhs, Dest& x, const Preconditioner& precond) const;
|
|
188
|
+
// Perform one cycle of GMRES
|
|
189
|
+
template<typename Dest>
|
|
190
|
+
Index dgmresCycle(const MatrixType& mat, const Preconditioner& precond, Dest& x, DenseVector& r0, RealScalar& beta, const RealScalar& normRhs, Index& nbIts) const;
|
|
191
|
+
// Compute data to use for deflation
|
|
192
|
+
Index dgmresComputeDeflationData(const MatrixType& mat, const Preconditioner& precond, const Index& it, StorageIndex& neig) const;
|
|
193
|
+
// Apply deflation to a vector
|
|
194
|
+
template<typename RhsType, typename DestType>
|
|
195
|
+
Index dgmresApplyDeflation(const RhsType& In, DestType& Out) const;
|
|
196
|
+
ComplexVector schurValues(const ComplexSchur<DenseMatrix>& schurofH) const;
|
|
197
|
+
ComplexVector schurValues(const RealSchur<DenseMatrix>& schurofH) const;
|
|
198
|
+
// Init data for deflation
|
|
199
|
+
void dgmresInitDeflation(Index& rows) const;
|
|
200
|
+
mutable DenseMatrix m_V; // Krylov basis vectors
|
|
201
|
+
mutable DenseMatrix m_H; // Hessenberg matrix
|
|
202
|
+
mutable DenseMatrix m_Hes; // Initial hessenberg matrix without Givens rotations applied
|
|
203
|
+
mutable Index m_restart; // Maximum size of the Krylov subspace
|
|
204
|
+
mutable DenseMatrix m_U; // Vectors that form the basis of the invariant subspace
|
|
205
|
+
mutable DenseMatrix m_MU; // matrix operator applied to m_U (for next cycles)
|
|
206
|
+
mutable DenseMatrix m_T; /* T=U^T*M^{-1}*A*U */
|
|
207
|
+
mutable PartialPivLU<DenseMatrix> m_luT; // LU factorization of m_T
|
|
208
|
+
mutable StorageIndex m_neig; //Number of eigenvalues to extract at each restart
|
|
209
|
+
mutable Index m_r; // Current number of deflated eigenvalues, size of m_U
|
|
210
|
+
mutable Index m_maxNeig; // Maximum number of eigenvalues to deflate
|
|
211
|
+
mutable RealScalar m_lambdaN; //Modulus of the largest eigenvalue of A
|
|
212
|
+
mutable bool m_isDeflAllocated;
|
|
213
|
+
mutable bool m_isDeflInitialized;
|
|
214
|
+
|
|
215
|
+
//Adaptive strategy
|
|
216
|
+
mutable RealScalar m_smv; // Smaller multiple of the remaining number of steps allowed
|
|
217
|
+
mutable bool m_force; // Force the use of deflation at each restart
|
|
218
|
+
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* \brief Perform several cycles of restarted GMRES with modified Gram Schmidt,
|
|
222
|
+
*
|
|
223
|
+
* A right preconditioner is used combined with deflation.
|
|
224
|
+
*
|
|
225
|
+
*/
|
|
226
|
+
template< typename _MatrixType, typename _Preconditioner>
|
|
227
|
+
template<typename Rhs, typename Dest>
|
|
228
|
+
void DGMRES<_MatrixType, _Preconditioner>::dgmres(const MatrixType& mat,const Rhs& rhs, Dest& x,
|
|
229
|
+
const Preconditioner& precond) const
|
|
230
|
+
{
|
|
231
|
+
const RealScalar considerAsZero = (std::numeric_limits<RealScalar>::min)();
|
|
232
|
+
|
|
233
|
+
RealScalar normRhs = rhs.norm();
|
|
234
|
+
if(normRhs <= considerAsZero)
|
|
235
|
+
{
|
|
236
|
+
x.setZero();
|
|
237
|
+
m_error = 0;
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
//Initialization
|
|
242
|
+
m_isDeflInitialized = false;
|
|
243
|
+
Index n = mat.rows();
|
|
244
|
+
DenseVector r0(n);
|
|
245
|
+
Index nbIts = 0;
|
|
246
|
+
m_H.resize(m_restart+1, m_restart);
|
|
247
|
+
m_Hes.resize(m_restart, m_restart);
|
|
248
|
+
m_V.resize(n,m_restart+1);
|
|
249
|
+
//Initial residual vector and initial norm
|
|
250
|
+
if(x.squaredNorm()==0)
|
|
251
|
+
x = precond.solve(rhs);
|
|
252
|
+
r0 = rhs - mat * x;
|
|
253
|
+
RealScalar beta = r0.norm();
|
|
254
|
+
|
|
255
|
+
m_error = beta/normRhs;
|
|
256
|
+
if(m_error < m_tolerance)
|
|
257
|
+
m_info = Success;
|
|
258
|
+
else
|
|
259
|
+
m_info = NoConvergence;
|
|
260
|
+
|
|
261
|
+
// Iterative process
|
|
262
|
+
while (nbIts < m_iterations && m_info == NoConvergence)
|
|
263
|
+
{
|
|
264
|
+
dgmresCycle(mat, precond, x, r0, beta, normRhs, nbIts);
|
|
265
|
+
|
|
266
|
+
// Compute the new residual vector for the restart
|
|
267
|
+
if (nbIts < m_iterations && m_info == NoConvergence) {
|
|
268
|
+
r0 = rhs - mat * x;
|
|
269
|
+
beta = r0.norm();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* \brief Perform one restart cycle of DGMRES
|
|
276
|
+
* \param mat The coefficient matrix
|
|
277
|
+
* \param precond The preconditioner
|
|
278
|
+
* \param x the new approximated solution
|
|
279
|
+
* \param r0 The initial residual vector
|
|
280
|
+
* \param beta The norm of the residual computed so far
|
|
281
|
+
* \param normRhs The norm of the right hand side vector
|
|
282
|
+
* \param nbIts The number of iterations
|
|
283
|
+
*/
|
|
284
|
+
template< typename _MatrixType, typename _Preconditioner>
|
|
285
|
+
template<typename Dest>
|
|
286
|
+
Index DGMRES<_MatrixType, _Preconditioner>::dgmresCycle(const MatrixType& mat, const Preconditioner& precond, Dest& x, DenseVector& r0, RealScalar& beta, const RealScalar& normRhs, Index& nbIts) const
|
|
287
|
+
{
|
|
288
|
+
//Initialization
|
|
289
|
+
DenseVector g(m_restart+1); // Right hand side of the least square problem
|
|
290
|
+
g.setZero();
|
|
291
|
+
g(0) = Scalar(beta);
|
|
292
|
+
m_V.col(0) = r0/beta;
|
|
293
|
+
m_info = NoConvergence;
|
|
294
|
+
std::vector<JacobiRotation<Scalar> >gr(m_restart); // Givens rotations
|
|
295
|
+
Index it = 0; // Number of inner iterations
|
|
296
|
+
Index n = mat.rows();
|
|
297
|
+
DenseVector tv1(n), tv2(n); //Temporary vectors
|
|
298
|
+
while (m_info == NoConvergence && it < m_restart && nbIts < m_iterations)
|
|
299
|
+
{
|
|
300
|
+
// Apply preconditioner(s) at right
|
|
301
|
+
if (m_isDeflInitialized )
|
|
302
|
+
{
|
|
303
|
+
dgmresApplyDeflation(m_V.col(it), tv1); // Deflation
|
|
304
|
+
tv2 = precond.solve(tv1);
|
|
305
|
+
}
|
|
306
|
+
else
|
|
307
|
+
{
|
|
308
|
+
tv2 = precond.solve(m_V.col(it)); // User's selected preconditioner
|
|
309
|
+
}
|
|
310
|
+
tv1 = mat * tv2;
|
|
311
|
+
|
|
312
|
+
// Orthogonalize it with the previous basis in the basis using modified Gram-Schmidt
|
|
313
|
+
Scalar coef;
|
|
314
|
+
for (Index i = 0; i <= it; ++i)
|
|
315
|
+
{
|
|
316
|
+
coef = tv1.dot(m_V.col(i));
|
|
317
|
+
tv1 = tv1 - coef * m_V.col(i);
|
|
318
|
+
m_H(i,it) = coef;
|
|
319
|
+
m_Hes(i,it) = coef;
|
|
320
|
+
}
|
|
321
|
+
// Normalize the vector
|
|
322
|
+
coef = tv1.norm();
|
|
323
|
+
m_V.col(it+1) = tv1/coef;
|
|
324
|
+
m_H(it+1, it) = coef;
|
|
325
|
+
// m_Hes(it+1,it) = coef;
|
|
326
|
+
|
|
327
|
+
// FIXME Check for happy breakdown
|
|
328
|
+
|
|
329
|
+
// Update Hessenberg matrix with Givens rotations
|
|
330
|
+
for (Index i = 1; i <= it; ++i)
|
|
331
|
+
{
|
|
332
|
+
m_H.col(it).applyOnTheLeft(i-1,i,gr[i-1].adjoint());
|
|
333
|
+
}
|
|
334
|
+
// Compute the new plane rotation
|
|
335
|
+
gr[it].makeGivens(m_H(it, it), m_H(it+1,it));
|
|
336
|
+
// Apply the new rotation
|
|
337
|
+
m_H.col(it).applyOnTheLeft(it,it+1,gr[it].adjoint());
|
|
338
|
+
g.applyOnTheLeft(it,it+1, gr[it].adjoint());
|
|
339
|
+
|
|
340
|
+
beta = std::abs(g(it+1));
|
|
341
|
+
m_error = beta/normRhs;
|
|
342
|
+
// std::cerr << nbIts << " Relative Residual Norm " << m_error << std::endl;
|
|
343
|
+
it++; nbIts++;
|
|
344
|
+
|
|
345
|
+
if (m_error < m_tolerance)
|
|
346
|
+
{
|
|
347
|
+
// The method has converged
|
|
348
|
+
m_info = Success;
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// Compute the new coefficients by solving the least square problem
|
|
354
|
+
// it++;
|
|
355
|
+
//FIXME Check first if the matrix is singular ... zero diagonal
|
|
356
|
+
DenseVector nrs(m_restart);
|
|
357
|
+
nrs = m_H.topLeftCorner(it,it).template triangularView<Upper>().solve(g.head(it));
|
|
358
|
+
|
|
359
|
+
// Form the new solution
|
|
360
|
+
if (m_isDeflInitialized)
|
|
361
|
+
{
|
|
362
|
+
tv1 = m_V.leftCols(it) * nrs;
|
|
363
|
+
dgmresApplyDeflation(tv1, tv2);
|
|
364
|
+
x = x + precond.solve(tv2);
|
|
365
|
+
}
|
|
366
|
+
else
|
|
367
|
+
x = x + precond.solve(m_V.leftCols(it) * nrs);
|
|
368
|
+
|
|
369
|
+
// Go for a new cycle and compute data for deflation
|
|
370
|
+
if(nbIts < m_iterations && m_info == NoConvergence && m_neig > 0 && (m_r+m_neig) < m_maxNeig)
|
|
371
|
+
dgmresComputeDeflationData(mat, precond, it, m_neig);
|
|
372
|
+
return 0;
|
|
373
|
+
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
template< typename _MatrixType, typename _Preconditioner>
|
|
378
|
+
void DGMRES<_MatrixType, _Preconditioner>::dgmresInitDeflation(Index& rows) const
|
|
379
|
+
{
|
|
380
|
+
m_U.resize(rows, m_maxNeig);
|
|
381
|
+
m_MU.resize(rows, m_maxNeig);
|
|
382
|
+
m_T.resize(m_maxNeig, m_maxNeig);
|
|
383
|
+
m_lambdaN = 0.0;
|
|
384
|
+
m_isDeflAllocated = true;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
template< typename _MatrixType, typename _Preconditioner>
|
|
388
|
+
inline typename DGMRES<_MatrixType, _Preconditioner>::ComplexVector DGMRES<_MatrixType, _Preconditioner>::schurValues(const ComplexSchur<DenseMatrix>& schurofH) const
|
|
389
|
+
{
|
|
390
|
+
return schurofH.matrixT().diagonal();
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
template< typename _MatrixType, typename _Preconditioner>
|
|
394
|
+
inline typename DGMRES<_MatrixType, _Preconditioner>::ComplexVector DGMRES<_MatrixType, _Preconditioner>::schurValues(const RealSchur<DenseMatrix>& schurofH) const
|
|
395
|
+
{
|
|
396
|
+
const DenseMatrix& T = schurofH.matrixT();
|
|
397
|
+
Index it = T.rows();
|
|
398
|
+
ComplexVector eig(it);
|
|
399
|
+
Index j = 0;
|
|
400
|
+
while (j < it-1)
|
|
401
|
+
{
|
|
402
|
+
if (T(j+1,j) ==Scalar(0))
|
|
403
|
+
{
|
|
404
|
+
eig(j) = std::complex<RealScalar>(T(j,j),RealScalar(0));
|
|
405
|
+
j++;
|
|
406
|
+
}
|
|
407
|
+
else
|
|
408
|
+
{
|
|
409
|
+
eig(j) = std::complex<RealScalar>(T(j,j),T(j+1,j));
|
|
410
|
+
eig(j+1) = std::complex<RealScalar>(T(j,j+1),T(j+1,j+1));
|
|
411
|
+
j++;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
if (j < it-1) eig(j) = std::complex<RealScalar>(T(j,j),RealScalar(0));
|
|
415
|
+
return eig;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
template< typename _MatrixType, typename _Preconditioner>
|
|
419
|
+
Index DGMRES<_MatrixType, _Preconditioner>::dgmresComputeDeflationData(const MatrixType& mat, const Preconditioner& precond, const Index& it, StorageIndex& neig) const
|
|
420
|
+
{
|
|
421
|
+
// First, find the Schur form of the Hessenberg matrix H
|
|
422
|
+
typename internal::conditional<NumTraits<Scalar>::IsComplex, ComplexSchur<DenseMatrix>, RealSchur<DenseMatrix> >::type schurofH;
|
|
423
|
+
bool computeU = true;
|
|
424
|
+
DenseMatrix matrixQ(it,it);
|
|
425
|
+
matrixQ.setIdentity();
|
|
426
|
+
schurofH.computeFromHessenberg(m_Hes.topLeftCorner(it,it), matrixQ, computeU);
|
|
427
|
+
|
|
428
|
+
ComplexVector eig(it);
|
|
429
|
+
Matrix<StorageIndex,Dynamic,1>perm(it);
|
|
430
|
+
eig = this->schurValues(schurofH);
|
|
431
|
+
|
|
432
|
+
// Reorder the absolute values of Schur values
|
|
433
|
+
DenseRealVector modulEig(it);
|
|
434
|
+
for (Index j=0; j<it; ++j) modulEig(j) = std::abs(eig(j));
|
|
435
|
+
perm.setLinSpaced(it,0,internal::convert_index<StorageIndex>(it-1));
|
|
436
|
+
internal::sortWithPermutation(modulEig, perm, neig);
|
|
437
|
+
|
|
438
|
+
if (!m_lambdaN)
|
|
439
|
+
{
|
|
440
|
+
m_lambdaN = (std::max)(modulEig.maxCoeff(), m_lambdaN);
|
|
441
|
+
}
|
|
442
|
+
//Count the real number of extracted eigenvalues (with complex conjugates)
|
|
443
|
+
Index nbrEig = 0;
|
|
444
|
+
while (nbrEig < neig)
|
|
445
|
+
{
|
|
446
|
+
if(eig(perm(it-nbrEig-1)).imag() == RealScalar(0)) nbrEig++;
|
|
447
|
+
else nbrEig += 2;
|
|
448
|
+
}
|
|
449
|
+
// Extract the Schur vectors corresponding to the smallest Ritz values
|
|
450
|
+
DenseMatrix Sr(it, nbrEig);
|
|
451
|
+
Sr.setZero();
|
|
452
|
+
for (Index j = 0; j < nbrEig; j++)
|
|
453
|
+
{
|
|
454
|
+
Sr.col(j) = schurofH.matrixU().col(perm(it-j-1));
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// Form the Schur vectors of the initial matrix using the Krylov basis
|
|
458
|
+
DenseMatrix X;
|
|
459
|
+
X = m_V.leftCols(it) * Sr;
|
|
460
|
+
if (m_r)
|
|
461
|
+
{
|
|
462
|
+
// Orthogonalize X against m_U using modified Gram-Schmidt
|
|
463
|
+
for (Index j = 0; j < nbrEig; j++)
|
|
464
|
+
for (Index k =0; k < m_r; k++)
|
|
465
|
+
X.col(j) = X.col(j) - (m_U.col(k).dot(X.col(j)))*m_U.col(k);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// Compute m_MX = A * M^-1 * X
|
|
469
|
+
Index m = m_V.rows();
|
|
470
|
+
if (!m_isDeflAllocated)
|
|
471
|
+
dgmresInitDeflation(m);
|
|
472
|
+
DenseMatrix MX(m, nbrEig);
|
|
473
|
+
DenseVector tv1(m);
|
|
474
|
+
for (Index j = 0; j < nbrEig; j++)
|
|
475
|
+
{
|
|
476
|
+
tv1 = mat * X.col(j);
|
|
477
|
+
MX.col(j) = precond.solve(tv1);
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
//Update m_T = [U'MU U'MX; X'MU X'MX]
|
|
481
|
+
m_T.block(m_r, m_r, nbrEig, nbrEig) = X.transpose() * MX;
|
|
482
|
+
if(m_r)
|
|
483
|
+
{
|
|
484
|
+
m_T.block(0, m_r, m_r, nbrEig) = m_U.leftCols(m_r).transpose() * MX;
|
|
485
|
+
m_T.block(m_r, 0, nbrEig, m_r) = X.transpose() * m_MU.leftCols(m_r);
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
// Save X into m_U and m_MX in m_MU
|
|
489
|
+
for (Index j = 0; j < nbrEig; j++) m_U.col(m_r+j) = X.col(j);
|
|
490
|
+
for (Index j = 0; j < nbrEig; j++) m_MU.col(m_r+j) = MX.col(j);
|
|
491
|
+
// Increase the size of the invariant subspace
|
|
492
|
+
m_r += nbrEig;
|
|
493
|
+
|
|
494
|
+
// Factorize m_T into m_luT
|
|
495
|
+
m_luT.compute(m_T.topLeftCorner(m_r, m_r));
|
|
496
|
+
|
|
497
|
+
//FIXME CHeck if the factorization was correctly done (nonsingular matrix)
|
|
498
|
+
m_isDeflInitialized = true;
|
|
499
|
+
return 0;
|
|
500
|
+
}
|
|
501
|
+
template<typename _MatrixType, typename _Preconditioner>
|
|
502
|
+
template<typename RhsType, typename DestType>
|
|
503
|
+
Index DGMRES<_MatrixType, _Preconditioner>::dgmresApplyDeflation(const RhsType &x, DestType &y) const
|
|
504
|
+
{
|
|
505
|
+
DenseVector x1 = m_U.leftCols(m_r).transpose() * x;
|
|
506
|
+
y = x + m_U.leftCols(m_r) * ( m_lambdaN * m_luT.solve(x1) - x1);
|
|
507
|
+
return 0;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
} // end namespace Eigen
|
|
511
|
+
#endif
|