@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
@@ -14,254 +14,235 @@
14
14
 
15
15
  #include "./ComplexSchur.h"
16
16
 
17
- namespace Eigen {
17
+ // IWYU pragma: private
18
+ #include "./InternalHeaderCheck.h"
19
+
20
+ namespace Eigen {
18
21
 
19
22
  /** \eigenvalues_module \ingroup Eigenvalues_Module
20
- *
21
- *
22
- * \class ComplexEigenSolver
23
- *
24
- * \brief Computes eigenvalues and eigenvectors of general complex matrices
25
- *
26
- * \tparam _MatrixType the type of the matrix of which we are
27
- * computing the eigendecomposition; this is expected to be an
28
- * instantiation of the Matrix class template.
29
- *
30
- * The eigenvalues and eigenvectors of a matrix \f$ A \f$ are scalars
31
- * \f$ \lambda \f$ and vectors \f$ v \f$ such that \f$ Av = \lambda v
32
- * \f$. If \f$ D \f$ is a diagonal matrix with the eigenvalues on
33
- * the diagonal, and \f$ V \f$ is a matrix with the eigenvectors as
34
- * its columns, then \f$ A V = V D \f$. The matrix \f$ V \f$ is
35
- * almost always invertible, in which case we have \f$ A = V D V^{-1}
36
- * \f$. This is called the eigendecomposition.
37
- *
38
- * The main function in this class is compute(), which computes the
39
- * eigenvalues and eigenvectors of a given function. The
40
- * documentation for that function contains an example showing the
41
- * main features of the class.
42
- *
43
- * \sa class EigenSolver, class SelfAdjointEigenSolver
44
- */
45
- template<typename _MatrixType> class ComplexEigenSolver
46
- {
47
- public:
48
-
49
- /** \brief Synonym for the template parameter \p _MatrixType. */
50
- typedef _MatrixType MatrixType;
51
-
52
- enum {
53
- RowsAtCompileTime = MatrixType::RowsAtCompileTime,
54
- ColsAtCompileTime = MatrixType::ColsAtCompileTime,
55
- Options = MatrixType::Options,
56
- MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
57
- MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
58
- };
59
-
60
- /** \brief Scalar type for matrices of type #MatrixType. */
61
- typedef typename MatrixType::Scalar Scalar;
62
- typedef typename NumTraits<Scalar>::Real RealScalar;
63
- typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
64
-
65
- /** \brief Complex scalar type for #MatrixType.
66
- *
67
- * This is \c std::complex<Scalar> if #Scalar is real (e.g.,
68
- * \c float or \c double) and just \c Scalar if #Scalar is
69
- * complex.
70
- */
71
- typedef std::complex<RealScalar> ComplexScalar;
72
-
73
- /** \brief Type for vector of eigenvalues as returned by eigenvalues().
74
- *
75
- * This is a column vector with entries of type #ComplexScalar.
76
- * The length of the vector is the size of #MatrixType.
77
- */
78
- typedef Matrix<ComplexScalar, ColsAtCompileTime, 1, Options&(~RowMajor), MaxColsAtCompileTime, 1> EigenvalueType;
79
-
80
- /** \brief Type for matrix of eigenvectors as returned by eigenvectors().
81
- *
82
- * This is a square matrix with entries of type #ComplexScalar.
83
- * The size is the same as the size of #MatrixType.
84
- */
85
- typedef Matrix<ComplexScalar, RowsAtCompileTime, ColsAtCompileTime, Options, MaxRowsAtCompileTime, MaxColsAtCompileTime> EigenvectorType;
86
-
87
- /** \brief Default constructor.
88
- *
89
- * The default constructor is useful in cases in which the user intends to
90
- * perform decompositions via compute().
91
- */
92
- ComplexEigenSolver()
93
- : m_eivec(),
94
- m_eivalues(),
95
- m_schur(),
96
- m_isInitialized(false),
97
- m_eigenvectorsOk(false),
98
- m_matX()
99
- {}
100
-
101
- /** \brief Default Constructor with memory preallocation
102
- *
103
- * Like the default constructor but with preallocation of the internal data
104
- * according to the specified problem \a size.
105
- * \sa ComplexEigenSolver()
106
- */
107
- explicit ComplexEigenSolver(Index size)
108
- : m_eivec(size, size),
109
- m_eivalues(size),
110
- m_schur(size),
111
- m_isInitialized(false),
112
- m_eigenvectorsOk(false),
113
- m_matX(size, size)
114
- {}
115
-
116
- /** \brief Constructor; computes eigendecomposition of given matrix.
117
- *
118
- * \param[in] matrix Square matrix whose eigendecomposition is to be computed.
119
- * \param[in] computeEigenvectors If true, both the eigenvectors and the
120
- * eigenvalues are computed; if false, only the eigenvalues are
121
- * computed.
122
- *
123
- * This constructor calls compute() to compute the eigendecomposition.
124
- */
125
- template<typename InputType>
126
- explicit ComplexEigenSolver(const EigenBase<InputType>& matrix, bool computeEigenvectors = true)
127
- : m_eivec(matrix.rows(),matrix.cols()),
128
- m_eivalues(matrix.cols()),
129
- m_schur(matrix.rows()),
130
- m_isInitialized(false),
131
- m_eigenvectorsOk(false),
132
- m_matX(matrix.rows(),matrix.cols())
133
- {
134
- compute(matrix.derived(), computeEigenvectors);
135
- }
23
+ *
24
+ *
25
+ * \class ComplexEigenSolver
26
+ *
27
+ * \brief Computes eigenvalues and eigenvectors of general complex matrices
28
+ *
29
+ * \tparam MatrixType_ the type of the matrix of which we are
30
+ * computing the eigendecomposition; this is expected to be an
31
+ * instantiation of the Matrix class template.
32
+ *
33
+ * The eigenvalues and eigenvectors of a matrix \f$ A \f$ are scalars
34
+ * \f$ \lambda \f$ and vectors \f$ v \f$ such that \f$ Av = \lambda v
35
+ * \f$. If \f$ D \f$ is a diagonal matrix with the eigenvalues on
36
+ * the diagonal, and \f$ V \f$ is a matrix with the eigenvectors as
37
+ * its columns, then \f$ A V = V D \f$. The matrix \f$ V \f$ is
38
+ * almost always invertible, in which case we have \f$ A = V D V^{-1}
39
+ * \f$. This is called the eigendecomposition.
40
+ *
41
+ * The main function in this class is compute(), which computes the
42
+ * eigenvalues and eigenvectors of a given function. The
43
+ * documentation for that function contains an example showing the
44
+ * main features of the class.
45
+ *
46
+ * \sa class EigenSolver, class SelfAdjointEigenSolver
47
+ */
48
+ template <typename MatrixType_>
49
+ class ComplexEigenSolver {
50
+ public:
51
+ /** \brief Synonym for the template parameter \p MatrixType_. */
52
+ typedef MatrixType_ MatrixType;
53
+
54
+ enum {
55
+ RowsAtCompileTime = MatrixType::RowsAtCompileTime,
56
+ ColsAtCompileTime = MatrixType::ColsAtCompileTime,
57
+ Options = internal::traits<MatrixType>::Options,
58
+ MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
59
+ MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
60
+ };
61
+
62
+ /** \brief Scalar type for matrices of type #MatrixType. */
63
+ typedef typename MatrixType::Scalar Scalar;
64
+ typedef typename NumTraits<Scalar>::Real RealScalar;
65
+ typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
66
+
67
+ /** \brief Complex scalar type for #MatrixType.
68
+ *
69
+ * This is \c std::complex<Scalar> if #Scalar is real (e.g.,
70
+ * \c float or \c double) and just \c Scalar if #Scalar is
71
+ * complex.
72
+ */
73
+ typedef internal::make_complex_t<Scalar> ComplexScalar;
74
+
75
+ /** \brief Type for vector of eigenvalues as returned by eigenvalues().
76
+ *
77
+ * This is a column vector with entries of type #ComplexScalar.
78
+ * The length of the vector is the size of #MatrixType.
79
+ */
80
+ typedef Matrix<ComplexScalar, ColsAtCompileTime, 1, Options & (~RowMajor), MaxColsAtCompileTime, 1> EigenvalueType;
81
+
82
+ /** \brief Type for matrix of eigenvectors as returned by eigenvectors().
83
+ *
84
+ * This is a square matrix with entries of type #ComplexScalar.
85
+ * The size is the same as the size of #MatrixType.
86
+ */
87
+ typedef Matrix<ComplexScalar, RowsAtCompileTime, ColsAtCompileTime, Options, MaxRowsAtCompileTime,
88
+ MaxColsAtCompileTime>
89
+ EigenvectorType;
90
+
91
+ /** \brief Default constructor.
92
+ *
93
+ * The default constructor is useful in cases in which the user intends to
94
+ * perform decompositions via compute().
95
+ */
96
+ ComplexEigenSolver()
97
+ : m_eivec(), m_eivalues(), m_schur(), m_isInitialized(false), m_eigenvectorsOk(false), m_matX() {}
98
+
99
+ /** \brief Default Constructor with memory preallocation
100
+ *
101
+ * Like the default constructor but with preallocation of the internal data
102
+ * according to the specified problem \a size.
103
+ * \sa ComplexEigenSolver()
104
+ */
105
+ explicit ComplexEigenSolver(Index size)
106
+ : m_eivec(size, size),
107
+ m_eivalues(size),
108
+ m_schur(size),
109
+ m_isInitialized(false),
110
+ m_eigenvectorsOk(false),
111
+ m_matX(size, size) {}
112
+
113
+ /** \brief Constructor; computes eigendecomposition of given matrix.
114
+ *
115
+ * \param[in] matrix Square matrix whose eigendecomposition is to be computed.
116
+ * \param[in] computeEigenvectors If true, both the eigenvectors and the
117
+ * eigenvalues are computed; if false, only the eigenvalues are
118
+ * computed.
119
+ *
120
+ * This constructor calls compute() to compute the eigendecomposition.
121
+ */
122
+ template <typename InputType>
123
+ explicit ComplexEigenSolver(const EigenBase<InputType>& matrix, bool computeEigenvectors = true)
124
+ : m_eivec(matrix.rows(), matrix.cols()),
125
+ m_eivalues(matrix.cols()),
126
+ m_schur(matrix.rows()),
127
+ m_isInitialized(false),
128
+ m_eigenvectorsOk(false),
129
+ m_matX(matrix.rows(), matrix.cols()) {
130
+ compute(matrix.derived(), computeEigenvectors);
131
+ }
136
132
 
137
- /** \brief Returns the eigenvectors of given matrix.
138
- *
139
- * \returns A const reference to the matrix whose columns are the eigenvectors.
140
- *
141
- * \pre Either the constructor
142
- * ComplexEigenSolver(const MatrixType& matrix, bool) or the member
143
- * function compute(const MatrixType& matrix, bool) has been called before
144
- * to compute the eigendecomposition of a matrix, and
145
- * \p computeEigenvectors was set to true (the default).
146
- *
147
- * This function returns a matrix whose columns are the eigenvectors. Column
148
- * \f$ k \f$ is an eigenvector corresponding to eigenvalue number \f$ k
149
- * \f$ as returned by eigenvalues(). The eigenvectors are normalized to
150
- * have (Euclidean) norm equal to one. The matrix returned by this
151
- * function is the matrix \f$ V \f$ in the eigendecomposition \f$ A = V D
152
- * V^{-1} \f$, if it exists.
153
- *
154
- * Example: \include ComplexEigenSolver_eigenvectors.cpp
155
- * Output: \verbinclude ComplexEigenSolver_eigenvectors.out
156
- */
157
- const EigenvectorType& eigenvectors() const
158
- {
159
- eigen_assert(m_isInitialized && "ComplexEigenSolver is not initialized.");
160
- eigen_assert(m_eigenvectorsOk && "The eigenvectors have not been computed together with the eigenvalues.");
161
- return m_eivec;
162
- }
133
+ /** \brief Returns the eigenvectors of given matrix.
134
+ *
135
+ * \returns A const reference to the matrix whose columns are the eigenvectors.
136
+ *
137
+ * \pre Either the constructor
138
+ * ComplexEigenSolver(const MatrixType& matrix, bool) or the member
139
+ * function compute(const MatrixType& matrix, bool) has been called before
140
+ * to compute the eigendecomposition of a matrix, and
141
+ * \p computeEigenvectors was set to true (the default).
142
+ *
143
+ * This function returns a matrix whose columns are the eigenvectors. Column
144
+ * \f$ k \f$ is an eigenvector corresponding to eigenvalue number \f$ k
145
+ * \f$ as returned by eigenvalues(). The eigenvectors are normalized to
146
+ * have (Euclidean) norm equal to one. The matrix returned by this
147
+ * function is the matrix \f$ V \f$ in the eigendecomposition \f$ A = V D
148
+ * V^{-1} \f$, if it exists.
149
+ *
150
+ * Example: \include ComplexEigenSolver_eigenvectors.cpp
151
+ * Output: \verbinclude ComplexEigenSolver_eigenvectors.out
152
+ */
153
+ const EigenvectorType& eigenvectors() const {
154
+ eigen_assert(m_isInitialized && "ComplexEigenSolver is not initialized.");
155
+ eigen_assert(m_eigenvectorsOk && "The eigenvectors have not been computed together with the eigenvalues.");
156
+ return m_eivec;
157
+ }
163
158
 
164
- /** \brief Returns the eigenvalues of given matrix.
165
- *
166
- * \returns A const reference to the column vector containing the eigenvalues.
167
- *
168
- * \pre Either the constructor
169
- * ComplexEigenSolver(const MatrixType& matrix, bool) or the member
170
- * function compute(const MatrixType& matrix, bool) has been called before
171
- * to compute the eigendecomposition of a matrix.
172
- *
173
- * This function returns a column vector containing the
174
- * eigenvalues. Eigenvalues are repeated according to their
175
- * algebraic multiplicity, so there are as many eigenvalues as
176
- * rows in the matrix. The eigenvalues are not sorted in any particular
177
- * order.
178
- *
179
- * Example: \include ComplexEigenSolver_eigenvalues.cpp
180
- * Output: \verbinclude ComplexEigenSolver_eigenvalues.out
181
- */
182
- const EigenvalueType& eigenvalues() const
183
- {
184
- eigen_assert(m_isInitialized && "ComplexEigenSolver is not initialized.");
185
- return m_eivalues;
186
- }
159
+ /** \brief Returns the eigenvalues of given matrix.
160
+ *
161
+ * \returns A const reference to the column vector containing the eigenvalues.
162
+ *
163
+ * \pre Either the constructor
164
+ * ComplexEigenSolver(const MatrixType& matrix, bool) or the member
165
+ * function compute(const MatrixType& matrix, bool) has been called before
166
+ * to compute the eigendecomposition of a matrix.
167
+ *
168
+ * This function returns a column vector containing the
169
+ * eigenvalues. Eigenvalues are repeated according to their
170
+ * algebraic multiplicity, so there are as many eigenvalues as
171
+ * rows in the matrix. The eigenvalues are not sorted in any particular
172
+ * order.
173
+ *
174
+ * Example: \include ComplexEigenSolver_eigenvalues.cpp
175
+ * Output: \verbinclude ComplexEigenSolver_eigenvalues.out
176
+ */
177
+ const EigenvalueType& eigenvalues() const {
178
+ eigen_assert(m_isInitialized && "ComplexEigenSolver is not initialized.");
179
+ return m_eivalues;
180
+ }
187
181
 
188
- /** \brief Computes eigendecomposition of given matrix.
189
- *
190
- * \param[in] matrix Square matrix whose eigendecomposition is to be computed.
191
- * \param[in] computeEigenvectors If true, both the eigenvectors and the
192
- * eigenvalues are computed; if false, only the eigenvalues are
193
- * computed.
194
- * \returns Reference to \c *this
195
- *
196
- * This function computes the eigenvalues of the complex matrix \p matrix.
197
- * The eigenvalues() function can be used to retrieve them. If
198
- * \p computeEigenvectors is true, then the eigenvectors are also computed
199
- * and can be retrieved by calling eigenvectors().
200
- *
201
- * The matrix is first reduced to Schur form using the
202
- * ComplexSchur class. The Schur decomposition is then used to
203
- * compute the eigenvalues and eigenvectors.
204
- *
205
- * The cost of the computation is dominated by the cost of the
206
- * Schur decomposition, which is \f$ O(n^3) \f$ where \f$ n \f$
207
- * is the size of the matrix.
208
- *
209
- * Example: \include ComplexEigenSolver_compute.cpp
210
- * Output: \verbinclude ComplexEigenSolver_compute.out
211
- */
212
- template<typename InputType>
213
- ComplexEigenSolver& compute(const EigenBase<InputType>& matrix, bool computeEigenvectors = true);
214
-
215
- /** \brief Reports whether previous computation was successful.
216
- *
217
- * \returns \c Success if computation was succesful, \c NoConvergence otherwise.
218
- */
219
- ComputationInfo info() const
220
- {
221
- eigen_assert(m_isInitialized && "ComplexEigenSolver is not initialized.");
222
- return m_schur.info();
223
- }
182
+ /** \brief Computes eigendecomposition of given matrix.
183
+ *
184
+ * \param[in] matrix Square matrix whose eigendecomposition is to be computed.
185
+ * \param[in] computeEigenvectors If true, both the eigenvectors and the
186
+ * eigenvalues are computed; if false, only the eigenvalues are
187
+ * computed.
188
+ * \returns Reference to \c *this
189
+ *
190
+ * This function computes the eigenvalues of the complex matrix \p matrix.
191
+ * The eigenvalues() function can be used to retrieve them. If
192
+ * \p computeEigenvectors is true, then the eigenvectors are also computed
193
+ * and can be retrieved by calling eigenvectors().
194
+ *
195
+ * The matrix is first reduced to Schur form using the
196
+ * ComplexSchur class. The Schur decomposition is then used to
197
+ * compute the eigenvalues and eigenvectors.
198
+ *
199
+ * The cost of the computation is dominated by the cost of the
200
+ * Schur decomposition, which is \f$ O(n^3) \f$ where \f$ n \f$
201
+ * is the size of the matrix.
202
+ *
203
+ * Example: \include ComplexEigenSolver_compute.cpp
204
+ * Output: \verbinclude ComplexEigenSolver_compute.out
205
+ */
206
+ template <typename InputType>
207
+ ComplexEigenSolver& compute(const EigenBase<InputType>& matrix, bool computeEigenvectors = true);
208
+
209
+ /** \brief Reports whether previous computation was successful.
210
+ *
211
+ * \returns \c Success if computation was successful, \c NoConvergence otherwise.
212
+ */
213
+ ComputationInfo info() const {
214
+ eigen_assert(m_isInitialized && "ComplexEigenSolver is not initialized.");
215
+ return m_schur.info();
216
+ }
224
217
 
225
- /** \brief Sets the maximum number of iterations allowed. */
226
- ComplexEigenSolver& setMaxIterations(Index maxIters)
227
- {
228
- m_schur.setMaxIterations(maxIters);
229
- return *this;
230
- }
218
+ /** \brief Sets the maximum number of iterations allowed. */
219
+ ComplexEigenSolver& setMaxIterations(Index maxIters) {
220
+ m_schur.setMaxIterations(maxIters);
221
+ return *this;
222
+ }
231
223
 
232
- /** \brief Returns the maximum number of iterations. */
233
- Index getMaxIterations()
234
- {
235
- return m_schur.getMaxIterations();
236
- }
224
+ /** \brief Returns the maximum number of iterations. */
225
+ Index getMaxIterations() { return m_schur.getMaxIterations(); }
237
226
 
238
- protected:
239
-
240
- static void check_template_parameters()
241
- {
242
- EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar);
243
- }
244
-
245
- EigenvectorType m_eivec;
246
- EigenvalueType m_eivalues;
247
- ComplexSchur<MatrixType> m_schur;
248
- bool m_isInitialized;
249
- bool m_eigenvectorsOk;
250
- EigenvectorType m_matX;
251
-
252
- private:
253
- void doComputeEigenvectors(RealScalar matrixnorm);
254
- void sortEigenvalues(bool computeEigenvectors);
255
- };
227
+ protected:
228
+ EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar)
256
229
 
230
+ EigenvectorType m_eivec;
231
+ EigenvalueType m_eivalues;
232
+ ComplexSchur<MatrixType> m_schur;
233
+ bool m_isInitialized;
234
+ bool m_eigenvectorsOk;
235
+ EigenvectorType m_matX;
257
236
 
258
- template<typename MatrixType>
259
- template<typename InputType>
260
- ComplexEigenSolver<MatrixType>&
261
- ComplexEigenSolver<MatrixType>::compute(const EigenBase<InputType>& matrix, bool computeEigenvectors)
262
- {
263
- check_template_parameters();
264
-
237
+ private:
238
+ void doComputeEigenvectors(RealScalar matrixnorm);
239
+ void sortEigenvalues(bool computeEigenvectors);
240
+ };
241
+
242
+ template <typename MatrixType>
243
+ template <typename InputType>
244
+ ComplexEigenSolver<MatrixType>& ComplexEigenSolver<MatrixType>::compute(const EigenBase<InputType>& matrix,
245
+ bool computeEigenvectors) {
265
246
  // this code is inspired from Jampack
266
247
  eigen_assert(matrix.cols() == matrix.rows());
267
248
 
@@ -269,11 +250,9 @@ ComplexEigenSolver<MatrixType>::compute(const EigenBase<InputType>& matrix, bool
269
250
  // The eigenvalues are on the diagonal of T.
270
251
  m_schur.compute(matrix.derived(), computeEigenvectors);
271
252
 
272
- if(m_schur.info() == Success)
273
- {
253
+ if (m_schur.info() == Success) {
274
254
  m_eivalues = m_schur.matrixT().diagonal();
275
- if(computeEigenvectors)
276
- doComputeEigenvectors(m_schur.matrixT().norm());
255
+ if (computeEigenvectors) doComputeEigenvectors(m_schur.matrixT().norm());
277
256
  sortEigenvalues(computeEigenvectors);
278
257
  }
279
258
 
@@ -282,65 +261,55 @@ ComplexEigenSolver<MatrixType>::compute(const EigenBase<InputType>& matrix, bool
282
261
  return *this;
283
262
  }
284
263
 
285
-
286
- template<typename MatrixType>
287
- void ComplexEigenSolver<MatrixType>::doComputeEigenvectors(RealScalar matrixnorm)
288
- {
264
+ template <typename MatrixType>
265
+ void ComplexEigenSolver<MatrixType>::doComputeEigenvectors(RealScalar matrixnorm) {
289
266
  const Index n = m_eivalues.size();
290
267
 
291
- matrixnorm = numext::maxi(matrixnorm,(std::numeric_limits<RealScalar>::min)());
268
+ matrixnorm = numext::maxi(matrixnorm, (std::numeric_limits<RealScalar>::min)());
292
269
 
293
270
  // Compute X such that T = X D X^(-1), where D is the diagonal of T.
294
271
  // The matrix X is unit triangular.
295
272
  m_matX = EigenvectorType::Zero(n, n);
296
- for(Index k=n-1 ; k>=0 ; k--)
297
- {
298
- m_matX.coeffRef(k,k) = ComplexScalar(1.0,0.0);
273
+ for (Index k = n - 1; k >= 0; k--) {
274
+ m_matX.coeffRef(k, k) = ComplexScalar(1.0, 0.0);
299
275
  // Compute X(i,k) using the (i,k) entry of the equation X T = D X
300
- for(Index i=k-1 ; i>=0 ; i--)
301
- {
302
- m_matX.coeffRef(i,k) = -m_schur.matrixT().coeff(i,k);
303
- if(k-i-1>0)
304
- m_matX.coeffRef(i,k) -= (m_schur.matrixT().row(i).segment(i+1,k-i-1) * m_matX.col(k).segment(i+1,k-i-1)).value();
305
- ComplexScalar z = m_schur.matrixT().coeff(i,i) - m_schur.matrixT().coeff(k,k);
306
- if(z==ComplexScalar(0))
307
- {
276
+ for (Index i = k - 1; i >= 0; i--) {
277
+ m_matX.coeffRef(i, k) = -m_schur.matrixT().coeff(i, k);
278
+ if (k - i - 1 > 0)
279
+ m_matX.coeffRef(i, k) -=
280
+ (m_schur.matrixT().row(i).segment(i + 1, k - i - 1) * m_matX.col(k).segment(i + 1, k - i - 1)).value();
281
+ ComplexScalar z = m_schur.matrixT().coeff(i, i) - m_schur.matrixT().coeff(k, k);
282
+ if (z == ComplexScalar(0)) {
308
283
  // If the i-th and k-th eigenvalue are equal, then z equals 0.
309
284
  // Use a small value instead, to prevent division by zero.
310
285
  numext::real_ref(z) = NumTraits<RealScalar>::epsilon() * matrixnorm;
311
286
  }
312
- m_matX.coeffRef(i,k) = m_matX.coeff(i,k) / z;
287
+ m_matX.coeffRef(i, k) = m_matX.coeff(i, k) / z;
313
288
  }
314
289
  }
315
290
 
316
291
  // Compute V as V = U X; now A = U T U^* = U X D X^(-1) U^* = V D V^(-1)
317
292
  m_eivec.noalias() = m_schur.matrixU() * m_matX;
318
293
  // .. and normalize the eigenvectors
319
- for(Index k=0 ; k<n ; k++)
320
- {
321
- m_eivec.col(k).normalize();
294
+ for (Index k = 0; k < n; k++) {
295
+ m_eivec.col(k).stableNormalize();
322
296
  }
323
297
  }
324
298
 
325
-
326
- template<typename MatrixType>
327
- void ComplexEigenSolver<MatrixType>::sortEigenvalues(bool computeEigenvectors)
328
- {
329
- const Index n = m_eivalues.size();
330
- for (Index i=0; i<n; i++)
331
- {
299
+ template <typename MatrixType>
300
+ void ComplexEigenSolver<MatrixType>::sortEigenvalues(bool computeEigenvectors) {
301
+ const Index n = m_eivalues.size();
302
+ for (Index i = 0; i < n; i++) {
332
303
  Index k;
333
- m_eivalues.cwiseAbs().tail(n-i).minCoeff(&k);
334
- if (k != 0)
335
- {
304
+ m_eivalues.cwiseAbs().tail(n - i).minCoeff(&k);
305
+ if (k != 0) {
336
306
  k += i;
337
- std::swap(m_eivalues[k],m_eivalues[i]);
338
- if(computeEigenvectors)
339
- m_eivec.col(i).swap(m_eivec.col(k));
307
+ std::swap(m_eivalues[k], m_eivalues[i]);
308
+ if (computeEigenvectors) m_eivec.col(i).swap(m_eivec.col(k));
340
309
  }
341
310
  }
342
311
  }
343
312
 
344
- } // end namespace Eigen
313
+ } // end namespace Eigen
345
314
 
346
- #endif // EIGEN_COMPLEX_EIGEN_SOLVER_H
315
+ #endif // EIGEN_COMPLEX_EIGEN_SOLVER_H