@smake/eigen 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -21
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +235 -326
  6. package/eigen/Eigen/Eigenvalues +16 -14
  7. package/eigen/Eigen/Geometry +21 -24
  8. package/eigen/Eigen/Householder +9 -8
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -14
  11. package/eigen/Eigen/KLUSupport +43 -0
  12. package/eigen/Eigen/LU +16 -20
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -54
  15. package/eigen/Eigen/PaStiXSupport +23 -20
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -21
  18. package/eigen/Eigen/QtAlignedMalloc +5 -13
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -18
  21. package/eigen/Eigen/Sparse +1 -4
  22. package/eigen/Eigen/SparseCholesky +18 -23
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +12 -8
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
  37. package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
  42. package/eigen/Eigen/src/Core/Array.h +341 -294
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
  48. package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
  49. package/eigen/Eigen/src/Core/Block.h +375 -398
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
  53. package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
  59. package/eigen/Eigen/src/Core/DenseBase.h +632 -571
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
  61. package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +169 -210
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +172 -222
  67. package/eigen/Eigen/src/Core/EigenBase.h +75 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
  75. package/eigen/Eigen/src/Core/IO.h +147 -139
  76. package/eigen/Eigen/src/Core/IndexedView.h +321 -0
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +56 -66
  80. package/eigen/Eigen/src/Core/Map.h +124 -142
  81. package/eigen/Eigen/src/Core/MapBase.h +256 -281
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
  84. package/eigen/Eigen/src/Core/Matrix.h +491 -416
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
  86. package/eigen/Eigen/src/Core/NestByValue.h +66 -85
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -85
  88. package/eigen/Eigen/src/Core/NumTraits.h +235 -148
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
  92. package/eigen/Eigen/src/Core/Product.h +260 -139
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
  94. package/eigen/Eigen/src/Core/Random.h +161 -136
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +366 -336
  98. package/eigen/Eigen/src/Core/Ref.h +308 -209
  99. package/eigen/Eigen/src/Core/Replicate.h +94 -106
  100. package/eigen/Eigen/src/Core/Reshaped.h +398 -0
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +136 -145
  103. package/eigen/Eigen/src/Core/Select.h +70 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +97 -111
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
  109. package/eigen/Eigen/src/Core/SolverBase.h +138 -101
  110. package/eigen/Eigen/src/Core/StableNorm.h +156 -160
  111. package/eigen/Eigen/src/Core/StlIterators.h +619 -0
  112. package/eigen/Eigen/src/Core/Stride.h +91 -88
  113. package/eigen/Eigen/src/Core/Swap.h +70 -38
  114. package/eigen/Eigen/src/Core/Transpose.h +295 -273
  115. package/eigen/Eigen/src/Core/Transpositions.h +272 -317
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
  119. package/eigen/Eigen/src/Core/Visitor.h +480 -216
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
  217. package/eigen/Eigen/src/Core/util/Constants.h +314 -263
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
  226. package/eigen/Eigen/src/Core/util/Macros.h +939 -646
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
  229. package/eigen/Eigen/src/Core/util/Meta.h +618 -426
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
  264. package/eigen/Eigen/src/Geometry/Transform.h +896 -953
  265. package/eigen/Eigen/src/Geometry/Translation.h +100 -98
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
  269. package/eigen/Eigen/src/Householder/Householder.h +104 -122
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
  285. package/eigen/Eigen/src/LU/Determinant.h +60 -63
  286. package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/lib/LibEigen.d.ts +4 -0
  409. package/lib/LibEigen.js +14 -0
  410. package/lib/index.d.ts +1 -1
  411. package/lib/index.js +7 -3
  412. package/package.json +2 -10
  413. package/eigen/Eigen/CMakeLists.txt +0 -19
  414. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
  415. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
  416. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  417. package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
  418. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  419. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  420. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  421. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  422. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  423. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  424. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  425. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  426. package/eigen/Eigen/src/misc/lapack.h +0 -152
  427. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
  428. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
  429. package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
  430. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  431. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
  432. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  433. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
  434. package/lib/eigen.d.ts +0 -2
  435. package/lib/eigen.js +0 -15
@@ -11,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, Options | 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).conjugate(), 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