@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
@@ -10,255 +10,238 @@
10
10
  #ifndef EIGEN_SELFADJOINTMATRIX_H
11
11
  #define EIGEN_SELFADJOINTMATRIX_H
12
12
 
13
- namespace Eigen {
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
16
+ namespace Eigen {
14
17
 
15
18
  /** \class SelfAdjointView
16
- * \ingroup Core_Module
17
- *
18
- *
19
- * \brief Expression of a selfadjoint matrix from a triangular part of a dense matrix
20
- *
21
- * \param MatrixType the type of the dense matrix storing the coefficients
22
- * \param TriangularPart can be either \c #Lower or \c #Upper
23
- *
24
- * This class is an expression of a sefladjoint matrix from a triangular part of a matrix
25
- * with given dense storage of the coefficients. It is the return type of MatrixBase::selfadjointView()
26
- * and most of the time this is the only way that it is used.
27
- *
28
- * \sa class TriangularBase, MatrixBase::selfadjointView()
29
- */
19
+ * \ingroup Core_Module
20
+ *
21
+ *
22
+ * \brief Expression of a selfadjoint matrix from a triangular part of a dense matrix
23
+ *
24
+ * \tparam MatrixType the type of the dense matrix storing the coefficients
25
+ * \tparam TriangularPart can be either \c #Lower or \c #Upper
26
+ *
27
+ * This class is an expression of a sefladjoint matrix from a triangular part of a matrix
28
+ * with given dense storage of the coefficients. It is the return type of MatrixBase::selfadjointView()
29
+ * and most of the time this is the only way that it is used.
30
+ *
31
+ * \sa class TriangularBase, MatrixBase::selfadjointView()
32
+ */
30
33
 
31
34
  namespace internal {
32
- template<typename MatrixType, unsigned int UpLo>
33
- struct traits<SelfAdjointView<MatrixType, UpLo> > : traits<MatrixType>
34
- {
35
+ template <typename MatrixType, unsigned int UpLo>
36
+ struct traits<SelfAdjointView<MatrixType, UpLo> > : traits<MatrixType> {
35
37
  typedef typename ref_selector<MatrixType>::non_const_type MatrixTypeNested;
36
- typedef typename remove_all<MatrixTypeNested>::type MatrixTypeNestedCleaned;
38
+ typedef remove_all_t<MatrixTypeNested> MatrixTypeNestedCleaned;
37
39
  typedef MatrixType ExpressionType;
38
40
  typedef typename MatrixType::PlainObject FullMatrixType;
39
41
  enum {
40
42
  Mode = UpLo | SelfAdjoint,
41
43
  FlagsLvalueBit = is_lvalue<MatrixType>::value ? LvalueBit : 0,
42
- Flags = MatrixTypeNestedCleaned::Flags & (HereditaryBits|FlagsLvalueBit)
43
- & (~(PacketAccessBit | DirectAccessBit | LinearAccessBit)) // FIXME these flags should be preserved
44
+ Flags = MatrixTypeNestedCleaned::Flags & (HereditaryBits | FlagsLvalueBit) &
45
+ (~(PacketAccessBit | DirectAccessBit | LinearAccessBit)) // FIXME these flags should be preserved
44
46
  };
45
47
  };
46
- }
48
+ } // namespace internal
47
49
 
50
+ template <typename MatrixType_, unsigned int UpLo>
51
+ class SelfAdjointView : public TriangularBase<SelfAdjointView<MatrixType_, UpLo> > {
52
+ public:
53
+ EIGEN_STATIC_ASSERT(UpLo == Lower || UpLo == Upper, SELFADJOINTVIEW_ACCEPTS_UPPER_AND_LOWER_MODE_ONLY)
48
54
 
49
- template<typename _MatrixType, unsigned int UpLo> class SelfAdjointView
50
- : public TriangularBase<SelfAdjointView<_MatrixType, UpLo> >
51
- {
52
- public:
53
-
54
- typedef _MatrixType MatrixType;
55
- typedef TriangularBase<SelfAdjointView> Base;
56
- typedef typename internal::traits<SelfAdjointView>::MatrixTypeNested MatrixTypeNested;
57
- typedef typename internal::traits<SelfAdjointView>::MatrixTypeNestedCleaned MatrixTypeNestedCleaned;
58
- typedef MatrixTypeNestedCleaned NestedExpression;
59
-
60
- /** \brief The type of coefficients in this matrix */
61
- typedef typename internal::traits<SelfAdjointView>::Scalar Scalar;
62
- typedef typename MatrixType::StorageIndex StorageIndex;
63
- typedef typename internal::remove_all<typename MatrixType::ConjugateReturnType>::type MatrixConjugateReturnType;
64
-
65
- enum {
66
- Mode = internal::traits<SelfAdjointView>::Mode,
67
- Flags = internal::traits<SelfAdjointView>::Flags,
68
- TransposeMode = ((Mode & Upper) ? Lower : 0) | ((Mode & Lower) ? Upper : 0)
69
- };
70
- typedef typename MatrixType::PlainObject PlainObject;
71
-
72
- EIGEN_DEVICE_FUNC
73
- explicit inline SelfAdjointView(MatrixType& matrix) : m_matrix(matrix)
74
- {
75
- EIGEN_STATIC_ASSERT(UpLo==Lower || UpLo==Upper,SELFADJOINTVIEW_ACCEPTS_UPPER_AND_LOWER_MODE_ONLY);
76
- }
77
-
78
- EIGEN_DEVICE_FUNC
79
- inline Index rows() const { return m_matrix.rows(); }
80
- EIGEN_DEVICE_FUNC
81
- inline Index cols() const { return m_matrix.cols(); }
82
- EIGEN_DEVICE_FUNC
83
- inline Index outerStride() const { return m_matrix.outerStride(); }
84
- EIGEN_DEVICE_FUNC
85
- inline Index innerStride() const { return m_matrix.innerStride(); }
86
-
87
- /** \sa MatrixBase::coeff()
88
- * \warning the coordinates must fit into the referenced triangular part
89
- */
90
- EIGEN_DEVICE_FUNC
91
- inline Scalar coeff(Index row, Index col) const
92
- {
93
- Base::check_coordinates_internal(row, col);
94
- return m_matrix.coeff(row, col);
95
- }
96
-
97
- /** \sa MatrixBase::coeffRef()
98
- * \warning the coordinates must fit into the referenced triangular part
99
- */
100
- EIGEN_DEVICE_FUNC
101
- inline Scalar& coeffRef(Index row, Index col)
102
- {
103
- EIGEN_STATIC_ASSERT_LVALUE(SelfAdjointView);
104
- Base::check_coordinates_internal(row, col);
105
- return m_matrix.coeffRef(row, col);
106
- }
107
-
108
- /** \internal */
109
- EIGEN_DEVICE_FUNC
110
- const MatrixTypeNestedCleaned& _expression() const { return m_matrix; }
111
-
112
- EIGEN_DEVICE_FUNC
113
- const MatrixTypeNestedCleaned& nestedExpression() const { return m_matrix; }
114
- EIGEN_DEVICE_FUNC
115
- MatrixTypeNestedCleaned& nestedExpression() { return m_matrix; }
116
-
117
- /** Efficient triangular matrix times vector/matrix product */
118
- template<typename OtherDerived>
119
- EIGEN_DEVICE_FUNC
120
- const Product<SelfAdjointView,OtherDerived>
121
- operator*(const MatrixBase<OtherDerived>& rhs) const
122
- {
123
- return Product<SelfAdjointView,OtherDerived>(*this, rhs.derived());
124
- }
125
-
126
- /** Efficient vector/matrix times triangular matrix product */
127
- template<typename OtherDerived> friend
128
- EIGEN_DEVICE_FUNC
129
- const Product<OtherDerived,SelfAdjointView>
130
- operator*(const MatrixBase<OtherDerived>& lhs, const SelfAdjointView& rhs)
131
- {
132
- return Product<OtherDerived,SelfAdjointView>(lhs.derived(),rhs);
133
- }
134
-
135
- friend EIGEN_DEVICE_FUNC
136
- const SelfAdjointView<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar,MatrixType,product),UpLo>
137
- operator*(const Scalar& s, const SelfAdjointView& mat)
138
- {
139
- return (s*mat.nestedExpression()).template selfadjointView<UpLo>();
140
- }
141
-
142
- /** Perform a symmetric rank 2 update of the selfadjoint matrix \c *this:
143
- * \f$ this = this + \alpha u v^* + conj(\alpha) v u^* \f$
144
- * \returns a reference to \c *this
145
- *
146
- * The vectors \a u and \c v \b must be column vectors, however they can be
147
- * a adjoint expression without any overhead. Only the meaningful triangular
148
- * part of the matrix is updated, the rest is left unchanged.
149
- *
150
- * \sa rankUpdate(const MatrixBase<DerivedU>&, Scalar)
151
- */
152
- template<typename DerivedU, typename DerivedV>
153
- EIGEN_DEVICE_FUNC
154
- SelfAdjointView& rankUpdate(const MatrixBase<DerivedU>& u, const MatrixBase<DerivedV>& v, const Scalar& alpha = Scalar(1));
155
-
156
- /** Perform a symmetric rank K update of the selfadjoint matrix \c *this:
157
- * \f$ this = this + \alpha ( u u^* ) \f$ where \a u is a vector or matrix.
158
- *
159
- * \returns a reference to \c *this
160
- *
161
- * Note that to perform \f$ this = this + \alpha ( u^* u ) \f$ you can simply
162
- * call this function with u.adjoint().
163
- *
164
- * \sa rankUpdate(const MatrixBase<DerivedU>&, const MatrixBase<DerivedV>&, Scalar)
165
- */
166
- template<typename DerivedU>
167
- EIGEN_DEVICE_FUNC
168
- SelfAdjointView& rankUpdate(const MatrixBase<DerivedU>& u, const Scalar& alpha = Scalar(1));
169
-
170
- /** \returns an expression of a triangular view extracted from the current selfadjoint view of a given triangular part
171
- *
172
- * The parameter \a TriMode can have the following values: \c #Upper, \c #StrictlyUpper, \c #UnitUpper,
173
- * \c #Lower, \c #StrictlyLower, \c #UnitLower.
174
- *
175
- * If \c TriMode references the same triangular part than \c *this, then this method simply return a \c TriangularView of the nested expression,
176
- * otherwise, the nested expression is first transposed, thus returning a \c TriangularView<Transpose<MatrixType>> object.
177
- *
178
- * \sa MatrixBase::triangularView(), class TriangularView
179
- */
180
- template<unsigned int TriMode>
181
- EIGEN_DEVICE_FUNC
182
- typename internal::conditional<(TriMode&(Upper|Lower))==(UpLo&(Upper|Lower)),
183
- TriangularView<MatrixType,TriMode>,
184
- TriangularView<typename MatrixType::AdjointReturnType,TriMode> >::type
185
- triangularView() const
186
- {
187
- typename internal::conditional<(TriMode&(Upper|Lower))==(UpLo&(Upper|Lower)), MatrixType&, typename MatrixType::ConstTransposeReturnType>::type tmp1(m_matrix);
188
- typename internal::conditional<(TriMode&(Upper|Lower))==(UpLo&(Upper|Lower)), MatrixType&, typename MatrixType::AdjointReturnType>::type tmp2(tmp1);
189
- return typename internal::conditional<(TriMode&(Upper|Lower))==(UpLo&(Upper|Lower)),
190
- TriangularView<MatrixType,TriMode>,
191
- TriangularView<typename MatrixType::AdjointReturnType,TriMode> >::type(tmp2);
192
- }
193
-
194
- typedef SelfAdjointView<const MatrixConjugateReturnType,UpLo> ConjugateReturnType;
195
- /** \sa MatrixBase::conjugate() const */
196
- EIGEN_DEVICE_FUNC
197
- inline const ConjugateReturnType conjugate() const
198
- { return ConjugateReturnType(m_matrix.conjugate()); }
199
-
200
- typedef SelfAdjointView<const typename MatrixType::AdjointReturnType,TransposeMode> AdjointReturnType;
201
- /** \sa MatrixBase::adjoint() const */
202
- EIGEN_DEVICE_FUNC
203
- inline const AdjointReturnType adjoint() const
204
- { return AdjointReturnType(m_matrix.adjoint()); }
205
-
206
- typedef SelfAdjointView<typename MatrixType::TransposeReturnType,TransposeMode> TransposeReturnType;
207
- /** \sa MatrixBase::transpose() */
208
- EIGEN_DEVICE_FUNC
209
- inline TransposeReturnType transpose()
210
- {
211
- EIGEN_STATIC_ASSERT_LVALUE(MatrixType)
212
- typename MatrixType::TransposeReturnType tmp(m_matrix);
213
- return TransposeReturnType(tmp);
214
- }
215
-
216
- typedef SelfAdjointView<const typename MatrixType::ConstTransposeReturnType,TransposeMode> ConstTransposeReturnType;
217
- /** \sa MatrixBase::transpose() const */
218
- EIGEN_DEVICE_FUNC
219
- inline const ConstTransposeReturnType transpose() const
220
- {
221
- return ConstTransposeReturnType(m_matrix.transpose());
222
- }
223
-
224
- /** \returns a const expression of the main diagonal of the matrix \c *this
225
- *
226
- * This method simply returns the diagonal of the nested expression, thus by-passing the SelfAdjointView decorator.
227
- *
228
- * \sa MatrixBase::diagonal(), class Diagonal */
229
- EIGEN_DEVICE_FUNC
230
- typename MatrixType::ConstDiagonalReturnType diagonal() const
231
- {
232
- return typename MatrixType::ConstDiagonalReturnType(m_matrix);
233
- }
234
-
235
- /////////// Cholesky module ///////////
236
-
237
- const LLT<PlainObject, UpLo> llt() const;
238
- const LDLT<PlainObject, UpLo> ldlt() const;
239
-
240
- /////////// Eigenvalue module ///////////
241
-
242
- /** Real part of #Scalar */
243
- typedef typename NumTraits<Scalar>::Real RealScalar;
244
- /** Return type of eigenvalues() */
245
- typedef Matrix<RealScalar, internal::traits<MatrixType>::ColsAtCompileTime, 1> EigenvaluesReturnType;
246
-
247
- EIGEN_DEVICE_FUNC
248
- EigenvaluesReturnType eigenvalues() const;
249
- EIGEN_DEVICE_FUNC
250
- RealScalar operatorNorm() const;
251
-
252
- protected:
253
- MatrixTypeNested m_matrix;
254
- };
55
+ typedef MatrixType_ MatrixType;
56
+ typedef TriangularBase<SelfAdjointView> Base;
57
+ typedef typename internal::traits<SelfAdjointView>::MatrixTypeNested MatrixTypeNested;
58
+ typedef typename internal::traits<SelfAdjointView>::MatrixTypeNestedCleaned MatrixTypeNestedCleaned;
59
+ typedef MatrixTypeNestedCleaned NestedExpression;
60
+
61
+ /** \brief The type of coefficients in this matrix */
62
+ typedef typename internal::traits<SelfAdjointView>::Scalar Scalar;
63
+ typedef typename MatrixType::StorageIndex StorageIndex;
64
+ typedef internal::remove_all_t<typename MatrixType::ConjugateReturnType> MatrixConjugateReturnType;
65
+ typedef SelfAdjointView<std::add_const_t<MatrixType>, UpLo> ConstSelfAdjointView;
66
+
67
+ enum {
68
+ Mode = internal::traits<SelfAdjointView>::Mode,
69
+ Flags = internal::traits<SelfAdjointView>::Flags,
70
+ TransposeMode = ((int(Mode) & int(Upper)) ? Lower : 0) | ((int(Mode) & int(Lower)) ? Upper : 0)
71
+ };
72
+ typedef typename MatrixType::PlainObject PlainObject;
73
+
74
+ EIGEN_DEVICE_FUNC explicit inline SelfAdjointView(MatrixType& matrix) : m_matrix(matrix) {}
75
+
76
+ EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return m_matrix.rows(); }
77
+ EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return m_matrix.cols(); }
78
+ EIGEN_DEVICE_FUNC constexpr Index outerStride() const noexcept { return m_matrix.outerStride(); }
79
+ EIGEN_DEVICE_FUNC constexpr Index innerStride() const noexcept { return m_matrix.innerStride(); }
80
+
81
+ /** \sa MatrixBase::coeff()
82
+ * \warning the coordinates must fit into the referenced triangular part
83
+ */
84
+ EIGEN_DEVICE_FUNC inline Scalar coeff(Index row, Index col) const {
85
+ Base::check_coordinates_internal(row, col);
86
+ return m_matrix.coeff(row, col);
87
+ }
88
+
89
+ /** \sa MatrixBase::coeffRef()
90
+ * \warning the coordinates must fit into the referenced triangular part
91
+ */
92
+ EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index row, Index col) {
93
+ EIGEN_STATIC_ASSERT_LVALUE(SelfAdjointView);
94
+ Base::check_coordinates_internal(row, col);
95
+ return m_matrix.coeffRef(row, col);
96
+ }
97
+
98
+ /** \internal */
99
+ EIGEN_DEVICE_FUNC const MatrixTypeNestedCleaned& _expression() const { return m_matrix; }
100
+
101
+ EIGEN_DEVICE_FUNC const MatrixTypeNestedCleaned& nestedExpression() const { return m_matrix; }
102
+ EIGEN_DEVICE_FUNC MatrixTypeNestedCleaned& nestedExpression() { return m_matrix; }
103
+
104
+ /** Efficient triangular matrix times vector/matrix product */
105
+ template <typename OtherDerived>
106
+ EIGEN_DEVICE_FUNC const Product<SelfAdjointView, OtherDerived> operator*(const MatrixBase<OtherDerived>& rhs) const {
107
+ return Product<SelfAdjointView, OtherDerived>(*this, rhs.derived());
108
+ }
109
+
110
+ /** Efficient vector/matrix times triangular matrix product */
111
+ template <typename OtherDerived>
112
+ friend EIGEN_DEVICE_FUNC const Product<OtherDerived, SelfAdjointView> operator*(const MatrixBase<OtherDerived>& lhs,
113
+ const SelfAdjointView& rhs) {
114
+ return Product<OtherDerived, SelfAdjointView>(lhs.derived(), rhs);
115
+ }
116
+
117
+ friend EIGEN_DEVICE_FUNC const
118
+ SelfAdjointView<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar, MatrixType, product), UpLo>
119
+ operator*(const Scalar& s, const SelfAdjointView& mat) {
120
+ return (s * mat.nestedExpression()).template selfadjointView<UpLo>();
121
+ }
255
122
 
123
+ /** Perform a symmetric rank 2 update of the selfadjoint matrix \c *this:
124
+ * \f$ this = this + \alpha u v^* + conj(\alpha) v u^* \f$
125
+ * \returns a reference to \c *this
126
+ *
127
+ * The vectors \a u and \c v \b must be column vectors, however they can be
128
+ * a adjoint expression without any overhead. Only the meaningful triangular
129
+ * part of the matrix is updated, the rest is left unchanged.
130
+ *
131
+ * \sa rankUpdate(const MatrixBase<DerivedU>&, Scalar)
132
+ */
133
+ template <typename DerivedU, typename DerivedV>
134
+ EIGEN_DEVICE_FUNC SelfAdjointView& rankUpdate(const MatrixBase<DerivedU>& u, const MatrixBase<DerivedV>& v,
135
+ const Scalar& alpha = Scalar(1));
136
+
137
+ /** Perform a symmetric rank K update of the selfadjoint matrix \c *this:
138
+ * \f$ this = this + \alpha ( u u^* ) \f$ where \a u is a vector or matrix.
139
+ *
140
+ * \returns a reference to \c *this
141
+ *
142
+ * Note that to perform \f$ this = this + \alpha ( u^* u ) \f$ you can simply
143
+ * call this function with u.adjoint().
144
+ *
145
+ * \sa rankUpdate(const MatrixBase<DerivedU>&, const MatrixBase<DerivedV>&, Scalar)
146
+ */
147
+ template <typename DerivedU>
148
+ EIGEN_DEVICE_FUNC SelfAdjointView& rankUpdate(const MatrixBase<DerivedU>& u, const Scalar& alpha = Scalar(1));
149
+
150
+ /** \returns an expression of a triangular view extracted from the current selfadjoint view of a given triangular part
151
+ *
152
+ * The parameter \a TriMode can have the following values: \c #Upper, \c #StrictlyUpper, \c #UnitUpper,
153
+ * \c #Lower, \c #StrictlyLower, \c #UnitLower.
154
+ *
155
+ * If \c TriMode references the same triangular part than \c *this, then this method simply return a \c TriangularView
156
+ * of the nested expression, otherwise, the nested expression is first transposed, thus returning a \c
157
+ * TriangularView<Transpose<MatrixType>> object.
158
+ *
159
+ * \sa MatrixBase::triangularView(), class TriangularView
160
+ */
161
+ template <unsigned int TriMode>
162
+ EIGEN_DEVICE_FUNC
163
+ std::conditional_t<(TriMode & (Upper | Lower)) == (UpLo & (Upper | Lower)), TriangularView<MatrixType, TriMode>,
164
+ TriangularView<typename MatrixType::AdjointReturnType, TriMode> >
165
+ triangularView() const {
166
+ std::conditional_t<(TriMode & (Upper | Lower)) == (UpLo & (Upper | Lower)), MatrixType&,
167
+ typename MatrixType::ConstTransposeReturnType>
168
+ tmp1(m_matrix);
169
+ std::conditional_t<(TriMode & (Upper | Lower)) == (UpLo & (Upper | Lower)), MatrixType&,
170
+ typename MatrixType::AdjointReturnType>
171
+ tmp2(tmp1);
172
+ return std::conditional_t<(TriMode & (Upper | Lower)) == (UpLo & (Upper | Lower)),
173
+ TriangularView<MatrixType, TriMode>,
174
+ TriangularView<typename MatrixType::AdjointReturnType, TriMode> >(tmp2);
175
+ }
176
+
177
+ typedef SelfAdjointView<const MatrixConjugateReturnType, UpLo> ConjugateReturnType;
178
+ /** \sa MatrixBase::conjugate() const */
179
+ EIGEN_DEVICE_FUNC inline const ConjugateReturnType conjugate() const {
180
+ return ConjugateReturnType(m_matrix.conjugate());
181
+ }
182
+
183
+ /** \returns an expression of the complex conjugate of \c *this if Cond==true,
184
+ * returns \c *this otherwise.
185
+ */
186
+ template <bool Cond>
187
+ EIGEN_DEVICE_FUNC inline std::conditional_t<Cond, ConjugateReturnType, ConstSelfAdjointView> conjugateIf() const {
188
+ typedef std::conditional_t<Cond, ConjugateReturnType, ConstSelfAdjointView> ReturnType;
189
+ return ReturnType(m_matrix.template conjugateIf<Cond>());
190
+ }
191
+
192
+ typedef SelfAdjointView<const typename MatrixType::AdjointReturnType, TransposeMode> AdjointReturnType;
193
+ /** \sa MatrixBase::adjoint() const */
194
+ EIGEN_DEVICE_FUNC inline const AdjointReturnType adjoint() const { return AdjointReturnType(m_matrix.adjoint()); }
195
+
196
+ typedef SelfAdjointView<typename MatrixType::TransposeReturnType, TransposeMode> TransposeReturnType;
197
+ /** \sa MatrixBase::transpose() */
198
+ template <class Dummy = int>
199
+ EIGEN_DEVICE_FUNC inline TransposeReturnType transpose(
200
+ std::enable_if_t<Eigen::internal::is_lvalue<MatrixType>::value, Dummy*> = nullptr) {
201
+ typename MatrixType::TransposeReturnType tmp(m_matrix);
202
+ return TransposeReturnType(tmp);
203
+ }
204
+
205
+ typedef SelfAdjointView<const typename MatrixType::ConstTransposeReturnType, TransposeMode> ConstTransposeReturnType;
206
+ /** \sa MatrixBase::transpose() const */
207
+ EIGEN_DEVICE_FUNC inline const ConstTransposeReturnType transpose() const {
208
+ return ConstTransposeReturnType(m_matrix.transpose());
209
+ }
210
+
211
+ /** \returns a const expression of the main diagonal of the matrix \c *this
212
+ *
213
+ * This method simply returns the diagonal of the nested expression, thus by-passing the SelfAdjointView decorator.
214
+ *
215
+ * \sa MatrixBase::diagonal(), class Diagonal */
216
+ EIGEN_DEVICE_FUNC typename MatrixType::ConstDiagonalReturnType diagonal() const {
217
+ return typename MatrixType::ConstDiagonalReturnType(m_matrix);
218
+ }
219
+
220
+ /////////// Cholesky module ///////////
221
+
222
+ const LLT<PlainObject, UpLo> llt() const;
223
+ const LDLT<PlainObject, UpLo> ldlt() const;
224
+
225
+ /////////// Eigenvalue module ///////////
226
+
227
+ /** Real part of #Scalar */
228
+ typedef typename NumTraits<Scalar>::Real RealScalar;
229
+ /** Return type of eigenvalues() */
230
+ typedef Matrix<RealScalar, internal::traits<MatrixType>::ColsAtCompileTime, 1> EigenvaluesReturnType;
231
+
232
+ EIGEN_DEVICE_FUNC EigenvaluesReturnType eigenvalues() const;
233
+ EIGEN_DEVICE_FUNC RealScalar operatorNorm() const;
234
+
235
+ protected:
236
+ MatrixTypeNested m_matrix;
237
+ };
256
238
 
257
239
  // template<typename OtherDerived, typename MatrixType, unsigned int UpLo>
258
240
  // internal::selfadjoint_matrix_product_returntype<OtherDerived,SelfAdjointView<MatrixType,UpLo> >
259
241
  // operator*(const MatrixBase<OtherDerived>& lhs, const SelfAdjointView<MatrixType,UpLo>& rhs)
260
242
  // {
261
- // return internal::matrix_selfadjoint_product_returntype<OtherDerived,SelfAdjointView<MatrixType,UpLo> >(lhs.derived(),rhs);
243
+ // return internal::matrix_selfadjoint_product_returntype<OtherDerived,SelfAdjointView<MatrixType,UpLo>
244
+ // >(lhs.derived(),rhs);
262
245
  // }
263
246
 
264
247
  // selfadjoint to dense matrix
@@ -267,86 +250,80 @@ namespace internal {
267
250
 
268
251
  // TODO currently a selfadjoint expression has the form SelfAdjointView<.,.>
269
252
  // in the future selfadjoint-ness should be defined by the expression traits
270
- // such that Transpose<SelfAdjointView<.,.> > is valid. (currently TriangularBase::transpose() is overloaded to make it work)
271
- template<typename MatrixType, unsigned int Mode>
272
- struct evaluator_traits<SelfAdjointView<MatrixType,Mode> >
273
- {
253
+ // such that Transpose<SelfAdjointView<.,.> > is valid. (currently TriangularBase::transpose() is overloaded to
254
+ // make it work)
255
+ template <typename MatrixType, unsigned int Mode>
256
+ struct evaluator_traits<SelfAdjointView<MatrixType, Mode> > {
274
257
  typedef typename storage_kind_to_evaluator_kind<typename MatrixType::StorageKind>::Kind Kind;
275
258
  typedef SelfAdjointShape Shape;
276
259
  };
277
260
 
278
- template<int UpLo, int SetOpposite, typename DstEvaluatorTypeT, typename SrcEvaluatorTypeT, typename Functor, int Version>
279
- class triangular_dense_assignment_kernel<UpLo,SelfAdjoint,SetOpposite,DstEvaluatorTypeT,SrcEvaluatorTypeT,Functor,Version>
280
- : public generic_dense_assignment_kernel<DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, Version>
281
- {
282
- protected:
261
+ template <int UpLo, int SetOpposite, typename DstEvaluatorTypeT, typename SrcEvaluatorTypeT, typename Functor,
262
+ int Version>
263
+ class triangular_dense_assignment_kernel<UpLo, SelfAdjoint, SetOpposite, DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor,
264
+ Version>
265
+ : public generic_dense_assignment_kernel<DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, Version> {
266
+ protected:
283
267
  typedef generic_dense_assignment_kernel<DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, Version> Base;
284
268
  typedef typename Base::DstXprType DstXprType;
285
269
  typedef typename Base::SrcXprType SrcXprType;
286
270
  using Base::m_dst;
287
- using Base::m_src;
288
271
  using Base::m_functor;
289
- public:
290
-
272
+ using Base::m_src;
273
+
274
+ public:
291
275
  typedef typename Base::DstEvaluatorType DstEvaluatorType;
292
276
  typedef typename Base::SrcEvaluatorType SrcEvaluatorType;
293
277
  typedef typename Base::Scalar Scalar;
294
278
  typedef typename Base::AssignmentTraits AssignmentTraits;
295
-
296
-
297
- EIGEN_DEVICE_FUNC triangular_dense_assignment_kernel(DstEvaluatorType &dst, const SrcEvaluatorType &src, const Functor &func, DstXprType& dstExpr)
298
- : Base(dst, src, func, dstExpr)
299
- {}
300
-
301
- EIGEN_DEVICE_FUNC void assignCoeff(Index row, Index col)
302
- {
303
- eigen_internal_assert(row!=col);
304
- Scalar tmp = m_src.coeff(row,col);
305
- m_functor.assignCoeff(m_dst.coeffRef(row,col), tmp);
306
- m_functor.assignCoeff(m_dst.coeffRef(col,row), numext::conj(tmp));
307
- }
308
-
309
- EIGEN_DEVICE_FUNC void assignDiagonalCoeff(Index id)
310
- {
311
- Base::assignCoeff(id,id);
279
+
280
+ EIGEN_DEVICE_FUNC triangular_dense_assignment_kernel(DstEvaluatorType& dst, const SrcEvaluatorType& src,
281
+ const Functor& func, DstXprType& dstExpr)
282
+ : Base(dst, src, func, dstExpr) {}
283
+
284
+ EIGEN_DEVICE_FUNC void assignCoeff(Index row, Index col) {
285
+ eigen_internal_assert(row != col);
286
+ Scalar tmp = m_src.coeff(row, col);
287
+ m_functor.assignCoeff(m_dst.coeffRef(row, col), tmp);
288
+ m_functor.assignCoeff(m_dst.coeffRef(col, row), numext::conj(tmp));
312
289
  }
313
-
314
- EIGEN_DEVICE_FUNC void assignOppositeCoeff(Index, Index)
315
- { eigen_internal_assert(false && "should never be called"); }
290
+
291
+ EIGEN_DEVICE_FUNC void assignDiagonalCoeff(Index id) { Base::assignCoeff(id, id); }
292
+
293
+ EIGEN_DEVICE_FUNC void assignOppositeCoeff(Index, Index) { eigen_internal_assert(false && "should never be called"); }
316
294
  };
317
295
 
318
- } // end namespace internal
296
+ } // end namespace internal
319
297
 
320
298
  /***************************************************************************
321
- * Implementation of MatrixBase methods
322
- ***************************************************************************/
299
+ * Implementation of MatrixBase methods
300
+ ***************************************************************************/
323
301
 
324
302
  /** This is the const version of MatrixBase::selfadjointView() */
325
- template<typename Derived>
326
- template<unsigned int UpLo>
327
- typename MatrixBase<Derived>::template ConstSelfAdjointViewReturnType<UpLo>::Type
328
- MatrixBase<Derived>::selfadjointView() const
329
- {
303
+ template <typename Derived>
304
+ template <unsigned int UpLo>
305
+ EIGEN_DEVICE_FUNC typename MatrixBase<Derived>::template ConstSelfAdjointViewReturnType<UpLo>::Type
306
+ MatrixBase<Derived>::selfadjointView() const {
330
307
  return typename ConstSelfAdjointViewReturnType<UpLo>::Type(derived());
331
308
  }
332
309
 
333
- /** \returns an expression of a symmetric/self-adjoint view extracted from the upper or lower triangular part of the current matrix
334
- *
335
- * The parameter \a UpLo can be either \c #Upper or \c #Lower
336
- *
337
- * Example: \include MatrixBase_selfadjointView.cpp
338
- * Output: \verbinclude MatrixBase_selfadjointView.out
339
- *
340
- * \sa class SelfAdjointView
341
- */
342
- template<typename Derived>
343
- template<unsigned int UpLo>
344
- typename MatrixBase<Derived>::template SelfAdjointViewReturnType<UpLo>::Type
345
- MatrixBase<Derived>::selfadjointView()
346
- {
310
+ /** \returns an expression of a symmetric/self-adjoint view extracted from the upper or lower triangular part of the
311
+ * current matrix
312
+ *
313
+ * The parameter \a UpLo can be either \c #Upper or \c #Lower
314
+ *
315
+ * Example: \include MatrixBase_selfadjointView.cpp
316
+ * Output: \verbinclude MatrixBase_selfadjointView.out
317
+ *
318
+ * \sa class SelfAdjointView
319
+ */
320
+ template <typename Derived>
321
+ template <unsigned int UpLo>
322
+ EIGEN_DEVICE_FUNC typename MatrixBase<Derived>::template SelfAdjointViewReturnType<UpLo>::Type
323
+ MatrixBase<Derived>::selfadjointView() {
347
324
  return typename SelfAdjointViewReturnType<UpLo>::Type(derived());
348
325
  }
349
326
 
350
- } // end namespace Eigen
327
+ } // end namespace Eigen
351
328
 
352
- #endif // EIGEN_SELFADJOINTMATRIX_H
329
+ #endif // EIGEN_SELFADJOINTMATRIX_H