@smake/eigen 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -21
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +235 -326
  6. package/eigen/Eigen/Eigenvalues +16 -14
  7. package/eigen/Eigen/Geometry +21 -24
  8. package/eigen/Eigen/Householder +9 -8
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -14
  11. package/eigen/Eigen/KLUSupport +43 -0
  12. package/eigen/Eigen/LU +16 -20
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -54
  15. package/eigen/Eigen/PaStiXSupport +23 -20
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -21
  18. package/eigen/Eigen/QtAlignedMalloc +5 -13
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -18
  21. package/eigen/Eigen/Sparse +1 -4
  22. package/eigen/Eigen/SparseCholesky +18 -23
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +12 -8
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
  37. package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
  42. package/eigen/Eigen/src/Core/Array.h +341 -294
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
  48. package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
  49. package/eigen/Eigen/src/Core/Block.h +375 -398
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
  53. package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
  59. package/eigen/Eigen/src/Core/DenseBase.h +632 -571
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
  61. package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +169 -210
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +172 -222
  67. package/eigen/Eigen/src/Core/EigenBase.h +75 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
  75. package/eigen/Eigen/src/Core/IO.h +147 -139
  76. package/eigen/Eigen/src/Core/IndexedView.h +321 -0
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +56 -66
  80. package/eigen/Eigen/src/Core/Map.h +124 -142
  81. package/eigen/Eigen/src/Core/MapBase.h +256 -281
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
  84. package/eigen/Eigen/src/Core/Matrix.h +491 -416
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
  86. package/eigen/Eigen/src/Core/NestByValue.h +66 -85
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -85
  88. package/eigen/Eigen/src/Core/NumTraits.h +235 -148
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
  92. package/eigen/Eigen/src/Core/Product.h +260 -139
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
  94. package/eigen/Eigen/src/Core/Random.h +161 -136
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +366 -336
  98. package/eigen/Eigen/src/Core/Ref.h +308 -209
  99. package/eigen/Eigen/src/Core/Replicate.h +94 -106
  100. package/eigen/Eigen/src/Core/Reshaped.h +398 -0
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +136 -145
  103. package/eigen/Eigen/src/Core/Select.h +70 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +97 -111
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
  109. package/eigen/Eigen/src/Core/SolverBase.h +138 -101
  110. package/eigen/Eigen/src/Core/StableNorm.h +156 -160
  111. package/eigen/Eigen/src/Core/StlIterators.h +619 -0
  112. package/eigen/Eigen/src/Core/Stride.h +91 -88
  113. package/eigen/Eigen/src/Core/Swap.h +70 -38
  114. package/eigen/Eigen/src/Core/Transpose.h +295 -273
  115. package/eigen/Eigen/src/Core/Transpositions.h +272 -317
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
  119. package/eigen/Eigen/src/Core/Visitor.h +480 -216
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
  217. package/eigen/Eigen/src/Core/util/Constants.h +314 -263
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
  226. package/eigen/Eigen/src/Core/util/Macros.h +939 -646
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
  229. package/eigen/Eigen/src/Core/util/Meta.h +618 -426
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
  264. package/eigen/Eigen/src/Geometry/Transform.h +896 -953
  265. package/eigen/Eigen/src/Geometry/Translation.h +100 -98
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
  269. package/eigen/Eigen/src/Householder/Householder.h +104 -122
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
  285. package/eigen/Eigen/src/LU/Determinant.h +60 -63
  286. package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/lib/LibEigen.d.ts +4 -0
  409. package/lib/LibEigen.js +14 -0
  410. package/lib/index.d.ts +1 -1
  411. package/lib/index.js +7 -3
  412. package/package.json +2 -10
  413. package/eigen/Eigen/CMakeLists.txt +0 -19
  414. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
  415. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
  416. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  417. package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
  418. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  419. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  420. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  421. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  422. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  423. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  424. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  425. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  426. package/eigen/Eigen/src/misc/lapack.h +0 -152
  427. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
  428. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
  429. package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
  430. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  431. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
  432. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  433. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
  434. package/lib/eigen.d.ts +0 -2
  435. package/lib/eigen.js +0 -15
@@ -11,222 +11,297 @@
11
11
  #ifndef EIGEN_DIAGONALMATRIX_H
12
12
  #define EIGEN_DIAGONALMATRIX_H
13
13
 
14
- namespace Eigen {
14
+ // IWYU pragma: private
15
+ #include "./InternalHeaderCheck.h"
16
+
17
+ namespace Eigen {
18
+
19
+ /** \class DiagonalBase
20
+ * \ingroup Core_Module
21
+ *
22
+ * \brief Base class for diagonal matrices and expressions
23
+ *
24
+ * This is the base class that is inherited by diagonal matrix and related expression
25
+ * types, which internally use a vector for storing the diagonal entries. Diagonal
26
+ * types always represent square matrices.
27
+ *
28
+ * \tparam Derived is the derived type, a DiagonalMatrix or DiagonalWrapper.
29
+ *
30
+ * \sa class DiagonalMatrix, class DiagonalWrapper
31
+ */
32
+ template <typename Derived>
33
+ class DiagonalBase : public EigenBase<Derived> {
34
+ public:
35
+ typedef typename internal::traits<Derived>::DiagonalVectorType DiagonalVectorType;
36
+ typedef typename DiagonalVectorType::Scalar Scalar;
37
+ typedef typename DiagonalVectorType::RealScalar RealScalar;
38
+ typedef typename internal::traits<Derived>::StorageKind StorageKind;
39
+ typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
15
40
 
16
- #ifndef EIGEN_PARSED_BY_DOXYGEN
17
- template<typename Derived>
18
- class DiagonalBase : public EigenBase<Derived>
19
- {
20
- public:
21
- typedef typename internal::traits<Derived>::DiagonalVectorType DiagonalVectorType;
22
- typedef typename DiagonalVectorType::Scalar Scalar;
23
- typedef typename DiagonalVectorType::RealScalar RealScalar;
24
- typedef typename internal::traits<Derived>::StorageKind StorageKind;
25
- typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
26
-
27
- enum {
28
- RowsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
29
- ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
30
- MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
31
- MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
32
- IsVectorAtCompileTime = 0,
33
- Flags = NoPreferredStorageOrderBit
34
- };
35
-
36
- typedef Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTime> DenseMatrixType;
37
- typedef DenseMatrixType DenseType;
38
- typedef DiagonalMatrix<Scalar,DiagonalVectorType::SizeAtCompileTime,DiagonalVectorType::MaxSizeAtCompileTime> PlainObject;
39
-
40
- EIGEN_DEVICE_FUNC
41
- inline const Derived& derived() const { return *static_cast<const Derived*>(this); }
42
- EIGEN_DEVICE_FUNC
43
- inline Derived& derived() { return *static_cast<Derived*>(this); }
44
-
45
- EIGEN_DEVICE_FUNC
46
- DenseMatrixType toDenseMatrix() const { return derived(); }
47
-
48
- EIGEN_DEVICE_FUNC
49
- inline const DiagonalVectorType& diagonal() const { return derived().diagonal(); }
50
- EIGEN_DEVICE_FUNC
51
- inline DiagonalVectorType& diagonal() { return derived().diagonal(); }
52
-
53
- EIGEN_DEVICE_FUNC
54
- inline Index rows() const { return diagonal().size(); }
55
- EIGEN_DEVICE_FUNC
56
- inline Index cols() const { return diagonal().size(); }
57
-
58
- template<typename MatrixDerived>
59
- EIGEN_DEVICE_FUNC
60
- const Product<Derived,MatrixDerived,LazyProduct>
61
- operator*(const MatrixBase<MatrixDerived> &matrix) const
62
- {
63
- return Product<Derived, MatrixDerived, LazyProduct>(derived(),matrix.derived());
64
- }
41
+ enum {
42
+ RowsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
43
+ ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
44
+ MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
45
+ MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
46
+ IsVectorAtCompileTime = 0,
47
+ Flags = NoPreferredStorageOrderBit
48
+ };
65
49
 
66
- typedef DiagonalWrapper<const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const DiagonalVectorType> > InverseReturnType;
67
- EIGEN_DEVICE_FUNC
68
- inline const InverseReturnType
69
- inverse() const
70
- {
71
- return InverseReturnType(diagonal().cwiseInverse());
72
- }
73
-
74
- EIGEN_DEVICE_FUNC
75
- inline const DiagonalWrapper<const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DiagonalVectorType,Scalar,product) >
76
- operator*(const Scalar& scalar) const
77
- {
78
- return DiagonalWrapper<const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DiagonalVectorType,Scalar,product) >(diagonal() * scalar);
79
- }
80
- EIGEN_DEVICE_FUNC
81
- friend inline const DiagonalWrapper<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar,DiagonalVectorType,product) >
82
- operator*(const Scalar& scalar, const DiagonalBase& other)
83
- {
84
- return DiagonalWrapper<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar,DiagonalVectorType,product) >(scalar * other.diagonal());
85
- }
86
- };
50
+ typedef Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTime>
51
+ DenseMatrixType;
52
+ typedef DenseMatrixType DenseType;
53
+ typedef DiagonalMatrix<Scalar, DiagonalVectorType::SizeAtCompileTime, DiagonalVectorType::MaxSizeAtCompileTime>
54
+ PlainObject;
55
+
56
+ /** \returns a reference to the derived object. */
57
+ EIGEN_DEVICE_FUNC inline const Derived& derived() const { return *static_cast<const Derived*>(this); }
58
+ /** \returns a const reference to the derived object. */
59
+ EIGEN_DEVICE_FUNC inline Derived& derived() { return *static_cast<Derived*>(this); }
60
+
61
+ /**
62
+ * Constructs a dense matrix from \c *this. Note, this directly returns a dense matrix type,
63
+ * not an expression.
64
+ * \returns A dense matrix, with its diagonal entries set from the the derived object. */
65
+ EIGEN_DEVICE_FUNC DenseMatrixType toDenseMatrix() const { return derived(); }
66
+
67
+ /** \returns a reference to the derived object's vector of diagonal coefficients. */
68
+ EIGEN_DEVICE_FUNC inline const DiagonalVectorType& diagonal() const { return derived().diagonal(); }
69
+ /** \returns a const reference to the derived object's vector of diagonal coefficients. */
70
+ EIGEN_DEVICE_FUNC inline DiagonalVectorType& diagonal() { return derived().diagonal(); }
71
+
72
+ /** \returns the value of the coefficient as if \c *this was a dense matrix. */
73
+ EIGEN_DEVICE_FUNC inline Scalar coeff(Index row, Index col) const {
74
+ eigen_assert(row >= 0 && col >= 0 && row < rows() && col <= cols());
75
+ return row == col ? diagonal().coeff(row) : Scalar(0);
76
+ }
87
77
 
88
- #endif
78
+ /** \returns the number of rows. */
79
+ EIGEN_DEVICE_FUNC constexpr Index rows() const { return diagonal().size(); }
80
+ /** \returns the number of columns. */
81
+ EIGEN_DEVICE_FUNC constexpr Index cols() const { return diagonal().size(); }
82
+
83
+ /** \returns the diagonal matrix product of \c *this by the dense matrix, \a matrix */
84
+ template <typename MatrixDerived>
85
+ EIGEN_DEVICE_FUNC const Product<Derived, MatrixDerived, LazyProduct> operator*(
86
+ const MatrixBase<MatrixDerived>& matrix) const {
87
+ return Product<Derived, MatrixDerived, LazyProduct>(derived(), matrix.derived());
88
+ }
89
+
90
+ template <typename OtherDerived>
91
+ using DiagonalProductReturnType = DiagonalWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE(
92
+ DiagonalVectorType, typename OtherDerived::DiagonalVectorType, product)>;
93
+
94
+ /** \returns the diagonal matrix product of \c *this by the diagonal matrix \a other */
95
+ template <typename OtherDerived>
96
+ EIGEN_DEVICE_FUNC const DiagonalProductReturnType<OtherDerived> operator*(
97
+ const DiagonalBase<OtherDerived>& other) const {
98
+ return diagonal().cwiseProduct(other.diagonal()).asDiagonal();
99
+ }
100
+
101
+ using DiagonalInverseReturnType =
102
+ DiagonalWrapper<const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const DiagonalVectorType>>;
103
+
104
+ /** \returns the inverse \c *this. Computed as the coefficient-wise inverse of the diagonal. */
105
+ EIGEN_DEVICE_FUNC inline const DiagonalInverseReturnType inverse() const {
106
+ return diagonal().cwiseInverse().asDiagonal();
107
+ }
108
+
109
+ using DiagonalScaleReturnType =
110
+ DiagonalWrapper<const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DiagonalVectorType, Scalar, product)>;
111
+
112
+ /** \returns the product of \c *this by the scalar \a scalar */
113
+ EIGEN_DEVICE_FUNC inline const DiagonalScaleReturnType operator*(const Scalar& scalar) const {
114
+ return (diagonal() * scalar).asDiagonal();
115
+ }
116
+
117
+ using ScaleDiagonalReturnType =
118
+ DiagonalWrapper<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar, DiagonalVectorType, product)>;
119
+
120
+ /** \returns the product of a scalar and the diagonal matrix \a other */
121
+ EIGEN_DEVICE_FUNC friend inline const ScaleDiagonalReturnType operator*(const Scalar& scalar,
122
+ const DiagonalBase& other) {
123
+ return (scalar * other.diagonal()).asDiagonal();
124
+ }
125
+
126
+ template <typename OtherDerived>
127
+ using DiagonalSumReturnType = DiagonalWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE(
128
+ DiagonalVectorType, typename OtherDerived::DiagonalVectorType, sum)>;
129
+
130
+ /** \returns the sum of \c *this and the diagonal matrix \a other */
131
+ template <typename OtherDerived>
132
+ EIGEN_DEVICE_FUNC inline const DiagonalSumReturnType<OtherDerived> operator+(
133
+ const DiagonalBase<OtherDerived>& other) const {
134
+ return (diagonal() + other.diagonal()).asDiagonal();
135
+ }
136
+
137
+ template <typename OtherDerived>
138
+ using DiagonalDifferenceReturnType = DiagonalWrapper<const EIGEN_CWISE_BINARY_RETURN_TYPE(
139
+ DiagonalVectorType, typename OtherDerived::DiagonalVectorType, difference)>;
140
+
141
+ /** \returns the difference of \c *this and the diagonal matrix \a other */
142
+ template <typename OtherDerived>
143
+ EIGEN_DEVICE_FUNC inline const DiagonalDifferenceReturnType<OtherDerived> operator-(
144
+ const DiagonalBase<OtherDerived>& other) const {
145
+ return (diagonal() - other.diagonal()).asDiagonal();
146
+ }
147
+ };
89
148
 
90
149
  /** \class DiagonalMatrix
91
- * \ingroup Core_Module
92
- *
93
- * \brief Represents a diagonal matrix with its storage
94
- *
95
- * \param _Scalar the type of coefficients
96
- * \param SizeAtCompileTime the dimension of the matrix, or Dynamic
97
- * \param MaxSizeAtCompileTime the dimension of the matrix, or Dynamic. This parameter is optional and defaults
98
- * to SizeAtCompileTime. Most of the time, you do not need to specify it.
99
- *
100
- * \sa class DiagonalWrapper
101
- */
150
+ * \ingroup Core_Module
151
+ *
152
+ * \brief Represents a diagonal matrix with its storage
153
+ *
154
+ * \tparam Scalar_ the type of coefficients
155
+ * \tparam SizeAtCompileTime the dimension of the matrix, or Dynamic
156
+ * \tparam MaxSizeAtCompileTime the dimension of the matrix, or Dynamic. This parameter is optional and defaults
157
+ * to SizeAtCompileTime. Most of the time, you do not need to specify it.
158
+ *
159
+ * \sa class DiagonalBase, class DiagonalWrapper
160
+ */
102
161
 
103
162
  namespace internal {
104
- template<typename _Scalar, int SizeAtCompileTime, int MaxSizeAtCompileTime>
105
- struct traits<DiagonalMatrix<_Scalar,SizeAtCompileTime,MaxSizeAtCompileTime> >
106
- : traits<Matrix<_Scalar,SizeAtCompileTime,SizeAtCompileTime,0,MaxSizeAtCompileTime,MaxSizeAtCompileTime> >
107
- {
108
- typedef Matrix<_Scalar,SizeAtCompileTime,1,0,MaxSizeAtCompileTime,1> DiagonalVectorType;
163
+ template <typename Scalar_, int SizeAtCompileTime, int MaxSizeAtCompileTime>
164
+ struct traits<DiagonalMatrix<Scalar_, SizeAtCompileTime, MaxSizeAtCompileTime>>
165
+ : traits<Matrix<Scalar_, SizeAtCompileTime, SizeAtCompileTime, 0, MaxSizeAtCompileTime, MaxSizeAtCompileTime>> {
166
+ typedef Matrix<Scalar_, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1> DiagonalVectorType;
109
167
  typedef DiagonalShape StorageKind;
110
- enum {
111
- Flags = LvalueBit | NoPreferredStorageOrderBit
112
- };
168
+ enum { Flags = LvalueBit | NoPreferredStorageOrderBit | NestByRefBit };
113
169
  };
114
- }
115
- template<typename _Scalar, int SizeAtCompileTime, int MaxSizeAtCompileTime>
116
- class DiagonalMatrix
117
- : public DiagonalBase<DiagonalMatrix<_Scalar,SizeAtCompileTime,MaxSizeAtCompileTime> >
118
- {
119
- public:
120
- #ifndef EIGEN_PARSED_BY_DOXYGEN
121
- typedef typename internal::traits<DiagonalMatrix>::DiagonalVectorType DiagonalVectorType;
122
- typedef const DiagonalMatrix& Nested;
123
- typedef _Scalar Scalar;
124
- typedef typename internal::traits<DiagonalMatrix>::StorageKind StorageKind;
125
- typedef typename internal::traits<DiagonalMatrix>::StorageIndex StorageIndex;
126
- #endif
127
-
128
- protected:
129
-
130
- DiagonalVectorType m_diagonal;
131
-
132
- public:
133
-
134
- /** const version of diagonal(). */
135
- EIGEN_DEVICE_FUNC
136
- inline const DiagonalVectorType& diagonal() const { return m_diagonal; }
137
- /** \returns a reference to the stored vector of diagonal coefficients. */
138
- EIGEN_DEVICE_FUNC
139
- inline DiagonalVectorType& diagonal() { return m_diagonal; }
140
-
141
- /** Default constructor without initialization */
142
- EIGEN_DEVICE_FUNC
143
- inline DiagonalMatrix() {}
144
-
145
- /** Constructs a diagonal matrix with given dimension */
146
- EIGEN_DEVICE_FUNC
147
- explicit inline DiagonalMatrix(Index dim) : m_diagonal(dim) {}
148
-
149
- /** 2D constructor. */
150
- EIGEN_DEVICE_FUNC
151
- inline DiagonalMatrix(const Scalar& x, const Scalar& y) : m_diagonal(x,y) {}
152
-
153
- /** 3D constructor. */
154
- EIGEN_DEVICE_FUNC
155
- inline DiagonalMatrix(const Scalar& x, const Scalar& y, const Scalar& z) : m_diagonal(x,y,z) {}
156
-
157
- /** Copy constructor. */
158
- template<typename OtherDerived>
159
- EIGEN_DEVICE_FUNC
160
- inline DiagonalMatrix(const DiagonalBase<OtherDerived>& other) : m_diagonal(other.diagonal()) {}
161
-
162
- #ifndef EIGEN_PARSED_BY_DOXYGEN
163
- /** copy constructor. prevent a default copy constructor from hiding the other templated constructor */
164
- inline DiagonalMatrix(const DiagonalMatrix& other) : m_diagonal(other.diagonal()) {}
165
- #endif
166
-
167
- /** generic constructor from expression of the diagonal coefficients */
168
- template<typename OtherDerived>
169
- EIGEN_DEVICE_FUNC
170
- explicit inline DiagonalMatrix(const MatrixBase<OtherDerived>& other) : m_diagonal(other)
171
- {}
172
-
173
- /** Copy operator. */
174
- template<typename OtherDerived>
175
- EIGEN_DEVICE_FUNC
176
- DiagonalMatrix& operator=(const DiagonalBase<OtherDerived>& other)
177
- {
178
- m_diagonal = other.diagonal();
179
- return *this;
180
- }
170
+ } // namespace internal
171
+ template <typename Scalar_, int SizeAtCompileTime, int MaxSizeAtCompileTime>
172
+ class DiagonalMatrix : public DiagonalBase<DiagonalMatrix<Scalar_, SizeAtCompileTime, MaxSizeAtCompileTime>> {
173
+ public:
174
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
175
+ typedef typename internal::traits<DiagonalMatrix>::DiagonalVectorType DiagonalVectorType;
176
+ typedef const DiagonalMatrix& Nested;
177
+ typedef Scalar_ Scalar;
178
+ typedef typename internal::traits<DiagonalMatrix>::StorageKind StorageKind;
179
+ typedef typename internal::traits<DiagonalMatrix>::StorageIndex StorageIndex;
180
+ #endif
181
181
 
182
- #ifndef EIGEN_PARSED_BY_DOXYGEN
183
- /** This is a special case of the templated operator=. Its purpose is to
184
- * prevent a default operator= from hiding the templated operator=.
185
- */
186
- EIGEN_DEVICE_FUNC
187
- DiagonalMatrix& operator=(const DiagonalMatrix& other)
188
- {
189
- m_diagonal = other.diagonal();
190
- return *this;
191
- }
192
- #endif
193
-
194
- /** Resizes to given size. */
195
- EIGEN_DEVICE_FUNC
196
- inline void resize(Index size) { m_diagonal.resize(size); }
197
- /** Sets all coefficients to zero. */
198
- EIGEN_DEVICE_FUNC
199
- inline void setZero() { m_diagonal.setZero(); }
200
- /** Resizes and sets all coefficients to zero. */
201
- EIGEN_DEVICE_FUNC
202
- inline void setZero(Index size) { m_diagonal.setZero(size); }
203
- /** Sets this matrix to be the identity matrix of the current size. */
204
- EIGEN_DEVICE_FUNC
205
- inline void setIdentity() { m_diagonal.setOnes(); }
206
- /** Sets this matrix to be the identity matrix of the given size. */
207
- EIGEN_DEVICE_FUNC
208
- inline void setIdentity(Index size) { m_diagonal.setOnes(size); }
182
+ protected:
183
+ DiagonalVectorType m_diagonal;
184
+
185
+ public:
186
+ /** const version of diagonal(). */
187
+ EIGEN_DEVICE_FUNC inline const DiagonalVectorType& diagonal() const { return m_diagonal; }
188
+ /** \returns a reference to the stored vector of diagonal coefficients. */
189
+ EIGEN_DEVICE_FUNC inline DiagonalVectorType& diagonal() { return m_diagonal; }
190
+
191
+ /** Default constructor without initialization */
192
+ EIGEN_DEVICE_FUNC inline DiagonalMatrix() {}
193
+
194
+ /** Constructs a diagonal matrix with given dimension */
195
+ EIGEN_DEVICE_FUNC explicit inline DiagonalMatrix(Index dim) : m_diagonal(dim) {}
196
+
197
+ /** 2D constructor. */
198
+ EIGEN_DEVICE_FUNC inline DiagonalMatrix(const Scalar& x, const Scalar& y) : m_diagonal(x, y) {}
199
+
200
+ /** 3D constructor. */
201
+ EIGEN_DEVICE_FUNC inline DiagonalMatrix(const Scalar& x, const Scalar& y, const Scalar& z) : m_diagonal(x, y, z) {}
202
+
203
+ /** \brief Construct a diagonal matrix with fixed size from an arbitrary number of coefficients.
204
+ *
205
+ * \warning To construct a diagonal matrix of fixed size, the number of values passed to this
206
+ * constructor must match the fixed dimension of \c *this.
207
+ *
208
+ * \sa DiagonalMatrix(const Scalar&, const Scalar&)
209
+ * \sa DiagonalMatrix(const Scalar&, const Scalar&, const Scalar&)
210
+ */
211
+ template <typename... ArgTypes>
212
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DiagonalMatrix(const Scalar& a0, const Scalar& a1, const Scalar& a2,
213
+ const ArgTypes&... args)
214
+ : m_diagonal(a0, a1, a2, args...) {}
215
+
216
+ /** \brief Constructs a DiagonalMatrix and initializes it by elements given by an initializer list of initializer
217
+ * lists \cpp11
218
+ */
219
+ EIGEN_DEVICE_FUNC explicit EIGEN_STRONG_INLINE DiagonalMatrix(
220
+ const std::initializer_list<std::initializer_list<Scalar>>& list)
221
+ : m_diagonal(list) {}
222
+
223
+ /** \brief Constructs a DiagonalMatrix from an r-value diagonal vector type */
224
+ EIGEN_DEVICE_FUNC explicit inline DiagonalMatrix(DiagonalVectorType&& diag) : m_diagonal(std::move(diag)) {}
225
+
226
+ /** Copy constructor. */
227
+ template <typename OtherDerived>
228
+ EIGEN_DEVICE_FUNC inline DiagonalMatrix(const DiagonalBase<OtherDerived>& other) : m_diagonal(other.diagonal()) {}
229
+
230
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
231
+ /** copy constructor. prevent a default copy constructor from hiding the other templated constructor */
232
+ inline DiagonalMatrix(const DiagonalMatrix& other) : m_diagonal(other.diagonal()) {}
233
+ #endif
234
+
235
+ /** generic constructor from expression of the diagonal coefficients */
236
+ template <typename OtherDerived>
237
+ EIGEN_DEVICE_FUNC explicit inline DiagonalMatrix(const MatrixBase<OtherDerived>& other) : m_diagonal(other) {}
238
+
239
+ /** Copy operator. */
240
+ template <typename OtherDerived>
241
+ EIGEN_DEVICE_FUNC DiagonalMatrix& operator=(const DiagonalBase<OtherDerived>& other) {
242
+ m_diagonal = other.diagonal();
243
+ return *this;
244
+ }
245
+
246
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
247
+ /** This is a special case of the templated operator=. Its purpose is to
248
+ * prevent a default operator= from hiding the templated operator=.
249
+ */
250
+ EIGEN_DEVICE_FUNC DiagonalMatrix& operator=(const DiagonalMatrix& other) {
251
+ m_diagonal = other.diagonal();
252
+ return *this;
253
+ }
254
+ #endif
255
+
256
+ typedef DiagonalWrapper<const CwiseNullaryOp<internal::scalar_constant_op<Scalar>, DiagonalVectorType>>
257
+ InitializeReturnType;
258
+
259
+ typedef DiagonalWrapper<const CwiseNullaryOp<internal::scalar_zero_op<Scalar>, DiagonalVectorType>>
260
+ ZeroInitializeReturnType;
261
+
262
+ /** Initializes a diagonal matrix of size SizeAtCompileTime with coefficients set to zero */
263
+ EIGEN_DEVICE_FUNC static const ZeroInitializeReturnType Zero() { return DiagonalVectorType::Zero().asDiagonal(); }
264
+ /** Initializes a diagonal matrix of size dim with coefficients set to zero */
265
+ EIGEN_DEVICE_FUNC static const ZeroInitializeReturnType Zero(Index size) {
266
+ return DiagonalVectorType::Zero(size).asDiagonal();
267
+ }
268
+ /** Initializes a identity matrix of size SizeAtCompileTime */
269
+ EIGEN_DEVICE_FUNC static const InitializeReturnType Identity() { return DiagonalVectorType::Ones().asDiagonal(); }
270
+ /** Initializes a identity matrix of size dim */
271
+ EIGEN_DEVICE_FUNC static const InitializeReturnType Identity(Index size) {
272
+ return DiagonalVectorType::Ones(size).asDiagonal();
273
+ }
274
+
275
+ /** Resizes to given size. */
276
+ EIGEN_DEVICE_FUNC inline void resize(Index size) { m_diagonal.resize(size); }
277
+ /** Sets all coefficients to zero. */
278
+ EIGEN_DEVICE_FUNC inline void setZero() { m_diagonal.setZero(); }
279
+ /** Resizes and sets all coefficients to zero. */
280
+ EIGEN_DEVICE_FUNC inline void setZero(Index size) { m_diagonal.setZero(size); }
281
+ /** Sets this matrix to be the identity matrix of the current size. */
282
+ EIGEN_DEVICE_FUNC inline void setIdentity() { m_diagonal.setOnes(); }
283
+ /** Sets this matrix to be the identity matrix of the given size. */
284
+ EIGEN_DEVICE_FUNC inline void setIdentity(Index size) { m_diagonal.setOnes(size); }
209
285
  };
210
286
 
211
287
  /** \class DiagonalWrapper
212
- * \ingroup Core_Module
213
- *
214
- * \brief Expression of a diagonal matrix
215
- *
216
- * \param _DiagonalVectorType the type of the vector of diagonal coefficients
217
- *
218
- * This class is an expression of a diagonal matrix, but not storing its own vector of diagonal coefficients,
219
- * instead wrapping an existing vector expression. It is the return type of MatrixBase::asDiagonal()
220
- * and most of the time this is the only way that it is used.
221
- *
222
- * \sa class DiagonalMatrix, class DiagonalBase, MatrixBase::asDiagonal()
223
- */
288
+ * \ingroup Core_Module
289
+ *
290
+ * \brief Expression of a diagonal matrix
291
+ *
292
+ * \tparam DiagonalVectorType_ the type of the vector of diagonal coefficients
293
+ *
294
+ * This class is an expression of a diagonal matrix, but not storing its own vector of diagonal coefficients,
295
+ * instead wrapping an existing vector expression. It is the return type of MatrixBase::asDiagonal()
296
+ * and most of the time this is the only way that it is used.
297
+ *
298
+ * \sa class DiagonalMatrix, class DiagonalBase, MatrixBase::asDiagonal()
299
+ */
224
300
 
225
301
  namespace internal {
226
- template<typename _DiagonalVectorType>
227
- struct traits<DiagonalWrapper<_DiagonalVectorType> >
228
- {
229
- typedef _DiagonalVectorType DiagonalVectorType;
302
+ template <typename DiagonalVectorType_>
303
+ struct traits<DiagonalWrapper<DiagonalVectorType_>> {
304
+ typedef DiagonalVectorType_ DiagonalVectorType;
230
305
  typedef typename DiagonalVectorType::Scalar Scalar;
231
306
  typedef typename DiagonalVectorType::StorageIndex StorageIndex;
232
307
  typedef DiagonalShape StorageKind;
@@ -236,108 +311,110 @@ struct traits<DiagonalWrapper<_DiagonalVectorType> >
236
311
  ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
237
312
  MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
238
313
  MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
239
- Flags = (traits<DiagonalVectorType>::Flags & LvalueBit) | NoPreferredStorageOrderBit
314
+ Flags = (traits<DiagonalVectorType>::Flags & LvalueBit) | NoPreferredStorageOrderBit
240
315
  };
241
316
  };
242
- }
317
+ } // namespace internal
318
+
319
+ template <typename DiagonalVectorType_>
320
+ class DiagonalWrapper : public DiagonalBase<DiagonalWrapper<DiagonalVectorType_>>, internal::no_assignment_operator {
321
+ public:
322
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
323
+ typedef DiagonalVectorType_ DiagonalVectorType;
324
+ typedef DiagonalWrapper Nested;
325
+ #endif
243
326
 
244
- template<typename _DiagonalVectorType>
245
- class DiagonalWrapper
246
- : public DiagonalBase<DiagonalWrapper<_DiagonalVectorType> >, internal::no_assignment_operator
247
- {
248
- public:
249
- #ifndef EIGEN_PARSED_BY_DOXYGEN
250
- typedef _DiagonalVectorType DiagonalVectorType;
251
- typedef DiagonalWrapper Nested;
252
- #endif
253
-
254
- /** Constructor from expression of diagonal coefficients to wrap. */
255
- EIGEN_DEVICE_FUNC
256
- explicit inline DiagonalWrapper(DiagonalVectorType& a_diagonal) : m_diagonal(a_diagonal) {}
257
-
258
- /** \returns a const reference to the wrapped expression of diagonal coefficients. */
259
- EIGEN_DEVICE_FUNC
260
- const DiagonalVectorType& diagonal() const { return m_diagonal; }
261
-
262
- protected:
263
- typename DiagonalVectorType::Nested m_diagonal;
327
+ /** Constructor from expression of diagonal coefficients to wrap. */
328
+ EIGEN_DEVICE_FUNC explicit inline DiagonalWrapper(DiagonalVectorType& a_diagonal) : m_diagonal(a_diagonal) {}
329
+
330
+ /** \returns a const reference to the wrapped expression of diagonal coefficients. */
331
+ EIGEN_DEVICE_FUNC const DiagonalVectorType& diagonal() const { return m_diagonal; }
332
+
333
+ protected:
334
+ typename DiagonalVectorType::Nested m_diagonal;
264
335
  };
265
336
 
266
337
  /** \returns a pseudo-expression of a diagonal matrix with *this as vector of diagonal coefficients
267
- *
268
- * \only_for_vectors
269
- *
270
- * Example: \include MatrixBase_asDiagonal.cpp
271
- * Output: \verbinclude MatrixBase_asDiagonal.out
272
- *
273
- * \sa class DiagonalWrapper, class DiagonalMatrix, diagonal(), isDiagonal()
274
- **/
275
- template<typename Derived>
276
- inline const DiagonalWrapper<const Derived>
277
- MatrixBase<Derived>::asDiagonal() const
278
- {
338
+ *
339
+ * \only_for_vectors
340
+ *
341
+ * Example: \include MatrixBase_asDiagonal.cpp
342
+ * Output: \verbinclude MatrixBase_asDiagonal.out
343
+ *
344
+ * \sa class DiagonalWrapper, class DiagonalMatrix, diagonal(), isDiagonal()
345
+ **/
346
+ template <typename Derived>
347
+ EIGEN_DEVICE_FUNC inline const DiagonalWrapper<const Derived> MatrixBase<Derived>::asDiagonal() const {
279
348
  return DiagonalWrapper<const Derived>(derived());
280
349
  }
281
350
 
282
351
  /** \returns true if *this is approximately equal to a diagonal matrix,
283
- * within the precision given by \a prec.
284
- *
285
- * Example: \include MatrixBase_isDiagonal.cpp
286
- * Output: \verbinclude MatrixBase_isDiagonal.out
287
- *
288
- * \sa asDiagonal()
289
- */
290
- template<typename Derived>
291
- bool MatrixBase<Derived>::isDiagonal(const RealScalar& prec) const
292
- {
293
- if(cols() != rows()) return false;
352
+ * within the precision given by \a prec.
353
+ *
354
+ * Example: \include MatrixBase_isDiagonal.cpp
355
+ * Output: \verbinclude MatrixBase_isDiagonal.out
356
+ *
357
+ * \sa asDiagonal()
358
+ */
359
+ template <typename Derived>
360
+ bool MatrixBase<Derived>::isDiagonal(const RealScalar& prec) const {
361
+ if (cols() != rows()) return false;
294
362
  RealScalar maxAbsOnDiagonal = static_cast<RealScalar>(-1);
295
- for(Index j = 0; j < cols(); ++j)
296
- {
297
- RealScalar absOnDiagonal = numext::abs(coeff(j,j));
298
- if(absOnDiagonal > maxAbsOnDiagonal) maxAbsOnDiagonal = absOnDiagonal;
363
+ for (Index j = 0; j < cols(); ++j) {
364
+ RealScalar absOnDiagonal = numext::abs(coeff(j, j));
365
+ if (absOnDiagonal > maxAbsOnDiagonal) maxAbsOnDiagonal = absOnDiagonal;
299
366
  }
300
- for(Index j = 0; j < cols(); ++j)
301
- for(Index i = 0; i < j; ++i)
302
- {
303
- if(!internal::isMuchSmallerThan(coeff(i, j), maxAbsOnDiagonal, prec)) return false;
304
- if(!internal::isMuchSmallerThan(coeff(j, i), maxAbsOnDiagonal, prec)) return false;
367
+ for (Index j = 0; j < cols(); ++j)
368
+ for (Index i = 0; i < j; ++i) {
369
+ if (!internal::isMuchSmallerThan(coeff(i, j), maxAbsOnDiagonal, prec)) return false;
370
+ if (!internal::isMuchSmallerThan(coeff(j, i), maxAbsOnDiagonal, prec)) return false;
305
371
  }
306
372
  return true;
307
373
  }
308
374
 
309
375
  namespace internal {
310
376
 
311
- template<> struct storage_kind_to_shape<DiagonalShape> { typedef DiagonalShape Shape; };
377
+ template <>
378
+ struct storage_kind_to_shape<DiagonalShape> {
379
+ typedef DiagonalShape Shape;
380
+ };
312
381
 
313
382
  struct Diagonal2Dense {};
314
383
 
315
- template<> struct AssignmentKind<DenseShape,DiagonalShape> { typedef Diagonal2Dense Kind; };
384
+ template <>
385
+ struct AssignmentKind<DenseShape, DiagonalShape> {
386
+ typedef Diagonal2Dense Kind;
387
+ };
316
388
 
317
389
  // Diagonal matrix to Dense assignment
318
- template< typename DstXprType, typename SrcXprType, typename Functor>
319
- struct Assignment<DstXprType, SrcXprType, Functor, Diagonal2Dense>
320
- {
321
- static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<typename DstXprType::Scalar,typename SrcXprType::Scalar> &/*func*/)
322
- {
390
+ template <typename DstXprType, typename SrcXprType, typename Functor>
391
+ struct Assignment<DstXprType, SrcXprType, Functor, Diagonal2Dense> {
392
+ static EIGEN_DEVICE_FUNC void run(
393
+ DstXprType& dst, const SrcXprType& src,
394
+ const internal::assign_op<typename DstXprType::Scalar, typename SrcXprType::Scalar>& /*func*/) {
323
395
  Index dstRows = src.rows();
324
396
  Index dstCols = src.cols();
325
- if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
326
- dst.resize(dstRows, dstCols);
327
-
397
+ if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
398
+
328
399
  dst.setZero();
329
400
  dst.diagonal() = src.diagonal();
330
401
  }
331
-
332
- static void run(DstXprType &dst, const SrcXprType &src, const internal::add_assign_op<typename DstXprType::Scalar,typename SrcXprType::Scalar> &/*func*/)
333
- { dst.diagonal() += src.diagonal(); }
334
-
335
- static void run(DstXprType &dst, const SrcXprType &src, const internal::sub_assign_op<typename DstXprType::Scalar,typename SrcXprType::Scalar> &/*func*/)
336
- { dst.diagonal() -= src.diagonal(); }
402
+
403
+ static EIGEN_DEVICE_FUNC void run(
404
+ DstXprType& dst, const SrcXprType& src,
405
+ const internal::add_assign_op<typename DstXprType::Scalar, typename SrcXprType::Scalar>& /*func*/) {
406
+ dst.diagonal() += src.diagonal();
407
+ }
408
+
409
+ static EIGEN_DEVICE_FUNC void run(
410
+ DstXprType& dst, const SrcXprType& src,
411
+ const internal::sub_assign_op<typename DstXprType::Scalar, typename SrcXprType::Scalar>& /*func*/) {
412
+ dst.diagonal() -= src.diagonal();
413
+ }
337
414
  };
338
415
 
339
- } // namespace internal
416
+ } // namespace internal
340
417
 
341
- } // end namespace Eigen
418
+ } // end namespace Eigen
342
419
 
343
- #endif // EIGEN_DIAGONALMATRIX_H
420
+ #endif // EIGEN_DIAGONALMATRIX_H