@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,121 +10,118 @@
|
|
|
10
10
|
#ifndef EIGEN_LEAST_SQUARE_CONJUGATE_GRADIENT_H
|
|
11
11
|
#define EIGEN_LEAST_SQUARE_CONJUGATE_GRADIENT_H
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
16
|
+
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
19
|
|
|
17
20
|
/** \internal Low-level conjugate gradient algorithm for least-square problems
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
template<typename MatrixType, typename Rhs, typename Dest, typename Preconditioner>
|
|
27
|
-
EIGEN_DONT_INLINE
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
typename Dest::RealScalar& tol_error)
|
|
31
|
-
{
|
|
32
|
-
using std::sqrt;
|
|
21
|
+
* \param mat The matrix A
|
|
22
|
+
* \param rhs The right hand side vector b
|
|
23
|
+
* \param x On input and initial solution, on output the computed solution.
|
|
24
|
+
* \param precond A preconditioner being able to efficiently solve for an
|
|
25
|
+
* approximation of A'Ax=b (regardless of b)
|
|
26
|
+
* \param iters On input the max number of iteration, on output the number of performed iterations.
|
|
27
|
+
* \param tol_error On input the tolerance error, on output an estimation of the relative error.
|
|
28
|
+
*/
|
|
29
|
+
template <typename MatrixType, typename Rhs, typename Dest, typename Preconditioner>
|
|
30
|
+
EIGEN_DONT_INLINE void least_square_conjugate_gradient(const MatrixType& mat, const Rhs& rhs, Dest& x,
|
|
31
|
+
const Preconditioner& precond, Index& iters,
|
|
32
|
+
typename Dest::RealScalar& tol_error) {
|
|
33
33
|
using std::abs;
|
|
34
|
+
using std::sqrt;
|
|
34
35
|
typedef typename Dest::RealScalar RealScalar;
|
|
35
36
|
typedef typename Dest::Scalar Scalar;
|
|
36
|
-
typedef Matrix<Scalar,Dynamic,1> VectorType;
|
|
37
|
-
|
|
37
|
+
typedef Matrix<Scalar, Dynamic, 1> VectorType;
|
|
38
|
+
|
|
38
39
|
RealScalar tol = tol_error;
|
|
39
40
|
Index maxIters = iters;
|
|
40
|
-
|
|
41
|
+
|
|
41
42
|
Index m = mat.rows(), n = mat.cols();
|
|
42
43
|
|
|
43
|
-
VectorType residual
|
|
44
|
+
VectorType residual = rhs - mat * x;
|
|
44
45
|
VectorType normal_residual = mat.adjoint() * residual;
|
|
45
46
|
|
|
46
|
-
RealScalar rhsNorm2 = (mat.adjoint()*rhs).squaredNorm();
|
|
47
|
-
if(rhsNorm2 == 0)
|
|
48
|
-
{
|
|
47
|
+
RealScalar rhsNorm2 = (mat.adjoint() * rhs).squaredNorm();
|
|
48
|
+
if (rhsNorm2 == 0) {
|
|
49
49
|
x.setZero();
|
|
50
50
|
iters = 0;
|
|
51
51
|
tol_error = 0;
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
|
-
RealScalar threshold = tol*tol*rhsNorm2;
|
|
54
|
+
RealScalar threshold = tol * tol * rhsNorm2;
|
|
55
55
|
RealScalar residualNorm2 = normal_residual.squaredNorm();
|
|
56
|
-
if (residualNorm2 < threshold)
|
|
57
|
-
{
|
|
56
|
+
if (residualNorm2 < threshold) {
|
|
58
57
|
iters = 0;
|
|
59
58
|
tol_error = sqrt(residualNorm2 / rhsNorm2);
|
|
60
59
|
return;
|
|
61
60
|
}
|
|
62
|
-
|
|
61
|
+
|
|
63
62
|
VectorType p(n);
|
|
64
|
-
p = precond.solve(normal_residual);
|
|
63
|
+
p = precond.solve(normal_residual); // initial search direction
|
|
65
64
|
|
|
66
65
|
VectorType z(n), tmp(m);
|
|
67
66
|
RealScalar absNew = numext::real(normal_residual.dot(p)); // the square of the absolute value of r scaled by invM
|
|
68
67
|
Index i = 0;
|
|
69
|
-
while(i < maxIters)
|
|
70
|
-
{
|
|
68
|
+
while (i < maxIters) {
|
|
71
69
|
tmp.noalias() = mat * p;
|
|
72
70
|
|
|
73
|
-
Scalar alpha = absNew / tmp.squaredNorm();
|
|
74
|
-
x += alpha * p;
|
|
75
|
-
residual -= alpha * tmp;
|
|
76
|
-
normal_residual = mat.adjoint() * residual;
|
|
77
|
-
|
|
71
|
+
Scalar alpha = absNew / tmp.squaredNorm(); // the amount we travel on dir
|
|
72
|
+
x += alpha * p; // update solution
|
|
73
|
+
residual -= alpha * tmp; // update residual
|
|
74
|
+
normal_residual.noalias() = mat.adjoint() * residual; // update residual of the normal equation
|
|
75
|
+
|
|
78
76
|
residualNorm2 = normal_residual.squaredNorm();
|
|
79
|
-
if(residualNorm2 < threshold)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
z = precond.solve(normal_residual); // approximately solve for "A'A z = normal_residual"
|
|
77
|
+
if (residualNorm2 < threshold) break;
|
|
78
|
+
|
|
79
|
+
z = precond.solve(normal_residual); // approximately solve for "A'A z = normal_residual"
|
|
83
80
|
|
|
84
81
|
RealScalar absOld = absNew;
|
|
85
82
|
absNew = numext::real(normal_residual.dot(z)); // update the absolute value of r
|
|
86
|
-
RealScalar beta = absNew / absOld;
|
|
87
|
-
p = z + beta * p;
|
|
83
|
+
RealScalar beta = absNew / absOld; // calculate the Gram-Schmidt value used to create the new search direction
|
|
84
|
+
p = z + beta * p; // update search direction
|
|
88
85
|
i++;
|
|
89
86
|
}
|
|
90
87
|
tol_error = sqrt(residualNorm2 / rhsNorm2);
|
|
91
88
|
iters = i;
|
|
92
89
|
}
|
|
93
90
|
|
|
94
|
-
}
|
|
91
|
+
} // namespace internal
|
|
95
92
|
|
|
96
|
-
template<
|
|
97
|
-
typename
|
|
93
|
+
template <typename MatrixType_,
|
|
94
|
+
typename Preconditioner_ = LeastSquareDiagonalPreconditioner<typename MatrixType_::Scalar> >
|
|
98
95
|
class LeastSquaresConjugateGradient;
|
|
99
96
|
|
|
100
97
|
namespace internal {
|
|
101
98
|
|
|
102
|
-
template<
|
|
103
|
-
struct traits<LeastSquaresConjugateGradient<
|
|
104
|
-
|
|
105
|
-
typedef
|
|
106
|
-
typedef _Preconditioner Preconditioner;
|
|
99
|
+
template <typename MatrixType_, typename Preconditioner_>
|
|
100
|
+
struct traits<LeastSquaresConjugateGradient<MatrixType_, Preconditioner_> > {
|
|
101
|
+
typedef MatrixType_ MatrixType;
|
|
102
|
+
typedef Preconditioner_ Preconditioner;
|
|
107
103
|
};
|
|
108
104
|
|
|
109
|
-
}
|
|
105
|
+
} // namespace internal
|
|
110
106
|
|
|
111
107
|
/** \ingroup IterativeLinearSolvers_Module
|
|
112
108
|
* \brief A conjugate gradient solver for sparse (or dense) least-square problems
|
|
113
109
|
*
|
|
114
|
-
* This class
|
|
115
|
-
* The matrix A can be non symmetric and rectangular, but the matrix A' A should be positive-definite to guaranty
|
|
110
|
+
* This class solves for the least-squares solution to A x = b using an iterative conjugate gradient algorithm.
|
|
111
|
+
* The matrix A can be non symmetric and rectangular, but the matrix A' A should be positive-definite to guaranty
|
|
112
|
+
stability.
|
|
116
113
|
* Otherwise, the SparseLU or SparseQR classes might be preferable.
|
|
117
114
|
* The matrix A and the vectors x and b can be either dense or sparse.
|
|
118
115
|
*
|
|
119
|
-
* \tparam
|
|
120
|
-
* \tparam
|
|
116
|
+
* \tparam MatrixType_ the type of the matrix A, can be a dense or a sparse matrix.
|
|
117
|
+
* \tparam Preconditioner_ the type of the preconditioner. Default is LeastSquareDiagonalPreconditioner
|
|
121
118
|
*
|
|
122
119
|
* \implsparsesolverconcept
|
|
123
|
-
*
|
|
120
|
+
*
|
|
124
121
|
* The maximal number of iterations and tolerance value can be controlled via the setMaxIterations()
|
|
125
122
|
* and setTolerance() methods. The defaults are the size of the problem for the maximal number of iterations
|
|
126
123
|
* and NumTraits<Scalar>::epsilon() for the tolerance.
|
|
127
|
-
*
|
|
124
|
+
*
|
|
128
125
|
* This class can be used as the direct solver classes. Here is a typical usage example:
|
|
129
126
|
\code
|
|
130
127
|
int m=1000000, n = 10000;
|
|
@@ -139,60 +136,58 @@ struct traits<LeastSquaresConjugateGradient<_MatrixType,_Preconditioner> >
|
|
|
139
136
|
// update b, and solve again
|
|
140
137
|
x = lscg.solve(b);
|
|
141
138
|
\endcode
|
|
142
|
-
*
|
|
139
|
+
*
|
|
143
140
|
* By default the iterations start with x=0 as an initial guess of the solution.
|
|
144
141
|
* One can control the start using the solveWithGuess() method.
|
|
145
|
-
*
|
|
142
|
+
*
|
|
146
143
|
* \sa class ConjugateGradient, SparseLU, SparseQR
|
|
147
144
|
*/
|
|
148
|
-
template<
|
|
149
|
-
class LeastSquaresConjugateGradient
|
|
150
|
-
{
|
|
145
|
+
template <typename MatrixType_, typename Preconditioner_>
|
|
146
|
+
class LeastSquaresConjugateGradient
|
|
147
|
+
: public IterativeSolverBase<LeastSquaresConjugateGradient<MatrixType_, Preconditioner_> > {
|
|
151
148
|
typedef IterativeSolverBase<LeastSquaresConjugateGradient> Base;
|
|
152
|
-
using Base::matrix;
|
|
153
149
|
using Base::m_error;
|
|
154
|
-
using Base::m_iterations;
|
|
155
150
|
using Base::m_info;
|
|
156
151
|
using Base::m_isInitialized;
|
|
157
|
-
|
|
158
|
-
|
|
152
|
+
using Base::m_iterations;
|
|
153
|
+
using Base::matrix;
|
|
154
|
+
|
|
155
|
+
public:
|
|
156
|
+
typedef MatrixType_ MatrixType;
|
|
159
157
|
typedef typename MatrixType::Scalar Scalar;
|
|
160
158
|
typedef typename MatrixType::RealScalar RealScalar;
|
|
161
|
-
typedef
|
|
162
|
-
|
|
163
|
-
public:
|
|
159
|
+
typedef Preconditioner_ Preconditioner;
|
|
164
160
|
|
|
161
|
+
public:
|
|
165
162
|
/** Default constructor. */
|
|
166
163
|
LeastSquaresConjugateGradient() : Base() {}
|
|
167
164
|
|
|
168
165
|
/** Initialize the solver with matrix \a A for further \c Ax=b solving.
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
template<typename MatrixDerived>
|
|
166
|
+
*
|
|
167
|
+
* This constructor is a shortcut for the default constructor followed
|
|
168
|
+
* by a call to compute().
|
|
169
|
+
*
|
|
170
|
+
* \warning this class stores a reference to the matrix A as well as some
|
|
171
|
+
* precomputed values that depend on it. Therefore, if \a A is changed
|
|
172
|
+
* this class becomes invalid. Call compute() to update it with the new
|
|
173
|
+
* matrix A, or modify a copy of A.
|
|
174
|
+
*/
|
|
175
|
+
template <typename MatrixDerived>
|
|
179
176
|
explicit LeastSquaresConjugateGradient(const EigenBase<MatrixDerived>& A) : Base(A.derived()) {}
|
|
180
177
|
|
|
181
178
|
~LeastSquaresConjugateGradient() {}
|
|
182
179
|
|
|
183
180
|
/** \internal */
|
|
184
|
-
template<typename Rhs,typename Dest>
|
|
185
|
-
void _solve_vector_with_guess_impl(const Rhs& b, Dest& x) const
|
|
186
|
-
{
|
|
181
|
+
template <typename Rhs, typename Dest>
|
|
182
|
+
void _solve_vector_with_guess_impl(const Rhs& b, Dest& x) const {
|
|
187
183
|
m_iterations = Base::maxIterations();
|
|
188
184
|
m_error = Base::m_tolerance;
|
|
189
185
|
|
|
190
186
|
internal::least_square_conjugate_gradient(matrix(), b, x, Base::m_preconditioner, m_iterations, m_error);
|
|
191
187
|
m_info = m_error <= Base::m_tolerance ? Success : NoConvergence;
|
|
192
188
|
}
|
|
193
|
-
|
|
194
189
|
};
|
|
195
190
|
|
|
196
|
-
}
|
|
191
|
+
} // end namespace Eigen
|
|
197
192
|
|
|
198
|
-
#endif
|
|
193
|
+
#endif // EIGEN_LEAST_SQUARE_CONJUGATE_GRADIENT_H
|
|
@@ -10,61 +10,59 @@
|
|
|
10
10
|
#ifndef EIGEN_SOLVEWITHGUESS_H
|
|
11
11
|
#define EIGEN_SOLVEWITHGUESS_H
|
|
12
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
13
16
|
namespace Eigen {
|
|
14
17
|
|
|
15
|
-
template<typename Decomposition, typename RhsType, typename GuessType>
|
|
18
|
+
template <typename Decomposition, typename RhsType, typename GuessType>
|
|
19
|
+
class SolveWithGuess;
|
|
16
20
|
|
|
17
21
|
/** \class SolveWithGuess
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
* \ingroup IterativeLinearSolvers_Module
|
|
23
|
+
*
|
|
24
|
+
* \brief Pseudo expression representing a solving operation
|
|
25
|
+
*
|
|
26
|
+
* \tparam Decomposition the type of the matrix or decomposition object
|
|
27
|
+
* \tparam Rhstype the type of the right-hand side
|
|
28
|
+
*
|
|
29
|
+
* This class represents an expression of A.solve(B)
|
|
30
|
+
* and most of the time this is the only way it is used.
|
|
31
|
+
*
|
|
32
|
+
*/
|
|
29
33
|
namespace internal {
|
|
30
34
|
|
|
35
|
+
template <typename Decomposition, typename RhsType, typename GuessType>
|
|
36
|
+
struct traits<SolveWithGuess<Decomposition, RhsType, GuessType> > : traits<Solve<Decomposition, RhsType> > {};
|
|
31
37
|
|
|
32
|
-
|
|
33
|
-
struct traits<SolveWithGuess<Decomposition, RhsType, GuessType> >
|
|
34
|
-
: traits<Solve<Decomposition,RhsType> >
|
|
35
|
-
{};
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
38
|
+
} // namespace internal
|
|
39
39
|
|
|
40
|
-
template<typename Decomposition, typename RhsType, typename GuessType>
|
|
41
|
-
class SolveWithGuess : public internal::generic_xpr_base<SolveWithGuess<Decomposition,RhsType,GuessType>, MatrixXpr,
|
|
42
|
-
{
|
|
43
|
-
public:
|
|
40
|
+
template <typename Decomposition, typename RhsType, typename GuessType>
|
|
41
|
+
class SolveWithGuess : public internal::generic_xpr_base<SolveWithGuess<Decomposition, RhsType, GuessType>, MatrixXpr,
|
|
42
|
+
typename internal::traits<RhsType>::StorageKind>::type {
|
|
43
|
+
public:
|
|
44
44
|
typedef typename internal::traits<SolveWithGuess>::Scalar Scalar;
|
|
45
45
|
typedef typename internal::traits<SolveWithGuess>::PlainObject PlainObject;
|
|
46
|
-
typedef typename internal::generic_xpr_base<SolveWithGuess<Decomposition,RhsType,GuessType>, MatrixXpr,
|
|
46
|
+
typedef typename internal::generic_xpr_base<SolveWithGuess<Decomposition, RhsType, GuessType>, MatrixXpr,
|
|
47
|
+
typename internal::traits<RhsType>::StorageKind>::type Base;
|
|
47
48
|
typedef typename internal::ref_selector<SolveWithGuess>::type Nested;
|
|
48
49
|
|
|
49
50
|
SolveWithGuess(const Decomposition &dec, const RhsType &rhs, const GuessType &guess)
|
|
50
|
-
|
|
51
|
-
{}
|
|
51
|
+
: m_dec(dec), m_rhs(rhs), m_guess(guess) {}
|
|
52
52
|
|
|
53
|
-
EIGEN_DEVICE_FUNC
|
|
54
|
-
Index
|
|
55
|
-
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
56
|
-
Index cols() const EIGEN_NOEXCEPT { return m_rhs.cols(); }
|
|
53
|
+
EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return m_dec.cols(); }
|
|
54
|
+
EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return m_rhs.cols(); }
|
|
57
55
|
|
|
58
|
-
EIGEN_DEVICE_FUNC const Decomposition&
|
|
59
|
-
EIGEN_DEVICE_FUNC const RhsType&
|
|
60
|
-
EIGEN_DEVICE_FUNC const GuessType&
|
|
56
|
+
EIGEN_DEVICE_FUNC const Decomposition &dec() const { return m_dec; }
|
|
57
|
+
EIGEN_DEVICE_FUNC const RhsType &rhs() const { return m_rhs; }
|
|
58
|
+
EIGEN_DEVICE_FUNC const GuessType &guess() const { return m_guess; }
|
|
61
59
|
|
|
62
|
-
protected:
|
|
60
|
+
protected:
|
|
63
61
|
const Decomposition &m_dec;
|
|
64
|
-
const RhsType
|
|
65
|
-
const GuessType
|
|
62
|
+
const RhsType &m_rhs;
|
|
63
|
+
const GuessType &m_guess;
|
|
66
64
|
|
|
67
|
-
private:
|
|
65
|
+
private:
|
|
68
66
|
Scalar coeff(Index row, Index col) const;
|
|
69
67
|
Scalar coeff(Index i) const;
|
|
70
68
|
};
|
|
@@ -72,46 +70,42 @@ private:
|
|
|
72
70
|
namespace internal {
|
|
73
71
|
|
|
74
72
|
// Evaluator of SolveWithGuess -> eval into a temporary
|
|
75
|
-
template<typename Decomposition, typename RhsType, typename GuessType>
|
|
76
|
-
struct evaluator<SolveWithGuess<Decomposition,RhsType, GuessType> >
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
typedef SolveWithGuess<Decomposition,RhsType,GuessType> SolveType;
|
|
73
|
+
template <typename Decomposition, typename RhsType, typename GuessType>
|
|
74
|
+
struct evaluator<SolveWithGuess<Decomposition, RhsType, GuessType> >
|
|
75
|
+
: public evaluator<typename SolveWithGuess<Decomposition, RhsType, GuessType>::PlainObject> {
|
|
76
|
+
typedef SolveWithGuess<Decomposition, RhsType, GuessType> SolveType;
|
|
80
77
|
typedef typename SolveType::PlainObject PlainObject;
|
|
81
78
|
typedef evaluator<PlainObject> Base;
|
|
82
79
|
|
|
83
|
-
evaluator(const SolveType& solve)
|
|
84
|
-
|
|
85
|
-
{
|
|
86
|
-
::new (static_cast<Base*>(this)) Base(m_result);
|
|
80
|
+
evaluator(const SolveType &solve) : m_result(solve.rows(), solve.cols()) {
|
|
81
|
+
internal::construct_at<Base>(this, m_result);
|
|
87
82
|
m_result = solve.guess();
|
|
88
83
|
solve.dec()._solve_with_guess_impl(solve.rhs(), m_result);
|
|
89
84
|
}
|
|
90
85
|
|
|
91
|
-
protected:
|
|
86
|
+
protected:
|
|
92
87
|
PlainObject m_result;
|
|
93
88
|
};
|
|
94
89
|
|
|
95
90
|
// Specialization for "dst = dec.solveWithGuess(rhs)"
|
|
96
|
-
// NOTE we need to specialize it for Dense2Dense to avoid ambiguous specialization error and a Sparse2Sparse
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
{
|
|
91
|
+
// NOTE we need to specialize it for Dense2Dense to avoid ambiguous specialization error and a Sparse2Sparse
|
|
92
|
+
// specialization must exist somewhere
|
|
93
|
+
template <typename DstXprType, typename DecType, typename RhsType, typename GuessType, typename Scalar>
|
|
94
|
+
struct Assignment<DstXprType, SolveWithGuess<DecType, RhsType, GuessType>, internal::assign_op<Scalar, Scalar>,
|
|
95
|
+
Dense2Dense> {
|
|
96
|
+
typedef SolveWithGuess<DecType, RhsType, GuessType> SrcXprType;
|
|
97
|
+
static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar, Scalar> &) {
|
|
103
98
|
Index dstRows = src.rows();
|
|
104
99
|
Index dstCols = src.cols();
|
|
105
|
-
if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
|
|
106
|
-
dst.resize(dstRows, dstCols);
|
|
100
|
+
if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
|
|
107
101
|
|
|
108
102
|
dst = src.guess();
|
|
109
|
-
src.dec()._solve_with_guess_impl(src.rhs(), dst/*, src.guess()*/);
|
|
103
|
+
src.dec()._solve_with_guess_impl(src.rhs(), dst /*, src.guess()*/);
|
|
110
104
|
}
|
|
111
105
|
};
|
|
112
106
|
|
|
113
|
-
}
|
|
107
|
+
} // end namespace internal
|
|
114
108
|
|
|
115
|
-
}
|
|
109
|
+
} // end namespace Eigen
|
|
116
110
|
|
|
117
|
-
#endif
|
|
111
|
+
#endif // EIGEN_SOLVEWITHGUESS_H
|