@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
|
@@ -10,83 +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
|
|
24
|
+
struct default_digits_impl {
|
|
25
|
+
EIGEN_DEVICE_FUNC constexpr static int run() { return std::numeric_limits<T>::digits; }
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
template <typename T>
|
|
29
|
+
struct default_digits_impl<T, false, false> // Floating point
|
|
23
30
|
{
|
|
24
|
-
static int run() {
|
|
31
|
+
EIGEN_DEVICE_FUNC constexpr static int run() {
|
|
32
|
+
using std::ceil;
|
|
33
|
+
using std::log2;
|
|
34
|
+
typedef typename NumTraits<T>::Real Real;
|
|
35
|
+
return int(ceil(-log2(NumTraits<Real>::epsilon())));
|
|
36
|
+
}
|
|
25
37
|
};
|
|
26
38
|
|
|
27
|
-
template<typename T>
|
|
28
|
-
struct
|
|
39
|
+
template <typename T>
|
|
40
|
+
struct default_digits_impl<T, false, true> // Integer
|
|
29
41
|
{
|
|
30
|
-
static int run() {
|
|
42
|
+
EIGEN_DEVICE_FUNC constexpr static int run() { return 0; }
|
|
43
|
+
};
|
|
44
|
+
|
|
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,
|
|
48
|
+
bool is_integer = NumTraits<T>::IsInteger>
|
|
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
|
|
55
|
+
{
|
|
56
|
+
EIGEN_DEVICE_FUNC constexpr static int run() {
|
|
57
|
+
using std::floor;
|
|
31
58
|
using std::log10;
|
|
32
|
-
using std::ceil;
|
|
33
59
|
typedef typename NumTraits<T>::Real Real;
|
|
34
|
-
return int(
|
|
60
|
+
return int(floor((internal::default_digits_impl<Real>::run() - 1) * log10(2)));
|
|
35
61
|
}
|
|
36
62
|
};
|
|
37
63
|
|
|
38
|
-
template<typename T>
|
|
39
|
-
struct default_digits10_impl<T,false,true>
|
|
64
|
+
template <typename T>
|
|
65
|
+
struct default_digits10_impl<T, false, true> // Integer
|
|
40
66
|
{
|
|
41
|
-
static int run() { return 0; }
|
|
67
|
+
EIGEN_DEVICE_FUNC constexpr static int run() { return 0; }
|
|
42
68
|
};
|
|
43
69
|
|
|
44
|
-
|
|
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; }
|
|
76
|
+
};
|
|
45
77
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
* \li A typedef \c NonInteger, giving the type that should be used for operations producing non-integral values,
|
|
60
|
-
* such as quotients, square roots, etc. If \a T is a floating-point type, then this typedef just gives
|
|
61
|
-
* \a T again. Note however that many Eigen functions such as internal::sqrt simply refuse to
|
|
62
|
-
* take integers. Outside of a few cases, Eigen doesn't do automatic type promotion. Thus, this typedef is
|
|
63
|
-
* only intended as a helper for code that needs to explicitly promote types.
|
|
64
|
-
* \li A typedef \c Literal giving the type to use for numeric literals such as "2" or "0.5". For instance, for \c std::complex<U>, Literal is defined as \c U.
|
|
65
|
-
* Of course, this type must be fully compatible with \a T. In doubt, just use \a T here.
|
|
66
|
-
* \li A typedef \a Nested giving the type to use to nest a value inside of the expression tree. If you don't know what
|
|
67
|
-
* this means, just use \a T here.
|
|
68
|
-
* \li An enum value \a IsComplex. It is equal to 1 if \a T is a \c std::complex
|
|
69
|
-
* type, and to 0 otherwise.
|
|
70
|
-
* \li An enum value \a IsInteger. It is equal to \c 1 if \a T is an integer type such as \c int,
|
|
71
|
-
* and to \c 0 otherwise.
|
|
72
|
-
* \li Enum values ReadCost, AddCost and MulCost representing a rough estimate of the number of CPU cycles needed
|
|
73
|
-
* to by move / add / mul instructions respectively, assuming the data is already stored in CPU registers.
|
|
74
|
-
* Stay vague here. No need to do architecture-specific stuff.
|
|
75
|
-
* \li An enum value \a IsSigned. It is equal to \c 1 if \a T is a signed type and to 0 if \a T is unsigned.
|
|
76
|
-
* \li An enum value \a RequireInitialization. It is equal to \c 1 if the constructor of the numeric type \a T must
|
|
77
|
-
* be 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.
|
|
78
|
-
* \li An epsilon() function which, unlike <a href="http://en.cppreference.com/w/cpp/types/numeric_limits/epsilon">std::numeric_limits::epsilon()</a>,
|
|
79
|
-
* it returns a \a Real instead of a \a T.
|
|
80
|
-
* \li A dummy_precision() function returning a weak epsilon value. It is mainly used as a default
|
|
81
|
-
* value by the fuzzy comparison operators.
|
|
82
|
-
* \li highest() and lowest() functions returning the highest and lowest possible values respectively.
|
|
83
|
-
* \li digits10() function returning the number of decimal digits that can be represented without change. This is
|
|
84
|
-
* the analogue of <a href="http://en.cppreference.com/w/cpp/types/numeric_limits/digits10">std::numeric_limits<T>::digits10</a>
|
|
85
|
-
* which is used as the default implementation if specialized.
|
|
86
|
-
*/
|
|
87
|
-
|
|
88
|
-
template<typename T> struct GenericNumTraits
|
|
78
|
+
template <typename T>
|
|
79
|
+
struct default_max_digits10_impl<T, false, false> // Floating point
|
|
80
|
+
{
|
|
81
|
+
EIGEN_DEVICE_FUNC constexpr static int run() {
|
|
82
|
+
using std::ceil;
|
|
83
|
+
using std::log10;
|
|
84
|
+
typedef typename NumTraits<T>::Real Real;
|
|
85
|
+
return int(ceil(internal::default_digits_impl<Real>::run() * log10(2) + 1));
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
template <typename T>
|
|
90
|
+
struct default_max_digits10_impl<T, false, true> // Integer
|
|
89
91
|
{
|
|
92
|
+
EIGEN_DEVICE_FUNC constexpr static int run() { return 0; }
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
} // end namespace internal
|
|
96
|
+
|
|
97
|
+
namespace numext {
|
|
98
|
+
|
|
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
|
|
114
|
+
template <typename Tgt, typename Src>
|
|
115
|
+
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Tgt bit_cast(const Src& src) {
|
|
116
|
+
// The behaviour of memcpy is not specified for non-trivially copyable types
|
|
117
|
+
EIGEN_STATIC_ASSERT(std::is_trivially_copyable<Src>::value, THIS_TYPE_IS_NOT_SUPPORTED)
|
|
118
|
+
EIGEN_STATIC_ASSERT(std::is_trivially_copyable<Tgt>::value && std::is_default_constructible<Tgt>::value,
|
|
119
|
+
THIS_TYPE_IS_NOT_SUPPORTED)
|
|
120
|
+
EIGEN_STATIC_ASSERT(sizeof(Src) == sizeof(Tgt), THIS_TYPE_IS_NOT_SUPPORTED)
|
|
121
|
+
|
|
122
|
+
Tgt tgt;
|
|
123
|
+
// Load src into registers first. This allows the memcpy to be elided by CUDA.
|
|
124
|
+
const Src staged = src;
|
|
125
|
+
EIGEN_USING_STD(memcpy)
|
|
126
|
+
memcpy(static_cast<void*>(&tgt), static_cast<const void*>(&staged), sizeof(Tgt));
|
|
127
|
+
return tgt;
|
|
128
|
+
}
|
|
129
|
+
#endif
|
|
130
|
+
} // namespace numext
|
|
131
|
+
|
|
132
|
+
// clang-format off
|
|
133
|
+
/** \class NumTraits
|
|
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 {
|
|
90
190
|
enum {
|
|
91
191
|
IsInteger = std::numeric_limits<T>::is_integer,
|
|
92
192
|
IsSigned = std::numeric_limits<T>::is_signed,
|
|
@@ -98,140 +198,123 @@ template<typename T> struct GenericNumTraits
|
|
|
98
198
|
};
|
|
99
199
|
|
|
100
200
|
typedef T Real;
|
|
101
|
-
typedef
|
|
102
|
-
IsInteger,
|
|
103
|
-
typename internal::conditional<sizeof(T)<=2, float, double>::type,
|
|
104
|
-
T
|
|
105
|
-
>::type NonInteger;
|
|
201
|
+
typedef std::conditional_t<IsInteger, std::conditional_t<sizeof(T) <= 2, float, double>, T> NonInteger;
|
|
106
202
|
typedef T Nested;
|
|
107
203
|
typedef T Literal;
|
|
108
204
|
|
|
109
|
-
EIGEN_DEVICE_FUNC
|
|
110
|
-
static inline Real epsilon()
|
|
111
|
-
{
|
|
112
|
-
return numext::numeric_limits<T>::epsilon();
|
|
113
|
-
}
|
|
205
|
+
EIGEN_DEVICE_FUNC constexpr static Real epsilon() { return numext::numeric_limits<T>::epsilon(); }
|
|
114
206
|
|
|
115
|
-
EIGEN_DEVICE_FUNC
|
|
116
|
-
|
|
117
|
-
{
|
|
118
|
-
|
|
119
|
-
}
|
|
207
|
+
EIGEN_DEVICE_FUNC constexpr static int digits10() { return internal::default_digits10_impl<T>::run(); }
|
|
208
|
+
|
|
209
|
+
EIGEN_DEVICE_FUNC constexpr static int max_digits10() { return internal::default_max_digits10_impl<T>::run(); }
|
|
210
|
+
|
|
211
|
+
EIGEN_DEVICE_FUNC constexpr static int digits() { return internal::default_digits_impl<T>::run(); }
|
|
120
212
|
|
|
121
|
-
EIGEN_DEVICE_FUNC
|
|
122
|
-
|
|
123
|
-
{
|
|
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; }
|
|
216
|
+
|
|
217
|
+
EIGEN_DEVICE_FUNC constexpr static Real dummy_precision() {
|
|
124
218
|
// make sure to override this for floating-point types
|
|
125
219
|
return Real(0);
|
|
126
220
|
}
|
|
127
221
|
|
|
222
|
+
EIGEN_DEVICE_FUNC constexpr static T highest() { return (numext::numeric_limits<T>::max)(); }
|
|
128
223
|
|
|
129
|
-
EIGEN_DEVICE_FUNC
|
|
130
|
-
static inline T highest() {
|
|
131
|
-
return (numext::numeric_limits<T>::max)();
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
EIGEN_DEVICE_FUNC
|
|
135
|
-
static inline T lowest() {
|
|
136
|
-
return IsInteger ? (numext::numeric_limits<T>::min)() : (-(numext::numeric_limits<T>::max)());
|
|
137
|
-
}
|
|
224
|
+
EIGEN_DEVICE_FUNC constexpr static T lowest() { return (numext::numeric_limits<T>::lowest)(); }
|
|
138
225
|
|
|
139
|
-
EIGEN_DEVICE_FUNC
|
|
140
|
-
static inline T infinity() {
|
|
141
|
-
return numext::numeric_limits<T>::infinity();
|
|
142
|
-
}
|
|
226
|
+
EIGEN_DEVICE_FUNC constexpr static T infinity() { return numext::numeric_limits<T>::infinity(); }
|
|
143
227
|
|
|
144
|
-
EIGEN_DEVICE_FUNC
|
|
145
|
-
static inline T quiet_NaN() {
|
|
146
|
-
return numext::numeric_limits<T>::quiet_NaN();
|
|
147
|
-
}
|
|
228
|
+
EIGEN_DEVICE_FUNC constexpr static T quiet_NaN() { return numext::numeric_limits<T>::quiet_NaN(); }
|
|
148
229
|
};
|
|
149
230
|
|
|
150
|
-
template<typename T>
|
|
151
|
-
{};
|
|
231
|
+
template <typename T>
|
|
232
|
+
struct NumTraits : GenericNumTraits<T> {};
|
|
152
233
|
|
|
153
|
-
template<>
|
|
154
|
-
|
|
155
|
-
{
|
|
156
|
-
EIGEN_DEVICE_FUNC
|
|
157
|
-
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; }
|
|
158
237
|
};
|
|
159
238
|
|
|
160
|
-
template<>
|
|
161
|
-
{
|
|
162
|
-
EIGEN_DEVICE_FUNC
|
|
163
|
-
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; }
|
|
164
242
|
};
|
|
165
243
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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
|
|
170
257
|
};
|
|
258
|
+
#endif
|
|
171
259
|
|
|
172
|
-
template<typename
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
typedef
|
|
176
|
-
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;
|
|
177
264
|
enum {
|
|
178
265
|
IsComplex = 1,
|
|
179
|
-
|
|
180
|
-
|
|
266
|
+
IsSigned = NumTraits<Real_>::IsSigned,
|
|
267
|
+
RequireInitialization = NumTraits<Real_>::RequireInitialization,
|
|
268
|
+
ReadCost = 2 * NumTraits<Real_>::ReadCost,
|
|
181
269
|
AddCost = 2 * NumTraits<Real>::AddCost,
|
|
182
270
|
MulCost = 4 * NumTraits<Real>::MulCost + 2 * NumTraits<Real>::AddCost
|
|
183
271
|
};
|
|
184
272
|
|
|
185
|
-
EIGEN_DEVICE_FUNC
|
|
186
|
-
static
|
|
187
|
-
EIGEN_DEVICE_FUNC
|
|
188
|
-
static
|
|
189
|
-
EIGEN_DEVICE_FUNC
|
|
190
|
-
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(); }
|
|
191
277
|
};
|
|
192
278
|
|
|
193
|
-
template<typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
|
|
194
|
-
struct NumTraits<Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> >
|
|
195
|
-
{
|
|
279
|
+
template <typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
|
|
280
|
+
struct NumTraits<Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> > {
|
|
196
281
|
typedef Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> ArrayType;
|
|
197
282
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
|
198
283
|
typedef Array<RealScalar, Rows, Cols, Options, MaxRows, MaxCols> Real;
|
|
199
284
|
typedef typename NumTraits<Scalar>::NonInteger NonIntegerScalar;
|
|
200
285
|
typedef Array<NonIntegerScalar, Rows, Cols, Options, MaxRows, MaxCols> NonInteger;
|
|
201
|
-
typedef ArrayType
|
|
286
|
+
typedef ArrayType& Nested;
|
|
202
287
|
typedef typename NumTraits<Scalar>::Literal Literal;
|
|
203
288
|
|
|
204
289
|
enum {
|
|
205
290
|
IsComplex = NumTraits<Scalar>::IsComplex,
|
|
206
291
|
IsInteger = NumTraits<Scalar>::IsInteger,
|
|
207
|
-
IsSigned
|
|
292
|
+
IsSigned = NumTraits<Scalar>::IsSigned,
|
|
208
293
|
RequireInitialization = 1,
|
|
209
|
-
ReadCost = ArrayType::SizeAtCompileTime==Dynamic
|
|
210
|
-
|
|
211
|
-
|
|
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)
|
|
212
301
|
};
|
|
213
302
|
|
|
214
|
-
EIGEN_DEVICE_FUNC
|
|
215
|
-
static
|
|
216
|
-
EIGEN_DEVICE_FUNC
|
|
217
|
-
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(); }
|
|
218
305
|
|
|
219
|
-
static
|
|
306
|
+
constexpr static int digits10() { return NumTraits<Scalar>::digits10(); }
|
|
307
|
+
constexpr static int max_digits10() { return NumTraits<Scalar>::max_digits10(); }
|
|
220
308
|
};
|
|
221
309
|
|
|
222
|
-
template<>
|
|
223
|
-
|
|
224
|
-
{
|
|
225
|
-
enum {
|
|
226
|
-
RequireInitialization = 1,
|
|
227
|
-
ReadCost = HugeCost,
|
|
228
|
-
AddCost = HugeCost,
|
|
229
|
-
MulCost = HugeCost
|
|
230
|
-
};
|
|
310
|
+
template <>
|
|
311
|
+
struct NumTraits<std::string> : GenericNumTraits<std::string> {
|
|
312
|
+
enum { RequireInitialization = 1, ReadCost = HugeCost, AddCost = HugeCost, MulCost = HugeCost };
|
|
231
313
|
|
|
232
|
-
static
|
|
314
|
+
constexpr static int digits10() { return 0; }
|
|
315
|
+
constexpr static int max_digits10() { return 0; }
|
|
233
316
|
|
|
234
|
-
private:
|
|
317
|
+
private:
|
|
235
318
|
static inline std::string epsilon();
|
|
236
319
|
static inline std::string dummy_precision();
|
|
237
320
|
static inline std::string lowest();
|
|
@@ -241,8 +324,12 @@ private:
|
|
|
241
324
|
};
|
|
242
325
|
|
|
243
326
|
// Empty specialization for void to allow template specialization based on NumTraits<T>::Real with T==void and SFINAE.
|
|
244
|
-
template<>
|
|
327
|
+
template <>
|
|
328
|
+
struct NumTraits<void> {};
|
|
329
|
+
|
|
330
|
+
template <>
|
|
331
|
+
struct NumTraits<bool> : GenericNumTraits<bool> {};
|
|
245
332
|
|
|
246
|
-
}
|
|
333
|
+
} // end namespace Eigen
|
|
247
334
|
|
|
248
|
-
#endif
|
|
335
|
+
#endif // EIGEN_NUMTRAITS_H
|