@smake/eigen 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -20
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +187 -120
- package/eigen/Eigen/Eigenvalues +16 -13
- package/eigen/Eigen/Geometry +18 -18
- package/eigen/Eigen/Householder +9 -7
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -13
- package/eigen/Eigen/KLUSupport +23 -21
- package/eigen/Eigen/LU +15 -16
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -51
- package/eigen/Eigen/PaStiXSupport +23 -21
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -20
- package/eigen/Eigen/QtAlignedMalloc +5 -12
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -17
- package/eigen/Eigen/Sparse +1 -2
- package/eigen/Eigen/SparseCholesky +18 -15
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +9 -9
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
- package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
- package/eigen/Eigen/src/Core/Array.h +329 -370
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
- package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
- package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
- package/eigen/Eigen/src/Core/Block.h +371 -390
- package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
- package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
- package/eigen/Eigen/src/Core/DenseBase.h +630 -658
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
- package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +168 -207
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +167 -217
- package/eigen/Eigen/src/Core/EigenBase.h +74 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
- package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
- package/eigen/Eigen/src/Core/IO.h +131 -156
- package/eigen/Eigen/src/Core/IndexedView.h +209 -125
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +50 -59
- package/eigen/Eigen/src/Core/Map.h +123 -141
- package/eigen/Eigen/src/Core/MapBase.h +255 -282
- package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
- package/eigen/Eigen/src/Core/Matrix.h +463 -494
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
- package/eigen/Eigen/src/Core/NestByValue.h +58 -52
- package/eigen/Eigen/src/Core/NoAlias.h +79 -86
- package/eigen/Eigen/src/Core/NumTraits.h +206 -206
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
- package/eigen/Eigen/src/Core/Product.h +246 -130
- package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
- package/eigen/Eigen/src/Core/Random.h +153 -164
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +334 -314
- package/eigen/Eigen/src/Core/Ref.h +259 -257
- package/eigen/Eigen/src/Core/Replicate.h +92 -104
- package/eigen/Eigen/src/Core/Reshaped.h +215 -271
- package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
- package/eigen/Eigen/src/Core/Reverse.h +133 -148
- package/eigen/Eigen/src/Core/Select.h +68 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +88 -102
- package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
- package/eigen/Eigen/src/Core/SolverBase.h +132 -133
- package/eigen/Eigen/src/Core/StableNorm.h +113 -147
- package/eigen/Eigen/src/Core/StlIterators.h +404 -248
- package/eigen/Eigen/src/Core/Stride.h +90 -92
- package/eigen/Eigen/src/Core/Swap.h +70 -39
- package/eigen/Eigen/src/Core/Transpose.h +258 -295
- package/eigen/Eigen/src/Core/Transpositions.h +270 -333
- package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
- package/eigen/Eigen/src/Core/Visitor.h +464 -308
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
- package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
- package/eigen/Eigen/src/Core/util/Constants.h +297 -262
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
- package/eigen/Eigen/src/Core/util/Macros.h +655 -773
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +970 -748
- package/eigen/Eigen/src/Core/util/Meta.h +581 -633
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
- package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
- package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
- package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
- package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
- package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
- package/eigen/Eigen/src/Geometry/Transform.h +858 -936
- package/eigen/Eigen/src/Geometry/Translation.h +94 -92
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
- package/eigen/Eigen/src/Householder/Householder.h +102 -124
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
- package/eigen/Eigen/src/LU/Determinant.h +50 -69
- package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
- package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
- package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
- package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/package.json +1 -1
- package/eigen/COPYING.APACHE +0 -203
- package/eigen/COPYING.BSD +0 -26
- package/eigen/COPYING.GPL +0 -674
- package/eigen/COPYING.LGPL +0 -502
- package/eigen/COPYING.MINPACK +0 -51
- package/eigen/COPYING.MPL2 +0 -373
- package/eigen/COPYING.README +0 -18
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
- package/eigen/README.md +0 -5
|
@@ -10,7 +10,10 @@
|
|
|
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
|
|
|
@@ -20,63 +23,54 @@ namespace internal {
|
|
|
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 EIGEN_DEVICE_FUNC
|
|
31
|
-
|
|
32
|
-
Index size,
|
|
33
|
-
const Scalar* lhs, Index lhsStride,
|
|
34
|
-
const Scalar* rhs,
|
|
35
|
-
Scalar* res,
|
|
36
|
-
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);
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
template<typename Scalar, typename Index, int StorageOrder, int UpLo, bool ConjugateLhs, bool ConjugateRhs,
|
|
40
|
-
|
|
41
|
-
void
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const Scalar* rhs,
|
|
45
|
-
Scalar* res,
|
|
46
|
-
Scalar alpha)
|
|
47
|
-
{
|
|
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) {
|
|
48
44
|
typedef typename packet_traits<Scalar>::type Packet;
|
|
49
45
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
|
50
|
-
const Index PacketSize = sizeof(Packet)/sizeof(Scalar);
|
|
46
|
+
const Index PacketSize = sizeof(Packet) / sizeof(Scalar);
|
|
51
47
|
|
|
52
48
|
enum {
|
|
53
|
-
IsRowMajor = StorageOrder==RowMajor ? 1 : 0,
|
|
49
|
+
IsRowMajor = StorageOrder == RowMajor ? 1 : 0,
|
|
54
50
|
IsLower = UpLo == Lower ? 1 : 0,
|
|
55
51
|
FirstTriangular = IsRowMajor == IsLower
|
|
56
52
|
};
|
|
57
53
|
|
|
58
|
-
conj_helper<Scalar,Scalar,NumTraits<Scalar>::IsComplex &&
|
|
59
|
-
conj_helper<Scalar,Scalar,NumTraits<Scalar>::IsComplex &&
|
|
60
|
-
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;
|
|
61
57
|
|
|
62
|
-
conj_helper<Packet,Packet,NumTraits<Scalar>::IsComplex &&
|
|
63
|
-
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;
|
|
64
61
|
|
|
65
62
|
Scalar cjAlpha = ConjugateRhs ? numext::conj(alpha) : alpha;
|
|
66
63
|
|
|
67
|
-
Index bound = numext::maxi(Index(0), size-8) & 0xfffffffe;
|
|
68
|
-
if (FirstTriangular)
|
|
69
|
-
bound = size - bound;
|
|
64
|
+
Index bound = numext::maxi(Index(0), size - 8) & 0xfffffffe;
|
|
65
|
+
if (FirstTriangular) bound = size - bound;
|
|
70
66
|
|
|
71
|
-
for (Index j=FirstTriangular ? bound : 0;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const Scalar* EIGEN_RESTRICT A0 = lhs + j*lhsStride;
|
|
75
|
-
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;
|
|
76
70
|
|
|
77
71
|
Scalar t0 = cjAlpha * rhs[j];
|
|
78
72
|
Packet ptmp0 = pset1<Packet>(t0);
|
|
79
|
-
Scalar t1 = cjAlpha * rhs[j+1];
|
|
73
|
+
Scalar t1 = cjAlpha * rhs[j + 1];
|
|
80
74
|
Packet ptmp1 = pset1<Packet>(t1);
|
|
81
75
|
|
|
82
76
|
Scalar t2(0);
|
|
@@ -84,67 +78,63 @@ void selfadjoint_matrix_vector_product<Scalar,Index,StorageOrder,UpLo,ConjugateL
|
|
|
84
78
|
Scalar t3(0);
|
|
85
79
|
Packet ptmp3 = pset1<Packet>(t3);
|
|
86
80
|
|
|
87
|
-
Index starti = FirstTriangular ? 0 : j+2;
|
|
88
|
-
Index endi
|
|
89
|
-
Index alignedStart = (starti) + internal::first_default_aligned(&res[starti], endi-starti);
|
|
90
|
-
Index alignedEnd = alignedStart + ((endi-alignedStart)/(PacketSize))*(PacketSize);
|
|
91
|
-
|
|
92
|
-
res[j]
|
|
93
|
-
res[j+1] += cjd.pmul(numext::real(A1[j+1]), t1);
|
|
94
|
-
if(FirstTriangular)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
{
|
|
101
|
-
res[j+1] += cj0.pmul(A0[j+1],t0);
|
|
102
|
-
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]);
|
|
103
94
|
}
|
|
104
95
|
|
|
105
|
-
for (Index i=starti; i<alignedStart; ++i)
|
|
106
|
-
|
|
107
|
-
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);
|
|
108
98
|
t2 += cj1.pmul(A0[i], rhs[i]);
|
|
109
99
|
t3 += cj1.pmul(A1[i], rhs[i]);
|
|
110
100
|
}
|
|
111
101
|
// Yes this an optimization for gcc 4.3 and 4.4 (=> huge speed up)
|
|
112
102
|
// gcc 4.2 does this optimization automatically.
|
|
113
|
-
const Scalar* EIGEN_RESTRICT a0It
|
|
114
|
-
const Scalar* EIGEN_RESTRICT a1It
|
|
103
|
+
const Scalar* EIGEN_RESTRICT a0It = A0 + alignedStart;
|
|
104
|
+
const Scalar* EIGEN_RESTRICT a1It = A1 + alignedStart;
|
|
115
105
|
const Scalar* EIGEN_RESTRICT rhsIt = rhs + alignedStart;
|
|
116
|
-
|
|
117
|
-
for (Index i=alignedStart; i<alignedEnd; i+=PacketSize)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
Packet A1i = ploadu<Packet>(a1It);
|
|
121
|
-
|
|
122
|
-
Packet
|
|
123
|
-
|
|
124
|
-
Xi
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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;
|
|
128
121
|
}
|
|
129
|
-
for (Index i=alignedEnd; i<endi; i++)
|
|
130
|
-
|
|
131
|
-
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);
|
|
132
124
|
t2 += cj1.pmul(A0[i], rhs[i]);
|
|
133
125
|
t3 += cj1.pmul(A1[i], rhs[i]);
|
|
134
126
|
}
|
|
135
127
|
|
|
136
|
-
res[j]
|
|
137
|
-
res[j+1] += alpha * (t3 + predux(ptmp3));
|
|
128
|
+
res[j] += alpha * (t2 + predux(ptmp2));
|
|
129
|
+
res[j + 1] += alpha * (t3 + predux(ptmp3));
|
|
138
130
|
}
|
|
139
|
-
for (Index j=FirstTriangular ? 0 : bound;j<(FirstTriangular ? bound : size);j++)
|
|
140
|
-
|
|
141
|
-
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;
|
|
142
133
|
|
|
143
134
|
Scalar t1 = cjAlpha * rhs[j];
|
|
144
135
|
Scalar t2(0);
|
|
145
136
|
res[j] += cjd.pmul(numext::real(A0[j]), t1);
|
|
146
|
-
for (Index i=FirstTriangular ? 0 : j+1; i<(FirstTriangular ? j : size); i++)
|
|
147
|
-
{
|
|
137
|
+
for (Index i = FirstTriangular ? 0 : j + 1; i < (FirstTriangular ? j : size); i++) {
|
|
148
138
|
res[i] += cj0.pmul(A0[i], t1);
|
|
149
139
|
t2 += cj1.pmul(A0[i], rhs[i]);
|
|
150
140
|
}
|
|
@@ -152,111 +142,112 @@ void selfadjoint_matrix_vector_product<Scalar,Index,StorageOrder,UpLo,ConjugateL
|
|
|
152
142
|
}
|
|
153
143
|
}
|
|
154
144
|
|
|
155
|
-
}
|
|
145
|
+
} // end namespace internal
|
|
156
146
|
|
|
157
147
|
/***************************************************************************
|
|
158
|
-
* Wrapper to product_selfadjoint_vector
|
|
159
|
-
***************************************************************************/
|
|
148
|
+
* Wrapper to product_selfadjoint_vector
|
|
149
|
+
***************************************************************************/
|
|
160
150
|
|
|
161
151
|
namespace internal {
|
|
162
152
|
|
|
163
|
-
template<typename Lhs, int LhsMode, typename Rhs>
|
|
164
|
-
struct selfadjoint_product_impl<Lhs,LhsMode,false,Rhs,0,true>
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
+
|
|
168
157
|
typedef internal::blas_traits<Lhs> LhsBlasTraits;
|
|
169
158
|
typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhsType;
|
|
170
|
-
typedef
|
|
171
|
-
|
|
159
|
+
typedef internal::remove_all_t<ActualLhsType> ActualLhsTypeCleaned;
|
|
160
|
+
|
|
172
161
|
typedef internal::blas_traits<Rhs> RhsBlasTraits;
|
|
173
162
|
typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhsType;
|
|
174
|
-
typedef
|
|
163
|
+
typedef internal::remove_all_t<ActualRhsType> ActualRhsTypeCleaned;
|
|
164
|
+
|
|
165
|
+
enum { LhsUpLo = LhsMode & (Upper | Lower) };
|
|
175
166
|
|
|
176
|
-
|
|
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.");
|
|
177
171
|
|
|
178
|
-
template<typename Dest>
|
|
179
|
-
static EIGEN_DEVICE_FUNC
|
|
180
|
-
void run(Dest& dest, const Lhs &a_lhs, const Rhs &a_rhs, const Scalar& alpha)
|
|
181
|
-
{
|
|
172
|
+
template <typename Dest>
|
|
173
|
+
static EIGEN_DEVICE_FUNC void run(Dest& dest, const Lhs& a_lhs, const Rhs& a_rhs, const Scalar& alpha) {
|
|
182
174
|
typedef typename Dest::Scalar ResScalar;
|
|
183
175
|
typedef typename Rhs::Scalar RhsScalar;
|
|
184
|
-
typedef Map<Matrix<ResScalar,Dynamic,1>,
|
|
185
|
-
|
|
186
|
-
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;
|
|
187
178
|
|
|
188
|
-
|
|
189
|
-
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());
|
|
190
180
|
|
|
191
|
-
|
|
192
|
-
|
|
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);
|
|
193
185
|
|
|
194
186
|
enum {
|
|
195
|
-
EvalToDest = (Dest::InnerStrideAtCompileTime==1),
|
|
196
|
-
UseRhs = (ActualRhsTypeCleaned::InnerStrideAtCompileTime==1)
|
|
187
|
+
EvalToDest = (Dest::InnerStrideAtCompileTime == 1),
|
|
188
|
+
UseRhs = (ActualRhsTypeCleaned::InnerStrideAtCompileTime == 1)
|
|
197
189
|
};
|
|
198
|
-
|
|
199
|
-
internal::gemv_static_vector_if<ResScalar,Dest::SizeAtCompileTime,Dest::MaxSizeAtCompileTime,!EvalToDest> static_dest;
|
|
200
|
-
internal::gemv_static_vector_if<RhsScalar,ActualRhsTypeCleaned::SizeAtCompileTime,ActualRhsTypeCleaned::MaxSizeAtCompileTime,!UseRhs> static_rhs;
|
|
201
190
|
|
|
202
|
-
|
|
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(),
|
|
203
198
|
EvalToDest ? dest.data() : static_dest.data());
|
|
204
|
-
|
|
205
|
-
ei_declare_aligned_stack_constructed_variable(RhsScalar,actualRhsPtr,rhs.size(),
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
if(!EvalToDest)
|
|
209
|
-
|
|
210
|
-
|
|
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;
|
|
211
206
|
Index size = dest.size();
|
|
212
207
|
EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
213
|
-
|
|
208
|
+
#endif
|
|
214
209
|
MappedDest(actualDestPtr, dest.size()) = dest;
|
|
215
210
|
}
|
|
216
|
-
|
|
217
|
-
if(!UseRhs)
|
|
218
|
-
|
|
219
|
-
|
|
211
|
+
|
|
212
|
+
if (!UseRhs) {
|
|
213
|
+
#ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
214
|
+
constexpr int Size = ActualRhsTypeCleaned::SizeAtCompileTime;
|
|
220
215
|
Index size = rhs.size();
|
|
221
216
|
EIGEN_DENSE_STORAGE_CTOR_PLUGIN
|
|
222
|
-
|
|
217
|
+
#endif
|
|
223
218
|
Map<typename ActualRhsTypeCleaned::PlainObject>(actualRhsPtr, rhs.size()) = rhs;
|
|
224
219
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
if(!EvalToDest)
|
|
238
|
-
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());
|
|
239
232
|
}
|
|
240
233
|
};
|
|
241
234
|
|
|
242
|
-
template<typename Lhs, typename Rhs, int RhsMode>
|
|
243
|
-
struct selfadjoint_product_impl<Lhs,0,true,Rhs,RhsMode,false>
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
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) };
|
|
247
239
|
|
|
248
|
-
template<typename Dest>
|
|
249
|
-
static void run(Dest& dest, const Lhs
|
|
250
|
-
{
|
|
240
|
+
template <typename Dest>
|
|
241
|
+
static void run(Dest& dest, const Lhs& a_lhs, const Rhs& a_rhs, const Scalar& alpha) {
|
|
251
242
|
// let's simply transpose the product
|
|
252
243
|
Transpose<Dest> destT(dest);
|
|
253
|
-
selfadjoint_product_impl<Transpose<const Rhs>, int(RhsUpLo)==Upper ? Lower : Upper, false,
|
|
254
|
-
|
|
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);
|
|
255
246
|
}
|
|
256
247
|
};
|
|
257
248
|
|
|
258
|
-
}
|
|
249
|
+
} // end namespace internal
|
|
259
250
|
|
|
260
|
-
}
|
|
251
|
+
} // end namespace Eigen
|
|
261
252
|
|
|
262
|
-
#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
|