@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
@@ -11,365 +11,309 @@
11
11
  #ifndef EIGEN_SPARSELU_SUPERNODAL_MATRIX_H
12
12
  #define EIGEN_SPARSELU_SUPERNODAL_MATRIX_H
13
13
 
14
+ // IWYU pragma: private
15
+ #include "./InternalHeaderCheck.h"
16
+
14
17
  namespace Eigen {
15
18
  namespace internal {
16
19
 
17
20
  /** \ingroup SparseLU_Module
18
21
  * \brief a class to manipulate the L supernodal factor from the SparseLU factorization
19
- *
20
- * This class contain the data to easily store
21
- * and manipulate the supernodes during the factorization and solution phase of Sparse LU.
22
+ *
23
+ * This class contain the data to easily store
24
+ * and manipulate the supernodes during the factorization and solution phase of Sparse LU.
22
25
  * Only the lower triangular matrix has supernodes.
23
- *
26
+ *
24
27
  * NOTE : This class corresponds to the SCformat structure in SuperLU
25
- *
28
+ *
26
29
  */
27
30
  /* TODO
28
- * InnerIterator as for sparsematrix
29
- * SuperInnerIterator to iterate through all supernodes
31
+ * InnerIterator as for sparsematrix
32
+ * SuperInnerIterator to iterate through all supernodes
30
33
  * Function for triangular solve
31
34
  */
32
- template <typename _Scalar, typename _StorageIndex>
33
- class MappedSuperNodalMatrix
34
- {
35
- public:
36
- typedef _Scalar Scalar;
37
- typedef _StorageIndex StorageIndex;
38
- typedef Matrix<StorageIndex,Dynamic,1> IndexVector;
39
- typedef Matrix<Scalar,Dynamic,1> ScalarVector;
40
- public:
41
- MappedSuperNodalMatrix()
42
- {
43
-
44
- }
45
- MappedSuperNodalMatrix(Index m, Index n, ScalarVector& nzval, IndexVector& nzval_colptr, IndexVector& rowind,
46
- IndexVector& rowind_colptr, IndexVector& col_to_sup, IndexVector& sup_to_col )
47
- {
48
- setInfos(m, n, nzval, nzval_colptr, rowind, rowind_colptr, col_to_sup, sup_to_col);
49
- }
50
-
51
- ~MappedSuperNodalMatrix()
52
- {
53
-
54
- }
55
- /**
56
- * Set appropriate pointers for the lower triangular supernodal matrix
57
- * These infos are available at the end of the numerical factorization
58
- * FIXME This class will be modified such that it can be use in the course
59
- * of the factorization.
60
- */
61
- void setInfos(Index m, Index n, ScalarVector& nzval, IndexVector& nzval_colptr, IndexVector& rowind,
62
- IndexVector& rowind_colptr, IndexVector& col_to_sup, IndexVector& sup_to_col )
63
- {
64
- m_row = m;
65
- m_col = n;
66
- m_nzval = nzval.data();
67
- m_nzval_colptr = nzval_colptr.data();
68
- m_rowind = rowind.data();
69
- m_rowind_colptr = rowind_colptr.data();
70
- m_nsuper = col_to_sup(n);
71
- m_col_to_sup = col_to_sup.data();
72
- m_sup_to_col = sup_to_col.data();
73
- }
74
-
75
- /**
76
- * Number of rows
77
- */
78
- Index rows() const { return m_row; }
79
-
80
- /**
81
- * Number of columns
82
- */
83
- Index cols() const { return m_col; }
84
-
85
- /**
86
- * Return the array of nonzero values packed by column
87
- *
88
- * The size is nnz
89
- */
90
- Scalar* valuePtr() { return m_nzval; }
91
-
92
- const Scalar* valuePtr() const
93
- {
94
- return m_nzval;
95
- }
96
- /**
97
- * Return the pointers to the beginning of each column in \ref valuePtr()
98
- */
99
- StorageIndex* colIndexPtr()
100
- {
101
- return m_nzval_colptr;
102
- }
103
-
104
- const StorageIndex* colIndexPtr() const
105
- {
106
- return m_nzval_colptr;
107
- }
108
-
109
- /**
110
- * Return the array of compressed row indices of all supernodes
111
- */
112
- StorageIndex* rowIndex() { return m_rowind; }
113
-
114
- const StorageIndex* rowIndex() const
115
- {
116
- return m_rowind;
117
- }
118
-
119
- /**
120
- * Return the location in \em rowvaluePtr() which starts each column
121
- */
122
- StorageIndex* rowIndexPtr() { return m_rowind_colptr; }
123
-
124
- const StorageIndex* rowIndexPtr() const
125
- {
126
- return m_rowind_colptr;
127
- }
128
-
129
- /**
130
- * Return the array of column-to-supernode mapping
131
- */
132
- StorageIndex* colToSup() { return m_col_to_sup; }
133
-
134
- const StorageIndex* colToSup() const
135
- {
136
- return m_col_to_sup;
137
- }
138
- /**
139
- * Return the array of supernode-to-column mapping
140
- */
141
- StorageIndex* supToCol() { return m_sup_to_col; }
142
-
143
- const StorageIndex* supToCol() const
144
- {
145
- return m_sup_to_col;
146
- }
147
-
148
- /**
149
- * Return the number of supernodes
150
- */
151
- Index nsuper() const
152
- {
153
- return m_nsuper;
154
- }
155
-
156
- class InnerIterator;
157
- template<typename Dest>
158
- void solveInPlace( MatrixBase<Dest>&X) const;
159
- template<bool Conjugate, typename Dest>
160
- void solveTransposedInPlace( MatrixBase<Dest>&X) const;
161
-
162
-
163
-
164
-
165
-
166
- protected:
167
- Index m_row; // Number of rows
168
- Index m_col; // Number of columns
169
- Index m_nsuper; // Number of supernodes
170
- Scalar* m_nzval; //array of nonzero values packed by column
171
- StorageIndex* m_nzval_colptr; //nzval_colptr[j] Stores the location in nzval[] which starts column j
172
- StorageIndex* m_rowind; // Array of compressed row indices of rectangular supernodes
173
- StorageIndex* m_rowind_colptr; //rowind_colptr[j] stores the location in rowind[] which starts column j
174
- StorageIndex* m_col_to_sup; // col_to_sup[j] is the supernode number to which column j belongs
175
- StorageIndex* m_sup_to_col; //sup_to_col[s] points to the starting column of the s-th supernode
176
-
177
- private :
35
+ template <typename Scalar_, typename StorageIndex_>
36
+ class MappedSuperNodalMatrix {
37
+ public:
38
+ typedef Scalar_ Scalar;
39
+ typedef StorageIndex_ StorageIndex;
40
+ typedef Matrix<StorageIndex, Dynamic, 1> IndexVector;
41
+ typedef Matrix<Scalar, Dynamic, 1> ScalarVector;
42
+
43
+ public:
44
+ MappedSuperNodalMatrix() {}
45
+ MappedSuperNodalMatrix(Index m, Index n, ScalarVector& nzval, IndexVector& nzval_colptr, IndexVector& rowind,
46
+ IndexVector& rowind_colptr, IndexVector& col_to_sup, IndexVector& sup_to_col) {
47
+ setInfos(m, n, nzval, nzval_colptr, rowind, rowind_colptr, col_to_sup, sup_to_col);
48
+ }
49
+
50
+ ~MappedSuperNodalMatrix() {}
51
+ /**
52
+ * Set appropriate pointers for the lower triangular supernodal matrix
53
+ * These infos are available at the end of the numerical factorization
54
+ * FIXME This class will be modified such that it can be use in the course
55
+ * of the factorization.
56
+ */
57
+ void setInfos(Index m, Index n, ScalarVector& nzval, IndexVector& nzval_colptr, IndexVector& rowind,
58
+ IndexVector& rowind_colptr, IndexVector& col_to_sup, IndexVector& sup_to_col) {
59
+ m_row = m;
60
+ m_col = n;
61
+ m_nzval = nzval.data();
62
+ m_nzval_colptr = nzval_colptr.data();
63
+ m_rowind = rowind.data();
64
+ m_rowind_colptr = rowind_colptr.data();
65
+ m_nsuper = col_to_sup(n);
66
+ m_col_to_sup = col_to_sup.data();
67
+ m_sup_to_col = sup_to_col.data();
68
+ }
69
+
70
+ /**
71
+ * Number of rows
72
+ */
73
+ Index rows() const { return m_row; }
74
+
75
+ /**
76
+ * Number of columns
77
+ */
78
+ Index cols() const { return m_col; }
79
+
80
+ /**
81
+ * Return the array of nonzero values packed by column
82
+ *
83
+ * The size is nnz
84
+ */
85
+ Scalar* valuePtr() { return m_nzval; }
86
+
87
+ const Scalar* valuePtr() const { return m_nzval; }
88
+ /**
89
+ * Return the pointers to the beginning of each column in \ref valuePtr()
90
+ */
91
+ StorageIndex* colIndexPtr() { return m_nzval_colptr; }
92
+
93
+ const StorageIndex* colIndexPtr() const { return m_nzval_colptr; }
94
+
95
+ /**
96
+ * Return the array of compressed row indices of all supernodes
97
+ */
98
+ StorageIndex* rowIndex() { return m_rowind; }
99
+
100
+ const StorageIndex* rowIndex() const { return m_rowind; }
101
+
102
+ /**
103
+ * Return the location in \em rowvaluePtr() which starts each column
104
+ */
105
+ StorageIndex* rowIndexPtr() { return m_rowind_colptr; }
106
+
107
+ const StorageIndex* rowIndexPtr() const { return m_rowind_colptr; }
108
+
109
+ /**
110
+ * Return the array of column-to-supernode mapping
111
+ */
112
+ StorageIndex* colToSup() { return m_col_to_sup; }
113
+
114
+ const StorageIndex* colToSup() const { return m_col_to_sup; }
115
+ /**
116
+ * Return the array of supernode-to-column mapping
117
+ */
118
+ StorageIndex* supToCol() { return m_sup_to_col; }
119
+
120
+ const StorageIndex* supToCol() const { return m_sup_to_col; }
121
+
122
+ /**
123
+ * Return the number of supernodes
124
+ */
125
+ Index nsuper() const { return m_nsuper; }
126
+
127
+ class InnerIterator;
128
+ template <typename Dest>
129
+ void solveInPlace(MatrixBase<Dest>& X) const;
130
+ template <bool Conjugate, typename Dest>
131
+ void solveTransposedInPlace(MatrixBase<Dest>& X) const;
132
+
133
+ protected:
134
+ Index m_row; // Number of rows
135
+ Index m_col; // Number of columns
136
+ Index m_nsuper; // Number of supernodes
137
+ Scalar* m_nzval; // array of nonzero values packed by column
138
+ StorageIndex* m_nzval_colptr; // nzval_colptr[j] Stores the location in nzval[] which starts column j
139
+ StorageIndex* m_rowind; // Array of compressed row indices of rectangular supernodes
140
+ StorageIndex* m_rowind_colptr; // rowind_colptr[j] stores the location in rowind[] which starts column j
141
+ StorageIndex* m_col_to_sup; // col_to_sup[j] is the supernode number to which column j belongs
142
+ StorageIndex* m_sup_to_col; // sup_to_col[s] points to the starting column of the s-th supernode
143
+
144
+ private:
178
145
  };
179
146
 
180
147
  /**
181
- * \brief InnerIterator class to iterate over nonzero values of the current column in the supernodal matrix L
182
- *
183
- */
184
- template<typename Scalar, typename StorageIndex>
185
- class MappedSuperNodalMatrix<Scalar,StorageIndex>::InnerIterator
186
- {
187
- public:
188
- InnerIterator(const MappedSuperNodalMatrix& mat, Index outer)
148
+ * \brief InnerIterator class to iterate over nonzero values of the current column in the supernodal matrix L
149
+ *
150
+ */
151
+ template <typename Scalar, typename StorageIndex>
152
+ class MappedSuperNodalMatrix<Scalar, StorageIndex>::InnerIterator {
153
+ public:
154
+ InnerIterator(const MappedSuperNodalMatrix& mat, Index outer)
189
155
  : m_matrix(mat),
190
156
  m_outer(outer),
191
157
  m_supno(mat.colToSup()[outer]),
192
158
  m_idval(mat.colIndexPtr()[outer]),
193
159
  m_startidval(m_idval),
194
- m_endidval(mat.colIndexPtr()[outer+1]),
160
+ m_endidval(mat.colIndexPtr()[outer + 1]),
195
161
  m_idrow(mat.rowIndexPtr()[mat.supToCol()[mat.colToSup()[outer]]]),
196
- m_endidrow(mat.rowIndexPtr()[mat.supToCol()[mat.colToSup()[outer]]+1])
197
- {}
198
- inline InnerIterator& operator++()
199
- {
200
- m_idval++;
201
- m_idrow++;
202
- return *this;
203
- }
204
- inline Scalar value() const { return m_matrix.valuePtr()[m_idval]; }
205
-
206
- inline Scalar& valueRef() { return const_cast<Scalar&>(m_matrix.valuePtr()[m_idval]); }
207
-
208
- inline Index index() const { return m_matrix.rowIndex()[m_idrow]; }
209
- inline Index row() const { return index(); }
210
- inline Index col() const { return m_outer; }
211
-
212
- inline Index supIndex() const { return m_supno; }
213
-
214
- inline operator bool() const
215
- {
216
- return ( (m_idval < m_endidval) && (m_idval >= m_startidval)
217
- && (m_idrow < m_endidrow) );
218
- }
219
-
220
- protected:
221
- const MappedSuperNodalMatrix& m_matrix; // Supernodal lower triangular matrix
222
- const Index m_outer; // Current column
223
- const Index m_supno; // Current SuperNode number
224
- Index m_idval; // Index to browse the values in the current column
225
- const Index m_startidval; // Start of the column value
226
- const Index m_endidval; // End of the column value
227
- Index m_idrow; // Index to browse the row indices
228
- Index m_endidrow; // End index of row indices of the current column
162
+ m_endidrow(mat.rowIndexPtr()[mat.supToCol()[mat.colToSup()[outer]] + 1]) {}
163
+ inline InnerIterator& operator++() {
164
+ m_idval++;
165
+ m_idrow++;
166
+ return *this;
167
+ }
168
+ inline Scalar value() const { return m_matrix.valuePtr()[m_idval]; }
169
+
170
+ inline Scalar& valueRef() { return const_cast<Scalar&>(m_matrix.valuePtr()[m_idval]); }
171
+
172
+ inline Index index() const { return m_matrix.rowIndex()[m_idrow]; }
173
+ inline Index row() const { return index(); }
174
+ inline Index col() const { return m_outer; }
175
+
176
+ inline Index supIndex() const { return m_supno; }
177
+
178
+ inline operator bool() const {
179
+ return ((m_idval < m_endidval) && (m_idval >= m_startidval) && (m_idrow < m_endidrow));
180
+ }
181
+
182
+ protected:
183
+ const MappedSuperNodalMatrix& m_matrix; // Supernodal lower triangular matrix
184
+ const Index m_outer; // Current column
185
+ const Index m_supno; // Current SuperNode number
186
+ Index m_idval; // Index to browse the values in the current column
187
+ const Index m_startidval; // Start of the column value
188
+ const Index m_endidval; // End of the column value
189
+ Index m_idrow; // Index to browse the row indices
190
+ Index m_endidrow; // End index of row indices of the current column
229
191
  };
230
192
 
231
193
  /**
232
194
  * \brief Solve with the supernode triangular matrix
233
- *
195
+ *
234
196
  */
235
- template<typename Scalar, typename Index_>
236
- template<typename Dest>
237
- void MappedSuperNodalMatrix<Scalar,Index_>::solveInPlace( MatrixBase<Dest>&X) const
238
- {
239
- /* Explicit type conversion as the Index type of MatrixBase<Dest> may be wider than Index */
240
- // eigen_assert(X.rows() <= NumTraits<Index>::highest());
241
- // eigen_assert(X.cols() <= NumTraits<Index>::highest());
242
- Index n = int(X.rows());
243
- Index nrhs = Index(X.cols());
244
- const Scalar * Lval = valuePtr(); // Nonzero values
245
- Matrix<Scalar,Dynamic,Dest::ColsAtCompileTime, ColMajor> work(n, nrhs); // working vector
246
- work.setZero();
247
- for (Index k = 0; k <= nsuper(); k ++)
248
- {
249
- Index fsupc = supToCol()[k]; // First column of the current supernode
250
- Index istart = rowIndexPtr()[fsupc]; // Pointer index to the subscript of the current column
251
- Index nsupr = rowIndexPtr()[fsupc+1] - istart; // Number of rows in the current supernode
252
- Index nsupc = supToCol()[k+1] - fsupc; // Number of columns in the current supernode
253
- Index nrow = nsupr - nsupc; // Number of rows in the non-diagonal part of the supernode
254
- Index irow; //Current index row
255
-
256
- if (nsupc == 1 )
257
- {
258
- for (Index j = 0; j < nrhs; j++)
259
- {
260
- InnerIterator it(*this, fsupc);
261
- ++it; // Skip the diagonal element
262
- for (; it; ++it)
263
- {
264
- irow = it.row();
265
- X(irow, j) -= X(fsupc, j) * it.value();
266
- }
197
+ template <typename Scalar, typename Index_>
198
+ template <typename Dest>
199
+ void MappedSuperNodalMatrix<Scalar, Index_>::solveInPlace(MatrixBase<Dest>& X) const {
200
+ /* Explicit type conversion as the Index type of MatrixBase<Dest> may be wider than Index */
201
+ // eigen_assert(X.rows() <= NumTraits<Index>::highest());
202
+ // eigen_assert(X.cols() <= NumTraits<Index>::highest());
203
+ Index n = int(X.rows());
204
+ Index nrhs = Index(X.cols());
205
+ const Scalar* Lval = valuePtr(); // Nonzero values
206
+ Matrix<Scalar, Dynamic, Dest::ColsAtCompileTime, ColMajor> work(n, nrhs); // working vector
207
+ work.setZero();
208
+ for (Index k = 0; k <= nsuper(); k++) {
209
+ Index fsupc = supToCol()[k]; // First column of the current supernode
210
+ Index istart = rowIndexPtr()[fsupc]; // Pointer index to the subscript of the current column
211
+ Index nsupr = rowIndexPtr()[fsupc + 1] - istart; // Number of rows in the current supernode
212
+ Index nsupc = supToCol()[k + 1] - fsupc; // Number of columns in the current supernode
213
+ Index nrow = nsupr - nsupc; // Number of rows in the non-diagonal part of the supernode
214
+ Index irow; // Current index row
215
+
216
+ if (nsupc == 1) {
217
+ for (Index j = 0; j < nrhs; j++) {
218
+ InnerIterator it(*this, fsupc);
219
+ ++it; // Skip the diagonal element
220
+ for (; it; ++it) {
221
+ irow = it.row();
222
+ X(irow, j) -= X(fsupc, j) * it.value();
267
223
  }
268
224
  }
269
- else
270
- {
271
- // The supernode has more than one column
272
- Index luptr = colIndexPtr()[fsupc];
273
- Index lda = colIndexPtr()[fsupc+1] - luptr;
274
-
275
- // Triangular solve
276
- Map<const Matrix<Scalar,Dynamic,Dynamic, ColMajor>, 0, OuterStride<> > A( &(Lval[luptr]), nsupc, nsupc, OuterStride<>(lda) );
277
- Map< Matrix<Scalar,Dynamic,Dest::ColsAtCompileTime, ColMajor>, 0, OuterStride<> > U (&(X(fsupc,0)), nsupc, nrhs, OuterStride<>(n) );
278
- U = A.template triangularView<UnitLower>().solve(U);
279
-
280
- // Matrix-vector product
281
- new (&A) Map<const Matrix<Scalar,Dynamic,Dynamic, ColMajor>, 0, OuterStride<> > ( &(Lval[luptr+nsupc]), nrow, nsupc, OuterStride<>(lda) );
282
- work.topRows(nrow).noalias() = A * U;
283
-
284
- //Begin Scatter
285
- for (Index j = 0; j < nrhs; j++)
286
- {
287
- Index iptr = istart + nsupc;
288
- for (Index i = 0; i < nrow; i++)
289
- {
290
- irow = rowIndex()[iptr];
291
- X(irow, j) -= work(i, j); // Scatter operation
292
- work(i, j) = Scalar(0);
293
- iptr++;
294
- }
225
+ } else {
226
+ // The supernode has more than one column
227
+ Index luptr = colIndexPtr()[fsupc];
228
+ Index lda = colIndexPtr()[fsupc + 1] - luptr;
229
+
230
+ // Triangular solve
231
+ Map<const Matrix<Scalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> > A(&(Lval[luptr]), nsupc, nsupc,
232
+ OuterStride<>(lda));
233
+ typename Dest::RowsBlockXpr U = X.derived().middleRows(fsupc, nsupc);
234
+ U = A.template triangularView<UnitLower>().solve(U);
235
+ // Matrix-vector product
236
+ new (&A) Map<const Matrix<Scalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> >(&(Lval[luptr + nsupc]), nrow,
237
+ nsupc, OuterStride<>(lda));
238
+ work.topRows(nrow).noalias() = A * U;
239
+
240
+ // Begin Scatter
241
+ for (Index j = 0; j < nrhs; j++) {
242
+ Index iptr = istart + nsupc;
243
+ for (Index i = 0; i < nrow; i++) {
244
+ irow = rowIndex()[iptr];
245
+ X(irow, j) -= work(i, j); // Scatter operation
246
+ work(i, j) = Scalar(0);
247
+ iptr++;
295
248
  }
296
249
  }
297
- }
250
+ }
251
+ }
298
252
  }
299
253
 
300
- template<typename Scalar, typename Index_>
301
- template<bool Conjugate, typename Dest>
302
- void MappedSuperNodalMatrix<Scalar,Index_>::solveTransposedInPlace( MatrixBase<Dest>&X) const
303
- {
304
- using numext::conj;
305
- Index n = int(X.rows());
254
+ template <typename Scalar, typename Index_>
255
+ template <bool Conjugate, typename Dest>
256
+ void MappedSuperNodalMatrix<Scalar, Index_>::solveTransposedInPlace(MatrixBase<Dest>& X) const {
257
+ using numext::conj;
258
+ Index n = int(X.rows());
306
259
  Index nrhs = Index(X.cols());
307
- const Scalar * Lval = valuePtr(); // Nonzero values
308
- Matrix<Scalar,Dynamic,Dest::ColsAtCompileTime, ColMajor> work(n, nrhs); // working vector
260
+ const Scalar* Lval = valuePtr(); // Nonzero values
261
+ Matrix<Scalar, Dynamic, Dest::ColsAtCompileTime, ColMajor> work(n, nrhs); // working vector
309
262
  work.setZero();
310
- for (Index k = nsuper(); k >= 0; k--)
311
- {
312
- Index fsupc = supToCol()[k]; // First column of the current supernode
313
- Index istart = rowIndexPtr()[fsupc]; // Pointer index to the subscript of the current column
314
- Index nsupr = rowIndexPtr()[fsupc+1] - istart; // Number of rows in the current supernode
315
- Index nsupc = supToCol()[k+1] - fsupc; // Number of columns in the current supernode
316
- Index nrow = nsupr - nsupc; // Number of rows in the non-diagonal part of the supernode
317
- Index irow; //Current index row
318
-
319
- if (nsupc == 1 )
320
- {
321
- for (Index j = 0; j < nrhs; j++)
322
- {
263
+ for (Index k = nsuper(); k >= 0; k--) {
264
+ Index fsupc = supToCol()[k]; // First column of the current supernode
265
+ Index istart = rowIndexPtr()[fsupc]; // Pointer index to the subscript of the current column
266
+ Index nsupr = rowIndexPtr()[fsupc + 1] - istart; // Number of rows in the current supernode
267
+ Index nsupc = supToCol()[k + 1] - fsupc; // Number of columns in the current supernode
268
+ Index nrow = nsupr - nsupc; // Number of rows in the non-diagonal part of the supernode
269
+ Index irow; // Current index row
270
+
271
+ if (nsupc == 1) {
272
+ for (Index j = 0; j < nrhs; j++) {
323
273
  InnerIterator it(*this, fsupc);
324
- ++it; // Skip the diagonal element
325
- for (; it; ++it)
326
- {
274
+ ++it; // Skip the diagonal element
275
+ for (; it; ++it) {
327
276
  irow = it.row();
328
- X(fsupc,j) -= X(irow, j) * (Conjugate?conj(it.value()):it.value());
277
+ X(fsupc, j) -= X(irow, j) * (Conjugate ? conj(it.value()) : it.value());
329
278
  }
330
279
  }
331
- }
332
- else
333
- {
280
+ } else {
334
281
  // The supernode has more than one column
335
282
  Index luptr = colIndexPtr()[fsupc];
336
- Index lda = colIndexPtr()[fsupc+1] - luptr;
283
+ Index lda = colIndexPtr()[fsupc + 1] - luptr;
337
284
 
338
- //Begin Gather
339
- for (Index j = 0; j < nrhs; j++)
340
- {
285
+ // Begin Gather
286
+ for (Index j = 0; j < nrhs; j++) {
341
287
  Index iptr = istart + nsupc;
342
- for (Index i = 0; i < nrow; i++)
343
- {
288
+ for (Index i = 0; i < nrow; i++) {
344
289
  irow = rowIndex()[iptr];
345
- work.topRows(nrow)(i,j)= X(irow,j); // Gather operation
290
+ work.topRows(nrow)(i, j) = X(irow, j); // Gather operation
346
291
  iptr++;
347
292
  }
348
293
  }
349
294
 
350
295
  // Matrix-vector product with transposed submatrix
351
- Map<const Matrix<Scalar,Dynamic,Dynamic, ColMajor>, 0, OuterStride<> > A( &(Lval[luptr+nsupc]), nrow, nsupc, OuterStride<>(lda) );
352
- Map< Matrix<Scalar,Dynamic,Dest::ColsAtCompileTime, ColMajor>, 0, OuterStride<> > U (&(X(fsupc,0)), nsupc, nrhs, OuterStride<>(n) );
353
- if(Conjugate)
296
+ Map<const Matrix<Scalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> > A(&(Lval[luptr + nsupc]), nrow, nsupc,
297
+ OuterStride<>(lda));
298
+ typename Dest::RowsBlockXpr U = X.derived().middleRows(fsupc, nsupc);
299
+ if (Conjugate)
354
300
  U = U - A.adjoint() * work.topRows(nrow);
355
301
  else
356
302
  U = U - A.transpose() * work.topRows(nrow);
357
303
 
358
304
  // Triangular solve (of transposed diagonal block)
359
- new (&A) Map<const Matrix<Scalar,Dynamic,Dynamic, ColMajor>, 0, OuterStride<> > ( &(Lval[luptr]), nsupc, nsupc, OuterStride<>(lda) );
360
- if(Conjugate)
305
+ new (&A) Map<const Matrix<Scalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> >(&(Lval[luptr]), nsupc, nsupc,
306
+ OuterStride<>(lda));
307
+ if (Conjugate)
361
308
  U = A.adjoint().template triangularView<UnitUpper>().solve(U);
362
309
  else
363
310
  U = A.transpose().template triangularView<UnitUpper>().solve(U);
364
-
365
311
  }
366
-
367
312
  }
368
313
  }
369
314
 
315
+ } // end namespace internal
370
316
 
371
- } // end namespace internal
372
-
373
- } // end namespace Eigen
317
+ } // end namespace Eigen
374
318
 
375
- #endif // EIGEN_SPARSELU_MATRIX_H
319
+ #endif // EIGEN_SPARSELU_MATRIX_H