@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,159 +10,158 @@
|
|
|
10
10
|
#ifndef EIGEN_SOLVERBASE_H
|
|
11
11
|
#define EIGEN_SOLVERBASE_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 Derived>
|
|
20
|
+
template <typename Derived>
|
|
18
21
|
struct solve_assertion {
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
template <bool Transpose_, typename Rhs>
|
|
23
|
+
static void run(const Derived& solver, const Rhs& b) {
|
|
24
|
+
solver.template _check_solve_assertion<Transpose_>(b);
|
|
25
|
+
}
|
|
21
26
|
};
|
|
22
27
|
|
|
23
|
-
template<typename Derived>
|
|
24
|
-
struct solve_assertion<Transpose<Derived
|
|
25
|
-
|
|
26
|
-
typedef Transpose<Derived> type;
|
|
28
|
+
template <typename Derived>
|
|
29
|
+
struct solve_assertion<Transpose<Derived>> {
|
|
30
|
+
typedef Transpose<Derived> type;
|
|
27
31
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
32
|
+
template <bool Transpose_, typename Rhs>
|
|
33
|
+
static void run(const type& transpose, const Rhs& b) {
|
|
34
|
+
internal::solve_assertion<internal::remove_all_t<Derived>>::template run<true>(transpose.nestedExpression(), b);
|
|
35
|
+
}
|
|
33
36
|
};
|
|
34
37
|
|
|
35
|
-
template<typename Scalar, typename Derived>
|
|
36
|
-
struct solve_assertion<CwiseUnaryOp<Eigen::internal::scalar_conjugate_op<Scalar>, const Transpose<Derived
|
|
37
|
-
|
|
38
|
-
typedef CwiseUnaryOp<Eigen::internal::scalar_conjugate_op<Scalar>, const Transpose<Derived> > type;
|
|
38
|
+
template <typename Scalar, typename Derived>
|
|
39
|
+
struct solve_assertion<CwiseUnaryOp<Eigen::internal::scalar_conjugate_op<Scalar>, const Transpose<Derived>>> {
|
|
40
|
+
typedef CwiseUnaryOp<Eigen::internal::scalar_conjugate_op<Scalar>, const Transpose<Derived>> type;
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
template <bool Transpose_, typename Rhs>
|
|
43
|
+
static void run(const type& adjoint, const Rhs& b) {
|
|
44
|
+
internal::solve_assertion<internal::remove_all_t<Transpose<Derived>>>::template run<true>(
|
|
45
|
+
adjoint.nestedExpression(), b);
|
|
46
|
+
}
|
|
45
47
|
};
|
|
46
|
-
}
|
|
48
|
+
} // end namespace internal
|
|
47
49
|
|
|
48
50
|
/** \class SolverBase
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
51
|
+
* \brief A base class for matrix decomposition and solvers
|
|
52
|
+
*
|
|
53
|
+
* \tparam Derived the actual type of the decomposition/solver.
|
|
54
|
+
*
|
|
55
|
+
* Any matrix decomposition inheriting this base class provide the following API:
|
|
56
|
+
*
|
|
57
|
+
* \code
|
|
58
|
+
* MatrixType A, b, x;
|
|
59
|
+
* DecompositionType dec(A);
|
|
60
|
+
* x = dec.solve(b); // solve A * x = b
|
|
61
|
+
* x = dec.transpose().solve(b); // solve A^T * x = b
|
|
62
|
+
* x = dec.adjoint().solve(b); // solve A' * x = b
|
|
63
|
+
* \endcode
|
|
64
|
+
*
|
|
65
|
+
* \warning Currently, any other usage of transpose() and adjoint() are not supported and will produce compilation
|
|
66
|
+
* errors.
|
|
67
|
+
*
|
|
68
|
+
* \sa class PartialPivLU, class FullPivLU, class HouseholderQR, class ColPivHouseholderQR, class FullPivHouseholderQR,
|
|
69
|
+
* class CompleteOrthogonalDecomposition, class LLT, class LDLT, class SVDBase
|
|
70
|
+
*/
|
|
71
|
+
template <typename Derived>
|
|
72
|
+
class SolverBase : public EigenBase<Derived> {
|
|
73
|
+
public:
|
|
74
|
+
typedef EigenBase<Derived> Base;
|
|
75
|
+
typedef typename internal::traits<Derived>::Scalar Scalar;
|
|
76
|
+
typedef Scalar CoeffReturnType;
|
|
77
|
+
|
|
78
|
+
template <typename Derived_>
|
|
79
|
+
friend struct internal::solve_assertion;
|
|
80
|
+
|
|
81
|
+
ComputationInfo info() const {
|
|
82
|
+
// CRTP static dispatch: Calls the 'info()' method on the derived class.
|
|
83
|
+
// Derived must implement 'ComputationInfo info() const'.
|
|
84
|
+
// If not implemented, name lookup falls back to this base method, causing
|
|
85
|
+
// infinite recursion (detectable by -Winfinite-recursion).
|
|
86
|
+
return derived().info();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
enum {
|
|
90
|
+
RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
|
|
91
|
+
ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
|
|
92
|
+
SizeAtCompileTime = (internal::size_of_xpr_at_compile_time<Derived>::ret),
|
|
93
|
+
MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
|
|
94
|
+
MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
|
|
95
|
+
MaxSizeAtCompileTime = internal::size_at_compile_time(internal::traits<Derived>::MaxRowsAtCompileTime,
|
|
96
|
+
internal::traits<Derived>::MaxColsAtCompileTime),
|
|
97
|
+
IsVectorAtCompileTime =
|
|
98
|
+
internal::traits<Derived>::MaxRowsAtCompileTime == 1 || internal::traits<Derived>::MaxColsAtCompileTime == 1,
|
|
99
|
+
NumDimensions = int(MaxSizeAtCompileTime) == 1 ? 0
|
|
100
|
+
: bool(IsVectorAtCompileTime) ? 1
|
|
101
|
+
: 2
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/** Default constructor */
|
|
105
|
+
SolverBase() {}
|
|
106
|
+
|
|
107
|
+
~SolverBase() {}
|
|
108
|
+
|
|
109
|
+
using Base::derived;
|
|
110
|
+
|
|
111
|
+
/** \returns an expression of the solution x of \f$ A x = b \f$ using the current decomposition of A.
|
|
112
|
+
*/
|
|
113
|
+
template <typename Rhs>
|
|
114
|
+
inline const Solve<Derived, Rhs> solve(const MatrixBase<Rhs>& b) const {
|
|
115
|
+
internal::solve_assertion<internal::remove_all_t<Derived>>::template run<false>(derived(), b);
|
|
116
|
+
return Solve<Derived, Rhs>(derived(), b.derived());
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** \internal the return type of transpose() */
|
|
120
|
+
typedef Transpose<const Derived> ConstTransposeReturnType;
|
|
121
|
+
/** \returns an expression of the transposed of the factored matrix.
|
|
122
|
+
*
|
|
123
|
+
* A typical usage is to solve for the transposed problem A^T x = b:
|
|
124
|
+
* \code x = dec.transpose().solve(b); \endcode
|
|
125
|
+
*
|
|
126
|
+
* \sa adjoint(), solve()
|
|
127
|
+
*/
|
|
128
|
+
inline const ConstTransposeReturnType transpose() const { return ConstTransposeReturnType(derived()); }
|
|
129
|
+
|
|
130
|
+
/** \internal the return type of adjoint() */
|
|
131
|
+
typedef std::conditional_t<NumTraits<Scalar>::IsComplex,
|
|
132
|
+
CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, const ConstTransposeReturnType>,
|
|
133
|
+
const ConstTransposeReturnType>
|
|
134
|
+
AdjointReturnType;
|
|
135
|
+
/** \returns an expression of the adjoint of the factored matrix
|
|
136
|
+
*
|
|
137
|
+
* A typical usage is to solve for the adjoint problem A' x = b:
|
|
138
|
+
* \code x = dec.adjoint().solve(b); \endcode
|
|
139
|
+
*
|
|
140
|
+
* For real scalar types, this function is equivalent to transpose().
|
|
141
|
+
*
|
|
142
|
+
* \sa transpose(), solve()
|
|
143
|
+
*/
|
|
144
|
+
inline const AdjointReturnType adjoint() const { return AdjointReturnType(derived().transpose()); }
|
|
145
|
+
|
|
146
|
+
protected:
|
|
147
|
+
template <bool Transpose_, typename Rhs>
|
|
148
|
+
void _check_solve_assertion(const Rhs& b) const {
|
|
149
|
+
EIGEN_ONLY_USED_FOR_DEBUG(b);
|
|
150
|
+
eigen_assert(derived().m_isInitialized && "Solver is not initialized.");
|
|
151
|
+
eigen_assert((Transpose_ ? derived().cols() : derived().rows()) == b.rows() &&
|
|
152
|
+
"SolverBase::solve(): invalid number of rows of the right hand side matrix b");
|
|
153
|
+
}
|
|
153
154
|
};
|
|
154
155
|
|
|
155
156
|
namespace internal {
|
|
156
157
|
|
|
157
|
-
template<typename Derived>
|
|
158
|
-
struct generic_xpr_base<Derived, MatrixXpr, SolverStorage>
|
|
159
|
-
{
|
|
158
|
+
template <typename Derived>
|
|
159
|
+
struct generic_xpr_base<Derived, MatrixXpr, SolverStorage> {
|
|
160
160
|
typedef SolverBase<Derived> type;
|
|
161
|
-
|
|
162
161
|
};
|
|
163
162
|
|
|
164
|
-
}
|
|
163
|
+
} // end namespace internal
|
|
165
164
|
|
|
166
|
-
}
|
|
165
|
+
} // end namespace Eigen
|
|
167
166
|
|
|
168
|
-
#endif
|
|
167
|
+
#endif // EIGEN_SOLVERBASE_H
|
|
@@ -10,119 +10,95 @@
|
|
|
10
10
|
#ifndef EIGEN_STABLENORM_H
|
|
11
11
|
#define EIGEN_STABLENORM_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
|
-
template<typename ExpressionType, typename Scalar>
|
|
18
|
-
inline void stable_norm_kernel(const ExpressionType& bl, Scalar& ssq, Scalar& scale, Scalar& invScale)
|
|
19
|
-
{
|
|
20
|
+
template <typename ExpressionType, typename Scalar>
|
|
21
|
+
inline void stable_norm_kernel(const ExpressionType& bl, Scalar& ssq, Scalar& scale, Scalar& invScale) {
|
|
20
22
|
Scalar maxCoeff = bl.cwiseAbs().maxCoeff();
|
|
21
|
-
|
|
22
|
-
if(maxCoeff>scale)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if(tmp > NumTraits<Scalar>::highest())
|
|
27
|
-
{
|
|
23
|
+
|
|
24
|
+
if (maxCoeff > scale) {
|
|
25
|
+
ssq = ssq * numext::abs2(scale / maxCoeff);
|
|
26
|
+
Scalar tmp = Scalar(1) / maxCoeff;
|
|
27
|
+
if (tmp > NumTraits<Scalar>::highest()) {
|
|
28
28
|
invScale = NumTraits<Scalar>::highest();
|
|
29
|
-
scale = Scalar(1)/invScale;
|
|
30
|
-
}
|
|
31
|
-
else if(maxCoeff>NumTraits<Scalar>::highest()) // we got a INF
|
|
29
|
+
scale = Scalar(1) / invScale;
|
|
30
|
+
} else if (maxCoeff > NumTraits<Scalar>::highest()) // we got a INF
|
|
32
31
|
{
|
|
33
32
|
invScale = Scalar(1);
|
|
34
33
|
scale = maxCoeff;
|
|
35
|
-
}
|
|
36
|
-
else
|
|
37
|
-
{
|
|
34
|
+
} else {
|
|
38
35
|
scale = maxCoeff;
|
|
39
36
|
invScale = tmp;
|
|
40
37
|
}
|
|
41
|
-
}
|
|
42
|
-
else if(maxCoeff!=maxCoeff) // we got a NaN
|
|
38
|
+
} else if (maxCoeff != maxCoeff) // we got a NaN
|
|
43
39
|
{
|
|
44
40
|
scale = maxCoeff;
|
|
45
41
|
}
|
|
46
|
-
|
|
42
|
+
|
|
47
43
|
// TODO if the maxCoeff is much much smaller than the current scale,
|
|
48
44
|
// then we can neglect this sub vector
|
|
49
|
-
if(scale>Scalar(0))
|
|
50
|
-
ssq += (bl*invScale).squaredNorm();
|
|
45
|
+
if (scale > Scalar(0)) // if scale==0, then bl is 0
|
|
46
|
+
ssq += (bl * invScale).squaredNorm();
|
|
51
47
|
}
|
|
52
48
|
|
|
53
|
-
template<typename VectorType, typename RealScalar>
|
|
54
|
-
void stable_norm_impl_inner_step(const VectorType
|
|
55
|
-
{
|
|
56
|
-
typedef typename VectorType::Scalar Scalar;
|
|
49
|
+
template <typename VectorType, typename RealScalar>
|
|
50
|
+
void stable_norm_impl_inner_step(const VectorType& vec, RealScalar& ssq, RealScalar& scale, RealScalar& invScale) {
|
|
57
51
|
const Index blockSize = 4096;
|
|
58
|
-
|
|
59
|
-
typedef typename internal::nested_eval<VectorType,2>::type VectorTypeCopy;
|
|
60
|
-
typedef typename internal::remove_all<VectorTypeCopy>::type VectorTypeCopyClean;
|
|
61
|
-
const VectorTypeCopy copy(vec);
|
|
62
|
-
|
|
63
|
-
enum {
|
|
64
|
-
CanAlign = ( (int(VectorTypeCopyClean::Flags)&DirectAccessBit)
|
|
65
|
-
|| (int(internal::evaluator<VectorTypeCopyClean>::Alignment)>0) // FIXME Alignment)>0 might not be enough
|
|
66
|
-
) && (blockSize*sizeof(Scalar)*2<EIGEN_STACK_ALLOCATION_LIMIT)
|
|
67
|
-
&& (EIGEN_MAX_STATIC_ALIGN_BYTES>0) // if we cannot allocate on the stack, then let's not bother about this optimization
|
|
68
|
-
};
|
|
69
|
-
typedef typename internal::conditional<CanAlign, Ref<const Matrix<Scalar,Dynamic,1,0,blockSize,1>, internal::evaluator<VectorTypeCopyClean>::Alignment>,
|
|
70
|
-
typename VectorTypeCopyClean::ConstSegmentReturnType>::type SegmentWrapper;
|
|
52
|
+
|
|
71
53
|
Index n = vec.size();
|
|
72
|
-
|
|
73
|
-
Index
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
internal::stable_norm_kernel(
|
|
54
|
+
Index blockEnd = numext::round_down(n, blockSize);
|
|
55
|
+
for (Index i = 0; i < blockEnd; i += blockSize) {
|
|
56
|
+
internal::stable_norm_kernel(vec.template segment<blockSize>(i), ssq, scale, invScale);
|
|
57
|
+
}
|
|
58
|
+
if (n > blockEnd) {
|
|
59
|
+
internal::stable_norm_kernel(vec.tail(n - blockEnd), ssq, scale, invScale);
|
|
60
|
+
}
|
|
78
61
|
}
|
|
79
62
|
|
|
80
|
-
template<typename VectorType>
|
|
81
|
-
typename VectorType::RealScalar
|
|
82
|
-
|
|
83
|
-
{
|
|
84
|
-
using std::sqrt;
|
|
63
|
+
template <typename VectorType>
|
|
64
|
+
typename VectorType::RealScalar stable_norm_impl(const VectorType& vec,
|
|
65
|
+
std::enable_if_t<VectorType::IsVectorAtCompileTime>* = 0) {
|
|
85
66
|
using std::abs;
|
|
67
|
+
using std::sqrt;
|
|
86
68
|
|
|
87
69
|
Index n = vec.size();
|
|
88
|
-
|
|
89
|
-
if(n==1)
|
|
90
|
-
return abs(vec.coeff(0));
|
|
70
|
+
if (EIGEN_PREDICT_FALSE(n == 1)) return abs(vec.coeff(0));
|
|
91
71
|
|
|
92
72
|
typedef typename VectorType::RealScalar RealScalar;
|
|
93
73
|
RealScalar scale(0);
|
|
94
74
|
RealScalar invScale(1);
|
|
95
|
-
RealScalar ssq(0);
|
|
75
|
+
RealScalar ssq(0); // sum of squares
|
|
96
76
|
|
|
97
77
|
stable_norm_impl_inner_step(vec, ssq, scale, invScale);
|
|
98
|
-
|
|
78
|
+
|
|
99
79
|
return scale * sqrt(ssq);
|
|
100
80
|
}
|
|
101
81
|
|
|
102
|
-
template<typename MatrixType>
|
|
103
|
-
typename MatrixType::RealScalar
|
|
104
|
-
|
|
105
|
-
{
|
|
82
|
+
template <typename MatrixType>
|
|
83
|
+
typename MatrixType::RealScalar stable_norm_impl(const MatrixType& mat,
|
|
84
|
+
std::enable_if_t<!MatrixType::IsVectorAtCompileTime>* = 0) {
|
|
106
85
|
using std::sqrt;
|
|
107
86
|
|
|
108
87
|
typedef typename MatrixType::RealScalar RealScalar;
|
|
109
88
|
RealScalar scale(0);
|
|
110
89
|
RealScalar invScale(1);
|
|
111
|
-
RealScalar ssq(0);
|
|
90
|
+
RealScalar ssq(0); // sum of squares
|
|
112
91
|
|
|
113
|
-
for(Index j=0; j<mat.outerSize(); ++j)
|
|
114
|
-
stable_norm_impl_inner_step(mat.innerVector(j), ssq, scale, invScale);
|
|
92
|
+
for (Index j = 0; j < mat.outerSize(); ++j) stable_norm_impl_inner_step(mat.innerVector(j), ssq, scale, invScale);
|
|
115
93
|
return scale * sqrt(ssq);
|
|
116
94
|
}
|
|
117
95
|
|
|
118
|
-
template<typename Derived>
|
|
119
|
-
inline typename NumTraits<typename traits<Derived>::Scalar>::Real
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
typedef typename Derived::RealScalar RealScalar;
|
|
96
|
+
template <typename Derived>
|
|
97
|
+
inline typename NumTraits<typename traits<Derived>::Scalar>::Real blueNorm_impl(const EigenBase<Derived>& _vec) {
|
|
98
|
+
typedef typename Derived::RealScalar RealScalar;
|
|
99
|
+
using std::abs;
|
|
123
100
|
using std::pow;
|
|
124
101
|
using std::sqrt;
|
|
125
|
-
using std::abs;
|
|
126
102
|
|
|
127
103
|
// This program calculates the machine-dependent constants
|
|
128
104
|
// bl, b2, slm, s2m, relerr overfl
|
|
@@ -133,15 +109,19 @@ blueNorm_impl(const EigenBase<Derived>& _vec)
|
|
|
133
109
|
// are used. For any specific computer, each of the assignment
|
|
134
110
|
// statements can be replaced
|
|
135
111
|
static const int ibeta = std::numeric_limits<RealScalar>::radix; // base for floating-point numbers
|
|
136
|
-
static const int it
|
|
137
|
-
static const int iemin = NumTraits<RealScalar>::min_exponent();
|
|
138
|
-
static const int iemax = NumTraits<RealScalar>::max_exponent();
|
|
139
|
-
static const RealScalar rbig
|
|
140
|
-
static const RealScalar b1
|
|
141
|
-
|
|
142
|
-
static const RealScalar
|
|
143
|
-
|
|
144
|
-
static const RealScalar
|
|
112
|
+
static const int it = NumTraits<RealScalar>::digits(); // number of base-beta digits in mantissa
|
|
113
|
+
static const int iemin = NumTraits<RealScalar>::min_exponent(); // minimum exponent
|
|
114
|
+
static const int iemax = NumTraits<RealScalar>::max_exponent(); // maximum exponent
|
|
115
|
+
static const RealScalar rbig = NumTraits<RealScalar>::highest(); // largest floating-point number
|
|
116
|
+
static const RealScalar b1 =
|
|
117
|
+
RealScalar(pow(RealScalar(ibeta), RealScalar(-((1 - iemin) / 2)))); // lower boundary of midrange
|
|
118
|
+
static const RealScalar b2 =
|
|
119
|
+
RealScalar(pow(RealScalar(ibeta), RealScalar((iemax + 1 - it) / 2))); // upper boundary of midrange
|
|
120
|
+
static const RealScalar s1m =
|
|
121
|
+
RealScalar(pow(RealScalar(ibeta), RealScalar((2 - iemin) / 2))); // scaling factor for lower range
|
|
122
|
+
static const RealScalar s2m =
|
|
123
|
+
RealScalar(pow(RealScalar(ibeta), RealScalar(-((iemax + it) / 2)))); // scaling factor for upper range
|
|
124
|
+
static const RealScalar eps = RealScalar(pow(double(ibeta), 1 - it));
|
|
145
125
|
static const RealScalar relerr = sqrt(eps); // tolerance for neglecting asml
|
|
146
126
|
|
|
147
127
|
const Derived& vec(_vec.derived());
|
|
@@ -151,101 +131,87 @@ blueNorm_impl(const EigenBase<Derived>& _vec)
|
|
|
151
131
|
RealScalar amed = RealScalar(0);
|
|
152
132
|
RealScalar abig = RealScalar(0);
|
|
153
133
|
|
|
154
|
-
for(Index j=0; j<vec.outerSize(); ++j)
|
|
155
|
-
|
|
156
|
-
for(typename Derived::InnerIterator iter(vec, j); iter; ++iter)
|
|
157
|
-
{
|
|
134
|
+
for (Index j = 0; j < vec.outerSize(); ++j) {
|
|
135
|
+
for (typename Derived::InnerIterator iter(vec, j); iter; ++iter) {
|
|
158
136
|
RealScalar ax = abs(iter.value());
|
|
159
|
-
if(ax > ab2)
|
|
160
|
-
|
|
161
|
-
else
|
|
137
|
+
if (ax > ab2)
|
|
138
|
+
abig += numext::abs2(ax * s2m);
|
|
139
|
+
else if (ax < b1)
|
|
140
|
+
asml += numext::abs2(ax * s1m);
|
|
141
|
+
else
|
|
142
|
+
amed += numext::abs2(ax);
|
|
162
143
|
}
|
|
163
144
|
}
|
|
164
|
-
if(amed!=amed)
|
|
165
|
-
|
|
166
|
-
if(abig > RealScalar(0))
|
|
167
|
-
{
|
|
145
|
+
if (amed != amed) return amed; // we got a NaN
|
|
146
|
+
if (abig > RealScalar(0)) {
|
|
168
147
|
abig = sqrt(abig);
|
|
169
|
-
if(abig > rbig)
|
|
170
|
-
return abig;
|
|
171
|
-
if(amed > RealScalar(0))
|
|
172
|
-
|
|
173
|
-
abig = abig/s2m;
|
|
148
|
+
if (abig > rbig) // overflow, or *this contains INF values
|
|
149
|
+
return abig; // return INF
|
|
150
|
+
if (amed > RealScalar(0)) {
|
|
151
|
+
abig = abig / s2m;
|
|
174
152
|
amed = sqrt(amed);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
else if(asml > RealScalar(0))
|
|
180
|
-
{
|
|
181
|
-
if (amed > RealScalar(0))
|
|
182
|
-
{
|
|
153
|
+
} else
|
|
154
|
+
return abig / s2m;
|
|
155
|
+
} else if (asml > RealScalar(0)) {
|
|
156
|
+
if (amed > RealScalar(0)) {
|
|
183
157
|
abig = sqrt(amed);
|
|
184
158
|
amed = sqrt(asml) / s1m;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
else
|
|
159
|
+
} else
|
|
160
|
+
return sqrt(asml) / s1m;
|
|
161
|
+
} else
|
|
190
162
|
return sqrt(amed);
|
|
191
163
|
asml = numext::mini(abig, amed);
|
|
192
164
|
abig = numext::maxi(abig, amed);
|
|
193
|
-
if(asml <= abig*relerr)
|
|
165
|
+
if (asml <= abig * relerr)
|
|
194
166
|
return abig;
|
|
195
167
|
else
|
|
196
|
-
return abig * sqrt(RealScalar(1) + numext::abs2(asml/abig));
|
|
168
|
+
return abig * sqrt(RealScalar(1) + numext::abs2(asml / abig));
|
|
197
169
|
}
|
|
198
170
|
|
|
199
|
-
}
|
|
171
|
+
} // end namespace internal
|
|
200
172
|
|
|
201
173
|
/** \returns the \em l2 norm of \c *this avoiding underflow and overflow.
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
template<typename Derived>
|
|
212
|
-
inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
|
|
213
|
-
MatrixBase<Derived>::stableNorm() const
|
|
214
|
-
{
|
|
174
|
+
* This version use a blockwise two passes algorithm:
|
|
175
|
+
* 1 - find the absolute largest coefficient \c s
|
|
176
|
+
* 2 - compute \f$ s \Vert \frac{*this}{s} \Vert \f$ in a standard way
|
|
177
|
+
*
|
|
178
|
+
* For architecture/scalar types supporting vectorization, this version
|
|
179
|
+
* is faster than blueNorm(). Otherwise the blueNorm() is much faster.
|
|
180
|
+
*
|
|
181
|
+
* \sa norm(), blueNorm(), hypotNorm()
|
|
182
|
+
*/
|
|
183
|
+
template <typename Derived>
|
|
184
|
+
inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::stableNorm() const {
|
|
215
185
|
return internal::stable_norm_impl(derived());
|
|
216
186
|
}
|
|
217
187
|
|
|
218
188
|
/** \returns the \em l2 norm of \c *this using the Blue's algorithm.
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
template<typename Derived>
|
|
228
|
-
inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
|
|
229
|
-
MatrixBase<Derived>::blueNorm() const
|
|
230
|
-
{
|
|
189
|
+
* A Portable Fortran Program to Find the Euclidean Norm of a Vector,
|
|
190
|
+
* ACM TOMS, Vol 4, Issue 1, 1978.
|
|
191
|
+
*
|
|
192
|
+
* For architecture/scalar types without vectorization, this version
|
|
193
|
+
* is much faster than stableNorm(). Otherwise the stableNorm() is faster.
|
|
194
|
+
*
|
|
195
|
+
* \sa norm(), stableNorm(), hypotNorm()
|
|
196
|
+
*/
|
|
197
|
+
template <typename Derived>
|
|
198
|
+
inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::blueNorm() const {
|
|
231
199
|
return internal::blueNorm_impl(*this);
|
|
232
200
|
}
|
|
233
201
|
|
|
234
|
-
/** \returns the \em l2 norm of \c *this avoiding
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
template<typename Derived>
|
|
240
|
-
inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
if(size()==1)
|
|
244
|
-
return numext::abs(coeff(0,0));
|
|
202
|
+
/** \returns the \em l2 norm of \c *this avoiding underflow and overflow.
|
|
203
|
+
* This version use a concatenation of hypot() calls, and it is very slow.
|
|
204
|
+
*
|
|
205
|
+
* \sa norm(), stableNorm()
|
|
206
|
+
*/
|
|
207
|
+
template <typename Derived>
|
|
208
|
+
inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::hypotNorm() const {
|
|
209
|
+
if (size() == 1)
|
|
210
|
+
return numext::abs(coeff(0, 0));
|
|
245
211
|
else
|
|
246
212
|
return this->cwiseAbs().redux(internal::scalar_hypot_op<RealScalar>());
|
|
247
213
|
}
|
|
248
214
|
|
|
249
|
-
}
|
|
215
|
+
} // end namespace Eigen
|
|
250
216
|
|
|
251
|
-
#endif
|
|
217
|
+
#endif // EIGEN_STABLENORM_H
|