@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
@@ -7,10 +7,12 @@
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
10
  #ifndef EIGEN_SPARSELU_UTILS_H
12
11
  #define EIGEN_SPARSELU_UTILS_H
13
12
 
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
14
16
  namespace Eigen {
15
17
  namespace internal {
16
18
 
@@ -18,63 +20,56 @@ namespace internal {
18
20
  * \brief Count Nonzero elements in the factors
19
21
  */
20
22
  template <typename Scalar, typename StorageIndex>
21
- void SparseLUImpl<Scalar,StorageIndex>::countnz(const Index n, Index& nnzL, Index& nnzU, GlobalLU_t& glu)
22
- {
23
- nnzL = 0;
24
- nnzU = (glu.xusub)(n);
25
- Index nsuper = (glu.supno)(n);
26
- Index jlen;
27
- Index i, j, fsupc;
28
- if (n <= 0 ) return;
29
- // For each supernode
30
- for (i = 0; i <= nsuper; i++)
31
- {
32
- fsupc = glu.xsup(i);
33
- jlen = glu.xlsub(fsupc+1) - glu.xlsub(fsupc);
34
-
35
- for (j = fsupc; j < glu.xsup(i+1); j++)
36
- {
37
- nnzL += jlen;
38
- nnzU += j - fsupc + 1;
39
- jlen--;
40
- }
41
- }
23
+ void SparseLUImpl<Scalar, StorageIndex>::countnz(const Index n, Index& nnzL, Index& nnzU, GlobalLU_t& glu) {
24
+ nnzL = 0;
25
+ nnzU = (glu.xusub)(n);
26
+ Index nsuper = (glu.supno)(n);
27
+ Index jlen;
28
+ Index i, j, fsupc;
29
+ if (n <= 0) return;
30
+ // For each supernode
31
+ for (i = 0; i <= nsuper; i++) {
32
+ fsupc = glu.xsup(i);
33
+ jlen = glu.xlsub(fsupc + 1) - glu.xlsub(fsupc);
34
+
35
+ for (j = fsupc; j < glu.xsup(i + 1); j++) {
36
+ nnzL += jlen;
37
+ nnzU += j - fsupc + 1;
38
+ jlen--;
39
+ }
40
+ }
42
41
  }
43
42
 
44
43
  /**
45
- * \brief Fix up the data storage lsub for L-subscripts.
46
- *
47
- * It removes the subscripts sets for structural pruning,
44
+ * \brief Fix up the data storage lsub for L-subscripts.
45
+ *
46
+ * It removes the subscripts sets for structural pruning,
48
47
  * and applies permutation to the remaining subscripts
49
- *
48
+ *
50
49
  */
51
50
  template <typename Scalar, typename StorageIndex>
52
- void SparseLUImpl<Scalar,StorageIndex>::fixupL(const Index n, const IndexVector& perm_r, GlobalLU_t& glu)
53
- {
54
- Index fsupc, i, j, k, jstart;
55
-
56
- StorageIndex nextl = 0;
57
- Index nsuper = (glu.supno)(n);
58
-
59
- // For each supernode
60
- for (i = 0; i <= nsuper; i++)
61
- {
62
- fsupc = glu.xsup(i);
63
- jstart = glu.xlsub(fsupc);
64
- glu.xlsub(fsupc) = nextl;
65
- for (j = jstart; j < glu.xlsub(fsupc + 1); j++)
66
- {
67
- glu.lsub(nextl) = perm_r(glu.lsub(j)); // Now indexed into P*A
51
+ void SparseLUImpl<Scalar, StorageIndex>::fixupL(const Index n, const IndexVector& perm_r, GlobalLU_t& glu) {
52
+ Index fsupc, i, j, k, jstart;
53
+
54
+ StorageIndex nextl = 0;
55
+ Index nsuper = (glu.supno)(n);
56
+
57
+ // For each supernode
58
+ for (i = 0; i <= nsuper; i++) {
59
+ fsupc = glu.xsup(i);
60
+ jstart = glu.xlsub(fsupc);
61
+ glu.xlsub(fsupc) = nextl;
62
+ for (j = jstart; j < glu.xlsub(fsupc + 1); j++) {
63
+ glu.lsub(nextl) = perm_r(glu.lsub(j)); // Now indexed into P*A
68
64
  nextl++;
69
65
  }
70
- for (k = fsupc+1; k < glu.xsup(i+1); k++)
71
- glu.xlsub(k) = nextl; // other columns in supernode i
66
+ for (k = fsupc + 1; k < glu.xsup(i + 1); k++) glu.xlsub(k) = nextl; // other columns in supernode i
72
67
  }
73
-
74
- glu.xlsub(n) = nextl;
68
+
69
+ glu.xlsub(n) = nextl;
75
70
  }
76
71
 
77
- } // end namespace internal
72
+ } // end namespace internal
78
73
 
79
- } // end namespace Eigen
80
- #endif // EIGEN_SPARSELU_UTILS_H
74
+ } // end namespace Eigen
75
+ #endif // EIGEN_SPARSELU_UTILS_H
@@ -8,10 +8,10 @@
8
8
  // Public License v. 2.0. If a copy of the MPL was not distributed
9
9
  // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
10
10
 
11
- /*
12
-
13
- * NOTE: This file is the modified version of xcolumn_bmod.c file in SuperLU
14
-
11
+ /*
12
+
13
+ * NOTE: This file is the modified version of xcolumn_bmod.c file in SuperLU
14
+
15
15
  * -- SuperLU routine (version 3.0) --
16
16
  * Univ. of California Berkeley, Xerox Palo Alto Research Center,
17
17
  * and Lawrence Berkeley National Lab.
@@ -31,151 +31,147 @@
31
31
  #ifndef SPARSELU_COLUMN_BMOD_H
32
32
  #define SPARSELU_COLUMN_BMOD_H
33
33
 
34
+ // IWYU pragma: private
35
+ #include "./InternalHeaderCheck.h"
36
+
34
37
  namespace Eigen {
35
38
 
36
39
  namespace internal {
37
40
  /**
38
41
  * \brief Performs numeric block updates (sup-col) in topological order
39
- *
42
+ *
40
43
  * \param jcol current column to update
41
44
  * \param nseg Number of segments in the U part
42
45
  * \param dense Store the full representation of the column
43
- * \param tempv working array
46
+ * \param tempv working array
44
47
  * \param segrep segment representative ...
45
48
  * \param repfnz ??? First nonzero column in each row ??? ...
46
49
  * \param fpanelc First column in the current panel
47
- * \param glu Global LU data.
48
- * \return 0 - successful return
50
+ * \param glu Global LU data.
51
+ * \return 0 - successful return
49
52
  * > 0 - number of bytes allocated when run out of space
50
- *
53
+ *
51
54
  */
52
55
  template <typename Scalar, typename StorageIndex>
53
- Index SparseLUImpl<Scalar,StorageIndex>::column_bmod(const Index jcol, const Index nseg, BlockScalarVector dense, ScalarVector& tempv,
54
- BlockIndexVector segrep, BlockIndexVector repfnz, Index fpanelc, GlobalLU_t& glu)
55
- {
56
- Index jsupno, k, ksub, krep, ksupno;
57
- Index lptr, nrow, isub, irow, nextlu, new_next, ufirst;
58
- Index fsupc, nsupc, nsupr, luptr, kfnz, no_zeros;
56
+ Index SparseLUImpl<Scalar, StorageIndex>::column_bmod(const Index jcol, const Index nseg, BlockScalarVector dense,
57
+ ScalarVector& tempv, BlockIndexVector segrep,
58
+ BlockIndexVector repfnz, Index fpanelc, GlobalLU_t& glu) {
59
+ Index jsupno, k, ksub, krep, ksupno;
60
+ Index lptr, nrow, isub, irow, nextlu, new_next, ufirst;
61
+ Index fsupc, nsupc, nsupr, luptr, kfnz, no_zeros;
59
62
  /* krep = representative of current k-th supernode
60
- * fsupc = first supernodal column
61
- * nsupc = number of columns in a supernode
62
- * nsupr = number of rows in a supernode
63
- * luptr = location of supernodal LU-block in storage
64
- * kfnz = first nonz in the k-th supernodal segment
65
- * no_zeros = no lf leading zeros in a supernodal U-segment
66
- */
67
-
63
+ * fsupc = first supernodal column
64
+ * nsupc = number of columns in a supernode
65
+ * nsupr = number of rows in a supernode
66
+ * luptr = location of supernodal LU-block in storage
67
+ * kfnz = first nonz in the k-th supernodal segment
68
+ * no_zeros = no lf leading zeros in a supernodal U-segment
69
+ */
70
+
68
71
  jsupno = glu.supno(jcol);
69
- // For each nonzero supernode segment of U[*,j] in topological order
70
- k = nseg - 1;
71
- Index d_fsupc; // distance between the first column of the current panel and the
72
- // first column of the current snode
73
- Index fst_col; // First column within small LU update
74
- Index segsize;
75
- for (ksub = 0; ksub < nseg; ksub++)
76
- {
77
- krep = segrep(k); k--;
78
- ksupno = glu.supno(krep);
79
- if (jsupno != ksupno )
80
- {
81
- // outside the rectangular supernode
82
- fsupc = glu.xsup(ksupno);
83
- fst_col = (std::max)(fsupc, fpanelc);
84
-
85
- // Distance from the current supernode to the current panel;
72
+ // For each nonzero supernode segment of U[*,j] in topological order
73
+ k = nseg - 1;
74
+ Index d_fsupc; // distance between the first column of the current panel and the
75
+ // first column of the current snode
76
+ Index fst_col; // First column within small LU update
77
+ Index segsize;
78
+ for (ksub = 0; ksub < nseg; ksub++) {
79
+ krep = segrep(k);
80
+ k--;
81
+ ksupno = glu.supno(krep);
82
+ if (jsupno != ksupno) {
83
+ // outside the rectangular supernode
84
+ fsupc = glu.xsup(ksupno);
85
+ fst_col = (std::max)(fsupc, fpanelc);
86
+
87
+ // Distance from the current supernode to the current panel;
86
88
  // d_fsupc = 0 if fsupc > fpanelc
87
- d_fsupc = fst_col - fsupc;
88
-
89
- luptr = glu.xlusup(fst_col) + d_fsupc;
90
- lptr = glu.xlsub(fsupc) + d_fsupc;
91
-
92
- kfnz = repfnz(krep);
93
- kfnz = (std::max)(kfnz, fpanelc);
94
-
95
- segsize = krep - kfnz + 1;
96
- nsupc = krep - fst_col + 1;
97
- nsupr = glu.xlsub(fsupc+1) - glu.xlsub(fsupc);
89
+ d_fsupc = fst_col - fsupc;
90
+
91
+ luptr = glu.xlusup(fst_col) + d_fsupc;
92
+ lptr = glu.xlsub(fsupc) + d_fsupc;
93
+
94
+ kfnz = repfnz(krep);
95
+ kfnz = (std::max)(kfnz, fpanelc);
96
+
97
+ segsize = krep - kfnz + 1;
98
+ nsupc = krep - fst_col + 1;
99
+ nsupr = glu.xlsub(fsupc + 1) - glu.xlsub(fsupc);
98
100
  nrow = nsupr - d_fsupc - nsupc;
99
- Index lda = glu.xlusup(fst_col+1) - glu.xlusup(fst_col);
100
-
101
-
102
- // Perform a triangular solver and block update,
101
+ Index lda = glu.xlusup(fst_col + 1) - glu.xlusup(fst_col);
102
+
103
+ // Perform a triangular solver and block update,
103
104
  // then scatter the result of sup-col update to dense
104
- no_zeros = kfnz - fst_col;
105
- if(segsize==1)
105
+ no_zeros = kfnz - fst_col;
106
+ if (segsize == 1)
106
107
  LU_kernel_bmod<1>::run(segsize, dense, tempv, glu.lusup, luptr, lda, nrow, glu.lsub, lptr, no_zeros);
107
108
  else
108
109
  LU_kernel_bmod<Dynamic>::run(segsize, dense, tempv, glu.lusup, luptr, lda, nrow, glu.lsub, lptr, no_zeros);
109
- } // end if jsupno
110
- } // end for each segment
111
-
110
+ } // end if jsupno
111
+ } // end for each segment
112
+
112
113
  // Process the supernodal portion of L\U[*,j]
113
- nextlu = glu.xlusup(jcol);
114
+ nextlu = glu.xlusup(jcol);
114
115
  fsupc = glu.xsup(jsupno);
115
-
116
+
116
117
  // copy the SPA dense into L\U[*,j]
117
- Index mem;
118
- new_next = nextlu + glu.xlsub(fsupc + 1) - glu.xlsub(fsupc);
118
+ Index mem;
119
+ new_next = nextlu + glu.xlsub(fsupc + 1) - glu.xlsub(fsupc);
119
120
  Index offset = internal::first_multiple<Index>(new_next, internal::packet_traits<Scalar>::size) - new_next;
120
- if(offset)
121
- new_next += offset;
122
- while (new_next > glu.nzlumax )
123
- {
124
- mem = memXpand<ScalarVector>(glu.lusup, glu.nzlumax, nextlu, LUSUP, glu.num_expansions);
125
- if (mem) return mem;
121
+ if (offset) new_next += offset;
122
+ while (new_next > glu.nzlumax) {
123
+ mem = memXpand<ScalarVector>(glu.lusup, glu.nzlumax, nextlu, LUSUP, glu.num_expansions);
124
+ if (mem) return mem;
126
125
  }
127
-
128
- for (isub = glu.xlsub(fsupc); isub < glu.xlsub(fsupc+1); isub++)
129
- {
126
+
127
+ for (isub = glu.xlsub(fsupc); isub < glu.xlsub(fsupc + 1); isub++) {
130
128
  irow = glu.lsub(isub);
131
129
  glu.lusup(nextlu) = dense(irow);
132
- dense(irow) = Scalar(0.0);
133
- ++nextlu;
130
+ dense(irow) = Scalar(0.0);
131
+ ++nextlu;
134
132
  }
135
-
136
- if(offset)
137
- {
138
- glu.lusup.segment(nextlu,offset).setZero();
133
+
134
+ if (offset) {
135
+ glu.lusup.segment(nextlu, offset).setZero();
139
136
  nextlu += offset;
140
137
  }
141
- glu.xlusup(jcol + 1) = StorageIndex(nextlu); // close L\U(*,jcol);
142
-
138
+ glu.xlusup(jcol + 1) = StorageIndex(nextlu); // close L\U(*,jcol);
139
+
143
140
  /* For more updates within the panel (also within the current supernode),
144
141
  * should start from the first column of the panel, or the first column
145
142
  * of the supernode, whichever is bigger. There are two cases:
146
143
  * 1) fsupc < fpanelc, then fst_col <-- fpanelc
147
144
  * 2) fsupc >= fpanelc, then fst_col <-- fsupc
148
145
  */
149
- fst_col = (std::max)(fsupc, fpanelc);
150
-
151
- if (fst_col < jcol)
152
- {
146
+ fst_col = (std::max)(fsupc, fpanelc);
147
+
148
+ if (fst_col < jcol) {
153
149
  // Distance between the current supernode and the current panel
154
150
  // d_fsupc = 0 if fsupc >= fpanelc
155
- d_fsupc = fst_col - fsupc;
156
-
157
- lptr = glu.xlsub(fsupc) + d_fsupc;
158
- luptr = glu.xlusup(fst_col) + d_fsupc;
159
- nsupr = glu.xlsub(fsupc+1) - glu.xlsub(fsupc); // leading dimension
160
- nsupc = jcol - fst_col; // excluding jcol
161
- nrow = nsupr - d_fsupc - nsupc;
162
-
163
- // points to the beginning of jcol in snode L\U(jsupno)
164
- ufirst = glu.xlusup(jcol) + d_fsupc;
165
- Index lda = glu.xlusup(jcol+1) - glu.xlusup(jcol);
166
- MappedMatrixBlock A( &(glu.lusup.data()[luptr]), nsupc, nsupc, OuterStride<>(lda) );
167
- VectorBlock<ScalarVector> u(glu.lusup, ufirst, nsupc);
168
- u = A.template triangularView<UnitLower>().solve(u);
169
-
170
- new (&A) MappedMatrixBlock ( &(glu.lusup.data()[luptr+nsupc]), nrow, nsupc, OuterStride<>(lda) );
171
- VectorBlock<ScalarVector> l(glu.lusup, ufirst+nsupc, nrow);
151
+ d_fsupc = fst_col - fsupc;
152
+
153
+ lptr = glu.xlsub(fsupc) + d_fsupc;
154
+ luptr = glu.xlusup(fst_col) + d_fsupc;
155
+ nsupr = glu.xlsub(fsupc + 1) - glu.xlsub(fsupc); // leading dimension
156
+ nsupc = jcol - fst_col; // excluding jcol
157
+ nrow = nsupr - d_fsupc - nsupc;
158
+
159
+ // points to the beginning of jcol in snode L\U(jsupno)
160
+ ufirst = glu.xlusup(jcol) + d_fsupc;
161
+ Index lda = glu.xlusup(jcol + 1) - glu.xlusup(jcol);
162
+ MappedMatrixBlock A(&(glu.lusup.data()[luptr]), nsupc, nsupc, OuterStride<>(lda));
163
+ VectorBlock<ScalarVector> u(glu.lusup, ufirst, nsupc);
164
+ u = A.template triangularView<UnitLower>().solve(u);
165
+
166
+ new (&A) MappedMatrixBlock(&(glu.lusup.data()[luptr + nsupc]), nrow, nsupc, OuterStride<>(lda));
167
+ VectorBlock<ScalarVector> l(glu.lusup, ufirst + nsupc, nrow);
172
168
  l.noalias() -= A * u;
173
-
174
- } // End if fst_col
175
- return 0;
169
+
170
+ } // End if fst_col
171
+ return 0;
176
172
  }
177
173
 
178
- } // end namespace internal
179
- } // end namespace Eigen
174
+ } // end namespace internal
175
+ } // end namespace Eigen
180
176
 
181
- #endif // SPARSELU_COLUMN_BMOD_H
177
+ #endif // SPARSELU_COLUMN_BMOD_H
@@ -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]column_dfs.c file in SuperLU
13
-
10
+ /*
11
+
12
+ * NOTE: This file is the modified version of [s,d,c,z]column_dfs.c file in SuperLU
13
+
14
14
  * -- SuperLU routine (version 2.0) --
15
15
  * Univ. of California Berkeley, Xerox Palo Alto Research Center,
16
16
  * and Lawrence Berkeley National Lab.
@@ -30,150 +30,139 @@
30
30
  #ifndef SPARSELU_COLUMN_DFS_H
31
31
  #define SPARSELU_COLUMN_DFS_H
32
32
 
33
- template <typename Scalar, typename StorageIndex> class SparseLUImpl;
34
- namespace Eigen {
33
+ // IWYU pragma: private
34
+ #include "./InternalHeaderCheck.h"
35
35
 
36
+ namespace Eigen {
36
37
  namespace internal {
37
38
 
38
- template<typename IndexVector, typename ScalarVector>
39
- struct column_dfs_traits : no_assignment_operator
40
- {
39
+ template <typename Scalar, typename StorageIndex>
40
+ class SparseLUImpl;
41
+
42
+ template <typename IndexVector, typename ScalarVector>
43
+ struct column_dfs_traits : no_assignment_operator {
41
44
  typedef typename ScalarVector::Scalar Scalar;
42
45
  typedef typename IndexVector::Scalar StorageIndex;
43
- column_dfs_traits(Index jcol, Index& jsuper, typename SparseLUImpl<Scalar, StorageIndex>::GlobalLU_t& glu, SparseLUImpl<Scalar, StorageIndex>& luImpl)
44
- : m_jcol(jcol), m_jsuper_ref(jsuper), m_glu(glu), m_luImpl(luImpl)
45
- {}
46
- bool update_segrep(Index /*krep*/, Index /*jj*/)
47
- {
48
- return true;
49
- }
50
- void mem_expand(IndexVector& lsub, Index& nextl, Index chmark)
51
- {
52
- if (nextl >= m_glu.nzlmax)
53
- m_luImpl.memXpand(lsub, m_glu.nzlmax, nextl, LSUB, m_glu.num_expansions);
54
- if (chmark != (m_jcol-1)) m_jsuper_ref = emptyIdxLU;
46
+ column_dfs_traits(Index jcol, Index& jsuper, typename SparseLUImpl<Scalar, StorageIndex>::GlobalLU_t& glu,
47
+ SparseLUImpl<Scalar, StorageIndex>& luImpl)
48
+ : m_jcol(jcol), m_jsuper_ref(jsuper), m_glu(glu), m_luImpl(luImpl) {}
49
+ bool update_segrep(Index /*krep*/, Index /*jj*/) { return true; }
50
+ void mem_expand(IndexVector& lsub, Index& nextl, Index chmark) {
51
+ if (nextl >= m_glu.nzlmax) m_luImpl.memXpand(lsub, m_glu.nzlmax, nextl, LSUB, m_glu.num_expansions);
52
+ if (chmark != (m_jcol - 1)) m_jsuper_ref = emptyIdxLU;
55
53
  }
56
54
  enum { ExpandMem = true };
57
-
55
+
58
56
  Index m_jcol;
59
57
  Index& m_jsuper_ref;
60
58
  typename SparseLUImpl<Scalar, StorageIndex>::GlobalLU_t& m_glu;
61
59
  SparseLUImpl<Scalar, StorageIndex>& m_luImpl;
62
60
  };
63
61
 
64
-
65
62
  /**
66
63
  * \brief Performs a symbolic factorization on column jcol and decide the supernode boundary
67
- *
64
+ *
68
65
  * A supernode representative is the last column of a supernode.
69
- * The nonzeros in U[*,j] are segments that end at supernodes representatives.
70
- * The routine returns a list of the supernodal representatives
71
- * in topological order of the dfs that generates them.
72
- * The location of the first nonzero in each supernodal segment
73
- * (supernodal entry location) is also returned.
74
- *
66
+ * The nonzeros in U[*,j] are segments that end at supernodes representatives.
67
+ * The routine returns a list of the supernodal representatives
68
+ * in topological order of the dfs that generates them.
69
+ * The location of the first nonzero in each supernodal segment
70
+ * (supernodal entry location) is also returned.
71
+ *
75
72
  * \param m number of rows in the matrix
76
- * \param jcol Current column
73
+ * \param jcol Current column
77
74
  * \param perm_r Row permutation
78
75
  * \param maxsuper Maximum number of column allowed in a supernode
79
76
  * \param [in,out] nseg Number of segments in current U[*,j] - new segments appended
80
77
  * \param lsub_col defines the rhs vector to start the dfs
81
- * \param [in,out] segrep Segment representatives - new segments appended
78
+ * \param [in,out] segrep Segment representatives - new segments appended
82
79
  * \param repfnz First nonzero location in each row
83
- * \param xprune
80
+ * \param xprune
84
81
  * \param marker marker[i] == jj, if i was visited during dfs of current column jj;
85
82
  * \param parent
86
83
  * \param xplore working array
87
- * \param glu global LU data
84
+ * \param glu global LU data
88
85
  * \return 0 success
89
86
  * > 0 number of bytes allocated when run out of space
90
- *
87
+ *
91
88
  */
92
89
  template <typename Scalar, typename StorageIndex>
93
- Index SparseLUImpl<Scalar,StorageIndex>::column_dfs(const Index m, const Index jcol, IndexVector& perm_r, Index maxsuper, Index& nseg,
94
- BlockIndexVector lsub_col, IndexVector& segrep, BlockIndexVector repfnz, IndexVector& xprune,
95
- IndexVector& marker, IndexVector& parent, IndexVector& xplore, GlobalLU_t& glu)
96
- {
97
-
98
- Index jsuper = glu.supno(jcol);
99
- Index nextl = glu.xlsub(jcol);
100
- VectorBlock<IndexVector> marker2(marker, 2*m, m);
101
-
102
-
90
+ Index SparseLUImpl<Scalar, StorageIndex>::column_dfs(const Index m, const Index jcol, IndexVector& perm_r,
91
+ Index maxsuper, Index& nseg, BlockIndexVector lsub_col,
92
+ IndexVector& segrep, BlockIndexVector repfnz, IndexVector& xprune,
93
+ IndexVector& marker, IndexVector& parent, IndexVector& xplore,
94
+ GlobalLU_t& glu) {
95
+ Index jsuper = glu.supno(jcol);
96
+ Index nextl = glu.xlsub(jcol);
97
+ VectorBlock<IndexVector> marker2(marker, 2 * m, m);
98
+
103
99
  column_dfs_traits<IndexVector, ScalarVector> traits(jcol, jsuper, glu, *this);
104
-
105
- // For each nonzero in A(*,jcol) do dfs
106
- for (Index k = 0; ((k < m) ? lsub_col[k] != emptyIdxLU : false) ; k++)
107
- {
108
- Index krow = lsub_col(k);
109
- lsub_col(k) = emptyIdxLU;
110
- Index kmark = marker2(krow);
111
-
112
- // krow was visited before, go to the next nonz;
100
+
101
+ // For each nonzero in A(*,jcol) do dfs
102
+ for (Index k = 0; ((k < m) ? lsub_col[k] != emptyIdxLU : false); k++) {
103
+ Index krow = lsub_col(k);
104
+ lsub_col(k) = emptyIdxLU;
105
+ Index kmark = marker2(krow);
106
+
107
+ // krow was visited before, go to the next nonz;
113
108
  if (kmark == jcol) continue;
114
-
115
- dfs_kernel(StorageIndex(jcol), perm_r, nseg, glu.lsub, segrep, repfnz, xprune, marker2, parent,
116
- xplore, glu, nextl, krow, traits);
117
- } // for each nonzero ...
118
-
109
+
110
+ dfs_kernel(StorageIndex(jcol), perm_r, nseg, glu.lsub, segrep, repfnz, xprune, marker2, parent, xplore, glu, nextl,
111
+ krow, traits);
112
+ } // for each nonzero ...
113
+
119
114
  Index fsupc;
120
115
  StorageIndex nsuper = glu.supno(jcol);
121
116
  StorageIndex jcolp1 = StorageIndex(jcol) + 1;
122
117
  Index jcolm1 = jcol - 1;
123
-
118
+
124
119
  // check to see if j belongs in the same supernode as j-1
125
- if ( jcol == 0 )
126
- { // Do nothing for column 0
127
- nsuper = glu.supno(0) = 0 ;
128
- }
129
- else
130
- {
131
- fsupc = glu.xsup(nsuper);
132
- StorageIndex jptr = glu.xlsub(jcol); // Not yet compressed
133
- StorageIndex jm1ptr = glu.xlsub(jcolm1);
134
-
120
+ if (jcol == 0) { // Do nothing for column 0
121
+ nsuper = glu.supno(0) = 0;
122
+ } else {
123
+ fsupc = glu.xsup(nsuper);
124
+ StorageIndex jptr = glu.xlsub(jcol); // Not yet compressed
125
+ StorageIndex jm1ptr = glu.xlsub(jcolm1);
126
+
135
127
  // Use supernodes of type T2 : see SuperLU paper
136
- if ( (nextl-jptr != jptr-jm1ptr-1) ) jsuper = emptyIdxLU;
137
-
128
+ if ((nextl - jptr != jptr - jm1ptr - 1)) jsuper = emptyIdxLU;
129
+
138
130
  // Make sure the number of columns in a supernode doesn't
139
131
  // exceed threshold
140
- if ( (jcol - fsupc) >= maxsuper) jsuper = emptyIdxLU;
141
-
132
+ if ((jcol - fsupc) >= maxsuper) jsuper = emptyIdxLU;
133
+
142
134
  /* If jcol starts a new supernode, reclaim storage space in
143
- * glu.lsub from previous supernode. Note we only store
144
- * the subscript set of the first and last columns of
135
+ * glu.lsub from previous supernode. Note we only store
136
+ * the subscript set of the first and last columns of
145
137
  * a supernode. (first for num values, last for pruning)
146
138
  */
147
- if (jsuper == emptyIdxLU)
148
- { // starts a new supernode
149
- if ( (fsupc < jcolm1-1) )
150
- { // >= 3 columns in nsuper
151
- StorageIndex ito = glu.xlsub(fsupc+1);
152
- glu.xlsub(jcolm1) = ito;
153
- StorageIndex istop = ito + jptr - jm1ptr;
154
- xprune(jcolm1) = istop; // initialize xprune(jcol-1)
155
- glu.xlsub(jcol) = istop;
156
-
157
- for (StorageIndex ifrom = jm1ptr; ifrom < nextl; ++ifrom, ++ito)
158
- glu.lsub(ito) = glu.lsub(ifrom);
139
+ if (jsuper == emptyIdxLU) { // starts a new supernode
140
+ if ((fsupc < jcolm1 - 1)) { // >= 3 columns in nsuper
141
+ StorageIndex ito = glu.xlsub(fsupc + 1);
142
+ glu.xlsub(jcolm1) = ito;
143
+ StorageIndex istop = ito + jptr - jm1ptr;
144
+ xprune(jcolm1) = istop; // initialize xprune(jcol-1)
145
+ glu.xlsub(jcol) = istop;
146
+
147
+ for (StorageIndex ifrom = jm1ptr; ifrom < nextl; ++ifrom, ++ito) glu.lsub(ito) = glu.lsub(ifrom);
159
148
  nextl = ito; // = istop + length(jcol)
160
149
  }
161
- nsuper++;
162
- glu.supno(jcol) = nsuper;
163
- } // if a new supernode
164
- } // end else: jcol > 0
165
-
150
+ nsuper++;
151
+ glu.supno(jcol) = nsuper;
152
+ } // if a new supernode
153
+ } // end else: jcol > 0
154
+
166
155
  // Tidy up the pointers before exit
167
- glu.xsup(nsuper+1) = jcolp1;
168
- glu.supno(jcolp1) = nsuper;
156
+ glu.xsup(nsuper + 1) = jcolp1;
157
+ glu.supno(jcolp1) = nsuper;
169
158
  xprune(jcol) = StorageIndex(nextl); // Initialize upper bound for pruning
170
- glu.xlsub(jcolp1) = StorageIndex(nextl);
171
-
172
- return 0;
159
+ glu.xlsub(jcolp1) = StorageIndex(nextl);
160
+
161
+ return 0;
173
162
  }
174
163
 
175
- } // end namespace internal
164
+ } // end namespace internal
176
165
 
177
- } // end namespace Eigen
166
+ } // end namespace Eigen
178
167
 
179
168
  #endif