@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
|
@@ -11,365 +11,309 @@
|
|
|
11
11
|
#ifndef EIGEN_SPARSELU_SUPERNODAL_MATRIX_H
|
|
12
12
|
#define EIGEN_SPARSELU_SUPERNODAL_MATRIX_H
|
|
13
13
|
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "./InternalHeaderCheck.h"
|
|
16
|
+
|
|
14
17
|
namespace Eigen {
|
|
15
18
|
namespace internal {
|
|
16
19
|
|
|
17
20
|
/** \ingroup SparseLU_Module
|
|
18
21
|
* \brief a class to manipulate the L supernodal factor from the SparseLU factorization
|
|
19
|
-
*
|
|
20
|
-
* This class contain the data to easily store
|
|
21
|
-
* and manipulate the supernodes during the factorization and solution phase of Sparse LU.
|
|
22
|
+
*
|
|
23
|
+
* This class contain the data to easily store
|
|
24
|
+
* and manipulate the supernodes during the factorization and solution phase of Sparse LU.
|
|
22
25
|
* Only the lower triangular matrix has supernodes.
|
|
23
|
-
*
|
|
26
|
+
*
|
|
24
27
|
* NOTE : This class corresponds to the SCformat structure in SuperLU
|
|
25
|
-
*
|
|
28
|
+
*
|
|
26
29
|
*/
|
|
27
30
|
/* TODO
|
|
28
|
-
* InnerIterator as for sparsematrix
|
|
29
|
-
* SuperInnerIterator to iterate through all supernodes
|
|
31
|
+
* InnerIterator as for sparsematrix
|
|
32
|
+
* SuperInnerIterator to iterate through all supernodes
|
|
30
33
|
* Function for triangular solve
|
|
31
34
|
*/
|
|
32
|
-
template <typename
|
|
33
|
-
class MappedSuperNodalMatrix
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
const StorageIndex* supToCol() const
|
|
144
|
-
{
|
|
145
|
-
return m_sup_to_col;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Return the number of supernodes
|
|
150
|
-
*/
|
|
151
|
-
Index nsuper() const
|
|
152
|
-
{
|
|
153
|
-
return m_nsuper;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
class InnerIterator;
|
|
157
|
-
template<typename Dest>
|
|
158
|
-
void solveInPlace( MatrixBase<Dest>&X) const;
|
|
159
|
-
template<bool Conjugate, typename Dest>
|
|
160
|
-
void solveTransposedInPlace( MatrixBase<Dest>&X) const;
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
protected:
|
|
167
|
-
Index m_row; // Number of rows
|
|
168
|
-
Index m_col; // Number of columns
|
|
169
|
-
Index m_nsuper; // Number of supernodes
|
|
170
|
-
Scalar* m_nzval; //array of nonzero values packed by column
|
|
171
|
-
StorageIndex* m_nzval_colptr; //nzval_colptr[j] Stores the location in nzval[] which starts column j
|
|
172
|
-
StorageIndex* m_rowind; // Array of compressed row indices of rectangular supernodes
|
|
173
|
-
StorageIndex* m_rowind_colptr; //rowind_colptr[j] stores the location in rowind[] which starts column j
|
|
174
|
-
StorageIndex* m_col_to_sup; // col_to_sup[j] is the supernode number to which column j belongs
|
|
175
|
-
StorageIndex* m_sup_to_col; //sup_to_col[s] points to the starting column of the s-th supernode
|
|
176
|
-
|
|
177
|
-
private :
|
|
35
|
+
template <typename Scalar_, typename StorageIndex_>
|
|
36
|
+
class MappedSuperNodalMatrix {
|
|
37
|
+
public:
|
|
38
|
+
typedef Scalar_ Scalar;
|
|
39
|
+
typedef StorageIndex_ StorageIndex;
|
|
40
|
+
typedef Matrix<StorageIndex, Dynamic, 1> IndexVector;
|
|
41
|
+
typedef Matrix<Scalar, Dynamic, 1> ScalarVector;
|
|
42
|
+
|
|
43
|
+
public:
|
|
44
|
+
MappedSuperNodalMatrix() {}
|
|
45
|
+
MappedSuperNodalMatrix(Index m, Index n, ScalarVector& nzval, IndexVector& nzval_colptr, IndexVector& rowind,
|
|
46
|
+
IndexVector& rowind_colptr, IndexVector& col_to_sup, IndexVector& sup_to_col) {
|
|
47
|
+
setInfos(m, n, nzval, nzval_colptr, rowind, rowind_colptr, col_to_sup, sup_to_col);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
~MappedSuperNodalMatrix() {}
|
|
51
|
+
/**
|
|
52
|
+
* Set appropriate pointers for the lower triangular supernodal matrix
|
|
53
|
+
* These infos are available at the end of the numerical factorization
|
|
54
|
+
* FIXME This class will be modified such that it can be use in the course
|
|
55
|
+
* of the factorization.
|
|
56
|
+
*/
|
|
57
|
+
void setInfos(Index m, Index n, ScalarVector& nzval, IndexVector& nzval_colptr, IndexVector& rowind,
|
|
58
|
+
IndexVector& rowind_colptr, IndexVector& col_to_sup, IndexVector& sup_to_col) {
|
|
59
|
+
m_row = m;
|
|
60
|
+
m_col = n;
|
|
61
|
+
m_nzval = nzval.data();
|
|
62
|
+
m_nzval_colptr = nzval_colptr.data();
|
|
63
|
+
m_rowind = rowind.data();
|
|
64
|
+
m_rowind_colptr = rowind_colptr.data();
|
|
65
|
+
m_nsuper = col_to_sup(n);
|
|
66
|
+
m_col_to_sup = col_to_sup.data();
|
|
67
|
+
m_sup_to_col = sup_to_col.data();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Number of rows
|
|
72
|
+
*/
|
|
73
|
+
Index rows() const { return m_row; }
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Number of columns
|
|
77
|
+
*/
|
|
78
|
+
Index cols() const { return m_col; }
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Return the array of nonzero values packed by column
|
|
82
|
+
*
|
|
83
|
+
* The size is nnz
|
|
84
|
+
*/
|
|
85
|
+
Scalar* valuePtr() { return m_nzval; }
|
|
86
|
+
|
|
87
|
+
const Scalar* valuePtr() const { return m_nzval; }
|
|
88
|
+
/**
|
|
89
|
+
* Return the pointers to the beginning of each column in \ref valuePtr()
|
|
90
|
+
*/
|
|
91
|
+
StorageIndex* colIndexPtr() { return m_nzval_colptr; }
|
|
92
|
+
|
|
93
|
+
const StorageIndex* colIndexPtr() const { return m_nzval_colptr; }
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Return the array of compressed row indices of all supernodes
|
|
97
|
+
*/
|
|
98
|
+
StorageIndex* rowIndex() { return m_rowind; }
|
|
99
|
+
|
|
100
|
+
const StorageIndex* rowIndex() const { return m_rowind; }
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Return the location in \em rowvaluePtr() which starts each column
|
|
104
|
+
*/
|
|
105
|
+
StorageIndex* rowIndexPtr() { return m_rowind_colptr; }
|
|
106
|
+
|
|
107
|
+
const StorageIndex* rowIndexPtr() const { return m_rowind_colptr; }
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Return the array of column-to-supernode mapping
|
|
111
|
+
*/
|
|
112
|
+
StorageIndex* colToSup() { return m_col_to_sup; }
|
|
113
|
+
|
|
114
|
+
const StorageIndex* colToSup() const { return m_col_to_sup; }
|
|
115
|
+
/**
|
|
116
|
+
* Return the array of supernode-to-column mapping
|
|
117
|
+
*/
|
|
118
|
+
StorageIndex* supToCol() { return m_sup_to_col; }
|
|
119
|
+
|
|
120
|
+
const StorageIndex* supToCol() const { return m_sup_to_col; }
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Return the number of supernodes
|
|
124
|
+
*/
|
|
125
|
+
Index nsuper() const { return m_nsuper; }
|
|
126
|
+
|
|
127
|
+
class InnerIterator;
|
|
128
|
+
template <typename Dest>
|
|
129
|
+
void solveInPlace(MatrixBase<Dest>& X) const;
|
|
130
|
+
template <bool Conjugate, typename Dest>
|
|
131
|
+
void solveTransposedInPlace(MatrixBase<Dest>& X) const;
|
|
132
|
+
|
|
133
|
+
protected:
|
|
134
|
+
Index m_row; // Number of rows
|
|
135
|
+
Index m_col; // Number of columns
|
|
136
|
+
Index m_nsuper; // Number of supernodes
|
|
137
|
+
Scalar* m_nzval; // array of nonzero values packed by column
|
|
138
|
+
StorageIndex* m_nzval_colptr; // nzval_colptr[j] Stores the location in nzval[] which starts column j
|
|
139
|
+
StorageIndex* m_rowind; // Array of compressed row indices of rectangular supernodes
|
|
140
|
+
StorageIndex* m_rowind_colptr; // rowind_colptr[j] stores the location in rowind[] which starts column j
|
|
141
|
+
StorageIndex* m_col_to_sup; // col_to_sup[j] is the supernode number to which column j belongs
|
|
142
|
+
StorageIndex* m_sup_to_col; // sup_to_col[s] points to the starting column of the s-th supernode
|
|
143
|
+
|
|
144
|
+
private:
|
|
178
145
|
};
|
|
179
146
|
|
|
180
147
|
/**
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
template<typename Scalar, typename StorageIndex>
|
|
185
|
-
class MappedSuperNodalMatrix<Scalar,StorageIndex>::InnerIterator
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
InnerIterator(const MappedSuperNodalMatrix& mat, Index outer)
|
|
148
|
+
* \brief InnerIterator class to iterate over nonzero values of the current column in the supernodal matrix L
|
|
149
|
+
*
|
|
150
|
+
*/
|
|
151
|
+
template <typename Scalar, typename StorageIndex>
|
|
152
|
+
class MappedSuperNodalMatrix<Scalar, StorageIndex>::InnerIterator {
|
|
153
|
+
public:
|
|
154
|
+
InnerIterator(const MappedSuperNodalMatrix& mat, Index outer)
|
|
189
155
|
: m_matrix(mat),
|
|
190
156
|
m_outer(outer),
|
|
191
157
|
m_supno(mat.colToSup()[outer]),
|
|
192
158
|
m_idval(mat.colIndexPtr()[outer]),
|
|
193
159
|
m_startidval(m_idval),
|
|
194
|
-
m_endidval(mat.colIndexPtr()[outer+1]),
|
|
160
|
+
m_endidval(mat.colIndexPtr()[outer + 1]),
|
|
195
161
|
m_idrow(mat.rowIndexPtr()[mat.supToCol()[mat.colToSup()[outer]]]),
|
|
196
|
-
m_endidrow(mat.rowIndexPtr()[mat.supToCol()[mat.colToSup()[outer]]+1])
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
const Index m_startidval; // Start of the column value
|
|
226
|
-
const Index m_endidval; // End of the column value
|
|
227
|
-
Index m_idrow; // Index to browse the row indices
|
|
228
|
-
Index m_endidrow; // End index of row indices of the current column
|
|
162
|
+
m_endidrow(mat.rowIndexPtr()[mat.supToCol()[mat.colToSup()[outer]] + 1]) {}
|
|
163
|
+
inline InnerIterator& operator++() {
|
|
164
|
+
m_idval++;
|
|
165
|
+
m_idrow++;
|
|
166
|
+
return *this;
|
|
167
|
+
}
|
|
168
|
+
inline Scalar value() const { return m_matrix.valuePtr()[m_idval]; }
|
|
169
|
+
|
|
170
|
+
inline Scalar& valueRef() { return const_cast<Scalar&>(m_matrix.valuePtr()[m_idval]); }
|
|
171
|
+
|
|
172
|
+
inline Index index() const { return m_matrix.rowIndex()[m_idrow]; }
|
|
173
|
+
inline Index row() const { return index(); }
|
|
174
|
+
inline Index col() const { return m_outer; }
|
|
175
|
+
|
|
176
|
+
inline Index supIndex() const { return m_supno; }
|
|
177
|
+
|
|
178
|
+
inline operator bool() const {
|
|
179
|
+
return ((m_idval < m_endidval) && (m_idval >= m_startidval) && (m_idrow < m_endidrow));
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
protected:
|
|
183
|
+
const MappedSuperNodalMatrix& m_matrix; // Supernodal lower triangular matrix
|
|
184
|
+
const Index m_outer; // Current column
|
|
185
|
+
const Index m_supno; // Current SuperNode number
|
|
186
|
+
Index m_idval; // Index to browse the values in the current column
|
|
187
|
+
const Index m_startidval; // Start of the column value
|
|
188
|
+
const Index m_endidval; // End of the column value
|
|
189
|
+
Index m_idrow; // Index to browse the row indices
|
|
190
|
+
Index m_endidrow; // End index of row indices of the current column
|
|
229
191
|
};
|
|
230
192
|
|
|
231
193
|
/**
|
|
232
194
|
* \brief Solve with the supernode triangular matrix
|
|
233
|
-
*
|
|
195
|
+
*
|
|
234
196
|
*/
|
|
235
|
-
template<typename Scalar, typename Index_>
|
|
236
|
-
template<typename Dest>
|
|
237
|
-
void MappedSuperNodalMatrix<Scalar,Index_>::solveInPlace(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
// eigen_assert(X.
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
for (
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
++it; // Skip the diagonal element
|
|
262
|
-
for (; it; ++it)
|
|
263
|
-
{
|
|
264
|
-
irow = it.row();
|
|
265
|
-
X(irow, j) -= X(fsupc, j) * it.value();
|
|
266
|
-
}
|
|
197
|
+
template <typename Scalar, typename Index_>
|
|
198
|
+
template <typename Dest>
|
|
199
|
+
void MappedSuperNodalMatrix<Scalar, Index_>::solveInPlace(MatrixBase<Dest>& X) const {
|
|
200
|
+
/* Explicit type conversion as the Index type of MatrixBase<Dest> may be wider than Index */
|
|
201
|
+
// eigen_assert(X.rows() <= NumTraits<Index>::highest());
|
|
202
|
+
// eigen_assert(X.cols() <= NumTraits<Index>::highest());
|
|
203
|
+
Index n = int(X.rows());
|
|
204
|
+
Index nrhs = Index(X.cols());
|
|
205
|
+
const Scalar* Lval = valuePtr(); // Nonzero values
|
|
206
|
+
Matrix<Scalar, Dynamic, Dest::ColsAtCompileTime, ColMajor> work(n, nrhs); // working vector
|
|
207
|
+
work.setZero();
|
|
208
|
+
for (Index k = 0; k <= nsuper(); k++) {
|
|
209
|
+
Index fsupc = supToCol()[k]; // First column of the current supernode
|
|
210
|
+
Index istart = rowIndexPtr()[fsupc]; // Pointer index to the subscript of the current column
|
|
211
|
+
Index nsupr = rowIndexPtr()[fsupc + 1] - istart; // Number of rows in the current supernode
|
|
212
|
+
Index nsupc = supToCol()[k + 1] - fsupc; // Number of columns in the current supernode
|
|
213
|
+
Index nrow = nsupr - nsupc; // Number of rows in the non-diagonal part of the supernode
|
|
214
|
+
Index irow; // Current index row
|
|
215
|
+
|
|
216
|
+
if (nsupc == 1) {
|
|
217
|
+
for (Index j = 0; j < nrhs; j++) {
|
|
218
|
+
InnerIterator it(*this, fsupc);
|
|
219
|
+
++it; // Skip the diagonal element
|
|
220
|
+
for (; it; ++it) {
|
|
221
|
+
irow = it.row();
|
|
222
|
+
X(irow, j) -= X(fsupc, j) * it.value();
|
|
267
223
|
}
|
|
268
224
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
work(i, j) = Scalar(0);
|
|
293
|
-
iptr++;
|
|
294
|
-
}
|
|
225
|
+
} else {
|
|
226
|
+
// The supernode has more than one column
|
|
227
|
+
Index luptr = colIndexPtr()[fsupc];
|
|
228
|
+
Index lda = colIndexPtr()[fsupc + 1] - luptr;
|
|
229
|
+
|
|
230
|
+
// Triangular solve
|
|
231
|
+
Map<const Matrix<Scalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> > A(&(Lval[luptr]), nsupc, nsupc,
|
|
232
|
+
OuterStride<>(lda));
|
|
233
|
+
typename Dest::RowsBlockXpr U = X.derived().middleRows(fsupc, nsupc);
|
|
234
|
+
U = A.template triangularView<UnitLower>().solve(U);
|
|
235
|
+
// Matrix-vector product
|
|
236
|
+
new (&A) Map<const Matrix<Scalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> >(&(Lval[luptr + nsupc]), nrow,
|
|
237
|
+
nsupc, OuterStride<>(lda));
|
|
238
|
+
work.topRows(nrow).noalias() = A * U;
|
|
239
|
+
|
|
240
|
+
// Begin Scatter
|
|
241
|
+
for (Index j = 0; j < nrhs; j++) {
|
|
242
|
+
Index iptr = istart + nsupc;
|
|
243
|
+
for (Index i = 0; i < nrow; i++) {
|
|
244
|
+
irow = rowIndex()[iptr];
|
|
245
|
+
X(irow, j) -= work(i, j); // Scatter operation
|
|
246
|
+
work(i, j) = Scalar(0);
|
|
247
|
+
iptr++;
|
|
295
248
|
}
|
|
296
249
|
}
|
|
297
|
-
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
298
252
|
}
|
|
299
253
|
|
|
300
|
-
template<typename Scalar, typename Index_>
|
|
301
|
-
template<bool Conjugate, typename Dest>
|
|
302
|
-
void MappedSuperNodalMatrix<Scalar,Index_>::solveTransposedInPlace(
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
Index n = int(X.rows());
|
|
254
|
+
template <typename Scalar, typename Index_>
|
|
255
|
+
template <bool Conjugate, typename Dest>
|
|
256
|
+
void MappedSuperNodalMatrix<Scalar, Index_>::solveTransposedInPlace(MatrixBase<Dest>& X) const {
|
|
257
|
+
using numext::conj;
|
|
258
|
+
Index n = int(X.rows());
|
|
306
259
|
Index nrhs = Index(X.cols());
|
|
307
|
-
const Scalar
|
|
308
|
-
Matrix<Scalar,Dynamic,Dest::ColsAtCompileTime, ColMajor> work(n, nrhs);
|
|
260
|
+
const Scalar* Lval = valuePtr(); // Nonzero values
|
|
261
|
+
Matrix<Scalar, Dynamic, Dest::ColsAtCompileTime, ColMajor> work(n, nrhs); // working vector
|
|
309
262
|
work.setZero();
|
|
310
|
-
for (Index k = nsuper(); k >= 0; k--)
|
|
311
|
-
|
|
312
|
-
Index
|
|
313
|
-
Index
|
|
314
|
-
Index
|
|
315
|
-
Index
|
|
316
|
-
Index
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
{
|
|
321
|
-
for (Index j = 0; j < nrhs; j++)
|
|
322
|
-
{
|
|
263
|
+
for (Index k = nsuper(); k >= 0; k--) {
|
|
264
|
+
Index fsupc = supToCol()[k]; // First column of the current supernode
|
|
265
|
+
Index istart = rowIndexPtr()[fsupc]; // Pointer index to the subscript of the current column
|
|
266
|
+
Index nsupr = rowIndexPtr()[fsupc + 1] - istart; // Number of rows in the current supernode
|
|
267
|
+
Index nsupc = supToCol()[k + 1] - fsupc; // Number of columns in the current supernode
|
|
268
|
+
Index nrow = nsupr - nsupc; // Number of rows in the non-diagonal part of the supernode
|
|
269
|
+
Index irow; // Current index row
|
|
270
|
+
|
|
271
|
+
if (nsupc == 1) {
|
|
272
|
+
for (Index j = 0; j < nrhs; j++) {
|
|
323
273
|
InnerIterator it(*this, fsupc);
|
|
324
|
-
++it;
|
|
325
|
-
for (; it; ++it)
|
|
326
|
-
{
|
|
274
|
+
++it; // Skip the diagonal element
|
|
275
|
+
for (; it; ++it) {
|
|
327
276
|
irow = it.row();
|
|
328
|
-
X(fsupc,j) -= X(irow, j) * (Conjugate?conj(it.value()):it.value());
|
|
277
|
+
X(fsupc, j) -= X(irow, j) * (Conjugate ? conj(it.value()) : it.value());
|
|
329
278
|
}
|
|
330
279
|
}
|
|
331
|
-
}
|
|
332
|
-
else
|
|
333
|
-
{
|
|
280
|
+
} else {
|
|
334
281
|
// The supernode has more than one column
|
|
335
282
|
Index luptr = colIndexPtr()[fsupc];
|
|
336
|
-
Index lda = colIndexPtr()[fsupc+1] - luptr;
|
|
283
|
+
Index lda = colIndexPtr()[fsupc + 1] - luptr;
|
|
337
284
|
|
|
338
|
-
//Begin Gather
|
|
339
|
-
for (Index j = 0; j < nrhs; j++)
|
|
340
|
-
{
|
|
285
|
+
// Begin Gather
|
|
286
|
+
for (Index j = 0; j < nrhs; j++) {
|
|
341
287
|
Index iptr = istart + nsupc;
|
|
342
|
-
for (Index i = 0; i < nrow; i++)
|
|
343
|
-
{
|
|
288
|
+
for (Index i = 0; i < nrow; i++) {
|
|
344
289
|
irow = rowIndex()[iptr];
|
|
345
|
-
work.topRows(nrow)(i,j)= X(irow,j);
|
|
290
|
+
work.topRows(nrow)(i, j) = X(irow, j); // Gather operation
|
|
346
291
|
iptr++;
|
|
347
292
|
}
|
|
348
293
|
}
|
|
349
294
|
|
|
350
295
|
// Matrix-vector product with transposed submatrix
|
|
351
|
-
Map<const Matrix<Scalar,Dynamic,Dynamic, ColMajor>, 0, OuterStride<> > A(
|
|
352
|
-
|
|
353
|
-
|
|
296
|
+
Map<const Matrix<Scalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> > A(&(Lval[luptr + nsupc]), nrow, nsupc,
|
|
297
|
+
OuterStride<>(lda));
|
|
298
|
+
typename Dest::RowsBlockXpr U = X.derived().middleRows(fsupc, nsupc);
|
|
299
|
+
if (Conjugate)
|
|
354
300
|
U = U - A.adjoint() * work.topRows(nrow);
|
|
355
301
|
else
|
|
356
302
|
U = U - A.transpose() * work.topRows(nrow);
|
|
357
303
|
|
|
358
304
|
// Triangular solve (of transposed diagonal block)
|
|
359
|
-
new (&A) Map<const Matrix<Scalar,Dynamic,Dynamic, ColMajor>, 0, OuterStride<> >
|
|
360
|
-
|
|
305
|
+
new (&A) Map<const Matrix<Scalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> >(&(Lval[luptr]), nsupc, nsupc,
|
|
306
|
+
OuterStride<>(lda));
|
|
307
|
+
if (Conjugate)
|
|
361
308
|
U = A.adjoint().template triangularView<UnitUpper>().solve(U);
|
|
362
309
|
else
|
|
363
310
|
U = A.transpose().template triangularView<UnitUpper>().solve(U);
|
|
364
|
-
|
|
365
311
|
}
|
|
366
|
-
|
|
367
312
|
}
|
|
368
313
|
}
|
|
369
314
|
|
|
315
|
+
} // end namespace internal
|
|
370
316
|
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
} // end namespace Eigen
|
|
317
|
+
} // end namespace Eigen
|
|
374
318
|
|
|
375
|
-
#endif
|
|
319
|
+
#endif // EIGEN_SPARSELU_MATRIX_H
|