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