@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
|
@@ -33,51 +33,65 @@
|
|
|
33
33
|
#ifndef EIGEN_PARTIALLU_LAPACK_H
|
|
34
34
|
#define EIGEN_PARTIALLU_LAPACK_H
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
// IWYU pragma: private
|
|
37
|
+
#include "./InternalHeaderCheck.h"
|
|
38
|
+
|
|
39
|
+
namespace Eigen {
|
|
37
40
|
|
|
38
41
|
namespace internal {
|
|
39
42
|
|
|
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
|
-
return first_zero_pivot; \
|
|
71
|
-
} \
|
|
43
|
+
namespace lapacke_helpers {
|
|
44
|
+
// -------------------------------------------------------------------------------------------------------------------
|
|
45
|
+
// Generic lapacke partial lu implementation that converts arguments and dispatches to the function above
|
|
46
|
+
// -------------------------------------------------------------------------------------------------------------------
|
|
47
|
+
|
|
48
|
+
template <typename Scalar, int StorageOrder>
|
|
49
|
+
struct lapacke_partial_lu {
|
|
50
|
+
/** \internal performs the LU decomposition in-place of the matrix represented */
|
|
51
|
+
static lapack_int blocked_lu(Index rows, Index cols, Scalar* lu_data, Index luStride, lapack_int* row_transpositions,
|
|
52
|
+
lapack_int& nb_transpositions, lapack_int maxBlockSize = 256) {
|
|
53
|
+
EIGEN_UNUSED_VARIABLE(maxBlockSize);
|
|
54
|
+
// Set up parameters for getrf
|
|
55
|
+
lapack_int matrix_order = StorageOrder == RowMajor ? LAPACK_ROW_MAJOR : LAPACK_COL_MAJOR;
|
|
56
|
+
lapack_int lda = to_lapack(luStride);
|
|
57
|
+
Scalar* a = lu_data;
|
|
58
|
+
lapack_int* ipiv = row_transpositions;
|
|
59
|
+
lapack_int m = to_lapack(rows);
|
|
60
|
+
lapack_int n = to_lapack(cols);
|
|
61
|
+
nb_transpositions = 0;
|
|
62
|
+
|
|
63
|
+
lapack_int info = getrf(matrix_order, m, n, to_lapack(a), lda, ipiv);
|
|
64
|
+
eigen_assert(info >= 0);
|
|
65
|
+
|
|
66
|
+
for (int i = 0; i < m; i++) {
|
|
67
|
+
ipiv[i]--;
|
|
68
|
+
if (ipiv[i] != i) nb_transpositions++;
|
|
69
|
+
}
|
|
70
|
+
lapack_int first_zero_pivot = info;
|
|
71
|
+
return first_zero_pivot;
|
|
72
|
+
}
|
|
72
73
|
};
|
|
74
|
+
} // end namespace lapacke_helpers
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
* Here, we just put the generic implementation from lapacke_partial_lu into a partial specialization of the
|
|
78
|
+
* partial_lu_impl type. This specialization is more specialized than the generic implementations that Eigen implements,
|
|
79
|
+
* so if the Scalar type matches they will be chosen.
|
|
80
|
+
*/
|
|
81
|
+
#define EIGEN_LAPACKE_PARTIAL_LU(EIGTYPE) \
|
|
82
|
+
template <int StorageOrder> \
|
|
83
|
+
struct partial_lu_impl<EIGTYPE, StorageOrder, lapack_int, Dynamic> \
|
|
84
|
+
: public lapacke_helpers::lapacke_partial_lu<EIGTYPE, StorageOrder> {};
|
|
85
|
+
|
|
86
|
+
EIGEN_LAPACKE_PARTIAL_LU(double)
|
|
87
|
+
EIGEN_LAPACKE_PARTIAL_LU(float)
|
|
88
|
+
EIGEN_LAPACKE_PARTIAL_LU(std::complex<double>)
|
|
89
|
+
EIGEN_LAPACKE_PARTIAL_LU(std::complex<float>)
|
|
73
90
|
|
|
74
|
-
|
|
75
|
-
EIGEN_LAPACKE_LU_PARTPIV(float, float, s)
|
|
76
|
-
EIGEN_LAPACKE_LU_PARTPIV(dcomplex, lapack_complex_double, z)
|
|
77
|
-
EIGEN_LAPACKE_LU_PARTPIV(scomplex, lapack_complex_float, c)
|
|
91
|
+
#undef EIGEN_LAPACKE_PARTIAL_LU
|
|
78
92
|
|
|
79
|
-
}
|
|
93
|
+
} // end namespace internal
|
|
80
94
|
|
|
81
|
-
}
|
|
95
|
+
} // end namespace Eigen
|
|
82
96
|
|
|
83
|
-
#endif
|
|
97
|
+
#endif // EIGEN_PARTIALLU_LAPACK_H
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
//
|
|
25
25
|
// Copyright (c) 2001 Intel Corporation.
|
|
26
26
|
//
|
|
27
|
-
//
|
|
27
|
+
// Permission is granted to use, copy, distribute and prepare derivative works
|
|
28
28
|
// of this library for any purpose and without fee, provided, that the above
|
|
29
29
|
// copyright notice and this statement appear in all copies.
|
|
30
30
|
// Intel makes no representations about the suitability of this software for
|
|
@@ -35,50 +35,54 @@
|
|
|
35
35
|
#ifndef EIGEN_INVERSE_SIZE_4_H
|
|
36
36
|
#define EIGEN_INVERSE_SIZE_4_H
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
// IWYU pragma: private
|
|
39
|
+
#include "../InternalHeaderCheck.h"
|
|
40
|
+
|
|
41
|
+
#if EIGEN_COMP_GNUC_STRICT
|
|
42
|
+
// These routines requires bit manipulation of the sign, which is not compatible
|
|
43
|
+
// with fastmath.
|
|
44
|
+
#pragma GCC push_options
|
|
45
|
+
#pragma GCC optimize("no-fast-math")
|
|
46
|
+
#endif
|
|
47
|
+
|
|
48
|
+
namespace Eigen {
|
|
49
|
+
namespace internal {
|
|
42
50
|
template <typename MatrixType, typename ResultType>
|
|
43
|
-
struct compute_inverse_size4<Architecture::Target, float, MatrixType, ResultType>
|
|
44
|
-
{
|
|
45
|
-
enum
|
|
46
|
-
{
|
|
51
|
+
struct compute_inverse_size4<Architecture::Target, float, MatrixType, ResultType> {
|
|
52
|
+
enum {
|
|
47
53
|
MatrixAlignment = traits<MatrixType>::Alignment,
|
|
48
54
|
ResultAlignment = traits<ResultType>::Alignment,
|
|
49
55
|
StorageOrdersMatch = (MatrixType::Flags & RowMajorBit) == (ResultType::Flags & RowMajorBit)
|
|
50
56
|
};
|
|
51
|
-
typedef
|
|
57
|
+
typedef std::conditional_t<(MatrixType::Flags & LinearAccessBit), MatrixType const &,
|
|
58
|
+
typename MatrixType::PlainObject>
|
|
59
|
+
ActualMatrixType;
|
|
52
60
|
|
|
53
|
-
static void run(const MatrixType &mat, ResultType &result)
|
|
54
|
-
{
|
|
61
|
+
static void run(const MatrixType &mat, ResultType &result) {
|
|
55
62
|
ActualMatrixType matrix(mat);
|
|
56
63
|
|
|
57
|
-
const float*
|
|
64
|
+
const float *data = matrix.data();
|
|
58
65
|
const Index stride = matrix.innerStride();
|
|
59
|
-
Packet4f
|
|
60
|
-
Packet4f
|
|
61
|
-
Packet4f
|
|
62
|
-
Packet4f
|
|
66
|
+
Packet4f L1 = ploadt<Packet4f, MatrixAlignment>(data);
|
|
67
|
+
Packet4f L2 = ploadt<Packet4f, MatrixAlignment>(data + stride * 4);
|
|
68
|
+
Packet4f L3 = ploadt<Packet4f, MatrixAlignment>(data + stride * 8);
|
|
69
|
+
Packet4f L4 = ploadt<Packet4f, MatrixAlignment>(data + stride * 12);
|
|
63
70
|
|
|
64
71
|
// Four 2x2 sub-matrices of the input matrix
|
|
65
72
|
// input = [[A, B],
|
|
66
73
|
// [C, D]]
|
|
67
74
|
Packet4f A, B, C, D;
|
|
68
75
|
|
|
69
|
-
if (!StorageOrdersMatch)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
B = vec4f_movehl(_L2, _L1);
|
|
80
|
-
C = vec4f_movelh(_L3, _L4);
|
|
81
|
-
D = vec4f_movehl(_L4, _L3);
|
|
76
|
+
if (!StorageOrdersMatch) {
|
|
77
|
+
A = vec4f_unpacklo(L1, L2);
|
|
78
|
+
B = vec4f_unpacklo(L3, L4);
|
|
79
|
+
C = vec4f_unpackhi(L1, L2);
|
|
80
|
+
D = vec4f_unpackhi(L3, L4);
|
|
81
|
+
} else {
|
|
82
|
+
A = vec4f_movelh(L1, L2);
|
|
83
|
+
B = vec4f_movehl(L2, L1);
|
|
84
|
+
C = vec4f_movelh(L3, L4);
|
|
85
|
+
D = vec4f_movehl(L4, L3);
|
|
82
86
|
}
|
|
83
87
|
|
|
84
88
|
Packet4f AB, DC;
|
|
@@ -118,7 +122,7 @@ struct compute_inverse_size4<Architecture::Target, float, MatrixType, ResultType
|
|
|
118
122
|
Packet4f det = vec4f_duplane(psub(padd(d1, d2), d), 0);
|
|
119
123
|
|
|
120
124
|
// reciprocal of the determinant of the input matrix, rd = 1/det
|
|
121
|
-
Packet4f rd =
|
|
125
|
+
Packet4f rd = preciprocal(det);
|
|
122
126
|
|
|
123
127
|
// Four sub-matrices of the inverse
|
|
124
128
|
Packet4f iA, iB, iC, iD;
|
|
@@ -143,8 +147,8 @@ struct compute_inverse_size4<Architecture::Target, float, MatrixType, ResultType
|
|
|
143
147
|
iC = psub(iC, pmul(vec4f_swizzle2(A, A, 1, 0, 3, 2), vec4f_swizzle2(DC, DC, 2, 1, 2, 1)));
|
|
144
148
|
iC = psub(pmul(B, vec4f_duplane(dC, 0)), iC);
|
|
145
149
|
|
|
146
|
-
const float sign_mask[4] = {0.0f,
|
|
147
|
-
const Packet4f p4f_sign_PNNP =
|
|
150
|
+
EIGEN_ALIGN_MAX const float sign_mask[4] = {0.0f, -0.0f, -0.0f, 0.0f};
|
|
151
|
+
const Packet4f p4f_sign_PNNP = pload<Packet4f>(sign_mask);
|
|
148
152
|
rd = pxor(rd, p4f_sign_PNNP);
|
|
149
153
|
iA = pmul(iA, rd);
|
|
150
154
|
iB = pmul(iB, rd);
|
|
@@ -165,21 +169,17 @@ struct compute_inverse_size4<Architecture::Target, float, MatrixType, ResultType
|
|
|
165
169
|
// same algorithm as above, except that each operand is split into
|
|
166
170
|
// halves for two registers to hold.
|
|
167
171
|
template <typename MatrixType, typename ResultType>
|
|
168
|
-
struct compute_inverse_size4<Architecture::Target, double, MatrixType, ResultType>
|
|
169
|
-
{
|
|
170
|
-
enum
|
|
171
|
-
{
|
|
172
|
+
struct compute_inverse_size4<Architecture::Target, double, MatrixType, ResultType> {
|
|
173
|
+
enum {
|
|
172
174
|
MatrixAlignment = traits<MatrixType>::Alignment,
|
|
173
175
|
ResultAlignment = traits<ResultType>::Alignment,
|
|
174
176
|
StorageOrdersMatch = (MatrixType::Flags & RowMajorBit) == (ResultType::Flags & RowMajorBit)
|
|
175
177
|
};
|
|
176
|
-
typedef
|
|
177
|
-
|
|
178
|
-
typename MatrixType::PlainObject>::type
|
|
178
|
+
typedef std::conditional_t<(MatrixType::Flags & LinearAccessBit), MatrixType const &,
|
|
179
|
+
typename MatrixType::PlainObject>
|
|
179
180
|
ActualMatrixType;
|
|
180
181
|
|
|
181
|
-
static void run(const MatrixType &mat, ResultType &result)
|
|
182
|
-
{
|
|
182
|
+
static void run(const MatrixType &mat, ResultType &result) {
|
|
183
183
|
ActualMatrixType matrix(mat);
|
|
184
184
|
|
|
185
185
|
// Four 2x2 sub-matrices of the input matrix, each is further divided into upper and lower
|
|
@@ -191,26 +191,23 @@ struct compute_inverse_size4<Architecture::Target, double, MatrixType, ResultTyp
|
|
|
191
191
|
|
|
192
192
|
Packet2d A1, A2, B1, B2, C1, C2, D1, D2;
|
|
193
193
|
|
|
194
|
-
const double*
|
|
194
|
+
const double *data = matrix.data();
|
|
195
195
|
const Index stride = matrix.innerStride();
|
|
196
|
-
if (StorageOrdersMatch)
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
else
|
|
208
|
-
{
|
|
196
|
+
if (StorageOrdersMatch) {
|
|
197
|
+
A1 = ploadt<Packet2d, MatrixAlignment>(data + stride * 0);
|
|
198
|
+
B1 = ploadt<Packet2d, MatrixAlignment>(data + stride * 2);
|
|
199
|
+
A2 = ploadt<Packet2d, MatrixAlignment>(data + stride * 4);
|
|
200
|
+
B2 = ploadt<Packet2d, MatrixAlignment>(data + stride * 6);
|
|
201
|
+
C1 = ploadt<Packet2d, MatrixAlignment>(data + stride * 8);
|
|
202
|
+
D1 = ploadt<Packet2d, MatrixAlignment>(data + stride * 10);
|
|
203
|
+
C2 = ploadt<Packet2d, MatrixAlignment>(data + stride * 12);
|
|
204
|
+
D2 = ploadt<Packet2d, MatrixAlignment>(data + stride * 14);
|
|
205
|
+
} else {
|
|
209
206
|
Packet2d temp;
|
|
210
|
-
A1 = ploadt<Packet2d,MatrixAlignment>(data + stride*0);
|
|
211
|
-
C1 = ploadt<Packet2d,MatrixAlignment>(data + stride*2);
|
|
212
|
-
A2 = ploadt<Packet2d,MatrixAlignment>(data + stride*4);
|
|
213
|
-
C2 = ploadt<Packet2d,MatrixAlignment>(data + stride*6);
|
|
207
|
+
A1 = ploadt<Packet2d, MatrixAlignment>(data + stride * 0);
|
|
208
|
+
C1 = ploadt<Packet2d, MatrixAlignment>(data + stride * 2);
|
|
209
|
+
A2 = ploadt<Packet2d, MatrixAlignment>(data + stride * 4);
|
|
210
|
+
C2 = ploadt<Packet2d, MatrixAlignment>(data + stride * 6);
|
|
214
211
|
temp = A1;
|
|
215
212
|
A1 = vec2d_unpacklo(A1, A2);
|
|
216
213
|
A2 = vec2d_unpackhi(temp, A2);
|
|
@@ -219,10 +216,10 @@ struct compute_inverse_size4<Architecture::Target, double, MatrixType, ResultTyp
|
|
|
219
216
|
C1 = vec2d_unpacklo(C1, C2);
|
|
220
217
|
C2 = vec2d_unpackhi(temp, C2);
|
|
221
218
|
|
|
222
|
-
B1 = ploadt<Packet2d,MatrixAlignment>(data + stride*8);
|
|
223
|
-
D1 = ploadt<Packet2d,MatrixAlignment>(data + stride*10);
|
|
224
|
-
B2 = ploadt<Packet2d,MatrixAlignment>(data + stride*12);
|
|
225
|
-
D2 = ploadt<Packet2d,MatrixAlignment>(data + stride*14);
|
|
219
|
+
B1 = ploadt<Packet2d, MatrixAlignment>(data + stride * 8);
|
|
220
|
+
D1 = ploadt<Packet2d, MatrixAlignment>(data + stride * 10);
|
|
221
|
+
B2 = ploadt<Packet2d, MatrixAlignment>(data + stride * 12);
|
|
222
|
+
D2 = ploadt<Packet2d, MatrixAlignment>(data + stride * 14);
|
|
226
223
|
|
|
227
224
|
temp = B1;
|
|
228
225
|
B1 = vec2d_unpacklo(B1, B2);
|
|
@@ -326,10 +323,10 @@ struct compute_inverse_size4<Architecture::Target, double, MatrixType, ResultTyp
|
|
|
326
323
|
iC1 = psub(pmul(B1, dC), iC1);
|
|
327
324
|
iC2 = psub(pmul(B2, dC), iC2);
|
|
328
325
|
|
|
329
|
-
const double sign_mask1[2] = {0.0,
|
|
330
|
-
const double sign_mask2[2] = {
|
|
331
|
-
const Packet2d sign_PN =
|
|
332
|
-
const Packet2d sign_NP =
|
|
326
|
+
EIGEN_ALIGN_MAX const double sign_mask1[2] = {0.0, -0.0};
|
|
327
|
+
EIGEN_ALIGN_MAX const double sign_mask2[2] = {-0.0, 0.0};
|
|
328
|
+
const Packet2d sign_PN = pload<Packet2d>(sign_mask1);
|
|
329
|
+
const Packet2d sign_NP = pload<Packet2d>(sign_mask2);
|
|
333
330
|
d1 = pxor(rd, sign_PN);
|
|
334
331
|
d2 = pxor(rd, sign_NP);
|
|
335
332
|
|
|
@@ -346,6 +343,11 @@ struct compute_inverse_size4<Architecture::Target, double, MatrixType, ResultTyp
|
|
|
346
343
|
}
|
|
347
344
|
};
|
|
348
345
|
#endif
|
|
349
|
-
}
|
|
350
|
-
}
|
|
346
|
+
} // namespace internal
|
|
347
|
+
} // namespace Eigen
|
|
348
|
+
|
|
349
|
+
#if EIGEN_COMP_GNUC_STRICT
|
|
350
|
+
#pragma GCC pop_options
|
|
351
|
+
#endif
|
|
352
|
+
|
|
351
353
|
#endif
|
|
@@ -9,129 +9,117 @@
|
|
|
9
9
|
#ifndef METIS_SUPPORT_H
|
|
10
10
|
#define METIS_SUPPORT_H
|
|
11
11
|
|
|
12
|
+
// IWYU pragma: private
|
|
13
|
+
#include "./InternalHeaderCheck.h"
|
|
14
|
+
|
|
12
15
|
namespace Eigen {
|
|
13
16
|
/**
|
|
14
17
|
* Get the fill-reducing ordering from the METIS package
|
|
15
|
-
*
|
|
16
|
-
* If A is the original matrix and Ap is the permuted matrix,
|
|
18
|
+
*
|
|
19
|
+
* If A is the original matrix and Ap is the permuted matrix,
|
|
17
20
|
* the fill-reducing permutation is defined as follows :
|
|
18
|
-
* Row (column) i of A is the matperm(i) row (column) of Ap.
|
|
21
|
+
* Row (column) i of A is the matperm(i) row (column) of Ap.
|
|
19
22
|
* WARNING: As computed by METIS, this corresponds to the vector iperm (instead of perm)
|
|
20
23
|
*/
|
|
21
24
|
template <typename StorageIndex>
|
|
22
|
-
class MetisOrdering
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
typedef
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
class MetisOrdering {
|
|
26
|
+
public:
|
|
27
|
+
typedef PermutationMatrix<Dynamic, Dynamic, StorageIndex> PermutationType;
|
|
28
|
+
typedef Matrix<StorageIndex, Dynamic, 1> IndexVector;
|
|
29
|
+
|
|
28
30
|
template <typename MatrixType>
|
|
29
|
-
void get_symmetrized_graph(const MatrixType& A)
|
|
30
|
-
|
|
31
|
-
Index m = A.cols();
|
|
31
|
+
void get_symmetrized_graph(const MatrixType& A) {
|
|
32
|
+
Index m = A.cols();
|
|
32
33
|
eigen_assert((A.rows() == A.cols()) && "ONLY FOR SQUARED MATRICES");
|
|
33
|
-
// Get the transpose of the input matrix
|
|
34
|
-
MatrixType At = A.transpose();
|
|
34
|
+
// Get the transpose of the input matrix
|
|
35
|
+
MatrixType At = A.transpose();
|
|
35
36
|
// Get the number of nonzeros elements in each row/col of At+A
|
|
36
|
-
Index TotNz = 0;
|
|
37
|
-
IndexVector visited(m);
|
|
38
|
-
visited.setConstant(-1);
|
|
39
|
-
for (StorageIndex j = 0; j < m; j++)
|
|
40
|
-
{
|
|
37
|
+
Index TotNz = 0;
|
|
38
|
+
IndexVector visited(m);
|
|
39
|
+
visited.setConstant(-1);
|
|
40
|
+
for (StorageIndex j = 0; j < m; j++) {
|
|
41
41
|
// Compute the union structure of of A(j,:) and At(j,:)
|
|
42
|
-
visited(j) = j;
|
|
42
|
+
visited(j) = j; // Do not include the diagonal element
|
|
43
43
|
// Get the nonzeros in row/column j of A
|
|
44
|
-
for (typename MatrixType::InnerIterator it(A, j); it; ++it)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
visited(idx) = j;
|
|
50
|
-
++TotNz;
|
|
44
|
+
for (typename MatrixType::InnerIterator it(A, j); it; ++it) {
|
|
45
|
+
Index idx = it.index(); // Get the row index (for column major) or column index (for row major)
|
|
46
|
+
if (visited(idx) != j) {
|
|
47
|
+
visited(idx) = j;
|
|
48
|
+
++TotNz;
|
|
51
49
|
}
|
|
52
50
|
}
|
|
53
|
-
//Get the nonzeros in row/column j of At
|
|
54
|
-
for (typename MatrixType::InnerIterator it(At, j); it; ++it)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
visited(idx) = j;
|
|
60
|
-
++TotNz;
|
|
51
|
+
// Get the nonzeros in row/column j of At
|
|
52
|
+
for (typename MatrixType::InnerIterator it(At, j); it; ++it) {
|
|
53
|
+
Index idx = it.index();
|
|
54
|
+
if (visited(idx) != j) {
|
|
55
|
+
visited(idx) = j;
|
|
56
|
+
++TotNz;
|
|
61
57
|
}
|
|
62
58
|
}
|
|
63
59
|
}
|
|
64
60
|
// Reserve place for A + At
|
|
65
|
-
m_indexPtr.resize(m+1);
|
|
66
|
-
m_innerIndices.resize(TotNz);
|
|
61
|
+
m_indexPtr.resize(m + 1);
|
|
62
|
+
m_innerIndices.resize(TotNz);
|
|
63
|
+
|
|
64
|
+
// Now compute the real adjacency list of each column/row
|
|
65
|
+
visited.setConstant(-1);
|
|
66
|
+
StorageIndex CurNz = 0;
|
|
67
|
+
for (StorageIndex j = 0; j < m; j++) {
|
|
68
|
+
m_indexPtr(j) = CurNz;
|
|
67
69
|
|
|
68
|
-
|
|
69
|
-
visited.setConstant(-1);
|
|
70
|
-
StorageIndex CurNz = 0;
|
|
71
|
-
for (StorageIndex j = 0; j < m; j++)
|
|
72
|
-
{
|
|
73
|
-
m_indexPtr(j) = CurNz;
|
|
74
|
-
|
|
75
|
-
visited(j) = j; // Do not include the diagonal element
|
|
70
|
+
visited(j) = j; // Do not include the diagonal element
|
|
76
71
|
// Add the pattern of row/column j of A to A+At
|
|
77
|
-
for (typename MatrixType::InnerIterator it(A,j); it; ++it)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
m_innerIndices(CurNz) = idx;
|
|
84
|
-
CurNz++;
|
|
72
|
+
for (typename MatrixType::InnerIterator it(A, j); it; ++it) {
|
|
73
|
+
StorageIndex idx = it.index(); // Get the row index (for column major) or column index (for row major)
|
|
74
|
+
if (visited(idx) != j) {
|
|
75
|
+
visited(idx) = j;
|
|
76
|
+
m_innerIndices(CurNz) = idx;
|
|
77
|
+
CurNz++;
|
|
85
78
|
}
|
|
86
79
|
}
|
|
87
|
-
//Add the pattern of row/column j of At to A+At
|
|
88
|
-
for (typename MatrixType::InnerIterator it(At, j); it; ++it)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
m_innerIndices(CurNz) = idx;
|
|
95
|
-
++CurNz;
|
|
80
|
+
// Add the pattern of row/column j of At to A+At
|
|
81
|
+
for (typename MatrixType::InnerIterator it(At, j); it; ++it) {
|
|
82
|
+
StorageIndex idx = it.index();
|
|
83
|
+
if (visited(idx) != j) {
|
|
84
|
+
visited(idx) = j;
|
|
85
|
+
m_innerIndices(CurNz) = idx;
|
|
86
|
+
++CurNz;
|
|
96
87
|
}
|
|
97
88
|
}
|
|
98
89
|
}
|
|
99
|
-
m_indexPtr(m) = CurNz;
|
|
90
|
+
m_indexPtr(m) = CurNz;
|
|
100
91
|
}
|
|
101
|
-
|
|
92
|
+
|
|
102
93
|
template <typename MatrixType>
|
|
103
|
-
void operator()
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
// First, symmetrize the matrix graph.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if(output_error != METIS_OK)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
return;
|
|
94
|
+
void operator()(const MatrixType& A, PermutationType& matperm) {
|
|
95
|
+
StorageIndex m = internal::convert_index<StorageIndex>(
|
|
96
|
+
A.cols()); // must be StorageIndex, because it is passed by address to METIS
|
|
97
|
+
IndexVector perm(m), iperm(m);
|
|
98
|
+
// First, symmetrize the matrix graph.
|
|
99
|
+
get_symmetrized_graph(A);
|
|
100
|
+
int output_error;
|
|
101
|
+
|
|
102
|
+
// Call the fill-reducing routine from METIS
|
|
103
|
+
output_error = METIS_NodeND(&m, m_indexPtr.data(), m_innerIndices.data(), NULL, NULL, perm.data(), iperm.data());
|
|
104
|
+
|
|
105
|
+
if (output_error != METIS_OK) {
|
|
106
|
+
// FIXME The ordering interface should define a class of possible errors
|
|
107
|
+
std::cerr << "ERROR WHILE CALLING THE METIS PACKAGE \n";
|
|
108
|
+
return;
|
|
119
109
|
}
|
|
120
|
-
|
|
121
|
-
// Get the fill-reducing permutation
|
|
122
|
-
//NOTE: If Ap is the permuted matrix then perm and iperm vectors are defined as follows
|
|
110
|
+
|
|
111
|
+
// Get the fill-reducing permutation
|
|
112
|
+
// NOTE: If Ap is the permuted matrix then perm and iperm vectors are defined as follows
|
|
123
113
|
// Row (column) i of Ap is the perm(i) row(column) of A, and row (column) i of A is the iperm(i) row(column) of Ap
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
matperm.indices()(iperm(j)) = j;
|
|
128
|
-
|
|
114
|
+
|
|
115
|
+
matperm.resize(m);
|
|
116
|
+
for (int j = 0; j < m; j++) matperm.indices()(iperm(j)) = j;
|
|
129
117
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
118
|
+
|
|
119
|
+
protected:
|
|
120
|
+
IndexVector m_indexPtr; // Pointer to the adjacenccy list of each row/column
|
|
121
|
+
IndexVector m_innerIndices; // Adjacency list
|
|
134
122
|
};
|
|
135
123
|
|
|
136
|
-
}//
|
|
124
|
+
} // namespace Eigen
|
|
137
125
|
#endif
|