@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.
Files changed (435) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -21
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +235 -326
  6. package/eigen/Eigen/Eigenvalues +16 -14
  7. package/eigen/Eigen/Geometry +21 -24
  8. package/eigen/Eigen/Householder +9 -8
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -14
  11. package/eigen/Eigen/KLUSupport +43 -0
  12. package/eigen/Eigen/LU +16 -20
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -54
  15. package/eigen/Eigen/PaStiXSupport +23 -20
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -21
  18. package/eigen/Eigen/QtAlignedMalloc +5 -13
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -18
  21. package/eigen/Eigen/Sparse +1 -4
  22. package/eigen/Eigen/SparseCholesky +18 -23
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +12 -8
  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 +377 -401
  37. package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
  42. package/eigen/Eigen/src/Core/Array.h +341 -294
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
  48. package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
  49. package/eigen/Eigen/src/Core/Block.h +375 -398
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
  53. package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
  59. package/eigen/Eigen/src/Core/DenseBase.h +632 -571
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
  61. package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +169 -210
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +172 -222
  67. package/eigen/Eigen/src/Core/EigenBase.h +75 -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 -109
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
  75. package/eigen/Eigen/src/Core/IO.h +147 -139
  76. package/eigen/Eigen/src/Core/IndexedView.h +321 -0
  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 +56 -66
  80. package/eigen/Eigen/src/Core/Map.h +124 -142
  81. package/eigen/Eigen/src/Core/MapBase.h +256 -281
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
  84. package/eigen/Eigen/src/Core/Matrix.h +491 -416
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
  86. package/eigen/Eigen/src/Core/NestByValue.h +66 -85
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -85
  88. package/eigen/Eigen/src/Core/NumTraits.h +235 -148
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
  92. package/eigen/Eigen/src/Core/Product.h +260 -139
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
  94. package/eigen/Eigen/src/Core/Random.h +161 -136
  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 +366 -336
  98. package/eigen/Eigen/src/Core/Ref.h +308 -209
  99. package/eigen/Eigen/src/Core/Replicate.h +94 -106
  100. package/eigen/Eigen/src/Core/Reshaped.h +398 -0
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +136 -145
  103. package/eigen/Eigen/src/Core/Select.h +70 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
  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 +97 -111
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
  109. package/eigen/Eigen/src/Core/SolverBase.h +138 -101
  110. package/eigen/Eigen/src/Core/StableNorm.h +156 -160
  111. package/eigen/Eigen/src/Core/StlIterators.h +619 -0
  112. package/eigen/Eigen/src/Core/Stride.h +91 -88
  113. package/eigen/Eigen/src/Core/Swap.h +70 -38
  114. package/eigen/Eigen/src/Core/Transpose.h +295 -273
  115. package/eigen/Eigen/src/Core/Transpositions.h +272 -317
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
  119. package/eigen/Eigen/src/Core/Visitor.h +480 -216
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
  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 +277 -0
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
  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 +3391 -723
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  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 +620 -0
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
  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 -46
  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 -275
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
  217. package/eigen/Eigen/src/Core/util/Constants.h +314 -263
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
  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 +487 -0
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
  226. package/eigen/Eigen/src/Core/util/Macros.h +939 -646
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
  229. package/eigen/Eigen/src/Core/util/Meta.h +618 -426
  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 +51 -0
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
  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 +91 -107
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
  264. package/eigen/Eigen/src/Geometry/Transform.h +896 -953
  265. package/eigen/Eigen/src/Geometry/Translation.h +100 -98
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
  269. package/eigen/Eigen/src/Householder/Householder.h +104 -122
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
  285. package/eigen/Eigen/src/LU/Determinant.h +60 -63
  286. package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
  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 +250 -282
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
  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 -429
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
  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 +263 -261
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
  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 +585 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
  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 +1614 -1142
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
  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 +371 -414
  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 +146 -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 +814 -618
  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 +273 -255
  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 +90 -101
  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 +125 -133
  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 +451 -490
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
  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 -732
  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 +480 -380
  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 +9976 -16182
  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.inc +1370 -0
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
  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/lib/LibEigen.d.ts +4 -0
  409. package/lib/LibEigen.js +14 -0
  410. package/lib/index.d.ts +1 -1
  411. package/lib/index.js +7 -3
  412. package/package.json +2 -10
  413. package/eigen/Eigen/CMakeLists.txt +0 -19
  414. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
  415. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
  416. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  417. package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
  418. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  419. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  420. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  421. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  422. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  423. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  424. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  425. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  426. package/eigen/Eigen/src/misc/lapack.h +0 -152
  427. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
  428. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
  429. package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
  430. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  431. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
  432. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  433. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
  434. package/lib/eigen.d.ts +0 -2
  435. package/lib/eigen.js +0 -15
@@ -9,58 +9,71 @@
9
9
  #ifndef SPARSELU_IMPL_H
10
10
  #define SPARSELU_IMPL_H
11
11
 
12
+ // IWYU pragma: private
13
+ #include "./InternalHeaderCheck.h"
14
+
12
15
  namespace Eigen {
13
16
  namespace internal {
14
-
17
+
15
18
  /** \ingroup SparseLU_Module
16
- * \class SparseLUImpl
17
- * Base class for sparseLU
18
- */
19
+ * \class SparseLUImpl
20
+ * Base class for sparseLU
21
+ */
19
22
  template <typename Scalar, typename StorageIndex>
20
- class SparseLUImpl
21
- {
22
- public:
23
- typedef Matrix<Scalar,Dynamic,1> ScalarVector;
24
- typedef Matrix<StorageIndex,Dynamic,1> IndexVector;
25
- typedef Matrix<Scalar,Dynamic,Dynamic,ColMajor> ScalarMatrix;
26
- typedef Map<ScalarMatrix, 0, OuterStride<> > MappedMatrixBlock;
27
- typedef typename ScalarVector::RealScalar RealScalar;
28
- typedef Ref<Matrix<Scalar,Dynamic,1> > BlockScalarVector;
29
- typedef Ref<Matrix<StorageIndex,Dynamic,1> > BlockIndexVector;
30
- typedef LU_GlobalLU_t<IndexVector, ScalarVector> GlobalLU_t;
31
- typedef SparseMatrix<Scalar,ColMajor,StorageIndex> MatrixType;
32
-
33
- protected:
34
- template <typename VectorType>
35
- Index expand(VectorType& vec, Index& length, Index nbElts, Index keep_prev, Index& num_expansions);
36
- Index memInit(Index m, Index n, Index annz, Index lwork, Index fillratio, Index panel_size, GlobalLU_t& glu);
37
- template <typename VectorType>
38
- Index memXpand(VectorType& vec, Index& maxlen, Index nbElts, MemType memtype, Index& num_expansions);
39
- void heap_relax_snode (const Index n, IndexVector& et, const Index relax_columns, IndexVector& descendants, IndexVector& relax_end);
40
- void relax_snode (const Index n, IndexVector& et, const Index relax_columns, IndexVector& descendants, IndexVector& relax_end);
41
- Index snode_dfs(const Index jcol, const Index kcol,const MatrixType& mat, IndexVector& xprune, IndexVector& marker, GlobalLU_t& glu);
42
- Index snode_bmod (const Index jcol, const Index fsupc, ScalarVector& dense, GlobalLU_t& glu);
43
- Index pivotL(const Index jcol, const RealScalar& diagpivotthresh, IndexVector& perm_r, IndexVector& iperm_c, Index& pivrow, GlobalLU_t& glu);
44
- template <typename Traits>
45
- void dfs_kernel(const StorageIndex jj, IndexVector& perm_r,
46
- Index& nseg, IndexVector& panel_lsub, IndexVector& segrep,
47
- Ref<IndexVector> repfnz_col, IndexVector& xprune, Ref<IndexVector> marker, IndexVector& parent,
48
- IndexVector& xplore, GlobalLU_t& glu, Index& nextl_col, Index krow, Traits& traits);
49
- void panel_dfs(const Index m, const Index w, const Index jcol, MatrixType& A, IndexVector& perm_r, Index& nseg, ScalarVector& dense, IndexVector& panel_lsub, IndexVector& segrep, IndexVector& repfnz, IndexVector& xprune, IndexVector& marker, IndexVector& parent, IndexVector& xplore, GlobalLU_t& glu);
50
-
51
- void panel_bmod(const Index m, const Index w, const Index jcol, const Index nseg, ScalarVector& dense, ScalarVector& tempv, IndexVector& segrep, IndexVector& repfnz, GlobalLU_t& glu);
52
- Index column_dfs(const Index m, const Index jcol, IndexVector& perm_r, Index maxsuper, Index& nseg, BlockIndexVector lsub_col, IndexVector& segrep, BlockIndexVector repfnz, IndexVector& xprune, IndexVector& marker, IndexVector& parent, IndexVector& xplore, GlobalLU_t& glu);
53
- Index column_bmod(const Index jcol, const Index nseg, BlockScalarVector dense, ScalarVector& tempv, BlockIndexVector segrep, BlockIndexVector repfnz, Index fpanelc, GlobalLU_t& glu);
54
- Index copy_to_ucol(const Index jcol, const Index nseg, IndexVector& segrep, BlockIndexVector repfnz ,IndexVector& perm_r, BlockScalarVector dense, GlobalLU_t& glu);
55
- void pruneL(const Index jcol, const IndexVector& perm_r, const Index pivrow, const Index nseg, const IndexVector& segrep, BlockIndexVector repfnz, IndexVector& xprune, GlobalLU_t& glu);
56
- void countnz(const Index n, Index& nnzL, Index& nnzU, GlobalLU_t& glu);
57
- void fixupL(const Index n, const IndexVector& perm_r, GlobalLU_t& glu);
58
-
59
- template<typename , typename >
60
- friend struct column_dfs_traits;
61
- };
23
+ class SparseLUImpl {
24
+ public:
25
+ typedef Matrix<Scalar, Dynamic, 1> ScalarVector;
26
+ typedef Matrix<StorageIndex, Dynamic, 1> IndexVector;
27
+ typedef Matrix<Scalar, Dynamic, Dynamic, ColMajor> ScalarMatrix;
28
+ typedef Map<ScalarMatrix, 0, OuterStride<> > MappedMatrixBlock;
29
+ typedef typename ScalarVector::RealScalar RealScalar;
30
+ typedef Ref<Matrix<Scalar, Dynamic, 1> > BlockScalarVector;
31
+ typedef Ref<Matrix<StorageIndex, Dynamic, 1> > BlockIndexVector;
32
+ typedef LU_GlobalLU_t<IndexVector, ScalarVector> GlobalLU_t;
33
+ typedef SparseMatrix<Scalar, ColMajor, StorageIndex> MatrixType;
34
+
35
+ protected:
36
+ template <typename VectorType>
37
+ Index expand(VectorType& vec, Index& length, Index nbElts, Index keep_prev, Index& num_expansions);
38
+ Index memInit(Index m, Index n, Index annz, Index lwork, Index fillratio, Index panel_size, GlobalLU_t& glu);
39
+ template <typename VectorType>
40
+ Index memXpand(VectorType& vec, Index& maxlen, Index nbElts, MemType memtype, Index& num_expansions);
41
+ void heap_relax_snode(const Index n, IndexVector& et, const Index relax_columns, IndexVector& descendants,
42
+ IndexVector& relax_end);
43
+ void relax_snode(const Index n, IndexVector& et, const Index relax_columns, IndexVector& descendants,
44
+ IndexVector& relax_end);
45
+ Index snode_dfs(const Index jcol, const Index kcol, const MatrixType& mat, IndexVector& xprune, IndexVector& marker,
46
+ GlobalLU_t& glu);
47
+ Index snode_bmod(const Index jcol, const Index fsupc, ScalarVector& dense, GlobalLU_t& glu);
48
+ Index pivotL(const Index jcol, const RealScalar& diagpivotthresh, IndexVector& perm_r, IndexVector& iperm_c,
49
+ Index& pivrow, GlobalLU_t& glu);
50
+ template <typename Traits>
51
+ void dfs_kernel(const StorageIndex jj, IndexVector& perm_r, Index& nseg, IndexVector& panel_lsub, IndexVector& segrep,
52
+ Ref<IndexVector> repfnz_col, IndexVector& xprune, Ref<IndexVector> marker, IndexVector& parent,
53
+ IndexVector& xplore, GlobalLU_t& glu, Index& nextl_col, Index krow, Traits& traits);
54
+ void panel_dfs(const Index m, const Index w, const Index jcol, MatrixType& A, IndexVector& perm_r, Index& nseg,
55
+ ScalarVector& dense, IndexVector& panel_lsub, IndexVector& segrep, IndexVector& repfnz,
56
+ IndexVector& xprune, IndexVector& marker, IndexVector& parent, IndexVector& xplore, GlobalLU_t& glu);
57
+
58
+ void panel_bmod(const Index m, const Index w, const Index jcol, const Index nseg, ScalarVector& dense,
59
+ ScalarVector& tempv, IndexVector& segrep, IndexVector& repfnz, GlobalLU_t& glu);
60
+ Index column_dfs(const Index m, const Index jcol, IndexVector& perm_r, Index maxsuper, Index& nseg,
61
+ BlockIndexVector lsub_col, IndexVector& segrep, BlockIndexVector repfnz, IndexVector& xprune,
62
+ IndexVector& marker, IndexVector& parent, IndexVector& xplore, GlobalLU_t& glu);
63
+ Index column_bmod(const Index jcol, const Index nseg, BlockScalarVector dense, ScalarVector& tempv,
64
+ BlockIndexVector segrep, BlockIndexVector repfnz, Index fpanelc, GlobalLU_t& glu);
65
+ Index copy_to_ucol(const Index jcol, const Index nseg, IndexVector& segrep, BlockIndexVector repfnz,
66
+ IndexVector& perm_r, BlockScalarVector dense, GlobalLU_t& glu);
67
+ void pruneL(const Index jcol, const IndexVector& perm_r, const Index pivrow, const Index nseg,
68
+ const IndexVector& segrep, BlockIndexVector repfnz, IndexVector& xprune, GlobalLU_t& glu);
69
+ void countnz(const Index n, Index& nnzL, Index& nnzU, GlobalLU_t& glu);
70
+ void fixupL(const Index n, const IndexVector& perm_r, GlobalLU_t& glu);
71
+
72
+ template <typename, typename>
73
+ friend struct column_dfs_traits;
74
+ };
62
75
 
63
- } // end namespace internal
64
- } // namespace Eigen
76
+ } // end namespace internal
77
+ } // namespace Eigen
65
78
 
66
79
  #endif
@@ -7,10 +7,10 @@
7
7
  // Public License v. 2.0. If a copy of the MPL was not distributed
8
8
  // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
9
 
10
- /*
11
-
12
- * NOTE: This file is the modified version of [s,d,c,z]memory.c files in SuperLU
13
-
10
+ /*
11
+
12
+ * NOTE: This file is the modified version of [s,d,c,z]memory.c files in SuperLU
13
+
14
14
  * -- SuperLU routine (version 3.1) --
15
15
  * Univ. of California Berkeley, Xerox Palo Alto Research Center,
16
16
  * and Lawrence Berkeley National Lab.
@@ -31,196 +31,180 @@
31
31
  #ifndef EIGEN_SPARSELU_MEMORY
32
32
  #define EIGEN_SPARSELU_MEMORY
33
33
 
34
+ // IWYU pragma: private
35
+ #include "./InternalHeaderCheck.h"
36
+
34
37
  namespace Eigen {
35
38
  namespace internal {
36
-
39
+
37
40
  enum { LUNoMarker = 3 };
38
- enum {emptyIdxLU = -1};
39
- inline Index LUnumTempV(Index& m, Index& w, Index& t, Index& b)
40
- {
41
- return (std::max)(m, (t+b)*w);
42
- }
41
+ enum { emptyIdxLU = -1 };
42
+ inline Index LUnumTempV(Index& m, Index& w, Index& t, Index& b) { return (std::max)(m, (t + b) * w); }
43
43
 
44
- template< typename Scalar>
45
- inline Index LUTempSpace(Index&m, Index& w)
46
- {
47
- return (2*w + 4 + LUNoMarker) * m * sizeof(Index) + (w + 1) * m * sizeof(Scalar);
44
+ template <typename Scalar>
45
+ inline Index LUTempSpace(Index& m, Index& w) {
46
+ return (2 * w + 4 + LUNoMarker) * m * sizeof(Index) + (w + 1) * m * sizeof(Scalar);
48
47
  }
49
48
 
49
+ /**
50
+ * Expand the existing storage to accommodate more fill-ins
51
+ * \param vec Valid pointer to the vector to allocate or expand
52
+ * \param[in,out] length At input, contain the current length of the vector that is to be increased. At output, length
53
+ * of the newly allocated vector \param[in] nbElts Current number of elements in the factors \param keep_prev 1: use
54
+ * length and do not expand the vector; 0: compute new_len and expand \param[in,out] num_expansions Number of times the
55
+ * memory has been expanded
56
+ */
57
+ template <typename Scalar, typename StorageIndex>
58
+ template <typename VectorType>
59
+ Index SparseLUImpl<Scalar, StorageIndex>::expand(VectorType& vec, Index& length, Index nbElts, Index keep_prev,
60
+ Index& num_expansions) {
61
+ float alpha = 1.5; // Ratio of the memory increase
62
+ Index new_len; // New size of the allocated memory
50
63
 
64
+ if (num_expansions == 0 || keep_prev)
65
+ new_len = length; // First time allocate requested
66
+ else
67
+ new_len = (std::max)(length + 1, Index(alpha * length));
51
68
 
69
+ VectorType old_vec; // Temporary vector to hold the previous values
70
+ if (nbElts > 0) old_vec = vec.segment(0, nbElts);
52
71
 
53
- /**
54
- * Expand the existing storage to accomodate more fill-ins
55
- * \param vec Valid pointer to the vector to allocate or expand
56
- * \param[in,out] length At input, contain the current length of the vector that is to be increased. At output, length of the newly allocated vector
57
- * \param[in] nbElts Current number of elements in the factors
58
- * \param keep_prev 1: use length and do not expand the vector; 0: compute new_len and expand
59
- * \param[in,out] num_expansions Number of times the memory has been expanded
60
- */
61
- template <typename Scalar, typename StorageIndex>
62
- template <typename VectorType>
63
- Index SparseLUImpl<Scalar,StorageIndex>::expand(VectorType& vec, Index& length, Index nbElts, Index keep_prev, Index& num_expansions)
64
- {
65
-
66
- float alpha = 1.5; // Ratio of the memory increase
67
- Index new_len; // New size of the allocated memory
68
-
69
- if(num_expansions == 0 || keep_prev)
70
- new_len = length ; // First time allocate requested
71
- else
72
- new_len = (std::max)(length+1,Index(alpha * length));
73
-
74
- VectorType old_vec; // Temporary vector to hold the previous values
75
- if (nbElts > 0 )
76
- old_vec = vec.segment(0,nbElts);
77
-
78
- //Allocate or expand the current vector
72
+ // Allocate or expand the current vector
79
73
  #ifdef EIGEN_EXCEPTIONS
80
74
  try
81
75
  #endif
82
76
  {
83
- vec.resize(new_len);
77
+ vec.resize(new_len);
84
78
  }
85
79
  #ifdef EIGEN_EXCEPTIONS
86
- catch(std::bad_alloc& )
80
+ catch (std::bad_alloc&)
87
81
  #else
88
- if(!vec.size())
82
+ if (!vec.size())
89
83
  #endif
90
84
  {
91
- if (!num_expansions)
92
- {
85
+ if (!num_expansions) {
93
86
  // First time to allocate from LUMemInit()
94
87
  // Let LUMemInit() deals with it.
95
88
  return -1;
96
89
  }
97
- if (keep_prev)
98
- {
90
+ if (keep_prev) {
99
91
  // In this case, the memory length should not not be reduced
100
92
  return new_len;
101
- }
102
- else
103
- {
104
- // Reduce the size and increase again
105
- Index tries = 0; // Number of attempts
106
- do
107
- {
108
- alpha = (alpha + 1)/2;
109
- new_len = (std::max)(length+1,Index(alpha * length));
93
+ } else {
94
+ // Reduce the size and increase again
95
+ Index tries = 0; // Number of attempts
96
+ do {
97
+ alpha = (alpha + 1) / 2;
98
+ new_len = (std::max)(length + 1, Index(alpha * length));
110
99
  #ifdef EIGEN_EXCEPTIONS
111
100
  try
112
101
  #endif
113
102
  {
114
- vec.resize(new_len);
103
+ vec.resize(new_len);
115
104
  }
116
105
  #ifdef EIGEN_EXCEPTIONS
117
- catch(std::bad_alloc& )
106
+ catch (std::bad_alloc&)
118
107
  #else
119
108
  if (!vec.size())
120
109
  #endif
121
110
  {
122
- tries += 1;
123
- if ( tries > 10) return new_len;
111
+ tries += 1;
112
+ if (tries > 10) return new_len;
124
113
  }
125
114
  } while (!vec.size());
126
115
  }
127
116
  }
128
- //Copy the previous values to the newly allocated space
129
- if (nbElts > 0)
130
- vec.segment(0, nbElts) = old_vec;
131
-
132
-
133
- length = new_len;
134
- if(num_expansions) ++num_expansions;
135
- return 0;
117
+ // Copy the previous values to the newly allocated space
118
+ if (nbElts > 0) vec.segment(0, nbElts) = old_vec;
119
+
120
+ length = new_len;
121
+ if (num_expansions) ++num_expansions;
122
+ return 0;
136
123
  }
137
124
 
138
125
  /**
139
126
  * \brief Allocate various working space for the numerical factorization phase.
140
- * \param m number of rows of the input matrix
141
- * \param n number of columns
142
- * \param annz number of initial nonzeros in the matrix
127
+ * \param m number of rows of the input matrix
128
+ * \param n number of columns
129
+ * \param annz number of initial nonzeros in the matrix
143
130
  * \param lwork if lwork=-1, this routine returns an estimated size of the required memory
144
131
  * \param glu persistent data to facilitate multiple factors : will be deleted later ??
145
132
  * \param fillratio estimated ratio of fill in the factors
146
133
  * \param panel_size Size of a panel
147
- * \return an estimated size of the required memory if lwork = -1; otherwise, return the size of actually allocated memory when allocation failed, and 0 on success
148
- * \note Unlike SuperLU, this routine does not support successive factorization with the same pattern and the same row permutation
134
+ * \return an estimated size of the required memory if lwork = -1; otherwise, return the size of actually allocated
135
+ * memory when allocation failed, and 0 on success \note Unlike SuperLU, this routine does not support successive
136
+ * factorization with the same pattern and the same row permutation
149
137
  */
150
138
  template <typename Scalar, typename StorageIndex>
151
- Index SparseLUImpl<Scalar,StorageIndex>::memInit(Index m, Index n, Index annz, Index lwork, Index fillratio, Index panel_size, GlobalLU_t& glu)
152
- {
153
- Index& num_expansions = glu.num_expansions; //No memory expansions so far
139
+ Index SparseLUImpl<Scalar, StorageIndex>::memInit(Index m, Index n, Index annz, Index lwork, Index fillratio,
140
+ Index panel_size, GlobalLU_t& glu) {
141
+ Index& num_expansions = glu.num_expansions; // No memory expansions so far
154
142
  num_expansions = 0;
155
- glu.nzumax = glu.nzlumax = (std::min)(fillratio * (annz+1) / n, m) * n; // estimated number of nonzeros in U
156
- glu.nzlmax = (std::max)(Index(4), fillratio) * (annz+1) / 4; // estimated nnz in L factor
143
+ glu.nzumax = glu.nzlumax = (std::min)(fillratio * (annz + 1) / n, m) * n; // estimated number of nonzeros in U
144
+ glu.nzlmax = (std::max)(Index(4), fillratio) * (annz + 1) / 4; // estimated nnz in L factor
157
145
  // Return the estimated size to the user if necessary
158
146
  Index tempSpace;
159
- tempSpace = (2*panel_size + 4 + LUNoMarker) * m * sizeof(Index) + (panel_size + 1) * m * sizeof(Scalar);
160
- if (lwork == emptyIdxLU)
161
- {
147
+ tempSpace = (2 * panel_size + 4 + LUNoMarker) * m * sizeof(Index) + (panel_size + 1) * m * sizeof(Scalar);
148
+ if (lwork == emptyIdxLU) {
162
149
  Index estimated_size;
163
- estimated_size = (5 * n + 5) * sizeof(Index) + tempSpace
164
- + (glu.nzlmax + glu.nzumax) * sizeof(Index) + (glu.nzlumax+glu.nzumax) * sizeof(Scalar) + n;
150
+ estimated_size = (5 * n + 5) * sizeof(Index) + tempSpace + (glu.nzlmax + glu.nzumax) * sizeof(Index) +
151
+ (glu.nzlumax + glu.nzumax) * sizeof(Scalar) + n;
165
152
  return estimated_size;
166
153
  }
167
-
168
- // Setup the required space
169
-
154
+
155
+ // Setup the required space
156
+
170
157
  // First allocate Integer pointers for L\U factors
171
- glu.xsup.resize(n+1);
172
- glu.supno.resize(n+1);
173
- glu.xlsub.resize(n+1);
174
- glu.xlusup.resize(n+1);
175
- glu.xusub.resize(n+1);
158
+ glu.xsup.resize(n + 1);
159
+ glu.supno.resize(n + 1);
160
+ glu.xlsub.resize(n + 1);
161
+ glu.xlusup.resize(n + 1);
162
+ glu.xusub.resize(n + 1);
176
163
 
177
164
  // Reserve memory for L/U factors
178
- do
179
- {
180
- if( (expand<ScalarVector>(glu.lusup, glu.nzlumax, 0, 0, num_expansions)<0)
181
- || (expand<ScalarVector>(glu.ucol, glu.nzumax, 0, 0, num_expansions)<0)
182
- || (expand<IndexVector> (glu.lsub, glu.nzlmax, 0, 0, num_expansions)<0)
183
- || (expand<IndexVector> (glu.usub, glu.nzumax, 0, 1, num_expansions)<0) )
184
- {
185
- //Reduce the estimated size and retry
165
+ do {
166
+ if ((expand<ScalarVector>(glu.lusup, glu.nzlumax, 0, 0, num_expansions) < 0) ||
167
+ (expand<ScalarVector>(glu.ucol, glu.nzumax, 0, 0, num_expansions) < 0) ||
168
+ (expand<IndexVector>(glu.lsub, glu.nzlmax, 0, 0, num_expansions) < 0) ||
169
+ (expand<IndexVector>(glu.usub, glu.nzumax, 0, 1, num_expansions) < 0)) {
170
+ // Reduce the estimated size and retry
186
171
  glu.nzlumax /= 2;
187
172
  glu.nzumax /= 2;
188
173
  glu.nzlmax /= 2;
189
- if (glu.nzlumax < annz ) return glu.nzlumax;
174
+ if (glu.nzlumax < annz) return glu.nzlumax;
190
175
  }
191
176
  } while (!glu.lusup.size() || !glu.ucol.size() || !glu.lsub.size() || !glu.usub.size());
192
-
177
+
193
178
  ++num_expansions;
194
179
  return 0;
195
-
196
- } // end LuMemInit
197
180
 
198
- /**
199
- * \brief Expand the existing storage
200
- * \param vec vector to expand
181
+ } // end LuMemInit
182
+
183
+ /**
184
+ * \brief Expand the existing storage
185
+ * \param vec vector to expand
201
186
  * \param[in,out] maxlen On input, previous size of vec (Number of elements to copy ). on output, new size
202
187
  * \param nbElts current number of elements in the vector.
203
188
  * \param memtype Type of the element to expand
204
- * \param num_expansions Number of expansions
189
+ * \param num_expansions Number of expansions
205
190
  * \return 0 on success, > 0 size of the memory allocated so far
206
191
  */
207
192
  template <typename Scalar, typename StorageIndex>
208
193
  template <typename VectorType>
209
- Index SparseLUImpl<Scalar,StorageIndex>::memXpand(VectorType& vec, Index& maxlen, Index nbElts, MemType memtype, Index& num_expansions)
210
- {
211
- Index failed_size;
194
+ Index SparseLUImpl<Scalar, StorageIndex>::memXpand(VectorType& vec, Index& maxlen, Index nbElts, MemType memtype,
195
+ Index& num_expansions) {
196
+ Index failed_size;
212
197
  if (memtype == USUB)
213
- failed_size = this->expand<VectorType>(vec, maxlen, nbElts, 1, num_expansions);
198
+ failed_size = this->expand<VectorType>(vec, maxlen, nbElts, 1, num_expansions);
214
199
  else
215
200
  failed_size = this->expand<VectorType>(vec, maxlen, nbElts, 0, num_expansions);
216
201
 
217
- if (failed_size)
218
- return failed_size;
219
-
220
- return 0 ;
202
+ if (failed_size) return failed_size;
203
+
204
+ return 0;
221
205
  }
222
206
 
223
- } // end namespace internal
207
+ } // end namespace internal
224
208
 
225
- } // end namespace Eigen
226
- #endif // EIGEN_SPARSELU_MEMORY
209
+ } // end namespace Eigen
210
+ #endif // EIGEN_SPARSELU_MEMORY
@@ -7,26 +7,26 @@
7
7
  // Public License v. 2.0. If a copy of the MPL was not distributed
8
8
  // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
9
 
10
- /*
10
+ /*
11
11
  * NOTE: This file comes from a partly modified version of files slu_[s,d,c,z]defs.h
12
12
  * -- SuperLU routine (version 4.1) --
13
13
  * Univ. of California Berkeley, Xerox Palo Alto Research Center,
14
14
  * and Lawrence Berkeley National Lab.
15
15
  * November, 2010
16
- *
16
+ *
17
17
  * Global data structures used in LU factorization -
18
- *
18
+ *
19
19
  * nsuper: #supernodes = nsuper + 1, numbered [0, nsuper].
20
20
  * (xsup,supno): supno[i] is the supernode no to which i belongs;
21
21
  * xsup(s) points to the beginning of the s-th supernode.
22
22
  * e.g. supno 0 1 2 2 3 3 3 4 4 4 4 4 (n=12)
23
23
  * xsup 0 1 2 4 7 12
24
- * Note: dfs will be performed on supernode rep. relative to the new
24
+ * Note: dfs will be performed on supernode rep. relative to the new
25
25
  * row pivoting ordering
26
26
  *
27
27
  * (xlsub,lsub): lsub[*] contains the compressed subscript of
28
28
  * rectangular supernodes; xlsub[j] points to the starting
29
- * location of the j-th column in lsub[*]. Note that xlsub
29
+ * location of the j-th column in lsub[*]. Note that xlsub
30
30
  * is indexed by column.
31
31
  * Storage: original row subscripts
32
32
  *
@@ -50,7 +50,7 @@
50
50
  * values.
51
51
  *
52
52
  * The last column structures (for pruning) will be removed
53
- * after the numercial LU factorization phase.
53
+ * after the numerical LU factorization phase.
54
54
  *
55
55
  * (xlusup,lusup): lusup[*] contains the numerical values of the
56
56
  * rectangular supernodes; xlusup[j] points to the starting
@@ -68,43 +68,46 @@
68
68
 
69
69
  #ifndef EIGEN_LU_STRUCTS
70
70
  #define EIGEN_LU_STRUCTS
71
+ // IWYU pragma: private
72
+ #include "./InternalHeaderCheck.h"
73
+
71
74
  namespace Eigen {
72
75
  namespace internal {
73
-
74
- typedef enum {LUSUP, UCOL, LSUB, USUB, LLVL, ULVL} MemType;
76
+
77
+ enum MemType { LUSUP, UCOL, LSUB, USUB, LLVL, ULVL };
75
78
 
76
79
  template <typename IndexVector, typename ScalarVector>
77
80
  struct LU_GlobalLU_t {
78
- typedef typename IndexVector::Scalar StorageIndex;
79
- IndexVector xsup; //First supernode column ... xsup(s) points to the beginning of the s-th supernode
80
- IndexVector supno; // Supernode number corresponding to this column (column to supernode mapping)
81
- ScalarVector lusup; // nonzero values of L ordered by columns
82
- IndexVector lsub; // Compressed row indices of L rectangular supernodes.
83
- IndexVector xlusup; // pointers to the beginning of each column in lusup
84
- IndexVector xlsub; // pointers to the beginning of each column in lsub
85
- Index nzlmax; // Current max size of lsub
86
- Index nzlumax; // Current max size of lusup
87
- ScalarVector ucol; // nonzero values of U ordered by columns
88
- IndexVector usub; // row indices of U columns in ucol
89
- IndexVector xusub; // Pointers to the beginning of each column of U in ucol
90
- Index nzumax; // Current max size of ucol
91
- Index n; // Number of columns in the matrix
92
- Index num_expansions;
81
+ typedef typename IndexVector::Scalar StorageIndex;
82
+ IndexVector xsup; // First supernode column ... xsup(s) points to the beginning of the s-th supernode
83
+ IndexVector supno; // Supernode number corresponding to this column (column to supernode mapping)
84
+ ScalarVector lusup; // nonzero values of L ordered by columns
85
+ IndexVector lsub; // Compressed row indices of L rectangular supernodes.
86
+ IndexVector xlusup; // pointers to the beginning of each column in lusup
87
+ IndexVector xlsub; // pointers to the beginning of each column in lsub
88
+ Index nzlmax; // Current max size of lsub
89
+ Index nzlumax; // Current max size of lusup
90
+ ScalarVector ucol; // nonzero values of U ordered by columns
91
+ IndexVector usub; // row indices of U columns in ucol
92
+ IndexVector xusub; // Pointers to the beginning of each column of U in ucol
93
+ Index nzumax; // Current max size of ucol
94
+ Index n; // Number of columns in the matrix
95
+ Index num_expansions;
93
96
  };
94
97
 
95
98
  // Values to set for performance
96
99
  struct perfvalues {
97
- Index panel_size; // a panel consists of at most <panel_size> consecutive columns
98
- Index relax; // To control degree of relaxing supernodes. If the number of nodes (columns)
99
- // in a subtree of the elimination tree is less than relax, this subtree is considered
100
- // as one supernode regardless of the row structures of those columns
101
- Index maxsuper; // The maximum size for a supernode in complete LU
102
- Index rowblk; // The minimum row dimension for 2-D blocking to be used;
103
- Index colblk; // The minimum column dimension for 2-D blocking to be used;
104
- Index fillfactor; // The estimated fills factors for L and U, compared with A
105
- };
100
+ Index panel_size; // a panel consists of at most <panel_size> consecutive columns
101
+ Index relax; // To control degree of relaxing supernodes. If the number of nodes (columns)
102
+ // in a subtree of the elimination tree is less than relax, this subtree is considered
103
+ // as one supernode regardless of the row structures of those columns
104
+ Index maxsuper; // The maximum size for a supernode in complete LU
105
+ Index rowblk; // The minimum row dimension for 2-D blocking to be used;
106
+ Index colblk; // The minimum column dimension for 2-D blocking to be used;
107
+ Index fillfactor; // The estimated fills factors for L and U, compared with A
108
+ };
106
109
 
107
- } // end namespace internal
110
+ } // end namespace internal
108
111
 
109
- } // end namespace Eigen
110
- #endif // EIGEN_LU_STRUCTS
112
+ } // end namespace Eigen
113
+ #endif // EIGEN_LU_STRUCTS