@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
@@ -11,291 +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() { return m_row; }
79
-
80
- /**
81
- * Number of columns
82
- */
83
- Index cols() { 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
-
160
-
161
-
162
-
163
- protected:
164
- Index m_row; // Number of rows
165
- Index m_col; // Number of columns
166
- Index m_nsuper; // Number of supernodes
167
- Scalar* m_nzval; //array of nonzero values packed by column
168
- StorageIndex* m_nzval_colptr; //nzval_colptr[j] Stores the location in nzval[] which starts column j
169
- StorageIndex* m_rowind; // Array of compressed row indices of rectangular supernodes
170
- StorageIndex* m_rowind_colptr; //rowind_colptr[j] stores the location in rowind[] which starts column j
171
- StorageIndex* m_col_to_sup; // col_to_sup[j] is the supernode number to which column j belongs
172
- StorageIndex* m_sup_to_col; //sup_to_col[s] points to the starting column of the s-th supernode
173
-
174
- 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:
175
145
  };
176
146
 
177
147
  /**
178
- * \brief InnerIterator class to iterate over nonzero values of the current column in the supernodal matrix L
179
- *
180
- */
181
- template<typename Scalar, typename StorageIndex>
182
- class MappedSuperNodalMatrix<Scalar,StorageIndex>::InnerIterator
183
- {
184
- public:
185
- 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)
186
155
  : m_matrix(mat),
187
156
  m_outer(outer),
188
157
  m_supno(mat.colToSup()[outer]),
189
158
  m_idval(mat.colIndexPtr()[outer]),
190
159
  m_startidval(m_idval),
191
- m_endidval(mat.colIndexPtr()[outer+1]),
160
+ m_endidval(mat.colIndexPtr()[outer + 1]),
192
161
  m_idrow(mat.rowIndexPtr()[mat.supToCol()[mat.colToSup()[outer]]]),
193
- m_endidrow(mat.rowIndexPtr()[mat.supToCol()[mat.colToSup()[outer]]+1])
194
- {}
195
- inline InnerIterator& operator++()
196
- {
197
- m_idval++;
198
- m_idrow++;
199
- return *this;
200
- }
201
- inline Scalar value() const { return m_matrix.valuePtr()[m_idval]; }
202
-
203
- inline Scalar& valueRef() { return const_cast<Scalar&>(m_matrix.valuePtr()[m_idval]); }
204
-
205
- inline Index index() const { return m_matrix.rowIndex()[m_idrow]; }
206
- inline Index row() const { return index(); }
207
- inline Index col() const { return m_outer; }
208
-
209
- inline Index supIndex() const { return m_supno; }
210
-
211
- inline operator bool() const
212
- {
213
- return ( (m_idval < m_endidval) && (m_idval >= m_startidval)
214
- && (m_idrow < m_endidrow) );
215
- }
216
-
217
- protected:
218
- const MappedSuperNodalMatrix& m_matrix; // Supernodal lower triangular matrix
219
- const Index m_outer; // Current column
220
- const Index m_supno; // Current SuperNode number
221
- Index m_idval; // Index to browse the values in the current column
222
- const Index m_startidval; // Start of the column value
223
- const Index m_endidval; // End of the column value
224
- Index m_idrow; // Index to browse the row indices
225
- 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
226
191
  };
227
192
 
228
193
  /**
229
194
  * \brief Solve with the supernode triangular matrix
230
- *
195
+ *
231
196
  */
232
- template<typename Scalar, typename Index_>
233
- template<typename Dest>
234
- void MappedSuperNodalMatrix<Scalar,Index_>::solveInPlace( MatrixBase<Dest>&X) const
235
- {
236
- /* Explicit type conversion as the Index type of MatrixBase<Dest> may be wider than Index */
237
- // eigen_assert(X.rows() <= NumTraits<Index>::highest());
238
- // eigen_assert(X.cols() <= NumTraits<Index>::highest());
239
- Index n = int(X.rows());
240
- Index nrhs = Index(X.cols());
241
- const Scalar * Lval = valuePtr(); // Nonzero values
242
- Matrix<Scalar,Dynamic,Dest::ColsAtCompileTime, ColMajor> work(n, nrhs); // working vector
243
- work.setZero();
244
- for (Index k = 0; k <= nsuper(); k ++)
245
- {
246
- Index fsupc = supToCol()[k]; // First column of the current supernode
247
- Index istart = rowIndexPtr()[fsupc]; // Pointer index to the subscript of the current column
248
- Index nsupr = rowIndexPtr()[fsupc+1] - istart; // Number of rows in the current supernode
249
- Index nsupc = supToCol()[k+1] - fsupc; // Number of columns in the current supernode
250
- Index nrow = nsupr - nsupc; // Number of rows in the non-diagonal part of the supernode
251
- Index irow; //Current index row
252
-
253
- if (nsupc == 1 )
254
- {
255
- for (Index j = 0; j < nrhs; j++)
256
- {
257
- InnerIterator it(*this, fsupc);
258
- ++it; // Skip the diagonal element
259
- for (; it; ++it)
260
- {
261
- irow = it.row();
262
- X(irow, j) -= X(fsupc, j) * it.value();
263
- }
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();
264
223
  }
265
224
  }
266
- else
267
- {
268
- // The supernode has more than one column
269
- Index luptr = colIndexPtr()[fsupc];
270
- Index lda = colIndexPtr()[fsupc+1] - luptr;
271
-
272
- // Triangular solve
273
- Map<const Matrix<Scalar,Dynamic,Dynamic, ColMajor>, 0, OuterStride<> > A( &(Lval[luptr]), nsupc, nsupc, OuterStride<>(lda) );
274
- Map< Matrix<Scalar,Dynamic,Dest::ColsAtCompileTime, ColMajor>, 0, OuterStride<> > U (&(X(fsupc,0)), nsupc, nrhs, OuterStride<>(n) );
275
- U = A.template triangularView<UnitLower>().solve(U);
276
-
277
- // Matrix-vector product
278
- new (&A) Map<const Matrix<Scalar,Dynamic,Dynamic, ColMajor>, 0, OuterStride<> > ( &(Lval[luptr+nsupc]), nrow, nsupc, OuterStride<>(lda) );
279
- work.topRows(nrow).noalias() = A * U;
280
-
281
- //Begin Scatter
282
- for (Index j = 0; j < nrhs; j++)
283
- {
284
- Index iptr = istart + nsupc;
285
- for (Index i = 0; i < nrow; i++)
286
- {
287
- irow = rowIndex()[iptr];
288
- X(irow, j) -= work(i, j); // Scatter operation
289
- work(i, j) = Scalar(0);
290
- iptr++;
291
- }
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++;
292
248
  }
293
249
  }
294
- }
250
+ }
251
+ }
252
+ }
253
+
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());
259
+ Index nrhs = Index(X.cols());
260
+ const Scalar* Lval = valuePtr(); // Nonzero values
261
+ Matrix<Scalar, Dynamic, Dest::ColsAtCompileTime, ColMajor> work(n, nrhs); // working vector
262
+ work.setZero();
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++) {
273
+ InnerIterator it(*this, fsupc);
274
+ ++it; // Skip the diagonal element
275
+ for (; it; ++it) {
276
+ irow = it.row();
277
+ X(fsupc, j) -= X(irow, j) * (Conjugate ? conj(it.value()) : it.value());
278
+ }
279
+ }
280
+ } else {
281
+ // The supernode has more than one column
282
+ Index luptr = colIndexPtr()[fsupc];
283
+ Index lda = colIndexPtr()[fsupc + 1] - luptr;
284
+
285
+ // Begin Gather
286
+ for (Index j = 0; j < nrhs; j++) {
287
+ Index iptr = istart + nsupc;
288
+ for (Index i = 0; i < nrow; i++) {
289
+ irow = rowIndex()[iptr];
290
+ work.topRows(nrow)(i, j) = X(irow, j); // Gather operation
291
+ iptr++;
292
+ }
293
+ }
294
+
295
+ // Matrix-vector product with transposed submatrix
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)
300
+ U = U - A.adjoint() * work.topRows(nrow);
301
+ else
302
+ U = U - A.transpose() * work.topRows(nrow);
303
+
304
+ // Triangular solve (of transposed diagonal block)
305
+ new (&A) Map<const Matrix<Scalar, Dynamic, Dynamic, ColMajor>, 0, OuterStride<> >(&(Lval[luptr]), nsupc, nsupc,
306
+ OuterStride<>(lda));
307
+ if (Conjugate)
308
+ U = A.adjoint().template triangularView<UnitUpper>().solve(U);
309
+ else
310
+ U = A.transpose().template triangularView<UnitUpper>().solve(U);
311
+ }
312
+ }
295
313
  }
296
314
 
297
- } // end namespace internal
315
+ } // end namespace internal
298
316
 
299
- } // end namespace Eigen
317
+ } // end namespace Eigen
300
318
 
301
- #endif // EIGEN_SPARSELU_MATRIX_H
319
+ #endif // EIGEN_SPARSELU_MATRIX_H