@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
@@ -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 accommodate 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