@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
|
@@ -15,23 +15,22 @@
|
|
|
15
15
|
|
|
16
16
|
#include <iostream>
|
|
17
17
|
|
|
18
|
+
// IWYU pragma: private
|
|
19
|
+
#include "../../InternalHeaderCheck.h"
|
|
20
|
+
|
|
18
21
|
namespace Eigen {
|
|
19
22
|
|
|
20
23
|
namespace internal {
|
|
21
24
|
|
|
22
25
|
//---------- float ----------
|
|
23
26
|
struct Packet2cf {
|
|
24
|
-
EIGEN_STRONG_INLINE Packet2cf() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const std::complex<float>& b) {
|
|
28
|
-
Packet4f t = { std::real(a), std::imag(a), std::real(b), std::imag(b) };
|
|
27
|
+
EIGEN_STRONG_INLINE Packet2cf() {}
|
|
28
|
+
EIGEN_STRONG_INLINE explicit Packet2cf(const std::complex<float>& a, const std::complex<float>& b) {
|
|
29
|
+
Packet4f t = {std::real(a), std::imag(a), std::real(b), std::imag(b)};
|
|
29
30
|
v = t;
|
|
30
31
|
}
|
|
31
|
-
EIGEN_STRONG_INLINE explicit Packet2cf(const Packet4f& a) : v(a) {
|
|
32
|
-
}
|
|
33
|
-
EIGEN_STRONG_INLINE Packet2cf(const Packet2cf& a) : v(a.v) {
|
|
34
|
-
}
|
|
32
|
+
EIGEN_STRONG_INLINE explicit Packet2cf(const Packet4f& a) : v(a) {}
|
|
33
|
+
EIGEN_STRONG_INLINE Packet2cf(const Packet2cf& a) : v(a.v) {}
|
|
35
34
|
EIGEN_STRONG_INLINE Packet2cf& operator=(const Packet2cf& b) {
|
|
36
35
|
v = b.v;
|
|
37
36
|
return *this;
|
|
@@ -58,36 +57,23 @@ struct Packet2cf {
|
|
|
58
57
|
v = padd(v1, v2);
|
|
59
58
|
return *this;
|
|
60
59
|
}
|
|
61
|
-
EIGEN_STRONG_INLINE Packet2cf operator*(const Packet2cf& b) const {
|
|
62
|
-
return Packet2cf(*this) *= b;
|
|
63
|
-
}
|
|
60
|
+
EIGEN_STRONG_INLINE Packet2cf operator*(const Packet2cf& b) const { return Packet2cf(*this) *= b; }
|
|
64
61
|
EIGEN_STRONG_INLINE Packet2cf& operator+=(const Packet2cf& b) {
|
|
65
62
|
v = padd(v, b.v);
|
|
66
63
|
return *this;
|
|
67
64
|
}
|
|
68
|
-
EIGEN_STRONG_INLINE Packet2cf operator+(const Packet2cf& b) const {
|
|
69
|
-
return Packet2cf(*this) += b;
|
|
70
|
-
}
|
|
65
|
+
EIGEN_STRONG_INLINE Packet2cf operator+(const Packet2cf& b) const { return Packet2cf(*this) += b; }
|
|
71
66
|
EIGEN_STRONG_INLINE Packet2cf& operator-=(const Packet2cf& b) {
|
|
72
67
|
v = psub(v, b.v);
|
|
73
68
|
return *this;
|
|
74
69
|
}
|
|
75
|
-
EIGEN_STRONG_INLINE Packet2cf operator-(const Packet2cf& b) const {
|
|
76
|
-
|
|
77
|
-
}
|
|
70
|
+
EIGEN_STRONG_INLINE Packet2cf operator-(const Packet2cf& b) const { return Packet2cf(*this) -= b; }
|
|
71
|
+
EIGEN_STRONG_INLINE Packet2cf operator/(const Packet2cf& b) const { return pdiv_complex(Packet2cf(*this), b); }
|
|
78
72
|
EIGEN_STRONG_INLINE Packet2cf& operator/=(const Packet2cf& b) {
|
|
79
|
-
*this
|
|
80
|
-
Packet4f s = pmul<Packet4f>(b.v, b.v);
|
|
81
|
-
s = padd(s, (Packet4f)__builtin_msa_shf_w((v4i32)s, EIGEN_MSA_SHF_I8(1, 0, 3, 2)));
|
|
82
|
-
v = pdiv(v, s);
|
|
73
|
+
*this = Packet2cf(*this) / b;
|
|
83
74
|
return *this;
|
|
84
75
|
}
|
|
85
|
-
EIGEN_STRONG_INLINE Packet2cf operator
|
|
86
|
-
return Packet2cf(*this) /= b;
|
|
87
|
-
}
|
|
88
|
-
EIGEN_STRONG_INLINE Packet2cf operator-(void) const {
|
|
89
|
-
return Packet2cf(pnegate(v));
|
|
90
|
-
}
|
|
76
|
+
EIGEN_STRONG_INLINE Packet2cf operator-(void) const { return Packet2cf(pnegate(v)); }
|
|
91
77
|
|
|
92
78
|
Packet4f v;
|
|
93
79
|
};
|
|
@@ -108,7 +94,6 @@ struct packet_traits<std::complex<float> > : default_packet_traits {
|
|
|
108
94
|
Vectorizable = 1,
|
|
109
95
|
AlignedOnScalar = 1,
|
|
110
96
|
size = 2,
|
|
111
|
-
HasHalfPacket = 0,
|
|
112
97
|
|
|
113
98
|
HasAdd = 1,
|
|
114
99
|
HasSub = 1,
|
|
@@ -127,7 +112,13 @@ struct packet_traits<std::complex<float> > : default_packet_traits {
|
|
|
127
112
|
template <>
|
|
128
113
|
struct unpacket_traits<Packet2cf> {
|
|
129
114
|
typedef std::complex<float> type;
|
|
130
|
-
enum {
|
|
115
|
+
enum {
|
|
116
|
+
size = 2,
|
|
117
|
+
alignment = Aligned16,
|
|
118
|
+
vectorizable = true,
|
|
119
|
+
masked_load_available = false,
|
|
120
|
+
masked_store_available = false
|
|
121
|
+
};
|
|
131
122
|
typedef Packet2cf half;
|
|
132
123
|
};
|
|
133
124
|
|
|
@@ -136,8 +127,8 @@ EIGEN_STRONG_INLINE Packet2cf pset1<Packet2cf>(const std::complex<float>& from)
|
|
|
136
127
|
EIGEN_MSA_DEBUG;
|
|
137
128
|
|
|
138
129
|
float f0 = from.real(), f1 = from.imag();
|
|
139
|
-
Packet4f v0 = {
|
|
140
|
-
Packet4f v1 = {
|
|
130
|
+
Packet4f v0 = {f0, f0, f0, f0};
|
|
131
|
+
Packet4f v1 = {f1, f1, f1, f1};
|
|
141
132
|
return Packet2cf((Packet4f)__builtin_msa_ilvr_w((Packet4i)v1, (Packet4i)v0));
|
|
142
133
|
}
|
|
143
134
|
|
|
@@ -226,32 +217,29 @@ EIGEN_STRONG_INLINE Packet2cf ploaddup<Packet2cf>(const std::complex<float>* fro
|
|
|
226
217
|
}
|
|
227
218
|
|
|
228
219
|
template <>
|
|
229
|
-
EIGEN_STRONG_INLINE void pstore<std::complex<float> >(std::complex<float>* to,
|
|
230
|
-
const Packet2cf& from) {
|
|
220
|
+
EIGEN_STRONG_INLINE void pstore<std::complex<float> >(std::complex<float>* to, const Packet2cf& from) {
|
|
231
221
|
EIGEN_MSA_DEBUG;
|
|
232
222
|
|
|
233
223
|
EIGEN_DEBUG_ALIGNED_STORE pstore<float>((float*)to, from.v);
|
|
234
224
|
}
|
|
235
225
|
|
|
236
226
|
template <>
|
|
237
|
-
EIGEN_STRONG_INLINE void pstoreu<std::complex<float> >(std::complex<float>* to,
|
|
238
|
-
const Packet2cf& from) {
|
|
227
|
+
EIGEN_STRONG_INLINE void pstoreu<std::complex<float> >(std::complex<float>* to, const Packet2cf& from) {
|
|
239
228
|
EIGEN_MSA_DEBUG;
|
|
240
229
|
|
|
241
230
|
EIGEN_DEBUG_UNALIGNED_STORE pstoreu<float>((float*)to, from.v);
|
|
242
231
|
}
|
|
243
232
|
|
|
244
233
|
template <>
|
|
245
|
-
EIGEN_DEVICE_FUNC inline Packet2cf pgather<std::complex<float>, Packet2cf>(
|
|
246
|
-
|
|
234
|
+
EIGEN_DEVICE_FUNC inline Packet2cf pgather<std::complex<float>, Packet2cf>(const std::complex<float>* from,
|
|
235
|
+
Index stride) {
|
|
247
236
|
EIGEN_MSA_DEBUG;
|
|
248
237
|
|
|
249
238
|
return Packet2cf(from[0 * stride], from[1 * stride]);
|
|
250
239
|
}
|
|
251
240
|
|
|
252
241
|
template <>
|
|
253
|
-
EIGEN_DEVICE_FUNC inline void pscatter<std::complex<float>, Packet2cf>(std::complex<float>* to,
|
|
254
|
-
const Packet2cf& from,
|
|
242
|
+
EIGEN_DEVICE_FUNC inline void pscatter<std::complex<float>, Packet2cf>(std::complex<float>* to, const Packet2cf& from,
|
|
255
243
|
Index stride) {
|
|
256
244
|
EIGEN_MSA_DEBUG;
|
|
257
245
|
|
|
@@ -301,8 +289,7 @@ template <>
|
|
|
301
289
|
EIGEN_STRONG_INLINE std::complex<float> predux_mul<Packet2cf>(const Packet2cf& a) {
|
|
302
290
|
EIGEN_MSA_DEBUG;
|
|
303
291
|
|
|
304
|
-
return std::complex<float>((a.v[0] * a.v[2]) - (a.v[1] * a.v[3]),
|
|
305
|
-
(a.v[0] * a.v[3]) + (a.v[1] * a.v[2]));
|
|
292
|
+
return std::complex<float>((a.v[0] * a.v[2]) - (a.v[1] * a.v[3]), (a.v[0] * a.v[3]) + (a.v[1] * a.v[2]));
|
|
306
293
|
}
|
|
307
294
|
|
|
308
295
|
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet2cf, Packet4f)
|
|
@@ -322,39 +309,33 @@ inline std::ostream& operator<<(std::ostream& os, const PacketBlock<Packet2cf, 2
|
|
|
322
309
|
EIGEN_DEVICE_FUNC inline void ptranspose(PacketBlock<Packet2cf, 2>& kernel) {
|
|
323
310
|
EIGEN_MSA_DEBUG;
|
|
324
311
|
|
|
325
|
-
Packet4f tmp =
|
|
326
|
-
|
|
327
|
-
kernel.packet[0].v =
|
|
328
|
-
(Packet4f)__builtin_msa_ilvr_d((v2i64)kernel.packet[1].v, (v2i64)kernel.packet[0].v);
|
|
312
|
+
Packet4f tmp = (Packet4f)__builtin_msa_ilvl_d((v2i64)kernel.packet[1].v, (v2i64)kernel.packet[0].v);
|
|
313
|
+
kernel.packet[0].v = (Packet4f)__builtin_msa_ilvr_d((v2i64)kernel.packet[1].v, (v2i64)kernel.packet[0].v);
|
|
329
314
|
kernel.packet[1].v = tmp;
|
|
330
315
|
}
|
|
331
316
|
|
|
332
317
|
template <>
|
|
333
318
|
EIGEN_STRONG_INLINE Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacket,
|
|
334
319
|
const Packet2cf& elsePacket) {
|
|
335
|
-
return (Packet2cf)(Packet4f)pblend<Packet2d>(ifPacket, (Packet2d)thenPacket.v,
|
|
336
|
-
(Packet2d)elsePacket.v);
|
|
320
|
+
return (Packet2cf)(Packet4f)pblend<Packet2d>(ifPacket, (Packet2d)thenPacket.v, (Packet2d)elsePacket.v);
|
|
337
321
|
}
|
|
338
322
|
|
|
339
323
|
//---------- double ----------
|
|
340
324
|
|
|
341
325
|
struct Packet1cd {
|
|
342
|
-
EIGEN_STRONG_INLINE Packet1cd() {
|
|
343
|
-
}
|
|
326
|
+
EIGEN_STRONG_INLINE Packet1cd() {}
|
|
344
327
|
EIGEN_STRONG_INLINE explicit Packet1cd(const std::complex<double>& a) {
|
|
345
328
|
v[0] = std::real(a);
|
|
346
329
|
v[1] = std::imag(a);
|
|
347
330
|
}
|
|
348
|
-
EIGEN_STRONG_INLINE explicit Packet1cd(const Packet2d& a) : v(a) {
|
|
349
|
-
}
|
|
350
|
-
EIGEN_STRONG_INLINE Packet1cd(const Packet1cd& a) : v(a.v) {
|
|
351
|
-
}
|
|
331
|
+
EIGEN_STRONG_INLINE explicit Packet1cd(const Packet2d& a) : v(a) {}
|
|
332
|
+
EIGEN_STRONG_INLINE Packet1cd(const Packet1cd& a) : v(a.v) {}
|
|
352
333
|
EIGEN_STRONG_INLINE Packet1cd& operator=(const Packet1cd& b) {
|
|
353
334
|
v = b.v;
|
|
354
335
|
return *this;
|
|
355
336
|
}
|
|
356
337
|
EIGEN_STRONG_INLINE Packet1cd conjugate(void) const {
|
|
357
|
-
static const v2u64 p2ul_CONJ_XOR = {
|
|
338
|
+
static const v2u64 p2ul_CONJ_XOR = {0x0, 0x8000000000000000};
|
|
358
339
|
return (Packet1cd)pxor(v, (Packet2d)p2ul_CONJ_XOR);
|
|
359
340
|
}
|
|
360
341
|
EIGEN_STRONG_INLINE Packet1cd& operator*=(const Packet1cd& b) {
|
|
@@ -376,23 +357,17 @@ struct Packet1cd {
|
|
|
376
357
|
v = padd(v1, v2);
|
|
377
358
|
return *this;
|
|
378
359
|
}
|
|
379
|
-
EIGEN_STRONG_INLINE Packet1cd operator*(const Packet1cd& b) const {
|
|
380
|
-
return Packet1cd(*this) *= b;
|
|
381
|
-
}
|
|
360
|
+
EIGEN_STRONG_INLINE Packet1cd operator*(const Packet1cd& b) const { return Packet1cd(*this) *= b; }
|
|
382
361
|
EIGEN_STRONG_INLINE Packet1cd& operator+=(const Packet1cd& b) {
|
|
383
362
|
v = padd(v, b.v);
|
|
384
363
|
return *this;
|
|
385
364
|
}
|
|
386
|
-
EIGEN_STRONG_INLINE Packet1cd operator+(const Packet1cd& b) const {
|
|
387
|
-
return Packet1cd(*this) += b;
|
|
388
|
-
}
|
|
365
|
+
EIGEN_STRONG_INLINE Packet1cd operator+(const Packet1cd& b) const { return Packet1cd(*this) += b; }
|
|
389
366
|
EIGEN_STRONG_INLINE Packet1cd& operator-=(const Packet1cd& b) {
|
|
390
367
|
v = psub(v, b.v);
|
|
391
368
|
return *this;
|
|
392
369
|
}
|
|
393
|
-
EIGEN_STRONG_INLINE Packet1cd operator-(const Packet1cd& b) const {
|
|
394
|
-
return Packet1cd(*this) -= b;
|
|
395
|
-
}
|
|
370
|
+
EIGEN_STRONG_INLINE Packet1cd operator-(const Packet1cd& b) const { return Packet1cd(*this) -= b; }
|
|
396
371
|
EIGEN_STRONG_INLINE Packet1cd& operator/=(const Packet1cd& b) {
|
|
397
372
|
*this *= b.conjugate();
|
|
398
373
|
Packet2d s = pmul<Packet2d>(b.v, b.v);
|
|
@@ -400,12 +375,8 @@ struct Packet1cd {
|
|
|
400
375
|
v = pdiv(v, s);
|
|
401
376
|
return *this;
|
|
402
377
|
}
|
|
403
|
-
EIGEN_STRONG_INLINE Packet1cd operator/(const Packet1cd& b) const {
|
|
404
|
-
|
|
405
|
-
}
|
|
406
|
-
EIGEN_STRONG_INLINE Packet1cd operator-(void) const {
|
|
407
|
-
return Packet1cd(pnegate(v));
|
|
408
|
-
}
|
|
378
|
+
EIGEN_STRONG_INLINE Packet1cd operator/(const Packet1cd& b) const { return Packet1cd(*this) /= b; }
|
|
379
|
+
EIGEN_STRONG_INLINE Packet1cd operator-(void) const { return Packet1cd(pnegate(v)); }
|
|
409
380
|
|
|
410
381
|
Packet2d v;
|
|
411
382
|
};
|
|
@@ -423,7 +394,6 @@ struct packet_traits<std::complex<double> > : default_packet_traits {
|
|
|
423
394
|
Vectorizable = 1,
|
|
424
395
|
AlignedOnScalar = 0,
|
|
425
396
|
size = 1,
|
|
426
|
-
HasHalfPacket = 0,
|
|
427
397
|
|
|
428
398
|
HasAdd = 1,
|
|
429
399
|
HasSub = 1,
|
|
@@ -441,7 +411,13 @@ struct packet_traits<std::complex<double> > : default_packet_traits {
|
|
|
441
411
|
template <>
|
|
442
412
|
struct unpacket_traits<Packet1cd> {
|
|
443
413
|
typedef std::complex<double> type;
|
|
444
|
-
enum {
|
|
414
|
+
enum {
|
|
415
|
+
size = 1,
|
|
416
|
+
alignment = Aligned16,
|
|
417
|
+
vectorizable = true,
|
|
418
|
+
masked_load_available = false,
|
|
419
|
+
masked_store_available = false
|
|
420
|
+
};
|
|
445
421
|
typedef Packet1cd half;
|
|
446
422
|
};
|
|
447
423
|
|
|
@@ -537,16 +513,14 @@ EIGEN_STRONG_INLINE Packet1cd ploaddup<Packet1cd>(const std::complex<double>* fr
|
|
|
537
513
|
}
|
|
538
514
|
|
|
539
515
|
template <>
|
|
540
|
-
EIGEN_STRONG_INLINE void pstore<std::complex<double> >(std::complex<double>* to,
|
|
541
|
-
const Packet1cd& from) {
|
|
516
|
+
EIGEN_STRONG_INLINE void pstore<std::complex<double> >(std::complex<double>* to, const Packet1cd& from) {
|
|
542
517
|
EIGEN_MSA_DEBUG;
|
|
543
518
|
|
|
544
519
|
EIGEN_DEBUG_ALIGNED_STORE pstore<double>((double*)to, from.v);
|
|
545
520
|
}
|
|
546
521
|
|
|
547
522
|
template <>
|
|
548
|
-
EIGEN_STRONG_INLINE void pstoreu<std::complex<double> >(std::complex<double>* to,
|
|
549
|
-
const Packet1cd& from) {
|
|
523
|
+
EIGEN_STRONG_INLINE void pstoreu<std::complex<double> >(std::complex<double>* to, const Packet1cd& from) {
|
|
550
524
|
EIGEN_MSA_DEBUG;
|
|
551
525
|
|
|
552
526
|
EIGEN_DEBUG_UNALIGNED_STORE pstoreu<double>((double*)to, from.v);
|
|
@@ -560,8 +534,8 @@ EIGEN_STRONG_INLINE void prefetch<std::complex<double> >(const std::complex<doub
|
|
|
560
534
|
}
|
|
561
535
|
|
|
562
536
|
template <>
|
|
563
|
-
EIGEN_DEVICE_FUNC inline Packet1cd pgather<std::complex<double>, Packet1cd>(
|
|
564
|
-
|
|
537
|
+
EIGEN_DEVICE_FUNC inline Packet1cd pgather<std::complex<double>, Packet1cd>(const std::complex<double>* from,
|
|
538
|
+
Index stride __attribute__((unused))) {
|
|
565
539
|
EIGEN_MSA_DEBUG;
|
|
566
540
|
|
|
567
541
|
Packet1cd res;
|
|
@@ -571,10 +545,8 @@ EIGEN_DEVICE_FUNC inline Packet1cd pgather<std::complex<double>, Packet1cd>(
|
|
|
571
545
|
}
|
|
572
546
|
|
|
573
547
|
template <>
|
|
574
|
-
EIGEN_DEVICE_FUNC inline void pscatter<std::complex<double>, Packet1cd>(std::complex<double>* to,
|
|
575
|
-
|
|
576
|
-
Index stride
|
|
577
|
-
__attribute__((unused))) {
|
|
548
|
+
EIGEN_DEVICE_FUNC inline void pscatter<std::complex<double>, Packet1cd>(std::complex<double>* to, const Packet1cd& from,
|
|
549
|
+
Index stride __attribute__((unused))) {
|
|
578
550
|
EIGEN_MSA_DEBUG;
|
|
579
551
|
|
|
580
552
|
pstore(to, from);
|
|
@@ -26,27 +26,29 @@
|
|
|
26
26
|
#ifndef EIGEN_MATH_FUNCTIONS_MSA_H
|
|
27
27
|
#define EIGEN_MATH_FUNCTIONS_MSA_H
|
|
28
28
|
|
|
29
|
+
// IWYU pragma: private
|
|
30
|
+
#include "../../InternalHeaderCheck.h"
|
|
31
|
+
|
|
29
32
|
namespace Eigen {
|
|
30
33
|
|
|
31
34
|
namespace internal {
|
|
32
35
|
|
|
33
36
|
template <>
|
|
34
|
-
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
|
|
35
|
-
|
|
36
|
-
static
|
|
37
|
-
static
|
|
38
|
-
static
|
|
39
|
-
static
|
|
40
|
-
static
|
|
41
|
-
static
|
|
42
|
-
static
|
|
43
|
-
static
|
|
44
|
-
static
|
|
45
|
-
static
|
|
46
|
-
static
|
|
47
|
-
static
|
|
48
|
-
static
|
|
49
|
-
static _EIGEN_DECLARE_CONST_Packet4f(1, 1.0f);
|
|
37
|
+
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f plog<Packet4f>(const Packet4f& _x) {
|
|
38
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_SQRTHF, 0.707106781186547524f);
|
|
39
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_p0, 7.0376836292e-2f);
|
|
40
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_p1, -1.1514610310e-1f);
|
|
41
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_p2, 1.1676998740e-1f);
|
|
42
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_p3, -1.2420140846e-1f);
|
|
43
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_p4, +1.4249322787e-1f);
|
|
44
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_p5, -1.6668057665e-1f);
|
|
45
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_p6, +2.0000714765e-1f);
|
|
46
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_p7, -2.4999993993e-1f);
|
|
47
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_p8, +3.3333331174e-1f);
|
|
48
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_q1, -2.12194440e-4f);
|
|
49
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_log_q2, 0.693359375f);
|
|
50
|
+
static EIGEN_DECLARE_CONST_Packet4f(half, 0.5f);
|
|
51
|
+
static EIGEN_DECLARE_CONST_Packet4f(1, 1.0f);
|
|
50
52
|
|
|
51
53
|
// Convert negative argument into NAN (quiet negative, to be specific).
|
|
52
54
|
Packet4f zero = (Packet4f)__builtin_msa_ldi_w(0);
|
|
@@ -119,31 +121,28 @@ plog<Packet4f>(const Packet4f& _x) {
|
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
template <>
|
|
122
|
-
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
|
|
123
|
-
pexp<Packet4f>(const Packet4f& _x) {
|
|
124
|
+
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f pexp<Packet4f>(const Packet4f& _x) {
|
|
124
125
|
// Limiting single-precision pexp's argument to [-128, +128] lets pexp
|
|
125
126
|
// reach 0 and INFINITY naturally.
|
|
126
|
-
static
|
|
127
|
-
static
|
|
128
|
-
static
|
|
129
|
-
static
|
|
130
|
-
static
|
|
131
|
-
static
|
|
132
|
-
static
|
|
133
|
-
static
|
|
134
|
-
static
|
|
135
|
-
static
|
|
136
|
-
static
|
|
137
|
-
static
|
|
138
|
-
static
|
|
127
|
+
static EIGEN_DECLARE_CONST_Packet4f(exp_lo, -128.0f);
|
|
128
|
+
static EIGEN_DECLARE_CONST_Packet4f(exp_hi, +128.0f);
|
|
129
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_LOG2EF, 1.44269504088896341f);
|
|
130
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_exp_C1, 0.693359375f);
|
|
131
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_exp_C2, -2.12194440e-4f);
|
|
132
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p0, 1.9875691500e-4f);
|
|
133
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p1, 1.3981999507e-3f);
|
|
134
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p2, 8.3334519073e-3f);
|
|
135
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p3, 4.1665795894e-2f);
|
|
136
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p4, 1.6666665459e-1f);
|
|
137
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_exp_p5, 5.0000001201e-1f);
|
|
138
|
+
static EIGEN_DECLARE_CONST_Packet4f(half, 0.5f);
|
|
139
|
+
static EIGEN_DECLARE_CONST_Packet4f(1, 1.0f);
|
|
139
140
|
|
|
140
141
|
Packet4f x = _x;
|
|
141
142
|
|
|
142
143
|
// Clamp x.
|
|
143
|
-
x = (Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(x, p4f_exp_lo), (v16u8)x,
|
|
144
|
-
|
|
145
|
-
x = (Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(p4f_exp_hi, x), (v16u8)x,
|
|
146
|
-
(v16u8)p4f_exp_hi);
|
|
144
|
+
x = (Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(x, p4f_exp_lo), (v16u8)x, (v16u8)p4f_exp_lo);
|
|
145
|
+
x = (Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(p4f_exp_hi, x), (v16u8)x, (v16u8)p4f_exp_hi);
|
|
147
146
|
|
|
148
147
|
// Round to nearest integer by adding 0.5 (with x's sign) and truncating.
|
|
149
148
|
Packet4f x2_add = (Packet4f)__builtin_msa_binsli_w((v4u32)p4f_half, (v4u32)x, 0);
|
|
@@ -172,31 +171,29 @@ pexp<Packet4f>(const Packet4f& _x) {
|
|
|
172
171
|
}
|
|
173
172
|
|
|
174
173
|
template <>
|
|
175
|
-
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
|
|
176
|
-
|
|
177
|
-
static
|
|
178
|
-
static _EIGEN_DECLARE_CONST_Packet4f(tanh_hi, 9.0f);
|
|
174
|
+
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f ptanh<Packet4f>(const Packet4f& _x) {
|
|
175
|
+
static EIGEN_DECLARE_CONST_Packet4f(tanh_tiny, 1e-4f);
|
|
176
|
+
static EIGEN_DECLARE_CONST_Packet4f(tanh_hi, 9.0f);
|
|
179
177
|
// The monomial coefficients of the numerator polynomial (odd).
|
|
180
|
-
static
|
|
181
|
-
static
|
|
182
|
-
static
|
|
183
|
-
static
|
|
184
|
-
static
|
|
185
|
-
static
|
|
186
|
-
static
|
|
178
|
+
static EIGEN_DECLARE_CONST_Packet4f(alpha_1, 4.89352455891786e-3f);
|
|
179
|
+
static EIGEN_DECLARE_CONST_Packet4f(alpha_3, 6.37261928875436e-4f);
|
|
180
|
+
static EIGEN_DECLARE_CONST_Packet4f(alpha_5, 1.48572235717979e-5f);
|
|
181
|
+
static EIGEN_DECLARE_CONST_Packet4f(alpha_7, 5.12229709037114e-8f);
|
|
182
|
+
static EIGEN_DECLARE_CONST_Packet4f(alpha_9, -8.60467152213735e-11f);
|
|
183
|
+
static EIGEN_DECLARE_CONST_Packet4f(alpha_11, 2.00018790482477e-13f);
|
|
184
|
+
static EIGEN_DECLARE_CONST_Packet4f(alpha_13, -2.76076847742355e-16f);
|
|
187
185
|
// The monomial coefficients of the denominator polynomial (even).
|
|
188
|
-
static
|
|
189
|
-
static
|
|
190
|
-
static
|
|
191
|
-
static
|
|
186
|
+
static EIGEN_DECLARE_CONST_Packet4f(beta_0, 4.89352518554385e-3f);
|
|
187
|
+
static EIGEN_DECLARE_CONST_Packet4f(beta_2, 2.26843463243900e-3f);
|
|
188
|
+
static EIGEN_DECLARE_CONST_Packet4f(beta_4, 1.18534705686654e-4f);
|
|
189
|
+
static EIGEN_DECLARE_CONST_Packet4f(beta_6, 1.19825839466702e-6f);
|
|
192
190
|
|
|
193
191
|
Packet4f x = pabs(_x);
|
|
194
192
|
Packet4i tiny_mask = __builtin_msa_fclt_w(x, p4f_tanh_tiny);
|
|
195
193
|
|
|
196
194
|
// Clamp the inputs to the range [-9, 9] since anything outside
|
|
197
195
|
// this range is -/+1.0f in single-precision.
|
|
198
|
-
x = (Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(p4f_tanh_hi, x), (v16u8)x,
|
|
199
|
-
(v16u8)p4f_tanh_hi);
|
|
196
|
+
x = (Packet4f)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_w(p4f_tanh_hi, x), (v16u8)x, (v16u8)p4f_tanh_hi);
|
|
200
197
|
|
|
201
198
|
// Since the polynomials are odd/even, we need x**2.
|
|
202
199
|
Packet4f x2 = pmul(x, x);
|
|
@@ -229,19 +226,19 @@ ptanh<Packet4f>(const Packet4f& _x) {
|
|
|
229
226
|
|
|
230
227
|
template <bool sine>
|
|
231
228
|
Packet4f psincos_inner_msa_float(const Packet4f& _x) {
|
|
232
|
-
static
|
|
233
|
-
static
|
|
234
|
-
static
|
|
235
|
-
static
|
|
236
|
-
static
|
|
237
|
-
static
|
|
238
|
-
static
|
|
239
|
-
static
|
|
240
|
-
static
|
|
241
|
-
static
|
|
242
|
-
static
|
|
243
|
-
static
|
|
244
|
-
static
|
|
229
|
+
static EIGEN_DECLARE_CONST_Packet4f(sincos_max_arg, 13176795.0f); // Approx. (2**24) / (4/Pi).
|
|
230
|
+
static EIGEN_DECLARE_CONST_Packet4f(minus_cephes_DP1, -0.78515625f);
|
|
231
|
+
static EIGEN_DECLARE_CONST_Packet4f(minus_cephes_DP2, -2.4187564849853515625e-4f);
|
|
232
|
+
static EIGEN_DECLARE_CONST_Packet4f(minus_cephes_DP3, -3.77489497744594108e-8f);
|
|
233
|
+
static EIGEN_DECLARE_CONST_Packet4f(sincof_p0, -1.9515295891e-4f);
|
|
234
|
+
static EIGEN_DECLARE_CONST_Packet4f(sincof_p1, 8.3321608736e-3f);
|
|
235
|
+
static EIGEN_DECLARE_CONST_Packet4f(sincof_p2, -1.6666654611e-1f);
|
|
236
|
+
static EIGEN_DECLARE_CONST_Packet4f(coscof_p0, 2.443315711809948e-5f);
|
|
237
|
+
static EIGEN_DECLARE_CONST_Packet4f(coscof_p1, -1.388731625493765e-3f);
|
|
238
|
+
static EIGEN_DECLARE_CONST_Packet4f(coscof_p2, 4.166664568298827e-2f);
|
|
239
|
+
static EIGEN_DECLARE_CONST_Packet4f(cephes_FOPI, 1.27323954473516f); // 4/Pi.
|
|
240
|
+
static EIGEN_DECLARE_CONST_Packet4f(half, 0.5f);
|
|
241
|
+
static EIGEN_DECLARE_CONST_Packet4f(1, 1.0f);
|
|
245
242
|
|
|
246
243
|
Packet4f x = pabs(_x);
|
|
247
244
|
|
|
@@ -261,7 +258,7 @@ Packet4f psincos_inner_msa_float(const Packet4f& _x) {
|
|
|
261
258
|
// x's from odd-numbered octants will translate to octant -1: [-Pi/4, 0].
|
|
262
259
|
// Adjustment for odd-numbered octants: octant = (octant + 1) & (~1).
|
|
263
260
|
Packet4i y_int1 = __builtin_msa_addvi_w(y_int, 1);
|
|
264
|
-
Packet4i y_int2 = (Packet4i)__builtin_msa_bclri_w((Packet4ui)y_int1, 0);
|
|
261
|
+
Packet4i y_int2 = (Packet4i)__builtin_msa_bclri_w((Packet4ui)y_int1, 0); // bclri = bit-clear
|
|
265
262
|
y = __builtin_msa_ffint_s_w(y_int2);
|
|
266
263
|
|
|
267
264
|
// Compute the sign to apply to the polynomial.
|
|
@@ -305,50 +302,45 @@ Packet4f psincos_inner_msa_float(const Packet4f& _x) {
|
|
|
305
302
|
|
|
306
303
|
// Update the sign.
|
|
307
304
|
sign_mask = pxor(sign_mask, (Packet4i)y);
|
|
308
|
-
y = (Packet4f)__builtin_msa_binsli_w((v4u32)y, (v4u32)sign_mask, 0);
|
|
305
|
+
y = (Packet4f)__builtin_msa_binsli_w((v4u32)y, (v4u32)sign_mask, 0); // binsli = bit-insert-left
|
|
309
306
|
return y;
|
|
310
307
|
}
|
|
311
308
|
|
|
312
309
|
template <>
|
|
313
|
-
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
|
|
314
|
-
psin<Packet4f>(const Packet4f& x) {
|
|
310
|
+
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f psin<Packet4f>(const Packet4f& x) {
|
|
315
311
|
return psincos_inner_msa_float</* sine */ true>(x);
|
|
316
312
|
}
|
|
317
313
|
|
|
318
314
|
template <>
|
|
319
|
-
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
|
|
320
|
-
pcos<Packet4f>(const Packet4f& x) {
|
|
315
|
+
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f pcos<Packet4f>(const Packet4f& x) {
|
|
321
316
|
return psincos_inner_msa_float</* sine */ false>(x);
|
|
322
317
|
}
|
|
323
318
|
|
|
324
319
|
template <>
|
|
325
|
-
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
|
|
326
|
-
pexp<Packet2d>(const Packet2d& _x) {
|
|
320
|
+
EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet2d pexp<Packet2d>(const Packet2d& _x) {
|
|
327
321
|
// Limiting double-precision pexp's argument to [-1024, +1024] lets pexp
|
|
328
322
|
// reach 0 and INFINITY naturally.
|
|
329
|
-
static
|
|
330
|
-
static
|
|
331
|
-
static
|
|
332
|
-
static
|
|
333
|
-
static
|
|
334
|
-
static
|
|
335
|
-
static
|
|
336
|
-
static
|
|
337
|
-
static
|
|
338
|
-
static
|
|
339
|
-
static
|
|
340
|
-
static
|
|
341
|
-
static
|
|
342
|
-
static
|
|
343
|
-
static
|
|
323
|
+
static EIGEN_DECLARE_CONST_Packet2d(exp_lo, -1024.0);
|
|
324
|
+
static EIGEN_DECLARE_CONST_Packet2d(exp_hi, +1024.0);
|
|
325
|
+
static EIGEN_DECLARE_CONST_Packet2d(cephes_LOG2EF, 1.4426950408889634073599);
|
|
326
|
+
static EIGEN_DECLARE_CONST_Packet2d(cephes_exp_C1, 0.693145751953125);
|
|
327
|
+
static EIGEN_DECLARE_CONST_Packet2d(cephes_exp_C2, 1.42860682030941723212e-6);
|
|
328
|
+
static EIGEN_DECLARE_CONST_Packet2d(cephes_exp_p0, 1.26177193074810590878e-4);
|
|
329
|
+
static EIGEN_DECLARE_CONST_Packet2d(cephes_exp_p1, 3.02994407707441961300e-2);
|
|
330
|
+
static EIGEN_DECLARE_CONST_Packet2d(cephes_exp_p2, 9.99999999999999999910e-1);
|
|
331
|
+
static EIGEN_DECLARE_CONST_Packet2d(cephes_exp_q0, 3.00198505138664455042e-6);
|
|
332
|
+
static EIGEN_DECLARE_CONST_Packet2d(cephes_exp_q1, 2.52448340349684104192e-3);
|
|
333
|
+
static EIGEN_DECLARE_CONST_Packet2d(cephes_exp_q2, 2.27265548208155028766e-1);
|
|
334
|
+
static EIGEN_DECLARE_CONST_Packet2d(cephes_exp_q3, 2.00000000000000000009e0);
|
|
335
|
+
static EIGEN_DECLARE_CONST_Packet2d(half, 0.5);
|
|
336
|
+
static EIGEN_DECLARE_CONST_Packet2d(1, 1.0);
|
|
337
|
+
static EIGEN_DECLARE_CONST_Packet2d(2, 2.0);
|
|
344
338
|
|
|
345
339
|
Packet2d x = _x;
|
|
346
340
|
|
|
347
341
|
// Clamp x.
|
|
348
|
-
x = (Packet2d)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_d(x, p2d_exp_lo), (v16u8)x,
|
|
349
|
-
|
|
350
|
-
x = (Packet2d)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_d(p2d_exp_hi, x), (v16u8)x,
|
|
351
|
-
(v16u8)p2d_exp_hi);
|
|
342
|
+
x = (Packet2d)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_d(x, p2d_exp_lo), (v16u8)x, (v16u8)p2d_exp_lo);
|
|
343
|
+
x = (Packet2d)__builtin_msa_bsel_v((v16u8)__builtin_msa_fclt_d(p2d_exp_hi, x), (v16u8)x, (v16u8)p2d_exp_hi);
|
|
352
344
|
|
|
353
345
|
// Round to nearest integer by adding 0.5 (with x's sign) and truncating.
|
|
354
346
|
Packet2d x2_add = (Packet2d)__builtin_msa_binsli_d((v2u64)p2d_half, (v2u64)x, 0);
|