@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,192 +10,164 @@
|
|
|
10
10
|
#ifndef EIGEN_ITERATIVE_SOLVER_BASE_H
|
|
11
11
|
#define EIGEN_ITERATIVE_SOLVER_BASE_H
|
|
12
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
13
16
|
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
19
|
|
|
17
|
-
template<typename MatrixType>
|
|
18
|
-
struct is_ref_compatible_impl
|
|
19
|
-
|
|
20
|
-
private:
|
|
20
|
+
template <typename MatrixType>
|
|
21
|
+
struct is_ref_compatible_impl {
|
|
22
|
+
private:
|
|
21
23
|
template <typename T0>
|
|
22
|
-
struct any_conversion
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
template <typename T>
|
|
24
|
+
struct any_conversion {
|
|
25
|
+
template <typename T>
|
|
26
|
+
any_conversion(const volatile T&);
|
|
27
|
+
template <typename T>
|
|
28
|
+
any_conversion(T&);
|
|
29
|
+
};
|
|
30
|
+
struct yes {
|
|
31
|
+
int a[1];
|
|
32
|
+
};
|
|
33
|
+
struct no {
|
|
34
|
+
int a[2];
|
|
26
35
|
};
|
|
27
|
-
struct yes {int a[1];};
|
|
28
|
-
struct no {int a[2];};
|
|
29
36
|
|
|
30
|
-
template<typename T>
|
|
37
|
+
template <typename T>
|
|
31
38
|
static yes test(const Ref<const T>&, int);
|
|
32
|
-
template<typename T>
|
|
33
|
-
static no
|
|
39
|
+
template <typename T>
|
|
40
|
+
static no test(any_conversion<T>, ...);
|
|
34
41
|
|
|
35
|
-
public:
|
|
42
|
+
public:
|
|
36
43
|
static MatrixType ms_from;
|
|
37
|
-
enum { value = sizeof(test<MatrixType>(ms_from, 0))==sizeof(yes) };
|
|
44
|
+
enum { value = sizeof(test<MatrixType>(ms_from, 0)) == sizeof(yes) };
|
|
38
45
|
};
|
|
39
46
|
|
|
40
|
-
template<typename MatrixType>
|
|
41
|
-
struct is_ref_compatible
|
|
42
|
-
{
|
|
43
|
-
enum { value = is_ref_compatible_impl<typename remove_all<MatrixType>::type>::value };
|
|
47
|
+
template <typename MatrixType>
|
|
48
|
+
struct is_ref_compatible {
|
|
49
|
+
enum { value = is_ref_compatible_impl<remove_all_t<MatrixType>>::value };
|
|
44
50
|
};
|
|
45
51
|
|
|
46
|
-
template<typename MatrixType, bool MatrixFree = !internal::is_ref_compatible<MatrixType>::value>
|
|
52
|
+
template <typename MatrixType, bool MatrixFree = !internal::is_ref_compatible<MatrixType>::value>
|
|
47
53
|
class generic_matrix_wrapper;
|
|
48
54
|
|
|
49
55
|
// We have an explicit matrix at hand, compatible with Ref<>
|
|
50
|
-
template<typename MatrixType>
|
|
51
|
-
class generic_matrix_wrapper<MatrixType,false>
|
|
52
|
-
|
|
53
|
-
public:
|
|
56
|
+
template <typename MatrixType>
|
|
57
|
+
class generic_matrix_wrapper<MatrixType, false> {
|
|
58
|
+
public:
|
|
54
59
|
typedef Ref<const MatrixType> ActualMatrixType;
|
|
55
|
-
template<int UpLo>
|
|
60
|
+
template <int UpLo>
|
|
61
|
+
struct ConstSelfAdjointViewReturnType {
|
|
56
62
|
typedef typename ActualMatrixType::template ConstSelfAdjointViewReturnType<UpLo>::Type Type;
|
|
57
63
|
};
|
|
58
64
|
|
|
59
|
-
enum {
|
|
60
|
-
MatrixFree = false
|
|
61
|
-
};
|
|
65
|
+
enum { MatrixFree = false };
|
|
62
66
|
|
|
63
|
-
generic_matrix_wrapper()
|
|
64
|
-
: m_dummy(0,0), m_matrix(m_dummy)
|
|
65
|
-
{}
|
|
67
|
+
generic_matrix_wrapper() : m_dummy(0, 0), m_matrix(m_dummy) {}
|
|
66
68
|
|
|
67
|
-
template<typename InputType>
|
|
68
|
-
generic_matrix_wrapper(const InputType
|
|
69
|
-
: m_matrix(mat)
|
|
70
|
-
{}
|
|
69
|
+
template <typename InputType>
|
|
70
|
+
generic_matrix_wrapper(const InputType& mat) : m_matrix(mat) {}
|
|
71
71
|
|
|
72
|
-
const ActualMatrixType& matrix() const
|
|
73
|
-
{
|
|
74
|
-
return m_matrix;
|
|
75
|
-
}
|
|
72
|
+
const ActualMatrixType& matrix() const { return m_matrix; }
|
|
76
73
|
|
|
77
|
-
template<typename MatrixDerived>
|
|
78
|
-
void grab(const EigenBase<MatrixDerived
|
|
79
|
-
|
|
80
|
-
m_matrix
|
|
81
|
-
::new (&m_matrix) Ref<const MatrixType>(mat.derived());
|
|
74
|
+
template <typename MatrixDerived>
|
|
75
|
+
void grab(const EigenBase<MatrixDerived>& mat) {
|
|
76
|
+
internal::destroy_at(&m_matrix);
|
|
77
|
+
internal::construct_at(&m_matrix, mat.derived());
|
|
82
78
|
}
|
|
83
79
|
|
|
84
|
-
void grab(const Ref<const MatrixType
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
m_matrix.~Ref<const MatrixType>();
|
|
89
|
-
::new (&m_matrix) Ref<const MatrixType>(mat);
|
|
80
|
+
void grab(const Ref<const MatrixType>& mat) {
|
|
81
|
+
if (&(mat.derived()) != &m_matrix) {
|
|
82
|
+
internal::destroy_at(&m_matrix);
|
|
83
|
+
internal::construct_at(&m_matrix, mat);
|
|
90
84
|
}
|
|
91
85
|
}
|
|
92
86
|
|
|
93
|
-
protected:
|
|
94
|
-
MatrixType m_dummy;
|
|
87
|
+
protected:
|
|
88
|
+
MatrixType m_dummy; // used to default initialize the Ref<> object
|
|
95
89
|
ActualMatrixType m_matrix;
|
|
96
90
|
};
|
|
97
91
|
|
|
98
92
|
// MatrixType is not compatible with Ref<> -> matrix-free wrapper
|
|
99
|
-
template<typename MatrixType>
|
|
100
|
-
class generic_matrix_wrapper<MatrixType,true>
|
|
101
|
-
|
|
102
|
-
public:
|
|
93
|
+
template <typename MatrixType>
|
|
94
|
+
class generic_matrix_wrapper<MatrixType, true> {
|
|
95
|
+
public:
|
|
103
96
|
typedef MatrixType ActualMatrixType;
|
|
104
|
-
template<int UpLo>
|
|
105
|
-
{
|
|
97
|
+
template <int UpLo>
|
|
98
|
+
struct ConstSelfAdjointViewReturnType {
|
|
106
99
|
typedef ActualMatrixType Type;
|
|
107
100
|
};
|
|
108
101
|
|
|
109
|
-
enum {
|
|
110
|
-
MatrixFree = true
|
|
111
|
-
};
|
|
102
|
+
enum { MatrixFree = true };
|
|
112
103
|
|
|
113
|
-
generic_matrix_wrapper()
|
|
114
|
-
: mp_matrix(0)
|
|
115
|
-
{}
|
|
104
|
+
generic_matrix_wrapper() : mp_matrix(0) {}
|
|
116
105
|
|
|
117
|
-
generic_matrix_wrapper(const MatrixType &mat)
|
|
118
|
-
: mp_matrix(&mat)
|
|
119
|
-
{}
|
|
106
|
+
generic_matrix_wrapper(const MatrixType& mat) : mp_matrix(&mat) {}
|
|
120
107
|
|
|
121
|
-
const ActualMatrixType& matrix() const
|
|
122
|
-
{
|
|
123
|
-
return *mp_matrix;
|
|
124
|
-
}
|
|
108
|
+
const ActualMatrixType& matrix() const { return *mp_matrix; }
|
|
125
109
|
|
|
126
|
-
void grab(const MatrixType &mat
|
|
127
|
-
{
|
|
128
|
-
mp_matrix = &mat;
|
|
129
|
-
}
|
|
110
|
+
void grab(const MatrixType& mat) { mp_matrix = &mat; }
|
|
130
111
|
|
|
131
|
-
protected:
|
|
132
|
-
const ActualMatrixType
|
|
112
|
+
protected:
|
|
113
|
+
const ActualMatrixType* mp_matrix;
|
|
133
114
|
};
|
|
134
115
|
|
|
135
|
-
}
|
|
116
|
+
} // namespace internal
|
|
136
117
|
|
|
137
118
|
/** \ingroup IterativeLinearSolvers_Module
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
template<
|
|
143
|
-
class IterativeSolverBase : public SparseSolverBase<Derived>
|
|
144
|
-
|
|
145
|
-
protected:
|
|
119
|
+
* \brief Base class for linear iterative solvers
|
|
120
|
+
*
|
|
121
|
+
* \sa class SimplicialCholesky, DiagonalPreconditioner, IdentityPreconditioner
|
|
122
|
+
*/
|
|
123
|
+
template <typename Derived>
|
|
124
|
+
class IterativeSolverBase : public SparseSolverBase<Derived> {
|
|
125
|
+
protected:
|
|
146
126
|
typedef SparseSolverBase<Derived> Base;
|
|
147
127
|
using Base::m_isInitialized;
|
|
148
128
|
|
|
149
|
-
public:
|
|
129
|
+
public:
|
|
150
130
|
typedef typename internal::traits<Derived>::MatrixType MatrixType;
|
|
151
131
|
typedef typename internal::traits<Derived>::Preconditioner Preconditioner;
|
|
152
132
|
typedef typename MatrixType::Scalar Scalar;
|
|
153
133
|
typedef typename MatrixType::StorageIndex StorageIndex;
|
|
154
134
|
typedef typename MatrixType::RealScalar RealScalar;
|
|
155
135
|
|
|
156
|
-
enum {
|
|
157
|
-
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
|
158
|
-
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
public:
|
|
136
|
+
enum { ColsAtCompileTime = MatrixType::ColsAtCompileTime, MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime };
|
|
162
137
|
|
|
138
|
+
public:
|
|
163
139
|
using Base::derived;
|
|
164
140
|
|
|
165
141
|
/** Default constructor. */
|
|
166
|
-
IterativeSolverBase()
|
|
167
|
-
{
|
|
168
|
-
init();
|
|
169
|
-
}
|
|
142
|
+
IterativeSolverBase() { init(); }
|
|
170
143
|
|
|
171
144
|
/** Initialize the solver with matrix \a A for further \c Ax=b solving.
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
template<typename MatrixDerived>
|
|
182
|
-
explicit IterativeSolverBase(const EigenBase<MatrixDerived>& A)
|
|
183
|
-
: m_matrixWrapper(A.derived())
|
|
184
|
-
{
|
|
145
|
+
*
|
|
146
|
+
* This constructor is a shortcut for the default constructor followed
|
|
147
|
+
* by a call to compute().
|
|
148
|
+
*
|
|
149
|
+
* \warning this class stores a reference to the matrix A as well as some
|
|
150
|
+
* precomputed values that depend on it. Therefore, if \a A is changed
|
|
151
|
+
* this class becomes invalid. Call compute() to update it with the new
|
|
152
|
+
* matrix A, or modify a copy of A.
|
|
153
|
+
*/
|
|
154
|
+
template <typename MatrixDerived>
|
|
155
|
+
explicit IterativeSolverBase(const EigenBase<MatrixDerived>& A) : m_matrixWrapper(A.derived()) {
|
|
185
156
|
init();
|
|
186
157
|
compute(matrix());
|
|
187
158
|
}
|
|
188
159
|
|
|
160
|
+
IterativeSolverBase(IterativeSolverBase&&) = default;
|
|
161
|
+
|
|
189
162
|
~IterativeSolverBase() {}
|
|
190
163
|
|
|
191
164
|
/** Initializes the iterative solver for the sparsity pattern of the matrix \a A for further solving \c Ax=b problems.
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
template<typename MatrixDerived>
|
|
197
|
-
Derived& analyzePattern(const EigenBase<MatrixDerived>& A)
|
|
198
|
-
{
|
|
165
|
+
*
|
|
166
|
+
* Currently, this function mostly calls analyzePattern on the preconditioner. In the future
|
|
167
|
+
* we might, for instance, implement column reordering for faster matrix vector products.
|
|
168
|
+
*/
|
|
169
|
+
template <typename MatrixDerived>
|
|
170
|
+
Derived& analyzePattern(const EigenBase<MatrixDerived>& A) {
|
|
199
171
|
grab(A.derived());
|
|
200
172
|
m_preconditioner.analyzePattern(matrix());
|
|
201
173
|
m_isInitialized = true;
|
|
@@ -204,18 +176,18 @@ public:
|
|
|
204
176
|
return derived();
|
|
205
177
|
}
|
|
206
178
|
|
|
207
|
-
/** Initializes the iterative solver with the numerical values of the matrix \a A for further solving \c Ax=b
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
{
|
|
179
|
+
/** Initializes the iterative solver with the numerical values of the matrix \a A for further solving \c Ax=b
|
|
180
|
+
* problems.
|
|
181
|
+
*
|
|
182
|
+
* Currently, this function mostly calls factorize on the preconditioner.
|
|
183
|
+
*
|
|
184
|
+
* \warning this class stores a reference to the matrix A as well as some
|
|
185
|
+
* precomputed values that depend on it. Therefore, if \a A is changed
|
|
186
|
+
* this class becomes invalid. Call compute() to update it with the new
|
|
187
|
+
* matrix A, or modify a copy of A.
|
|
188
|
+
*/
|
|
189
|
+
template <typename MatrixDerived>
|
|
190
|
+
Derived& factorize(const EigenBase<MatrixDerived>& A) {
|
|
219
191
|
eigen_assert(m_analysisIsOk && "You must first call analyzePattern()");
|
|
220
192
|
grab(A.derived());
|
|
221
193
|
m_preconditioner.factorize(matrix());
|
|
@@ -225,18 +197,17 @@ public:
|
|
|
225
197
|
}
|
|
226
198
|
|
|
227
199
|
/** Initializes the iterative solver with the matrix \a A for further solving \c Ax=b problems.
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
template<typename MatrixDerived>
|
|
238
|
-
Derived& compute(const EigenBase<MatrixDerived>& A)
|
|
239
|
-
{
|
|
200
|
+
*
|
|
201
|
+
* Currently, this function mostly initializes/computes the preconditioner. In the future
|
|
202
|
+
* we might, for instance, implement column reordering for faster matrix vector products.
|
|
203
|
+
*
|
|
204
|
+
* \warning this class stores a reference to the matrix A as well as some
|
|
205
|
+
* precomputed values that depend on it. Therefore, if \a A is changed
|
|
206
|
+
* this class becomes invalid. Call compute() to update it with the new
|
|
207
|
+
* matrix A, or modify a copy of A.
|
|
208
|
+
*/
|
|
209
|
+
template <typename MatrixDerived>
|
|
210
|
+
Derived& compute(const EigenBase<MatrixDerived>& A) {
|
|
240
211
|
grab(A.derived());
|
|
241
212
|
m_preconditioner.compute(matrix());
|
|
242
213
|
m_isInitialized = true;
|
|
@@ -247,23 +218,22 @@ public:
|
|
|
247
218
|
}
|
|
248
219
|
|
|
249
220
|
/** \internal */
|
|
250
|
-
|
|
221
|
+
constexpr Index rows() const noexcept { return matrix().rows(); }
|
|
251
222
|
|
|
252
223
|
/** \internal */
|
|
253
|
-
|
|
224
|
+
constexpr Index cols() const noexcept { return matrix().cols(); }
|
|
254
225
|
|
|
255
226
|
/** \returns the tolerance threshold used by the stopping criteria.
|
|
256
|
-
|
|
257
|
-
|
|
227
|
+
* \sa setTolerance()
|
|
228
|
+
*/
|
|
258
229
|
RealScalar tolerance() const { return m_tolerance; }
|
|
259
230
|
|
|
260
231
|
/** Sets the tolerance threshold used by the stopping criteria.
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
Derived& setTolerance(const RealScalar& tolerance)
|
|
266
|
-
{
|
|
232
|
+
*
|
|
233
|
+
* This value is used as an upper bound to the relative residual error: |Ax-b|/|b|.
|
|
234
|
+
* The default value is the machine precision given by NumTraits<Scalar>::epsilon()
|
|
235
|
+
*/
|
|
236
|
+
Derived& setTolerance(const RealScalar& tolerance) {
|
|
267
237
|
m_tolerance = tolerance;
|
|
268
238
|
return derived();
|
|
269
239
|
}
|
|
@@ -275,137 +245,122 @@ public:
|
|
|
275
245
|
const Preconditioner& preconditioner() const { return m_preconditioner; }
|
|
276
246
|
|
|
277
247
|
/** \returns the max number of iterations.
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
Index maxIterations() const
|
|
282
|
-
{
|
|
283
|
-
return (m_maxIterations<0) ? 2*matrix().cols() : m_maxIterations;
|
|
284
|
-
}
|
|
248
|
+
* It is either the value set by setMaxIterations or, by default,
|
|
249
|
+
* twice the number of columns of the matrix.
|
|
250
|
+
*/
|
|
251
|
+
Index maxIterations() const { return (m_maxIterations < 0) ? 2 * matrix().cols() : m_maxIterations; }
|
|
285
252
|
|
|
286
253
|
/** Sets the max number of iterations.
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
Derived& setMaxIterations(Index maxIters)
|
|
290
|
-
{
|
|
254
|
+
* Default is twice the number of columns of the matrix.
|
|
255
|
+
*/
|
|
256
|
+
Derived& setMaxIterations(Index maxIters) {
|
|
291
257
|
m_maxIterations = maxIters;
|
|
292
258
|
return derived();
|
|
293
259
|
}
|
|
294
260
|
|
|
295
261
|
/** \returns the number of iterations performed during the last solve */
|
|
296
|
-
Index iterations() const
|
|
297
|
-
|
|
298
|
-
eigen_assert(m_isInitialized && "ConjugateGradient is not initialized.");
|
|
262
|
+
Index iterations() const {
|
|
263
|
+
eigen_assert(m_isInitialized && "IterativeSolverBase is not initialized.");
|
|
299
264
|
return m_iterations;
|
|
300
265
|
}
|
|
301
266
|
|
|
302
267
|
/** \returns the tolerance error reached during the last solve.
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
RealScalar error() const
|
|
306
|
-
|
|
307
|
-
eigen_assert(m_isInitialized && "ConjugateGradient is not initialized.");
|
|
268
|
+
* It is a close approximation of the true relative residual error |Ax-b|/|b|.
|
|
269
|
+
*/
|
|
270
|
+
RealScalar error() const {
|
|
271
|
+
eigen_assert(m_isInitialized && "IterativeSolverBase is not initialized.");
|
|
308
272
|
return m_error;
|
|
309
273
|
}
|
|
310
274
|
|
|
311
275
|
/** \returns the solution x of \f$ A x = b \f$ using the current decomposition of A
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
template<typename Rhs,typename Guess>
|
|
317
|
-
inline const SolveWithGuess<Derived, Rhs, Guess>
|
|
318
|
-
solveWithGuess(const MatrixBase<Rhs>& b, const Guess& x0) const
|
|
319
|
-
{
|
|
276
|
+
* and \a x0 as an initial solution.
|
|
277
|
+
*
|
|
278
|
+
* \sa solve(), compute()
|
|
279
|
+
*/
|
|
280
|
+
template <typename Rhs, typename Guess>
|
|
281
|
+
inline const SolveWithGuess<Derived, Rhs, Guess> solveWithGuess(const MatrixBase<Rhs>& b, const Guess& x0) const {
|
|
320
282
|
eigen_assert(m_isInitialized && "Solver is not initialized.");
|
|
321
|
-
eigen_assert(derived().rows()==b.rows() && "solve(): invalid number of rows of the right hand side matrix b");
|
|
283
|
+
eigen_assert(derived().rows() == b.rows() && "solve(): invalid number of rows of the right hand side matrix b");
|
|
322
284
|
return SolveWithGuess<Derived, Rhs, Guess>(derived(), b.derived(), x0);
|
|
323
285
|
}
|
|
324
286
|
|
|
325
287
|
/** \returns Success if the iterations converged, and NoConvergence otherwise. */
|
|
326
|
-
ComputationInfo info() const
|
|
327
|
-
{
|
|
288
|
+
ComputationInfo info() const {
|
|
328
289
|
eigen_assert(m_isInitialized && "IterativeSolverBase is not initialized.");
|
|
329
290
|
return m_info;
|
|
330
291
|
}
|
|
331
292
|
|
|
332
293
|
/** \internal */
|
|
333
|
-
template<typename Rhs, typename DestDerived>
|
|
334
|
-
void _solve_with_guess_impl(const Rhs& b, SparseMatrixBase<DestDerived
|
|
335
|
-
|
|
336
|
-
eigen_assert(rows()==b.rows());
|
|
294
|
+
template <typename Rhs, typename DestDerived>
|
|
295
|
+
void _solve_with_guess_impl(const Rhs& b, SparseMatrixBase<DestDerived>& aDest) const {
|
|
296
|
+
eigen_assert(rows() == b.rows());
|
|
337
297
|
|
|
338
298
|
Index rhsCols = b.cols();
|
|
339
299
|
Index size = b.rows();
|
|
340
300
|
DestDerived& dest(aDest.derived());
|
|
341
301
|
typedef typename DestDerived::Scalar DestScalar;
|
|
342
|
-
Eigen::Matrix<DestScalar,Dynamic,1> tb(size);
|
|
343
|
-
Eigen::Matrix<DestScalar,Dynamic,1> tx(cols());
|
|
302
|
+
Eigen::Matrix<DestScalar, Dynamic, 1> tb(size);
|
|
303
|
+
Eigen::Matrix<DestScalar, Dynamic, 1> tx(cols());
|
|
344
304
|
// We do not directly fill dest because sparse expressions have to be free of aliasing issue.
|
|
345
|
-
// For non square least-square problems, b and dest might not have the same size whereas they might alias
|
|
346
|
-
|
|
305
|
+
// For non square least-square problems, b and dest might not have the same size whereas they might alias
|
|
306
|
+
// each-other.
|
|
307
|
+
typename DestDerived::PlainObject tmp(cols(), rhsCols);
|
|
347
308
|
ComputationInfo global_info = Success;
|
|
348
|
-
for(Index k=0; k<rhsCols; ++k)
|
|
349
|
-
{
|
|
309
|
+
for (Index k = 0; k < rhsCols; ++k) {
|
|
350
310
|
tb = b.col(k);
|
|
351
311
|
tx = dest.col(k);
|
|
352
|
-
derived()._solve_vector_with_guess_impl(tb,tx);
|
|
312
|
+
derived()._solve_vector_with_guess_impl(tb, tx);
|
|
353
313
|
tmp.col(k) = tx.sparseView(0);
|
|
354
314
|
|
|
355
315
|
// The call to _solve_vector_with_guess_impl updates m_info, so if it failed for a previous column
|
|
356
316
|
// we need to restore it to the worst value.
|
|
357
|
-
if(m_info==NumericalIssue)
|
|
317
|
+
if (m_info == NumericalIssue)
|
|
358
318
|
global_info = NumericalIssue;
|
|
359
|
-
else if(m_info==NoConvergence)
|
|
319
|
+
else if (m_info == NoConvergence)
|
|
360
320
|
global_info = NoConvergence;
|
|
361
321
|
}
|
|
362
322
|
m_info = global_info;
|
|
363
323
|
dest.swap(tmp);
|
|
364
324
|
}
|
|
365
325
|
|
|
366
|
-
template<typename Rhs, typename DestDerived>
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
eigen_assert(rows()==b.rows());
|
|
326
|
+
template <typename Rhs, typename DestDerived>
|
|
327
|
+
std::enable_if_t<Rhs::ColsAtCompileTime != 1 && DestDerived::ColsAtCompileTime != 1> _solve_with_guess_impl(
|
|
328
|
+
const Rhs& b, MatrixBase<DestDerived>& aDest) const {
|
|
329
|
+
eigen_assert(rows() == b.rows());
|
|
371
330
|
|
|
372
331
|
Index rhsCols = b.cols();
|
|
373
332
|
DestDerived& dest(aDest.derived());
|
|
374
333
|
ComputationInfo global_info = Success;
|
|
375
|
-
for(Index k=0; k<rhsCols; ++k)
|
|
376
|
-
|
|
377
|
-
typename
|
|
378
|
-
|
|
379
|
-
derived()._solve_vector_with_guess_impl(bk,xk);
|
|
334
|
+
for (Index k = 0; k < rhsCols; ++k) {
|
|
335
|
+
typename DestDerived::ColXpr xk(dest, k);
|
|
336
|
+
typename Rhs::ConstColXpr bk(b, k);
|
|
337
|
+
derived()._solve_vector_with_guess_impl(bk, xk);
|
|
380
338
|
|
|
381
339
|
// The call to _solve_vector_with_guess updates m_info, so if it failed for a previous column
|
|
382
340
|
// we need to restore it to the worst value.
|
|
383
|
-
if(m_info==NumericalIssue)
|
|
341
|
+
if (m_info == NumericalIssue)
|
|
384
342
|
global_info = NumericalIssue;
|
|
385
|
-
else if(m_info==NoConvergence)
|
|
343
|
+
else if (m_info == NoConvergence)
|
|
386
344
|
global_info = NoConvergence;
|
|
387
345
|
}
|
|
388
346
|
m_info = global_info;
|
|
389
347
|
}
|
|
390
348
|
|
|
391
|
-
template<typename Rhs, typename DestDerived>
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
derived()._solve_vector_with_guess_impl(b,dest.derived());
|
|
349
|
+
template <typename Rhs, typename DestDerived>
|
|
350
|
+
std::enable_if_t<Rhs::ColsAtCompileTime == 1 || DestDerived::ColsAtCompileTime == 1> _solve_with_guess_impl(
|
|
351
|
+
const Rhs& b, MatrixBase<DestDerived>& dest) const {
|
|
352
|
+
derived()._solve_vector_with_guess_impl(b, dest.derived());
|
|
396
353
|
}
|
|
397
354
|
|
|
398
355
|
/** \internal default initial guess = 0 */
|
|
399
|
-
template<typename Rhs,typename Dest>
|
|
400
|
-
void _solve_impl(const Rhs& b, Dest& x) const
|
|
401
|
-
{
|
|
356
|
+
template <typename Rhs, typename Dest>
|
|
357
|
+
void _solve_impl(const Rhs& b, Dest& x) const {
|
|
402
358
|
x.setZero();
|
|
403
|
-
derived()._solve_with_guess_impl(b,x);
|
|
359
|
+
derived()._solve_with_guess_impl(b, x);
|
|
404
360
|
}
|
|
405
361
|
|
|
406
|
-
protected:
|
|
407
|
-
void init()
|
|
408
|
-
{
|
|
362
|
+
protected:
|
|
363
|
+
void init() {
|
|
409
364
|
m_isInitialized = false;
|
|
410
365
|
m_analysisIsOk = false;
|
|
411
366
|
m_factorizationIsOk = false;
|
|
@@ -416,14 +371,10 @@ protected:
|
|
|
416
371
|
typedef internal::generic_matrix_wrapper<MatrixType> MatrixWrapper;
|
|
417
372
|
typedef typename MatrixWrapper::ActualMatrixType ActualMatrixType;
|
|
418
373
|
|
|
419
|
-
const ActualMatrixType& matrix() const
|
|
420
|
-
{
|
|
421
|
-
return m_matrixWrapper.matrix();
|
|
422
|
-
}
|
|
374
|
+
const ActualMatrixType& matrix() const { return m_matrixWrapper.matrix(); }
|
|
423
375
|
|
|
424
|
-
template<typename InputType>
|
|
425
|
-
void grab(const InputType
|
|
426
|
-
{
|
|
376
|
+
template <typename InputType>
|
|
377
|
+
void grab(const InputType& A) {
|
|
427
378
|
m_matrixWrapper.grab(A);
|
|
428
379
|
}
|
|
429
380
|
|
|
@@ -439,6 +390,6 @@ protected:
|
|
|
439
390
|
mutable bool m_analysisIsOk, m_factorizationIsOk;
|
|
440
391
|
};
|
|
441
392
|
|
|
442
|
-
}
|
|
393
|
+
} // end namespace Eigen
|
|
443
394
|
|
|
444
|
-
#endif
|
|
395
|
+
#endif // EIGEN_ITERATIVE_SOLVER_BASE_H
|