@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
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
8
8
|
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
9
9
|
|
|
10
|
-
|
|
11
10
|
#ifndef EIGEN_SPARSELU_UTILS_H
|
|
12
11
|
#define EIGEN_SPARSELU_UTILS_H
|
|
13
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
14
16
|
namespace Eigen {
|
|
15
17
|
namespace internal {
|
|
16
18
|
|
|
@@ -18,63 +20,56 @@ namespace internal {
|
|
|
18
20
|
* \brief Count Nonzero elements in the factors
|
|
19
21
|
*/
|
|
20
22
|
template <typename Scalar, typename StorageIndex>
|
|
21
|
-
void SparseLUImpl<Scalar,StorageIndex>::countnz(const Index n, Index& nnzL, Index& nnzU, GlobalLU_t& glu)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
jlen--;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
23
|
+
void SparseLUImpl<Scalar, StorageIndex>::countnz(const Index n, Index& nnzL, Index& nnzU, GlobalLU_t& glu) {
|
|
24
|
+
nnzL = 0;
|
|
25
|
+
nnzU = (glu.xusub)(n);
|
|
26
|
+
Index nsuper = (glu.supno)(n);
|
|
27
|
+
Index jlen;
|
|
28
|
+
Index i, j, fsupc;
|
|
29
|
+
if (n <= 0) return;
|
|
30
|
+
// For each supernode
|
|
31
|
+
for (i = 0; i <= nsuper; i++) {
|
|
32
|
+
fsupc = glu.xsup(i);
|
|
33
|
+
jlen = glu.xlsub(fsupc + 1) - glu.xlsub(fsupc);
|
|
34
|
+
|
|
35
|
+
for (j = fsupc; j < glu.xsup(i + 1); j++) {
|
|
36
|
+
nnzL += jlen;
|
|
37
|
+
nnzU += j - fsupc + 1;
|
|
38
|
+
jlen--;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
/**
|
|
45
|
-
* \brief Fix up the data storage lsub for L-subscripts.
|
|
46
|
-
*
|
|
47
|
-
* It removes the subscripts sets for structural pruning,
|
|
44
|
+
* \brief Fix up the data storage lsub for L-subscripts.
|
|
45
|
+
*
|
|
46
|
+
* It removes the subscripts sets for structural pruning,
|
|
48
47
|
* and applies permutation to the remaining subscripts
|
|
49
|
-
*
|
|
48
|
+
*
|
|
50
49
|
*/
|
|
51
50
|
template <typename Scalar, typename StorageIndex>
|
|
52
|
-
void SparseLUImpl<Scalar,StorageIndex>::fixupL(const Index n, const IndexVector& perm_r, GlobalLU_t& glu)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
fsupc =
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
for (j = jstart; j < glu.xlsub(fsupc + 1); j++)
|
|
66
|
-
{
|
|
67
|
-
glu.lsub(nextl) = perm_r(glu.lsub(j)); // Now indexed into P*A
|
|
51
|
+
void SparseLUImpl<Scalar, StorageIndex>::fixupL(const Index n, const IndexVector& perm_r, GlobalLU_t& glu) {
|
|
52
|
+
Index fsupc, i, j, k, jstart;
|
|
53
|
+
|
|
54
|
+
StorageIndex nextl = 0;
|
|
55
|
+
Index nsuper = (glu.supno)(n);
|
|
56
|
+
|
|
57
|
+
// For each supernode
|
|
58
|
+
for (i = 0; i <= nsuper; i++) {
|
|
59
|
+
fsupc = glu.xsup(i);
|
|
60
|
+
jstart = glu.xlsub(fsupc);
|
|
61
|
+
glu.xlsub(fsupc) = nextl;
|
|
62
|
+
for (j = jstart; j < glu.xlsub(fsupc + 1); j++) {
|
|
63
|
+
glu.lsub(nextl) = perm_r(glu.lsub(j)); // Now indexed into P*A
|
|
68
64
|
nextl++;
|
|
69
65
|
}
|
|
70
|
-
for (k = fsupc+1; k < glu.xsup(i+1); k++)
|
|
71
|
-
glu.xlsub(k) = nextl; // other columns in supernode i
|
|
66
|
+
for (k = fsupc + 1; k < glu.xsup(i + 1); k++) glu.xlsub(k) = nextl; // other columns in supernode i
|
|
72
67
|
}
|
|
73
|
-
|
|
74
|
-
glu.xlsub(n) = nextl;
|
|
68
|
+
|
|
69
|
+
glu.xlsub(n) = nextl;
|
|
75
70
|
}
|
|
76
71
|
|
|
77
|
-
}
|
|
72
|
+
} // end namespace internal
|
|
78
73
|
|
|
79
|
-
}
|
|
80
|
-
#endif
|
|
74
|
+
} // end namespace Eigen
|
|
75
|
+
#endif // EIGEN_SPARSELU_UTILS_H
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
9
9
|
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
10
10
|
|
|
11
|
-
/*
|
|
12
|
-
|
|
13
|
-
* NOTE: This file is the modified version of xcolumn_bmod.c file in SuperLU
|
|
14
|
-
|
|
11
|
+
/*
|
|
12
|
+
|
|
13
|
+
* NOTE: This file is the modified version of xcolumn_bmod.c file in SuperLU
|
|
14
|
+
|
|
15
15
|
* -- SuperLU routine (version 3.0) --
|
|
16
16
|
* Univ. of California Berkeley, Xerox Palo Alto Research Center,
|
|
17
17
|
* and Lawrence Berkeley National Lab.
|
|
@@ -31,151 +31,147 @@
|
|
|
31
31
|
#ifndef SPARSELU_COLUMN_BMOD_H
|
|
32
32
|
#define SPARSELU_COLUMN_BMOD_H
|
|
33
33
|
|
|
34
|
+
// IWYU pragma: private
|
|
35
|
+
#include "./InternalHeaderCheck.h"
|
|
36
|
+
|
|
34
37
|
namespace Eigen {
|
|
35
38
|
|
|
36
39
|
namespace internal {
|
|
37
40
|
/**
|
|
38
41
|
* \brief Performs numeric block updates (sup-col) in topological order
|
|
39
|
-
*
|
|
42
|
+
*
|
|
40
43
|
* \param jcol current column to update
|
|
41
44
|
* \param nseg Number of segments in the U part
|
|
42
45
|
* \param dense Store the full representation of the column
|
|
43
|
-
* \param tempv working array
|
|
46
|
+
* \param tempv working array
|
|
44
47
|
* \param segrep segment representative ...
|
|
45
48
|
* \param repfnz ??? First nonzero column in each row ??? ...
|
|
46
49
|
* \param fpanelc First column in the current panel
|
|
47
|
-
* \param glu Global LU data.
|
|
48
|
-
* \return 0 - successful return
|
|
50
|
+
* \param glu Global LU data.
|
|
51
|
+
* \return 0 - successful return
|
|
49
52
|
* > 0 - number of bytes allocated when run out of space
|
|
50
|
-
*
|
|
53
|
+
*
|
|
51
54
|
*/
|
|
52
55
|
template <typename Scalar, typename StorageIndex>
|
|
53
|
-
Index SparseLUImpl<Scalar,StorageIndex>::column_bmod(const Index jcol, const Index nseg, BlockScalarVector dense,
|
|
54
|
-
|
|
55
|
-
{
|
|
56
|
-
Index
|
|
57
|
-
Index lptr, nrow, isub, irow, nextlu, new_next, ufirst;
|
|
58
|
-
Index fsupc, nsupc, nsupr, luptr, kfnz, no_zeros;
|
|
56
|
+
Index SparseLUImpl<Scalar, StorageIndex>::column_bmod(const Index jcol, const Index nseg, BlockScalarVector dense,
|
|
57
|
+
ScalarVector& tempv, BlockIndexVector segrep,
|
|
58
|
+
BlockIndexVector repfnz, Index fpanelc, GlobalLU_t& glu) {
|
|
59
|
+
Index jsupno, k, ksub, krep, ksupno;
|
|
60
|
+
Index lptr, nrow, isub, irow, nextlu, new_next, ufirst;
|
|
61
|
+
Index fsupc, nsupc, nsupr, luptr, kfnz, no_zeros;
|
|
59
62
|
/* krep = representative of current k-th supernode
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
* fsupc = first supernodal column
|
|
64
|
+
* nsupc = number of columns in a supernode
|
|
65
|
+
* nsupr = number of rows in a supernode
|
|
66
|
+
* luptr = location of supernodal LU-block in storage
|
|
67
|
+
* kfnz = first nonz in the k-th supernodal segment
|
|
68
|
+
* no_zeros = no lf leading zeros in a supernodal U-segment
|
|
69
|
+
*/
|
|
70
|
+
|
|
68
71
|
jsupno = glu.supno(jcol);
|
|
69
|
-
// For each nonzero supernode segment of U[*,j] in topological order
|
|
70
|
-
k = nseg - 1;
|
|
71
|
-
Index d_fsupc;
|
|
72
|
-
|
|
73
|
-
Index fst_col;
|
|
74
|
-
Index segsize;
|
|
75
|
-
for (ksub = 0; ksub < nseg; ksub++)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
ksupno = glu.supno(krep);
|
|
79
|
-
if (jsupno != ksupno
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
// Distance from the current supernode to the current panel;
|
|
72
|
+
// For each nonzero supernode segment of U[*,j] in topological order
|
|
73
|
+
k = nseg - 1;
|
|
74
|
+
Index d_fsupc; // distance between the first column of the current panel and the
|
|
75
|
+
// first column of the current snode
|
|
76
|
+
Index fst_col; // First column within small LU update
|
|
77
|
+
Index segsize;
|
|
78
|
+
for (ksub = 0; ksub < nseg; ksub++) {
|
|
79
|
+
krep = segrep(k);
|
|
80
|
+
k--;
|
|
81
|
+
ksupno = glu.supno(krep);
|
|
82
|
+
if (jsupno != ksupno) {
|
|
83
|
+
// outside the rectangular supernode
|
|
84
|
+
fsupc = glu.xsup(ksupno);
|
|
85
|
+
fst_col = (std::max)(fsupc, fpanelc);
|
|
86
|
+
|
|
87
|
+
// Distance from the current supernode to the current panel;
|
|
86
88
|
// d_fsupc = 0 if fsupc > fpanelc
|
|
87
|
-
d_fsupc = fst_col - fsupc;
|
|
88
|
-
|
|
89
|
-
luptr = glu.xlusup(fst_col) + d_fsupc;
|
|
90
|
-
lptr = glu.xlsub(fsupc) + d_fsupc;
|
|
91
|
-
|
|
92
|
-
kfnz = repfnz(krep);
|
|
93
|
-
kfnz = (std::max)(kfnz, fpanelc);
|
|
94
|
-
|
|
95
|
-
segsize = krep - kfnz + 1;
|
|
96
|
-
nsupc = krep - fst_col + 1;
|
|
97
|
-
nsupr = glu.xlsub(fsupc+1) - glu.xlsub(fsupc);
|
|
89
|
+
d_fsupc = fst_col - fsupc;
|
|
90
|
+
|
|
91
|
+
luptr = glu.xlusup(fst_col) + d_fsupc;
|
|
92
|
+
lptr = glu.xlsub(fsupc) + d_fsupc;
|
|
93
|
+
|
|
94
|
+
kfnz = repfnz(krep);
|
|
95
|
+
kfnz = (std::max)(kfnz, fpanelc);
|
|
96
|
+
|
|
97
|
+
segsize = krep - kfnz + 1;
|
|
98
|
+
nsupc = krep - fst_col + 1;
|
|
99
|
+
nsupr = glu.xlsub(fsupc + 1) - glu.xlsub(fsupc);
|
|
98
100
|
nrow = nsupr - d_fsupc - nsupc;
|
|
99
|
-
Index lda = glu.xlusup(fst_col+1) - glu.xlusup(fst_col);
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
// Perform a triangular solver and block update,
|
|
101
|
+
Index lda = glu.xlusup(fst_col + 1) - glu.xlusup(fst_col);
|
|
102
|
+
|
|
103
|
+
// Perform a triangular solver and block update,
|
|
103
104
|
// then scatter the result of sup-col update to dense
|
|
104
|
-
no_zeros = kfnz - fst_col;
|
|
105
|
-
if(segsize==1)
|
|
105
|
+
no_zeros = kfnz - fst_col;
|
|
106
|
+
if (segsize == 1)
|
|
106
107
|
LU_kernel_bmod<1>::run(segsize, dense, tempv, glu.lusup, luptr, lda, nrow, glu.lsub, lptr, no_zeros);
|
|
107
108
|
else
|
|
108
109
|
LU_kernel_bmod<Dynamic>::run(segsize, dense, tempv, glu.lusup, luptr, lda, nrow, glu.lsub, lptr, no_zeros);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
110
|
+
} // end if jsupno
|
|
111
|
+
} // end for each segment
|
|
112
|
+
|
|
112
113
|
// Process the supernodal portion of L\U[*,j]
|
|
113
|
-
nextlu = glu.xlusup(jcol);
|
|
114
|
+
nextlu = glu.xlusup(jcol);
|
|
114
115
|
fsupc = glu.xsup(jsupno);
|
|
115
|
-
|
|
116
|
+
|
|
116
117
|
// copy the SPA dense into L\U[*,j]
|
|
117
|
-
Index mem;
|
|
118
|
-
new_next = nextlu + glu.xlsub(fsupc + 1) - glu.xlsub(fsupc);
|
|
118
|
+
Index mem;
|
|
119
|
+
new_next = nextlu + glu.xlsub(fsupc + 1) - glu.xlsub(fsupc);
|
|
119
120
|
Index offset = internal::first_multiple<Index>(new_next, internal::packet_traits<Scalar>::size) - new_next;
|
|
120
|
-
if(offset)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
mem = memXpand<ScalarVector>(glu.lusup, glu.nzlumax, nextlu, LUSUP, glu.num_expansions);
|
|
125
|
-
if (mem) return mem;
|
|
121
|
+
if (offset) new_next += offset;
|
|
122
|
+
while (new_next > glu.nzlumax) {
|
|
123
|
+
mem = memXpand<ScalarVector>(glu.lusup, glu.nzlumax, nextlu, LUSUP, glu.num_expansions);
|
|
124
|
+
if (mem) return mem;
|
|
126
125
|
}
|
|
127
|
-
|
|
128
|
-
for (isub = glu.xlsub(fsupc); isub < glu.xlsub(fsupc+1); isub++)
|
|
129
|
-
{
|
|
126
|
+
|
|
127
|
+
for (isub = glu.xlsub(fsupc); isub < glu.xlsub(fsupc + 1); isub++) {
|
|
130
128
|
irow = glu.lsub(isub);
|
|
131
129
|
glu.lusup(nextlu) = dense(irow);
|
|
132
|
-
dense(irow) = Scalar(0.0);
|
|
133
|
-
++nextlu;
|
|
130
|
+
dense(irow) = Scalar(0.0);
|
|
131
|
+
++nextlu;
|
|
134
132
|
}
|
|
135
|
-
|
|
136
|
-
if(offset)
|
|
137
|
-
|
|
138
|
-
glu.lusup.segment(nextlu,offset).setZero();
|
|
133
|
+
|
|
134
|
+
if (offset) {
|
|
135
|
+
glu.lusup.segment(nextlu, offset).setZero();
|
|
139
136
|
nextlu += offset;
|
|
140
137
|
}
|
|
141
|
-
glu.xlusup(jcol + 1) = StorageIndex(nextlu); // close L\U(*,jcol);
|
|
142
|
-
|
|
138
|
+
glu.xlusup(jcol + 1) = StorageIndex(nextlu); // close L\U(*,jcol);
|
|
139
|
+
|
|
143
140
|
/* For more updates within the panel (also within the current supernode),
|
|
144
141
|
* should start from the first column of the panel, or the first column
|
|
145
142
|
* of the supernode, whichever is bigger. There are two cases:
|
|
146
143
|
* 1) fsupc < fpanelc, then fst_col <-- fpanelc
|
|
147
144
|
* 2) fsupc >= fpanelc, then fst_col <-- fsupc
|
|
148
145
|
*/
|
|
149
|
-
fst_col = (std::max)(fsupc, fpanelc);
|
|
150
|
-
|
|
151
|
-
if (fst_col
|
|
152
|
-
{
|
|
146
|
+
fst_col = (std::max)(fsupc, fpanelc);
|
|
147
|
+
|
|
148
|
+
if (fst_col < jcol) {
|
|
153
149
|
// Distance between the current supernode and the current panel
|
|
154
150
|
// d_fsupc = 0 if fsupc >= fpanelc
|
|
155
|
-
d_fsupc = fst_col - fsupc;
|
|
156
|
-
|
|
157
|
-
lptr = glu.xlsub(fsupc) + d_fsupc;
|
|
158
|
-
luptr = glu.xlusup(fst_col) + d_fsupc;
|
|
159
|
-
nsupr = glu.xlsub(fsupc+1) - glu.xlsub(fsupc);
|
|
160
|
-
nsupc = jcol - fst_col;
|
|
161
|
-
nrow = nsupr - d_fsupc - nsupc;
|
|
162
|
-
|
|
163
|
-
// points to the beginning of jcol in snode L\U(jsupno)
|
|
164
|
-
ufirst = glu.xlusup(jcol) + d_fsupc;
|
|
165
|
-
Index lda = glu.xlusup(jcol+1) - glu.xlusup(jcol);
|
|
166
|
-
MappedMatrixBlock A(
|
|
167
|
-
VectorBlock<ScalarVector> u(glu.lusup, ufirst, nsupc);
|
|
168
|
-
u = A.template triangularView<UnitLower>().solve(u);
|
|
169
|
-
|
|
170
|
-
new (&A) MappedMatrixBlock
|
|
171
|
-
VectorBlock<ScalarVector> l(glu.lusup, ufirst+nsupc, nrow);
|
|
151
|
+
d_fsupc = fst_col - fsupc;
|
|
152
|
+
|
|
153
|
+
lptr = glu.xlsub(fsupc) + d_fsupc;
|
|
154
|
+
luptr = glu.xlusup(fst_col) + d_fsupc;
|
|
155
|
+
nsupr = glu.xlsub(fsupc + 1) - glu.xlsub(fsupc); // leading dimension
|
|
156
|
+
nsupc = jcol - fst_col; // excluding jcol
|
|
157
|
+
nrow = nsupr - d_fsupc - nsupc;
|
|
158
|
+
|
|
159
|
+
// points to the beginning of jcol in snode L\U(jsupno)
|
|
160
|
+
ufirst = glu.xlusup(jcol) + d_fsupc;
|
|
161
|
+
Index lda = glu.xlusup(jcol + 1) - glu.xlusup(jcol);
|
|
162
|
+
MappedMatrixBlock A(&(glu.lusup.data()[luptr]), nsupc, nsupc, OuterStride<>(lda));
|
|
163
|
+
VectorBlock<ScalarVector> u(glu.lusup, ufirst, nsupc);
|
|
164
|
+
u = A.template triangularView<UnitLower>().solve(u);
|
|
165
|
+
|
|
166
|
+
new (&A) MappedMatrixBlock(&(glu.lusup.data()[luptr + nsupc]), nrow, nsupc, OuterStride<>(lda));
|
|
167
|
+
VectorBlock<ScalarVector> l(glu.lusup, ufirst + nsupc, nrow);
|
|
172
168
|
l.noalias() -= A * u;
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
return 0;
|
|
169
|
+
|
|
170
|
+
} // End if fst_col
|
|
171
|
+
return 0;
|
|
176
172
|
}
|
|
177
173
|
|
|
178
|
-
}
|
|
179
|
-
}
|
|
174
|
+
} // end namespace internal
|
|
175
|
+
} // end namespace Eigen
|
|
180
176
|
|
|
181
|
-
#endif
|
|
177
|
+
#endif // SPARSELU_COLUMN_BMOD_H
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
8
8
|
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
9
9
|
|
|
10
|
-
/*
|
|
11
|
-
|
|
12
|
-
* NOTE: This file is the modified version of [s,d,c,z]column_dfs.c file in SuperLU
|
|
13
|
-
|
|
10
|
+
/*
|
|
11
|
+
|
|
12
|
+
* NOTE: This file is the modified version of [s,d,c,z]column_dfs.c file in SuperLU
|
|
13
|
+
|
|
14
14
|
* -- SuperLU routine (version 2.0) --
|
|
15
15
|
* Univ. of California Berkeley, Xerox Palo Alto Research Center,
|
|
16
16
|
* and Lawrence Berkeley National Lab.
|
|
@@ -30,150 +30,139 @@
|
|
|
30
30
|
#ifndef SPARSELU_COLUMN_DFS_H
|
|
31
31
|
#define SPARSELU_COLUMN_DFS_H
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
// IWYU pragma: private
|
|
34
|
+
#include "./InternalHeaderCheck.h"
|
|
35
35
|
|
|
36
|
+
namespace Eigen {
|
|
36
37
|
namespace internal {
|
|
37
38
|
|
|
38
|
-
template<typename
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
template <typename Scalar, typename StorageIndex>
|
|
40
|
+
class SparseLUImpl;
|
|
41
|
+
|
|
42
|
+
template <typename IndexVector, typename ScalarVector>
|
|
43
|
+
struct column_dfs_traits : no_assignment_operator {
|
|
41
44
|
typedef typename ScalarVector::Scalar Scalar;
|
|
42
45
|
typedef typename IndexVector::Scalar StorageIndex;
|
|
43
|
-
column_dfs_traits(Index jcol, Index& jsuper, typename SparseLUImpl<Scalar, StorageIndex>::GlobalLU_t& glu,
|
|
44
|
-
|
|
45
|
-
{}
|
|
46
|
-
bool update_segrep(Index /*krep*/, Index /*jj*/)
|
|
47
|
-
{
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
void mem_expand(IndexVector& lsub, Index& nextl, Index chmark)
|
|
51
|
-
{
|
|
52
|
-
if (nextl >= m_glu.nzlmax)
|
|
53
|
-
m_luImpl.memXpand(lsub, m_glu.nzlmax, nextl, LSUB, m_glu.num_expansions);
|
|
54
|
-
if (chmark != (m_jcol-1)) m_jsuper_ref = emptyIdxLU;
|
|
46
|
+
column_dfs_traits(Index jcol, Index& jsuper, typename SparseLUImpl<Scalar, StorageIndex>::GlobalLU_t& glu,
|
|
47
|
+
SparseLUImpl<Scalar, StorageIndex>& luImpl)
|
|
48
|
+
: m_jcol(jcol), m_jsuper_ref(jsuper), m_glu(glu), m_luImpl(luImpl) {}
|
|
49
|
+
bool update_segrep(Index /*krep*/, Index /*jj*/) { return true; }
|
|
50
|
+
void mem_expand(IndexVector& lsub, Index& nextl, Index chmark) {
|
|
51
|
+
if (nextl >= m_glu.nzlmax) m_luImpl.memXpand(lsub, m_glu.nzlmax, nextl, LSUB, m_glu.num_expansions);
|
|
52
|
+
if (chmark != (m_jcol - 1)) m_jsuper_ref = emptyIdxLU;
|
|
55
53
|
}
|
|
56
54
|
enum { ExpandMem = true };
|
|
57
|
-
|
|
55
|
+
|
|
58
56
|
Index m_jcol;
|
|
59
57
|
Index& m_jsuper_ref;
|
|
60
58
|
typename SparseLUImpl<Scalar, StorageIndex>::GlobalLU_t& m_glu;
|
|
61
59
|
SparseLUImpl<Scalar, StorageIndex>& m_luImpl;
|
|
62
60
|
};
|
|
63
61
|
|
|
64
|
-
|
|
65
62
|
/**
|
|
66
63
|
* \brief Performs a symbolic factorization on column jcol and decide the supernode boundary
|
|
67
|
-
*
|
|
64
|
+
*
|
|
68
65
|
* A supernode representative is the last column of a supernode.
|
|
69
|
-
* The nonzeros in U[*,j] are segments that end at supernodes representatives.
|
|
70
|
-
* The routine returns a list of the supernodal representatives
|
|
71
|
-
* in topological order of the dfs that generates them.
|
|
72
|
-
* The location of the first nonzero in each supernodal segment
|
|
73
|
-
* (supernodal entry location) is also returned.
|
|
74
|
-
*
|
|
66
|
+
* The nonzeros in U[*,j] are segments that end at supernodes representatives.
|
|
67
|
+
* The routine returns a list of the supernodal representatives
|
|
68
|
+
* in topological order of the dfs that generates them.
|
|
69
|
+
* The location of the first nonzero in each supernodal segment
|
|
70
|
+
* (supernodal entry location) is also returned.
|
|
71
|
+
*
|
|
75
72
|
* \param m number of rows in the matrix
|
|
76
|
-
* \param jcol Current column
|
|
73
|
+
* \param jcol Current column
|
|
77
74
|
* \param perm_r Row permutation
|
|
78
75
|
* \param maxsuper Maximum number of column allowed in a supernode
|
|
79
76
|
* \param [in,out] nseg Number of segments in current U[*,j] - new segments appended
|
|
80
77
|
* \param lsub_col defines the rhs vector to start the dfs
|
|
81
|
-
* \param [in,out] segrep Segment representatives - new segments appended
|
|
78
|
+
* \param [in,out] segrep Segment representatives - new segments appended
|
|
82
79
|
* \param repfnz First nonzero location in each row
|
|
83
|
-
* \param xprune
|
|
80
|
+
* \param xprune
|
|
84
81
|
* \param marker marker[i] == jj, if i was visited during dfs of current column jj;
|
|
85
82
|
* \param parent
|
|
86
83
|
* \param xplore working array
|
|
87
|
-
* \param glu global LU data
|
|
84
|
+
* \param glu global LU data
|
|
88
85
|
* \return 0 success
|
|
89
86
|
* > 0 number of bytes allocated when run out of space
|
|
90
|
-
*
|
|
87
|
+
*
|
|
91
88
|
*/
|
|
92
89
|
template <typename Scalar, typename StorageIndex>
|
|
93
|
-
Index SparseLUImpl<Scalar,StorageIndex>::column_dfs(const Index m, const Index jcol, IndexVector& perm_r,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
Index jsuper = glu.supno(jcol);
|
|
99
|
-
Index nextl = glu.xlsub(jcol);
|
|
100
|
-
VectorBlock<IndexVector> marker2(marker, 2*m, m);
|
|
101
|
-
|
|
102
|
-
|
|
90
|
+
Index SparseLUImpl<Scalar, StorageIndex>::column_dfs(const Index m, const Index jcol, IndexVector& perm_r,
|
|
91
|
+
Index maxsuper, Index& nseg, BlockIndexVector lsub_col,
|
|
92
|
+
IndexVector& segrep, BlockIndexVector repfnz, IndexVector& xprune,
|
|
93
|
+
IndexVector& marker, IndexVector& parent, IndexVector& xplore,
|
|
94
|
+
GlobalLU_t& glu) {
|
|
95
|
+
Index jsuper = glu.supno(jcol);
|
|
96
|
+
Index nextl = glu.xlsub(jcol);
|
|
97
|
+
VectorBlock<IndexVector> marker2(marker, 2 * m, m);
|
|
98
|
+
|
|
103
99
|
column_dfs_traits<IndexVector, ScalarVector> traits(jcol, jsuper, glu, *this);
|
|
104
|
-
|
|
105
|
-
// For each nonzero in A(*,jcol) do dfs
|
|
106
|
-
for (Index k = 0; ((k < m) ? lsub_col[k] != emptyIdxLU : false)
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
// krow was visited before, go to the next nonz;
|
|
100
|
+
|
|
101
|
+
// For each nonzero in A(*,jcol) do dfs
|
|
102
|
+
for (Index k = 0; ((k < m) ? lsub_col[k] != emptyIdxLU : false); k++) {
|
|
103
|
+
Index krow = lsub_col(k);
|
|
104
|
+
lsub_col(k) = emptyIdxLU;
|
|
105
|
+
Index kmark = marker2(krow);
|
|
106
|
+
|
|
107
|
+
// krow was visited before, go to the next nonz;
|
|
113
108
|
if (kmark == jcol) continue;
|
|
114
|
-
|
|
115
|
-
dfs_kernel(StorageIndex(jcol), perm_r, nseg, glu.lsub, segrep, repfnz, xprune, marker2, parent,
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
109
|
+
|
|
110
|
+
dfs_kernel(StorageIndex(jcol), perm_r, nseg, glu.lsub, segrep, repfnz, xprune, marker2, parent, xplore, glu, nextl,
|
|
111
|
+
krow, traits);
|
|
112
|
+
} // for each nonzero ...
|
|
113
|
+
|
|
119
114
|
Index fsupc;
|
|
120
115
|
StorageIndex nsuper = glu.supno(jcol);
|
|
121
116
|
StorageIndex jcolp1 = StorageIndex(jcol) + 1;
|
|
122
117
|
Index jcolm1 = jcol - 1;
|
|
123
|
-
|
|
118
|
+
|
|
124
119
|
// check to see if j belongs in the same supernode as j-1
|
|
125
|
-
if (
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
StorageIndex jptr = glu.xlsub(jcol); // Not yet compressed
|
|
133
|
-
StorageIndex jm1ptr = glu.xlsub(jcolm1);
|
|
134
|
-
|
|
120
|
+
if (jcol == 0) { // Do nothing for column 0
|
|
121
|
+
nsuper = glu.supno(0) = 0;
|
|
122
|
+
} else {
|
|
123
|
+
fsupc = glu.xsup(nsuper);
|
|
124
|
+
StorageIndex jptr = glu.xlsub(jcol); // Not yet compressed
|
|
125
|
+
StorageIndex jm1ptr = glu.xlsub(jcolm1);
|
|
126
|
+
|
|
135
127
|
// Use supernodes of type T2 : see SuperLU paper
|
|
136
|
-
if (
|
|
137
|
-
|
|
128
|
+
if ((nextl - jptr != jptr - jm1ptr - 1)) jsuper = emptyIdxLU;
|
|
129
|
+
|
|
138
130
|
// Make sure the number of columns in a supernode doesn't
|
|
139
131
|
// exceed threshold
|
|
140
|
-
if (
|
|
141
|
-
|
|
132
|
+
if ((jcol - fsupc) >= maxsuper) jsuper = emptyIdxLU;
|
|
133
|
+
|
|
142
134
|
/* If jcol starts a new supernode, reclaim storage space in
|
|
143
|
-
* glu.lsub from previous supernode. Note we only store
|
|
144
|
-
* the subscript set of the first and last columns of
|
|
135
|
+
* glu.lsub from previous supernode. Note we only store
|
|
136
|
+
* the subscript set of the first and last columns of
|
|
145
137
|
* a supernode. (first for num values, last for pruning)
|
|
146
138
|
*/
|
|
147
|
-
if (jsuper == emptyIdxLU)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
StorageIndex
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
glu.
|
|
156
|
-
|
|
157
|
-
for (StorageIndex ifrom = jm1ptr; ifrom < nextl; ++ifrom, ++ito)
|
|
158
|
-
glu.lsub(ito) = glu.lsub(ifrom);
|
|
139
|
+
if (jsuper == emptyIdxLU) { // starts a new supernode
|
|
140
|
+
if ((fsupc < jcolm1 - 1)) { // >= 3 columns in nsuper
|
|
141
|
+
StorageIndex ito = glu.xlsub(fsupc + 1);
|
|
142
|
+
glu.xlsub(jcolm1) = ito;
|
|
143
|
+
StorageIndex istop = ito + jptr - jm1ptr;
|
|
144
|
+
xprune(jcolm1) = istop; // initialize xprune(jcol-1)
|
|
145
|
+
glu.xlsub(jcol) = istop;
|
|
146
|
+
|
|
147
|
+
for (StorageIndex ifrom = jm1ptr; ifrom < nextl; ++ifrom, ++ito) glu.lsub(ito) = glu.lsub(ifrom);
|
|
159
148
|
nextl = ito; // = istop + length(jcol)
|
|
160
149
|
}
|
|
161
|
-
nsuper++;
|
|
162
|
-
glu.supno(jcol) = nsuper;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
150
|
+
nsuper++;
|
|
151
|
+
glu.supno(jcol) = nsuper;
|
|
152
|
+
} // if a new supernode
|
|
153
|
+
} // end else: jcol > 0
|
|
154
|
+
|
|
166
155
|
// Tidy up the pointers before exit
|
|
167
|
-
glu.xsup(nsuper+1) = jcolp1;
|
|
168
|
-
glu.supno(jcolp1) = nsuper;
|
|
169
|
-
xprune(jcol) = StorageIndex(nextl); //
|
|
170
|
-
glu.xlsub(jcolp1) = StorageIndex(nextl);
|
|
171
|
-
|
|
172
|
-
return 0;
|
|
156
|
+
glu.xsup(nsuper + 1) = jcolp1;
|
|
157
|
+
glu.supno(jcolp1) = nsuper;
|
|
158
|
+
xprune(jcol) = StorageIndex(nextl); // Initialize upper bound for pruning
|
|
159
|
+
glu.xlsub(jcolp1) = StorageIndex(nextl);
|
|
160
|
+
|
|
161
|
+
return 0;
|
|
173
162
|
}
|
|
174
163
|
|
|
175
|
-
}
|
|
164
|
+
} // end namespace internal
|
|
176
165
|
|
|
177
|
-
}
|
|
166
|
+
} // end namespace Eigen
|
|
178
167
|
|
|
179
168
|
#endif
|