@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
|
@@ -11,158 +11,144 @@
|
|
|
11
11
|
#ifndef EIGEN_GEOMETRY_SIMD_H
|
|
12
12
|
#define EIGEN_GEOMETRY_SIMD_H
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "../InternalHeaderCheck.h"
|
|
16
|
+
|
|
17
|
+
namespace Eigen {
|
|
15
18
|
|
|
16
19
|
namespace internal {
|
|
17
20
|
|
|
18
|
-
template<class Derived, class OtherDerived>
|
|
19
|
-
struct quat_product<Architecture::Target, Derived, OtherDerived, float>
|
|
20
|
-
{
|
|
21
|
+
template <class Derived, class OtherDerived>
|
|
22
|
+
struct quat_product<Architecture::Target, Derived, OtherDerived, float> {
|
|
21
23
|
enum {
|
|
22
24
|
AAlignment = traits<Derived>::Alignment,
|
|
23
25
|
BAlignment = traits<OtherDerived>::Alignment,
|
|
24
26
|
ResAlignment = traits<Quaternion<float> >::Alignment
|
|
25
27
|
};
|
|
26
|
-
static inline Quaternion<float> run(const QuaternionBase<Derived>& _a, const QuaternionBase<OtherDerived>& _b)
|
|
27
|
-
{
|
|
28
|
+
static inline Quaternion<float> run(const QuaternionBase<Derived>& _a, const QuaternionBase<OtherDerived>& _b) {
|
|
28
29
|
evaluator<typename Derived::Coefficients> ae(_a.coeffs());
|
|
29
30
|
evaluator<typename OtherDerived::Coefficients> be(_b.coeffs());
|
|
30
31
|
Quaternion<float> res;
|
|
31
32
|
const float neg_zero = numext::bit_cast<float>(0x80000000u);
|
|
32
33
|
const float arr[4] = {0.f, 0.f, 0.f, neg_zero};
|
|
33
34
|
const Packet4f mask = ploadu<Packet4f>(arr);
|
|
34
|
-
Packet4f a = ae.template packet<AAlignment,Packet4f>(0);
|
|
35
|
-
Packet4f b = be.template packet<BAlignment,Packet4f>(0);
|
|
36
|
-
Packet4f s1 = pmul(vec4f_swizzle1(a,1,2,0,2),vec4f_swizzle1(b,2,0,1,2));
|
|
37
|
-
Packet4f s2 = pmul(vec4f_swizzle1(a,3,3,3,1),vec4f_swizzle1(b,0,1,2,1));
|
|
38
|
-
pstoret<float,Packet4f,ResAlignment>(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
pxor(mask,padd(s1,s2))));
|
|
44
|
-
|
|
35
|
+
Packet4f a = ae.template packet<AAlignment, Packet4f>(0);
|
|
36
|
+
Packet4f b = be.template packet<BAlignment, Packet4f>(0);
|
|
37
|
+
Packet4f s1 = pmul(vec4f_swizzle1(a, 1, 2, 0, 2), vec4f_swizzle1(b, 2, 0, 1, 2));
|
|
38
|
+
Packet4f s2 = pmul(vec4f_swizzle1(a, 3, 3, 3, 1), vec4f_swizzle1(b, 0, 1, 2, 1));
|
|
39
|
+
pstoret<float, Packet4f, ResAlignment>(
|
|
40
|
+
&res.x(), padd(psub(pmul(a, vec4f_swizzle1(b, 3, 3, 3, 3)),
|
|
41
|
+
pmul(vec4f_swizzle1(a, 2, 0, 1, 0), vec4f_swizzle1(b, 1, 2, 0, 0))),
|
|
42
|
+
pxor(mask, padd(s1, s2))));
|
|
43
|
+
|
|
45
44
|
return res;
|
|
46
45
|
}
|
|
47
46
|
};
|
|
48
47
|
|
|
49
|
-
template<class Derived>
|
|
50
|
-
struct quat_conj<Architecture::Target, Derived, float>
|
|
51
|
-
{
|
|
52
|
-
|
|
53
|
-
ResAlignment = traits<Quaternion<float> >::Alignment
|
|
54
|
-
};
|
|
55
|
-
static inline Quaternion<float> run(const QuaternionBase<Derived>& q)
|
|
56
|
-
{
|
|
48
|
+
template <class Derived>
|
|
49
|
+
struct quat_conj<Architecture::Target, Derived, float> {
|
|
50
|
+
enum { ResAlignment = traits<Quaternion<float> >::Alignment };
|
|
51
|
+
static inline Quaternion<float> run(const QuaternionBase<Derived>& q) {
|
|
57
52
|
evaluator<typename Derived::Coefficients> qe(q.coeffs());
|
|
58
53
|
Quaternion<float> res;
|
|
59
54
|
const float neg_zero = numext::bit_cast<float>(0x80000000u);
|
|
60
|
-
const float arr[4] = {neg_zero, neg_zero, neg_zero,0.f};
|
|
55
|
+
const float arr[4] = {neg_zero, neg_zero, neg_zero, 0.f};
|
|
61
56
|
const Packet4f mask = ploadu<Packet4f>(arr);
|
|
62
|
-
pstoret<float,Packet4f,ResAlignment>(&res.x(),
|
|
57
|
+
pstoret<float, Packet4f, ResAlignment>(&res.x(),
|
|
58
|
+
pxor(mask, qe.template packet<traits<Derived>::Alignment, Packet4f>(0)));
|
|
63
59
|
return res;
|
|
64
60
|
}
|
|
65
61
|
};
|
|
66
62
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
static inline typename plain_matrix_type<VectorLhs>::type
|
|
75
|
-
run(const VectorLhs& lhs, const VectorRhs& rhs)
|
|
76
|
-
{
|
|
63
|
+
template <typename VectorLhs, typename VectorRhs>
|
|
64
|
+
struct cross3_impl<Architecture::Target, VectorLhs, VectorRhs, float, true> {
|
|
65
|
+
using DstPlainType = typename plain_matrix_type<VectorLhs>::type;
|
|
66
|
+
static constexpr int DstAlignment = evaluator<DstPlainType>::Alignment;
|
|
67
|
+
static constexpr int LhsAlignment = evaluator<VectorLhs>::Alignment;
|
|
68
|
+
static constexpr int RhsAlignment = evaluator<VectorRhs>::Alignment;
|
|
69
|
+
static inline DstPlainType run(const VectorLhs& lhs, const VectorRhs& rhs) {
|
|
77
70
|
evaluator<VectorLhs> lhs_eval(lhs);
|
|
78
71
|
evaluator<VectorRhs> rhs_eval(rhs);
|
|
79
|
-
Packet4f a = lhs_eval.template packet<
|
|
80
|
-
Packet4f b = rhs_eval.template packet<
|
|
81
|
-
Packet4f mul1 = pmul(vec4f_swizzle1(a,1,2,0,3),vec4f_swizzle1(b,2,0,1,3));
|
|
82
|
-
Packet4f mul2 = pmul(vec4f_swizzle1(a,2,0,1,3),vec4f_swizzle1(b,1,2,0,3));
|
|
83
|
-
|
|
84
|
-
pstoret<float,Packet4f,
|
|
72
|
+
Packet4f a = lhs_eval.template packet<LhsAlignment, Packet4f>(0);
|
|
73
|
+
Packet4f b = rhs_eval.template packet<RhsAlignment, Packet4f>(0);
|
|
74
|
+
Packet4f mul1 = pmul(vec4f_swizzle1(a, 1, 2, 0, 3), vec4f_swizzle1(b, 2, 0, 1, 3));
|
|
75
|
+
Packet4f mul2 = pmul(vec4f_swizzle1(a, 2, 0, 1, 3), vec4f_swizzle1(b, 1, 2, 0, 3));
|
|
76
|
+
DstPlainType res;
|
|
77
|
+
pstoret<float, Packet4f, DstAlignment>(res.data(), psub(mul1, mul2));
|
|
78
|
+
// Ensure last component is 0 in case original a or b contain inf/nan.
|
|
79
|
+
res[3] = 0.0f;
|
|
85
80
|
return res;
|
|
86
81
|
}
|
|
87
82
|
};
|
|
88
83
|
|
|
84
|
+
#if (defined EIGEN_VECTORIZE_SSE) || (EIGEN_ARCH_ARM64)
|
|
89
85
|
|
|
86
|
+
template <class Derived, class OtherDerived>
|
|
87
|
+
struct quat_product<Architecture::Target, Derived, OtherDerived, double> {
|
|
88
|
+
enum { BAlignment = traits<OtherDerived>::Alignment, ResAlignment = traits<Quaternion<double> >::Alignment };
|
|
90
89
|
|
|
91
|
-
|
|
90
|
+
static inline Quaternion<double> run(const QuaternionBase<Derived>& _a, const QuaternionBase<OtherDerived>& _b) {
|
|
91
|
+
Quaternion<double> res;
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
{
|
|
96
|
-
enum {
|
|
97
|
-
BAlignment = traits<OtherDerived>::Alignment,
|
|
98
|
-
ResAlignment = traits<Quaternion<double> >::Alignment
|
|
99
|
-
};
|
|
93
|
+
evaluator<typename Derived::Coefficients> ae(_a.coeffs());
|
|
94
|
+
evaluator<typename OtherDerived::Coefficients> be(_b.coeffs());
|
|
100
95
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
*/
|
|
133
|
-
t1 = psub(pmul(a_ww, b_zw), pmul(a_yy, b_xy));
|
|
134
|
-
t2 = padd(pmul(a_zz, b_zw), pmul(a_xx, b_xy));
|
|
135
|
-
pstoret<double,Packet2d,ResAlignment>(&res.z(), preverse(paddsub(preverse(t1), t2)));
|
|
136
|
-
|
|
137
|
-
return res;
|
|
138
|
-
}
|
|
96
|
+
const double* a = _a.coeffs().data();
|
|
97
|
+
Packet2d b_xy = be.template packet<BAlignment, Packet2d>(0);
|
|
98
|
+
Packet2d b_zw = be.template packet<BAlignment, Packet2d>(2);
|
|
99
|
+
Packet2d a_xx = pset1<Packet2d>(a[0]);
|
|
100
|
+
Packet2d a_yy = pset1<Packet2d>(a[1]);
|
|
101
|
+
Packet2d a_zz = pset1<Packet2d>(a[2]);
|
|
102
|
+
Packet2d a_ww = pset1<Packet2d>(a[3]);
|
|
103
|
+
|
|
104
|
+
// two temporaries:
|
|
105
|
+
Packet2d t1, t2;
|
|
106
|
+
|
|
107
|
+
/*
|
|
108
|
+
* t1 = ww*xy + yy*zw
|
|
109
|
+
* t2 = zz*xy - xx*zw
|
|
110
|
+
* res.xy = t1 +/- swap(t2)
|
|
111
|
+
*/
|
|
112
|
+
t1 = padd(pmul(a_ww, b_xy), pmul(a_yy, b_zw));
|
|
113
|
+
t2 = psub(pmul(a_zz, b_xy), pmul(a_xx, b_zw));
|
|
114
|
+
pstoret<double, Packet2d, ResAlignment>(&res.x(), paddsub(t1, preverse(t2)));
|
|
115
|
+
|
|
116
|
+
/*
|
|
117
|
+
* t1 = ww*zw - yy*xy
|
|
118
|
+
* t2 = zz*zw + xx*xy
|
|
119
|
+
* res.zw = t1 -/+ swap(t2) = swap( swap(t1) +/- t2)
|
|
120
|
+
*/
|
|
121
|
+
t1 = psub(pmul(a_ww, b_zw), pmul(a_yy, b_xy));
|
|
122
|
+
t2 = padd(pmul(a_zz, b_zw), pmul(a_xx, b_xy));
|
|
123
|
+
pstoret<double, Packet2d, ResAlignment>(&res.z(), preverse(paddsub(preverse(t1), t2)));
|
|
124
|
+
|
|
125
|
+
return res;
|
|
126
|
+
}
|
|
139
127
|
};
|
|
140
128
|
|
|
141
|
-
template<class Derived>
|
|
142
|
-
struct quat_conj<Architecture::Target, Derived, double>
|
|
143
|
-
{
|
|
144
|
-
|
|
145
|
-
ResAlignment = traits<Quaternion<double> >::Alignment
|
|
146
|
-
};
|
|
147
|
-
static inline Quaternion<double> run(const QuaternionBase<Derived>& q)
|
|
148
|
-
{
|
|
129
|
+
template <class Derived>
|
|
130
|
+
struct quat_conj<Architecture::Target, Derived, double> {
|
|
131
|
+
enum { ResAlignment = traits<Quaternion<double> >::Alignment };
|
|
132
|
+
static inline Quaternion<double> run(const QuaternionBase<Derived>& q) {
|
|
149
133
|
evaluator<typename Derived::Coefficients> qe(q.coeffs());
|
|
150
134
|
Quaternion<double> res;
|
|
151
135
|
const double neg_zero = numext::bit_cast<double>(0x8000000000000000ull);
|
|
152
136
|
const double arr1[2] = {neg_zero, neg_zero};
|
|
153
|
-
const double arr2[2] = {neg_zero,
|
|
137
|
+
const double arr2[2] = {neg_zero, 0.0};
|
|
154
138
|
const Packet2d mask0 = ploadu<Packet2d>(arr1);
|
|
155
139
|
const Packet2d mask2 = ploadu<Packet2d>(arr2);
|
|
156
|
-
pstoret<double,Packet2d,ResAlignment>(&res.x(),
|
|
157
|
-
|
|
140
|
+
pstoret<double, Packet2d, ResAlignment>(&res.x(),
|
|
141
|
+
pxor(mask0, qe.template packet<traits<Derived>::Alignment, Packet2d>(0)));
|
|
142
|
+
pstoret<double, Packet2d, ResAlignment>(&res.z(),
|
|
143
|
+
pxor(mask2, qe.template packet<traits<Derived>::Alignment, Packet2d>(2)));
|
|
158
144
|
return res;
|
|
159
145
|
}
|
|
160
146
|
};
|
|
161
147
|
|
|
162
|
-
#endif
|
|
148
|
+
#endif // end EIGEN_VECTORIZE_SSE_OR_EIGEN_ARCH_ARM64
|
|
163
149
|
|
|
164
|
-
}
|
|
150
|
+
} // end namespace internal
|
|
165
151
|
|
|
166
|
-
}
|
|
152
|
+
} // end namespace Eigen
|
|
167
153
|
|
|
168
|
-
#endif
|
|
154
|
+
#endif // EIGEN_GEOMETRY_SIMD_H
|
|
@@ -13,25 +13,29 @@
|
|
|
13
13
|
|
|
14
14
|
// This file contains some helper function to deal with block householder reflectors
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
// IWYU pragma: private
|
|
17
|
+
#include "./InternalHeaderCheck.h"
|
|
18
|
+
|
|
19
|
+
namespace Eigen {
|
|
17
20
|
|
|
18
21
|
namespace internal {
|
|
19
|
-
|
|
22
|
+
|
|
20
23
|
/** \internal */
|
|
21
24
|
// template<typename TriangularFactorType,typename VectorsType,typename CoeffsType>
|
|
22
|
-
// void make_block_householder_triangular_factor(TriangularFactorType& triFactor, const VectorsType& vectors, const
|
|
25
|
+
// void make_block_householder_triangular_factor(TriangularFactorType& triFactor, const VectorsType& vectors, const
|
|
26
|
+
// CoeffsType& hCoeffs)
|
|
23
27
|
// {
|
|
24
28
|
// typedef typename VectorsType::Scalar Scalar;
|
|
25
29
|
// const Index nbVecs = vectors.cols();
|
|
26
30
|
// eigen_assert(triFactor.rows() == nbVecs && triFactor.cols() == nbVecs && vectors.rows()>=nbVecs);
|
|
27
|
-
//
|
|
31
|
+
//
|
|
28
32
|
// for(Index i = 0; i < nbVecs; i++)
|
|
29
33
|
// {
|
|
30
34
|
// Index rs = vectors.rows() - i;
|
|
31
35
|
// // Warning, note that hCoeffs may alias with vectors.
|
|
32
|
-
// // It is then necessary to copy it before modifying vectors(i,i).
|
|
36
|
+
// // It is then necessary to copy it before modifying vectors(i,i).
|
|
33
37
|
// typename CoeffsType::Scalar h = hCoeffs(i);
|
|
34
|
-
// // This hack permits to pass
|
|
38
|
+
// // This hack permits to pass through nested Block<> and Transpose<> expressions.
|
|
35
39
|
// Scalar *Vii_ptr = const_cast<Scalar*>(vectors.data() + vectors.outerStride()*i + vectors.innerStride()*i);
|
|
36
40
|
// Scalar Vii = *Vii_ptr;
|
|
37
41
|
// *Vii_ptr = Scalar(1);
|
|
@@ -47,64 +51,65 @@ namespace internal {
|
|
|
47
51
|
|
|
48
52
|
/** \internal */
|
|
49
53
|
// This variant avoid modifications in vectors
|
|
50
|
-
template<typename TriangularFactorType,typename VectorsType,typename CoeffsType>
|
|
51
|
-
void make_block_householder_triangular_factor(TriangularFactorType& triFactor, const VectorsType& vectors,
|
|
52
|
-
{
|
|
54
|
+
template <typename TriangularFactorType, typename VectorsType, typename CoeffsType>
|
|
55
|
+
void make_block_householder_triangular_factor(TriangularFactorType& triFactor, const VectorsType& vectors,
|
|
56
|
+
const CoeffsType& hCoeffs) {
|
|
53
57
|
const Index nbVecs = vectors.cols();
|
|
54
|
-
eigen_assert(triFactor.rows() == nbVecs && triFactor.cols() == nbVecs && vectors.rows()>=nbVecs);
|
|
58
|
+
eigen_assert(triFactor.rows() == nbVecs && triFactor.cols() == nbVecs && vectors.rows() >= nbVecs);
|
|
55
59
|
|
|
56
|
-
for(Index i = nbVecs-1; i >=0
|
|
57
|
-
{
|
|
60
|
+
for (Index i = nbVecs - 1; i >= 0; --i) {
|
|
58
61
|
Index rs = vectors.rows() - i - 1;
|
|
59
|
-
Index rt = nbVecs-i-1;
|
|
62
|
+
Index rt = nbVecs - i - 1;
|
|
63
|
+
|
|
64
|
+
if (rt > 0) {
|
|
65
|
+
triFactor.row(i).tail(rt).noalias() = -hCoeffs(i) * vectors.col(i).tail(rs).adjoint() *
|
|
66
|
+
vectors.bottomRightCorner(rs, rt).template triangularView<UnitLower>();
|
|
60
67
|
|
|
61
|
-
if(rt>0)
|
|
62
|
-
{
|
|
63
|
-
triFactor.row(i).tail(rt).noalias() = -hCoeffs(i) * vectors.col(i).tail(rs).adjoint()
|
|
64
|
-
* vectors.bottomRightCorner(rs, rt).template triangularView<UnitLower>();
|
|
65
|
-
|
|
66
68
|
// FIXME use the following line with .noalias() once the triangular product can work inplace
|
|
67
|
-
// triFactor.row(i).tail(rt) = triFactor.row(i).tail(rt) * triFactor.bottomRightCorner(rt,rt).template
|
|
68
|
-
|
|
69
|
-
{
|
|
70
|
-
typename TriangularFactorType::Scalar z = triFactor(i,j);
|
|
71
|
-
triFactor(i,j) = z * triFactor(j,j);
|
|
72
|
-
if(nbVecs-j-1>0)
|
|
73
|
-
triFactor.row(i).tail(nbVecs-j-1) += z * triFactor.row(j).tail(nbVecs-j-1);
|
|
69
|
+
// triFactor.row(i).tail(rt) = triFactor.row(i).tail(rt) * triFactor.bottomRightCorner(rt,rt).template
|
|
70
|
+
// triangularView<Upper>();
|
|
71
|
+
for (Index j = nbVecs - 1; j > i; --j) {
|
|
72
|
+
typename TriangularFactorType::Scalar z = triFactor(i, j);
|
|
73
|
+
triFactor(i, j) = z * triFactor(j, j);
|
|
74
|
+
if (nbVecs - j - 1 > 0) triFactor.row(i).tail(nbVecs - j - 1) += z * triFactor.row(j).tail(nbVecs - j - 1);
|
|
74
75
|
}
|
|
75
|
-
|
|
76
76
|
}
|
|
77
|
-
triFactor(i,i) = hCoeffs(i);
|
|
77
|
+
triFactor(i, i) = hCoeffs(i);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
/** \internal
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
template<typename MatrixType,typename VectorsType,typename CoeffsType>
|
|
86
|
-
void apply_block_householder_on_the_left(MatrixType& mat, const VectorsType& vectors, const CoeffsType& hCoeffs,
|
|
87
|
-
{
|
|
88
|
-
enum { TFactorSize =
|
|
82
|
+
* if forward then perform mat = H0 * H1 * H2 * mat
|
|
83
|
+
* otherwise perform mat = H2 * H1 * H0 * mat
|
|
84
|
+
*/
|
|
85
|
+
template <typename MatrixType, typename VectorsType, typename CoeffsType>
|
|
86
|
+
void apply_block_householder_on_the_left(MatrixType& mat, const VectorsType& vectors, const CoeffsType& hCoeffs,
|
|
87
|
+
bool forward) {
|
|
88
|
+
enum { TFactorSize = VectorsType::ColsAtCompileTime };
|
|
89
89
|
Index nbVecs = vectors.cols();
|
|
90
|
-
Matrix<typename MatrixType::Scalar, TFactorSize, TFactorSize, RowMajor> T(nbVecs,nbVecs);
|
|
91
|
-
|
|
92
|
-
if(forward)
|
|
93
|
-
|
|
90
|
+
Matrix<typename MatrixType::Scalar, TFactorSize, TFactorSize, RowMajor> T(nbVecs, nbVecs);
|
|
91
|
+
|
|
92
|
+
if (forward)
|
|
93
|
+
make_block_householder_triangular_factor(T, vectors, hCoeffs);
|
|
94
|
+
else
|
|
95
|
+
make_block_householder_triangular_factor(T, vectors, hCoeffs.conjugate());
|
|
94
96
|
const TriangularView<const VectorsType, UnitLower> V(vectors);
|
|
95
97
|
|
|
96
98
|
// A -= V T V^* A
|
|
97
|
-
Matrix<typename MatrixType::Scalar,VectorsType::ColsAtCompileTime,MatrixType::ColsAtCompileTime,
|
|
98
|
-
(VectorsType::MaxColsAtCompileTime==1 && MatrixType::MaxColsAtCompileTime!=1)?RowMajor:ColMajor,
|
|
99
|
-
VectorsType::MaxColsAtCompileTime,MatrixType::MaxColsAtCompileTime>
|
|
99
|
+
Matrix<typename MatrixType::Scalar, VectorsType::ColsAtCompileTime, MatrixType::ColsAtCompileTime,
|
|
100
|
+
(VectorsType::MaxColsAtCompileTime == 1 && MatrixType::MaxColsAtCompileTime != 1) ? RowMajor : ColMajor,
|
|
101
|
+
VectorsType::MaxColsAtCompileTime, MatrixType::MaxColsAtCompileTime>
|
|
102
|
+
tmp = V.adjoint() * mat;
|
|
100
103
|
// FIXME add .noalias() once the triangular product can work inplace
|
|
101
|
-
if(forward)
|
|
102
|
-
|
|
104
|
+
if (forward)
|
|
105
|
+
tmp = T.template triangularView<Upper>() * tmp;
|
|
106
|
+
else
|
|
107
|
+
tmp = T.template triangularView<Upper>().adjoint() * tmp;
|
|
103
108
|
mat.noalias() -= V * tmp;
|
|
104
109
|
}
|
|
105
110
|
|
|
106
|
-
}
|
|
111
|
+
} // end namespace internal
|
|
107
112
|
|
|
108
|
-
}
|
|
113
|
+
} // end namespace Eigen
|
|
109
114
|
|
|
110
|
-
#endif
|
|
115
|
+
#endif // EIGEN_BLOCK_HOUSEHOLDER_H
|