@smake/eigen 1.1.0 → 1.1.1

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