@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,72 +10,67 @@
|
|
|
10
10
|
#ifndef EIGEN_SELFADJOINT_MATRIX_VECTOR_H
|
|
11
11
|
#define EIGEN_SELFADJOINT_MATRIX_VECTOR_H
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "../InternalHeaderCheck.h"
|
|
15
|
+
|
|
16
|
+
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
19
|
|
|
17
20
|
/* Optimized selfadjoint matrix * vector product:
|
|
18
|
-
* This algorithm processes 2 columns at
|
|
21
|
+
* This algorithm processes 2 columns at once that allows to both reduce
|
|
19
22
|
* the number of load/stores of the result by a factor 2 and to reduce
|
|
20
23
|
* the instruction dependency.
|
|
21
24
|
*/
|
|
22
25
|
|
|
23
|
-
template<typename Scalar, typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs,
|
|
26
|
+
template <typename Scalar, typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs,
|
|
27
|
+
int Version = Specialized>
|
|
24
28
|
struct selfadjoint_matrix_vector_product;
|
|
25
29
|
|
|
26
|
-
template<typename Scalar, typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs,
|
|
30
|
+
template <typename Scalar, typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs,
|
|
31
|
+
int Version>
|
|
27
32
|
struct selfadjoint_matrix_vector_product
|
|
28
33
|
|
|
29
34
|
{
|
|
30
|
-
static EIGEN_DONT_INLINE void run(
|
|
31
|
-
|
|
32
|
-
const Scalar* lhs, Index lhsStride,
|
|
33
|
-
const Scalar* rhs,
|
|
34
|
-
Scalar* res,
|
|
35
|
-
Scalar alpha);
|
|
35
|
+
static EIGEN_DONT_INLINE EIGEN_DEVICE_FUNC void run(Index size, const Scalar* lhs, Index lhsStride, const Scalar* rhs,
|
|
36
|
+
Scalar* res, Scalar alpha);
|
|
36
37
|
};
|
|
37
38
|
|
|
38
|
-
template<typename Scalar, typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
Scalar* res,
|
|
44
|
-
Scalar alpha)
|
|
45
|
-
{
|
|
39
|
+
template <typename Scalar, typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs,
|
|
40
|
+
int Version>
|
|
41
|
+
EIGEN_DONT_INLINE EIGEN_DEVICE_FUNC void
|
|
42
|
+
selfadjoint_matrix_vector_product<Scalar, Index, StorageOrder, UpLo, ConjugateLhs, ConjugateRhs, Version>::run(
|
|
43
|
+
Index size, const Scalar* lhs, Index lhsStride, const Scalar* rhs, Scalar* res, Scalar alpha) {
|
|
46
44
|
typedef typename packet_traits<Scalar>::type Packet;
|
|
47
45
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
|
48
|
-
const Index PacketSize = sizeof(Packet)/sizeof(Scalar);
|
|
46
|
+
const Index PacketSize = sizeof(Packet) / sizeof(Scalar);
|
|
49
47
|
|
|
50
48
|
enum {
|
|
51
|
-
IsRowMajor = StorageOrder==RowMajor ? 1 : 0,
|
|
49
|
+
IsRowMajor = StorageOrder == RowMajor ? 1 : 0,
|
|
52
50
|
IsLower = UpLo == Lower ? 1 : 0,
|
|
53
51
|
FirstTriangular = IsRowMajor == IsLower
|
|
54
52
|
};
|
|
55
53
|
|
|
56
|
-
conj_helper<Scalar,Scalar,NumTraits<Scalar>::IsComplex &&
|
|
57
|
-
conj_helper<Scalar,Scalar,NumTraits<Scalar>::IsComplex &&
|
|
58
|
-
conj_helper<RealScalar,Scalar,false, ConjugateRhs> cjd;
|
|
54
|
+
conj_helper<Scalar, Scalar, NumTraits<Scalar>::IsComplex && logical_xor(ConjugateLhs, IsRowMajor), ConjugateRhs> cj0;
|
|
55
|
+
conj_helper<Scalar, Scalar, NumTraits<Scalar>::IsComplex && logical_xor(ConjugateLhs, !IsRowMajor), ConjugateRhs> cj1;
|
|
56
|
+
conj_helper<RealScalar, Scalar, false, ConjugateRhs> cjd;
|
|
59
57
|
|
|
60
|
-
conj_helper<Packet,Packet,NumTraits<Scalar>::IsComplex &&
|
|
61
|
-
conj_helper<Packet,Packet,NumTraits<Scalar>::IsComplex &&
|
|
58
|
+
conj_helper<Packet, Packet, NumTraits<Scalar>::IsComplex && logical_xor(ConjugateLhs, IsRowMajor), ConjugateRhs> pcj0;
|
|
59
|
+
conj_helper<Packet, Packet, NumTraits<Scalar>::IsComplex && logical_xor(ConjugateLhs, !IsRowMajor), ConjugateRhs>
|
|
60
|
+
pcj1;
|
|
62
61
|
|
|
63
62
|
Scalar cjAlpha = ConjugateRhs ? numext::conj(alpha) : alpha;
|
|
64
63
|
|
|
64
|
+
Index bound = numext::maxi(Index(0), size - 8) & 0xfffffffe;
|
|
65
|
+
if (FirstTriangular) bound = size - bound;
|
|
65
66
|
|
|
66
|
-
Index
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
for (Index j=FirstTriangular ? bound : 0;
|
|
71
|
-
j<(FirstTriangular ? size : bound);j+=2)
|
|
72
|
-
{
|
|
73
|
-
const Scalar* EIGEN_RESTRICT A0 = lhs + j*lhsStride;
|
|
74
|
-
const Scalar* EIGEN_RESTRICT A1 = lhs + (j+1)*lhsStride;
|
|
67
|
+
for (Index j = FirstTriangular ? bound : 0; j < (FirstTriangular ? size : bound); j += 2) {
|
|
68
|
+
const Scalar* EIGEN_RESTRICT A0 = lhs + j * lhsStride;
|
|
69
|
+
const Scalar* EIGEN_RESTRICT A1 = lhs + (j + 1) * lhsStride;
|
|
75
70
|
|
|
76
71
|
Scalar t0 = cjAlpha * rhs[j];
|
|
77
72
|
Packet ptmp0 = pset1<Packet>(t0);
|
|
78
|
-
Scalar t1 = cjAlpha * rhs[j+1];
|
|
73
|
+
Scalar t1 = cjAlpha * rhs[j + 1];
|
|
79
74
|
Packet ptmp1 = pset1<Packet>(t1);
|
|
80
75
|
|
|
81
76
|
Scalar t2(0);
|
|
@@ -83,67 +78,63 @@ EIGEN_DONT_INLINE void selfadjoint_matrix_vector_product<Scalar,Index,StorageOrd
|
|
|
83
78
|
Scalar t3(0);
|
|
84
79
|
Packet ptmp3 = pset1<Packet>(t3);
|
|
85
80
|
|
|
86
|
-
Index starti = FirstTriangular ? 0 : j+2;
|
|
87
|
-
Index endi
|
|
88
|
-
Index alignedStart = (starti) + internal::first_default_aligned(&res[starti], endi-starti);
|
|
89
|
-
Index alignedEnd = alignedStart + ((endi-alignedStart)/(PacketSize))*(PacketSize);
|
|
90
|
-
|
|
91
|
-
res[j]
|
|
92
|
-
res[j+1] += cjd.pmul(numext::real(A1[j+1]), t1);
|
|
93
|
-
if(FirstTriangular)
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
{
|
|
100
|
-
res[j+1] += cj0.pmul(A0[j+1],t0);
|
|
101
|
-
t2 += cj1.pmul(A0[j+1], rhs[j+1]);
|
|
81
|
+
Index starti = FirstTriangular ? 0 : j + 2;
|
|
82
|
+
Index endi = FirstTriangular ? j : size;
|
|
83
|
+
Index alignedStart = (starti) + internal::first_default_aligned(&res[starti], endi - starti);
|
|
84
|
+
Index alignedEnd = alignedStart + ((endi - alignedStart) / (PacketSize)) * (PacketSize);
|
|
85
|
+
|
|
86
|
+
res[j] += cjd.pmul(numext::real(A0[j]), t0);
|
|
87
|
+
res[j + 1] += cjd.pmul(numext::real(A1[j + 1]), t1);
|
|
88
|
+
if (FirstTriangular) {
|
|
89
|
+
res[j] += cj0.pmul(A1[j], t1);
|
|
90
|
+
t3 += cj1.pmul(A1[j], rhs[j]);
|
|
91
|
+
} else {
|
|
92
|
+
res[j + 1] += cj0.pmul(A0[j + 1], t0);
|
|
93
|
+
t2 += cj1.pmul(A0[j + 1], rhs[j + 1]);
|
|
102
94
|
}
|
|
103
95
|
|
|
104
|
-
for (Index i=starti; i<alignedStart; ++i)
|
|
105
|
-
|
|
106
|
-
res[i] += cj0.pmul(A0[i], t0) + cj0.pmul(A1[i],t1);
|
|
96
|
+
for (Index i = starti; i < alignedStart; ++i) {
|
|
97
|
+
res[i] += cj0.pmul(A0[i], t0) + cj0.pmul(A1[i], t1);
|
|
107
98
|
t2 += cj1.pmul(A0[i], rhs[i]);
|
|
108
99
|
t3 += cj1.pmul(A1[i], rhs[i]);
|
|
109
100
|
}
|
|
110
101
|
// Yes this an optimization for gcc 4.3 and 4.4 (=> huge speed up)
|
|
111
102
|
// gcc 4.2 does this optimization automatically.
|
|
112
|
-
const Scalar* EIGEN_RESTRICT a0It
|
|
113
|
-
const Scalar* EIGEN_RESTRICT a1It
|
|
103
|
+
const Scalar* EIGEN_RESTRICT a0It = A0 + alignedStart;
|
|
104
|
+
const Scalar* EIGEN_RESTRICT a1It = A1 + alignedStart;
|
|
114
105
|
const Scalar* EIGEN_RESTRICT rhsIt = rhs + alignedStart;
|
|
115
|
-
|
|
116
|
-
for (Index i=alignedStart; i<alignedEnd; i+=PacketSize)
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
Packet A1i = ploadu<Packet>(a1It);
|
|
120
|
-
|
|
121
|
-
Packet
|
|
122
|
-
|
|
123
|
-
Xi
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
106
|
+
Scalar* EIGEN_RESTRICT resIt = res + alignedStart;
|
|
107
|
+
for (Index i = alignedStart; i < alignedEnd; i += PacketSize) {
|
|
108
|
+
Packet A0i = ploadu<Packet>(a0It);
|
|
109
|
+
a0It += PacketSize;
|
|
110
|
+
Packet A1i = ploadu<Packet>(a1It);
|
|
111
|
+
a1It += PacketSize;
|
|
112
|
+
Packet Bi = ploadu<Packet>(rhsIt);
|
|
113
|
+
rhsIt += PacketSize; // FIXME should be aligned in most cases
|
|
114
|
+
Packet Xi = pload<Packet>(resIt);
|
|
115
|
+
|
|
116
|
+
Xi = pcj0.pmadd(A0i, ptmp0, pcj0.pmadd(A1i, ptmp1, Xi));
|
|
117
|
+
ptmp2 = pcj1.pmadd(A0i, Bi, ptmp2);
|
|
118
|
+
ptmp3 = pcj1.pmadd(A1i, Bi, ptmp3);
|
|
119
|
+
pstore(resIt, Xi);
|
|
120
|
+
resIt += PacketSize;
|
|
127
121
|
}
|
|
128
|
-
for (Index i=alignedEnd; i<endi; i++)
|
|
129
|
-
|
|
130
|
-
res[i] += cj0.pmul(A0[i], t0) + cj0.pmul(A1[i],t1);
|
|
122
|
+
for (Index i = alignedEnd; i < endi; i++) {
|
|
123
|
+
res[i] += cj0.pmul(A0[i], t0) + cj0.pmul(A1[i], t1);
|
|
131
124
|
t2 += cj1.pmul(A0[i], rhs[i]);
|
|
132
125
|
t3 += cj1.pmul(A1[i], rhs[i]);
|
|
133
126
|
}
|
|
134
127
|
|
|
135
|
-
res[j]
|
|
136
|
-
res[j+1] += alpha * (t3 + predux(ptmp3));
|
|
128
|
+
res[j] += alpha * (t2 + predux(ptmp2));
|
|
129
|
+
res[j + 1] += alpha * (t3 + predux(ptmp3));
|
|
137
130
|
}
|
|
138
|
-
for (Index j=FirstTriangular ? 0 : bound;j<(FirstTriangular ? bound : size);j++)
|
|
139
|
-
|
|
140
|
-
const Scalar* EIGEN_RESTRICT A0 = lhs + j*lhsStride;
|
|
131
|
+
for (Index j = FirstTriangular ? 0 : bound; j < (FirstTriangular ? bound : size); j++) {
|
|
132
|
+
const Scalar* EIGEN_RESTRICT A0 = lhs + j * lhsStride;
|
|
141
133
|
|
|
142
134
|
Scalar t1 = cjAlpha * rhs[j];
|
|
143
135
|
Scalar t2(0);
|
|
144
136
|
res[j] += cjd.pmul(numext::real(A0[j]), t1);
|
|
145
|
-
for (Index i=FirstTriangular ? 0 : j+1; i<(FirstTriangular ? j : size); i++)
|
|
146
|
-
{
|
|
137
|
+
for (Index i = FirstTriangular ? 0 : j + 1; i < (FirstTriangular ? j : size); i++) {
|
|
147
138
|
res[i] += cj0.pmul(A0[i], t1);
|
|
148
139
|
t2 += cj1.pmul(A0[i], rhs[i]);
|
|
149
140
|
}
|
|
@@ -151,110 +142,112 @@ EIGEN_DONT_INLINE void selfadjoint_matrix_vector_product<Scalar,Index,StorageOrd
|
|
|
151
142
|
}
|
|
152
143
|
}
|
|
153
144
|
|
|
154
|
-
}
|
|
145
|
+
} // end namespace internal
|
|
155
146
|
|
|
156
147
|
/***************************************************************************
|
|
157
|
-
* Wrapper to product_selfadjoint_vector
|
|
158
|
-
***************************************************************************/
|
|
148
|
+
* Wrapper to product_selfadjoint_vector
|
|
149
|
+
***************************************************************************/
|
|
159
150
|
|
|
160
151
|
namespace internal {
|
|
161
152
|
|
|
162
|
-
template<typename Lhs, int LhsMode, typename Rhs>
|
|
163
|
-
struct selfadjoint_product_impl<Lhs,LhsMode,false,Rhs,0,true>
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
153
|
+
template <typename Lhs, int LhsMode, typename Rhs>
|
|
154
|
+
struct selfadjoint_product_impl<Lhs, LhsMode, false, Rhs, 0, true> {
|
|
155
|
+
typedef typename Product<Lhs, Rhs>::Scalar Scalar;
|
|
156
|
+
|
|
167
157
|
typedef internal::blas_traits<Lhs> LhsBlasTraits;
|
|
168
158
|
typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhsType;
|
|
169
|
-
typedef
|
|
170
|
-
|
|
159
|
+
typedef internal::remove_all_t<ActualLhsType> ActualLhsTypeCleaned;
|
|
160
|
+
|
|
171
161
|
typedef internal::blas_traits<Rhs> RhsBlasTraits;
|
|
172
162
|
typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhsType;
|
|
173
|
-
typedef
|
|
163
|
+
typedef internal::remove_all_t<ActualRhsType> ActualRhsTypeCleaned;
|
|
164
|
+
|
|
165
|
+
enum { LhsUpLo = LhsMode & (Upper | Lower) };
|
|
174
166
|
|
|
175
|
-
|
|
167
|
+
// Verify that the Rhs is a vector in the correct orientation.
|
|
168
|
+
// Otherwise, we break the assumption that we are multiplying
|
|
169
|
+
// MxN * Nx1.
|
|
170
|
+
static_assert(Rhs::ColsAtCompileTime == 1, "The RHS must be a column vector.");
|
|
176
171
|
|
|
177
|
-
template<typename Dest>
|
|
178
|
-
static void run(Dest& dest, const Lhs
|
|
179
|
-
{
|
|
172
|
+
template <typename Dest>
|
|
173
|
+
static EIGEN_DEVICE_FUNC void run(Dest& dest, const Lhs& a_lhs, const Rhs& a_rhs, const Scalar& alpha) {
|
|
180
174
|
typedef typename Dest::Scalar ResScalar;
|
|
181
175
|
typedef typename Rhs::Scalar RhsScalar;
|
|
182
|
-
typedef Map<Matrix<ResScalar,Dynamic,1>,
|
|
183
|
-
|
|
184
|
-
eigen_assert(dest.rows()==a_lhs.rows() && dest.cols()==a_rhs.cols());
|
|
176
|
+
typedef Map<Matrix<ResScalar, Dynamic, 1>, plain_enum_min(AlignedMax, internal::packet_traits<ResScalar>::size)>
|
|
177
|
+
MappedDest;
|
|
185
178
|
|
|
186
|
-
|
|
187
|
-
typename internal::add_const_on_value_type<ActualRhsType>::type rhs = RhsBlasTraits::extract(a_rhs);
|
|
179
|
+
eigen_assert(dest.rows() == a_lhs.rows() && dest.cols() == a_rhs.cols());
|
|
188
180
|
|
|
189
|
-
|
|
190
|
-
|
|
181
|
+
add_const_on_value_type_t<ActualLhsType> lhs = LhsBlasTraits::extract(a_lhs);
|
|
182
|
+
add_const_on_value_type_t<ActualRhsType> rhs = RhsBlasTraits::extract(a_rhs);
|
|
183
|
+
|
|
184
|
+
Scalar actualAlpha = alpha * LhsBlasTraits::extractScalarFactor(a_lhs) * RhsBlasTraits::extractScalarFactor(a_rhs);
|
|
191
185
|
|
|
192
186
|
enum {
|
|
193
|
-
EvalToDest = (Dest::InnerStrideAtCompileTime==1),
|
|
194
|
-
UseRhs = (ActualRhsTypeCleaned::InnerStrideAtCompileTime==1)
|
|
187
|
+
EvalToDest = (Dest::InnerStrideAtCompileTime == 1),
|
|
188
|
+
UseRhs = (ActualRhsTypeCleaned::InnerStrideAtCompileTime == 1)
|
|
195
189
|
};
|
|
196
|
-
|
|
197
|
-
internal::gemv_static_vector_if<ResScalar,Dest::SizeAtCompileTime,Dest::MaxSizeAtCompileTime,!EvalToDest> static_dest;
|
|
198
|
-
internal::gemv_static_vector_if<RhsScalar,ActualRhsTypeCleaned::SizeAtCompileTime,ActualRhsTypeCleaned::MaxSizeAtCompileTime,!UseRhs> static_rhs;
|
|
199
190
|
|
|
200
|
-
|
|
191
|
+
internal::gemv_static_vector_if<ResScalar, Dest::SizeAtCompileTime, Dest::MaxSizeAtCompileTime, !EvalToDest>
|
|
192
|
+
static_dest;
|
|
193
|
+
internal::gemv_static_vector_if<RhsScalar, ActualRhsTypeCleaned::SizeAtCompileTime,
|
|
194
|
+
ActualRhsTypeCleaned::MaxSizeAtCompileTime, !UseRhs>
|
|
195
|
+
static_rhs;
|
|
196
|
+
|
|
197
|
+
ei_declare_aligned_stack_constructed_variable(ResScalar, actualDestPtr, dest.size(),
|
|
201
198
|
EvalToDest ? dest.data() : static_dest.data());
|
|
202
|
-
|
|
203
|
-
ei_declare_aligned_stack_constructed_variable(RhsScalar,actualRhsPtr,rhs.size(),
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
if(!EvalToDest)
|
|
207
|
-
|
|
208
|
-
|
|
199
|
+
|
|
200
|
+
ei_declare_aligned_stack_constructed_variable(RhsScalar, actualRhsPtr, rhs.size(),
|
|
201
|
+
UseRhs ? const_cast<RhsScalar*>(rhs.data()) : static_rhs.data());
|
|
202
|
+
|
|
203
|
+
if (!EvalToDest) {
|
|
204
|
+
#ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
205
|
+
constexpr int Size = Dest::SizeAtCompileTime;
|
|
209
206
|
Index size = dest.size();
|
|
210
207
|
EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
211
|
-
|
|
208
|
+
#endif
|
|
212
209
|
MappedDest(actualDestPtr, dest.size()) = dest;
|
|
213
210
|
}
|
|
214
|
-
|
|
215
|
-
if(!UseRhs)
|
|
216
|
-
|
|
217
|
-
|
|
211
|
+
|
|
212
|
+
if (!UseRhs) {
|
|
213
|
+
#ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
214
|
+
constexpr int Size = ActualRhsTypeCleaned::SizeAtCompileTime;
|
|
218
215
|
Index size = rhs.size();
|
|
219
216
|
EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
220
|
-
|
|
217
|
+
#endif
|
|
221
218
|
Map<typename ActualRhsTypeCleaned::PlainObject>(actualRhsPtr, rhs.size()) = rhs;
|
|
222
219
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
if(!EvalToDest)
|
|
236
|
-
dest = MappedDest(actualDestPtr, dest.size());
|
|
220
|
+
|
|
221
|
+
internal::selfadjoint_matrix_vector_product<
|
|
222
|
+
Scalar, Index, (internal::traits<ActualLhsTypeCleaned>::Flags & RowMajorBit) ? RowMajor : ColMajor,
|
|
223
|
+
int(LhsUpLo), bool(LhsBlasTraits::NeedToConjugate),
|
|
224
|
+
bool(RhsBlasTraits::NeedToConjugate)>::run(lhs.rows(), // size
|
|
225
|
+
&lhs.coeffRef(0, 0), lhs.outerStride(), // lhs info
|
|
226
|
+
actualRhsPtr, // rhs info
|
|
227
|
+
actualDestPtr, // result info
|
|
228
|
+
actualAlpha // scale factor
|
|
229
|
+
);
|
|
230
|
+
|
|
231
|
+
if (!EvalToDest) dest = MappedDest(actualDestPtr, dest.size());
|
|
237
232
|
}
|
|
238
233
|
};
|
|
239
234
|
|
|
240
|
-
template<typename Lhs, typename Rhs, int RhsMode>
|
|
241
|
-
struct selfadjoint_product_impl<Lhs,0,true,Rhs,RhsMode,false>
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
enum { RhsUpLo = RhsMode&(Upper|Lower) };
|
|
235
|
+
template <typename Lhs, typename Rhs, int RhsMode>
|
|
236
|
+
struct selfadjoint_product_impl<Lhs, 0, true, Rhs, RhsMode, false> {
|
|
237
|
+
typedef typename Product<Lhs, Rhs>::Scalar Scalar;
|
|
238
|
+
enum { RhsUpLo = RhsMode & (Upper | Lower) };
|
|
245
239
|
|
|
246
|
-
template<typename Dest>
|
|
247
|
-
static void run(Dest& dest, const Lhs
|
|
248
|
-
{
|
|
240
|
+
template <typename Dest>
|
|
241
|
+
static void run(Dest& dest, const Lhs& a_lhs, const Rhs& a_rhs, const Scalar& alpha) {
|
|
249
242
|
// let's simply transpose the product
|
|
250
243
|
Transpose<Dest> destT(dest);
|
|
251
|
-
selfadjoint_product_impl<Transpose<const Rhs>, int(RhsUpLo)==Upper ? Lower : Upper, false,
|
|
252
|
-
|
|
244
|
+
selfadjoint_product_impl<Transpose<const Rhs>, int(RhsUpLo) == Upper ? Lower : Upper, false, Transpose<const Lhs>,
|
|
245
|
+
0, true>::run(destT, a_rhs.transpose(), a_lhs.transpose(), alpha);
|
|
253
246
|
}
|
|
254
247
|
};
|
|
255
248
|
|
|
256
|
-
}
|
|
249
|
+
} // end namespace internal
|
|
257
250
|
|
|
258
|
-
}
|
|
251
|
+
} // end namespace Eigen
|
|
259
252
|
|
|
260
|
-
#endif
|
|
253
|
+
#endif // EIGEN_SELFADJOINT_MATRIX_VECTOR_H
|
|
@@ -33,86 +33,83 @@
|
|
|
33
33
|
#ifndef EIGEN_SELFADJOINT_MATRIX_VECTOR_BLAS_H
|
|
34
34
|
#define EIGEN_SELFADJOINT_MATRIX_VECTOR_BLAS_H
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
// IWYU pragma: private
|
|
37
|
+
#include "../InternalHeaderCheck.h"
|
|
38
|
+
|
|
39
|
+
namespace Eigen {
|
|
37
40
|
|
|
38
41
|
namespace internal {
|
|
39
42
|
|
|
40
43
|
/**********************************************************************
|
|
41
|
-
* This file implements selfadjoint matrix-vector multiplication using BLAS
|
|
42
|
-
**********************************************************************/
|
|
44
|
+
* This file implements selfadjoint matrix-vector multiplication using BLAS
|
|
45
|
+
**********************************************************************/
|
|
43
46
|
|
|
44
47
|
// symv/hemv specialization
|
|
45
48
|
|
|
46
|
-
template<typename Scalar, typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs>
|
|
47
|
-
struct selfadjoint_matrix_vector_product_symv
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
#define EIGEN_BLAS_SYMV_SPECIALIZE(Scalar)
|
|
51
|
-
template<typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs>
|
|
52
|
-
struct selfadjoint_matrix_vector_product<Scalar,Index,StorageOrder,UpLo,ConjugateLhs,ConjugateRhs,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}\
|
|
66
|
-
} \
|
|
67
|
-
}; \
|
|
49
|
+
template <typename Scalar, typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs>
|
|
50
|
+
struct selfadjoint_matrix_vector_product_symv
|
|
51
|
+
: selfadjoint_matrix_vector_product<Scalar, Index, StorageOrder, UpLo, ConjugateLhs, ConjugateRhs, BuiltIn> {};
|
|
52
|
+
|
|
53
|
+
#define EIGEN_BLAS_SYMV_SPECIALIZE(Scalar) \
|
|
54
|
+
template <typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs> \
|
|
55
|
+
struct selfadjoint_matrix_vector_product<Scalar, Index, StorageOrder, UpLo, ConjugateLhs, ConjugateRhs, \
|
|
56
|
+
Specialized> { \
|
|
57
|
+
static void run(Index size, const Scalar* lhs, Index lhsStride, const Scalar* _rhs, Scalar* res, Scalar alpha) { \
|
|
58
|
+
enum { IsColMajor = StorageOrder == ColMajor }; \
|
|
59
|
+
if (IsColMajor == ConjugateLhs) { \
|
|
60
|
+
selfadjoint_matrix_vector_product<Scalar, Index, StorageOrder, UpLo, ConjugateLhs, ConjugateRhs, \
|
|
61
|
+
BuiltIn>::run(size, lhs, lhsStride, _rhs, res, alpha); \
|
|
62
|
+
} else { \
|
|
63
|
+
selfadjoint_matrix_vector_product_symv<Scalar, Index, StorageOrder, UpLo, ConjugateLhs, ConjugateRhs>::run( \
|
|
64
|
+
size, lhs, lhsStride, _rhs, res, alpha); \
|
|
65
|
+
} \
|
|
66
|
+
} \
|
|
67
|
+
};
|
|
68
68
|
|
|
69
69
|
EIGEN_BLAS_SYMV_SPECIALIZE(double)
|
|
70
70
|
EIGEN_BLAS_SYMV_SPECIALIZE(float)
|
|
71
71
|
EIGEN_BLAS_SYMV_SPECIALIZE(dcomplex)
|
|
72
72
|
EIGEN_BLAS_SYMV_SPECIALIZE(scomplex)
|
|
73
73
|
|
|
74
|
-
#define EIGEN_BLAS_SYMV_SPECIALIZATION(EIGTYPE,BLASTYPE,BLASFUNC)
|
|
75
|
-
template<typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs>
|
|
76
|
-
struct selfadjoint_matrix_vector_product_symv<EIGTYPE,Index,StorageOrder,UpLo,ConjugateLhs,ConjugateRhs> \
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
\
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
BLASFUNC(&uplo, &n, (const BLASTYPE*)&numext::real_ref(alpha), (const BLASTYPE*)lhs, &lda, (const BLASTYPE*)x_ptr, &incx, (const BLASTYPE*)&numext::real_ref(beta), (BLASTYPE*)res, &incy); \
|
|
99
|
-
}\
|
|
100
|
-
};
|
|
74
|
+
#define EIGEN_BLAS_SYMV_SPECIALIZATION(EIGTYPE, BLASTYPE, BLASFUNC) \
|
|
75
|
+
template <typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs> \
|
|
76
|
+
struct selfadjoint_matrix_vector_product_symv<EIGTYPE, Index, StorageOrder, UpLo, ConjugateLhs, ConjugateRhs> { \
|
|
77
|
+
typedef Matrix<EIGTYPE, Dynamic, 1, ColMajor> SYMVVector; \
|
|
78
|
+
\
|
|
79
|
+
static void run(Index size, const EIGTYPE* lhs, Index lhsStride, const EIGTYPE* _rhs, EIGTYPE* res, \
|
|
80
|
+
EIGTYPE alpha) { \
|
|
81
|
+
if (size == 0) return; \
|
|
82
|
+
enum { IsRowMajor = StorageOrder == RowMajor ? 1 : 0, IsLower = UpLo == Lower ? 1 : 0 }; \
|
|
83
|
+
BlasIndex n = convert_index<BlasIndex>(size), lda = convert_index<BlasIndex>(lhsStride), incx = 1, incy = 1; \
|
|
84
|
+
EIGTYPE beta(1); \
|
|
85
|
+
const EIGTYPE* x_ptr; \
|
|
86
|
+
char uplo = (IsRowMajor) ? (IsLower ? 'U' : 'L') : (IsLower ? 'L' : 'U'); \
|
|
87
|
+
SYMVVector x_tmp; \
|
|
88
|
+
if (ConjugateRhs) { \
|
|
89
|
+
Map<const SYMVVector, 0> map_x(_rhs, size, 1); \
|
|
90
|
+
x_tmp = map_x.conjugate(); \
|
|
91
|
+
x_ptr = x_tmp.data(); \
|
|
92
|
+
} else \
|
|
93
|
+
x_ptr = _rhs; \
|
|
94
|
+
BLASFUNC(&uplo, &n, (const BLASTYPE*)&numext::real_ref(alpha), (const BLASTYPE*)lhs, &lda, \
|
|
95
|
+
(const BLASTYPE*)x_ptr, &incx, (const BLASTYPE*)&numext::real_ref(beta), (BLASTYPE*)res, &incy); \
|
|
96
|
+
} \
|
|
97
|
+
};
|
|
101
98
|
|
|
102
99
|
#ifdef EIGEN_USE_MKL
|
|
103
|
-
EIGEN_BLAS_SYMV_SPECIALIZATION(double,
|
|
104
|
-
EIGEN_BLAS_SYMV_SPECIALIZATION(float,
|
|
100
|
+
EIGEN_BLAS_SYMV_SPECIALIZATION(double, double, dsymv)
|
|
101
|
+
EIGEN_BLAS_SYMV_SPECIALIZATION(float, float, ssymv)
|
|
105
102
|
EIGEN_BLAS_SYMV_SPECIALIZATION(dcomplex, MKL_Complex16, zhemv)
|
|
106
|
-
EIGEN_BLAS_SYMV_SPECIALIZATION(scomplex, MKL_Complex8,
|
|
103
|
+
EIGEN_BLAS_SYMV_SPECIALIZATION(scomplex, MKL_Complex8, chemv)
|
|
107
104
|
#else
|
|
108
|
-
EIGEN_BLAS_SYMV_SPECIALIZATION(double,
|
|
109
|
-
EIGEN_BLAS_SYMV_SPECIALIZATION(float,
|
|
105
|
+
EIGEN_BLAS_SYMV_SPECIALIZATION(double, double, dsymv_)
|
|
106
|
+
EIGEN_BLAS_SYMV_SPECIALIZATION(float, float, ssymv_)
|
|
110
107
|
EIGEN_BLAS_SYMV_SPECIALIZATION(dcomplex, double, zhemv_)
|
|
111
|
-
EIGEN_BLAS_SYMV_SPECIALIZATION(scomplex, float,
|
|
108
|
+
EIGEN_BLAS_SYMV_SPECIALIZATION(scomplex, float, chemv_)
|
|
112
109
|
#endif
|
|
113
110
|
|
|
114
|
-
}
|
|
111
|
+
} // end namespace internal
|
|
115
112
|
|
|
116
|
-
}
|
|
113
|
+
} // end namespace Eigen
|
|
117
114
|
|
|
118
|
-
#endif
|
|
115
|
+
#endif // EIGEN_SELFADJOINT_MATRIX_VECTOR_BLAS_H
|