@smake/eigen 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -20
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +187 -120
- package/eigen/Eigen/Eigenvalues +16 -13
- package/eigen/Eigen/Geometry +18 -18
- package/eigen/Eigen/Householder +9 -7
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -13
- package/eigen/Eigen/KLUSupport +23 -21
- package/eigen/Eigen/LU +15 -16
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -51
- package/eigen/Eigen/PaStiXSupport +23 -21
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -20
- package/eigen/Eigen/QtAlignedMalloc +5 -12
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -17
- package/eigen/Eigen/Sparse +1 -2
- package/eigen/Eigen/SparseCholesky +18 -15
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +9 -9
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
- package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
- package/eigen/Eigen/src/Core/Array.h +329 -370
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
- package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
- package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
- package/eigen/Eigen/src/Core/Block.h +371 -390
- package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
- package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
- package/eigen/Eigen/src/Core/DenseBase.h +630 -658
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
- package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +168 -207
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +167 -217
- package/eigen/Eigen/src/Core/EigenBase.h +74 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
- package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
- package/eigen/Eigen/src/Core/IO.h +131 -156
- package/eigen/Eigen/src/Core/IndexedView.h +209 -125
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +50 -59
- package/eigen/Eigen/src/Core/Map.h +123 -141
- package/eigen/Eigen/src/Core/MapBase.h +255 -282
- package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
- package/eigen/Eigen/src/Core/Matrix.h +463 -494
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
- package/eigen/Eigen/src/Core/NestByValue.h +58 -52
- package/eigen/Eigen/src/Core/NoAlias.h +79 -86
- package/eigen/Eigen/src/Core/NumTraits.h +206 -206
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
- package/eigen/Eigen/src/Core/Product.h +246 -130
- package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
- package/eigen/Eigen/src/Core/Random.h +153 -164
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +334 -314
- package/eigen/Eigen/src/Core/Ref.h +259 -257
- package/eigen/Eigen/src/Core/Replicate.h +92 -104
- package/eigen/Eigen/src/Core/Reshaped.h +215 -271
- package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
- package/eigen/Eigen/src/Core/Reverse.h +133 -148
- package/eigen/Eigen/src/Core/Select.h +68 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +88 -102
- package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
- package/eigen/Eigen/src/Core/SolverBase.h +132 -133
- package/eigen/Eigen/src/Core/StableNorm.h +113 -147
- package/eigen/Eigen/src/Core/StlIterators.h +404 -248
- package/eigen/Eigen/src/Core/Stride.h +90 -92
- package/eigen/Eigen/src/Core/Swap.h +70 -39
- package/eigen/Eigen/src/Core/Transpose.h +258 -295
- package/eigen/Eigen/src/Core/Transpositions.h +270 -333
- package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
- package/eigen/Eigen/src/Core/Visitor.h +464 -308
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
- package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
- package/eigen/Eigen/src/Core/util/Constants.h +297 -262
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
- package/eigen/Eigen/src/Core/util/Macros.h +655 -773
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +970 -748
- package/eigen/Eigen/src/Core/util/Meta.h +581 -633
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
- package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
- package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
- package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
- package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
- package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
- package/eigen/Eigen/src/Geometry/Transform.h +858 -936
- package/eigen/Eigen/src/Geometry/Translation.h +94 -92
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
- package/eigen/Eigen/src/Householder/Householder.h +102 -124
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
- package/eigen/Eigen/src/LU/Determinant.h +50 -69
- package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
- package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
- package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
- package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/package.json +1 -1
- package/eigen/COPYING.APACHE +0 -203
- package/eigen/COPYING.BSD +0 -26
- package/eigen/COPYING.GPL +0 -674
- package/eigen/COPYING.LGPL +0 -502
- package/eigen/COPYING.MINPACK +0 -51
- package/eigen/COPYING.MPL2 +0 -373
- package/eigen/COPYING.README +0 -18
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
- package/eigen/README.md +0 -5
|
@@ -10,111 +10,109 @@
|
|
|
10
10
|
#ifndef EIGEN_KLUSUPPORT_H
|
|
11
11
|
#define EIGEN_KLUSUPPORT_H
|
|
12
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
13
16
|
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
/* TODO extract L, extract U, compute det, etc... */
|
|
16
19
|
|
|
17
20
|
/** \ingroup KLUSupport_Module
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
21
|
+
* \brief A sparse LU factorization and solver based on KLU
|
|
22
|
+
*
|
|
23
|
+
* This class allows to solve for A.X = B sparse linear problems via a LU factorization
|
|
24
|
+
* using the KLU library. The sparse matrix A must be squared and full rank.
|
|
25
|
+
* The vectors or matrices X and B can be either dense or sparse.
|
|
26
|
+
*
|
|
27
|
+
* \warning The input matrix A should be in a \b compressed and \b column-major form.
|
|
28
|
+
* Otherwise an expensive copy will be made. You can call the inexpensive makeCompressed() to get a compressed matrix.
|
|
29
|
+
* \tparam MatrixType_ the type of the sparse matrix A, it must be a SparseMatrix<>
|
|
30
|
+
*
|
|
31
|
+
* \implsparsesolverconcept
|
|
32
|
+
*
|
|
33
|
+
* \sa \ref TutorialSparseSolverConcept, class UmfPackLU, class SparseLU
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
inline int klu_solve(klu_symbolic *Symbolic, klu_numeric *Numeric, Index ldim, Index nrhs, double B[],
|
|
37
|
+
klu_common *Common, double) {
|
|
38
|
+
return klu_solve(Symbolic, Numeric, internal::convert_index<int>(ldim), internal::convert_index<int>(nrhs), B,
|
|
39
|
+
Common);
|
|
36
40
|
}
|
|
37
41
|
|
|
38
|
-
inline int klu_solve(klu_symbolic *Symbolic, klu_numeric *Numeric, Index ldim, Index nrhs, std::complex<double>B[],
|
|
39
|
-
|
|
42
|
+
inline int klu_solve(klu_symbolic *Symbolic, klu_numeric *Numeric, Index ldim, Index nrhs, std::complex<double> B[],
|
|
43
|
+
klu_common *Common, std::complex<double>) {
|
|
44
|
+
return klu_z_solve(Symbolic, Numeric, internal::convert_index<int>(ldim), internal::convert_index<int>(nrhs),
|
|
45
|
+
&numext::real_ref(B[0]), Common);
|
|
40
46
|
}
|
|
41
47
|
|
|
42
|
-
inline int klu_tsolve(klu_symbolic *Symbolic, klu_numeric *Numeric, Index ldim, Index nrhs, double B[],
|
|
43
|
-
|
|
48
|
+
inline int klu_tsolve(klu_symbolic *Symbolic, klu_numeric *Numeric, Index ldim, Index nrhs, double B[],
|
|
49
|
+
klu_common *Common, double) {
|
|
50
|
+
return klu_tsolve(Symbolic, Numeric, internal::convert_index<int>(ldim), internal::convert_index<int>(nrhs), B,
|
|
51
|
+
Common);
|
|
44
52
|
}
|
|
45
53
|
|
|
46
|
-
inline int klu_tsolve(klu_symbolic *Symbolic, klu_numeric *Numeric, Index ldim, Index nrhs, std::complex<double>B[],
|
|
47
|
-
|
|
54
|
+
inline int klu_tsolve(klu_symbolic *Symbolic, klu_numeric *Numeric, Index ldim, Index nrhs, std::complex<double> B[],
|
|
55
|
+
klu_common *Common, std::complex<double>) {
|
|
56
|
+
return klu_z_tsolve(Symbolic, Numeric, internal::convert_index<int>(ldim), internal::convert_index<int>(nrhs),
|
|
57
|
+
&numext::real_ref(B[0]), 0, Common);
|
|
48
58
|
}
|
|
49
59
|
|
|
50
|
-
inline klu_numeric*
|
|
51
|
-
|
|
60
|
+
inline klu_numeric *klu_factor(int Ap[], int Ai[], double Ax[], klu_symbolic *Symbolic, klu_common *Common, double) {
|
|
61
|
+
return klu_factor(Ap, Ai, Ax, Symbolic, Common);
|
|
52
62
|
}
|
|
53
63
|
|
|
54
|
-
inline klu_numeric*
|
|
55
|
-
|
|
64
|
+
inline klu_numeric *klu_factor(int Ap[], int Ai[], std::complex<double> Ax[], klu_symbolic *Symbolic,
|
|
65
|
+
klu_common *Common, std::complex<double>) {
|
|
66
|
+
return klu_z_factor(Ap, Ai, &numext::real_ref(Ax[0]), Symbolic, Common);
|
|
56
67
|
}
|
|
57
68
|
|
|
69
|
+
template <typename MatrixType_>
|
|
70
|
+
class KLU : public SparseSolverBase<KLU<MatrixType_> > {
|
|
71
|
+
protected:
|
|
72
|
+
typedef SparseSolverBase<KLU<MatrixType_> > Base;
|
|
73
|
+
using Base::m_isInitialized;
|
|
74
|
+
|
|
75
|
+
public:
|
|
76
|
+
using Base::_solve_impl;
|
|
77
|
+
typedef MatrixType_ MatrixType;
|
|
78
|
+
typedef typename MatrixType::Scalar Scalar;
|
|
79
|
+
typedef typename MatrixType::RealScalar RealScalar;
|
|
80
|
+
typedef typename MatrixType::StorageIndex StorageIndex;
|
|
81
|
+
typedef Matrix<Scalar, Dynamic, 1> Vector;
|
|
82
|
+
typedef Matrix<int, 1, MatrixType::ColsAtCompileTime> IntRowVectorType;
|
|
83
|
+
typedef Matrix<int, MatrixType::RowsAtCompileTime, 1> IntColVectorType;
|
|
84
|
+
typedef SparseMatrix<Scalar> LUMatrixType;
|
|
85
|
+
typedef SparseMatrix<Scalar, ColMajor, int> KLUMatrixType;
|
|
86
|
+
typedef Ref<const KLUMatrixType, StandardCompressedFormat> KLUMatrixRef;
|
|
87
|
+
enum { ColsAtCompileTime = MatrixType::ColsAtCompileTime, MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime };
|
|
88
|
+
|
|
89
|
+
public:
|
|
90
|
+
KLU() : m_dummy(0, 0), mp_matrix(m_dummy) { init(); }
|
|
91
|
+
|
|
92
|
+
template <typename InputMatrixType>
|
|
93
|
+
explicit KLU(const InputMatrixType &matrix) : mp_matrix(matrix) {
|
|
94
|
+
init();
|
|
95
|
+
compute(matrix);
|
|
96
|
+
}
|
|
58
97
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
typedef SparseSolverBase<KLU<_MatrixType> > Base;
|
|
64
|
-
using Base::m_isInitialized;
|
|
65
|
-
public:
|
|
66
|
-
using Base::_solve_impl;
|
|
67
|
-
typedef _MatrixType MatrixType;
|
|
68
|
-
typedef typename MatrixType::Scalar Scalar;
|
|
69
|
-
typedef typename MatrixType::RealScalar RealScalar;
|
|
70
|
-
typedef typename MatrixType::StorageIndex StorageIndex;
|
|
71
|
-
typedef Matrix<Scalar,Dynamic,1> Vector;
|
|
72
|
-
typedef Matrix<int, 1, MatrixType::ColsAtCompileTime> IntRowVectorType;
|
|
73
|
-
typedef Matrix<int, MatrixType::RowsAtCompileTime, 1> IntColVectorType;
|
|
74
|
-
typedef SparseMatrix<Scalar> LUMatrixType;
|
|
75
|
-
typedef SparseMatrix<Scalar,ColMajor,int> KLUMatrixType;
|
|
76
|
-
typedef Ref<const KLUMatrixType, StandardCompressedFormat> KLUMatrixRef;
|
|
77
|
-
enum {
|
|
78
|
-
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
|
79
|
-
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
public:
|
|
83
|
-
|
|
84
|
-
KLU()
|
|
85
|
-
: m_dummy(0,0), mp_matrix(m_dummy)
|
|
86
|
-
{
|
|
87
|
-
init();
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
template<typename InputMatrixType>
|
|
91
|
-
explicit KLU(const InputMatrixType& matrix)
|
|
92
|
-
: mp_matrix(matrix)
|
|
93
|
-
{
|
|
94
|
-
init();
|
|
95
|
-
compute(matrix);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
~KLU()
|
|
99
|
-
{
|
|
100
|
-
if(m_symbolic) klu_free_symbolic(&m_symbolic,&m_common);
|
|
101
|
-
if(m_numeric) klu_free_numeric(&m_numeric,&m_common);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
EIGEN_CONSTEXPR inline Index rows() const EIGEN_NOEXCEPT { return mp_matrix.rows(); }
|
|
105
|
-
EIGEN_CONSTEXPR inline Index cols() const EIGEN_NOEXCEPT { return mp_matrix.cols(); }
|
|
98
|
+
~KLU() {
|
|
99
|
+
if (m_symbolic) klu_free_symbolic(&m_symbolic, &m_common);
|
|
100
|
+
if (m_numeric) klu_free_numeric(&m_numeric, &m_common);
|
|
101
|
+
}
|
|
106
102
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
103
|
+
constexpr Index rows() const noexcept { return mp_matrix.rows(); }
|
|
104
|
+
constexpr Index cols() const noexcept { return mp_matrix.cols(); }
|
|
105
|
+
|
|
106
|
+
/** \brief Reports whether previous computation was successful.
|
|
107
|
+
*
|
|
108
|
+
* \returns \c Success if computation was successful,
|
|
109
|
+
* \c NumericalIssue if the matrix.appears to be negative.
|
|
110
|
+
*/
|
|
111
|
+
ComputationInfo info() const {
|
|
112
|
+
eigen_assert(m_isInitialized && "Decomposition is not initialized.");
|
|
113
|
+
return m_info;
|
|
114
|
+
}
|
|
115
|
+
#if 0 // not implemented yet
|
|
118
116
|
inline const LUMatrixType& matrixL() const
|
|
119
117
|
{
|
|
120
118
|
if (m_extractedDataAreDirty) extractData();
|
|
@@ -139,167 +137,148 @@ class KLU : public SparseSolverBase<KLU<_MatrixType> >
|
|
|
139
137
|
return m_q;
|
|
140
138
|
}
|
|
141
139
|
#endif
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/** Performs a symbolic decomposition on the sparcity of \a matrix.
|
|
157
|
-
*
|
|
158
|
-
* This function is particularly useful when solving for several problems having the same structure.
|
|
159
|
-
*
|
|
160
|
-
* \sa factorize(), compute()
|
|
161
|
-
*/
|
|
162
|
-
template<typename InputMatrixType>
|
|
163
|
-
void analyzePattern(const InputMatrixType& matrix)
|
|
164
|
-
{
|
|
165
|
-
if(m_symbolic) klu_free_symbolic(&m_symbolic, &m_common);
|
|
166
|
-
if(m_numeric) klu_free_numeric(&m_numeric, &m_common);
|
|
167
|
-
|
|
168
|
-
grab(matrix.derived());
|
|
140
|
+
/** Computes the sparse Cholesky decomposition of \a matrix
|
|
141
|
+
* Note that the matrix should be column-major, and in compressed format for best performance.
|
|
142
|
+
* \sa SparseMatrix::makeCompressed().
|
|
143
|
+
*/
|
|
144
|
+
template <typename InputMatrixType>
|
|
145
|
+
void compute(const InputMatrixType &matrix) {
|
|
146
|
+
if (m_symbolic) klu_free_symbolic(&m_symbolic, &m_common);
|
|
147
|
+
if (m_numeric) klu_free_numeric(&m_numeric, &m_common);
|
|
148
|
+
grab(matrix.derived());
|
|
149
|
+
analyzePattern_impl();
|
|
150
|
+
factorize_impl();
|
|
151
|
+
}
|
|
169
152
|
|
|
170
|
-
|
|
171
|
-
|
|
153
|
+
/** Performs a symbolic decomposition on the sparsity of \a matrix.
|
|
154
|
+
*
|
|
155
|
+
* This function is particularly useful when solving for several problems having the same structure.
|
|
156
|
+
*
|
|
157
|
+
* \sa factorize(), compute()
|
|
158
|
+
*/
|
|
159
|
+
template <typename InputMatrixType>
|
|
160
|
+
void analyzePattern(const InputMatrixType &matrix) {
|
|
161
|
+
if (m_symbolic) klu_free_symbolic(&m_symbolic, &m_common);
|
|
162
|
+
if (m_numeric) klu_free_numeric(&m_numeric, &m_common);
|
|
172
163
|
|
|
164
|
+
grab(matrix.derived());
|
|
173
165
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
* See KLU documentation for details.
|
|
177
|
-
*/
|
|
178
|
-
inline const klu_common& kluCommon() const
|
|
179
|
-
{
|
|
180
|
-
return m_common;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/** Provides access to the control settings array used by UmfPack.
|
|
184
|
-
*
|
|
185
|
-
* If this array contains NaN's, the default values are used.
|
|
186
|
-
*
|
|
187
|
-
* See KLU documentation for details.
|
|
188
|
-
*/
|
|
189
|
-
inline klu_common& kluCommon()
|
|
190
|
-
{
|
|
191
|
-
return m_common;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/** Performs a numeric decomposition of \a matrix
|
|
195
|
-
*
|
|
196
|
-
* The given matrix must has the same sparcity than the matrix on which the pattern anylysis has been performed.
|
|
197
|
-
*
|
|
198
|
-
* \sa analyzePattern(), compute()
|
|
199
|
-
*/
|
|
200
|
-
template<typename InputMatrixType>
|
|
201
|
-
void factorize(const InputMatrixType& matrix)
|
|
202
|
-
{
|
|
203
|
-
eigen_assert(m_analysisIsOk && "KLU: you must first call analyzePattern()");
|
|
204
|
-
if(m_numeric)
|
|
205
|
-
klu_free_numeric(&m_numeric,&m_common);
|
|
206
|
-
|
|
207
|
-
grab(matrix.derived());
|
|
166
|
+
analyzePattern_impl();
|
|
167
|
+
}
|
|
208
168
|
|
|
209
|
-
|
|
210
|
-
|
|
169
|
+
/** Provides access to the control settings array used by KLU.
|
|
170
|
+
*
|
|
171
|
+
* See KLU documentation for details.
|
|
172
|
+
*/
|
|
173
|
+
inline const klu_common &kluCommon() const { return m_common; }
|
|
174
|
+
|
|
175
|
+
/** Provides access to the control settings array used by UmfPack.
|
|
176
|
+
*
|
|
177
|
+
* If this array contains NaN's, the default values are used.
|
|
178
|
+
*
|
|
179
|
+
* See KLU documentation for details.
|
|
180
|
+
*/
|
|
181
|
+
inline klu_common &kluCommon() { return m_common; }
|
|
182
|
+
|
|
183
|
+
/** Performs a numeric decomposition of \a matrix
|
|
184
|
+
*
|
|
185
|
+
* The given matrix must have the same sparsity than the matrix on which the pattern anylysis has been performed.
|
|
186
|
+
*
|
|
187
|
+
* \sa analyzePattern(), compute()
|
|
188
|
+
*/
|
|
189
|
+
template <typename InputMatrixType>
|
|
190
|
+
void factorize(const InputMatrixType &matrix) {
|
|
191
|
+
eigen_assert(m_analysisIsOk && "KLU: you must first call analyzePattern()");
|
|
192
|
+
if (m_numeric) klu_free_numeric(&m_numeric, &m_common);
|
|
193
|
+
|
|
194
|
+
grab(matrix.derived());
|
|
195
|
+
|
|
196
|
+
factorize_impl();
|
|
197
|
+
}
|
|
211
198
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
199
|
+
/** \internal */
|
|
200
|
+
template <typename BDerived, typename XDerived>
|
|
201
|
+
bool _solve_impl(const MatrixBase<BDerived> &b, MatrixBase<XDerived> &x) const;
|
|
215
202
|
|
|
216
|
-
#if 0
|
|
203
|
+
#if 0 // not implemented yet
|
|
217
204
|
Scalar determinant() const;
|
|
218
205
|
|
|
219
206
|
void extractData() const;
|
|
220
207
|
#endif
|
|
221
208
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
m_symbolic = 0;
|
|
230
|
-
m_extractedDataAreDirty = true;
|
|
209
|
+
protected:
|
|
210
|
+
void init() {
|
|
211
|
+
m_info = InvalidInput;
|
|
212
|
+
m_isInitialized = false;
|
|
213
|
+
m_numeric = 0;
|
|
214
|
+
m_symbolic = 0;
|
|
215
|
+
m_extractedDataAreDirty = true;
|
|
231
216
|
|
|
232
|
-
|
|
233
|
-
|
|
217
|
+
klu_defaults(&m_common);
|
|
218
|
+
}
|
|
234
219
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
m_extractedDataAreDirty = true;
|
|
248
|
-
}
|
|
220
|
+
void analyzePattern_impl() {
|
|
221
|
+
m_info = InvalidInput;
|
|
222
|
+
m_analysisIsOk = false;
|
|
223
|
+
m_factorizationIsOk = false;
|
|
224
|
+
m_symbolic = klu_analyze(internal::convert_index<int>(mp_matrix.rows()),
|
|
225
|
+
const_cast<StorageIndex *>(mp_matrix.outerIndexPtr()),
|
|
226
|
+
const_cast<StorageIndex *>(mp_matrix.innerIndexPtr()), &m_common);
|
|
227
|
+
if (m_symbolic) {
|
|
228
|
+
m_isInitialized = true;
|
|
229
|
+
m_info = Success;
|
|
230
|
+
m_analysisIsOk = true;
|
|
231
|
+
m_extractedDataAreDirty = true;
|
|
249
232
|
}
|
|
233
|
+
}
|
|
250
234
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
m_symbolic, &m_common, Scalar());
|
|
256
|
-
|
|
235
|
+
void factorize_impl() {
|
|
236
|
+
m_numeric = klu_factor(const_cast<StorageIndex *>(mp_matrix.outerIndexPtr()),
|
|
237
|
+
const_cast<StorageIndex *>(mp_matrix.innerIndexPtr()),
|
|
238
|
+
const_cast<Scalar *>(mp_matrix.valuePtr()), m_symbolic, &m_common, Scalar());
|
|
257
239
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
240
|
+
m_info = m_numeric ? Success : NumericalIssue;
|
|
241
|
+
m_factorizationIsOk = m_numeric ? 1 : 0;
|
|
242
|
+
m_extractedDataAreDirty = true;
|
|
243
|
+
}
|
|
262
244
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
}
|
|
245
|
+
template <typename MatrixDerived>
|
|
246
|
+
void grab(const EigenBase<MatrixDerived> &A) {
|
|
247
|
+
internal::destroy_at(&mp_matrix);
|
|
248
|
+
internal::construct_at(&mp_matrix, A.derived());
|
|
249
|
+
}
|
|
269
250
|
|
|
270
|
-
|
|
271
|
-
{
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
mp_matrix.~KLUMatrixRef();
|
|
275
|
-
::new (&mp_matrix) KLUMatrixRef(A);
|
|
276
|
-
}
|
|
251
|
+
void grab(const KLUMatrixRef &A) {
|
|
252
|
+
if (&(A.derived()) != &mp_matrix) {
|
|
253
|
+
internal::destroy_at(&mp_matrix);
|
|
254
|
+
internal::construct_at(&mp_matrix, A);
|
|
277
255
|
}
|
|
256
|
+
}
|
|
278
257
|
|
|
279
|
-
|
|
280
|
-
#if 0
|
|
258
|
+
// cached data to reduce reallocation, etc.
|
|
259
|
+
#if 0 // not implemented yet
|
|
281
260
|
mutable LUMatrixType m_l;
|
|
282
261
|
mutable LUMatrixType m_u;
|
|
283
262
|
mutable IntColVectorType m_p;
|
|
284
263
|
mutable IntRowVectorType m_q;
|
|
285
264
|
#endif
|
|
286
265
|
|
|
287
|
-
|
|
288
|
-
|
|
266
|
+
KLUMatrixType m_dummy;
|
|
267
|
+
KLUMatrixRef mp_matrix;
|
|
289
268
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
269
|
+
klu_numeric *m_numeric;
|
|
270
|
+
klu_symbolic *m_symbolic;
|
|
271
|
+
klu_common m_common;
|
|
272
|
+
mutable ComputationInfo m_info;
|
|
273
|
+
int m_factorizationIsOk;
|
|
274
|
+
int m_analysisIsOk;
|
|
275
|
+
mutable bool m_extractedDataAreDirty;
|
|
297
276
|
|
|
298
|
-
|
|
299
|
-
|
|
277
|
+
private:
|
|
278
|
+
KLU(const KLU &) {}
|
|
300
279
|
};
|
|
301
280
|
|
|
302
|
-
#if 0
|
|
281
|
+
#if 0 // not implemented yet
|
|
303
282
|
template<typename MatrixType>
|
|
304
283
|
void KLU<MatrixType>::extractData() const
|
|
305
284
|
{
|
|
@@ -338,21 +317,23 @@ typename KLU<MatrixType>::Scalar KLU<MatrixType>::determinant() const
|
|
|
338
317
|
}
|
|
339
318
|
#endif
|
|
340
319
|
|
|
341
|
-
template<typename MatrixType>
|
|
342
|
-
template<typename BDerived,typename XDerived>
|
|
343
|
-
bool KLU<MatrixType>::_solve_impl(const MatrixBase<BDerived> &b, MatrixBase<XDerived> &x) const
|
|
344
|
-
{
|
|
320
|
+
template <typename MatrixType>
|
|
321
|
+
template <typename BDerived, typename XDerived>
|
|
322
|
+
bool KLU<MatrixType>::_solve_impl(const MatrixBase<BDerived> &b, MatrixBase<XDerived> &x) const {
|
|
345
323
|
Index rhsCols = b.cols();
|
|
346
|
-
EIGEN_STATIC_ASSERT((XDerived::Flags&RowMajorBit)==0, THIS_METHOD_IS_ONLY_FOR_COLUMN_MAJOR_MATRICES);
|
|
347
|
-
eigen_assert(m_factorizationIsOk &&
|
|
324
|
+
EIGEN_STATIC_ASSERT((XDerived::Flags & RowMajorBit) == 0, THIS_METHOD_IS_ONLY_FOR_COLUMN_MAJOR_MATRICES);
|
|
325
|
+
eigen_assert(m_factorizationIsOk &&
|
|
326
|
+
"The decomposition is not in a valid state for solving, you must first call either compute() or "
|
|
327
|
+
"analyzePattern()/factorize()");
|
|
348
328
|
|
|
349
329
|
x = b;
|
|
350
|
-
int info = klu_solve(m_symbolic, m_numeric, b.rows(), rhsCols, x.const_cast_derived().data(),
|
|
330
|
+
int info = klu_solve(m_symbolic, m_numeric, b.rows(), rhsCols, x.const_cast_derived().data(),
|
|
331
|
+
const_cast<klu_common *>(&m_common), Scalar());
|
|
351
332
|
|
|
352
|
-
m_info = info!=0 ? Success : NumericalIssue;
|
|
333
|
+
m_info = info != 0 ? Success : NumericalIssue;
|
|
353
334
|
return true;
|
|
354
335
|
}
|
|
355
336
|
|
|
356
|
-
}
|
|
337
|
+
} // end namespace Eigen
|
|
357
338
|
|
|
358
|
-
#endif
|
|
339
|
+
#endif // EIGEN_KLUSUPPORT_H
|