@smake/eigen 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -21
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +235 -326
  6. package/eigen/Eigen/Eigenvalues +16 -14
  7. package/eigen/Eigen/Geometry +21 -24
  8. package/eigen/Eigen/Householder +9 -8
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -14
  11. package/eigen/Eigen/KLUSupport +43 -0
  12. package/eigen/Eigen/LU +16 -20
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -54
  15. package/eigen/Eigen/PaStiXSupport +23 -20
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -21
  18. package/eigen/Eigen/QtAlignedMalloc +5 -13
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -18
  21. package/eigen/Eigen/Sparse +1 -4
  22. package/eigen/Eigen/SparseCholesky +18 -23
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +12 -8
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
  37. package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
  42. package/eigen/Eigen/src/Core/Array.h +341 -294
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
  48. package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
  49. package/eigen/Eigen/src/Core/Block.h +375 -398
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
  53. package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
  59. package/eigen/Eigen/src/Core/DenseBase.h +632 -571
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
  61. package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +169 -210
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +172 -222
  67. package/eigen/Eigen/src/Core/EigenBase.h +75 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
  75. package/eigen/Eigen/src/Core/IO.h +147 -139
  76. package/eigen/Eigen/src/Core/IndexedView.h +321 -0
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +56 -66
  80. package/eigen/Eigen/src/Core/Map.h +124 -142
  81. package/eigen/Eigen/src/Core/MapBase.h +256 -281
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
  84. package/eigen/Eigen/src/Core/Matrix.h +491 -416
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
  86. package/eigen/Eigen/src/Core/NestByValue.h +66 -85
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -85
  88. package/eigen/Eigen/src/Core/NumTraits.h +235 -148
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
  92. package/eigen/Eigen/src/Core/Product.h +260 -139
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
  94. package/eigen/Eigen/src/Core/Random.h +161 -136
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +366 -336
  98. package/eigen/Eigen/src/Core/Ref.h +308 -209
  99. package/eigen/Eigen/src/Core/Replicate.h +94 -106
  100. package/eigen/Eigen/src/Core/Reshaped.h +398 -0
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +136 -145
  103. package/eigen/Eigen/src/Core/Select.h +70 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +97 -111
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
  109. package/eigen/Eigen/src/Core/SolverBase.h +138 -101
  110. package/eigen/Eigen/src/Core/StableNorm.h +156 -160
  111. package/eigen/Eigen/src/Core/StlIterators.h +619 -0
  112. package/eigen/Eigen/src/Core/Stride.h +91 -88
  113. package/eigen/Eigen/src/Core/Swap.h +70 -38
  114. package/eigen/Eigen/src/Core/Transpose.h +295 -273
  115. package/eigen/Eigen/src/Core/Transpositions.h +272 -317
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
  119. package/eigen/Eigen/src/Core/Visitor.h +480 -216
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
  217. package/eigen/Eigen/src/Core/util/Constants.h +314 -263
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
  226. package/eigen/Eigen/src/Core/util/Macros.h +939 -646
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
  229. package/eigen/Eigen/src/Core/util/Meta.h +618 -426
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
  264. package/eigen/Eigen/src/Geometry/Transform.h +896 -953
  265. package/eigen/Eigen/src/Geometry/Translation.h +100 -98
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
  269. package/eigen/Eigen/src/Householder/Householder.h +104 -122
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
  285. package/eigen/Eigen/src/LU/Determinant.h +60 -63
  286. package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/lib/LibEigen.d.ts +4 -0
  409. package/lib/LibEigen.js +14 -0
  410. package/lib/index.d.ts +1 -1
  411. package/lib/index.js +7 -3
  412. package/package.json +2 -10
  413. package/eigen/Eigen/CMakeLists.txt +0 -19
  414. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
  415. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
  416. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  417. package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
  418. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  419. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  420. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  421. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  422. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  423. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  424. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  425. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  426. package/eigen/Eigen/src/misc/lapack.h +0 -152
  427. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
  428. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
  429. package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
  430. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  431. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
  432. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  433. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
  434. package/lib/eigen.d.ts +0 -2
  435. package/lib/eigen.js +0 -15
@@ -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; // intialize 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;
169
- xprune(jcol) = StorageIndex(nextl); // Intialize upper bound for pruning
170
- glu.xlsub(jcolp1) = StorageIndex(nextl);
171
-
172
- return 0;
156
+ glu.xsup(nsuper + 1) = jcolp1;
157
+ glu.supno(jcolp1) = nsuper;
158
+ xprune(jcol) = StorageIndex(nextl); // Initialize upper bound for pruning
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