@smake/eigen 1.0.2 → 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 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- 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 +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -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 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- 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 +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- 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 +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- 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 +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- 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 +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- 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 +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- 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 +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- 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 -46
- 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 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- 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 +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- 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 +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- 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 +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- 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 +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- 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 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- 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 +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- 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 +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- 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 +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- 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 +371 -414
- 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 +146 -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 +814 -618
- 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 +273 -255
- 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 +90 -101
- 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 +125 -133
- 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 +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- 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 -732
- 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 +480 -380
- 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 +9976 -16182
- 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.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- 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/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- 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 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -10,50 +10,44 @@
|
|
|
10
10
|
#ifndef EIGEN_SPARSETRIANGULARSOLVER_H
|
|
11
11
|
#define EIGEN_SPARSETRIANGULARSOLVER_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 Lhs, typename Rhs, int Mode,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
: -1,
|
|
23
|
-
int StorageOrder = int(traits<Lhs>::Flags) & RowMajorBit>
|
|
20
|
+
template <typename Lhs, typename Rhs, int Mode,
|
|
21
|
+
int UpLo = (Mode & Lower) ? Lower
|
|
22
|
+
: (Mode & Upper) ? Upper
|
|
23
|
+
: -1,
|
|
24
|
+
int StorageOrder = int(traits<Lhs>::Flags) & RowMajorBit>
|
|
24
25
|
struct sparse_solve_triangular_selector;
|
|
25
26
|
|
|
26
27
|
// forward substitution, row-major
|
|
27
|
-
template<typename Lhs, typename Rhs, int Mode>
|
|
28
|
-
struct sparse_solve_triangular_selector<Lhs,Rhs,Mode,Lower,RowMajor>
|
|
29
|
-
{
|
|
28
|
+
template <typename Lhs, typename Rhs, int Mode>
|
|
29
|
+
struct sparse_solve_triangular_selector<Lhs, Rhs, Mode, Lower, RowMajor> {
|
|
30
30
|
typedef typename Rhs::Scalar Scalar;
|
|
31
31
|
typedef evaluator<Lhs> LhsEval;
|
|
32
32
|
typedef typename evaluator<Lhs>::InnerIterator LhsIterator;
|
|
33
|
-
static void run(const Lhs& lhs, Rhs& other)
|
|
34
|
-
{
|
|
33
|
+
static void run(const Lhs& lhs, Rhs& other) {
|
|
35
34
|
LhsEval lhsEval(lhs);
|
|
36
|
-
for(Index col=0
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{
|
|
40
|
-
Scalar tmp = other.coeff(i,col);
|
|
35
|
+
for (Index col = 0; col < other.cols(); ++col) {
|
|
36
|
+
for (Index i = 0; i < lhs.rows(); ++i) {
|
|
37
|
+
Scalar tmp = other.coeff(i, col);
|
|
41
38
|
Scalar lastVal(0);
|
|
42
39
|
Index lastIndex = 0;
|
|
43
|
-
for(LhsIterator it(lhsEval, i); it; ++it)
|
|
44
|
-
{
|
|
40
|
+
for (LhsIterator it(lhsEval, i); it; ++it) {
|
|
45
41
|
lastVal = it.value();
|
|
46
42
|
lastIndex = it.index();
|
|
47
|
-
if(lastIndex==i)
|
|
48
|
-
|
|
49
|
-
tmp -= lastVal * other.coeff(lastIndex,col);
|
|
43
|
+
if (lastIndex == i) break;
|
|
44
|
+
tmp = numext::madd<Scalar>(-lastVal, other.coeff(lastIndex, col), tmp);
|
|
50
45
|
}
|
|
51
46
|
if (Mode & UnitDiag)
|
|
52
|
-
other.coeffRef(i,col) = tmp;
|
|
53
|
-
else
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
other.coeffRef(i,col) = tmp/lastVal;
|
|
47
|
+
other.coeffRef(i, col) = tmp;
|
|
48
|
+
else {
|
|
49
|
+
eigen_assert(lastIndex == i);
|
|
50
|
+
other.coeffRef(i, col) = tmp / lastVal;
|
|
57
51
|
}
|
|
58
52
|
}
|
|
59
53
|
}
|
|
@@ -61,73 +55,61 @@ struct sparse_solve_triangular_selector<Lhs,Rhs,Mode,Lower,RowMajor>
|
|
|
61
55
|
};
|
|
62
56
|
|
|
63
57
|
// backward substitution, row-major
|
|
64
|
-
template<typename Lhs, typename Rhs, int Mode>
|
|
65
|
-
struct sparse_solve_triangular_selector<Lhs,Rhs,Mode,Upper,RowMajor>
|
|
66
|
-
{
|
|
58
|
+
template <typename Lhs, typename Rhs, int Mode>
|
|
59
|
+
struct sparse_solve_triangular_selector<Lhs, Rhs, Mode, Upper, RowMajor> {
|
|
67
60
|
typedef typename Rhs::Scalar Scalar;
|
|
68
61
|
typedef evaluator<Lhs> LhsEval;
|
|
69
62
|
typedef typename evaluator<Lhs>::InnerIterator LhsIterator;
|
|
70
|
-
static void run(const Lhs& lhs, Rhs& other)
|
|
71
|
-
{
|
|
63
|
+
static void run(const Lhs& lhs, Rhs& other) {
|
|
72
64
|
LhsEval lhsEval(lhs);
|
|
73
|
-
for(Index col=0
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
{
|
|
77
|
-
Scalar tmp = other.coeff(i,col);
|
|
65
|
+
for (Index col = 0; col < other.cols(); ++col) {
|
|
66
|
+
for (Index i = lhs.rows() - 1; i >= 0; --i) {
|
|
67
|
+
Scalar tmp = other.coeff(i, col);
|
|
78
68
|
Scalar l_ii(0);
|
|
79
69
|
LhsIterator it(lhsEval, i);
|
|
80
|
-
while(it && it.index()<i)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
{
|
|
84
|
-
eigen_assert(it && it.index()==i);
|
|
70
|
+
while (it && it.index() < i) ++it;
|
|
71
|
+
if (!(Mode & UnitDiag)) {
|
|
72
|
+
eigen_assert(it && it.index() == i);
|
|
85
73
|
l_ii = it.value();
|
|
86
74
|
++it;
|
|
87
|
-
}
|
|
88
|
-
else if (it && it.index() == i)
|
|
75
|
+
} else if (it && it.index() == i)
|
|
89
76
|
++it;
|
|
90
|
-
for(; it; ++it)
|
|
91
|
-
|
|
92
|
-
tmp -= it.value() * other.coeff(it.index(),col);
|
|
77
|
+
for (; it; ++it) {
|
|
78
|
+
tmp = numext::madd<Scalar>(-it.value(), other.coeff(it.index(), col), tmp);
|
|
93
79
|
}
|
|
94
80
|
|
|
95
|
-
if (Mode & UnitDiag)
|
|
96
|
-
|
|
81
|
+
if (Mode & UnitDiag)
|
|
82
|
+
other.coeffRef(i, col) = tmp;
|
|
83
|
+
else
|
|
84
|
+
other.coeffRef(i, col) = tmp / l_ii;
|
|
97
85
|
}
|
|
98
86
|
}
|
|
99
87
|
}
|
|
100
88
|
};
|
|
101
89
|
|
|
102
90
|
// forward substitution, col-major
|
|
103
|
-
template<typename Lhs, typename Rhs, int Mode>
|
|
104
|
-
struct sparse_solve_triangular_selector<Lhs,Rhs,Mode,Lower,ColMajor>
|
|
105
|
-
{
|
|
91
|
+
template <typename Lhs, typename Rhs, int Mode>
|
|
92
|
+
struct sparse_solve_triangular_selector<Lhs, Rhs, Mode, Lower, ColMajor> {
|
|
106
93
|
typedef typename Rhs::Scalar Scalar;
|
|
107
94
|
typedef evaluator<Lhs> LhsEval;
|
|
108
95
|
typedef typename evaluator<Lhs>::InnerIterator LhsIterator;
|
|
109
|
-
static void run(const Lhs& lhs, Rhs& other)
|
|
110
|
-
{
|
|
96
|
+
static void run(const Lhs& lhs, Rhs& other) {
|
|
111
97
|
LhsEval lhsEval(lhs);
|
|
112
|
-
for(Index col=0
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
Scalar& tmp = other.coeffRef(i,col);
|
|
117
|
-
if (tmp!=Scalar(0)) // optimization when other is actually sparse
|
|
98
|
+
for (Index col = 0; col < other.cols(); ++col) {
|
|
99
|
+
for (Index i = 0; i < lhs.cols(); ++i) {
|
|
100
|
+
Scalar& tmp = other.coeffRef(i, col);
|
|
101
|
+
if (!numext::is_exactly_zero(tmp)) // optimization when other is actually sparse
|
|
118
102
|
{
|
|
119
103
|
LhsIterator it(lhsEval, i);
|
|
120
|
-
while(it && it.index()<i)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
{
|
|
124
|
-
eigen_assert(it && it.index()==i);
|
|
104
|
+
while (it && it.index() < i) ++it;
|
|
105
|
+
if (!(Mode & UnitDiag)) {
|
|
106
|
+
eigen_assert(it && it.index() == i);
|
|
125
107
|
tmp /= it.value();
|
|
126
108
|
}
|
|
127
|
-
if (it && it.index()==i)
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
109
|
+
if (it && it.index() == i) ++it;
|
|
110
|
+
for (; it; ++it) {
|
|
111
|
+
other.coeffRef(it.index(), col) = numext::madd<Scalar>(-tmp, it.value(), other.coeffRef(it.index(), col));
|
|
112
|
+
}
|
|
131
113
|
}
|
|
132
114
|
}
|
|
133
115
|
}
|
|
@@ -135,61 +117,55 @@ struct sparse_solve_triangular_selector<Lhs,Rhs,Mode,Lower,ColMajor>
|
|
|
135
117
|
};
|
|
136
118
|
|
|
137
119
|
// backward substitution, col-major
|
|
138
|
-
template<typename Lhs, typename Rhs, int Mode>
|
|
139
|
-
struct sparse_solve_triangular_selector<Lhs,Rhs,Mode,Upper,ColMajor>
|
|
140
|
-
{
|
|
120
|
+
template <typename Lhs, typename Rhs, int Mode>
|
|
121
|
+
struct sparse_solve_triangular_selector<Lhs, Rhs, Mode, Upper, ColMajor> {
|
|
141
122
|
typedef typename Rhs::Scalar Scalar;
|
|
142
123
|
typedef evaluator<Lhs> LhsEval;
|
|
143
124
|
typedef typename evaluator<Lhs>::InnerIterator LhsIterator;
|
|
144
|
-
static void run(const Lhs& lhs, Rhs& other)
|
|
145
|
-
{
|
|
125
|
+
static void run(const Lhs& lhs, Rhs& other) {
|
|
146
126
|
LhsEval lhsEval(lhs);
|
|
147
|
-
for(Index col=0
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
Scalar& tmp = other.coeffRef(i,col);
|
|
152
|
-
if (tmp!=Scalar(0)) // optimization when other is actually sparse
|
|
127
|
+
for (Index col = 0; col < other.cols(); ++col) {
|
|
128
|
+
for (Index i = lhs.cols() - 1; i >= 0; --i) {
|
|
129
|
+
Scalar& tmp = other.coeffRef(i, col);
|
|
130
|
+
if (!numext::is_exactly_zero(tmp)) // optimization when other is actually sparse
|
|
153
131
|
{
|
|
154
|
-
if(!(Mode & UnitDiag))
|
|
155
|
-
{
|
|
132
|
+
if (!(Mode & UnitDiag)) {
|
|
156
133
|
// TODO replace this by a binary search. make sure the binary search is safe for partially sorted elements
|
|
157
134
|
LhsIterator it(lhsEval, i);
|
|
158
|
-
while(it && it.index()!=i)
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
other.coeffRef(i,col) /= it.value();
|
|
135
|
+
while (it && it.index() != i) ++it;
|
|
136
|
+
eigen_assert(it && it.index() == i);
|
|
137
|
+
other.coeffRef(i, col) /= it.value();
|
|
162
138
|
}
|
|
163
139
|
LhsIterator it(lhsEval, i);
|
|
164
|
-
for(; it && it.index()<i; ++it)
|
|
165
|
-
other.coeffRef(it.index(), col)
|
|
140
|
+
for (; it && it.index() < i; ++it) {
|
|
141
|
+
other.coeffRef(it.index(), col) = numext::madd<Scalar>(-tmp, it.value(), other.coeffRef(it.index(), col));
|
|
142
|
+
}
|
|
166
143
|
}
|
|
167
144
|
}
|
|
168
145
|
}
|
|
169
146
|
}
|
|
170
147
|
};
|
|
171
148
|
|
|
172
|
-
}
|
|
149
|
+
} // end namespace internal
|
|
173
150
|
|
|
174
151
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
175
152
|
|
|
176
|
-
template<typename ExpressionType,unsigned int Mode>
|
|
177
|
-
template<typename OtherDerived>
|
|
178
|
-
void TriangularViewImpl<ExpressionType,Mode,Sparse>::solveInPlace(MatrixBase<OtherDerived>& other) const
|
|
179
|
-
{
|
|
153
|
+
template <typename ExpressionType, unsigned int Mode>
|
|
154
|
+
template <typename OtherDerived>
|
|
155
|
+
void TriangularViewImpl<ExpressionType, Mode, Sparse>::solveInPlace(MatrixBase<OtherDerived>& other) const {
|
|
180
156
|
eigen_assert(derived().cols() == derived().rows() && derived().cols() == other.rows());
|
|
181
|
-
eigen_assert((!(Mode & ZeroDiag)) && bool(Mode & (Upper|Lower)));
|
|
157
|
+
eigen_assert((!(Mode & ZeroDiag)) && bool(Mode & (Upper | Lower)));
|
|
182
158
|
|
|
183
159
|
enum { copy = internal::traits<OtherDerived>::Flags & RowMajorBit };
|
|
184
160
|
|
|
185
|
-
typedef typename internal::
|
|
186
|
-
|
|
161
|
+
typedef std::conditional_t<copy, typename internal::plain_matrix_type_column_major<OtherDerived>::type, OtherDerived&>
|
|
162
|
+
OtherCopy;
|
|
187
163
|
OtherCopy otherCopy(other.derived());
|
|
188
164
|
|
|
189
|
-
internal::sparse_solve_triangular_selector<ExpressionType,
|
|
165
|
+
internal::sparse_solve_triangular_selector<ExpressionType, std::remove_reference_t<OtherCopy>, Mode>::run(
|
|
166
|
+
derived().nestedExpression(), otherCopy);
|
|
190
167
|
|
|
191
|
-
if (copy)
|
|
192
|
-
other = otherCopy;
|
|
168
|
+
if (copy) other = otherCopy;
|
|
193
169
|
}
|
|
194
170
|
#endif
|
|
195
171
|
|
|
@@ -197,119 +173,102 @@ void TriangularViewImpl<ExpressionType,Mode,Sparse>::solveInPlace(MatrixBase<Oth
|
|
|
197
173
|
|
|
198
174
|
namespace internal {
|
|
199
175
|
|
|
200
|
-
template<typename Lhs, typename Rhs, int Mode,
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
: -1,
|
|
206
|
-
int StorageOrder = int(Lhs::Flags) & (RowMajorBit)>
|
|
176
|
+
template <typename Lhs, typename Rhs, int Mode,
|
|
177
|
+
int UpLo = (Mode & Lower) ? Lower
|
|
178
|
+
: (Mode & Upper) ? Upper
|
|
179
|
+
: -1,
|
|
180
|
+
int StorageOrder = int(Lhs::Flags) & (RowMajorBit)>
|
|
207
181
|
struct sparse_solve_triangular_sparse_selector;
|
|
208
182
|
|
|
209
183
|
// forward substitution, col-major
|
|
210
|
-
template<typename Lhs, typename Rhs, int Mode, int UpLo>
|
|
211
|
-
struct sparse_solve_triangular_sparse_selector<Lhs,Rhs,Mode,UpLo,ColMajor>
|
|
212
|
-
{
|
|
184
|
+
template <typename Lhs, typename Rhs, int Mode, int UpLo>
|
|
185
|
+
struct sparse_solve_triangular_sparse_selector<Lhs, Rhs, Mode, UpLo, ColMajor> {
|
|
213
186
|
typedef typename Rhs::Scalar Scalar;
|
|
214
|
-
typedef typename promote_index_type<typename traits<Lhs>::StorageIndex,
|
|
215
|
-
|
|
216
|
-
static void run(const Lhs& lhs, Rhs& other)
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
tempVector.setBounds(0,other.rows());
|
|
187
|
+
typedef typename promote_index_type<typename traits<Lhs>::StorageIndex, typename traits<Rhs>::StorageIndex>::type
|
|
188
|
+
StorageIndex;
|
|
189
|
+
static void run(const Lhs& lhs, Rhs& other) {
|
|
190
|
+
const bool IsLower = (UpLo == Lower);
|
|
191
|
+
AmbiVector<Scalar, StorageIndex> tempVector(other.rows() * 2);
|
|
192
|
+
tempVector.setBounds(0, other.rows());
|
|
221
193
|
|
|
222
194
|
Rhs res(other.rows(), other.cols());
|
|
223
195
|
res.reserve(other.nonZeros());
|
|
224
196
|
|
|
225
|
-
for(Index col=0
|
|
226
|
-
{
|
|
197
|
+
for (Index col = 0; col < other.cols(); ++col) {
|
|
227
198
|
// FIXME estimate number of non zeros
|
|
228
|
-
tempVector.init(.99/*float(other.col(col).nonZeros())/float(other.rows())*/);
|
|
199
|
+
tempVector.init(.99 /*float(other.col(col).nonZeros())/float(other.rows())*/);
|
|
229
200
|
tempVector.setZero();
|
|
230
201
|
tempVector.restart();
|
|
231
|
-
for (typename Rhs::InnerIterator rhsIt(other, col); rhsIt; ++rhsIt)
|
|
232
|
-
{
|
|
202
|
+
for (typename Rhs::InnerIterator rhsIt(other, col); rhsIt; ++rhsIt) {
|
|
233
203
|
tempVector.coeffRef(rhsIt.index()) = rhsIt.value();
|
|
234
204
|
}
|
|
235
205
|
|
|
236
|
-
for(Index i=IsLower?0:lhs.cols()-1;
|
|
237
|
-
IsLower?i<lhs.cols():i>=0;
|
|
238
|
-
i+=IsLower?1:-1)
|
|
239
|
-
{
|
|
206
|
+
for (Index i = IsLower ? 0 : lhs.cols() - 1; IsLower ? i < lhs.cols() : i >= 0; i += IsLower ? 1 : -1) {
|
|
240
207
|
tempVector.restart();
|
|
241
208
|
Scalar& ci = tempVector.coeffRef(i);
|
|
242
|
-
if (ci
|
|
243
|
-
{
|
|
209
|
+
if (!numext::is_exactly_zero(ci)) {
|
|
244
210
|
// find
|
|
245
211
|
typename Lhs::InnerIterator it(lhs, i);
|
|
246
|
-
if(!(Mode & UnitDiag))
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
{
|
|
250
|
-
eigen_assert(it.index()==i);
|
|
212
|
+
if (!(Mode & UnitDiag)) {
|
|
213
|
+
if (IsLower) {
|
|
214
|
+
eigen_assert(it.index() == i);
|
|
251
215
|
ci /= it.value();
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
ci /= lhs.coeff(i,i);
|
|
216
|
+
} else
|
|
217
|
+
ci /= lhs.coeff(i, i);
|
|
255
218
|
}
|
|
256
219
|
tempVector.restart();
|
|
257
|
-
if (IsLower)
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
for(; it && it.index()<i; ++it)
|
|
267
|
-
tempVector.coeffRef(it.index()) -= ci * it.value();
|
|
220
|
+
if (IsLower) {
|
|
221
|
+
if (it.index() == i) ++it;
|
|
222
|
+
for (; it; ++it) {
|
|
223
|
+
tempVector.coeffRef(it.index()) = numext::madd<Scalar>(-ci, it.value(), tempVector.coeffRef(it.index()));
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
for (; it && it.index() < i; ++it) {
|
|
227
|
+
tempVector.coeffRef(it.index()) = numext::madd<Scalar>(-ci, it.value(), tempVector.coeffRef(it.index()));
|
|
228
|
+
}
|
|
268
229
|
}
|
|
269
230
|
}
|
|
270
231
|
}
|
|
271
232
|
|
|
272
|
-
|
|
273
|
-
Index count = 0;
|
|
233
|
+
// Index count = 0;
|
|
274
234
|
// FIXME compute a reference value to filter zeros
|
|
275
|
-
for (typename AmbiVector<Scalar,StorageIndex>::Iterator it(tempVector/*,1e-12*/); it; ++it)
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
// std::
|
|
279
|
-
// std::cout << it.value() << " ";
|
|
235
|
+
for (typename AmbiVector<Scalar, StorageIndex>::Iterator it(tempVector /*,1e-12*/); it; ++it) {
|
|
236
|
+
// ++ count;
|
|
237
|
+
// std::cerr << "fill " << it.index() << ", " << col << "\n";
|
|
238
|
+
// std::cout << it.value() << " ";
|
|
280
239
|
// FIXME use insertBack
|
|
281
240
|
res.insert(it.index(), col) = it.value();
|
|
282
241
|
}
|
|
283
|
-
// std::cout << "tempVector.nonZeros() == " << int(count) << " / " << (other.rows()) << "\n";
|
|
242
|
+
// std::cout << "tempVector.nonZeros() == " << int(count) << " / " << (other.rows()) << "\n";
|
|
284
243
|
}
|
|
285
244
|
res.finalize();
|
|
286
245
|
other = res.markAsRValue();
|
|
287
246
|
}
|
|
288
247
|
};
|
|
289
248
|
|
|
290
|
-
}
|
|
249
|
+
} // end namespace internal
|
|
291
250
|
|
|
292
251
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
293
|
-
template<typename ExpressionType,unsigned int Mode>
|
|
294
|
-
template<typename OtherDerived>
|
|
295
|
-
void TriangularViewImpl<ExpressionType,Mode,Sparse>::solveInPlace(SparseMatrixBase<OtherDerived>& other) const
|
|
296
|
-
{
|
|
252
|
+
template <typename ExpressionType, unsigned int Mode>
|
|
253
|
+
template <typename OtherDerived>
|
|
254
|
+
void TriangularViewImpl<ExpressionType, Mode, Sparse>::solveInPlace(SparseMatrixBase<OtherDerived>& other) const {
|
|
297
255
|
eigen_assert(derived().cols() == derived().rows() && derived().cols() == other.rows());
|
|
298
|
-
eigen_assert(
|
|
256
|
+
eigen_assert((!(Mode & ZeroDiag)) && bool(Mode & (Upper | Lower)));
|
|
299
257
|
|
|
300
|
-
// enum { copy = internal::traits<OtherDerived>::Flags & RowMajorBit };
|
|
258
|
+
// enum { copy = internal::traits<OtherDerived>::Flags & RowMajorBit };
|
|
301
259
|
|
|
302
|
-
// typedef
|
|
303
|
-
// typename internal::plain_matrix_type_column_major<OtherDerived>::type, OtherDerived
|
|
304
|
-
// OtherCopy otherCopy(other.derived());
|
|
260
|
+
// typedef std::conditional_t<copy,
|
|
261
|
+
// typename internal::plain_matrix_type_column_major<OtherDerived>::type, OtherDerived&> OtherCopy;
|
|
262
|
+
// OtherCopy otherCopy(other.derived());
|
|
305
263
|
|
|
306
|
-
internal::sparse_solve_triangular_sparse_selector<ExpressionType, OtherDerived, Mode>::run(
|
|
264
|
+
internal::sparse_solve_triangular_sparse_selector<ExpressionType, OtherDerived, Mode>::run(
|
|
265
|
+
derived().nestedExpression(), other.derived());
|
|
307
266
|
|
|
308
|
-
// if (copy)
|
|
309
|
-
// other = otherCopy;
|
|
267
|
+
// if (copy)
|
|
268
|
+
// other = otherCopy;
|
|
310
269
|
}
|
|
311
270
|
#endif
|
|
312
271
|
|
|
313
|
-
}
|
|
272
|
+
} // end namespace Eigen
|
|
314
273
|
|
|
315
|
-
#endif
|
|
274
|
+
#endif // EIGEN_SPARSETRIANGULARSOLVER_H
|