@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,446 +10,410 @@
10
10
  #ifndef EIGEN_LLT_H
11
11
  #define EIGEN_LLT_H
12
12
 
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
13
16
  namespace Eigen {
14
17
 
15
- namespace internal{
18
+ namespace internal {
16
19
 
17
- template<typename _MatrixType, int _UpLo> struct traits<LLT<_MatrixType, _UpLo> >
18
- : traits<_MatrixType>
19
- {
20
+ template <typename MatrixType_, int UpLo_>
21
+ struct traits<LLT<MatrixType_, UpLo_> > : traits<MatrixType_> {
20
22
  typedef MatrixXpr XprKind;
21
23
  typedef SolverStorage StorageKind;
22
24
  typedef int StorageIndex;
23
25
  enum { Flags = 0 };
24
26
  };
25
27
 
26
- template<typename MatrixType, int UpLo> struct LLT_Traits;
27
- }
28
+ template <typename MatrixType, int UpLo>
29
+ struct LLT_Traits;
30
+ } // namespace internal
28
31
 
29
32
  /** \ingroup Cholesky_Module
30
- *
31
- * \class LLT
32
- *
33
- * \brief Standard Cholesky decomposition (LL^T) of a matrix and associated features
34
- *
35
- * \tparam _MatrixType the type of the matrix of which we are computing the LL^T Cholesky decomposition
36
- * \tparam _UpLo the triangular part that will be used for the decompositon: Lower (default) or Upper.
37
- * The other triangular part won't be read.
38
- *
39
- * This class performs a LL^T Cholesky decomposition of a symmetric, positive definite
40
- * matrix A such that A = LL^* = U^*U, where L is lower triangular.
41
- *
42
- * While the Cholesky decomposition is particularly useful to solve selfadjoint problems like D^*D x = b,
43
- * for that purpose, we recommend the Cholesky decomposition without square root which is more stable
44
- * and even faster. Nevertheless, this standard Cholesky decomposition remains useful in many other
45
- * situations like generalised eigen problems with hermitian matrices.
46
- *
47
- * Remember that Cholesky decompositions are not rank-revealing. This LLT decomposition is only stable on positive definite matrices,
48
- * use LDLT instead for the semidefinite case. Also, do not use a Cholesky decomposition to determine whether a system of equations
49
- * has a solution.
50
- *
51
- * Example: \include LLT_example.cpp
52
- * Output: \verbinclude LLT_example.out
53
- *
54
- * \b Performance: for best performance, it is recommended to use a column-major storage format
55
- * with the Lower triangular part (the default), or, equivalently, a row-major storage format
56
- * with the Upper triangular part. Otherwise, you might get a 20% slowdown for the full factorization
57
- * step, and rank-updates can be up to 3 times slower.
58
- *
59
- * This class supports the \link InplaceDecomposition inplace decomposition \endlink mechanism.
60
- *
61
- * Note that during the decomposition, only the lower (or upper, as defined by _UpLo) triangular part of A is considered.
62
- * Therefore, the strict lower part does not have to store correct values.
63
- *
64
- * \sa MatrixBase::llt(), SelfAdjointView::llt(), class LDLT
65
- */
66
- template<typename _MatrixType, int _UpLo> class LLT
67
- : public SolverBase<LLT<_MatrixType, _UpLo> >
68
- {
69
- public:
70
- typedef _MatrixType MatrixType;
71
- typedef SolverBase<LLT> Base;
72
- friend class SolverBase<LLT>;
73
-
74
- EIGEN_GENERIC_PUBLIC_INTERFACE(LLT)
75
- enum {
76
- MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
77
- };
78
-
79
- enum {
80
- PacketSize = internal::packet_traits<Scalar>::size,
81
- AlignmentMask = int(PacketSize)-1,
82
- UpLo = _UpLo
83
- };
84
-
85
- typedef internal::LLT_Traits<MatrixType,UpLo> Traits;
86
-
87
- /**
88
- * \brief Default Constructor.
89
- *
90
- * The default constructor is useful in cases in which the user intends to
91
- * perform decompositions via LLT::compute(const MatrixType&).
92
- */
93
- LLT() : m_matrix(), m_isInitialized(false) {}
94
-
95
- /** \brief Default Constructor with memory preallocation
96
- *
97
- * Like the default constructor but with preallocation of the internal data
98
- * according to the specified problem \a size.
99
- * \sa LLT()
100
- */
101
- explicit LLT(Index size) : m_matrix(size, size),
102
- m_isInitialized(false) {}
103
-
104
- template<typename InputType>
105
- explicit LLT(const EigenBase<InputType>& matrix)
106
- : m_matrix(matrix.rows(), matrix.cols()),
107
- m_isInitialized(false)
108
- {
109
- compute(matrix.derived());
110
- }
33
+ *
34
+ * \class LLT
35
+ *
36
+ * \brief Standard Cholesky decomposition (LL^T) of a matrix and associated features
37
+ *
38
+ * \tparam MatrixType_ the type of the matrix of which we are computing the LL^T Cholesky decomposition
39
+ * \tparam UpLo_ the triangular part that will be used for the decomposition: Lower (default) or Upper.
40
+ * The other triangular part won't be read.
41
+ *
42
+ * This class performs a LL^T Cholesky decomposition of a symmetric, positive definite
43
+ * matrix A such that A = LL^* = U^*U, where L is lower triangular.
44
+ *
45
+ * While the Cholesky decomposition is particularly useful to solve selfadjoint problems like D^*D x = b,
46
+ * for that purpose, we recommend the Cholesky decomposition without square root which is more stable
47
+ * and even faster. Nevertheless, this standard Cholesky decomposition remains useful in many other
48
+ * situations like generalised eigen problems with hermitian matrices.
49
+ *
50
+ * Remember that Cholesky decompositions are not rank-revealing. This LLT decomposition is only stable on positive
51
+ * definite matrices, use LDLT instead for the semidefinite case. Also, do not use a Cholesky decomposition to determine
52
+ * whether a system of equations has a solution.
53
+ *
54
+ * Example: \include LLT_example.cpp
55
+ * Output: \verbinclude LLT_example.out
56
+ *
57
+ * \b Performance: for best performance, it is recommended to use a column-major storage format
58
+ * with the Lower triangular part (the default), or, equivalently, a row-major storage format
59
+ * with the Upper triangular part. Otherwise, you might get a 20% slowdown for the full factorization
60
+ * step, and rank-updates can be up to 3 times slower.
61
+ *
62
+ * This class supports the \link InplaceDecomposition inplace decomposition \endlink mechanism.
63
+ *
64
+ * Note that during the decomposition, only the lower (or upper, as defined by UpLo_) triangular part of A is
65
+ * considered. Therefore, the strict lower part does not have to store correct values.
66
+ *
67
+ * \sa MatrixBase::llt(), SelfAdjointView::llt(), class LDLT
68
+ */
69
+ template <typename MatrixType_, int UpLo_>
70
+ class LLT : public SolverBase<LLT<MatrixType_, UpLo_> > {
71
+ public:
72
+ typedef MatrixType_ MatrixType;
73
+ typedef SolverBase<LLT> Base;
74
+ friend class SolverBase<LLT>;
75
+
76
+ EIGEN_GENERIC_PUBLIC_INTERFACE(LLT)
77
+ enum { MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime };
78
+
79
+ enum { PacketSize = internal::packet_traits<Scalar>::size, AlignmentMask = int(PacketSize) - 1, UpLo = UpLo_ };
80
+
81
+ typedef internal::LLT_Traits<MatrixType, UpLo> Traits;
82
+
83
+ /**
84
+ * \brief Default Constructor.
85
+ *
86
+ * The default constructor is useful in cases in which the user intends to
87
+ * perform decompositions via LLT::compute(const MatrixType&).
88
+ */
89
+ LLT() : m_matrix(), m_isInitialized(false) {}
90
+
91
+ /** \brief Default Constructor with memory preallocation
92
+ *
93
+ * Like the default constructor but with preallocation of the internal data
94
+ * according to the specified problem \a size.
95
+ * \sa LLT()
96
+ */
97
+ explicit LLT(Index size) : m_matrix(size, size), m_isInitialized(false) {}
98
+
99
+ template <typename InputType>
100
+ explicit LLT(const EigenBase<InputType>& matrix) : m_matrix(matrix.rows(), matrix.cols()), m_isInitialized(false) {
101
+ compute(matrix.derived());
102
+ }
111
103
 
112
- /** \brief Constructs a LLT factorization from a given matrix
113
- *
114
- * This overloaded constructor is provided for \link InplaceDecomposition inplace decomposition \endlink when
115
- * \c MatrixType is a Eigen::Ref.
116
- *
117
- * \sa LLT(const EigenBase&)
118
- */
119
- template<typename InputType>
120
- explicit LLT(EigenBase<InputType>& matrix)
121
- : m_matrix(matrix.derived()),
122
- m_isInitialized(false)
123
- {
124
- compute(matrix.derived());
125
- }
104
+ /** \brief Constructs a LLT factorization from a given matrix
105
+ *
106
+ * This overloaded constructor is provided for \link InplaceDecomposition inplace decomposition \endlink when
107
+ * \c MatrixType is a Eigen::Ref.
108
+ *
109
+ * \sa LLT(const EigenBase&)
110
+ */
111
+ template <typename InputType>
112
+ explicit LLT(EigenBase<InputType>& matrix) : m_matrix(matrix.derived()), m_isInitialized(false) {
113
+ compute(matrix.derived());
114
+ }
126
115
 
127
- /** \returns a view of the upper triangular matrix U */
128
- inline typename Traits::MatrixU matrixU() const
129
- {
130
- eigen_assert(m_isInitialized && "LLT is not initialized.");
131
- return Traits::getU(m_matrix);
132
- }
116
+ /** \returns a view of the upper triangular matrix U */
117
+ inline typename Traits::MatrixU matrixU() const {
118
+ eigen_assert(m_isInitialized && "LLT is not initialized.");
119
+ return Traits::getU(m_matrix);
120
+ }
133
121
 
134
- /** \returns a view of the lower triangular matrix L */
135
- inline typename Traits::MatrixL matrixL() const
136
- {
137
- eigen_assert(m_isInitialized && "LLT is not initialized.");
138
- return Traits::getL(m_matrix);
139
- }
122
+ /** \returns a view of the lower triangular matrix L */
123
+ inline typename Traits::MatrixL matrixL() const {
124
+ eigen_assert(m_isInitialized && "LLT is not initialized.");
125
+ return Traits::getL(m_matrix);
126
+ }
140
127
 
141
- #ifdef EIGEN_PARSED_BY_DOXYGEN
142
- /** \returns the solution x of \f$ A x = b \f$ using the current decomposition of A.
143
- *
144
- * Since this LLT class assumes anyway that the matrix A is invertible, the solution
145
- * theoretically exists and is unique regardless of b.
146
- *
147
- * Example: \include LLT_solve.cpp
148
- * Output: \verbinclude LLT_solve.out
149
- *
150
- * \sa solveInPlace(), MatrixBase::llt(), SelfAdjointView::llt()
151
- */
152
- template<typename Rhs>
153
- inline const Solve<LLT, Rhs>
154
- solve(const MatrixBase<Rhs>& b) const;
155
- #endif
156
-
157
- template<typename Derived>
158
- void solveInPlace(const MatrixBase<Derived> &bAndX) const;
159
-
160
- template<typename InputType>
161
- LLT& compute(const EigenBase<InputType>& matrix);
162
-
163
- /** \returns an estimate of the reciprocal condition number of the matrix of
164
- * which \c *this is the Cholesky decomposition.
165
- */
166
- RealScalar rcond() const
167
- {
168
- eigen_assert(m_isInitialized && "LLT is not initialized.");
169
- eigen_assert(m_info == Success && "LLT failed because matrix appears to be negative");
170
- return internal::rcond_estimate_helper(m_l1_norm, *this);
171
- }
128
+ #ifdef EIGEN_PARSED_BY_DOXYGEN
129
+ /** \returns the solution x of \f$ A x = b \f$ using the current decomposition of A.
130
+ *
131
+ * Since this LLT class assumes anyway that the matrix A is invertible, the solution
132
+ * theoretically exists and is unique regardless of b.
133
+ *
134
+ * Example: \include LLT_solve.cpp
135
+ * Output: \verbinclude LLT_solve.out
136
+ *
137
+ * \sa solveInPlace(), MatrixBase::llt(), SelfAdjointView::llt()
138
+ */
139
+ template <typename Rhs>
140
+ inline const Solve<LLT, Rhs> solve(const MatrixBase<Rhs>& b) const;
141
+ #endif
172
142
 
173
- /** \returns the LLT decomposition matrix
174
- *
175
- * TODO: document the storage layout
176
- */
177
- inline const MatrixType& matrixLLT() const
178
- {
179
- eigen_assert(m_isInitialized && "LLT is not initialized.");
180
- return m_matrix;
181
- }
143
+ template <typename Derived>
144
+ void solveInPlace(const MatrixBase<Derived>& bAndX) const;
182
145
 
183
- MatrixType reconstructedMatrix() const;
146
+ template <typename InputType>
147
+ LLT& compute(const EigenBase<InputType>& matrix);
184
148
 
149
+ /** \returns an estimate of the reciprocal condition number of the matrix of
150
+ * which \c *this is the Cholesky decomposition.
151
+ */
152
+ RealScalar rcond() const {
153
+ eigen_assert(m_isInitialized && "LLT is not initialized.");
154
+ eigen_assert(m_info == Success && "LLT failed because matrix appears to be negative");
155
+ return internal::rcond_estimate_helper(m_l1_norm, *this);
156
+ }
185
157
 
186
- /** \brief Reports whether previous computation was successful.
187
- *
188
- * \returns \c Success if computation was successful,
189
- * \c NumericalIssue if the matrix.appears not to be positive definite.
190
- */
191
- ComputationInfo info() const
192
- {
193
- eigen_assert(m_isInitialized && "LLT is not initialized.");
194
- return m_info;
195
- }
158
+ /** \returns the LLT decomposition matrix
159
+ *
160
+ * TODO: document the storage layout
161
+ */
162
+ inline const MatrixType& matrixLLT() const {
163
+ eigen_assert(m_isInitialized && "LLT is not initialized.");
164
+ return m_matrix;
165
+ }
196
166
 
197
- /** \returns the adjoint of \c *this, that is, a const reference to the decomposition itself as the underlying matrix is self-adjoint.
198
- *
199
- * This method is provided for compatibility with other matrix decompositions, thus enabling generic code such as:
200
- * \code x = decomposition.adjoint().solve(b) \endcode
201
- */
202
- const LLT& adjoint() const EIGEN_NOEXCEPT { return *this; };
167
+ MatrixType reconstructedMatrix() const;
203
168
 
204
- inline EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows(); }
205
- inline EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols(); }
169
+ /** \brief Reports whether previous computation was successful.
170
+ *
171
+ * \returns \c Success if computation was successful,
172
+ * \c NumericalIssue if the matrix.appears not to be positive definite.
173
+ */
174
+ ComputationInfo info() const {
175
+ eigen_assert(m_isInitialized && "LLT is not initialized.");
176
+ return m_info;
177
+ }
206
178
 
207
- template<typename VectorType>
208
- LLT & rankUpdate(const VectorType& vec, const RealScalar& sigma = 1);
179
+ /** \returns the adjoint of \c *this, that is, a const reference to the decomposition itself as the underlying matrix
180
+ * is self-adjoint.
181
+ *
182
+ * This method is provided for compatibility with other matrix decompositions, thus enabling generic code such as:
183
+ * \code x = decomposition.adjoint().solve(b) \endcode
184
+ */
185
+ const LLT& adjoint() const noexcept { return *this; }
209
186
 
210
- #ifndef EIGEN_PARSED_BY_DOXYGEN
211
- template<typename RhsType, typename DstType>
212
- void _solve_impl(const RhsType &rhs, DstType &dst) const;
187
+ constexpr Index rows() const noexcept { return m_matrix.rows(); }
188
+ constexpr Index cols() const noexcept { return m_matrix.cols(); }
213
189
 
214
- template<bool Conjugate, typename RhsType, typename DstType>
215
- void _solve_impl_transposed(const RhsType &rhs, DstType &dst) const;
216
- #endif
190
+ template <typename VectorType>
191
+ LLT& rankUpdate(const VectorType& vec, const RealScalar& sigma = 1);
217
192
 
218
- protected:
193
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
194
+ template <typename RhsType, typename DstType>
195
+ void _solve_impl(const RhsType& rhs, DstType& dst) const;
219
196
 
220
- static void check_template_parameters()
221
- {
222
- EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar);
223
- }
197
+ template <bool Conjugate, typename RhsType, typename DstType>
198
+ void _solve_impl_transposed(const RhsType& rhs, DstType& dst) const;
199
+ #endif
224
200
 
225
- /** \internal
226
- * Used to compute and store L
227
- * The strict upper part is not used and even not initialized.
228
- */
229
- MatrixType m_matrix;
230
- RealScalar m_l1_norm;
231
- bool m_isInitialized;
232
- ComputationInfo m_info;
201
+ protected:
202
+ EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar)
203
+
204
+ /** \internal
205
+ * Used to compute and store L
206
+ * The strict upper part is not used and even not initialized.
207
+ */
208
+ MatrixType m_matrix;
209
+ RealScalar m_l1_norm;
210
+ bool m_isInitialized;
211
+ ComputationInfo m_info;
233
212
  };
234
213
 
235
214
  namespace internal {
236
215
 
237
- template<typename Scalar, int UpLo> struct llt_inplace;
216
+ template <typename Scalar, int UpLo>
217
+ struct llt_inplace;
238
218
 
239
- template<typename MatrixType, typename VectorType>
240
- static Index llt_rank_update_lower(MatrixType& mat, const VectorType& vec, const typename MatrixType::RealScalar& sigma)
241
- {
219
+ template <typename MatrixType, typename VectorType>
220
+ static Index llt_rank_update_lower(MatrixType& mat, const VectorType& vec,
221
+ const typename MatrixType::RealScalar& sigma) {
242
222
  using std::sqrt;
243
223
  typedef typename MatrixType::Scalar Scalar;
244
224
  typedef typename MatrixType::RealScalar RealScalar;
245
225
  typedef typename MatrixType::ColXpr ColXpr;
246
- typedef typename internal::remove_all<ColXpr>::type ColXprCleaned;
226
+ typedef internal::remove_all_t<ColXpr> ColXprCleaned;
247
227
  typedef typename ColXprCleaned::SegmentReturnType ColXprSegment;
248
- typedef Matrix<Scalar,Dynamic,1> TempVectorType;
228
+ typedef Matrix<Scalar, Dynamic, 1> TempVectorType;
249
229
  typedef typename TempVectorType::SegmentReturnType TempVecSegment;
250
230
 
251
231
  Index n = mat.cols();
252
- eigen_assert(mat.rows()==n && vec.size()==n);
232
+ eigen_assert(mat.rows() == n && vec.size() == n);
253
233
 
254
234
  TempVectorType temp;
255
235
 
256
- if(sigma>0)
257
- {
236
+ if (sigma > 0) {
258
237
  // This version is based on Givens rotations.
259
238
  // It is faster than the other one below, but only works for updates,
260
239
  // i.e., for sigma > 0
261
240
  temp = sqrt(sigma) * vec;
262
241
 
263
- for(Index i=0; i<n; ++i)
264
- {
242
+ for (Index i = 0; i < n; ++i) {
265
243
  JacobiRotation<Scalar> g;
266
- g.makeGivens(mat(i,i), -temp(i), &mat(i,i));
244
+ g.makeGivens(mat(i, i), -temp(i), &mat(i, i));
267
245
 
268
- Index rs = n-i-1;
269
- if(rs>0)
270
- {
246
+ Index rs = n - i - 1;
247
+ if (rs > 0) {
271
248
  ColXprSegment x(mat.col(i).tail(rs));
272
249
  TempVecSegment y(temp.tail(rs));
273
250
  apply_rotation_in_the_plane(x, y, g);
274
251
  }
275
252
  }
276
- }
277
- else
278
- {
253
+ } else {
279
254
  temp = vec;
280
255
  RealScalar beta = 1;
281
- for(Index j=0; j<n; ++j)
282
- {
283
- RealScalar Ljj = numext::real(mat.coeff(j,j));
256
+ for (Index j = 0; j < n; ++j) {
257
+ RealScalar Ljj = numext::real(mat.coeff(j, j));
284
258
  RealScalar dj = numext::abs2(Ljj);
285
259
  Scalar wj = temp.coeff(j);
286
- RealScalar swj2 = sigma*numext::abs2(wj);
287
- RealScalar gamma = dj*beta + swj2;
260
+ RealScalar swj2 = sigma * numext::abs2(wj);
261
+ RealScalar gamma = dj * beta + swj2;
288
262
 
289
- RealScalar x = dj + swj2/beta;
290
- if (x<=RealScalar(0))
291
- return j;
263
+ RealScalar x = dj + swj2 / beta;
264
+ if (x <= RealScalar(0)) return j;
292
265
  RealScalar nLjj = sqrt(x);
293
- mat.coeffRef(j,j) = nLjj;
294
- beta += swj2/dj;
266
+ mat.coeffRef(j, j) = nLjj;
267
+ beta += swj2 / dj;
295
268
 
296
269
  // Update the terms of L
297
- Index rs = n-j-1;
298
- if(rs)
299
- {
300
- temp.tail(rs) -= (wj/Ljj) * mat.col(j).tail(rs);
301
- if(gamma != 0)
302
- mat.col(j).tail(rs) = (nLjj/Ljj) * mat.col(j).tail(rs) + (nLjj * sigma*numext::conj(wj)/gamma)*temp.tail(rs);
270
+ Index rs = n - j - 1;
271
+ if (rs) {
272
+ temp.tail(rs) -= (wj / Ljj) * mat.col(j).tail(rs);
273
+ if (!numext::is_exactly_zero(gamma))
274
+ mat.col(j).tail(rs) =
275
+ (nLjj / Ljj) * mat.col(j).tail(rs) + (nLjj * sigma * numext::conj(wj) / gamma) * temp.tail(rs);
303
276
  }
304
277
  }
305
278
  }
306
279
  return -1;
307
280
  }
308
281
 
309
- template<typename Scalar> struct llt_inplace<Scalar, Lower>
310
- {
282
+ template <typename Scalar>
283
+ struct llt_inplace<Scalar, Lower> {
311
284
  typedef typename NumTraits<Scalar>::Real RealScalar;
312
- template<typename MatrixType>
313
- static Index unblocked(MatrixType& mat)
314
- {
285
+ template <typename MatrixType>
286
+ static Index unblocked(MatrixType& mat) {
315
287
  using std::sqrt;
316
288
 
317
- eigen_assert(mat.rows()==mat.cols());
289
+ eigen_assert(mat.rows() == mat.cols());
318
290
  const Index size = mat.rows();
319
- for(Index k = 0; k < size; ++k)
320
- {
321
- Index rs = size-k-1; // remaining size
322
-
323
- Block<MatrixType,Dynamic,1> A21(mat,k+1,k,rs,1);
324
- Block<MatrixType,1,Dynamic> A10(mat,k,0,1,k);
325
- Block<MatrixType,Dynamic,Dynamic> A20(mat,k+1,0,rs,k);
326
-
327
- RealScalar x = numext::real(mat.coeff(k,k));
328
- if (k>0) x -= A10.squaredNorm();
329
- if (x<=RealScalar(0))
330
- return k;
331
- mat.coeffRef(k,k) = x = sqrt(x);
332
- if (k>0 && rs>0) A21.noalias() -= A20 * A10.adjoint();
333
- if (rs>0) A21 /= x;
291
+ for (Index k = 0; k < size; ++k) {
292
+ Index rs = size - k - 1; // remaining size
293
+
294
+ Block<MatrixType, Dynamic, 1> A21(mat, k + 1, k, rs, 1);
295
+ Block<MatrixType, 1, Dynamic> A10(mat, k, 0, 1, k);
296
+ Block<MatrixType, Dynamic, Dynamic> A20(mat, k + 1, 0, rs, k);
297
+
298
+ RealScalar x = numext::real(mat.coeff(k, k));
299
+ if (k > 0) x -= A10.squaredNorm();
300
+ if (x <= RealScalar(0)) return k;
301
+ mat.coeffRef(k, k) = x = sqrt(x);
302
+ if (k > 0 && rs > 0) A21.noalias() -= A20 * A10.adjoint();
303
+ if (rs > 0) A21 /= x;
334
304
  }
335
305
  return -1;
336
306
  }
337
307
 
338
- template<typename MatrixType>
339
- static Index blocked(MatrixType& m)
340
- {
341
- eigen_assert(m.rows()==m.cols());
308
+ template <typename MatrixType>
309
+ static Index blocked(MatrixType& m) {
310
+ eigen_assert(m.rows() == m.cols());
342
311
  Index size = m.rows();
343
- if(size<32)
344
- return unblocked(m);
312
+ if (size < 32) return unblocked(m);
345
313
 
346
- Index blockSize = size/8;
347
- blockSize = (blockSize/16)*16;
348
- blockSize = (std::min)((std::max)(blockSize,Index(8)), Index(128));
314
+ Index blockSize = size / 8;
315
+ blockSize = (blockSize / 16) * 16;
316
+ blockSize = (std::min)((std::max)(blockSize, Index(8)), Index(128));
349
317
 
350
- for (Index k=0; k<size; k+=blockSize)
351
- {
318
+ for (Index k = 0; k < size; k += blockSize) {
352
319
  // partition the matrix:
353
320
  // A00 | - | -
354
321
  // lu = A10 | A11 | -
355
322
  // A20 | A21 | A22
356
- Index bs = (std::min)(blockSize, size-k);
323
+ Index bs = (std::min)(blockSize, size - k);
357
324
  Index rs = size - k - bs;
358
- Block<MatrixType,Dynamic,Dynamic> A11(m,k, k, bs,bs);
359
- Block<MatrixType,Dynamic,Dynamic> A21(m,k+bs,k, rs,bs);
360
- Block<MatrixType,Dynamic,Dynamic> A22(m,k+bs,k+bs,rs,rs);
325
+ Block<MatrixType, Dynamic, Dynamic> A11(m, k, k, bs, bs);
326
+ Block<MatrixType, Dynamic, Dynamic> A21(m, k + bs, k, rs, bs);
327
+ Block<MatrixType, Dynamic, Dynamic> A22(m, k + bs, k + bs, rs, rs);
361
328
 
362
329
  Index ret;
363
- if((ret=unblocked(A11))>=0) return k+ret;
364
- if(rs>0) A11.adjoint().template triangularView<Upper>().template solveInPlace<OnTheRight>(A21);
365
- if(rs>0) A22.template selfadjointView<Lower>().rankUpdate(A21,typename NumTraits<RealScalar>::Literal(-1)); // bottleneck
330
+ if ((ret = unblocked(A11)) >= 0) return k + ret;
331
+ if (rs > 0) A11.adjoint().template triangularView<Upper>().template solveInPlace<OnTheRight>(A21);
332
+ if (rs > 0)
333
+ A22.template selfadjointView<Lower>().rankUpdate(A21,
334
+ typename NumTraits<RealScalar>::Literal(-1)); // bottleneck
366
335
  }
367
336
  return -1;
368
337
  }
369
338
 
370
- template<typename MatrixType, typename VectorType>
371
- static Index rankUpdate(MatrixType& mat, const VectorType& vec, const RealScalar& sigma)
372
- {
339
+ template <typename MatrixType, typename VectorType>
340
+ static Index rankUpdate(MatrixType& mat, const VectorType& vec, const RealScalar& sigma) {
373
341
  return Eigen::internal::llt_rank_update_lower(mat, vec, sigma);
374
342
  }
375
343
  };
376
344
 
377
- template<typename Scalar> struct llt_inplace<Scalar, Upper>
378
- {
345
+ template <typename Scalar>
346
+ struct llt_inplace<Scalar, Upper> {
379
347
  typedef typename NumTraits<Scalar>::Real RealScalar;
380
348
 
381
- template<typename MatrixType>
382
- static EIGEN_STRONG_INLINE Index unblocked(MatrixType& mat)
383
- {
349
+ template <typename MatrixType>
350
+ static EIGEN_STRONG_INLINE Index unblocked(MatrixType& mat) {
384
351
  Transpose<MatrixType> matt(mat);
385
352
  return llt_inplace<Scalar, Lower>::unblocked(matt);
386
353
  }
387
- template<typename MatrixType>
388
- static EIGEN_STRONG_INLINE Index blocked(MatrixType& mat)
389
- {
354
+ template <typename MatrixType>
355
+ static EIGEN_STRONG_INLINE Index blocked(MatrixType& mat) {
390
356
  Transpose<MatrixType> matt(mat);
391
357
  return llt_inplace<Scalar, Lower>::blocked(matt);
392
358
  }
393
- template<typename MatrixType, typename VectorType>
394
- static Index rankUpdate(MatrixType& mat, const VectorType& vec, const RealScalar& sigma)
395
- {
359
+ template <typename MatrixType, typename VectorType>
360
+ static Index rankUpdate(MatrixType& mat, const VectorType& vec, const RealScalar& sigma) {
396
361
  Transpose<MatrixType> matt(mat);
397
362
  return llt_inplace<Scalar, Lower>::rankUpdate(matt, vec.conjugate(), sigma);
398
363
  }
399
364
  };
400
365
 
401
- template<typename MatrixType> struct LLT_Traits<MatrixType,Lower>
402
- {
366
+ template <typename MatrixType>
367
+ struct LLT_Traits<MatrixType, Lower> {
403
368
  typedef const TriangularView<const MatrixType, Lower> MatrixL;
404
369
  typedef const TriangularView<const typename MatrixType::AdjointReturnType, Upper> MatrixU;
405
370
  static inline MatrixL getL(const MatrixType& m) { return MatrixL(m); }
406
371
  static inline MatrixU getU(const MatrixType& m) { return MatrixU(m.adjoint()); }
407
- static bool inplace_decomposition(MatrixType& m)
408
- { return llt_inplace<typename MatrixType::Scalar, Lower>::blocked(m)==-1; }
372
+ static bool inplace_decomposition(MatrixType& m) {
373
+ return llt_inplace<typename MatrixType::Scalar, Lower>::blocked(m) == -1;
374
+ }
409
375
  };
410
376
 
411
- template<typename MatrixType> struct LLT_Traits<MatrixType,Upper>
412
- {
377
+ template <typename MatrixType>
378
+ struct LLT_Traits<MatrixType, Upper> {
413
379
  typedef const TriangularView<const typename MatrixType::AdjointReturnType, Lower> MatrixL;
414
380
  typedef const TriangularView<const MatrixType, Upper> MatrixU;
415
381
  static inline MatrixL getL(const MatrixType& m) { return MatrixL(m.adjoint()); }
416
382
  static inline MatrixU getU(const MatrixType& m) { return MatrixU(m); }
417
- static bool inplace_decomposition(MatrixType& m)
418
- { return llt_inplace<typename MatrixType::Scalar, Upper>::blocked(m)==-1; }
383
+ static bool inplace_decomposition(MatrixType& m) {
384
+ return llt_inplace<typename MatrixType::Scalar, Upper>::blocked(m) == -1;
385
+ }
419
386
  };
420
387
 
421
- } // end namespace internal
388
+ } // end namespace internal
422
389
 
423
390
  /** Computes / recomputes the Cholesky decomposition A = LL^* = U^*U of \a matrix
424
- *
425
- * \returns a reference to *this
426
- *
427
- * Example: \include TutorialLinAlgComputeTwice.cpp
428
- * Output: \verbinclude TutorialLinAlgComputeTwice.out
429
- */
430
- template<typename MatrixType, int _UpLo>
431
- template<typename InputType>
432
- LLT<MatrixType,_UpLo>& LLT<MatrixType,_UpLo>::compute(const EigenBase<InputType>& a)
433
- {
434
- check_template_parameters();
435
-
436
- eigen_assert(a.rows()==a.cols());
391
+ *
392
+ * \returns a reference to *this
393
+ *
394
+ * Example: \include TutorialLinAlgComputeTwice.cpp
395
+ * Output: \verbinclude TutorialLinAlgComputeTwice.out
396
+ */
397
+ template <typename MatrixType, int UpLo_>
398
+ template <typename InputType>
399
+ LLT<MatrixType, UpLo_>& LLT<MatrixType, UpLo_>::compute(const EigenBase<InputType>& a) {
400
+ eigen_assert(a.rows() == a.cols());
437
401
  const Index size = a.rows();
438
402
  m_matrix.resize(size, size);
439
- if (!internal::is_same_dense(m_matrix, a.derived()))
440
- m_matrix = a.derived();
403
+ if (!internal::is_same_dense(m_matrix, a.derived())) m_matrix = a.derived();
441
404
 
442
405
  // Compute matrix L1 norm = max abs column sum.
443
406
  m_l1_norm = RealScalar(0);
444
407
  // TODO move this code to SelfAdjointView
445
408
  for (Index col = 0; col < size; ++col) {
446
409
  RealScalar abs_col_sum;
447
- if (_UpLo == Lower)
448
- abs_col_sum = m_matrix.col(col).tail(size - col).template lpNorm<1>() + m_matrix.row(col).head(col).template lpNorm<1>();
410
+ if (UpLo_ == Lower)
411
+ abs_col_sum =
412
+ m_matrix.col(col).tail(size - col).template lpNorm<1>() + m_matrix.row(col).head(col).template lpNorm<1>();
449
413
  else
450
- abs_col_sum = m_matrix.col(col).head(col).template lpNorm<1>() + m_matrix.row(col).tail(size - col).template lpNorm<1>();
451
- if (abs_col_sum > m_l1_norm)
452
- m_l1_norm = abs_col_sum;
414
+ abs_col_sum =
415
+ m_matrix.col(col).head(col).template lpNorm<1>() + m_matrix.row(col).tail(size - col).template lpNorm<1>();
416
+ if (abs_col_sum > m_l1_norm) m_l1_norm = abs_col_sum;
453
417
  }
454
418
 
455
419
  m_isInitialized = true;
@@ -460,18 +424,17 @@ LLT<MatrixType,_UpLo>& LLT<MatrixType,_UpLo>::compute(const EigenBase<InputType>
460
424
  }
461
425
 
462
426
  /** Performs a rank one update (or dowdate) of the current decomposition.
463
- * If A = LL^* before the rank one update,
464
- * then after it we have LL^* = A + sigma * v v^* where \a v must be a vector
465
- * of same dimension.
466
- */
467
- template<typename _MatrixType, int _UpLo>
468
- template<typename VectorType>
469
- LLT<_MatrixType,_UpLo> & LLT<_MatrixType,_UpLo>::rankUpdate(const VectorType& v, const RealScalar& sigma)
470
- {
427
+ * If A = LL^* before the rank one update,
428
+ * then after it we have LL^* = A + sigma * v v^* where \a v must be a vector
429
+ * of same dimension.
430
+ */
431
+ template <typename MatrixType_, int UpLo_>
432
+ template <typename VectorType>
433
+ LLT<MatrixType_, UpLo_>& LLT<MatrixType_, UpLo_>::rankUpdate(const VectorType& v, const RealScalar& sigma) {
471
434
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(VectorType);
472
- eigen_assert(v.size()==m_matrix.cols());
435
+ eigen_assert(v.size() == m_matrix.cols());
473
436
  eigen_assert(m_isInitialized);
474
- if(internal::llt_inplace<typename MatrixType::Scalar, UpLo>::rankUpdate(m_matrix,v,sigma)>=0)
437
+ if (internal::llt_inplace<typename MatrixType::Scalar, UpLo>::rankUpdate(m_matrix, v, sigma) >= 0)
475
438
  m_info = NumericalIssue;
476
439
  else
477
440
  m_info = Success;
@@ -480,43 +443,40 @@ LLT<_MatrixType,_UpLo> & LLT<_MatrixType,_UpLo>::rankUpdate(const VectorType& v,
480
443
  }
481
444
 
482
445
  #ifndef EIGEN_PARSED_BY_DOXYGEN
483
- template<typename _MatrixType,int _UpLo>
484
- template<typename RhsType, typename DstType>
485
- void LLT<_MatrixType,_UpLo>::_solve_impl(const RhsType &rhs, DstType &dst) const
486
- {
446
+ template <typename MatrixType_, int UpLo_>
447
+ template <typename RhsType, typename DstType>
448
+ void LLT<MatrixType_, UpLo_>::_solve_impl(const RhsType& rhs, DstType& dst) const {
487
449
  _solve_impl_transposed<true>(rhs, dst);
488
450
  }
489
451
 
490
- template<typename _MatrixType,int _UpLo>
491
- template<bool Conjugate, typename RhsType, typename DstType>
492
- void LLT<_MatrixType,_UpLo>::_solve_impl_transposed(const RhsType &rhs, DstType &dst) const
493
- {
494
- dst = rhs;
452
+ template <typename MatrixType_, int UpLo_>
453
+ template <bool Conjugate, typename RhsType, typename DstType>
454
+ void LLT<MatrixType_, UpLo_>::_solve_impl_transposed(const RhsType& rhs, DstType& dst) const {
455
+ dst = rhs;
495
456
 
496
- matrixL().template conjugateIf<!Conjugate>().solveInPlace(dst);
497
- matrixU().template conjugateIf<!Conjugate>().solveInPlace(dst);
457
+ matrixL().template conjugateIf<!Conjugate>().solveInPlace(dst);
458
+ matrixU().template conjugateIf<!Conjugate>().solveInPlace(dst);
498
459
  }
499
460
  #endif
500
461
 
501
462
  /** \internal use x = llt_object.solve(x);
502
- *
503
- * This is the \em in-place version of solve().
504
- *
505
- * \param bAndX represents both the right-hand side matrix b and result x.
506
- *
507
- * This version avoids a copy when the right hand side matrix b is not needed anymore.
508
- *
509
- * \warning The parameter is only marked 'const' to make the C++ compiler accept a temporary expression here.
510
- * This function will const_cast it, so constness isn't honored here.
511
- *
512
- * \sa LLT::solve(), MatrixBase::llt()
513
- */
514
- template<typename MatrixType, int _UpLo>
515
- template<typename Derived>
516
- void LLT<MatrixType,_UpLo>::solveInPlace(const MatrixBase<Derived> &bAndX) const
517
- {
463
+ *
464
+ * This is the \em in-place version of solve().
465
+ *
466
+ * \param bAndX represents both the right-hand side matrix b and result x.
467
+ *
468
+ * This version avoids a copy when the right hand side matrix b is not needed anymore.
469
+ *
470
+ * \warning The parameter is only marked 'const' to make the C++ compiler accept a temporary expression here.
471
+ * This function will const_cast it, so constness isn't honored here.
472
+ *
473
+ * \sa LLT::solve(), MatrixBase::llt()
474
+ */
475
+ template <typename MatrixType, int UpLo_>
476
+ template <typename Derived>
477
+ void LLT<MatrixType, UpLo_>::solveInPlace(const MatrixBase<Derived>& bAndX) const {
518
478
  eigen_assert(m_isInitialized && "LLT is not initialized.");
519
- eigen_assert(m_matrix.rows()==bAndX.rows());
479
+ eigen_assert(m_matrix.rows() == bAndX.rows());
520
480
  matrixL().solveInPlace(bAndX);
521
481
  matrixU().solveInPlace(bAndX);
522
482
  }
@@ -524,35 +484,31 @@ void LLT<MatrixType,_UpLo>::solveInPlace(const MatrixBase<Derived> &bAndX) const
524
484
  /** \returns the matrix represented by the decomposition,
525
485
  * i.e., it returns the product: L L^*.
526
486
  * This function is provided for debug purpose. */
527
- template<typename MatrixType, int _UpLo>
528
- MatrixType LLT<MatrixType,_UpLo>::reconstructedMatrix() const
529
- {
487
+ template <typename MatrixType, int UpLo_>
488
+ MatrixType LLT<MatrixType, UpLo_>::reconstructedMatrix() const {
530
489
  eigen_assert(m_isInitialized && "LLT is not initialized.");
531
490
  return matrixL() * matrixL().adjoint().toDenseMatrix();
532
491
  }
533
492
 
534
493
  /** \cholesky_module
535
- * \returns the LLT decomposition of \c *this
536
- * \sa SelfAdjointView::llt()
537
- */
538
- template<typename Derived>
539
- inline const LLT<typename MatrixBase<Derived>::PlainObject>
540
- MatrixBase<Derived>::llt() const
541
- {
494
+ * \returns the LLT decomposition of \c *this
495
+ * \sa SelfAdjointView::llt()
496
+ */
497
+ template <typename Derived>
498
+ inline const LLT<typename MatrixBase<Derived>::PlainObject> MatrixBase<Derived>::llt() const {
542
499
  return LLT<PlainObject>(derived());
543
500
  }
544
501
 
545
502
  /** \cholesky_module
546
- * \returns the LLT decomposition of \c *this
547
- * \sa SelfAdjointView::llt()
548
- */
549
- template<typename MatrixType, unsigned int UpLo>
550
- inline const LLT<typename SelfAdjointView<MatrixType, UpLo>::PlainObject, UpLo>
551
- SelfAdjointView<MatrixType, UpLo>::llt() const
552
- {
553
- return LLT<PlainObject,UpLo>(m_matrix);
503
+ * \returns the LLT decomposition of \c *this
504
+ * \sa SelfAdjointView::llt()
505
+ */
506
+ template <typename MatrixType, unsigned int UpLo>
507
+ inline const LLT<typename SelfAdjointView<MatrixType, UpLo>::PlainObject, UpLo> SelfAdjointView<MatrixType, UpLo>::llt()
508
+ const {
509
+ return LLT<PlainObject, UpLo>(m_matrix);
554
510
  }
555
511
 
556
- } // end namespace Eigen
512
+ } // end namespace Eigen
557
513
 
558
- #endif // EIGEN_LLT_H
514
+ #endif // EIGEN_LLT_H