@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
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
#ifndef EIGEN_ACCELERATESUPPORT_H
|
|
2
|
+
#define EIGEN_ACCELERATESUPPORT_H
|
|
3
|
+
|
|
4
|
+
#include <Accelerate/Accelerate.h>
|
|
5
|
+
|
|
6
|
+
#include <Eigen/Sparse>
|
|
7
|
+
|
|
8
|
+
namespace Eigen {
|
|
9
|
+
|
|
10
|
+
template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
|
|
11
|
+
class AccelerateImpl;
|
|
12
|
+
|
|
13
|
+
/** \ingroup AccelerateSupport_Module
|
|
14
|
+
* \typedef AccelerateLLT
|
|
15
|
+
* \brief A direct Cholesky (LLT) factorization and solver based on Accelerate
|
|
16
|
+
*
|
|
17
|
+
* \warning Only single and double precision real scalar types are supported by Accelerate
|
|
18
|
+
*
|
|
19
|
+
* \tparam MatrixType_ the type of the sparse matrix A, it must be a SparseMatrix<>
|
|
20
|
+
* \tparam UpLo_ additional information about the matrix structure. Default is Lower.
|
|
21
|
+
*
|
|
22
|
+
* \sa \ref TutorialSparseSolverConcept, class AccelerateLLT
|
|
23
|
+
*/
|
|
24
|
+
template <typename MatrixType, int UpLo = Lower>
|
|
25
|
+
using AccelerateLLT = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationCholesky, true>;
|
|
26
|
+
|
|
27
|
+
/** \ingroup AccelerateSupport_Module
|
|
28
|
+
* \typedef AccelerateLDLT
|
|
29
|
+
* \brief The default Cholesky (LDLT) factorization and solver based on Accelerate
|
|
30
|
+
*
|
|
31
|
+
* \warning Only single and double precision real scalar types are supported by Accelerate
|
|
32
|
+
*
|
|
33
|
+
* \tparam MatrixType_ the type of the sparse matrix A, it must be a SparseMatrix<>
|
|
34
|
+
* \tparam UpLo_ additional information about the matrix structure. Default is Lower.
|
|
35
|
+
*
|
|
36
|
+
* \sa \ref TutorialSparseSolverConcept, class AccelerateLDLT
|
|
37
|
+
*/
|
|
38
|
+
template <typename MatrixType, int UpLo = Lower>
|
|
39
|
+
using AccelerateLDLT = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLT, true>;
|
|
40
|
+
|
|
41
|
+
/** \ingroup AccelerateSupport_Module
|
|
42
|
+
* \typedef AccelerateLDLTUnpivoted
|
|
43
|
+
* \brief A direct Cholesky-like LDL^T factorization and solver based on Accelerate with only 1x1 pivots and no pivoting
|
|
44
|
+
*
|
|
45
|
+
* \warning Only single and double precision real scalar types are supported by Accelerate
|
|
46
|
+
*
|
|
47
|
+
* \tparam MatrixType_ the type of the sparse matrix A, it must be a SparseMatrix<>
|
|
48
|
+
* \tparam UpLo_ additional information about the matrix structure. Default is Lower.
|
|
49
|
+
*
|
|
50
|
+
* \sa \ref TutorialSparseSolverConcept, class AccelerateLDLTUnpivoted
|
|
51
|
+
*/
|
|
52
|
+
template <typename MatrixType, int UpLo = Lower>
|
|
53
|
+
using AccelerateLDLTUnpivoted = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLTUnpivoted, true>;
|
|
54
|
+
|
|
55
|
+
/** \ingroup AccelerateSupport_Module
|
|
56
|
+
* \typedef AccelerateLDLTSBK
|
|
57
|
+
* \brief A direct Cholesky (LDLT) factorization and solver based on Accelerate with Supernode Bunch-Kaufman and static
|
|
58
|
+
* pivoting
|
|
59
|
+
*
|
|
60
|
+
* \warning Only single and double precision real scalar types are supported by Accelerate
|
|
61
|
+
*
|
|
62
|
+
* \tparam MatrixType_ the type of the sparse matrix A, it must be a SparseMatrix<>
|
|
63
|
+
* \tparam UpLo_ additional information about the matrix structure. Default is Lower.
|
|
64
|
+
*
|
|
65
|
+
* \sa \ref TutorialSparseSolverConcept, class AccelerateLDLTSBK
|
|
66
|
+
*/
|
|
67
|
+
template <typename MatrixType, int UpLo = Lower>
|
|
68
|
+
using AccelerateLDLTSBK = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLTSBK, true>;
|
|
69
|
+
|
|
70
|
+
/** \ingroup AccelerateSupport_Module
|
|
71
|
+
* \typedef AccelerateLDLTTPP
|
|
72
|
+
* \brief A direct Cholesky (LDLT) factorization and solver based on Accelerate with full threshold partial pivoting
|
|
73
|
+
*
|
|
74
|
+
* \warning Only single and double precision real scalar types are supported by Accelerate
|
|
75
|
+
*
|
|
76
|
+
* \tparam MatrixType_ the type of the sparse matrix A, it must be a SparseMatrix<>
|
|
77
|
+
* \tparam UpLo_ additional information about the matrix structure. Default is Lower.
|
|
78
|
+
*
|
|
79
|
+
* \sa \ref TutorialSparseSolverConcept, class AccelerateLDLTTPP
|
|
80
|
+
*/
|
|
81
|
+
template <typename MatrixType, int UpLo = Lower>
|
|
82
|
+
using AccelerateLDLTTPP = AccelerateImpl<MatrixType, UpLo | Symmetric, SparseFactorizationLDLTTPP, true>;
|
|
83
|
+
|
|
84
|
+
/** \ingroup AccelerateSupport_Module
|
|
85
|
+
* \typedef AccelerateQR
|
|
86
|
+
* \brief A QR factorization and solver based on Accelerate
|
|
87
|
+
*
|
|
88
|
+
* \warning Only single and double precision real scalar types are supported by Accelerate
|
|
89
|
+
*
|
|
90
|
+
* \tparam MatrixType_ the type of the sparse matrix A, it must be a SparseMatrix<>
|
|
91
|
+
*
|
|
92
|
+
* \sa \ref TutorialSparseSolverConcept, class AccelerateQR
|
|
93
|
+
*/
|
|
94
|
+
template <typename MatrixType>
|
|
95
|
+
using AccelerateQR = AccelerateImpl<MatrixType, 0, SparseFactorizationQR, false>;
|
|
96
|
+
|
|
97
|
+
/** \ingroup AccelerateSupport_Module
|
|
98
|
+
* \typedef AccelerateCholeskyAtA
|
|
99
|
+
* \brief A QR factorization and solver based on Accelerate without storing Q (equivalent to A^TA = R^T R)
|
|
100
|
+
*
|
|
101
|
+
* \warning Only single and double precision real scalar types are supported by Accelerate
|
|
102
|
+
*
|
|
103
|
+
* \tparam MatrixType_ the type of the sparse matrix A, it must be a SparseMatrix<>
|
|
104
|
+
*
|
|
105
|
+
* \sa \ref TutorialSparseSolverConcept, class AccelerateCholeskyAtA
|
|
106
|
+
*/
|
|
107
|
+
template <typename MatrixType>
|
|
108
|
+
using AccelerateCholeskyAtA = AccelerateImpl<MatrixType, 0, SparseFactorizationCholeskyAtA, false>;
|
|
109
|
+
|
|
110
|
+
namespace internal {
|
|
111
|
+
template <typename T>
|
|
112
|
+
struct AccelFactorizationDeleter {
|
|
113
|
+
void operator()(T* sym) {
|
|
114
|
+
if (sym) {
|
|
115
|
+
SparseCleanup(*sym);
|
|
116
|
+
delete sym;
|
|
117
|
+
sym = nullptr;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
template <typename DenseVecT, typename DenseMatT, typename SparseMatT, typename NumFactT>
|
|
123
|
+
struct SparseTypesTraitBase {
|
|
124
|
+
typedef DenseVecT AccelDenseVector;
|
|
125
|
+
typedef DenseMatT AccelDenseMatrix;
|
|
126
|
+
typedef SparseMatT AccelSparseMatrix;
|
|
127
|
+
|
|
128
|
+
typedef SparseOpaqueSymbolicFactorization SymbolicFactorization;
|
|
129
|
+
typedef NumFactT NumericFactorization;
|
|
130
|
+
|
|
131
|
+
typedef AccelFactorizationDeleter<SymbolicFactorization> SymbolicFactorizationDeleter;
|
|
132
|
+
typedef AccelFactorizationDeleter<NumericFactorization> NumericFactorizationDeleter;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
template <typename Scalar>
|
|
136
|
+
struct SparseTypesTrait {};
|
|
137
|
+
|
|
138
|
+
template <>
|
|
139
|
+
struct SparseTypesTrait<double> : SparseTypesTraitBase<DenseVector_Double, DenseMatrix_Double, SparseMatrix_Double,
|
|
140
|
+
SparseOpaqueFactorization_Double> {};
|
|
141
|
+
|
|
142
|
+
template <>
|
|
143
|
+
struct SparseTypesTrait<float>
|
|
144
|
+
: SparseTypesTraitBase<DenseVector_Float, DenseMatrix_Float, SparseMatrix_Float, SparseOpaqueFactorization_Float> {
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
} // end namespace internal
|
|
148
|
+
|
|
149
|
+
template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
|
|
150
|
+
class AccelerateImpl : public SparseSolverBase<AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_> > {
|
|
151
|
+
protected:
|
|
152
|
+
using Base = SparseSolverBase<AccelerateImpl>;
|
|
153
|
+
using Base::derived;
|
|
154
|
+
using Base::m_isInitialized;
|
|
155
|
+
|
|
156
|
+
public:
|
|
157
|
+
using Base::_solve_impl;
|
|
158
|
+
|
|
159
|
+
typedef MatrixType_ MatrixType;
|
|
160
|
+
typedef typename MatrixType::Scalar Scalar;
|
|
161
|
+
typedef typename MatrixType::StorageIndex StorageIndex;
|
|
162
|
+
enum { ColsAtCompileTime = Dynamic, MaxColsAtCompileTime = Dynamic };
|
|
163
|
+
enum { UpLo = UpLo_ };
|
|
164
|
+
|
|
165
|
+
using AccelDenseVector = typename internal::SparseTypesTrait<Scalar>::AccelDenseVector;
|
|
166
|
+
using AccelDenseMatrix = typename internal::SparseTypesTrait<Scalar>::AccelDenseMatrix;
|
|
167
|
+
using AccelSparseMatrix = typename internal::SparseTypesTrait<Scalar>::AccelSparseMatrix;
|
|
168
|
+
using SymbolicFactorization = typename internal::SparseTypesTrait<Scalar>::SymbolicFactorization;
|
|
169
|
+
using NumericFactorization = typename internal::SparseTypesTrait<Scalar>::NumericFactorization;
|
|
170
|
+
using SymbolicFactorizationDeleter = typename internal::SparseTypesTrait<Scalar>::SymbolicFactorizationDeleter;
|
|
171
|
+
using NumericFactorizationDeleter = typename internal::SparseTypesTrait<Scalar>::NumericFactorizationDeleter;
|
|
172
|
+
|
|
173
|
+
AccelerateImpl() {
|
|
174
|
+
m_isInitialized = false;
|
|
175
|
+
|
|
176
|
+
auto check_flag_set = [](int value, int flag) { return ((value & flag) == flag); };
|
|
177
|
+
|
|
178
|
+
if (check_flag_set(UpLo_, Symmetric)) {
|
|
179
|
+
m_sparseKind = SparseSymmetric;
|
|
180
|
+
m_triType = (UpLo_ & Lower) ? SparseLowerTriangle : SparseUpperTriangle;
|
|
181
|
+
} else if (check_flag_set(UpLo_, UnitLower)) {
|
|
182
|
+
m_sparseKind = SparseUnitTriangular;
|
|
183
|
+
m_triType = SparseLowerTriangle;
|
|
184
|
+
} else if (check_flag_set(UpLo_, UnitUpper)) {
|
|
185
|
+
m_sparseKind = SparseUnitTriangular;
|
|
186
|
+
m_triType = SparseUpperTriangle;
|
|
187
|
+
} else if (check_flag_set(UpLo_, StrictlyLower)) {
|
|
188
|
+
m_sparseKind = SparseTriangular;
|
|
189
|
+
m_triType = SparseLowerTriangle;
|
|
190
|
+
} else if (check_flag_set(UpLo_, StrictlyUpper)) {
|
|
191
|
+
m_sparseKind = SparseTriangular;
|
|
192
|
+
m_triType = SparseUpperTriangle;
|
|
193
|
+
} else if (check_flag_set(UpLo_, Lower)) {
|
|
194
|
+
m_sparseKind = SparseTriangular;
|
|
195
|
+
m_triType = SparseLowerTriangle;
|
|
196
|
+
} else if (check_flag_set(UpLo_, Upper)) {
|
|
197
|
+
m_sparseKind = SparseTriangular;
|
|
198
|
+
m_triType = SparseUpperTriangle;
|
|
199
|
+
} else {
|
|
200
|
+
m_sparseKind = SparseOrdinary;
|
|
201
|
+
m_triType = (UpLo_ & Lower) ? SparseLowerTriangle : SparseUpperTriangle;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
m_order = SparseOrderDefault;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
explicit AccelerateImpl(const MatrixType& matrix) : AccelerateImpl() { compute(matrix); }
|
|
208
|
+
|
|
209
|
+
~AccelerateImpl() {}
|
|
210
|
+
|
|
211
|
+
inline Index cols() const { return m_nCols; }
|
|
212
|
+
inline Index rows() const { return m_nRows; }
|
|
213
|
+
|
|
214
|
+
ComputationInfo info() const {
|
|
215
|
+
eigen_assert(m_isInitialized && "Decomposition is not initialized.");
|
|
216
|
+
return m_info;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
void analyzePattern(const MatrixType& matrix);
|
|
220
|
+
|
|
221
|
+
void factorize(const MatrixType& matrix);
|
|
222
|
+
|
|
223
|
+
void compute(const MatrixType& matrix);
|
|
224
|
+
|
|
225
|
+
template <typename Rhs, typename Dest>
|
|
226
|
+
void _solve_impl(const MatrixBase<Rhs>& b, MatrixBase<Dest>& dest) const;
|
|
227
|
+
|
|
228
|
+
/** Sets the ordering algorithm to use. */
|
|
229
|
+
void setOrder(SparseOrder_t order) { m_order = order; }
|
|
230
|
+
|
|
231
|
+
private:
|
|
232
|
+
template <typename T>
|
|
233
|
+
void buildAccelSparseMatrix(const SparseMatrix<T>& a, AccelSparseMatrix& A, std::vector<long>& columnStarts) {
|
|
234
|
+
const Index nColumnsStarts = a.cols() + 1;
|
|
235
|
+
|
|
236
|
+
columnStarts.resize(nColumnsStarts);
|
|
237
|
+
|
|
238
|
+
for (Index i = 0; i < nColumnsStarts; i++) columnStarts[i] = a.outerIndexPtr()[i];
|
|
239
|
+
|
|
240
|
+
SparseAttributes_t attributes{};
|
|
241
|
+
attributes.transpose = false;
|
|
242
|
+
attributes.triangle = m_triType;
|
|
243
|
+
attributes.kind = m_sparseKind;
|
|
244
|
+
|
|
245
|
+
SparseMatrixStructure structure{};
|
|
246
|
+
structure.attributes = attributes;
|
|
247
|
+
structure.rowCount = static_cast<int>(a.rows());
|
|
248
|
+
structure.columnCount = static_cast<int>(a.cols());
|
|
249
|
+
structure.blockSize = 1;
|
|
250
|
+
structure.columnStarts = columnStarts.data();
|
|
251
|
+
structure.rowIndices = const_cast<int*>(a.innerIndexPtr());
|
|
252
|
+
|
|
253
|
+
A.structure = structure;
|
|
254
|
+
A.data = const_cast<T*>(a.valuePtr());
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
void doAnalysis(AccelSparseMatrix& A) {
|
|
258
|
+
m_numericFactorization.reset(nullptr);
|
|
259
|
+
|
|
260
|
+
SparseSymbolicFactorOptions opts{};
|
|
261
|
+
opts.control = SparseDefaultControl;
|
|
262
|
+
opts.orderMethod = m_order;
|
|
263
|
+
opts.order = nullptr;
|
|
264
|
+
opts.ignoreRowsAndColumns = nullptr;
|
|
265
|
+
opts.malloc = malloc;
|
|
266
|
+
opts.free = free;
|
|
267
|
+
opts.reportError = nullptr;
|
|
268
|
+
|
|
269
|
+
m_symbolicFactorization.reset(new SymbolicFactorization(SparseFactor(Solver_, A.structure, opts)));
|
|
270
|
+
|
|
271
|
+
SparseStatus_t status = m_symbolicFactorization->status;
|
|
272
|
+
|
|
273
|
+
updateInfoStatus(status);
|
|
274
|
+
|
|
275
|
+
if (status != SparseStatusOK) m_symbolicFactorization.reset(nullptr);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
void doFactorization(AccelSparseMatrix& A) {
|
|
279
|
+
SparseStatus_t status = SparseStatusReleased;
|
|
280
|
+
|
|
281
|
+
if (m_symbolicFactorization) {
|
|
282
|
+
m_numericFactorization.reset(new NumericFactorization(SparseFactor(*m_symbolicFactorization, A)));
|
|
283
|
+
|
|
284
|
+
status = m_numericFactorization->status;
|
|
285
|
+
|
|
286
|
+
if (status != SparseStatusOK) m_numericFactorization.reset(nullptr);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
updateInfoStatus(status);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
protected:
|
|
293
|
+
void updateInfoStatus(SparseStatus_t status) const {
|
|
294
|
+
switch (status) {
|
|
295
|
+
case SparseStatusOK:
|
|
296
|
+
m_info = Success;
|
|
297
|
+
break;
|
|
298
|
+
case SparseFactorizationFailed:
|
|
299
|
+
case SparseMatrixIsSingular:
|
|
300
|
+
m_info = NumericalIssue;
|
|
301
|
+
break;
|
|
302
|
+
case SparseInternalError:
|
|
303
|
+
case SparseParameterError:
|
|
304
|
+
case SparseStatusReleased:
|
|
305
|
+
default:
|
|
306
|
+
m_info = InvalidInput;
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
mutable ComputationInfo m_info;
|
|
312
|
+
Index m_nRows, m_nCols;
|
|
313
|
+
std::unique_ptr<SymbolicFactorization, SymbolicFactorizationDeleter> m_symbolicFactorization;
|
|
314
|
+
std::unique_ptr<NumericFactorization, NumericFactorizationDeleter> m_numericFactorization;
|
|
315
|
+
SparseKind_t m_sparseKind;
|
|
316
|
+
SparseTriangle_t m_triType;
|
|
317
|
+
SparseOrder_t m_order;
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
/** Computes the symbolic and numeric decomposition of matrix \a a */
|
|
321
|
+
template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
|
|
322
|
+
void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::compute(const MatrixType& a) {
|
|
323
|
+
if (EnforceSquare_) eigen_assert(a.rows() == a.cols());
|
|
324
|
+
|
|
325
|
+
m_nRows = a.rows();
|
|
326
|
+
m_nCols = a.cols();
|
|
327
|
+
|
|
328
|
+
AccelSparseMatrix A{};
|
|
329
|
+
std::vector<long> columnStarts;
|
|
330
|
+
|
|
331
|
+
buildAccelSparseMatrix(a, A, columnStarts);
|
|
332
|
+
|
|
333
|
+
doAnalysis(A);
|
|
334
|
+
|
|
335
|
+
if (m_symbolicFactorization) doFactorization(A);
|
|
336
|
+
|
|
337
|
+
m_isInitialized = true;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/** Performs a symbolic decomposition on the sparsity pattern of matrix \a a.
|
|
341
|
+
*
|
|
342
|
+
* This function is particularly useful when solving for several problems having the same structure.
|
|
343
|
+
*
|
|
344
|
+
* \sa factorize()
|
|
345
|
+
*/
|
|
346
|
+
template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
|
|
347
|
+
void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::analyzePattern(const MatrixType& a) {
|
|
348
|
+
if (EnforceSquare_) eigen_assert(a.rows() == a.cols());
|
|
349
|
+
|
|
350
|
+
m_nRows = a.rows();
|
|
351
|
+
m_nCols = a.cols();
|
|
352
|
+
|
|
353
|
+
AccelSparseMatrix A{};
|
|
354
|
+
std::vector<long> columnStarts;
|
|
355
|
+
|
|
356
|
+
buildAccelSparseMatrix(a, A, columnStarts);
|
|
357
|
+
|
|
358
|
+
doAnalysis(A);
|
|
359
|
+
|
|
360
|
+
m_isInitialized = true;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/** Performs a numeric decomposition of matrix \a a.
|
|
364
|
+
*
|
|
365
|
+
* The given matrix must have the same sparsity pattern as the matrix on which the symbolic decomposition has been
|
|
366
|
+
* performed.
|
|
367
|
+
*
|
|
368
|
+
* \sa analyzePattern()
|
|
369
|
+
*/
|
|
370
|
+
template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
|
|
371
|
+
void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::factorize(const MatrixType& a) {
|
|
372
|
+
eigen_assert(m_symbolicFactorization && "You must first call analyzePattern()");
|
|
373
|
+
eigen_assert(m_nRows == a.rows() && m_nCols == a.cols());
|
|
374
|
+
|
|
375
|
+
if (EnforceSquare_) eigen_assert(a.rows() == a.cols());
|
|
376
|
+
|
|
377
|
+
AccelSparseMatrix A{};
|
|
378
|
+
std::vector<long> columnStarts;
|
|
379
|
+
|
|
380
|
+
buildAccelSparseMatrix(a, A, columnStarts);
|
|
381
|
+
|
|
382
|
+
doFactorization(A);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
template <typename MatrixType_, int UpLo_, SparseFactorization_t Solver_, bool EnforceSquare_>
|
|
386
|
+
template <typename Rhs, typename Dest>
|
|
387
|
+
void AccelerateImpl<MatrixType_, UpLo_, Solver_, EnforceSquare_>::_solve_impl(const MatrixBase<Rhs>& b,
|
|
388
|
+
MatrixBase<Dest>& x) const {
|
|
389
|
+
if (!m_numericFactorization) {
|
|
390
|
+
m_info = InvalidInput;
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
eigen_assert(m_nRows == b.rows());
|
|
395
|
+
eigen_assert(((b.cols() == 1) || b.outerStride() == b.rows()));
|
|
396
|
+
|
|
397
|
+
SparseStatus_t status = SparseStatusOK;
|
|
398
|
+
|
|
399
|
+
Scalar* b_ptr = const_cast<Scalar*>(b.derived().data());
|
|
400
|
+
Scalar* x_ptr = const_cast<Scalar*>(x.derived().data());
|
|
401
|
+
|
|
402
|
+
AccelDenseMatrix xmat{};
|
|
403
|
+
xmat.attributes = SparseAttributes_t();
|
|
404
|
+
xmat.columnCount = static_cast<int>(x.cols());
|
|
405
|
+
xmat.rowCount = static_cast<int>(x.rows());
|
|
406
|
+
xmat.columnStride = xmat.rowCount;
|
|
407
|
+
xmat.data = x_ptr;
|
|
408
|
+
|
|
409
|
+
AccelDenseMatrix bmat{};
|
|
410
|
+
bmat.attributes = SparseAttributes_t();
|
|
411
|
+
bmat.columnCount = static_cast<int>(b.cols());
|
|
412
|
+
bmat.rowCount = static_cast<int>(b.rows());
|
|
413
|
+
bmat.columnStride = bmat.rowCount;
|
|
414
|
+
bmat.data = b_ptr;
|
|
415
|
+
|
|
416
|
+
SparseSolve(*m_numericFactorization, bmat, xmat);
|
|
417
|
+
|
|
418
|
+
updateInfoStatus(status);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
} // end namespace Eigen
|
|
422
|
+
|
|
423
|
+
#endif // EIGEN_ACCELERATESUPPORT_H
|