@smake/eigen 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -20
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +187 -120
  6. package/eigen/Eigen/Eigenvalues +16 -13
  7. package/eigen/Eigen/Geometry +18 -18
  8. package/eigen/Eigen/Householder +9 -7
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -13
  11. package/eigen/Eigen/KLUSupport +23 -21
  12. package/eigen/Eigen/LU +15 -16
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -51
  15. package/eigen/Eigen/PaStiXSupport +23 -21
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -20
  18. package/eigen/Eigen/QtAlignedMalloc +5 -12
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -17
  21. package/eigen/Eigen/Sparse +1 -2
  22. package/eigen/Eigen/SparseCholesky +18 -15
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +9 -9
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
  37. package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
  42. package/eigen/Eigen/src/Core/Array.h +329 -370
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
  48. package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
  49. package/eigen/Eigen/src/Core/Block.h +371 -390
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
  53. package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
  59. package/eigen/Eigen/src/Core/DenseBase.h +630 -658
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
  61. package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +168 -207
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +167 -217
  67. package/eigen/Eigen/src/Core/EigenBase.h +74 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
  75. package/eigen/Eigen/src/Core/IO.h +131 -156
  76. package/eigen/Eigen/src/Core/IndexedView.h +209 -125
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +50 -59
  80. package/eigen/Eigen/src/Core/Map.h +123 -141
  81. package/eigen/Eigen/src/Core/MapBase.h +255 -282
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
  84. package/eigen/Eigen/src/Core/Matrix.h +463 -494
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
  86. package/eigen/Eigen/src/Core/NestByValue.h +58 -52
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -86
  88. package/eigen/Eigen/src/Core/NumTraits.h +206 -206
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
  92. package/eigen/Eigen/src/Core/Product.h +246 -130
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
  94. package/eigen/Eigen/src/Core/Random.h +153 -164
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +334 -314
  98. package/eigen/Eigen/src/Core/Ref.h +259 -257
  99. package/eigen/Eigen/src/Core/Replicate.h +92 -104
  100. package/eigen/Eigen/src/Core/Reshaped.h +215 -271
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +133 -148
  103. package/eigen/Eigen/src/Core/Select.h +68 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +88 -102
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
  109. package/eigen/Eigen/src/Core/SolverBase.h +132 -133
  110. package/eigen/Eigen/src/Core/StableNorm.h +113 -147
  111. package/eigen/Eigen/src/Core/StlIterators.h +404 -248
  112. package/eigen/Eigen/src/Core/Stride.h +90 -92
  113. package/eigen/Eigen/src/Core/Swap.h +70 -39
  114. package/eigen/Eigen/src/Core/Transpose.h +258 -295
  115. package/eigen/Eigen/src/Core/Transpositions.h +270 -333
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
  119. package/eigen/Eigen/src/Core/Visitor.h +464 -308
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
  217. package/eigen/Eigen/src/Core/util/Constants.h +297 -262
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
  226. package/eigen/Eigen/src/Core/util/Macros.h +655 -773
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +970 -748
  229. package/eigen/Eigen/src/Core/util/Meta.h +581 -633
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
  264. package/eigen/Eigen/src/Geometry/Transform.h +858 -936
  265. package/eigen/Eigen/src/Geometry/Translation.h +94 -92
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
  269. package/eigen/Eigen/src/Householder/Householder.h +102 -124
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
  285. package/eigen/Eigen/src/LU/Determinant.h +50 -69
  286. package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/package.json +1 -1
  409. package/eigen/COPYING.APACHE +0 -203
  410. package/eigen/COPYING.BSD +0 -26
  411. package/eigen/COPYING.GPL +0 -674
  412. package/eigen/COPYING.LGPL +0 -502
  413. package/eigen/COPYING.MINPACK +0 -51
  414. package/eigen/COPYING.MPL2 +0 -373
  415. package/eigen/COPYING.README +0 -18
  416. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
  417. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
  418. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
  419. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
  420. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  421. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  422. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  423. package/eigen/Eigen/src/misc/lapack.h +0 -152
  424. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
  425. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
  426. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  427. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
  428. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  429. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
  430. package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
  431. package/eigen/README.md +0 -5
@@ -11,299 +11,283 @@
11
11
  #ifndef EIGEN_HESSENBERGDECOMPOSITION_H
12
12
  #define EIGEN_HESSENBERGDECOMPOSITION_H
13
13
 
14
- namespace Eigen {
14
+ // IWYU pragma: private
15
+ #include "./InternalHeaderCheck.h"
16
+
17
+ namespace Eigen {
15
18
 
16
19
  namespace internal {
17
-
18
- template<typename MatrixType> struct HessenbergDecompositionMatrixHReturnType;
19
- template<typename MatrixType>
20
- struct traits<HessenbergDecompositionMatrixHReturnType<MatrixType> >
21
- {
20
+
21
+ template <typename MatrixType>
22
+ struct HessenbergDecompositionMatrixHReturnType;
23
+ template <typename MatrixType>
24
+ struct traits<HessenbergDecompositionMatrixHReturnType<MatrixType>> {
22
25
  typedef MatrixType ReturnType;
23
26
  };
24
27
 
25
- }
28
+ } // namespace internal
26
29
 
27
30
  /** \eigenvalues_module \ingroup Eigenvalues_Module
28
- *
29
- *
30
- * \class HessenbergDecomposition
31
- *
32
- * \brief Reduces a square matrix to Hessenberg form by an orthogonal similarity transformation
33
- *
34
- * \tparam _MatrixType the type of the matrix of which we are computing the Hessenberg decomposition
35
- *
36
- * This class performs an Hessenberg decomposition of a matrix \f$ A \f$. In
37
- * the real case, the Hessenberg decomposition consists of an orthogonal
38
- * matrix \f$ Q \f$ and a Hessenberg matrix \f$ H \f$ such that \f$ A = Q H
39
- * Q^T \f$. An orthogonal matrix is a matrix whose inverse equals its
40
- * transpose (\f$ Q^{-1} = Q^T \f$). A Hessenberg matrix has zeros below the
41
- * subdiagonal, so it is almost upper triangular. The Hessenberg decomposition
42
- * of a complex matrix is \f$ A = Q H Q^* \f$ with \f$ Q \f$ unitary (that is,
43
- * \f$ Q^{-1} = Q^* \f$).
44
- *
45
- * Call the function compute() to compute the Hessenberg decomposition of a
46
- * given matrix. Alternatively, you can use the
47
- * HessenbergDecomposition(const MatrixType&) constructor which computes the
48
- * Hessenberg decomposition at construction time. Once the decomposition is
49
- * computed, you can use the matrixH() and matrixQ() functions to construct
50
- * the matrices H and Q in the decomposition.
51
- *
52
- * The documentation for matrixH() contains an example of the typical use of
53
- * this class.
54
- *
55
- * \sa class ComplexSchur, class Tridiagonalization, \ref QR_Module "QR Module"
56
- */
57
- template<typename _MatrixType> class HessenbergDecomposition
58
- {
59
- public:
60
-
61
- /** \brief Synonym for the template parameter \p _MatrixType. */
62
- typedef _MatrixType MatrixType;
63
-
64
- enum {
65
- Size = MatrixType::RowsAtCompileTime,
66
- SizeMinusOne = Size == Dynamic ? Dynamic : Size - 1,
67
- Options = MatrixType::Options,
68
- MaxSize = MatrixType::MaxRowsAtCompileTime,
69
- MaxSizeMinusOne = MaxSize == Dynamic ? Dynamic : MaxSize - 1
70
- };
71
-
72
- /** \brief Scalar type for matrices of type #MatrixType. */
73
- typedef typename MatrixType::Scalar Scalar;
74
- typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
75
-
76
- /** \brief Type for vector of Householder coefficients.
77
- *
78
- * This is column vector with entries of type #Scalar. The length of the
79
- * vector is one less than the size of #MatrixType, if it is a fixed-side
80
- * type.
81
- */
82
- typedef Matrix<Scalar, SizeMinusOne, 1, Options & ~RowMajor, MaxSizeMinusOne, 1> CoeffVectorType;
83
-
84
- /** \brief Return type of matrixQ() */
85
- typedef HouseholderSequence<MatrixType,typename internal::remove_all<typename CoeffVectorType::ConjugateReturnType>::type> HouseholderSequenceType;
86
-
87
- typedef internal::HessenbergDecompositionMatrixHReturnType<MatrixType> MatrixHReturnType;
88
-
89
- /** \brief Default constructor; the decomposition will be computed later.
90
- *
91
- * \param [in] size The size of the matrix whose Hessenberg decomposition will be computed.
92
- *
93
- * The default constructor is useful in cases in which the user intends to
94
- * perform decompositions via compute(). The \p size parameter is only
95
- * used as a hint. It is not an error to give a wrong \p size, but it may
96
- * impair performance.
97
- *
98
- * \sa compute() for an example.
99
- */
100
- explicit HessenbergDecomposition(Index size = Size==Dynamic ? 2 : Size)
101
- : m_matrix(size,size),
102
- m_temp(size),
103
- m_isInitialized(false)
104
- {
105
- if(size>1)
106
- m_hCoeffs.resize(size-1);
107
- }
31
+ *
32
+ *
33
+ * \class HessenbergDecomposition
34
+ *
35
+ * \brief Reduces a square matrix to Hessenberg form by an orthogonal similarity transformation
36
+ *
37
+ * \tparam MatrixType_ the type of the matrix of which we are computing the Hessenberg decomposition
38
+ *
39
+ * This class performs an Hessenberg decomposition of a matrix \f$ A \f$. In
40
+ * the real case, the Hessenberg decomposition consists of an orthogonal
41
+ * matrix \f$ Q \f$ and a Hessenberg matrix \f$ H \f$ such that \f$ A = Q H
42
+ * Q^T \f$. An orthogonal matrix is a matrix whose inverse equals its
43
+ * transpose (\f$ Q^{-1} = Q^T \f$). A Hessenberg matrix has zeros below the
44
+ * subdiagonal, so it is almost upper triangular. The Hessenberg decomposition
45
+ * of a complex matrix is \f$ A = Q H Q^* \f$ with \f$ Q \f$ unitary (that is,
46
+ * \f$ Q^{-1} = Q^* \f$).
47
+ *
48
+ * Call the function compute() to compute the Hessenberg decomposition of a
49
+ * given matrix. Alternatively, you can use the
50
+ * HessenbergDecomposition(const MatrixType&) constructor which computes the
51
+ * Hessenberg decomposition at construction time. Once the decomposition is
52
+ * computed, you can use the matrixH() and matrixQ() functions to construct
53
+ * the matrices H and Q in the decomposition.
54
+ *
55
+ * The documentation for matrixH() contains an example of the typical use of
56
+ * this class.
57
+ *
58
+ * \sa class ComplexSchur, class Tridiagonalization, \ref QR_Module "QR Module"
59
+ */
60
+ template <typename MatrixType_>
61
+ class HessenbergDecomposition {
62
+ public:
63
+ /** \brief Synonym for the template parameter \p MatrixType_. */
64
+ typedef MatrixType_ MatrixType;
65
+
66
+ enum {
67
+ Size = MatrixType::RowsAtCompileTime,
68
+ SizeMinusOne = Size == Dynamic ? Dynamic : Size - 1,
69
+ Options = internal::traits<MatrixType>::Options,
70
+ MaxSize = MatrixType::MaxRowsAtCompileTime,
71
+ MaxSizeMinusOne = MaxSize == Dynamic ? Dynamic : MaxSize - 1
72
+ };
73
+
74
+ /** \brief Scalar type for matrices of type #MatrixType. */
75
+ typedef typename MatrixType::Scalar Scalar;
76
+ typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
77
+
78
+ /** \brief Type for vector of Householder coefficients.
79
+ *
80
+ * This is column vector with entries of type #Scalar. The length of the
81
+ * vector is one less than the size of #MatrixType, if it is a fixed-side
82
+ * type.
83
+ */
84
+ typedef Matrix<Scalar, SizeMinusOne, 1, Options & ~RowMajor, MaxSizeMinusOne, 1> CoeffVectorType;
85
+
86
+ /** \brief Return type of matrixQ() */
87
+ typedef HouseholderSequence<MatrixType, internal::remove_all_t<typename CoeffVectorType::ConjugateReturnType>>
88
+ HouseholderSequenceType;
89
+
90
+ typedef internal::HessenbergDecompositionMatrixHReturnType<MatrixType> MatrixHReturnType;
91
+
92
+ /** \brief Default constructor; the decomposition will be computed later.
93
+ *
94
+ * \param [in] size The size of the matrix whose Hessenberg decomposition will be computed.
95
+ *
96
+ * The default constructor is useful in cases in which the user intends to
97
+ * perform decompositions via compute(). The \p size parameter is only
98
+ * used as a hint. It is not an error to give a wrong \p size, but it may
99
+ * impair performance.
100
+ *
101
+ * \sa compute() for an example.
102
+ */
103
+ explicit HessenbergDecomposition(Index size = Size == Dynamic ? 2 : Size)
104
+ : m_matrix(size, size), m_temp(size), m_isInitialized(false) {
105
+ if (size > 1) m_hCoeffs.resize(size - 1);
106
+ }
108
107
 
109
- /** \brief Constructor; computes Hessenberg decomposition of given matrix.
110
- *
111
- * \param[in] matrix Square matrix whose Hessenberg decomposition is to be computed.
112
- *
113
- * This constructor calls compute() to compute the Hessenberg
114
- * decomposition.
115
- *
116
- * \sa matrixH() for an example.
117
- */
118
- template<typename InputType>
119
- explicit HessenbergDecomposition(const EigenBase<InputType>& matrix)
120
- : m_matrix(matrix.derived()),
121
- m_temp(matrix.rows()),
122
- m_isInitialized(false)
123
- {
124
- if(matrix.rows()<2)
125
- {
126
- m_isInitialized = true;
127
- return;
128
- }
129
- m_hCoeffs.resize(matrix.rows()-1,1);
130
- _compute(m_matrix, m_hCoeffs, m_temp);
108
+ /** \brief Constructor; computes Hessenberg decomposition of given matrix.
109
+ *
110
+ * \param[in] matrix Square matrix whose Hessenberg decomposition is to be computed.
111
+ *
112
+ * This constructor calls compute() to compute the Hessenberg
113
+ * decomposition.
114
+ *
115
+ * \sa matrixH() for an example.
116
+ */
117
+ template <typename InputType>
118
+ explicit HessenbergDecomposition(const EigenBase<InputType>& matrix)
119
+ : m_matrix(matrix.derived()), m_temp(matrix.rows()), m_isInitialized(false) {
120
+ if (matrix.rows() < 2) {
131
121
  m_isInitialized = true;
122
+ return;
132
123
  }
124
+ m_hCoeffs.resize(matrix.rows() - 1, 1);
125
+ _compute(m_matrix, m_hCoeffs, m_temp);
126
+ m_isInitialized = true;
127
+ }
133
128
 
134
- /** \brief Computes Hessenberg decomposition of given matrix.
135
- *
136
- * \param[in] matrix Square matrix whose Hessenberg decomposition is to be computed.
137
- * \returns Reference to \c *this
138
- *
139
- * The Hessenberg decomposition is computed by bringing the columns of the
140
- * matrix successively in the required form using Householder reflections
141
- * (see, e.g., Algorithm 7.4.2 in Golub \& Van Loan, <i>%Matrix
142
- * Computations</i>). The cost is \f$ 10n^3/3 \f$ flops, where \f$ n \f$
143
- * denotes the size of the given matrix.
144
- *
145
- * This method reuses of the allocated data in the HessenbergDecomposition
146
- * object.
147
- *
148
- * Example: \include HessenbergDecomposition_compute.cpp
149
- * Output: \verbinclude HessenbergDecomposition_compute.out
150
- */
151
- template<typename InputType>
152
- HessenbergDecomposition& compute(const EigenBase<InputType>& matrix)
153
- {
154
- m_matrix = matrix.derived();
155
- if(matrix.rows()<2)
156
- {
157
- m_isInitialized = true;
158
- return *this;
159
- }
160
- m_hCoeffs.resize(matrix.rows()-1,1);
161
- _compute(m_matrix, m_hCoeffs, m_temp);
129
+ /** \brief Computes Hessenberg decomposition of given matrix.
130
+ *
131
+ * \param[in] matrix Square matrix whose Hessenberg decomposition is to be computed.
132
+ * \returns Reference to \c *this
133
+ *
134
+ * The Hessenberg decomposition is computed by bringing the columns of the
135
+ * matrix successively in the required form using Householder reflections
136
+ * (see, e.g., Algorithm 7.4.2 in Golub \& Van Loan, <i>%Matrix
137
+ * Computations</i>). The cost is \f$ 10n^3/3 \f$ flops, where \f$ n \f$
138
+ * denotes the size of the given matrix.
139
+ *
140
+ * This method reuses of the allocated data in the HessenbergDecomposition
141
+ * object.
142
+ *
143
+ * Example: \include HessenbergDecomposition_compute.cpp
144
+ * Output: \verbinclude HessenbergDecomposition_compute.out
145
+ */
146
+ template <typename InputType>
147
+ HessenbergDecomposition& compute(const EigenBase<InputType>& matrix) {
148
+ m_matrix = matrix.derived();
149
+ if (matrix.rows() < 2) {
162
150
  m_isInitialized = true;
163
151
  return *this;
164
152
  }
153
+ m_hCoeffs.resize(matrix.rows() - 1, 1);
154
+ _compute(m_matrix, m_hCoeffs, m_temp);
155
+ m_isInitialized = true;
156
+ return *this;
157
+ }
165
158
 
166
- /** \brief Returns the Householder coefficients.
167
- *
168
- * \returns a const reference to the vector of Householder coefficients
169
- *
170
- * \pre Either the constructor HessenbergDecomposition(const MatrixType&)
171
- * or the member function compute(const MatrixType&) has been called
172
- * before to compute the Hessenberg decomposition of a matrix.
173
- *
174
- * The Householder coefficients allow the reconstruction of the matrix
175
- * \f$ Q \f$ in the Hessenberg decomposition from the packed data.
176
- *
177
- * \sa packedMatrix(), \ref Householder_Module "Householder module"
178
- */
179
- const CoeffVectorType& householderCoefficients() const
180
- {
181
- eigen_assert(m_isInitialized && "HessenbergDecomposition is not initialized.");
182
- return m_hCoeffs;
183
- }
184
-
185
- /** \brief Returns the internal representation of the decomposition
186
- *
187
- * \returns a const reference to a matrix with the internal representation
188
- * of the decomposition.
189
- *
190
- * \pre Either the constructor HessenbergDecomposition(const MatrixType&)
191
- * or the member function compute(const MatrixType&) has been called
192
- * before to compute the Hessenberg decomposition of a matrix.
193
- *
194
- * The returned matrix contains the following information:
195
- * - the upper part and lower sub-diagonal represent the Hessenberg matrix H
196
- * - the rest of the lower part contains the Householder vectors that, combined with
197
- * Householder coefficients returned by householderCoefficients(),
198
- * allows to reconstruct the matrix Q as
199
- * \f$ Q = H_{N-1} \ldots H_1 H_0 \f$.
200
- * Here, the matrices \f$ H_i \f$ are the Householder transformations
201
- * \f$ H_i = (I - h_i v_i v_i^T) \f$
202
- * where \f$ h_i \f$ is the \f$ i \f$th Householder coefficient and
203
- * \f$ v_i \f$ is the Householder vector defined by
204
- * \f$ v_i = [ 0, \ldots, 0, 1, M(i+2,i), \ldots, M(N-1,i) ]^T \f$
205
- * with M the matrix returned by this function.
206
- *
207
- * See LAPACK for further details on this packed storage.
208
- *
209
- * Example: \include HessenbergDecomposition_packedMatrix.cpp
210
- * Output: \verbinclude HessenbergDecomposition_packedMatrix.out
211
- *
212
- * \sa householderCoefficients()
213
- */
214
- const MatrixType& packedMatrix() const
215
- {
216
- eigen_assert(m_isInitialized && "HessenbergDecomposition is not initialized.");
217
- return m_matrix;
218
- }
159
+ /** \brief Returns the Householder coefficients.
160
+ *
161
+ * \returns a const reference to the vector of Householder coefficients
162
+ *
163
+ * \pre Either the constructor HessenbergDecomposition(const MatrixType&)
164
+ * or the member function compute(const MatrixType&) has been called
165
+ * before to compute the Hessenberg decomposition of a matrix.
166
+ *
167
+ * The Householder coefficients allow the reconstruction of the matrix
168
+ * \f$ Q \f$ in the Hessenberg decomposition from the packed data.
169
+ *
170
+ * \sa packedMatrix(), \ref Householder_Module "Householder module"
171
+ */
172
+ const CoeffVectorType& householderCoefficients() const {
173
+ eigen_assert(m_isInitialized && "HessenbergDecomposition is not initialized.");
174
+ return m_hCoeffs;
175
+ }
219
176
 
220
- /** \brief Reconstructs the orthogonal matrix Q in the decomposition
221
- *
222
- * \returns object representing the matrix Q
223
- *
224
- * \pre Either the constructor HessenbergDecomposition(const MatrixType&)
225
- * or the member function compute(const MatrixType&) has been called
226
- * before to compute the Hessenberg decomposition of a matrix.
227
- *
228
- * This function returns a light-weight object of template class
229
- * HouseholderSequence. You can either apply it directly to a matrix or
230
- * you can convert it to a matrix of type #MatrixType.
231
- *
232
- * \sa matrixH() for an example, class HouseholderSequence
233
- */
234
- HouseholderSequenceType matrixQ() const
235
- {
236
- eigen_assert(m_isInitialized && "HessenbergDecomposition is not initialized.");
237
- return HouseholderSequenceType(m_matrix, m_hCoeffs.conjugate())
238
- .setLength(m_matrix.rows() - 1)
239
- .setShift(1);
240
- }
177
+ /** \brief Returns the internal representation of the decomposition
178
+ *
179
+ * \returns a const reference to a matrix with the internal representation
180
+ * of the decomposition.
181
+ *
182
+ * \pre Either the constructor HessenbergDecomposition(const MatrixType&)
183
+ * or the member function compute(const MatrixType&) has been called
184
+ * before to compute the Hessenberg decomposition of a matrix.
185
+ *
186
+ * The returned matrix contains the following information:
187
+ * - the upper part and lower sub-diagonal represent the Hessenberg matrix H
188
+ * - the rest of the lower part contains the Householder vectors that, combined with
189
+ * Householder coefficients returned by householderCoefficients(),
190
+ * allows to reconstruct the matrix Q as
191
+ * \f$ Q = H_{N-1} \ldots H_1 H_0 \f$.
192
+ * Here, the matrices \f$ H_i \f$ are the Householder transformations
193
+ * \f$ H_i = (I - h_i v_i v_i^T) \f$
194
+ * where \f$ h_i \f$ is the \f$ i \f$th Householder coefficient and
195
+ * \f$ v_i \f$ is the Householder vector defined by
196
+ * \f$ v_i = [ 0, \ldots, 0, 1, M(i+2,i), \ldots, M(N-1,i) ]^T \f$
197
+ * with M the matrix returned by this function.
198
+ *
199
+ * See LAPACK for further details on this packed storage.
200
+ *
201
+ * Example: \include HessenbergDecomposition_packedMatrix.cpp
202
+ * Output: \verbinclude HessenbergDecomposition_packedMatrix.out
203
+ *
204
+ * \sa householderCoefficients()
205
+ */
206
+ const MatrixType& packedMatrix() const {
207
+ eigen_assert(m_isInitialized && "HessenbergDecomposition is not initialized.");
208
+ return m_matrix;
209
+ }
241
210
 
242
- /** \brief Constructs the Hessenberg matrix H in the decomposition
243
- *
244
- * \returns expression object representing the matrix H
245
- *
246
- * \pre Either the constructor HessenbergDecomposition(const MatrixType&)
247
- * or the member function compute(const MatrixType&) has been called
248
- * before to compute the Hessenberg decomposition of a matrix.
249
- *
250
- * The object returned by this function constructs the Hessenberg matrix H
251
- * when it is assigned to a matrix or otherwise evaluated. The matrix H is
252
- * constructed from the packed matrix as returned by packedMatrix(): The
253
- * upper part (including the subdiagonal) of the packed matrix contains
254
- * the matrix H. It may sometimes be better to directly use the packed
255
- * matrix instead of constructing the matrix H.
256
- *
257
- * Example: \include HessenbergDecomposition_matrixH.cpp
258
- * Output: \verbinclude HessenbergDecomposition_matrixH.out
259
- *
260
- * \sa matrixQ(), packedMatrix()
261
- */
262
- MatrixHReturnType matrixH() const
263
- {
264
- eigen_assert(m_isInitialized && "HessenbergDecomposition is not initialized.");
265
- return MatrixHReturnType(*this);
266
- }
211
+ /** \brief Reconstructs the orthogonal matrix Q in the decomposition
212
+ *
213
+ * \returns object representing the matrix Q
214
+ *
215
+ * \pre Either the constructor HessenbergDecomposition(const MatrixType&)
216
+ * or the member function compute(const MatrixType&) has been called
217
+ * before to compute the Hessenberg decomposition of a matrix.
218
+ *
219
+ * This function returns a light-weight object of template class
220
+ * HouseholderSequence. You can either apply it directly to a matrix or
221
+ * you can convert it to a matrix of type #MatrixType.
222
+ *
223
+ * \sa matrixH() for an example, class HouseholderSequence
224
+ */
225
+ HouseholderSequenceType matrixQ() const {
226
+ eigen_assert(m_isInitialized && "HessenbergDecomposition is not initialized.");
227
+ return HouseholderSequenceType(m_matrix, m_hCoeffs.conjugate()).setLength(m_matrix.rows() - 1).setShift(1);
228
+ }
267
229
 
268
- private:
230
+ /** \brief Constructs the Hessenberg matrix H in the decomposition
231
+ *
232
+ * \returns expression object representing the matrix H
233
+ *
234
+ * \pre Either the constructor HessenbergDecomposition(const MatrixType&)
235
+ * or the member function compute(const MatrixType&) has been called
236
+ * before to compute the Hessenberg decomposition of a matrix.
237
+ *
238
+ * The object returned by this function constructs the Hessenberg matrix H
239
+ * when it is assigned to a matrix or otherwise evaluated. The matrix H is
240
+ * constructed from the packed matrix as returned by packedMatrix(): The
241
+ * upper part (including the subdiagonal) of the packed matrix contains
242
+ * the matrix H. It may sometimes be better to directly use the packed
243
+ * matrix instead of constructing the matrix H.
244
+ *
245
+ * Example: \include HessenbergDecomposition_matrixH.cpp
246
+ * Output: \verbinclude HessenbergDecomposition_matrixH.out
247
+ *
248
+ * \sa matrixQ(), packedMatrix()
249
+ */
250
+ MatrixHReturnType matrixH() const {
251
+ eigen_assert(m_isInitialized && "HessenbergDecomposition is not initialized.");
252
+ return MatrixHReturnType(*this);
253
+ }
269
254
 
270
- typedef Matrix<Scalar, 1, Size, int(Options) | int(RowMajor), 1, MaxSize> VectorType;
271
- typedef typename NumTraits<Scalar>::Real RealScalar;
272
- static void _compute(MatrixType& matA, CoeffVectorType& hCoeffs, VectorType& temp);
255
+ private:
256
+ typedef Matrix<Scalar, 1, Size, int(Options) | int(RowMajor), 1, MaxSize> VectorType;
257
+ typedef typename NumTraits<Scalar>::Real RealScalar;
258
+ static void _compute(MatrixType& matA, CoeffVectorType& hCoeffs, VectorType& temp);
273
259
 
274
- protected:
275
- MatrixType m_matrix;
276
- CoeffVectorType m_hCoeffs;
277
- VectorType m_temp;
278
- bool m_isInitialized;
260
+ protected:
261
+ MatrixType m_matrix;
262
+ CoeffVectorType m_hCoeffs;
263
+ VectorType m_temp;
264
+ bool m_isInitialized;
279
265
  };
280
266
 
281
267
  /** \internal
282
- * Performs a tridiagonal decomposition of \a matA in place.
283
- *
284
- * \param matA the input selfadjoint matrix
285
- * \param hCoeffs returned Householder coefficients
286
- *
287
- * The result is written in the lower triangular part of \a matA.
288
- *
289
- * Implemented from Golub's "%Matrix Computations", algorithm 8.3.1.
290
- *
291
- * \sa packedMatrix()
292
- */
293
- template<typename MatrixType>
294
- void HessenbergDecomposition<MatrixType>::_compute(MatrixType& matA, CoeffVectorType& hCoeffs, VectorType& temp)
295
- {
296
- eigen_assert(matA.rows()==matA.cols());
268
+ * Performs a tridiagonal decomposition of \a matA in place.
269
+ *
270
+ * \param matA the input selfadjoint matrix
271
+ * \param hCoeffs returned Householder coefficients
272
+ *
273
+ * The result is written in the lower triangular part of \a matA.
274
+ *
275
+ * Implemented from Golub's "%Matrix Computations", algorithm 8.3.1.
276
+ *
277
+ * \sa packedMatrix()
278
+ */
279
+ template <typename MatrixType>
280
+ void HessenbergDecomposition<MatrixType>::_compute(MatrixType& matA, CoeffVectorType& hCoeffs, VectorType& temp) {
281
+ eigen_assert(matA.rows() == matA.cols());
297
282
  Index n = matA.rows();
298
283
  temp.resize(n);
299
- for (Index i = 0; i<n-1; ++i)
300
- {
284
+ for (Index i = 0; i < n - 1; ++i) {
301
285
  // let's consider the vector v = i-th column starting at position i+1
302
- Index remainingSize = n-i-1;
286
+ Index remainingSize = n - i - 1;
303
287
  RealScalar beta;
304
288
  Scalar h;
305
289
  matA.col(i).tail(remainingSize).makeHouseholderInPlace(h, beta);
306
- matA.col(i).coeffRef(i+1) = beta;
290
+ matA.col(i).coeffRef(i + 1) = beta;
307
291
  hCoeffs.coeffRef(i) = h;
308
292
 
309
293
  // Apply similarity transformation to remaining columns,
@@ -311,64 +295,62 @@ void HessenbergDecomposition<MatrixType>::_compute(MatrixType& matA, CoeffVector
311
295
 
312
296
  // A = H A
313
297
  matA.bottomRightCorner(remainingSize, remainingSize)
314
- .applyHouseholderOnTheLeft(matA.col(i).tail(remainingSize-1), h, &temp.coeffRef(0));
298
+ .applyHouseholderOnTheLeft(matA.col(i).tail(remainingSize - 1), h, &temp.coeffRef(0));
315
299
 
316
300
  // A = A H'
317
301
  matA.rightCols(remainingSize)
318
- .applyHouseholderOnTheRight(matA.col(i).tail(remainingSize-1), numext::conj(h), &temp.coeffRef(0));
302
+ .applyHouseholderOnTheRight(matA.col(i).tail(remainingSize - 1), numext::conj(h), &temp.coeffRef(0));
319
303
  }
320
304
  }
321
305
 
322
306
  namespace internal {
323
307
 
324
308
  /** \eigenvalues_module \ingroup Eigenvalues_Module
325
- *
326
- *
327
- * \brief Expression type for return value of HessenbergDecomposition::matrixH()
328
- *
329
- * \tparam MatrixType type of matrix in the Hessenberg decomposition
330
- *
331
- * Objects of this type represent the Hessenberg matrix in the Hessenberg
332
- * decomposition of some matrix. The object holds a reference to the
333
- * HessenbergDecomposition class until the it is assigned or evaluated for
334
- * some other reason (the reference should remain valid during the life time
335
- * of this object). This class is the return type of
336
- * HessenbergDecomposition::matrixH(); there is probably no other use for this
337
- * class.
338
- */
339
- template<typename MatrixType> struct HessenbergDecompositionMatrixHReturnType
340
- : public ReturnByValue<HessenbergDecompositionMatrixHReturnType<MatrixType> >
341
- {
342
- public:
343
- /** \brief Constructor.
344
- *
345
- * \param[in] hess Hessenberg decomposition
346
- */
347
- HessenbergDecompositionMatrixHReturnType(const HessenbergDecomposition<MatrixType>& hess) : m_hess(hess) { }
348
-
349
- /** \brief Hessenberg matrix in decomposition.
350
- *
351
- * \param[out] result Hessenberg matrix in decomposition \p hess which
352
- * was passed to the constructor
353
- */
354
- template <typename ResultType>
355
- inline void evalTo(ResultType& result) const
356
- {
357
- result = m_hess.packedMatrix();
358
- Index n = result.rows();
359
- if (n>2)
360
- result.bottomLeftCorner(n-2, n-2).template triangularView<Lower>().setZero();
361
- }
309
+ *
310
+ *
311
+ * \brief Expression type for return value of HessenbergDecomposition::matrixH()
312
+ *
313
+ * \tparam MatrixType type of matrix in the Hessenberg decomposition
314
+ *
315
+ * Objects of this type represent the Hessenberg matrix in the Hessenberg
316
+ * decomposition of some matrix. The object holds a reference to the
317
+ * HessenbergDecomposition class until the it is assigned or evaluated for
318
+ * some other reason (the reference should remain valid during the life time
319
+ * of this object). This class is the return type of
320
+ * HessenbergDecomposition::matrixH(); there is probably no other use for this
321
+ * class.
322
+ */
323
+ template <typename MatrixType>
324
+ struct HessenbergDecompositionMatrixHReturnType
325
+ : public ReturnByValue<HessenbergDecompositionMatrixHReturnType<MatrixType>> {
326
+ public:
327
+ /** \brief Constructor.
328
+ *
329
+ * \param[in] hess Hessenberg decomposition
330
+ */
331
+ HessenbergDecompositionMatrixHReturnType(const HessenbergDecomposition<MatrixType>& hess) : m_hess(hess) {}
332
+
333
+ /** \brief Hessenberg matrix in decomposition.
334
+ *
335
+ * \param[out] result Hessenberg matrix in decomposition \p hess which
336
+ * was passed to the constructor
337
+ */
338
+ template <typename ResultType>
339
+ inline void evalTo(ResultType& result) const {
340
+ result = m_hess.packedMatrix();
341
+ Index n = result.rows();
342
+ if (n > 2) result.bottomLeftCorner(n - 2, n - 2).template triangularView<Lower>().setZero();
343
+ }
362
344
 
363
- Index rows() const { return m_hess.packedMatrix().rows(); }
364
- Index cols() const { return m_hess.packedMatrix().cols(); }
345
+ Index rows() const { return m_hess.packedMatrix().rows(); }
346
+ Index cols() const { return m_hess.packedMatrix().cols(); }
365
347
 
366
- protected:
367
- const HessenbergDecomposition<MatrixType>& m_hess;
348
+ protected:
349
+ const HessenbergDecomposition<MatrixType>& m_hess;
368
350
  };
369
351
 
370
- } // end namespace internal
352
+ } // end namespace internal
371
353
 
372
- } // end namespace Eigen
354
+ } // end namespace Eigen
373
355
 
374
- #endif // EIGEN_HESSENBERGDECOMPOSITION_H
356
+ #endif // EIGEN_HESSENBERGDECOMPOSITION_H