@smake/eigen 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2009 Rohit Garg <rpg.314@gmail.com>
|
|
5
|
+
// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
|
|
6
|
+
//
|
|
7
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
8
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
9
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
10
|
+
|
|
11
|
+
#ifndef EIGEN_GEOMETRY_SIMD_H
|
|
12
|
+
#define EIGEN_GEOMETRY_SIMD_H
|
|
13
|
+
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "../InternalHeaderCheck.h"
|
|
16
|
+
|
|
17
|
+
namespace Eigen {
|
|
18
|
+
|
|
19
|
+
namespace internal {
|
|
20
|
+
|
|
21
|
+
template <class Derived, class OtherDerived>
|
|
22
|
+
struct quat_product<Architecture::Target, Derived, OtherDerived, float> {
|
|
23
|
+
enum {
|
|
24
|
+
AAlignment = traits<Derived>::Alignment,
|
|
25
|
+
BAlignment = traits<OtherDerived>::Alignment,
|
|
26
|
+
ResAlignment = traits<Quaternion<float> >::Alignment
|
|
27
|
+
};
|
|
28
|
+
static inline Quaternion<float> run(const QuaternionBase<Derived>& _a, const QuaternionBase<OtherDerived>& _b) {
|
|
29
|
+
evaluator<typename Derived::Coefficients> ae(_a.coeffs());
|
|
30
|
+
evaluator<typename OtherDerived::Coefficients> be(_b.coeffs());
|
|
31
|
+
Quaternion<float> res;
|
|
32
|
+
const float neg_zero = numext::bit_cast<float>(0x80000000u);
|
|
33
|
+
const float arr[4] = {0.f, 0.f, 0.f, neg_zero};
|
|
34
|
+
const Packet4f mask = ploadu<Packet4f>(arr);
|
|
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
|
+
|
|
44
|
+
return res;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
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) {
|
|
52
|
+
evaluator<typename Derived::Coefficients> qe(q.coeffs());
|
|
53
|
+
Quaternion<float> res;
|
|
54
|
+
const float neg_zero = numext::bit_cast<float>(0x80000000u);
|
|
55
|
+
const float arr[4] = {neg_zero, neg_zero, neg_zero, 0.f};
|
|
56
|
+
const Packet4f mask = ploadu<Packet4f>(arr);
|
|
57
|
+
pstoret<float, Packet4f, ResAlignment>(&res.x(),
|
|
58
|
+
pxor(mask, qe.template packet<traits<Derived>::Alignment, Packet4f>(0)));
|
|
59
|
+
return res;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
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) {
|
|
70
|
+
evaluator<VectorLhs> lhs_eval(lhs);
|
|
71
|
+
evaluator<VectorRhs> rhs_eval(rhs);
|
|
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;
|
|
80
|
+
return res;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
#if (defined EIGEN_VECTORIZE_SSE) || (EIGEN_ARCH_ARM64)
|
|
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 };
|
|
89
|
+
|
|
90
|
+
static inline Quaternion<double> run(const QuaternionBase<Derived>& _a, const QuaternionBase<OtherDerived>& _b) {
|
|
91
|
+
Quaternion<double> res;
|
|
92
|
+
|
|
93
|
+
evaluator<typename Derived::Coefficients> ae(_a.coeffs());
|
|
94
|
+
evaluator<typename OtherDerived::Coefficients> be(_b.coeffs());
|
|
95
|
+
|
|
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
|
+
}
|
|
127
|
+
};
|
|
128
|
+
|
|
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) {
|
|
133
|
+
evaluator<typename Derived::Coefficients> qe(q.coeffs());
|
|
134
|
+
Quaternion<double> res;
|
|
135
|
+
const double neg_zero = numext::bit_cast<double>(0x8000000000000000ull);
|
|
136
|
+
const double arr1[2] = {neg_zero, neg_zero};
|
|
137
|
+
const double arr2[2] = {neg_zero, 0.0};
|
|
138
|
+
const Packet2d mask0 = ploadu<Packet2d>(arr1);
|
|
139
|
+
const Packet2d mask2 = ploadu<Packet2d>(arr2);
|
|
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)));
|
|
144
|
+
return res;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
#endif // end EIGEN_VECTORIZE_SSE_OR_EIGEN_ARCH_ARM64
|
|
149
|
+
|
|
150
|
+
} // end namespace internal
|
|
151
|
+
|
|
152
|
+
} // end namespace Eigen
|
|
153
|
+
|
|
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,57 +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;
|
|
60
|
-
|
|
61
|
-
if(rt>0)
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
|
|
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>();
|
|
67
|
+
|
|
68
|
+
// FIXME use the following line with .noalias() once the triangular product can work inplace
|
|
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);
|
|
75
|
+
}
|
|
69
76
|
}
|
|
70
|
-
triFactor(i,i) = hCoeffs(i);
|
|
77
|
+
triFactor(i, i) = hCoeffs(i);
|
|
71
78
|
}
|
|
72
79
|
}
|
|
73
80
|
|
|
74
81
|
/** \internal
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
template<typename MatrixType,typename VectorsType,typename CoeffsType>
|
|
79
|
-
void apply_block_householder_on_the_left(MatrixType& mat, const VectorsType& vectors, const CoeffsType& hCoeffs,
|
|
80
|
-
{
|
|
81
|
-
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 };
|
|
82
89
|
Index nbVecs = vectors.cols();
|
|
83
|
-
Matrix<typename MatrixType::Scalar, TFactorSize, TFactorSize, RowMajor> T(nbVecs,nbVecs);
|
|
84
|
-
|
|
85
|
-
if(forward)
|
|
86
|
-
|
|
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());
|
|
87
96
|
const TriangularView<const VectorsType, UnitLower> V(vectors);
|
|
88
97
|
|
|
89
98
|
// A -= V T V^* A
|
|
90
|
-
Matrix<typename MatrixType::Scalar,VectorsType::ColsAtCompileTime,MatrixType::ColsAtCompileTime,
|
|
91
|
-
(VectorsType::MaxColsAtCompileTime==1 && MatrixType::MaxColsAtCompileTime!=1)?RowMajor:ColMajor,
|
|
92
|
-
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;
|
|
93
103
|
// FIXME add .noalias() once the triangular product can work inplace
|
|
94
|
-
if(forward)
|
|
95
|
-
|
|
104
|
+
if (forward)
|
|
105
|
+
tmp = T.template triangularView<Upper>() * tmp;
|
|
106
|
+
else
|
|
107
|
+
tmp = T.template triangularView<Upper>().adjoint() * tmp;
|
|
96
108
|
mat.noalias() -= V * tmp;
|
|
97
109
|
}
|
|
98
110
|
|
|
99
|
-
}
|
|
111
|
+
} // end namespace internal
|
|
100
112
|
|
|
101
|
-
}
|
|
113
|
+
} // end namespace Eigen
|
|
102
114
|
|
|
103
|
-
#endif
|
|
115
|
+
#endif // EIGEN_BLOCK_HOUSEHOLDER_H
|
|
@@ -11,118 +11,105 @@
|
|
|
11
11
|
#ifndef EIGEN_HOUSEHOLDER_H
|
|
12
12
|
#define EIGEN_HOUSEHOLDER_H
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
// IWYU pragma: private
|
|
15
|
+
#include "./InternalHeaderCheck.h"
|
|
16
|
+
|
|
17
|
+
namespace Eigen {
|
|
15
18
|
|
|
16
19
|
namespace internal {
|
|
17
|
-
template<int n>
|
|
18
|
-
{
|
|
19
|
-
enum {
|
|
20
|
-
ret = n==Dynamic ? n : n-1
|
|
21
|
-
};
|
|
20
|
+
template <int n>
|
|
21
|
+
struct decrement_size {
|
|
22
|
+
enum { ret = n == Dynamic ? n : n - 1 };
|
|
22
23
|
};
|
|
23
|
-
}
|
|
24
|
+
} // namespace internal
|
|
24
25
|
|
|
25
26
|
/** Computes the elementary reflector H such that:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
template<typename Derived>
|
|
42
|
-
void MatrixBase<Derived>::makeHouseholderInPlace(Scalar& tau, RealScalar& beta)
|
|
43
|
-
|
|
44
|
-
VectorBlock<Derived, internal::decrement_size<Base::SizeAtCompileTime>::ret> essentialPart(derived(), 1, size()-1);
|
|
27
|
+
* \f$ H *this = [ beta 0 ... 0]^T \f$
|
|
28
|
+
* where the transformation H is:
|
|
29
|
+
* \f$ H = I - tau v v^*\f$
|
|
30
|
+
* and the vector v is:
|
|
31
|
+
* \f$ v^T = [1 essential^T] \f$
|
|
32
|
+
*
|
|
33
|
+
* The essential part of the vector \c v is stored in *this.
|
|
34
|
+
*
|
|
35
|
+
* On output:
|
|
36
|
+
* \param tau the scaling factor of the Householder transformation
|
|
37
|
+
* \param beta the result of H * \c *this
|
|
38
|
+
*
|
|
39
|
+
* \sa MatrixBase::makeHouseholder(), MatrixBase::applyHouseholderOnTheLeft(),
|
|
40
|
+
* MatrixBase::applyHouseholderOnTheRight()
|
|
41
|
+
*/
|
|
42
|
+
template <typename Derived>
|
|
43
|
+
EIGEN_DEVICE_FUNC void MatrixBase<Derived>::makeHouseholderInPlace(Scalar& tau, RealScalar& beta) {
|
|
44
|
+
VectorBlock<Derived, internal::decrement_size<Base::SizeAtCompileTime>::ret> essentialPart(derived(), 1, size() - 1);
|
|
45
45
|
makeHouseholder(essentialPart, tau, beta);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/** Computes the elementary reflector H such that:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
template<typename Derived>
|
|
64
|
-
template<typename EssentialPart>
|
|
65
|
-
void MatrixBase<Derived>::makeHouseholder(
|
|
66
|
-
|
|
67
|
-
Scalar& tau,
|
|
68
|
-
RealScalar& beta) const
|
|
69
|
-
{
|
|
70
|
-
using std::sqrt;
|
|
49
|
+
* \f$ H *this = [ beta 0 ... 0]^T \f$
|
|
50
|
+
* where the transformation H is:
|
|
51
|
+
* \f$ H = I - tau v v^*\f$
|
|
52
|
+
* and the vector v is:
|
|
53
|
+
* \f$ v^T = [1 essential^T] \f$
|
|
54
|
+
*
|
|
55
|
+
* On output:
|
|
56
|
+
* \param essential the essential part of the vector \c v
|
|
57
|
+
* \param tau the scaling factor of the Householder transformation
|
|
58
|
+
* \param beta the result of H * \c *this
|
|
59
|
+
*
|
|
60
|
+
* \sa MatrixBase::makeHouseholderInPlace(), MatrixBase::applyHouseholderOnTheLeft(),
|
|
61
|
+
* MatrixBase::applyHouseholderOnTheRight()
|
|
62
|
+
*/
|
|
63
|
+
template <typename Derived>
|
|
64
|
+
template <typename EssentialPart>
|
|
65
|
+
EIGEN_DEVICE_FUNC void MatrixBase<Derived>::makeHouseholder(EssentialPart& essential, Scalar& tau,
|
|
66
|
+
RealScalar& beta) const {
|
|
71
67
|
using numext::conj;
|
|
72
|
-
|
|
68
|
+
|
|
73
69
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(EssentialPart)
|
|
74
|
-
VectorBlock<const Derived, EssentialPart::SizeAtCompileTime> tail(derived(), 1, size()-1);
|
|
75
|
-
|
|
76
|
-
RealScalar tailSqNorm = size()==1 ? RealScalar(0) : tail.squaredNorm();
|
|
70
|
+
VectorBlock<const Derived, EssentialPart::SizeAtCompileTime> tail(derived(), 1, size() - 1);
|
|
71
|
+
|
|
72
|
+
RealScalar tailSqNorm = size() == 1 ? RealScalar(0) : tail.squaredNorm();
|
|
77
73
|
Scalar c0 = coeff(0);
|
|
78
74
|
const RealScalar tol = (std::numeric_limits<RealScalar>::min)();
|
|
79
75
|
|
|
80
|
-
if(tailSqNorm <= tol && numext::abs2(numext::imag(c0))<=tol)
|
|
81
|
-
{
|
|
76
|
+
if (tailSqNorm <= tol && numext::abs2(numext::imag(c0)) <= tol) {
|
|
82
77
|
tau = RealScalar(0);
|
|
83
78
|
beta = numext::real(c0);
|
|
84
79
|
essential.setZero();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
beta = sqrt(numext::abs2(c0) + tailSqNorm);
|
|
89
|
-
if (numext::real(c0)>=RealScalar(0))
|
|
90
|
-
beta = -beta;
|
|
80
|
+
} else {
|
|
81
|
+
beta = numext::sqrt(numext::abs2(c0) + tailSqNorm);
|
|
82
|
+
if (numext::real(c0) >= RealScalar(0)) beta = -beta;
|
|
91
83
|
essential = tail / (c0 - beta);
|
|
92
84
|
tau = conj((beta - c0) / beta);
|
|
93
85
|
}
|
|
94
86
|
}
|
|
95
87
|
|
|
96
88
|
/** Apply the elementary reflector H given by
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
template<typename Derived>
|
|
112
|
-
template<typename EssentialPart>
|
|
113
|
-
void MatrixBase<Derived>::applyHouseholderOnTheLeft(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
{
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
else if(tau!=Scalar(0))
|
|
123
|
-
{
|
|
124
|
-
Map<typename internal::plain_row_type<PlainObject>::type> tmp(workspace,cols());
|
|
125
|
-
Block<Derived, EssentialPart::SizeAtCompileTime, Derived::ColsAtCompileTime> bottom(derived(), 1, 0, rows()-1, cols());
|
|
89
|
+
* \f$ H = I - tau v v^*\f$
|
|
90
|
+
* with
|
|
91
|
+
* \f$ v^T = [1 essential^T] \f$
|
|
92
|
+
* from the left to a vector or matrix.
|
|
93
|
+
*
|
|
94
|
+
* On input:
|
|
95
|
+
* \param essential the essential part of the vector \c v
|
|
96
|
+
* \param tau the scaling factor of the Householder transformation
|
|
97
|
+
* \param workspace a pointer to working space with at least
|
|
98
|
+
* this->cols() entries
|
|
99
|
+
*
|
|
100
|
+
* \sa MatrixBase::makeHouseholder(), MatrixBase::makeHouseholderInPlace(),
|
|
101
|
+
* MatrixBase::applyHouseholderOnTheRight()
|
|
102
|
+
*/
|
|
103
|
+
template <typename Derived>
|
|
104
|
+
template <typename EssentialPart>
|
|
105
|
+
EIGEN_DEVICE_FUNC void MatrixBase<Derived>::applyHouseholderOnTheLeft(const EssentialPart& essential, const Scalar& tau,
|
|
106
|
+
Scalar* workspace) {
|
|
107
|
+
if (rows() == 1) {
|
|
108
|
+
*this *= Scalar(1) - tau;
|
|
109
|
+
} else if (!numext::is_exactly_zero(tau)) {
|
|
110
|
+
Map<typename internal::plain_row_type<PlainObject>::type> tmp(workspace, cols());
|
|
111
|
+
Block<Derived, EssentialPart::SizeAtCompileTime, Derived::ColsAtCompileTime> bottom(derived(), 1, 0, rows() - 1,
|
|
112
|
+
cols());
|
|
126
113
|
tmp.noalias() = essential.adjoint() * bottom;
|
|
127
114
|
tmp += this->row(0);
|
|
128
115
|
this->row(0) -= tau * tmp;
|
|
@@ -131,42 +118,37 @@ void MatrixBase<Derived>::applyHouseholderOnTheLeft(
|
|
|
131
118
|
}
|
|
132
119
|
|
|
133
120
|
/** Apply the elementary reflector H given by
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
template<typename Derived>
|
|
149
|
-
template<typename EssentialPart>
|
|
150
|
-
void MatrixBase<Derived>::applyHouseholderOnTheRight(
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
{
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
else if(tau!=Scalar(0))
|
|
160
|
-
{
|
|
161
|
-
Map<typename internal::plain_col_type<PlainObject>::type> tmp(workspace,rows());
|
|
162
|
-
Block<Derived, Derived::RowsAtCompileTime, EssentialPart::SizeAtCompileTime> right(derived(), 0, 1, rows(), cols()-1);
|
|
163
|
-
tmp.noalias() = right * essential.conjugate();
|
|
121
|
+
* \f$ H = I - tau v v^*\f$
|
|
122
|
+
* with
|
|
123
|
+
* \f$ v^T = [1 essential^T] \f$
|
|
124
|
+
* from the right to a vector or matrix.
|
|
125
|
+
*
|
|
126
|
+
* On input:
|
|
127
|
+
* \param essential the essential part of the vector \c v
|
|
128
|
+
* \param tau the scaling factor of the Householder transformation
|
|
129
|
+
* \param workspace a pointer to working space with at least
|
|
130
|
+
* this->rows() entries
|
|
131
|
+
*
|
|
132
|
+
* \sa MatrixBase::makeHouseholder(), MatrixBase::makeHouseholderInPlace(),
|
|
133
|
+
* MatrixBase::applyHouseholderOnTheLeft()
|
|
134
|
+
*/
|
|
135
|
+
template <typename Derived>
|
|
136
|
+
template <typename EssentialPart>
|
|
137
|
+
EIGEN_DEVICE_FUNC void MatrixBase<Derived>::applyHouseholderOnTheRight(const EssentialPart& essential,
|
|
138
|
+
const Scalar& tau, Scalar* workspace) {
|
|
139
|
+
if (cols() == 1) {
|
|
140
|
+
*this *= Scalar(1) - tau;
|
|
141
|
+
} else if (!numext::is_exactly_zero(tau)) {
|
|
142
|
+
Map<typename internal::plain_col_type<PlainObject>::type> tmp(workspace, rows());
|
|
143
|
+
Block<Derived, Derived::RowsAtCompileTime, EssentialPart::SizeAtCompileTime> right(derived(), 0, 1, rows(),
|
|
144
|
+
cols() - 1);
|
|
145
|
+
tmp.noalias() = right * essential;
|
|
164
146
|
tmp += this->col(0);
|
|
165
147
|
this->col(0) -= tau * tmp;
|
|
166
|
-
right.noalias() -= tau * tmp * essential.
|
|
148
|
+
right.noalias() -= tau * tmp * essential.adjoint();
|
|
167
149
|
}
|
|
168
150
|
}
|
|
169
151
|
|
|
170
|
-
}
|
|
152
|
+
} // end namespace Eigen
|
|
171
153
|
|
|
172
|
-
#endif
|
|
154
|
+
#endif // EIGEN_HOUSEHOLDER_H
|