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