@smake/eigen 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -20
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +187 -120
  6. package/eigen/Eigen/Eigenvalues +16 -13
  7. package/eigen/Eigen/Geometry +18 -18
  8. package/eigen/Eigen/Householder +9 -7
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -13
  11. package/eigen/Eigen/KLUSupport +23 -21
  12. package/eigen/Eigen/LU +15 -16
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -51
  15. package/eigen/Eigen/PaStiXSupport +23 -21
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -20
  18. package/eigen/Eigen/QtAlignedMalloc +5 -12
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -17
  21. package/eigen/Eigen/Sparse +1 -2
  22. package/eigen/Eigen/SparseCholesky +18 -15
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +9 -9
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
  37. package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
  42. package/eigen/Eigen/src/Core/Array.h +329 -370
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
  48. package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
  49. package/eigen/Eigen/src/Core/Block.h +371 -390
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
  53. package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
  59. package/eigen/Eigen/src/Core/DenseBase.h +630 -658
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
  61. package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +168 -207
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +167 -217
  67. package/eigen/Eigen/src/Core/EigenBase.h +74 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
  75. package/eigen/Eigen/src/Core/IO.h +131 -156
  76. package/eigen/Eigen/src/Core/IndexedView.h +209 -125
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +50 -59
  80. package/eigen/Eigen/src/Core/Map.h +123 -141
  81. package/eigen/Eigen/src/Core/MapBase.h +255 -282
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
  84. package/eigen/Eigen/src/Core/Matrix.h +463 -494
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
  86. package/eigen/Eigen/src/Core/NestByValue.h +58 -52
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -86
  88. package/eigen/Eigen/src/Core/NumTraits.h +206 -206
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
  92. package/eigen/Eigen/src/Core/Product.h +246 -130
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
  94. package/eigen/Eigen/src/Core/Random.h +153 -164
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +334 -314
  98. package/eigen/Eigen/src/Core/Ref.h +259 -257
  99. package/eigen/Eigen/src/Core/Replicate.h +92 -104
  100. package/eigen/Eigen/src/Core/Reshaped.h +215 -271
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +133 -148
  103. package/eigen/Eigen/src/Core/Select.h +68 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +88 -102
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
  109. package/eigen/Eigen/src/Core/SolverBase.h +132 -133
  110. package/eigen/Eigen/src/Core/StableNorm.h +113 -147
  111. package/eigen/Eigen/src/Core/StlIterators.h +404 -248
  112. package/eigen/Eigen/src/Core/Stride.h +90 -92
  113. package/eigen/Eigen/src/Core/Swap.h +70 -39
  114. package/eigen/Eigen/src/Core/Transpose.h +258 -295
  115. package/eigen/Eigen/src/Core/Transpositions.h +270 -333
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
  119. package/eigen/Eigen/src/Core/Visitor.h +464 -308
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
  217. package/eigen/Eigen/src/Core/util/Constants.h +297 -262
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
  226. package/eigen/Eigen/src/Core/util/Macros.h +655 -773
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +970 -748
  229. package/eigen/Eigen/src/Core/util/Meta.h +581 -633
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
  264. package/eigen/Eigen/src/Geometry/Transform.h +858 -936
  265. package/eigen/Eigen/src/Geometry/Translation.h +94 -92
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
  269. package/eigen/Eigen/src/Householder/Householder.h +102 -124
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
  285. package/eigen/Eigen/src/LU/Determinant.h +50 -69
  286. package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/package.json +1 -1
  409. package/eigen/COPYING.APACHE +0 -203
  410. package/eigen/COPYING.BSD +0 -26
  411. package/eigen/COPYING.GPL +0 -674
  412. package/eigen/COPYING.LGPL +0 -502
  413. package/eigen/COPYING.MINPACK +0 -51
  414. package/eigen/COPYING.MPL2 +0 -373
  415. package/eigen/COPYING.README +0 -18
  416. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
  417. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
  418. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
  419. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
  420. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  421. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  422. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  423. package/eigen/Eigen/src/misc/lapack.h +0 -152
  424. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
  425. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
  426. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  427. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
  428. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  429. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
  430. package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
  431. package/eigen/README.md +0 -5
@@ -10,192 +10,164 @@
10
10
  #ifndef EIGEN_ITERATIVE_SOLVER_BASE_H
11
11
  #define EIGEN_ITERATIVE_SOLVER_BASE_H
12
12
 
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
13
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
128
 
149
- public:
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;
@@ -204,18 +176,18 @@ public:
204
176
  return derived();
205
177
  }
206
178
 
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
- {
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) {
219
191
  eigen_assert(m_analysisIsOk && "You must first call analyzePattern()");
220
192
  grab(A.derived());
221
193
  m_preconditioner.factorize(matrix());
@@ -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,23 +218,22 @@ public:
247
218
  }
248
219
 
249
220
  /** \internal */
250
- EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT { return matrix().rows(); }
221
+ constexpr Index rows() const noexcept { return matrix().rows(); }
251
222
 
252
223
  /** \internal */
253
- EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT { 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
  }
@@ -275,137 +245,122 @@ public:
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 set 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
- }
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; }
285
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_with_guess_impl(const Rhs& b, SparseMatrixBase<DestDerived> &aDest) const
335
- {
336
- eigen_assert(rows()==b.rows());
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());
337
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);
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);
347
308
  ComputationInfo global_info = Success;
348
- for(Index k=0; k<rhsCols; ++k)
349
- {
309
+ for (Index k = 0; k < rhsCols; ++k) {
350
310
  tb = b.col(k);
351
311
  tx = dest.col(k);
352
- derived()._solve_vector_with_guess_impl(tb,tx);
312
+ derived()._solve_vector_with_guess_impl(tb, tx);
353
313
  tmp.col(k) = tx.sparseView(0);
354
314
 
355
315
  // The call to _solve_vector_with_guess_impl updates m_info, so if it failed for a previous column
356
316
  // we need to restore it to the worst value.
357
- if(m_info==NumericalIssue)
317
+ if (m_info == NumericalIssue)
358
318
  global_info = NumericalIssue;
359
- else if(m_info==NoConvergence)
319
+ else if (m_info == NoConvergence)
360
320
  global_info = NoConvergence;
361
321
  }
362
322
  m_info = global_info;
363
323
  dest.swap(tmp);
364
324
  }
365
325
 
366
- template<typename Rhs, typename DestDerived>
367
- typename internal::enable_if<Rhs::ColsAtCompileTime!=1 && DestDerived::ColsAtCompileTime!=1>::type
368
- _solve_with_guess_impl(const Rhs& b, MatrixBase<DestDerived> &aDest) const
369
- {
370
- eigen_assert(rows()==b.rows());
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());
371
330
 
372
331
  Index rhsCols = b.cols();
373
332
  DestDerived& dest(aDest.derived());
374
333
  ComputationInfo global_info = Success;
375
- for(Index k=0; k<rhsCols; ++k)
376
- {
377
- typename DestDerived::ColXpr xk(dest,k);
378
- typename Rhs::ConstColXpr bk(b,k);
379
- derived()._solve_vector_with_guess_impl(bk,xk);
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);
380
338
 
381
339
  // The call to _solve_vector_with_guess updates m_info, so if it failed for a previous column
382
340
  // we need to restore it to the worst value.
383
- if(m_info==NumericalIssue)
341
+ if (m_info == NumericalIssue)
384
342
  global_info = NumericalIssue;
385
- else if(m_info==NoConvergence)
343
+ else if (m_info == NoConvergence)
386
344
  global_info = NoConvergence;
387
345
  }
388
346
  m_info = global_info;
389
347
  }
390
348
 
391
- template<typename Rhs, typename DestDerived>
392
- typename internal::enable_if<Rhs::ColsAtCompileTime==1 || DestDerived::ColsAtCompileTime==1>::type
393
- _solve_with_guess_impl(const Rhs& b, MatrixBase<DestDerived> &dest) const
394
- {
395
- derived()._solve_vector_with_guess_impl(b,dest.derived());
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());
396
353
  }
397
354
 
398
355
  /** \internal default initial guess = 0 */
399
- template<typename Rhs,typename Dest>
400
- void _solve_impl(const Rhs& b, Dest& x) const
401
- {
356
+ template <typename Rhs, typename Dest>
357
+ void _solve_impl(const Rhs& b, Dest& x) const {
402
358
  x.setZero();
403
- derived()._solve_with_guess_impl(b,x);
359
+ derived()._solve_with_guess_impl(b, x);
404
360
  }
405
361
 
406
- protected:
407
- void init()
408
- {
362
+ protected:
363
+ void init() {
409
364
  m_isInitialized = false;
410
365
  m_analysisIsOk = false;
411
366
  m_factorizationIsOk = false;
@@ -416,14 +371,10 @@ protected:
416
371
  typedef internal::generic_matrix_wrapper<MatrixType> MatrixWrapper;
417
372
  typedef typename MatrixWrapper::ActualMatrixType ActualMatrixType;
418
373
 
419
- const ActualMatrixType& matrix() const
420
- {
421
- return m_matrixWrapper.matrix();
422
- }
374
+ const ActualMatrixType& matrix() const { return m_matrixWrapper.matrix(); }
423
375
 
424
- template<typename InputType>
425
- void grab(const InputType &A)
426
- {
376
+ template <typename InputType>
377
+ void grab(const InputType& A) {
427
378
  m_matrixWrapper.grab(A);
428
379
  }
429
380
 
@@ -439,6 +390,6 @@ protected:
439
390
  mutable bool m_analysisIsOk, m_factorizationIsOk;
440
391
  };
441
392
 
442
- } // end namespace Eigen
393
+ } // end namespace Eigen
443
394
 
444
- #endif // EIGEN_ITERATIVE_SOLVER_BASE_H
395
+ #endif // EIGEN_ITERATIVE_SOLVER_BASE_H