@smake/eigen 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -20
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +187 -120
- package/eigen/Eigen/Eigenvalues +16 -13
- package/eigen/Eigen/Geometry +18 -18
- package/eigen/Eigen/Householder +9 -7
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -13
- package/eigen/Eigen/KLUSupport +23 -21
- package/eigen/Eigen/LU +15 -16
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -51
- package/eigen/Eigen/PaStiXSupport +23 -21
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -20
- package/eigen/Eigen/QtAlignedMalloc +5 -12
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -17
- package/eigen/Eigen/Sparse +1 -2
- package/eigen/Eigen/SparseCholesky +18 -15
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +9 -9
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
- package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
- package/eigen/Eigen/src/Core/Array.h +329 -370
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
- package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
- package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
- package/eigen/Eigen/src/Core/Block.h +371 -390
- package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
- package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
- package/eigen/Eigen/src/Core/DenseBase.h +630 -658
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
- package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +168 -207
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +167 -217
- package/eigen/Eigen/src/Core/EigenBase.h +74 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
- package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
- package/eigen/Eigen/src/Core/IO.h +131 -156
- package/eigen/Eigen/src/Core/IndexedView.h +209 -125
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +50 -59
- package/eigen/Eigen/src/Core/Map.h +123 -141
- package/eigen/Eigen/src/Core/MapBase.h +255 -282
- package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
- package/eigen/Eigen/src/Core/Matrix.h +463 -494
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
- package/eigen/Eigen/src/Core/NestByValue.h +58 -52
- package/eigen/Eigen/src/Core/NoAlias.h +79 -86
- package/eigen/Eigen/src/Core/NumTraits.h +206 -206
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
- package/eigen/Eigen/src/Core/Product.h +246 -130
- package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
- package/eigen/Eigen/src/Core/Random.h +153 -164
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +334 -314
- package/eigen/Eigen/src/Core/Ref.h +259 -257
- package/eigen/Eigen/src/Core/Replicate.h +92 -104
- package/eigen/Eigen/src/Core/Reshaped.h +215 -271
- package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
- package/eigen/Eigen/src/Core/Reverse.h +133 -148
- package/eigen/Eigen/src/Core/Select.h +68 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +88 -102
- package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
- package/eigen/Eigen/src/Core/SolverBase.h +132 -133
- package/eigen/Eigen/src/Core/StableNorm.h +113 -147
- package/eigen/Eigen/src/Core/StlIterators.h +404 -248
- package/eigen/Eigen/src/Core/Stride.h +90 -92
- package/eigen/Eigen/src/Core/Swap.h +70 -39
- package/eigen/Eigen/src/Core/Transpose.h +258 -295
- package/eigen/Eigen/src/Core/Transpositions.h +270 -333
- package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
- package/eigen/Eigen/src/Core/Visitor.h +464 -308
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
- package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
- package/eigen/Eigen/src/Core/util/Constants.h +297 -262
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
- package/eigen/Eigen/src/Core/util/Macros.h +655 -773
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +970 -748
- package/eigen/Eigen/src/Core/util/Meta.h +581 -633
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
- package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
- package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
- package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
- package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
- package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
- package/eigen/Eigen/src/Geometry/Transform.h +858 -936
- package/eigen/Eigen/src/Geometry/Translation.h +94 -92
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
- package/eigen/Eigen/src/Householder/Householder.h +102 -124
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
- package/eigen/Eigen/src/LU/Determinant.h +50 -69
- package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
- package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
- package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
- package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/package.json +1 -1
- package/eigen/COPYING.APACHE +0 -203
- package/eigen/COPYING.BSD +0 -26
- package/eigen/COPYING.GPL +0 -674
- package/eigen/COPYING.LGPL +0 -502
- package/eigen/COPYING.MINPACK +0 -51
- package/eigen/COPYING.MPL2 +0 -373
- package/eigen/COPYING.README +0 -18
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
- package/eigen/README.md +0 -5
|
@@ -10,147 +10,183 @@
|
|
|
10
10
|
#ifndef EIGEN_NUMTRAITS_H
|
|
11
11
|
#define EIGEN_NUMTRAITS_H
|
|
12
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
13
16
|
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
19
|
|
|
17
|
-
// default implementation of
|
|
18
|
-
// 0 for integer types, and
|
|
19
|
-
template<
|
|
20
|
-
bool use_numeric_limits = std::numeric_limits<T>::is_specialized,
|
|
20
|
+
// default implementation of digits(), based on numeric_limits if specialized,
|
|
21
|
+
// 0 for integer types, and log2(epsilon()) otherwise.
|
|
22
|
+
template <typename T, bool use_numeric_limits = std::numeric_limits<T>::is_specialized,
|
|
21
23
|
bool is_integer = NumTraits<T>::IsInteger>
|
|
22
|
-
struct
|
|
23
|
-
{
|
|
24
|
-
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
25
|
-
static int run() { return std::numeric_limits<T>::digits10; }
|
|
24
|
+
struct default_digits_impl {
|
|
25
|
+
EIGEN_DEVICE_FUNC constexpr static int run() { return std::numeric_limits<T>::digits; }
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
template<typename T>
|
|
29
|
-
struct
|
|
28
|
+
template <typename T>
|
|
29
|
+
struct default_digits_impl<T, false, false> // Floating point
|
|
30
30
|
{
|
|
31
|
-
EIGEN_DEVICE_FUNC
|
|
32
|
-
static int run() {
|
|
33
|
-
using std::log10;
|
|
31
|
+
EIGEN_DEVICE_FUNC constexpr static int run() {
|
|
34
32
|
using std::ceil;
|
|
33
|
+
using std::log2;
|
|
35
34
|
typedef typename NumTraits<T>::Real Real;
|
|
36
|
-
return int(ceil(-
|
|
35
|
+
return int(ceil(-log2(NumTraits<Real>::epsilon())));
|
|
37
36
|
}
|
|
38
37
|
};
|
|
39
38
|
|
|
40
|
-
template<typename T>
|
|
41
|
-
struct
|
|
39
|
+
template <typename T>
|
|
40
|
+
struct default_digits_impl<T, false, true> // Integer
|
|
42
41
|
{
|
|
43
|
-
EIGEN_DEVICE_FUNC
|
|
44
|
-
static int run() { return 0; }
|
|
42
|
+
EIGEN_DEVICE_FUNC constexpr static int run() { return 0; }
|
|
45
43
|
};
|
|
46
44
|
|
|
47
|
-
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
template< typename T,
|
|
51
|
-
bool use_numeric_limits = std::numeric_limits<T>::is_specialized,
|
|
45
|
+
// default implementation of digits10(), based on numeric_limits if specialized,
|
|
46
|
+
// 0 for integer types, and floor((digits()-1)*log10(2)) otherwise.
|
|
47
|
+
template <typename T, bool use_numeric_limits = std::numeric_limits<T>::is_specialized,
|
|
52
48
|
bool is_integer = NumTraits<T>::IsInteger>
|
|
53
|
-
struct
|
|
49
|
+
struct default_digits10_impl {
|
|
50
|
+
EIGEN_DEVICE_FUNC constexpr static int run() { return std::numeric_limits<T>::digits10; }
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
template <typename T>
|
|
54
|
+
struct default_digits10_impl<T, false, false> // Floating point
|
|
54
55
|
{
|
|
55
|
-
EIGEN_DEVICE_FUNC
|
|
56
|
-
|
|
56
|
+
EIGEN_DEVICE_FUNC constexpr static int run() {
|
|
57
|
+
using std::floor;
|
|
58
|
+
using std::log10;
|
|
59
|
+
typedef typename NumTraits<T>::Real Real;
|
|
60
|
+
return int(floor((internal::default_digits_impl<Real>::run() - 1) * log10(2)));
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
template <typename T>
|
|
65
|
+
struct default_digits10_impl<T, false, true> // Integer
|
|
66
|
+
{
|
|
67
|
+
EIGEN_DEVICE_FUNC constexpr static int run() { return 0; }
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// default implementation of max_digits10(), based on numeric_limits if specialized,
|
|
71
|
+
// 0 for integer types, and log10(2) * digits() + 1 otherwise.
|
|
72
|
+
template <typename T, bool use_numeric_limits = std::numeric_limits<T>::is_specialized,
|
|
73
|
+
bool is_integer = NumTraits<T>::IsInteger>
|
|
74
|
+
struct default_max_digits10_impl {
|
|
75
|
+
EIGEN_DEVICE_FUNC constexpr static int run() { return std::numeric_limits<T>::max_digits10; }
|
|
57
76
|
};
|
|
58
77
|
|
|
59
|
-
template<typename T>
|
|
60
|
-
struct
|
|
78
|
+
template <typename T>
|
|
79
|
+
struct default_max_digits10_impl<T, false, false> // Floating point
|
|
61
80
|
{
|
|
62
|
-
EIGEN_DEVICE_FUNC
|
|
63
|
-
static int run() {
|
|
64
|
-
using std::log;
|
|
81
|
+
EIGEN_DEVICE_FUNC constexpr static int run() {
|
|
65
82
|
using std::ceil;
|
|
83
|
+
using std::log10;
|
|
66
84
|
typedef typename NumTraits<T>::Real Real;
|
|
67
|
-
return int(ceil(
|
|
85
|
+
return int(ceil(internal::default_digits_impl<Real>::run() * log10(2) + 1));
|
|
68
86
|
}
|
|
69
87
|
};
|
|
70
88
|
|
|
71
|
-
template<typename T>
|
|
72
|
-
struct
|
|
89
|
+
template <typename T>
|
|
90
|
+
struct default_max_digits10_impl<T, false, true> // Integer
|
|
73
91
|
{
|
|
74
|
-
EIGEN_DEVICE_FUNC
|
|
75
|
-
static int run() { return 0; }
|
|
92
|
+
EIGEN_DEVICE_FUNC constexpr static int run() { return 0; }
|
|
76
93
|
};
|
|
77
94
|
|
|
78
|
-
}
|
|
95
|
+
} // end namespace internal
|
|
79
96
|
|
|
80
97
|
namespace numext {
|
|
81
|
-
/** \internal bit-wise cast without changing the underlying bit representation. */
|
|
82
98
|
|
|
83
|
-
|
|
99
|
+
/** \internal bit-wise cast without changing the underlying bit representation. */
|
|
100
|
+
#if defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806L
|
|
101
|
+
template <typename Tgt, typename Src>
|
|
102
|
+
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC constexpr Tgt bit_cast(const Src& src) {
|
|
103
|
+
return std::bit_cast<Tgt>(src);
|
|
104
|
+
}
|
|
105
|
+
#elif EIGEN_HAS_BUILTIN(__builtin_bit_cast)
|
|
106
|
+
template <typename Tgt, typename Src>
|
|
107
|
+
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC constexpr Tgt bit_cast(const Src& src) {
|
|
108
|
+
EIGEN_STATIC_ASSERT(std::is_trivially_copyable<Src>::value, THIS_TYPE_IS_NOT_SUPPORTED)
|
|
109
|
+
EIGEN_STATIC_ASSERT(std::is_trivially_copyable<Tgt>::value, THIS_TYPE_IS_NOT_SUPPORTED)
|
|
110
|
+
EIGEN_STATIC_ASSERT(sizeof(Src) == sizeof(Tgt), THIS_TYPE_IS_NOT_SUPPORTED)
|
|
111
|
+
return __builtin_bit_cast(Tgt, src);
|
|
112
|
+
}
|
|
113
|
+
#else
|
|
84
114
|
template <typename Tgt, typename Src>
|
|
85
115
|
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Tgt bit_cast(const Src& src) {
|
|
86
|
-
#if EIGEN_HAS_TYPE_TRAITS
|
|
87
116
|
// The behaviour of memcpy is not specified for non-trivially copyable types
|
|
88
|
-
EIGEN_STATIC_ASSERT(std::is_trivially_copyable<Src>::value, THIS_TYPE_IS_NOT_SUPPORTED)
|
|
117
|
+
EIGEN_STATIC_ASSERT(std::is_trivially_copyable<Src>::value, THIS_TYPE_IS_NOT_SUPPORTED)
|
|
89
118
|
EIGEN_STATIC_ASSERT(std::is_trivially_copyable<Tgt>::value && std::is_default_constructible<Tgt>::value,
|
|
90
|
-
THIS_TYPE_IS_NOT_SUPPORTED)
|
|
91
|
-
|
|
119
|
+
THIS_TYPE_IS_NOT_SUPPORTED)
|
|
120
|
+
EIGEN_STATIC_ASSERT(sizeof(Src) == sizeof(Tgt), THIS_TYPE_IS_NOT_SUPPORTED)
|
|
92
121
|
|
|
93
|
-
EIGEN_STATIC_ASSERT(sizeof(Src) == sizeof(Tgt), THIS_TYPE_IS_NOT_SUPPORTED);
|
|
94
122
|
Tgt tgt;
|
|
123
|
+
// Load src into registers first. This allows the memcpy to be elided by CUDA.
|
|
124
|
+
const Src staged = src;
|
|
95
125
|
EIGEN_USING_STD(memcpy)
|
|
96
|
-
memcpy(&tgt, &
|
|
126
|
+
memcpy(static_cast<void*>(&tgt), static_cast<const void*>(&staged), sizeof(Tgt));
|
|
97
127
|
return tgt;
|
|
98
128
|
}
|
|
129
|
+
#endif
|
|
99
130
|
} // namespace numext
|
|
100
131
|
|
|
132
|
+
// clang-format off
|
|
101
133
|
/** \class NumTraits
|
|
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
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
134
|
+
* \ingroup Core_Module
|
|
135
|
+
*
|
|
136
|
+
* \brief Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
|
|
137
|
+
*
|
|
138
|
+
* \tparam T the numeric type at hand
|
|
139
|
+
*
|
|
140
|
+
* This class stores enums, typedefs and static methods giving information about a numeric type.
|
|
141
|
+
*
|
|
142
|
+
* The provided data consists of:
|
|
143
|
+
* \li A typedef \c Real, giving the "real part" type of \a T. If \a T is already real,
|
|
144
|
+
* then \c Real is just a typedef to \a T. If \a T is `std::complex<U>` then \c Real
|
|
145
|
+
* is a typedef to \a U.
|
|
146
|
+
* \li A typedef \c NonInteger, giving the type that should be used for operations producing non-integral values,
|
|
147
|
+
* such as quotients, square roots, etc. If \a T is a floating-point type, then this typedef just gives
|
|
148
|
+
* \a T again. Note however that many Eigen functions such as internal::sqrt simply refuse to
|
|
149
|
+
* take integers. Outside of a few cases, Eigen doesn't do automatic type promotion. Thus, this typedef is
|
|
150
|
+
* only intended as a helper for code that needs to explicitly promote types.
|
|
151
|
+
* \li A typedef \c Literal giving the type to use for numeric literals such as "2" or "0.5". For instance, for
|
|
152
|
+
* `std::complex<U>`, Literal is defined as \a U. Of course, this type must be fully compatible with \a T. In doubt,
|
|
153
|
+
* just use \a T here.
|
|
154
|
+
* \li A typedef \c Nested giving the type to use to nest a value inside of the expression tree. If you don't know what
|
|
155
|
+
* this means, just use \a T here.
|
|
156
|
+
* \li An enum value \c IsComplex. It is equal to 1 if \a T is a \c std::complex type, and to 0 otherwise.
|
|
157
|
+
* \li An enum value \c IsInteger. It is equal to \c 1 if \a T is an integer type such as \c int, and to \c 0 otherwise.
|
|
158
|
+
* \li Enum values \c ReadCost, \c AddCost and \c MulCost representing a rough estimate of the number of CPU cycles needed to by
|
|
159
|
+
* move / add / mul instructions respectively, assuming the data is already stored in CPU registers. Stay vague here.
|
|
160
|
+
* No need to do architecture-specific stuff. If you don't know what this means, just use \c Eigen::HugeCost.
|
|
161
|
+
* \li An enum value \c IsSigned. It is equal to \c 1 if \a T is a signed type and to 0 if \a T is unsigned.
|
|
162
|
+
* \li An enum value \c RequireInitialization. It is equal to \c 1 if the constructor of the numeric type \a T must be
|
|
163
|
+
* called, and to 0 if it is safe not to call it. Default is 0 if \a T is an arithmetic type, and 1 otherwise.
|
|
164
|
+
* \li An epsilon() function which, unlike <a href="http://en.cppreference.com/w/cpp/types/numeric_limits/epsilon">
|
|
165
|
+
* `std::numeric_limits::epsilon()`</a>, it returns a \c Real instead of a \a T.
|
|
166
|
+
* \li A dummy_precision() function returning a weak epsilon value. It is mainly used as a default value by the fuzzy
|
|
167
|
+
* comparison operators.
|
|
168
|
+
* \li highest() and lowest() functions returning the highest and lowest possible values respectively.
|
|
169
|
+
* \li digits() function returning the number of radix digits (non-sign digits for integers, mantissa for floating-point).
|
|
170
|
+
* This is the analogue of <a href="http://en.cppreference.com/w/cpp/types/numeric_limits/digits">
|
|
171
|
+
* `std::numeric_limits<T>::digits`</a> which is used as the default implementation if specialized.
|
|
172
|
+
* \li digits10() function returning the number of decimal digits that can be represented without change. This is the
|
|
173
|
+
* analogue of <a href="http://en.cppreference.com/w/cpp/types/numeric_limits/digits10">
|
|
174
|
+
* `std::numeric_limits<T>::digits10`</a> which is used as the default implementation if specialized.
|
|
175
|
+
* \li max_digits10() function returning the number of decimal digits required to uniquely represent all distinct values
|
|
176
|
+
* of the type. This is the analogue of <a
|
|
177
|
+
* href="http://en.cppreference.com/w/cpp/types/numeric_limits/max_digits10">`std::numeric_limits<T>::max_digits10`</a>
|
|
178
|
+
* which is used as the default implementation if specialized.
|
|
179
|
+
* \li min_exponent() and max_exponent() functions returning the highest and lowest possible values, respectively,
|
|
180
|
+
* such that the radix raised to the power exponent-1 is a normalized floating-point number. These are equivalent
|
|
181
|
+
* to <a href="http://en.cppreference.com/w/cpp/types/numeric_limits/min_exponent">
|
|
182
|
+
* `std::numeric_limits<T>::min_exponent`</a>/<a
|
|
183
|
+
* href="http://en.cppreference.com/w/cpp/types/numeric_limits/max_exponent">`std::numeric_limits<T>::max_exponent`</a>.
|
|
184
|
+
* \li infinity() function returning a representation of positive infinity, if available.
|
|
185
|
+
* \li quiet_NaN() function returning a non-signaling "not-a-number", if available.
|
|
186
|
+
*/
|
|
187
|
+
// clang-format on
|
|
188
|
+
template <typename T>
|
|
189
|
+
struct GenericNumTraits {
|
|
154
190
|
enum {
|
|
155
191
|
IsInteger = std::numeric_limits<T>::is_integer,
|
|
156
192
|
IsSigned = std::numeric_limits<T>::is_signed,
|
|
@@ -162,161 +198,123 @@ template<typename T> struct GenericNumTraits
|
|
|
162
198
|
};
|
|
163
199
|
|
|
164
200
|
typedef T Real;
|
|
165
|
-
typedef
|
|
166
|
-
IsInteger,
|
|
167
|
-
typename internal::conditional<sizeof(T)<=2, float, double>::type,
|
|
168
|
-
T
|
|
169
|
-
>::type NonInteger;
|
|
201
|
+
typedef std::conditional_t<IsInteger, std::conditional_t<sizeof(T) <= 2, float, double>, T> NonInteger;
|
|
170
202
|
typedef T Nested;
|
|
171
203
|
typedef T Literal;
|
|
172
204
|
|
|
173
|
-
EIGEN_DEVICE_FUNC
|
|
174
|
-
static inline Real epsilon()
|
|
175
|
-
{
|
|
176
|
-
return numext::numeric_limits<T>::epsilon();
|
|
177
|
-
}
|
|
205
|
+
EIGEN_DEVICE_FUNC constexpr static Real epsilon() { return numext::numeric_limits<T>::epsilon(); }
|
|
178
206
|
|
|
179
|
-
EIGEN_DEVICE_FUNC
|
|
180
|
-
static inline int digits10()
|
|
181
|
-
{
|
|
182
|
-
return internal::default_digits10_impl<T>::run();
|
|
183
|
-
}
|
|
207
|
+
EIGEN_DEVICE_FUNC constexpr static int digits10() { return internal::default_digits10_impl<T>::run(); }
|
|
184
208
|
|
|
185
|
-
EIGEN_DEVICE_FUNC
|
|
186
|
-
static inline int digits()
|
|
187
|
-
{
|
|
188
|
-
return internal::default_digits_impl<T>::run();
|
|
189
|
-
}
|
|
209
|
+
EIGEN_DEVICE_FUNC constexpr static int max_digits10() { return internal::default_max_digits10_impl<T>::run(); }
|
|
190
210
|
|
|
191
|
-
EIGEN_DEVICE_FUNC
|
|
192
|
-
static inline int min_exponent()
|
|
193
|
-
{
|
|
194
|
-
return numext::numeric_limits<T>::min_exponent;
|
|
195
|
-
}
|
|
211
|
+
EIGEN_DEVICE_FUNC constexpr static int digits() { return internal::default_digits_impl<T>::run(); }
|
|
196
212
|
|
|
197
|
-
EIGEN_DEVICE_FUNC
|
|
198
|
-
|
|
199
|
-
{
|
|
200
|
-
return numext::numeric_limits<T>::max_exponent;
|
|
201
|
-
}
|
|
213
|
+
EIGEN_DEVICE_FUNC constexpr static int min_exponent() { return numext::numeric_limits<T>::min_exponent; }
|
|
214
|
+
|
|
215
|
+
EIGEN_DEVICE_FUNC constexpr static int max_exponent() { return numext::numeric_limits<T>::max_exponent; }
|
|
202
216
|
|
|
203
|
-
EIGEN_DEVICE_FUNC
|
|
204
|
-
static inline Real dummy_precision()
|
|
205
|
-
{
|
|
217
|
+
EIGEN_DEVICE_FUNC constexpr static Real dummy_precision() {
|
|
206
218
|
// make sure to override this for floating-point types
|
|
207
219
|
return Real(0);
|
|
208
220
|
}
|
|
209
221
|
|
|
210
|
-
EIGEN_DEVICE_FUNC
|
|
211
|
-
static inline T highest() {
|
|
212
|
-
return (numext::numeric_limits<T>::max)();
|
|
213
|
-
}
|
|
222
|
+
EIGEN_DEVICE_FUNC constexpr static T highest() { return (numext::numeric_limits<T>::max)(); }
|
|
214
223
|
|
|
215
|
-
EIGEN_DEVICE_FUNC
|
|
216
|
-
static inline T lowest() {
|
|
217
|
-
return IsInteger ? (numext::numeric_limits<T>::min)()
|
|
218
|
-
: static_cast<T>(-(numext::numeric_limits<T>::max)());
|
|
219
|
-
}
|
|
224
|
+
EIGEN_DEVICE_FUNC constexpr static T lowest() { return (numext::numeric_limits<T>::lowest)(); }
|
|
220
225
|
|
|
221
|
-
EIGEN_DEVICE_FUNC
|
|
222
|
-
static inline T infinity() {
|
|
223
|
-
return numext::numeric_limits<T>::infinity();
|
|
224
|
-
}
|
|
226
|
+
EIGEN_DEVICE_FUNC constexpr static T infinity() { return numext::numeric_limits<T>::infinity(); }
|
|
225
227
|
|
|
226
|
-
EIGEN_DEVICE_FUNC
|
|
227
|
-
static inline T quiet_NaN() {
|
|
228
|
-
return numext::numeric_limits<T>::quiet_NaN();
|
|
229
|
-
}
|
|
228
|
+
EIGEN_DEVICE_FUNC constexpr static T quiet_NaN() { return numext::numeric_limits<T>::quiet_NaN(); }
|
|
230
229
|
};
|
|
231
230
|
|
|
232
|
-
template<typename T>
|
|
233
|
-
{};
|
|
231
|
+
template <typename T>
|
|
232
|
+
struct NumTraits : GenericNumTraits<T> {};
|
|
234
233
|
|
|
235
|
-
template<>
|
|
236
|
-
|
|
237
|
-
{
|
|
238
|
-
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
239
|
-
static inline float dummy_precision() { return 1e-5f; }
|
|
234
|
+
template <>
|
|
235
|
+
struct NumTraits<float> : GenericNumTraits<float> {
|
|
236
|
+
EIGEN_DEVICE_FUNC constexpr static float dummy_precision() { return 1e-5f; }
|
|
240
237
|
};
|
|
241
238
|
|
|
242
|
-
template<>
|
|
243
|
-
{
|
|
244
|
-
EIGEN_DEVICE_FUNC
|
|
245
|
-
static inline double dummy_precision() { return 1e-12; }
|
|
239
|
+
template <>
|
|
240
|
+
struct NumTraits<double> : GenericNumTraits<double> {
|
|
241
|
+
EIGEN_DEVICE_FUNC constexpr static double dummy_precision() { return 1e-12; }
|
|
246
242
|
};
|
|
247
243
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
static
|
|
244
|
+
// GPU devices treat `long double` as `double`.
|
|
245
|
+
#ifndef EIGEN_GPU_COMPILE_PHASE
|
|
246
|
+
template <>
|
|
247
|
+
struct NumTraits<long double> : GenericNumTraits<long double> {
|
|
248
|
+
EIGEN_DEVICE_FUNC constexpr static long double dummy_precision() { return static_cast<long double>(1e-15l); }
|
|
249
|
+
|
|
250
|
+
#if defined(EIGEN_ARCH_PPC) && (__LDBL_MANT_DIG__ == 106)
|
|
251
|
+
// PowerPC double double causes issues with some values
|
|
252
|
+
EIGEN_DEVICE_FUNC constexpr static long double epsilon() {
|
|
253
|
+
// 2^(-(__LDBL_MANT_DIG__)+1)
|
|
254
|
+
return static_cast<long double>(2.4651903288156618919116517665087e-32l);
|
|
255
|
+
}
|
|
256
|
+
#endif
|
|
253
257
|
};
|
|
258
|
+
#endif
|
|
254
259
|
|
|
255
|
-
template<typename
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
typedef
|
|
259
|
-
typedef typename NumTraits<_Real>::Literal Literal;
|
|
260
|
+
template <typename Real_>
|
|
261
|
+
struct NumTraits<std::complex<Real_> > : GenericNumTraits<std::complex<Real_> > {
|
|
262
|
+
typedef Real_ Real;
|
|
263
|
+
typedef typename NumTraits<Real_>::Literal Literal;
|
|
260
264
|
enum {
|
|
261
265
|
IsComplex = 1,
|
|
262
|
-
|
|
263
|
-
|
|
266
|
+
IsSigned = NumTraits<Real_>::IsSigned,
|
|
267
|
+
RequireInitialization = NumTraits<Real_>::RequireInitialization,
|
|
268
|
+
ReadCost = 2 * NumTraits<Real_>::ReadCost,
|
|
264
269
|
AddCost = 2 * NumTraits<Real>::AddCost,
|
|
265
270
|
MulCost = 4 * NumTraits<Real>::MulCost + 2 * NumTraits<Real>::AddCost
|
|
266
271
|
};
|
|
267
272
|
|
|
268
|
-
EIGEN_DEVICE_FUNC
|
|
269
|
-
static
|
|
270
|
-
EIGEN_DEVICE_FUNC
|
|
271
|
-
static
|
|
272
|
-
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
273
|
-
static inline int digits10() { return NumTraits<Real>::digits10(); }
|
|
273
|
+
EIGEN_DEVICE_FUNC constexpr static Real epsilon() { return NumTraits<Real>::epsilon(); }
|
|
274
|
+
EIGEN_DEVICE_FUNC constexpr static Real dummy_precision() { return NumTraits<Real>::dummy_precision(); }
|
|
275
|
+
EIGEN_DEVICE_FUNC constexpr static int digits10() { return NumTraits<Real>::digits10(); }
|
|
276
|
+
EIGEN_DEVICE_FUNC constexpr static int max_digits10() { return NumTraits<Real>::max_digits10(); }
|
|
274
277
|
};
|
|
275
278
|
|
|
276
|
-
template<typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
|
|
277
|
-
struct NumTraits<Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> >
|
|
278
|
-
{
|
|
279
|
+
template <typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
|
|
280
|
+
struct NumTraits<Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> > {
|
|
279
281
|
typedef Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> ArrayType;
|
|
280
282
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
|
281
283
|
typedef Array<RealScalar, Rows, Cols, Options, MaxRows, MaxCols> Real;
|
|
282
284
|
typedef typename NumTraits<Scalar>::NonInteger NonIntegerScalar;
|
|
283
285
|
typedef Array<NonIntegerScalar, Rows, Cols, Options, MaxRows, MaxCols> NonInteger;
|
|
284
|
-
typedef ArrayType
|
|
286
|
+
typedef ArrayType& Nested;
|
|
285
287
|
typedef typename NumTraits<Scalar>::Literal Literal;
|
|
286
288
|
|
|
287
289
|
enum {
|
|
288
290
|
IsComplex = NumTraits<Scalar>::IsComplex,
|
|
289
291
|
IsInteger = NumTraits<Scalar>::IsInteger,
|
|
290
|
-
IsSigned
|
|
292
|
+
IsSigned = NumTraits<Scalar>::IsSigned,
|
|
291
293
|
RequireInitialization = 1,
|
|
292
|
-
ReadCost = ArrayType::SizeAtCompileTime==Dynamic
|
|
293
|
-
|
|
294
|
-
|
|
294
|
+
ReadCost = ArrayType::SizeAtCompileTime == Dynamic
|
|
295
|
+
? HugeCost
|
|
296
|
+
: ArrayType::SizeAtCompileTime * int(NumTraits<Scalar>::ReadCost),
|
|
297
|
+
AddCost = ArrayType::SizeAtCompileTime == Dynamic ? HugeCost
|
|
298
|
+
: ArrayType::SizeAtCompileTime * int(NumTraits<Scalar>::AddCost),
|
|
299
|
+
MulCost = ArrayType::SizeAtCompileTime == Dynamic ? HugeCost
|
|
300
|
+
: ArrayType::SizeAtCompileTime * int(NumTraits<Scalar>::MulCost)
|
|
295
301
|
};
|
|
296
302
|
|
|
297
|
-
EIGEN_DEVICE_FUNC
|
|
298
|
-
static
|
|
299
|
-
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
|
300
|
-
static inline RealScalar dummy_precision() { return NumTraits<RealScalar>::dummy_precision(); }
|
|
303
|
+
EIGEN_DEVICE_FUNC constexpr static RealScalar epsilon() { return NumTraits<RealScalar>::epsilon(); }
|
|
304
|
+
EIGEN_DEVICE_FUNC constexpr static RealScalar dummy_precision() { return NumTraits<RealScalar>::dummy_precision(); }
|
|
301
305
|
|
|
302
|
-
|
|
303
|
-
static
|
|
306
|
+
constexpr static int digits10() { return NumTraits<Scalar>::digits10(); }
|
|
307
|
+
constexpr static int max_digits10() { return NumTraits<Scalar>::max_digits10(); }
|
|
304
308
|
};
|
|
305
309
|
|
|
306
|
-
template<>
|
|
307
|
-
|
|
308
|
-
{
|
|
309
|
-
enum {
|
|
310
|
-
RequireInitialization = 1,
|
|
311
|
-
ReadCost = HugeCost,
|
|
312
|
-
AddCost = HugeCost,
|
|
313
|
-
MulCost = HugeCost
|
|
314
|
-
};
|
|
310
|
+
template <>
|
|
311
|
+
struct NumTraits<std::string> : GenericNumTraits<std::string> {
|
|
312
|
+
enum { RequireInitialization = 1, ReadCost = HugeCost, AddCost = HugeCost, MulCost = HugeCost };
|
|
315
313
|
|
|
316
|
-
|
|
317
|
-
static
|
|
314
|
+
constexpr static int digits10() { return 0; }
|
|
315
|
+
constexpr static int max_digits10() { return 0; }
|
|
318
316
|
|
|
319
|
-
private:
|
|
317
|
+
private:
|
|
320
318
|
static inline std::string epsilon();
|
|
321
319
|
static inline std::string dummy_precision();
|
|
322
320
|
static inline std::string lowest();
|
|
@@ -326,10 +324,12 @@ private:
|
|
|
326
324
|
};
|
|
327
325
|
|
|
328
326
|
// Empty specialization for void to allow template specialization based on NumTraits<T>::Real with T==void and SFINAE.
|
|
329
|
-
template<>
|
|
327
|
+
template <>
|
|
328
|
+
struct NumTraits<void> {};
|
|
330
329
|
|
|
331
|
-
template<>
|
|
330
|
+
template <>
|
|
331
|
+
struct NumTraits<bool> : GenericNumTraits<bool> {};
|
|
332
332
|
|
|
333
|
-
}
|
|
333
|
+
} // end namespace Eigen
|
|
334
334
|
|
|
335
|
-
#endif
|
|
335
|
+
#endif // EIGEN_NUMTRAITS_H
|