@smake/eigen 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -10,98 +10,109 @@
|
|
|
10
10
|
#ifndef EIGEN_GENERAL_MATRIX_MATRIX_TRIANGULAR_H
|
|
11
11
|
#define EIGEN_GENERAL_MATRIX_MATRIX_TRIANGULAR_H
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "../InternalHeaderCheck.h"
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
namespace Eigen {
|
|
17
|
+
|
|
18
|
+
template <typename Scalar, typename Index, int StorageOrder, int UpLo, bool ConjLhs, bool ConjRhs>
|
|
16
19
|
struct selfadjoint_rank1_update;
|
|
17
20
|
|
|
18
21
|
namespace internal {
|
|
19
22
|
|
|
20
23
|
/**********************************************************************
|
|
21
|
-
* This file implements a general A * B product while
|
|
22
|
-
* evaluating only one triangular part of the product.
|
|
23
|
-
* This is a more general version of self adjoint product (C += A A^T)
|
|
24
|
-
* as the level 3 SYRK Blas routine.
|
|
25
|
-
**********************************************************************/
|
|
24
|
+
* This file implements a general A * B product while
|
|
25
|
+
* evaluating only one triangular part of the product.
|
|
26
|
+
* This is a more general version of self adjoint product (C += A A^T)
|
|
27
|
+
* as the level 3 SYRK Blas routine.
|
|
28
|
+
**********************************************************************/
|
|
26
29
|
|
|
27
30
|
// forward declarations (defined at the end of this file)
|
|
28
|
-
template<typename LhsScalar, typename RhsScalar, typename Index, int mr, int nr, bool ConjLhs, bool ConjRhs,
|
|
31
|
+
template <typename LhsScalar, typename RhsScalar, typename Index, int mr, int nr, bool ConjLhs, bool ConjRhs,
|
|
32
|
+
int ResInnerStride, int UpLo>
|
|
29
33
|
struct tribb_kernel;
|
|
30
|
-
|
|
34
|
+
|
|
31
35
|
/* Optimized matrix-matrix product evaluating only one triangular half */
|
|
32
|
-
template <typename Index,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
int ResStorageOrder, int ResInnerStride, int UpLo, int Version = Specialized>
|
|
36
|
+
template <typename Index, typename LhsScalar, int LhsStorageOrder, bool ConjugateLhs, typename RhsScalar,
|
|
37
|
+
int RhsStorageOrder, bool ConjugateRhs, int ResStorageOrder, int ResInnerStride, int UpLo,
|
|
38
|
+
int Version = Specialized>
|
|
36
39
|
struct general_matrix_matrix_triangular_product;
|
|
37
40
|
|
|
38
41
|
// as usual if the result is row major => we transpose the product
|
|
39
|
-
template <typename Index, typename LhsScalar, int LhsStorageOrder, bool ConjugateLhs,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
{
|
|
42
|
+
template <typename Index, typename LhsScalar, int LhsStorageOrder, bool ConjugateLhs, typename RhsScalar,
|
|
43
|
+
int RhsStorageOrder, bool ConjugateRhs, int ResInnerStride, int UpLo, int Version>
|
|
44
|
+
struct general_matrix_matrix_triangular_product<Index, LhsScalar, LhsStorageOrder, ConjugateLhs, RhsScalar,
|
|
45
|
+
RhsStorageOrder, ConjugateRhs, RowMajor, ResInnerStride, UpLo,
|
|
46
|
+
Version> {
|
|
44
47
|
typedef typename ScalarBinaryOpTraits<LhsScalar, RhsScalar>::ReturnType ResScalar;
|
|
45
|
-
static EIGEN_STRONG_INLINE void run(Index size, Index depth,const LhsScalar* lhs, Index lhsStride,
|
|
46
|
-
const RhsScalar* rhs, Index rhsStride, ResScalar* res, Index resIncr,
|
|
47
|
-
const ResScalar& alpha,
|
|
48
|
-
|
|
49
|
-
general_matrix_matrix_triangular_product<Index,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
static EIGEN_STRONG_INLINE void run(Index size, Index depth, const LhsScalar* lhs, Index lhsStride,
|
|
49
|
+
const RhsScalar* rhs, Index rhsStride, ResScalar* res, Index resIncr,
|
|
50
|
+
Index resStride, const ResScalar& alpha,
|
|
51
|
+
level3_blocking<RhsScalar, LhsScalar>& blocking) {
|
|
52
|
+
general_matrix_matrix_triangular_product<Index, RhsScalar, RhsStorageOrder == RowMajor ? ColMajor : RowMajor,
|
|
53
|
+
ConjugateRhs, LhsScalar, LhsStorageOrder == RowMajor ? ColMajor : RowMajor,
|
|
54
|
+
ConjugateLhs, ColMajor, ResInnerStride,
|
|
55
|
+
UpLo == Lower ? Upper : Lower>::run(size, depth, rhs, rhsStride, lhs,
|
|
56
|
+
lhsStride, res, resIncr, resStride,
|
|
57
|
+
alpha, blocking);
|
|
54
58
|
}
|
|
55
59
|
};
|
|
56
60
|
|
|
57
|
-
template <typename Index, typename LhsScalar, int LhsStorageOrder, bool ConjugateLhs,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
{
|
|
61
|
+
template <typename Index, typename LhsScalar, int LhsStorageOrder, bool ConjugateLhs, typename RhsScalar,
|
|
62
|
+
int RhsStorageOrder, bool ConjugateRhs, int ResInnerStride, int UpLo, int Version>
|
|
63
|
+
struct general_matrix_matrix_triangular_product<Index, LhsScalar, LhsStorageOrder, ConjugateLhs, RhsScalar,
|
|
64
|
+
RhsStorageOrder, ConjugateRhs, ColMajor, ResInnerStride, UpLo,
|
|
65
|
+
Version> {
|
|
62
66
|
typedef typename ScalarBinaryOpTraits<LhsScalar, RhsScalar>::ReturnType ResScalar;
|
|
63
|
-
static EIGEN_STRONG_INLINE void run(Index size, Index depth,const LhsScalar*
|
|
64
|
-
const RhsScalar*
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
static EIGEN_STRONG_INLINE void run(Index size, Index depth, const LhsScalar* lhs_, Index lhsStride,
|
|
68
|
+
const RhsScalar* rhs_, Index rhsStride, ResScalar* res_, Index resIncr,
|
|
69
|
+
Index resStride, const ResScalar& alpha,
|
|
70
|
+
level3_blocking<LhsScalar, RhsScalar>& blocking) {
|
|
71
|
+
if (size == 0) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
typedef gebp_traits<LhsScalar, RhsScalar> Traits;
|
|
69
76
|
|
|
70
77
|
typedef const_blas_data_mapper<LhsScalar, Index, LhsStorageOrder> LhsMapper;
|
|
71
78
|
typedef const_blas_data_mapper<RhsScalar, Index, RhsStorageOrder> RhsMapper;
|
|
72
79
|
typedef blas_data_mapper<typename Traits::ResScalar, Index, ColMajor, Unaligned, ResInnerStride> ResMapper;
|
|
73
|
-
LhsMapper lhs(
|
|
74
|
-
RhsMapper rhs(
|
|
75
|
-
ResMapper res(
|
|
80
|
+
LhsMapper lhs(lhs_, lhsStride);
|
|
81
|
+
RhsMapper rhs(rhs_, rhsStride);
|
|
82
|
+
ResMapper res(res_, resStride, resIncr);
|
|
76
83
|
|
|
77
84
|
Index kc = blocking.kc();
|
|
78
|
-
|
|
85
|
+
// Ensure that mc >= nr and <= size
|
|
86
|
+
Index mc = (std::min)(size, (std::max)(static_cast<decltype(blocking.mc())>(Traits::nr), blocking.mc()));
|
|
79
87
|
|
|
80
|
-
// !!! mc must be a multiple of nr
|
|
81
|
-
if(mc > Traits::nr)
|
|
82
|
-
|
|
88
|
+
// !!! mc must be a multiple of nr
|
|
89
|
+
if (mc > Traits::nr) {
|
|
90
|
+
using UnsignedIndex = typename make_unsigned<Index>::type;
|
|
91
|
+
mc = (UnsignedIndex(mc) / Traits::nr) * Traits::nr;
|
|
92
|
+
}
|
|
83
93
|
|
|
84
|
-
std::size_t sizeA = kc*mc;
|
|
85
|
-
std::size_t sizeB = kc*size;
|
|
94
|
+
std::size_t sizeA = kc * mc;
|
|
95
|
+
std::size_t sizeB = kc * size;
|
|
86
96
|
|
|
87
97
|
ei_declare_aligned_stack_constructed_variable(LhsScalar, blockA, sizeA, blocking.blockA());
|
|
88
98
|
ei_declare_aligned_stack_constructed_variable(RhsScalar, blockB, sizeB, blocking.blockB());
|
|
89
99
|
|
|
90
|
-
gemm_pack_lhs<LhsScalar, Index, LhsMapper, Traits::mr, Traits::LhsProgress,
|
|
100
|
+
gemm_pack_lhs<LhsScalar, Index, LhsMapper, Traits::mr, Traits::LhsProgress, typename Traits::LhsPacket4Packing,
|
|
101
|
+
LhsStorageOrder>
|
|
102
|
+
pack_lhs;
|
|
91
103
|
gemm_pack_rhs<RhsScalar, Index, RhsMapper, Traits::nr, RhsStorageOrder> pack_rhs;
|
|
92
104
|
gebp_kernel<LhsScalar, RhsScalar, Index, ResMapper, Traits::mr, Traits::nr, ConjugateLhs, ConjugateRhs> gebp;
|
|
93
|
-
tribb_kernel<LhsScalar, RhsScalar, Index, Traits::mr, Traits::nr, ConjugateLhs, ConjugateRhs, ResInnerStride, UpLo>
|
|
105
|
+
tribb_kernel<LhsScalar, RhsScalar, Index, Traits::mr, Traits::nr, ConjugateLhs, ConjugateRhs, ResInnerStride, UpLo>
|
|
106
|
+
sybb;
|
|
94
107
|
|
|
95
|
-
for(Index k2=0; k2<depth; k2+=kc)
|
|
96
|
-
|
|
97
|
-
const Index actual_kc = (std::min)(k2+kc,depth)-k2;
|
|
108
|
+
for (Index k2 = 0; k2 < depth; k2 += kc) {
|
|
109
|
+
const Index actual_kc = (std::min)(k2 + kc, depth) - k2;
|
|
98
110
|
|
|
99
111
|
// note that the actual rhs is the transpose/adjoint of mat
|
|
100
|
-
pack_rhs(blockB, rhs.getSubMapper(k2,0), actual_kc, size);
|
|
112
|
+
pack_rhs(blockB, rhs.getSubMapper(k2, 0), actual_kc, size);
|
|
101
113
|
|
|
102
|
-
for(Index i2=0; i2<size; i2+=mc)
|
|
103
|
-
|
|
104
|
-
const Index actual_mc = (std::min)(i2+mc,size)-i2;
|
|
114
|
+
for (Index i2 = 0; i2 < size; i2 += mc) {
|
|
115
|
+
const Index actual_mc = (std::min)(i2 + mc, size) - i2;
|
|
105
116
|
|
|
106
117
|
pack_lhs(blockA, lhs.getSubMapper(i2, k2), actual_kc, actual_mc);
|
|
107
118
|
|
|
@@ -109,17 +120,17 @@ struct general_matrix_matrix_triangular_product<Index,LhsScalar,LhsStorageOrder,
|
|
|
109
120
|
// 1 - before the diagonal => processed with gebp or skipped
|
|
110
121
|
// 2 - the actual_mc x actual_mc symmetric block => processed with a special kernel
|
|
111
122
|
// 3 - after the diagonal => processed with gebp or skipped
|
|
112
|
-
if (UpLo==Lower)
|
|
113
|
-
gebp(res.getSubMapper(i2, 0), blockA, blockB, actual_mc, actual_kc,
|
|
114
|
-
|
|
123
|
+
if (UpLo == Lower)
|
|
124
|
+
gebp(res.getSubMapper(i2, 0), blockA, blockB, actual_mc, actual_kc, (std::min)(size, i2), alpha, -1, -1, 0,
|
|
125
|
+
0);
|
|
115
126
|
|
|
116
|
-
sybb(
|
|
127
|
+
sybb(res_ + resStride * i2 + resIncr * i2, resIncr, resStride, blockA, blockB + actual_kc * i2, actual_mc,
|
|
128
|
+
actual_kc, alpha);
|
|
117
129
|
|
|
118
|
-
if (UpLo==Upper)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
actual_kc, (std::max)(Index(0), size-j2), alpha, -1, -1, 0, 0);
|
|
130
|
+
if (UpLo == Upper) {
|
|
131
|
+
Index j2 = i2 + actual_mc;
|
|
132
|
+
gebp(res.getSubMapper(i2, j2), blockA, blockB + actual_kc * j2, actual_mc, actual_kc,
|
|
133
|
+
(std::max)(Index(0), size - j2), alpha, -1, -1, 0, 0);
|
|
123
134
|
}
|
|
124
135
|
}
|
|
125
136
|
}
|
|
@@ -135,183 +146,185 @@ struct general_matrix_matrix_triangular_product<Index,LhsScalar,LhsStorageOrder,
|
|
|
135
146
|
// while the triangular block overlapping the diagonal is evaluated into a
|
|
136
147
|
// small temporary buffer which is then accumulated into the result using a
|
|
137
148
|
// triangular traversal.
|
|
138
|
-
template<typename LhsScalar, typename RhsScalar, typename Index, int mr, int nr, bool ConjLhs, bool ConjRhs,
|
|
139
|
-
|
|
140
|
-
{
|
|
141
|
-
typedef gebp_traits<LhsScalar,RhsScalar,ConjLhs,ConjRhs> Traits;
|
|
149
|
+
template <typename LhsScalar, typename RhsScalar, typename Index, int mr, int nr, bool ConjLhs, bool ConjRhs,
|
|
150
|
+
int ResInnerStride, int UpLo>
|
|
151
|
+
struct tribb_kernel {
|
|
152
|
+
typedef gebp_traits<LhsScalar, RhsScalar, ConjLhs, ConjRhs> Traits;
|
|
142
153
|
typedef typename Traits::ResScalar ResScalar;
|
|
143
154
|
|
|
144
|
-
enum {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
void operator()(ResScalar* _res, Index resIncr, Index resStride, const LhsScalar* blockA, const RhsScalar* blockB, Index size, Index depth, const ResScalar& alpha)
|
|
148
|
-
{
|
|
155
|
+
enum { BlockSize = meta_least_common_multiple<plain_enum_max(mr, nr), plain_enum_min(mr, nr)>::ret };
|
|
156
|
+
void operator()(ResScalar* res_, Index resIncr, Index resStride, const LhsScalar* blockA, const RhsScalar* blockB,
|
|
157
|
+
Index size, Index depth, const ResScalar& alpha) {
|
|
149
158
|
typedef blas_data_mapper<ResScalar, Index, ColMajor, Unaligned, ResInnerStride> ResMapper;
|
|
150
159
|
typedef blas_data_mapper<ResScalar, Index, ColMajor, Unaligned> BufferMapper;
|
|
151
|
-
ResMapper res(
|
|
160
|
+
ResMapper res(res_, resStride, resIncr);
|
|
152
161
|
gebp_kernel<LhsScalar, RhsScalar, Index, ResMapper, mr, nr, ConjLhs, ConjRhs> gebp_kernel1;
|
|
153
162
|
gebp_kernel<LhsScalar, RhsScalar, Index, BufferMapper, mr, nr, ConjLhs, ConjRhs> gebp_kernel2;
|
|
154
163
|
|
|
155
|
-
Matrix<ResScalar,BlockSize,BlockSize,ColMajor> buffer
|
|
164
|
+
Matrix<ResScalar, BlockSize, BlockSize, ColMajor> buffer;
|
|
156
165
|
|
|
157
166
|
// let's process the block per panel of actual_mc x BlockSize,
|
|
158
167
|
// again, each is split into three parts, etc.
|
|
159
|
-
for (Index j=0; j<size; j+=BlockSize)
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
-1, -1, 0, 0);
|
|
167
|
-
|
|
168
|
+
for (Index j = 0; j < size; j += BlockSize) {
|
|
169
|
+
Index actualBlockSize = std::min<Index>(BlockSize, size - j);
|
|
170
|
+
const RhsScalar* actual_b = blockB + j * depth;
|
|
171
|
+
|
|
172
|
+
if (UpLo == Upper)
|
|
173
|
+
gebp_kernel1(res.getSubMapper(0, j), blockA, actual_b, j, depth, actualBlockSize, alpha, -1, -1, 0, 0);
|
|
174
|
+
|
|
168
175
|
// selfadjoint micro block
|
|
169
176
|
{
|
|
170
177
|
Index i = j;
|
|
171
178
|
buffer.setZero();
|
|
172
179
|
// 1 - apply the kernel on the temporary buffer
|
|
173
|
-
gebp_kernel2(BufferMapper(buffer.data(), BlockSize), blockA+depth*i, actual_b, actualBlockSize, depth,
|
|
174
|
-
-1, -1, 0, 0);
|
|
180
|
+
gebp_kernel2(BufferMapper(buffer.data(), BlockSize), blockA + depth * i, actual_b, actualBlockSize, depth,
|
|
181
|
+
actualBlockSize, alpha, -1, -1, 0, 0);
|
|
175
182
|
|
|
176
183
|
// 2 - triangular accumulation
|
|
177
|
-
for(Index j1=0; j1<actualBlockSize; ++j1)
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
UpLo==Lower ? i1<actualBlockSize : i1<=j1; ++i1)
|
|
182
|
-
r(i1) += buffer(i1,j1);
|
|
184
|
+
for (Index j1 = 0; j1 < actualBlockSize; ++j1) {
|
|
185
|
+
typename ResMapper::LinearMapper r = res.getLinearMapper(i, j + j1);
|
|
186
|
+
for (Index i1 = UpLo == Lower ? j1 : 0; UpLo == Lower ? i1 < actualBlockSize : i1 <= j1; ++i1)
|
|
187
|
+
r(i1) += buffer(i1, j1);
|
|
183
188
|
}
|
|
184
189
|
}
|
|
185
190
|
|
|
186
|
-
if(UpLo==Lower)
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
depth, actualBlockSize, alpha, -1, -1, 0, 0);
|
|
191
|
+
if (UpLo == Lower) {
|
|
192
|
+
Index i = j + actualBlockSize;
|
|
193
|
+
gebp_kernel1(res.getSubMapper(i, j), blockA + depth * i, actual_b, size - i, depth, actualBlockSize, alpha, -1,
|
|
194
|
+
-1, 0, 0);
|
|
191
195
|
}
|
|
192
196
|
}
|
|
193
197
|
}
|
|
194
198
|
};
|
|
195
199
|
|
|
196
|
-
}
|
|
200
|
+
} // end namespace internal
|
|
197
201
|
|
|
198
202
|
// high level API
|
|
199
203
|
|
|
200
|
-
template<typename MatrixType, typename ProductType, int UpLo, bool IsOuterProduct>
|
|
204
|
+
template <typename MatrixType, typename ProductType, int UpLo, bool IsOuterProduct>
|
|
201
205
|
struct general_product_to_triangular_selector;
|
|
202
206
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
{
|
|
207
|
-
static void run(MatrixType& mat, const ProductType& prod, const typename MatrixType::Scalar& alpha, bool beta)
|
|
208
|
-
{
|
|
207
|
+
template <typename MatrixType, typename ProductType, int UpLo>
|
|
208
|
+
struct general_product_to_triangular_selector<MatrixType, ProductType, UpLo, true> {
|
|
209
|
+
static void run(MatrixType& mat, const ProductType& prod, const typename MatrixType::Scalar& alpha, bool beta) {
|
|
209
210
|
typedef typename MatrixType::Scalar Scalar;
|
|
210
|
-
|
|
211
|
-
typedef
|
|
211
|
+
|
|
212
|
+
typedef internal::remove_all_t<typename ProductType::LhsNested> Lhs;
|
|
212
213
|
typedef internal::blas_traits<Lhs> LhsBlasTraits;
|
|
213
214
|
typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhs;
|
|
214
|
-
typedef
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
typedef
|
|
215
|
+
typedef internal::remove_all_t<ActualLhs> ActualLhs_;
|
|
216
|
+
internal::add_const_on_value_type_t<ActualLhs> actualLhs = LhsBlasTraits::extract(prod.lhs());
|
|
217
|
+
|
|
218
|
+
typedef internal::remove_all_t<typename ProductType::RhsNested> Rhs;
|
|
218
219
|
typedef internal::blas_traits<Rhs> RhsBlasTraits;
|
|
219
220
|
typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhs;
|
|
220
|
-
typedef
|
|
221
|
-
|
|
221
|
+
typedef internal::remove_all_t<ActualRhs> ActualRhs_;
|
|
222
|
+
internal::add_const_on_value_type_t<ActualRhs> actualRhs = RhsBlasTraits::extract(prod.rhs());
|
|
222
223
|
|
|
223
|
-
Scalar actualAlpha = alpha * LhsBlasTraits::extractScalarFactor(prod.lhs().derived()) *
|
|
224
|
+
Scalar actualAlpha = alpha * LhsBlasTraits::extractScalarFactor(prod.lhs().derived()) *
|
|
225
|
+
RhsBlasTraits::extractScalarFactor(prod.rhs().derived());
|
|
224
226
|
|
|
225
|
-
if(!beta)
|
|
226
|
-
mat.template triangularView<UpLo>().setZero();
|
|
227
|
+
if (!beta) mat.template triangularView<UpLo>().setZero();
|
|
227
228
|
|
|
228
229
|
enum {
|
|
229
|
-
StorageOrder = (internal::traits<MatrixType>::Flags&RowMajorBit) ? RowMajor : ColMajor,
|
|
230
|
-
UseLhsDirectly =
|
|
231
|
-
UseRhsDirectly =
|
|
230
|
+
StorageOrder = (internal::traits<MatrixType>::Flags & RowMajorBit) ? RowMajor : ColMajor,
|
|
231
|
+
UseLhsDirectly = ActualLhs_::InnerStrideAtCompileTime == 1,
|
|
232
|
+
UseRhsDirectly = ActualRhs_::InnerStrideAtCompileTime == 1
|
|
232
233
|
};
|
|
233
|
-
|
|
234
|
-
internal::gemv_static_vector_if<Scalar,Lhs::SizeAtCompileTime,Lhs::MaxSizeAtCompileTime
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
234
|
+
|
|
235
|
+
internal::gemv_static_vector_if<Scalar, Lhs::SizeAtCompileTime, Lhs::MaxSizeAtCompileTime, !UseLhsDirectly>
|
|
236
|
+
static_lhs;
|
|
237
|
+
ei_declare_aligned_stack_constructed_variable(
|
|
238
|
+
Scalar, actualLhsPtr, actualLhs.size(),
|
|
239
|
+
(UseLhsDirectly ? const_cast<Scalar*>(actualLhs.data()) : static_lhs.data()));
|
|
240
|
+
if (!UseLhsDirectly) Map<typename ActualLhs_::PlainObject>(actualLhsPtr, actualLhs.size()) = actualLhs;
|
|
241
|
+
|
|
242
|
+
internal::gemv_static_vector_if<Scalar, Rhs::SizeAtCompileTime, Rhs::MaxSizeAtCompileTime, !UseRhsDirectly>
|
|
243
|
+
static_rhs;
|
|
244
|
+
ei_declare_aligned_stack_constructed_variable(
|
|
245
|
+
Scalar, actualRhsPtr, actualRhs.size(),
|
|
246
|
+
(UseRhsDirectly ? const_cast<Scalar*>(actualRhs.data()) : static_rhs.data()));
|
|
247
|
+
if (!UseRhsDirectly) Map<typename ActualRhs_::PlainObject>(actualRhsPtr, actualRhs.size()) = actualRhs;
|
|
248
|
+
|
|
249
|
+
selfadjoint_rank1_update<
|
|
250
|
+
Scalar, Index, StorageOrder, UpLo, LhsBlasTraits::NeedToConjugate && NumTraits<Scalar>::IsComplex,
|
|
251
|
+
RhsBlasTraits::NeedToConjugate && NumTraits<Scalar>::IsComplex>::run(actualLhs.size(), mat.data(),
|
|
252
|
+
mat.outerStride(), actualLhsPtr,
|
|
253
|
+
actualRhsPtr, actualAlpha);
|
|
249
254
|
}
|
|
250
255
|
};
|
|
251
256
|
|
|
252
|
-
template<typename MatrixType, typename ProductType, int UpLo>
|
|
253
|
-
struct general_product_to_triangular_selector<MatrixType,ProductType,UpLo,false>
|
|
254
|
-
{
|
|
255
|
-
|
|
256
|
-
{
|
|
257
|
-
typedef typename internal::remove_all<typename ProductType::LhsNested>::type Lhs;
|
|
257
|
+
template <typename MatrixType, typename ProductType, int UpLo>
|
|
258
|
+
struct general_product_to_triangular_selector<MatrixType, ProductType, UpLo, false> {
|
|
259
|
+
static void run(MatrixType& mat, const ProductType& prod, const typename MatrixType::Scalar& alpha, bool beta) {
|
|
260
|
+
typedef internal::remove_all_t<typename ProductType::LhsNested> Lhs;
|
|
258
261
|
typedef internal::blas_traits<Lhs> LhsBlasTraits;
|
|
259
262
|
typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhs;
|
|
260
|
-
typedef
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
typedef
|
|
263
|
+
typedef internal::remove_all_t<ActualLhs> ActualLhs_;
|
|
264
|
+
internal::add_const_on_value_type_t<ActualLhs> actualLhs = LhsBlasTraits::extract(prod.lhs());
|
|
265
|
+
|
|
266
|
+
typedef internal::remove_all_t<typename ProductType::RhsNested> Rhs;
|
|
264
267
|
typedef internal::blas_traits<Rhs> RhsBlasTraits;
|
|
265
268
|
typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhs;
|
|
266
|
-
typedef
|
|
267
|
-
|
|
269
|
+
typedef internal::remove_all_t<ActualRhs> ActualRhs_;
|
|
270
|
+
internal::add_const_on_value_type_t<ActualRhs> actualRhs = RhsBlasTraits::extract(prod.rhs());
|
|
268
271
|
|
|
269
|
-
typename ProductType::Scalar actualAlpha = alpha * LhsBlasTraits::extractScalarFactor(prod.lhs().derived()) *
|
|
272
|
+
typename ProductType::Scalar actualAlpha = alpha * LhsBlasTraits::extractScalarFactor(prod.lhs().derived()) *
|
|
273
|
+
RhsBlasTraits::extractScalarFactor(prod.rhs().derived());
|
|
270
274
|
|
|
271
|
-
if(!beta)
|
|
272
|
-
mat.template triangularView<UpLo>().setZero();
|
|
275
|
+
if (!beta) mat.template triangularView<UpLo>().setZero();
|
|
273
276
|
|
|
274
277
|
enum {
|
|
275
|
-
IsRowMajor = (internal::traits<MatrixType>::Flags&RowMajorBit) ? 1 : 0,
|
|
276
|
-
LhsIsRowMajor =
|
|
277
|
-
RhsIsRowMajor =
|
|
278
|
-
SkipDiag = (UpLo&(UnitDiag|ZeroDiag))!=0
|
|
278
|
+
IsRowMajor = (internal::traits<MatrixType>::Flags & RowMajorBit) ? 1 : 0,
|
|
279
|
+
LhsIsRowMajor = ActualLhs_::Flags & RowMajorBit ? 1 : 0,
|
|
280
|
+
RhsIsRowMajor = ActualRhs_::Flags & RowMajorBit ? 1 : 0,
|
|
281
|
+
SkipDiag = (UpLo & (UnitDiag | ZeroDiag)) != 0
|
|
279
282
|
};
|
|
280
283
|
|
|
281
284
|
Index size = mat.cols();
|
|
282
|
-
if(SkipDiag)
|
|
283
|
-
size--;
|
|
285
|
+
if (SkipDiag) size--;
|
|
284
286
|
Index depth = actualLhs.cols();
|
|
285
287
|
|
|
286
|
-
typedef internal::gemm_blocking_space<IsRowMajor ? RowMajor : ColMajor,typename Lhs::Scalar,typename Rhs::Scalar,
|
|
287
|
-
|
|
288
|
+
typedef internal::gemm_blocking_space<IsRowMajor ? RowMajor : ColMajor, typename Lhs::Scalar, typename Rhs::Scalar,
|
|
289
|
+
MatrixType::MaxColsAtCompileTime, MatrixType::MaxColsAtCompileTime,
|
|
290
|
+
ActualRhs_::MaxColsAtCompileTime>
|
|
291
|
+
BlockingType;
|
|
288
292
|
|
|
289
293
|
BlockingType blocking(size, size, depth, 1, false);
|
|
290
294
|
|
|
291
|
-
internal::general_matrix_matrix_triangular_product<
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
295
|
+
internal::general_matrix_matrix_triangular_product<
|
|
296
|
+
Index, typename Lhs::Scalar, LhsIsRowMajor ? RowMajor : ColMajor, LhsBlasTraits::NeedToConjugate,
|
|
297
|
+
typename Rhs::Scalar, RhsIsRowMajor ? RowMajor : ColMajor, RhsBlasTraits::NeedToConjugate,
|
|
298
|
+
IsRowMajor ? RowMajor : ColMajor, MatrixType::InnerStrideAtCompileTime,
|
|
299
|
+
UpLo&(Lower | Upper)>::run(size, depth, &actualLhs.coeffRef(SkipDiag && (UpLo & Lower) == Lower ? 1 : 0, 0),
|
|
300
|
+
actualLhs.outerStride(),
|
|
301
|
+
&actualRhs.coeffRef(0, SkipDiag && (UpLo & Upper) == Upper ? 1 : 0),
|
|
302
|
+
actualRhs.outerStride(),
|
|
303
|
+
mat.data() +
|
|
304
|
+
(SkipDiag ? (bool(IsRowMajor) != ((UpLo & Lower) == Lower) ? mat.innerStride()
|
|
305
|
+
: mat.outerStride())
|
|
306
|
+
: 0),
|
|
307
|
+
mat.innerStride(), mat.outerStride(), actualAlpha, blocking);
|
|
300
308
|
}
|
|
301
309
|
};
|
|
302
310
|
|
|
303
|
-
template<typename
|
|
304
|
-
template<typename ProductType>
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
311
|
+
template <typename MatrixType_, unsigned int Mode_>
|
|
312
|
+
template <typename ProductType>
|
|
313
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename TriangularViewImpl<MatrixType_, Mode_, Dense>::TriangularViewType&
|
|
314
|
+
TriangularViewImpl<MatrixType_, Mode_, Dense>::_assignProduct(
|
|
315
|
+
const ProductType& prod, const typename TriangularViewImpl<MatrixType_, Mode_, Dense>::Scalar& alpha, bool beta) {
|
|
316
|
+
EIGEN_STATIC_ASSERT((Mode_ & UnitDiag) == 0, WRITING_TO_TRIANGULAR_PART_WITH_UNIT_DIAGONAL_IS_NOT_SUPPORTED);
|
|
308
317
|
eigen_assert(derived().nestedExpression().rows() == prod.rows() && derived().cols() == prod.cols());
|
|
309
|
-
|
|
310
|
-
general_product_to_triangular_selector<
|
|
311
|
-
|
|
318
|
+
|
|
319
|
+
general_product_to_triangular_selector<MatrixType_, ProductType, Mode_,
|
|
320
|
+
internal::traits<ProductType>::InnerSize == 1>::run(derived()
|
|
321
|
+
.nestedExpression()
|
|
322
|
+
.const_cast_derived(),
|
|
323
|
+
prod, alpha, beta);
|
|
324
|
+
|
|
312
325
|
return derived();
|
|
313
326
|
}
|
|
314
327
|
|
|
315
|
-
}
|
|
328
|
+
} // end namespace Eigen
|
|
316
329
|
|
|
317
|
-
#endif
|
|
330
|
+
#endif // EIGEN_GENERAL_MATRIX_MATRIX_TRIANGULAR_H
|