@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
@@ -0,0 +1,3 @@
1
+ #ifndef EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
2
+ #error "Please include Eigen/IterativeLinearSolvers instead of including headers inside the src directory directly."
3
+ #endif
@@ -10,192 +10,164 @@
10
10
  #ifndef EIGEN_ITERATIVE_SOLVER_BASE_H
11
11
  #define EIGEN_ITERATIVE_SOLVER_BASE_H
12
12
 
13
- namespace Eigen {
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
16
+ namespace Eigen {
14
17
 
15
18
  namespace internal {
16
19
 
17
- template<typename MatrixType>
18
- struct is_ref_compatible_impl
19
- {
20
- private:
20
+ template <typename MatrixType>
21
+ struct is_ref_compatible_impl {
22
+ private:
21
23
  template <typename T0>
22
- struct any_conversion
23
- {
24
- template <typename T> any_conversion(const volatile T&);
25
- template <typename T> any_conversion(T&);
24
+ struct any_conversion {
25
+ template <typename T>
26
+ any_conversion(const volatile T&);
27
+ template <typename T>
28
+ any_conversion(T&);
29
+ };
30
+ struct yes {
31
+ int a[1];
32
+ };
33
+ struct no {
34
+ int a[2];
26
35
  };
27
- struct yes {int a[1];};
28
- struct no {int a[2];};
29
36
 
30
- template<typename T>
37
+ template <typename T>
31
38
  static yes test(const Ref<const T>&, int);
32
- template<typename T>
33
- static no test(any_conversion<T>, ...);
39
+ template <typename T>
40
+ static no test(any_conversion<T>, ...);
34
41
 
35
- public:
42
+ public:
36
43
  static MatrixType ms_from;
37
- enum { value = sizeof(test<MatrixType>(ms_from, 0))==sizeof(yes) };
44
+ enum { value = sizeof(test<MatrixType>(ms_from, 0)) == sizeof(yes) };
38
45
  };
39
46
 
40
- template<typename MatrixType>
41
- struct is_ref_compatible
42
- {
43
- enum { value = is_ref_compatible_impl<typename remove_all<MatrixType>::type>::value };
47
+ template <typename MatrixType>
48
+ struct is_ref_compatible {
49
+ enum { value = is_ref_compatible_impl<remove_all_t<MatrixType>>::value };
44
50
  };
45
51
 
46
- template<typename MatrixType, bool MatrixFree = !internal::is_ref_compatible<MatrixType>::value>
52
+ template <typename MatrixType, bool MatrixFree = !internal::is_ref_compatible<MatrixType>::value>
47
53
  class generic_matrix_wrapper;
48
54
 
49
55
  // We have an explicit matrix at hand, compatible with Ref<>
50
- template<typename MatrixType>
51
- class generic_matrix_wrapper<MatrixType,false>
52
- {
53
- public:
56
+ template <typename MatrixType>
57
+ class generic_matrix_wrapper<MatrixType, false> {
58
+ public:
54
59
  typedef Ref<const MatrixType> ActualMatrixType;
55
- template<int UpLo> struct ConstSelfAdjointViewReturnType {
60
+ template <int UpLo>
61
+ struct ConstSelfAdjointViewReturnType {
56
62
  typedef typename ActualMatrixType::template ConstSelfAdjointViewReturnType<UpLo>::Type Type;
57
63
  };
58
64
 
59
- enum {
60
- MatrixFree = false
61
- };
65
+ enum { MatrixFree = false };
62
66
 
63
- generic_matrix_wrapper()
64
- : m_dummy(0,0), m_matrix(m_dummy)
65
- {}
67
+ generic_matrix_wrapper() : m_dummy(0, 0), m_matrix(m_dummy) {}
66
68
 
67
- template<typename InputType>
68
- generic_matrix_wrapper(const InputType &mat)
69
- : m_matrix(mat)
70
- {}
69
+ template <typename InputType>
70
+ generic_matrix_wrapper(const InputType& mat) : m_matrix(mat) {}
71
71
 
72
- const ActualMatrixType& matrix() const
73
- {
74
- return m_matrix;
75
- }
72
+ const ActualMatrixType& matrix() const { return m_matrix; }
76
73
 
77
- template<typename MatrixDerived>
78
- void grab(const EigenBase<MatrixDerived> &mat)
79
- {
80
- m_matrix.~Ref<const MatrixType>();
81
- ::new (&m_matrix) Ref<const MatrixType>(mat.derived());
74
+ template <typename MatrixDerived>
75
+ void grab(const EigenBase<MatrixDerived>& mat) {
76
+ internal::destroy_at(&m_matrix);
77
+ internal::construct_at(&m_matrix, mat.derived());
82
78
  }
83
79
 
84
- void grab(const Ref<const MatrixType> &mat)
85
- {
86
- if(&(mat.derived()) != &m_matrix)
87
- {
88
- m_matrix.~Ref<const MatrixType>();
89
- ::new (&m_matrix) Ref<const MatrixType>(mat);
80
+ void grab(const Ref<const MatrixType>& mat) {
81
+ if (&(mat.derived()) != &m_matrix) {
82
+ internal::destroy_at(&m_matrix);
83
+ internal::construct_at(&m_matrix, mat);
90
84
  }
91
85
  }
92
86
 
93
- protected:
94
- MatrixType m_dummy; // used to default initialize the Ref<> object
87
+ protected:
88
+ MatrixType m_dummy; // used to default initialize the Ref<> object
95
89
  ActualMatrixType m_matrix;
96
90
  };
97
91
 
98
92
  // MatrixType is not compatible with Ref<> -> matrix-free wrapper
99
- template<typename MatrixType>
100
- class generic_matrix_wrapper<MatrixType,true>
101
- {
102
- public:
93
+ template <typename MatrixType>
94
+ class generic_matrix_wrapper<MatrixType, true> {
95
+ public:
103
96
  typedef MatrixType ActualMatrixType;
104
- template<int UpLo> struct ConstSelfAdjointViewReturnType
105
- {
97
+ template <int UpLo>
98
+ struct ConstSelfAdjointViewReturnType {
106
99
  typedef ActualMatrixType Type;
107
100
  };
108
101
 
109
- enum {
110
- MatrixFree = true
111
- };
102
+ enum { MatrixFree = true };
112
103
 
113
- generic_matrix_wrapper()
114
- : mp_matrix(0)
115
- {}
104
+ generic_matrix_wrapper() : mp_matrix(0) {}
116
105
 
117
- generic_matrix_wrapper(const MatrixType &mat)
118
- : mp_matrix(&mat)
119
- {}
106
+ generic_matrix_wrapper(const MatrixType& mat) : mp_matrix(&mat) {}
120
107
 
121
- const ActualMatrixType& matrix() const
122
- {
123
- return *mp_matrix;
124
- }
108
+ const ActualMatrixType& matrix() const { return *mp_matrix; }
125
109
 
126
- void grab(const MatrixType &mat)
127
- {
128
- mp_matrix = &mat;
129
- }
110
+ void grab(const MatrixType& mat) { mp_matrix = &mat; }
130
111
 
131
- protected:
132
- const ActualMatrixType *mp_matrix;
112
+ protected:
113
+ const ActualMatrixType* mp_matrix;
133
114
  };
134
115
 
135
- }
116
+ } // namespace internal
136
117
 
137
118
  /** \ingroup IterativeLinearSolvers_Module
138
- * \brief Base class for linear iterative solvers
139
- *
140
- * \sa class SimplicialCholesky, DiagonalPreconditioner, IdentityPreconditioner
141
- */
142
- template< typename Derived>
143
- class IterativeSolverBase : public SparseSolverBase<Derived>
144
- {
145
- protected:
119
+ * \brief Base class for linear iterative solvers
120
+ *
121
+ * \sa class SimplicialCholesky, DiagonalPreconditioner, IdentityPreconditioner
122
+ */
123
+ template <typename Derived>
124
+ class IterativeSolverBase : public SparseSolverBase<Derived> {
125
+ protected:
146
126
  typedef SparseSolverBase<Derived> Base;
147
127
  using Base::m_isInitialized;
148
-
149
- public:
128
+
129
+ public:
150
130
  typedef typename internal::traits<Derived>::MatrixType MatrixType;
151
131
  typedef typename internal::traits<Derived>::Preconditioner Preconditioner;
152
132
  typedef typename MatrixType::Scalar Scalar;
153
133
  typedef typename MatrixType::StorageIndex StorageIndex;
154
134
  typedef typename MatrixType::RealScalar RealScalar;
155
135
 
156
- enum {
157
- ColsAtCompileTime = MatrixType::ColsAtCompileTime,
158
- MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
159
- };
160
-
161
- public:
136
+ enum { ColsAtCompileTime = MatrixType::ColsAtCompileTime, MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime };
162
137
 
138
+ public:
163
139
  using Base::derived;
164
140
 
165
141
  /** Default constructor. */
166
- IterativeSolverBase()
167
- {
168
- init();
169
- }
142
+ IterativeSolverBase() { init(); }
170
143
 
171
144
  /** Initialize the solver with matrix \a A for further \c Ax=b solving.
172
- *
173
- * This constructor is a shortcut for the default constructor followed
174
- * by a call to compute().
175
- *
176
- * \warning this class stores a reference to the matrix A as well as some
177
- * precomputed values that depend on it. Therefore, if \a A is changed
178
- * this class becomes invalid. Call compute() to update it with the new
179
- * matrix A, or modify a copy of A.
180
- */
181
- template<typename MatrixDerived>
182
- explicit IterativeSolverBase(const EigenBase<MatrixDerived>& A)
183
- : m_matrixWrapper(A.derived())
184
- {
145
+ *
146
+ * This constructor is a shortcut for the default constructor followed
147
+ * by a call to compute().
148
+ *
149
+ * \warning this class stores a reference to the matrix A as well as some
150
+ * precomputed values that depend on it. Therefore, if \a A is changed
151
+ * this class becomes invalid. Call compute() to update it with the new
152
+ * matrix A, or modify a copy of A.
153
+ */
154
+ template <typename MatrixDerived>
155
+ explicit IterativeSolverBase(const EigenBase<MatrixDerived>& A) : m_matrixWrapper(A.derived()) {
185
156
  init();
186
157
  compute(matrix());
187
158
  }
188
159
 
160
+ IterativeSolverBase(IterativeSolverBase&&) = default;
161
+
189
162
  ~IterativeSolverBase() {}
190
-
163
+
191
164
  /** Initializes the iterative solver for the sparsity pattern of the matrix \a A for further solving \c Ax=b problems.
192
- *
193
- * Currently, this function mostly calls analyzePattern on the preconditioner. In the future
194
- * we might, for instance, implement column reordering for faster matrix vector products.
195
- */
196
- template<typename MatrixDerived>
197
- Derived& analyzePattern(const EigenBase<MatrixDerived>& A)
198
- {
165
+ *
166
+ * Currently, this function mostly calls analyzePattern on the preconditioner. In the future
167
+ * we might, for instance, implement column reordering for faster matrix vector products.
168
+ */
169
+ template <typename MatrixDerived>
170
+ Derived& analyzePattern(const EigenBase<MatrixDerived>& A) {
199
171
  grab(A.derived());
200
172
  m_preconditioner.analyzePattern(matrix());
201
173
  m_isInitialized = true;
@@ -203,20 +175,20 @@ public:
203
175
  m_info = m_preconditioner.info();
204
176
  return derived();
205
177
  }
206
-
207
- /** Initializes the iterative solver with the numerical values of the matrix \a A for further solving \c Ax=b problems.
208
- *
209
- * Currently, this function mostly calls factorize on the preconditioner.
210
- *
211
- * \warning this class stores a reference to the matrix A as well as some
212
- * precomputed values that depend on it. Therefore, if \a A is changed
213
- * this class becomes invalid. Call compute() to update it with the new
214
- * matrix A, or modify a copy of A.
215
- */
216
- template<typename MatrixDerived>
217
- Derived& factorize(const EigenBase<MatrixDerived>& A)
218
- {
219
- eigen_assert(m_analysisIsOk && "You must first call analyzePattern()");
178
+
179
+ /** Initializes the iterative solver with the numerical values of the matrix \a A for further solving \c Ax=b
180
+ * problems.
181
+ *
182
+ * Currently, this function mostly calls factorize on the preconditioner.
183
+ *
184
+ * \warning this class stores a reference to the matrix A as well as some
185
+ * precomputed values that depend on it. Therefore, if \a A is changed
186
+ * this class becomes invalid. Call compute() to update it with the new
187
+ * matrix A, or modify a copy of A.
188
+ */
189
+ template <typename MatrixDerived>
190
+ Derived& factorize(const EigenBase<MatrixDerived>& A) {
191
+ eigen_assert(m_analysisIsOk && "You must first call analyzePattern()");
220
192
  grab(A.derived());
221
193
  m_preconditioner.factorize(matrix());
222
194
  m_factorizationIsOk = true;
@@ -225,18 +197,17 @@ public:
225
197
  }
226
198
 
227
199
  /** Initializes the iterative solver with the matrix \a A for further solving \c Ax=b problems.
228
- *
229
- * Currently, this function mostly initializes/computes the preconditioner. In the future
230
- * we might, for instance, implement column reordering for faster matrix vector products.
231
- *
232
- * \warning this class stores a reference to the matrix A as well as some
233
- * precomputed values that depend on it. Therefore, if \a A is changed
234
- * this class becomes invalid. Call compute() to update it with the new
235
- * matrix A, or modify a copy of A.
236
- */
237
- template<typename MatrixDerived>
238
- Derived& compute(const EigenBase<MatrixDerived>& A)
239
- {
200
+ *
201
+ * Currently, this function mostly initializes/computes the preconditioner. In the future
202
+ * we might, for instance, implement column reordering for faster matrix vector products.
203
+ *
204
+ * \warning this class stores a reference to the matrix A as well as some
205
+ * precomputed values that depend on it. Therefore, if \a A is changed
206
+ * this class becomes invalid. Call compute() to update it with the new
207
+ * matrix A, or modify a copy of A.
208
+ */
209
+ template <typename MatrixDerived>
210
+ Derived& compute(const EigenBase<MatrixDerived>& A) {
240
211
  grab(A.derived());
241
212
  m_preconditioner.compute(matrix());
242
213
  m_isInitialized = true;
@@ -247,115 +218,149 @@ public:
247
218
  }
248
219
 
249
220
  /** \internal */
250
- Index rows() const { return matrix().rows(); }
221
+ constexpr Index rows() const noexcept { return matrix().rows(); }
251
222
 
252
223
  /** \internal */
253
- Index cols() const { return matrix().cols(); }
224
+ constexpr Index cols() const noexcept { return matrix().cols(); }
254
225
 
255
226
  /** \returns the tolerance threshold used by the stopping criteria.
256
- * \sa setTolerance()
257
- */
227
+ * \sa setTolerance()
228
+ */
258
229
  RealScalar tolerance() const { return m_tolerance; }
259
-
230
+
260
231
  /** Sets the tolerance threshold used by the stopping criteria.
261
- *
262
- * This value is used as an upper bound to the relative residual error: |Ax-b|/|b|.
263
- * The default value is the machine precision given by NumTraits<Scalar>::epsilon()
264
- */
265
- Derived& setTolerance(const RealScalar& tolerance)
266
- {
232
+ *
233
+ * This value is used as an upper bound to the relative residual error: |Ax-b|/|b|.
234
+ * The default value is the machine precision given by NumTraits<Scalar>::epsilon()
235
+ */
236
+ Derived& setTolerance(const RealScalar& tolerance) {
267
237
  m_tolerance = tolerance;
268
238
  return derived();
269
239
  }
270
240
 
271
241
  /** \returns a read-write reference to the preconditioner for custom configuration. */
272
242
  Preconditioner& preconditioner() { return m_preconditioner; }
273
-
243
+
274
244
  /** \returns a read-only reference to the preconditioner. */
275
245
  const Preconditioner& preconditioner() const { return m_preconditioner; }
276
246
 
277
247
  /** \returns the max number of iterations.
278
- * It is either the value setted by setMaxIterations or, by default,
279
- * twice the number of columns of the matrix.
280
- */
281
- Index maxIterations() const
282
- {
283
- return (m_maxIterations<0) ? 2*matrix().cols() : m_maxIterations;
284
- }
285
-
248
+ * It is either the value set by setMaxIterations or, by default,
249
+ * twice the number of columns of the matrix.
250
+ */
251
+ Index maxIterations() const { return (m_maxIterations < 0) ? 2 * matrix().cols() : m_maxIterations; }
252
+
286
253
  /** Sets the max number of iterations.
287
- * Default is twice the number of columns of the matrix.
288
- */
289
- Derived& setMaxIterations(Index maxIters)
290
- {
254
+ * Default is twice the number of columns of the matrix.
255
+ */
256
+ Derived& setMaxIterations(Index maxIters) {
291
257
  m_maxIterations = maxIters;
292
258
  return derived();
293
259
  }
294
260
 
295
261
  /** \returns the number of iterations performed during the last solve */
296
- Index iterations() const
297
- {
298
- eigen_assert(m_isInitialized && "ConjugateGradient is not initialized.");
262
+ Index iterations() const {
263
+ eigen_assert(m_isInitialized && "IterativeSolverBase is not initialized.");
299
264
  return m_iterations;
300
265
  }
301
266
 
302
267
  /** \returns the tolerance error reached during the last solve.
303
- * It is a close approximation of the true relative residual error |Ax-b|/|b|.
304
- */
305
- RealScalar error() const
306
- {
307
- eigen_assert(m_isInitialized && "ConjugateGradient is not initialized.");
268
+ * It is a close approximation of the true relative residual error |Ax-b|/|b|.
269
+ */
270
+ RealScalar error() const {
271
+ eigen_assert(m_isInitialized && "IterativeSolverBase is not initialized.");
308
272
  return m_error;
309
273
  }
310
274
 
311
275
  /** \returns the solution x of \f$ A x = b \f$ using the current decomposition of A
312
- * and \a x0 as an initial solution.
313
- *
314
- * \sa solve(), compute()
315
- */
316
- template<typename Rhs,typename Guess>
317
- inline const SolveWithGuess<Derived, Rhs, Guess>
318
- solveWithGuess(const MatrixBase<Rhs>& b, const Guess& x0) const
319
- {
276
+ * and \a x0 as an initial solution.
277
+ *
278
+ * \sa solve(), compute()
279
+ */
280
+ template <typename Rhs, typename Guess>
281
+ inline const SolveWithGuess<Derived, Rhs, Guess> solveWithGuess(const MatrixBase<Rhs>& b, const Guess& x0) const {
320
282
  eigen_assert(m_isInitialized && "Solver is not initialized.");
321
- eigen_assert(derived().rows()==b.rows() && "solve(): invalid number of rows of the right hand side matrix b");
283
+ eigen_assert(derived().rows() == b.rows() && "solve(): invalid number of rows of the right hand side matrix b");
322
284
  return SolveWithGuess<Derived, Rhs, Guess>(derived(), b.derived(), x0);
323
285
  }
324
286
 
325
287
  /** \returns Success if the iterations converged, and NoConvergence otherwise. */
326
- ComputationInfo info() const
327
- {
288
+ ComputationInfo info() const {
328
289
  eigen_assert(m_isInitialized && "IterativeSolverBase is not initialized.");
329
290
  return m_info;
330
291
  }
331
-
292
+
332
293
  /** \internal */
333
- template<typename Rhs, typename DestDerived>
334
- void _solve_impl(const Rhs& b, SparseMatrixBase<DestDerived> &aDest) const
335
- {
336
- eigen_assert(rows()==b.rows());
337
-
294
+ template <typename Rhs, typename DestDerived>
295
+ void _solve_with_guess_impl(const Rhs& b, SparseMatrixBase<DestDerived>& aDest) const {
296
+ eigen_assert(rows() == b.rows());
297
+
338
298
  Index rhsCols = b.cols();
339
299
  Index size = b.rows();
340
300
  DestDerived& dest(aDest.derived());
341
301
  typedef typename DestDerived::Scalar DestScalar;
342
- Eigen::Matrix<DestScalar,Dynamic,1> tb(size);
343
- Eigen::Matrix<DestScalar,Dynamic,1> tx(cols());
302
+ Eigen::Matrix<DestScalar, Dynamic, 1> tb(size);
303
+ Eigen::Matrix<DestScalar, Dynamic, 1> tx(cols());
344
304
  // We do not directly fill dest because sparse expressions have to be free of aliasing issue.
345
- // For non square least-square problems, b and dest might not have the same size whereas they might alias each-other.
346
- typename DestDerived::PlainObject tmp(cols(),rhsCols);
347
- for(Index k=0; k<rhsCols; ++k)
348
- {
305
+ // For non square least-square problems, b and dest might not have the same size whereas they might alias
306
+ // each-other.
307
+ typename DestDerived::PlainObject tmp(cols(), rhsCols);
308
+ ComputationInfo global_info = Success;
309
+ for (Index k = 0; k < rhsCols; ++k) {
349
310
  tb = b.col(k);
350
- tx = derived().solve(tb);
311
+ tx = dest.col(k);
312
+ derived()._solve_vector_with_guess_impl(tb, tx);
351
313
  tmp.col(k) = tx.sparseView(0);
314
+
315
+ // The call to _solve_vector_with_guess_impl updates m_info, so if it failed for a previous column
316
+ // we need to restore it to the worst value.
317
+ if (m_info == NumericalIssue)
318
+ global_info = NumericalIssue;
319
+ else if (m_info == NoConvergence)
320
+ global_info = NoConvergence;
352
321
  }
322
+ m_info = global_info;
353
323
  dest.swap(tmp);
354
324
  }
355
325
 
356
- protected:
357
- void init()
358
- {
326
+ template <typename Rhs, typename DestDerived>
327
+ std::enable_if_t<Rhs::ColsAtCompileTime != 1 && DestDerived::ColsAtCompileTime != 1> _solve_with_guess_impl(
328
+ const Rhs& b, MatrixBase<DestDerived>& aDest) const {
329
+ eigen_assert(rows() == b.rows());
330
+
331
+ Index rhsCols = b.cols();
332
+ DestDerived& dest(aDest.derived());
333
+ ComputationInfo global_info = Success;
334
+ for (Index k = 0; k < rhsCols; ++k) {
335
+ typename DestDerived::ColXpr xk(dest, k);
336
+ typename Rhs::ConstColXpr bk(b, k);
337
+ derived()._solve_vector_with_guess_impl(bk, xk);
338
+
339
+ // The call to _solve_vector_with_guess updates m_info, so if it failed for a previous column
340
+ // we need to restore it to the worst value.
341
+ if (m_info == NumericalIssue)
342
+ global_info = NumericalIssue;
343
+ else if (m_info == NoConvergence)
344
+ global_info = NoConvergence;
345
+ }
346
+ m_info = global_info;
347
+ }
348
+
349
+ template <typename Rhs, typename DestDerived>
350
+ std::enable_if_t<Rhs::ColsAtCompileTime == 1 || DestDerived::ColsAtCompileTime == 1> _solve_with_guess_impl(
351
+ const Rhs& b, MatrixBase<DestDerived>& dest) const {
352
+ derived()._solve_vector_with_guess_impl(b, dest.derived());
353
+ }
354
+
355
+ /** \internal default initial guess = 0 */
356
+ template <typename Rhs, typename Dest>
357
+ void _solve_impl(const Rhs& b, Dest& x) const {
358
+ x.setZero();
359
+ derived()._solve_with_guess_impl(b, x);
360
+ }
361
+
362
+ protected:
363
+ void init() {
359
364
  m_isInitialized = false;
360
365
  m_analysisIsOk = false;
361
366
  m_factorizationIsOk = false;
@@ -366,29 +371,25 @@ protected:
366
371
  typedef internal::generic_matrix_wrapper<MatrixType> MatrixWrapper;
367
372
  typedef typename MatrixWrapper::ActualMatrixType ActualMatrixType;
368
373
 
369
- const ActualMatrixType& matrix() const
370
- {
371
- return m_matrixWrapper.matrix();
372
- }
373
-
374
- template<typename InputType>
375
- void grab(const InputType &A)
376
- {
374
+ const ActualMatrixType& matrix() const { return m_matrixWrapper.matrix(); }
375
+
376
+ template <typename InputType>
377
+ void grab(const InputType& A) {
377
378
  m_matrixWrapper.grab(A);
378
379
  }
379
-
380
+
380
381
  MatrixWrapper m_matrixWrapper;
381
382
  Preconditioner m_preconditioner;
382
383
 
383
384
  Index m_maxIterations;
384
385
  RealScalar m_tolerance;
385
-
386
+
386
387
  mutable RealScalar m_error;
387
388
  mutable Index m_iterations;
388
389
  mutable ComputationInfo m_info;
389
390
  mutable bool m_analysisIsOk, m_factorizationIsOk;
390
391
  };
391
392
 
392
- } // end namespace Eigen
393
+ } // end namespace Eigen
393
394
 
394
- #endif // EIGEN_ITERATIVE_SOLVER_BASE_H
395
+ #endif // EIGEN_ITERATIVE_SOLVER_BASE_H