@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
|
@@ -8,29 +8,38 @@
|
|
|
8
8
|
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
9
9
|
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
10
10
|
|
|
11
|
-
#ifndef
|
|
12
|
-
#define
|
|
11
|
+
#ifndef EIGEN_COMPLEX32_ZVECTOR_H
|
|
12
|
+
#define EIGEN_COMPLEX32_ZVECTOR_H
|
|
13
|
+
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "../../InternalHeaderCheck.h"
|
|
13
16
|
|
|
14
17
|
namespace Eigen {
|
|
15
18
|
|
|
16
19
|
namespace internal {
|
|
17
20
|
|
|
18
21
|
#if !defined(__ARCH__) || (defined(__ARCH__) && __ARCH__ >= 12)
|
|
19
|
-
|
|
22
|
+
inline Packet4ui p4ui_CONJ_XOR() {
|
|
23
|
+
return Packet4ui {0x00000000, 0x80000000, 0x00000000, 0x80000000}; // vec_mergeh((Packet4ui)p4i_ZERO, (Packet4ui)p4f_MZERO);
|
|
24
|
+
}
|
|
20
25
|
#endif
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
inline Packet2ul p2ul_CONJ_XOR1() {
|
|
28
|
+
return (Packet2ul)vec_sld((Packet4ui)p2d_ZERO_, (Packet4ui)p2l_ZERO,
|
|
29
|
+
8); //{ 0x8000000000000000, 0x0000000000000000 };
|
|
30
|
+
}
|
|
31
|
+
inline Packet2ul p2ul_CONJ_XOR2() {
|
|
32
|
+
return (Packet2ul)vec_sld((Packet4ui)p2l_ZERO, (Packet4ui)p2d_ZERO_,
|
|
33
|
+
8); //{ 0x8000000000000000, 0x0000000000000000 };
|
|
34
|
+
}
|
|
24
35
|
|
|
25
|
-
struct Packet1cd
|
|
26
|
-
{
|
|
36
|
+
struct Packet1cd {
|
|
27
37
|
EIGEN_STRONG_INLINE Packet1cd() {}
|
|
28
38
|
EIGEN_STRONG_INLINE explicit Packet1cd(const Packet2d& a) : v(a) {}
|
|
29
39
|
Packet2d v;
|
|
30
40
|
};
|
|
31
41
|
|
|
32
|
-
struct Packet2cf
|
|
33
|
-
{
|
|
42
|
+
struct Packet2cf {
|
|
34
43
|
EIGEN_STRONG_INLINE Packet2cf() {}
|
|
35
44
|
EIGEN_STRONG_INLINE explicit Packet2cf(const Packet4f& a) : v(a) {}
|
|
36
45
|
#if !defined(__ARCH__) || (defined(__ARCH__) && __ARCH__ < 12)
|
|
@@ -43,83 +52,136 @@ struct Packet2cf
|
|
|
43
52
|
#endif
|
|
44
53
|
};
|
|
45
54
|
|
|
46
|
-
template<>
|
|
47
|
-
{
|
|
55
|
+
template <>
|
|
56
|
+
struct packet_traits<std::complex<float> > : default_packet_traits {
|
|
48
57
|
typedef Packet2cf type;
|
|
49
58
|
typedef Packet2cf half;
|
|
50
59
|
enum {
|
|
51
60
|
Vectorizable = 1,
|
|
52
61
|
AlignedOnScalar = 1,
|
|
53
62
|
size = 2,
|
|
54
|
-
HasHalfPacket = 0,
|
|
55
63
|
|
|
56
|
-
HasAdd
|
|
57
|
-
HasSub
|
|
58
|
-
HasMul
|
|
59
|
-
HasDiv
|
|
64
|
+
HasAdd = 1,
|
|
65
|
+
HasSub = 1,
|
|
66
|
+
HasMul = 1,
|
|
67
|
+
HasDiv = 1,
|
|
68
|
+
HasLog = 1,
|
|
69
|
+
HasExp = 1,
|
|
60
70
|
HasNegate = 1,
|
|
61
|
-
HasAbs
|
|
62
|
-
HasAbs2
|
|
63
|
-
HasMin
|
|
64
|
-
HasMax
|
|
65
|
-
HasBlend
|
|
71
|
+
HasAbs = 0,
|
|
72
|
+
HasAbs2 = 0,
|
|
73
|
+
HasMin = 0,
|
|
74
|
+
HasMax = 0,
|
|
75
|
+
HasBlend = 1,
|
|
66
76
|
HasSetLinear = 0
|
|
67
77
|
};
|
|
68
78
|
};
|
|
69
79
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
{
|
|
80
|
+
template <>
|
|
81
|
+
struct packet_traits<std::complex<double> > : default_packet_traits {
|
|
73
82
|
typedef Packet1cd type;
|
|
74
83
|
typedef Packet1cd half;
|
|
75
84
|
enum {
|
|
76
85
|
Vectorizable = 1,
|
|
77
86
|
AlignedOnScalar = 1,
|
|
78
87
|
size = 1,
|
|
79
|
-
HasHalfPacket = 0,
|
|
80
88
|
|
|
81
|
-
HasAdd
|
|
82
|
-
HasSub
|
|
83
|
-
HasMul
|
|
84
|
-
HasDiv
|
|
89
|
+
HasAdd = 1,
|
|
90
|
+
HasSub = 1,
|
|
91
|
+
HasMul = 1,
|
|
92
|
+
HasDiv = 1,
|
|
93
|
+
HasLog = 1,
|
|
85
94
|
HasNegate = 1,
|
|
86
|
-
HasAbs
|
|
87
|
-
HasAbs2
|
|
88
|
-
HasMin
|
|
89
|
-
HasMax
|
|
95
|
+
HasAbs = 0,
|
|
96
|
+
HasAbs2 = 0,
|
|
97
|
+
HasMin = 0,
|
|
98
|
+
HasMax = 0,
|
|
90
99
|
HasSetLinear = 0
|
|
91
100
|
};
|
|
92
101
|
};
|
|
93
102
|
|
|
94
|
-
template<>
|
|
95
|
-
|
|
103
|
+
template <>
|
|
104
|
+
struct unpacket_traits<Packet2cf> {
|
|
105
|
+
typedef std::complex<float> type;
|
|
106
|
+
enum {
|
|
107
|
+
size = 2,
|
|
108
|
+
alignment = Aligned16,
|
|
109
|
+
vectorizable = true,
|
|
110
|
+
masked_load_available = false,
|
|
111
|
+
masked_store_available = false
|
|
112
|
+
};
|
|
113
|
+
typedef Packet2cf half;
|
|
114
|
+
typedef Packet4f as_real;
|
|
115
|
+
};
|
|
116
|
+
template <>
|
|
117
|
+
struct unpacket_traits<Packet1cd> {
|
|
118
|
+
typedef std::complex<double> type;
|
|
119
|
+
enum {
|
|
120
|
+
size = 1,
|
|
121
|
+
alignment = Aligned16,
|
|
122
|
+
vectorizable = true,
|
|
123
|
+
masked_load_available = false,
|
|
124
|
+
masked_store_available = false
|
|
125
|
+
};
|
|
126
|
+
typedef Packet1cd half;
|
|
127
|
+
typedef Packet2d as_real;
|
|
128
|
+
};
|
|
96
129
|
|
|
97
130
|
/* Forward declaration */
|
|
98
|
-
EIGEN_STRONG_INLINE void ptranspose(PacketBlock<Packet2cf,2>& kernel);
|
|
131
|
+
EIGEN_STRONG_INLINE void ptranspose(PacketBlock<Packet2cf, 2>& kernel);
|
|
99
132
|
|
|
100
133
|
/* complex<double> first */
|
|
101
|
-
template<>
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
134
|
+
template <>
|
|
135
|
+
EIGEN_STRONG_INLINE Packet1cd pload<Packet1cd>(const std::complex<double>* from) {
|
|
136
|
+
EIGEN_DEBUG_ALIGNED_LOAD return Packet1cd(pload<Packet2d>((const double*)from));
|
|
137
|
+
}
|
|
138
|
+
template <>
|
|
139
|
+
EIGEN_STRONG_INLINE Packet1cd ploadu<Packet1cd>(const std::complex<double>* from) {
|
|
140
|
+
EIGEN_DEBUG_UNALIGNED_LOAD return Packet1cd(ploadu<Packet2d>((const double*)from));
|
|
141
|
+
}
|
|
142
|
+
template <>
|
|
143
|
+
EIGEN_STRONG_INLINE void pstore<std::complex<double> >(std::complex<double>* to, const Packet1cd& from) {
|
|
144
|
+
EIGEN_DEBUG_ALIGNED_STORE pstore((double*)to, from.v);
|
|
145
|
+
}
|
|
146
|
+
template <>
|
|
147
|
+
EIGEN_STRONG_INLINE void pstoreu<std::complex<double> >(std::complex<double>* to, const Packet1cd& from) {
|
|
148
|
+
EIGEN_DEBUG_UNALIGNED_STORE pstoreu((double*)to, from.v);
|
|
149
|
+
}
|
|
105
150
|
|
|
106
|
-
template<>
|
|
107
|
-
|
|
151
|
+
template <>
|
|
152
|
+
EIGEN_STRONG_INLINE Packet1cd
|
|
153
|
+
pset1<Packet1cd>(const std::complex<double>& from) { /* here we really have to use unaligned loads :( */
|
|
154
|
+
return ploadu<Packet1cd>(&from);
|
|
155
|
+
}
|
|
108
156
|
|
|
109
|
-
template<>
|
|
110
|
-
|
|
157
|
+
template <>
|
|
158
|
+
EIGEN_DEVICE_FUNC inline Packet1cd pgather<std::complex<double>, Packet1cd>(const std::complex<double>* from,
|
|
159
|
+
Index stride EIGEN_UNUSED) {
|
|
111
160
|
return pload<Packet1cd>(from);
|
|
112
161
|
}
|
|
113
|
-
template<>
|
|
114
|
-
|
|
162
|
+
template <>
|
|
163
|
+
EIGEN_DEVICE_FUNC inline void pscatter<std::complex<double>, Packet1cd>(std::complex<double>* to, const Packet1cd& from,
|
|
164
|
+
Index stride EIGEN_UNUSED) {
|
|
115
165
|
pstore<std::complex<double> >(to, from);
|
|
116
166
|
}
|
|
117
|
-
template<>
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
template<>
|
|
122
|
-
{
|
|
167
|
+
template <>
|
|
168
|
+
EIGEN_STRONG_INLINE Packet1cd padd<Packet1cd>(const Packet1cd& a, const Packet1cd& b) {
|
|
169
|
+
return Packet1cd(a.v + b.v);
|
|
170
|
+
}
|
|
171
|
+
template <>
|
|
172
|
+
EIGEN_STRONG_INLINE Packet1cd psub<Packet1cd>(const Packet1cd& a, const Packet1cd& b) {
|
|
173
|
+
return Packet1cd(a.v - b.v);
|
|
174
|
+
}
|
|
175
|
+
template <>
|
|
176
|
+
EIGEN_STRONG_INLINE Packet1cd pnegate(const Packet1cd& a) {
|
|
177
|
+
return Packet1cd(pnegate(Packet2d(a.v)));
|
|
178
|
+
}
|
|
179
|
+
template <>
|
|
180
|
+
EIGEN_STRONG_INLINE Packet1cd pconj(const Packet1cd& a) {
|
|
181
|
+
return Packet1cd((Packet2d)vec_xor((Packet2d)a.v, (Packet2d)p2ul_CONJ_XOR2()));
|
|
182
|
+
}
|
|
183
|
+
template <>
|
|
184
|
+
EIGEN_STRONG_INLINE Packet1cd pmul<Packet1cd>(const Packet1cd& a, const Packet1cd& b) {
|
|
123
185
|
Packet2d a_re, a_im, v1, v2;
|
|
124
186
|
|
|
125
187
|
// Permute and multiply the real parts of a and b
|
|
@@ -130,258 +192,341 @@ template<> EIGEN_STRONG_INLINE Packet1cd pmul<Packet1cd>(const Packet1cd& a, con
|
|
|
130
192
|
v1 = vec_madd(a_re, b.v, p2d_ZERO);
|
|
131
193
|
// multiply a_im * b and get the conjugate result
|
|
132
194
|
v2 = vec_madd(a_im, b.v, p2d_ZERO);
|
|
133
|
-
v2 = (Packet2d)
|
|
134
|
-
v2 = (Packet2d)
|
|
195
|
+
v2 = (Packet2d)vec_sld((Packet4ui)v2, (Packet4ui)v2, 8);
|
|
196
|
+
v2 = (Packet2d)vec_xor((Packet2d)v2, (Packet2d)p2ul_CONJ_XOR1());
|
|
135
197
|
|
|
136
198
|
return Packet1cd(v1 + v2);
|
|
137
199
|
}
|
|
138
|
-
template<>
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
template<>
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
200
|
+
template <>
|
|
201
|
+
EIGEN_STRONG_INLINE Packet1cd pand<Packet1cd>(const Packet1cd& a, const Packet1cd& b) {
|
|
202
|
+
return Packet1cd(vec_and(a.v, b.v));
|
|
203
|
+
}
|
|
204
|
+
template <>
|
|
205
|
+
EIGEN_STRONG_INLINE Packet1cd por<Packet1cd>(const Packet1cd& a, const Packet1cd& b) {
|
|
206
|
+
return Packet1cd(vec_or(a.v, b.v));
|
|
207
|
+
}
|
|
208
|
+
template <>
|
|
209
|
+
EIGEN_STRONG_INLINE Packet1cd pxor<Packet1cd>(const Packet1cd& a, const Packet1cd& b) {
|
|
210
|
+
return Packet1cd(vec_xor(a.v, b.v));
|
|
211
|
+
}
|
|
212
|
+
template <>
|
|
213
|
+
EIGEN_STRONG_INLINE Packet1cd pandnot<Packet1cd>(const Packet1cd& a, const Packet1cd& b) {
|
|
214
|
+
return Packet1cd(vec_and(a.v, vec_nor(b.v, b.v)));
|
|
215
|
+
}
|
|
216
|
+
template <>
|
|
217
|
+
EIGEN_STRONG_INLINE Packet1cd ploaddup<Packet1cd>(const std::complex<double>* from) {
|
|
218
|
+
return pset1<Packet1cd>(*from);
|
|
219
|
+
}
|
|
220
|
+
template <>
|
|
221
|
+
EIGEN_STRONG_INLINE Packet1cd pcmp_eq(const Packet1cd& a, const Packet1cd& b) {
|
|
222
|
+
Packet2d eq = vec_cmpeq(a.v, b.v);
|
|
223
|
+
Packet2d tmp = {eq[1], eq[0]};
|
|
146
224
|
return (Packet1cd)pand<Packet2d>(eq, tmp);
|
|
147
225
|
}
|
|
148
226
|
|
|
149
|
-
template<>
|
|
227
|
+
template <>
|
|
228
|
+
EIGEN_STRONG_INLINE void prefetch<std::complex<double> >(const std::complex<double>* addr) {
|
|
229
|
+
EIGEN_ZVECTOR_PREFETCH(addr);
|
|
230
|
+
}
|
|
150
231
|
|
|
151
|
-
template<>
|
|
152
|
-
{
|
|
153
|
-
std::complex<double>
|
|
232
|
+
template <>
|
|
233
|
+
EIGEN_STRONG_INLINE std::complex<double> pfirst<Packet1cd>(const Packet1cd& a) {
|
|
234
|
+
EIGEN_ALIGN16 std::complex<double> res;
|
|
154
235
|
pstore<std::complex<double> >(&res, a);
|
|
155
236
|
|
|
156
237
|
return res;
|
|
157
238
|
}
|
|
158
239
|
|
|
159
|
-
template<>
|
|
160
|
-
|
|
161
|
-
|
|
240
|
+
template <>
|
|
241
|
+
EIGEN_STRONG_INLINE Packet1cd preverse(const Packet1cd& a) {
|
|
242
|
+
return a;
|
|
243
|
+
}
|
|
244
|
+
template <>
|
|
245
|
+
EIGEN_STRONG_INLINE std::complex<double> predux<Packet1cd>(const Packet1cd& a) {
|
|
162
246
|
return pfirst(a);
|
|
163
247
|
}
|
|
164
|
-
template<>
|
|
165
|
-
{
|
|
248
|
+
template <>
|
|
249
|
+
EIGEN_STRONG_INLINE std::complex<double> predux_mul<Packet1cd>(const Packet1cd& a) {
|
|
166
250
|
return pfirst(a);
|
|
167
251
|
}
|
|
168
|
-
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet1cd,Packet2d)
|
|
252
|
+
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet1cd, Packet2d)
|
|
169
253
|
|
|
170
|
-
template<>
|
|
171
|
-
{
|
|
172
|
-
|
|
173
|
-
Packet1cd res = pmul(a,pconj(b));
|
|
174
|
-
Packet2d s = vec_madd(b.v, b.v, p2d_ZERO_);
|
|
175
|
-
return Packet1cd(pdiv(res.v, s + vec_perm(s, s, p16uc_REVERSE64)));
|
|
254
|
+
template <>
|
|
255
|
+
EIGEN_STRONG_INLINE Packet1cd pdiv<Packet1cd>(const Packet1cd& a, const Packet1cd& b) {
|
|
256
|
+
return pdiv_complex(a, b);
|
|
176
257
|
}
|
|
177
258
|
|
|
178
|
-
|
|
179
|
-
{
|
|
259
|
+
template <>
|
|
260
|
+
EIGEN_STRONG_INLINE Packet1cd psqrt<Packet1cd>(const Packet1cd& a) {
|
|
261
|
+
return psqrt_complex<Packet1cd>(a);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
template <>
|
|
265
|
+
EIGEN_STRONG_INLINE Packet2cf psqrt<Packet2cf>(const Packet2cf& a) {
|
|
266
|
+
return psqrt_complex<Packet2cf>(a);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
template <>
|
|
270
|
+
EIGEN_STRONG_INLINE Packet1cd plog<Packet1cd>(const Packet1cd& a) {
|
|
271
|
+
return plog_complex<Packet1cd>(a);
|
|
272
|
+
}
|
|
273
|
+
template <>
|
|
274
|
+
EIGEN_STRONG_INLINE Packet2cf plog<Packet2cf>(const Packet2cf& a) {
|
|
275
|
+
return plog_complex<Packet2cf>(a);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
template <>
|
|
279
|
+
EIGEN_STRONG_INLINE Packet2cf pexp<Packet2cf>(const Packet2cf& a) {
|
|
280
|
+
return pexp_complex(a);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
EIGEN_STRONG_INLINE Packet1cd pcplxflip /*<Packet1cd>*/ (const Packet1cd& x) {
|
|
180
284
|
return Packet1cd(preverse(Packet2d(x.v)));
|
|
181
285
|
}
|
|
182
286
|
|
|
183
|
-
EIGEN_STRONG_INLINE void ptranspose(PacketBlock<Packet1cd,2>& kernel)
|
|
184
|
-
{
|
|
287
|
+
EIGEN_STRONG_INLINE void ptranspose(PacketBlock<Packet1cd, 2>& kernel) {
|
|
185
288
|
Packet2d tmp = vec_perm(kernel.packet[0].v, kernel.packet[1].v, p16uc_TRANSPOSE64_HI);
|
|
186
289
|
kernel.packet[1].v = vec_perm(kernel.packet[0].v, kernel.packet[1].v, p16uc_TRANSPOSE64_LO);
|
|
187
290
|
kernel.packet[0].v = tmp;
|
|
188
291
|
}
|
|
189
292
|
|
|
190
293
|
/* complex<float> follows */
|
|
191
|
-
template<>
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
294
|
+
template <>
|
|
295
|
+
EIGEN_STRONG_INLINE Packet2cf pload<Packet2cf>(const std::complex<float>* from) {
|
|
296
|
+
EIGEN_DEBUG_ALIGNED_LOAD return Packet2cf(pload<Packet4f>((const float*)from));
|
|
297
|
+
}
|
|
298
|
+
template <>
|
|
299
|
+
EIGEN_STRONG_INLINE Packet2cf ploadu<Packet2cf>(const std::complex<float>* from) {
|
|
300
|
+
EIGEN_DEBUG_UNALIGNED_LOAD return Packet2cf(ploadu<Packet4f>((const float*)from));
|
|
301
|
+
}
|
|
302
|
+
template <>
|
|
303
|
+
EIGEN_STRONG_INLINE void pstore<std::complex<float> >(std::complex<float>* to, const Packet2cf& from) {
|
|
304
|
+
EIGEN_DEBUG_ALIGNED_STORE pstore((float*)to, from.v);
|
|
305
|
+
}
|
|
306
|
+
template <>
|
|
307
|
+
EIGEN_STRONG_INLINE void pstoreu<std::complex<float> >(std::complex<float>* to, const Packet2cf& from) {
|
|
308
|
+
EIGEN_DEBUG_UNALIGNED_STORE pstoreu((float*)to, from.v);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
template <>
|
|
312
|
+
EIGEN_STRONG_INLINE std::complex<float> pfirst<Packet2cf>(const Packet2cf& a) {
|
|
313
|
+
EIGEN_ALIGN16 std::complex<float> res[2];
|
|
199
314
|
pstore<std::complex<float> >(res, a);
|
|
200
315
|
|
|
201
316
|
return res[0];
|
|
202
317
|
}
|
|
203
318
|
|
|
204
|
-
|
|
205
319
|
#if !defined(__ARCH__) || (defined(__ARCH__) && __ARCH__ < 12)
|
|
206
|
-
template<>
|
|
207
|
-
{
|
|
320
|
+
template <>
|
|
321
|
+
EIGEN_STRONG_INLINE Packet2cf pset1<Packet2cf>(const std::complex<float>& from) {
|
|
208
322
|
Packet2cf res;
|
|
209
|
-
res.cd[0] = Packet1cd(vec_ld2f((const float
|
|
323
|
+
res.cd[0] = Packet1cd(vec_ld2f((const float*)&from));
|
|
210
324
|
res.cd[1] = res.cd[0];
|
|
211
325
|
return res;
|
|
212
326
|
}
|
|
213
327
|
#else
|
|
214
|
-
template<>
|
|
215
|
-
{
|
|
328
|
+
template <>
|
|
329
|
+
EIGEN_STRONG_INLINE Packet2cf pset1<Packet2cf>(const std::complex<float>& from) {
|
|
216
330
|
Packet2cf res;
|
|
217
|
-
if((std::ptrdiff_t(&from) % 16) == 0)
|
|
218
|
-
res.v = pload<Packet4f>((const float
|
|
331
|
+
if ((std::ptrdiff_t(&from) % 16) == 0)
|
|
332
|
+
res.v = pload<Packet4f>((const float*)&from);
|
|
219
333
|
else
|
|
220
|
-
res.v = ploadu<Packet4f>((const float
|
|
334
|
+
res.v = ploadu<Packet4f>((const float*)&from);
|
|
221
335
|
res.v = vec_perm(res.v, res.v, p16uc_PSET64_HI);
|
|
222
336
|
return res;
|
|
223
337
|
}
|
|
224
338
|
#endif
|
|
225
339
|
|
|
226
|
-
template<>
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
af[
|
|
340
|
+
template <>
|
|
341
|
+
EIGEN_DEVICE_FUNC inline Packet2cf pgather<std::complex<float>, Packet2cf>(const std::complex<float>* from,
|
|
342
|
+
Index stride) {
|
|
343
|
+
EIGEN_ALIGN16 std::complex<float> af[2];
|
|
344
|
+
af[0] = from[0 * stride];
|
|
345
|
+
af[1] = from[1 * stride];
|
|
231
346
|
return pload<Packet2cf>(af);
|
|
232
347
|
}
|
|
233
|
-
template<>
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
to[
|
|
348
|
+
template <>
|
|
349
|
+
EIGEN_DEVICE_FUNC inline void pscatter<std::complex<float>, Packet2cf>(std::complex<float>* to, const Packet2cf& from,
|
|
350
|
+
Index stride) {
|
|
351
|
+
EIGEN_ALIGN16 std::complex<float> af[2];
|
|
352
|
+
pstore<std::complex<float> >((std::complex<float>*)af, from);
|
|
353
|
+
to[0 * stride] = af[0];
|
|
354
|
+
to[1 * stride] = af[1];
|
|
239
355
|
}
|
|
240
356
|
|
|
241
|
-
template<>
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
template<>
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
357
|
+
template <>
|
|
358
|
+
EIGEN_STRONG_INLINE Packet2cf padd<Packet2cf>(const Packet2cf& a, const Packet2cf& b) {
|
|
359
|
+
return Packet2cf(padd<Packet4f>(a.v, b.v));
|
|
360
|
+
}
|
|
361
|
+
template <>
|
|
362
|
+
EIGEN_STRONG_INLINE Packet2cf psub<Packet2cf>(const Packet2cf& a, const Packet2cf& b) {
|
|
363
|
+
return Packet2cf(psub<Packet4f>(a.v, b.v));
|
|
364
|
+
}
|
|
365
|
+
template <>
|
|
366
|
+
EIGEN_STRONG_INLINE Packet2cf pnegate(const Packet2cf& a) {
|
|
367
|
+
return Packet2cf(pnegate(Packet4f(a.v)));
|
|
368
|
+
}
|
|
249
369
|
|
|
250
|
-
template<>
|
|
370
|
+
template <>
|
|
371
|
+
EIGEN_STRONG_INLINE Packet2cf pand<Packet2cf>(const Packet2cf& a, const Packet2cf& b) {
|
|
372
|
+
return Packet2cf(pand<Packet4f>(a.v, b.v));
|
|
373
|
+
}
|
|
374
|
+
template <>
|
|
375
|
+
EIGEN_STRONG_INLINE Packet2cf por<Packet2cf>(const Packet2cf& a, const Packet2cf& b) {
|
|
376
|
+
return Packet2cf(por<Packet4f>(a.v, b.v));
|
|
377
|
+
}
|
|
378
|
+
template <>
|
|
379
|
+
EIGEN_STRONG_INLINE Packet2cf pxor<Packet2cf>(const Packet2cf& a, const Packet2cf& b) {
|
|
380
|
+
return Packet2cf(pxor<Packet4f>(a.v, b.v));
|
|
381
|
+
}
|
|
382
|
+
template <>
|
|
383
|
+
EIGEN_STRONG_INLINE Packet2cf pandnot<Packet2cf>(const Packet2cf& a, const Packet2cf& b) {
|
|
384
|
+
return Packet2cf(pandnot<Packet4f>(a.v, b.v));
|
|
385
|
+
}
|
|
251
386
|
|
|
252
|
-
template<>
|
|
387
|
+
template <>
|
|
388
|
+
EIGEN_STRONG_INLINE Packet2cf ploaddup<Packet2cf>(const std::complex<float>* from) {
|
|
389
|
+
return pset1<Packet2cf>(*from);
|
|
390
|
+
}
|
|
253
391
|
|
|
392
|
+
template <>
|
|
393
|
+
EIGEN_STRONG_INLINE void prefetch<std::complex<float> >(const std::complex<float>* addr) {
|
|
394
|
+
EIGEN_ZVECTOR_PREFETCH(addr);
|
|
395
|
+
}
|
|
254
396
|
|
|
255
397
|
#if !defined(__ARCH__) || (defined(__ARCH__) && __ARCH__ < 12)
|
|
256
398
|
|
|
257
|
-
template<>
|
|
258
|
-
|
|
399
|
+
template <>
|
|
400
|
+
EIGEN_STRONG_INLINE Packet2cf pcmp_eq(const Packet2cf& a, const Packet2cf& b) {
|
|
401
|
+
Packet4f eq = pcmp_eq<Packet4f>(a.v, b.v);
|
|
259
402
|
Packet2cf res;
|
|
260
|
-
Packet2d tmp1 = {
|
|
261
|
-
Packet2d tmp2 = {
|
|
403
|
+
Packet2d tmp1 = {eq.v4f[0][1], eq.v4f[0][0]};
|
|
404
|
+
Packet2d tmp2 = {eq.v4f[1][1], eq.v4f[1][0]};
|
|
262
405
|
res.v.v4f[0] = pand<Packet2d>(eq.v4f[0], tmp1);
|
|
263
406
|
res.v.v4f[1] = pand<Packet2d>(eq.v4f[1], tmp2);
|
|
264
407
|
return res;
|
|
265
408
|
}
|
|
266
409
|
|
|
267
|
-
template<>
|
|
268
|
-
{
|
|
410
|
+
template <>
|
|
411
|
+
EIGEN_STRONG_INLINE Packet2cf pconj(const Packet2cf& a) {
|
|
269
412
|
Packet2cf res;
|
|
270
413
|
res.v.v4f[0] = pconj(Packet1cd(reinterpret_cast<Packet2d>(a.v.v4f[0]))).v;
|
|
271
414
|
res.v.v4f[1] = pconj(Packet1cd(reinterpret_cast<Packet2d>(a.v.v4f[1]))).v;
|
|
272
415
|
return res;
|
|
273
416
|
}
|
|
274
417
|
|
|
275
|
-
template<>
|
|
276
|
-
{
|
|
418
|
+
template <>
|
|
419
|
+
EIGEN_STRONG_INLINE Packet2cf pmul<Packet2cf>(const Packet2cf& a, const Packet2cf& b) {
|
|
277
420
|
Packet2cf res;
|
|
278
|
-
res.v.v4f[0] =
|
|
279
|
-
|
|
421
|
+
res.v.v4f[0] =
|
|
422
|
+
pmul(Packet1cd(reinterpret_cast<Packet2d>(a.v.v4f[0])), Packet1cd(reinterpret_cast<Packet2d>(b.v.v4f[0]))).v;
|
|
423
|
+
res.v.v4f[1] =
|
|
424
|
+
pmul(Packet1cd(reinterpret_cast<Packet2d>(a.v.v4f[1])), Packet1cd(reinterpret_cast<Packet2d>(b.v.v4f[1]))).v;
|
|
280
425
|
return res;
|
|
281
426
|
}
|
|
282
427
|
|
|
283
|
-
template<>
|
|
284
|
-
{
|
|
428
|
+
template <>
|
|
429
|
+
EIGEN_STRONG_INLINE Packet2cf preverse(const Packet2cf& a) {
|
|
285
430
|
Packet2cf res;
|
|
286
431
|
res.cd[0] = a.cd[1];
|
|
287
432
|
res.cd[1] = a.cd[0];
|
|
288
433
|
return res;
|
|
289
434
|
}
|
|
290
435
|
|
|
291
|
-
template<>
|
|
292
|
-
{
|
|
436
|
+
template <>
|
|
437
|
+
EIGEN_STRONG_INLINE std::complex<float> predux<Packet2cf>(const Packet2cf& a) {
|
|
293
438
|
std::complex<float> res;
|
|
294
439
|
Packet1cd b = padd<Packet1cd>(a.cd[0], a.cd[1]);
|
|
295
440
|
vec_st2f(b.v, (float*)&res);
|
|
296
441
|
return res;
|
|
297
442
|
}
|
|
298
443
|
|
|
299
|
-
template<>
|
|
300
|
-
{
|
|
444
|
+
template <>
|
|
445
|
+
EIGEN_STRONG_INLINE std::complex<float> predux_mul<Packet2cf>(const Packet2cf& a) {
|
|
301
446
|
std::complex<float> res;
|
|
302
447
|
Packet1cd b = pmul<Packet1cd>(a.cd[0], a.cd[1]);
|
|
303
448
|
vec_st2f(b.v, (float*)&res);
|
|
304
449
|
return res;
|
|
305
450
|
}
|
|
306
451
|
|
|
307
|
-
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet2cf,Packet4f)
|
|
452
|
+
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet2cf, Packet4f)
|
|
308
453
|
|
|
309
|
-
template<>
|
|
310
|
-
{
|
|
311
|
-
|
|
312
|
-
Packet2cf res;
|
|
313
|
-
res.cd[0] = pdiv<Packet1cd>(a.cd[0], b.cd[0]);
|
|
314
|
-
res.cd[1] = pdiv<Packet1cd>(a.cd[1], b.cd[1]);
|
|
315
|
-
return res;
|
|
454
|
+
template <>
|
|
455
|
+
EIGEN_STRONG_INLINE Packet2cf pdiv<Packet2cf>(const Packet2cf& a, const Packet2cf& b) {
|
|
456
|
+
return pdiv_complex(a, b);
|
|
316
457
|
}
|
|
317
458
|
|
|
318
|
-
EIGEN_STRONG_INLINE Packet2cf pcplxflip/*<Packet2cf>*/(const Packet2cf& x)
|
|
319
|
-
{
|
|
459
|
+
EIGEN_STRONG_INLINE Packet2cf pcplxflip /*<Packet2cf>*/ (const Packet2cf& x) {
|
|
320
460
|
Packet2cf res;
|
|
321
461
|
res.cd[0] = pcplxflip(x.cd[0]);
|
|
322
462
|
res.cd[1] = pcplxflip(x.cd[1]);
|
|
323
463
|
return res;
|
|
324
464
|
}
|
|
325
465
|
|
|
326
|
-
EIGEN_STRONG_INLINE void ptranspose(PacketBlock<Packet2cf,2>& kernel)
|
|
327
|
-
{
|
|
466
|
+
EIGEN_STRONG_INLINE void ptranspose(PacketBlock<Packet2cf, 2>& kernel) {
|
|
328
467
|
Packet1cd tmp = kernel.packet[0].cd[1];
|
|
329
468
|
kernel.packet[0].cd[1] = kernel.packet[1].cd[0];
|
|
330
469
|
kernel.packet[1].cd[0] = tmp;
|
|
331
470
|
}
|
|
332
471
|
|
|
333
|
-
template<>
|
|
472
|
+
template <>
|
|
473
|
+
EIGEN_STRONG_INLINE Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacket,
|
|
474
|
+
const Packet2cf& elsePacket) {
|
|
334
475
|
Packet2cf result;
|
|
335
|
-
const Selector<4> ifPacket4 = {
|
|
476
|
+
const Selector<4> ifPacket4 = {ifPacket.select[0], ifPacket.select[0], ifPacket.select[1], ifPacket.select[1]};
|
|
336
477
|
result.v = pblend<Packet4f>(ifPacket4, thenPacket.v, elsePacket.v);
|
|
337
478
|
return result;
|
|
338
479
|
}
|
|
339
480
|
#else
|
|
340
|
-
template<>
|
|
341
|
-
|
|
342
|
-
Packet4f
|
|
481
|
+
template <>
|
|
482
|
+
EIGEN_STRONG_INLINE Packet2cf pcmp_eq(const Packet2cf& a, const Packet2cf& b) {
|
|
483
|
+
Packet4f eq = vec_cmpeq(a.v, b.v);
|
|
484
|
+
Packet4f tmp = {eq[1], eq[0], eq[3], eq[2]};
|
|
343
485
|
return (Packet2cf)pand<Packet4f>(eq, tmp);
|
|
344
486
|
}
|
|
345
|
-
template<>
|
|
346
|
-
|
|
347
|
-
|
|
487
|
+
template <>
|
|
488
|
+
EIGEN_STRONG_INLINE Packet2cf pconj(const Packet2cf& a) {
|
|
489
|
+
return Packet2cf(pxor<Packet4f>(a.v, reinterpret_cast<Packet4f>(p4ui_CONJ_XOR())));
|
|
490
|
+
}
|
|
491
|
+
template <>
|
|
492
|
+
EIGEN_STRONG_INLINE Packet2cf pmul<Packet2cf>(const Packet2cf& a, const Packet2cf& b) {
|
|
348
493
|
Packet4f a_re, a_im, prod, prod_im;
|
|
349
494
|
|
|
350
495
|
// Permute and multiply the real parts of a and b
|
|
351
496
|
a_re = vec_perm(a.v, a.v, p16uc_PSET32_WODD);
|
|
352
|
-
|
|
497
|
+
|
|
353
498
|
// Get the imaginary parts of a
|
|
354
499
|
a_im = vec_perm(a.v, a.v, p16uc_PSET32_WEVEN);
|
|
355
500
|
|
|
356
501
|
// multiply a_im * b and get the conjugate result
|
|
357
502
|
prod_im = a_im * b.v;
|
|
358
|
-
prod_im = pxor<Packet4f>(prod_im, reinterpret_cast<Packet4f>(p4ui_CONJ_XOR));
|
|
503
|
+
prod_im = pxor<Packet4f>(prod_im, reinterpret_cast<Packet4f>(p4ui_CONJ_XOR()));
|
|
359
504
|
// permute back to a proper order
|
|
360
505
|
prod_im = vec_perm(prod_im, prod_im, p16uc_COMPLEX32_REV);
|
|
361
506
|
|
|
362
507
|
// multiply a_re * b, add prod_im
|
|
363
508
|
prod = pmadd<Packet4f>(a_re, b.v, prod_im);
|
|
364
|
-
|
|
509
|
+
|
|
365
510
|
return Packet2cf(prod);
|
|
366
511
|
}
|
|
367
512
|
|
|
368
|
-
template<>
|
|
369
|
-
{
|
|
513
|
+
template <>
|
|
514
|
+
EIGEN_STRONG_INLINE Packet2cf preverse(const Packet2cf& a) {
|
|
370
515
|
Packet4f rev_a;
|
|
371
516
|
rev_a = vec_perm(a.v, a.v, p16uc_COMPLEX32_REV2);
|
|
372
517
|
return Packet2cf(rev_a);
|
|
373
518
|
}
|
|
374
519
|
|
|
375
|
-
template<>
|
|
376
|
-
{
|
|
520
|
+
template <>
|
|
521
|
+
EIGEN_STRONG_INLINE std::complex<float> predux<Packet2cf>(const Packet2cf& a) {
|
|
377
522
|
Packet4f b;
|
|
378
523
|
b = vec_sld(a.v, a.v, 8);
|
|
379
524
|
b = padd<Packet4f>(a.v, b);
|
|
380
525
|
return pfirst<Packet2cf>(Packet2cf(b));
|
|
381
526
|
}
|
|
382
527
|
|
|
383
|
-
template<>
|
|
384
|
-
{
|
|
528
|
+
template <>
|
|
529
|
+
EIGEN_STRONG_INLINE std::complex<float> predux_mul<Packet2cf>(const Packet2cf& a) {
|
|
385
530
|
Packet4f b;
|
|
386
531
|
Packet2cf prod;
|
|
387
532
|
b = vec_sld(a.v, a.v, 8);
|
|
@@ -390,37 +535,36 @@ template<> EIGEN_STRONG_INLINE std::complex<float> predux_mul<Packet2cf>(const P
|
|
|
390
535
|
return pfirst<Packet2cf>(prod);
|
|
391
536
|
}
|
|
392
537
|
|
|
393
|
-
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet2cf,Packet4f)
|
|
538
|
+
EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet2cf, Packet4f)
|
|
394
539
|
|
|
395
|
-
template<>
|
|
396
|
-
{
|
|
397
|
-
|
|
398
|
-
Packet2cf res = pmul(a, pconj(b));
|
|
399
|
-
Packet4f s = pmul<Packet4f>(b.v, b.v);
|
|
400
|
-
return Packet2cf(pdiv(res.v, padd<Packet4f>(s, vec_perm(s, s, p16uc_COMPLEX32_REV))));
|
|
540
|
+
template <>
|
|
541
|
+
EIGEN_STRONG_INLINE Packet2cf pdiv<Packet2cf>(const Packet2cf& a, const Packet2cf& b) {
|
|
542
|
+
return pdiv_complex(a, b);
|
|
401
543
|
}
|
|
402
544
|
|
|
403
|
-
template<>
|
|
404
|
-
{
|
|
545
|
+
template <>
|
|
546
|
+
EIGEN_STRONG_INLINE Packet2cf pcplxflip<Packet2cf>(const Packet2cf& x) {
|
|
405
547
|
return Packet2cf(vec_perm(x.v, x.v, p16uc_COMPLEX32_REV));
|
|
406
548
|
}
|
|
407
549
|
|
|
408
|
-
EIGEN_STRONG_INLINE void ptranspose(PacketBlock<Packet2cf,2>& kernel)
|
|
409
|
-
{
|
|
550
|
+
EIGEN_STRONG_INLINE void ptranspose(PacketBlock<Packet2cf, 2>& kernel) {
|
|
410
551
|
Packet4f tmp = vec_perm(kernel.packet[0].v, kernel.packet[1].v, p16uc_TRANSPOSE64_HI);
|
|
411
552
|
kernel.packet[1].v = vec_perm(kernel.packet[0].v, kernel.packet[1].v, p16uc_TRANSPOSE64_LO);
|
|
412
553
|
kernel.packet[0].v = tmp;
|
|
413
554
|
}
|
|
414
555
|
|
|
415
|
-
template<>
|
|
556
|
+
template <>
|
|
557
|
+
EIGEN_STRONG_INLINE Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacket,
|
|
558
|
+
const Packet2cf& elsePacket) {
|
|
416
559
|
Packet2cf result;
|
|
417
|
-
result.v = reinterpret_cast<Packet4f>(
|
|
560
|
+
result.v = reinterpret_cast<Packet4f>(
|
|
561
|
+
pblend<Packet2d>(ifPacket, reinterpret_cast<Packet2d>(thenPacket.v), reinterpret_cast<Packet2d>(elsePacket.v)));
|
|
418
562
|
return result;
|
|
419
563
|
}
|
|
420
564
|
#endif
|
|
421
565
|
|
|
422
|
-
}
|
|
566
|
+
} // end namespace internal
|
|
423
567
|
|
|
424
|
-
}
|
|
568
|
+
} // end namespace Eigen
|
|
425
569
|
|
|
426
|
-
#endif
|
|
570
|
+
#endif // EIGEN_COMPLEX32_ZVECTOR_H
|