@smake/eigen 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -21
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +235 -326
  6. package/eigen/Eigen/Eigenvalues +16 -14
  7. package/eigen/Eigen/Geometry +21 -24
  8. package/eigen/Eigen/Householder +9 -8
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -14
  11. package/eigen/Eigen/KLUSupport +43 -0
  12. package/eigen/Eigen/LU +16 -20
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -54
  15. package/eigen/Eigen/PaStiXSupport +23 -20
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -21
  18. package/eigen/Eigen/QtAlignedMalloc +5 -13
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -18
  21. package/eigen/Eigen/Sparse +1 -4
  22. package/eigen/Eigen/SparseCholesky +18 -23
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +12 -8
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
  37. package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
  42. package/eigen/Eigen/src/Core/Array.h +341 -294
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
  48. package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
  49. package/eigen/Eigen/src/Core/Block.h +375 -398
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
  53. package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
  59. package/eigen/Eigen/src/Core/DenseBase.h +632 -571
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
  61. package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +169 -210
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +172 -222
  67. package/eigen/Eigen/src/Core/EigenBase.h +75 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
  75. package/eigen/Eigen/src/Core/IO.h +147 -139
  76. package/eigen/Eigen/src/Core/IndexedView.h +321 -0
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +56 -66
  80. package/eigen/Eigen/src/Core/Map.h +124 -142
  81. package/eigen/Eigen/src/Core/MapBase.h +256 -281
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
  84. package/eigen/Eigen/src/Core/Matrix.h +491 -416
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
  86. package/eigen/Eigen/src/Core/NestByValue.h +66 -85
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -85
  88. package/eigen/Eigen/src/Core/NumTraits.h +235 -148
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
  92. package/eigen/Eigen/src/Core/Product.h +260 -139
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
  94. package/eigen/Eigen/src/Core/Random.h +161 -136
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +366 -336
  98. package/eigen/Eigen/src/Core/Ref.h +308 -209
  99. package/eigen/Eigen/src/Core/Replicate.h +94 -106
  100. package/eigen/Eigen/src/Core/Reshaped.h +398 -0
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +136 -145
  103. package/eigen/Eigen/src/Core/Select.h +70 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +97 -111
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
  109. package/eigen/Eigen/src/Core/SolverBase.h +138 -101
  110. package/eigen/Eigen/src/Core/StableNorm.h +156 -160
  111. package/eigen/Eigen/src/Core/StlIterators.h +619 -0
  112. package/eigen/Eigen/src/Core/Stride.h +91 -88
  113. package/eigen/Eigen/src/Core/Swap.h +70 -38
  114. package/eigen/Eigen/src/Core/Transpose.h +295 -273
  115. package/eigen/Eigen/src/Core/Transpositions.h +272 -317
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
  119. package/eigen/Eigen/src/Core/Visitor.h +480 -216
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
  217. package/eigen/Eigen/src/Core/util/Constants.h +314 -263
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
  226. package/eigen/Eigen/src/Core/util/Macros.h +939 -646
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
  229. package/eigen/Eigen/src/Core/util/Meta.h +618 -426
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
  264. package/eigen/Eigen/src/Geometry/Transform.h +896 -953
  265. package/eigen/Eigen/src/Geometry/Translation.h +100 -98
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
  269. package/eigen/Eigen/src/Householder/Householder.h +104 -122
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
  285. package/eigen/Eigen/src/LU/Determinant.h +60 -63
  286. package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/lib/LibEigen.d.ts +4 -0
  409. package/lib/LibEigen.js +14 -0
  410. package/lib/index.d.ts +1 -1
  411. package/lib/index.js +7 -3
  412. package/package.json +2 -10
  413. package/eigen/Eigen/CMakeLists.txt +0 -19
  414. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
  415. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
  416. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  417. package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
  418. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  419. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  420. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  421. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  422. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  423. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  424. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  425. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  426. package/eigen/Eigen/src/misc/lapack.h +0 -152
  427. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
  428. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
  429. package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
  430. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  431. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
  432. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  433. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
  434. package/lib/eigen.d.ts +0 -2
  435. package/lib/eigen.js +0 -15
@@ -10,396 +10,442 @@
10
10
  #ifndef EIGEN_SPARSEMATRIXBASE_H
11
11
  #define EIGEN_SPARSEMATRIXBASE_H
12
12
 
13
- namespace Eigen {
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
16
+ namespace Eigen {
14
17
 
15
18
  /** \ingroup SparseCore_Module
16
- *
17
- * \class SparseMatrixBase
18
- *
19
- * \brief Base class of any sparse matrices or sparse expressions
20
- *
21
- * \tparam Derived is the derived type, e.g. a sparse matrix type, or an expression, etc.
22
- *
23
- * This class can be extended with the help of the plugin mechanism described on the page
24
- * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_SPARSEMATRIXBASE_PLUGIN.
25
- */
26
- template<typename Derived> class SparseMatrixBase
27
- : public EigenBase<Derived>
28
- {
29
- public:
30
-
31
- typedef typename internal::traits<Derived>::Scalar Scalar;
32
-
33
- /** The numeric type of the expression' coefficients, e.g. float, double, int or std::complex<float>, etc.
34
- *
35
- * It is an alias for the Scalar type */
36
- typedef Scalar value_type;
37
-
38
- typedef typename internal::packet_traits<Scalar>::type PacketScalar;
39
- typedef typename internal::traits<Derived>::StorageKind StorageKind;
40
-
41
- /** The integer type used to \b store indices within a SparseMatrix.
42
- * For a \c SparseMatrix<Scalar,Options,IndexType> it an alias of the third template parameter \c IndexType. */
43
- typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
44
-
45
- typedef typename internal::add_const_on_value_type_if_arithmetic<
46
- typename internal::packet_traits<Scalar>::type
47
- >::type PacketReturnType;
48
-
49
- typedef SparseMatrixBase StorageBaseType;
50
-
51
- typedef Matrix<StorageIndex,Dynamic,1> IndexVector;
52
- typedef Matrix<Scalar,Dynamic,1> ScalarVector;
53
-
54
- template<typename OtherDerived>
55
- Derived& operator=(const EigenBase<OtherDerived> &other);
56
-
57
- enum {
58
-
59
- RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
60
- /**< The number of rows at compile-time. This is just a copy of the value provided
61
- * by the \a Derived type. If a value is not known at compile-time,
62
- * it is set to the \a Dynamic constant.
63
- * \sa MatrixBase::rows(), MatrixBase::cols(), ColsAtCompileTime, SizeAtCompileTime */
64
-
65
- ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
66
- /**< The number of columns at compile-time. This is just a copy of the value provided
67
- * by the \a Derived type. If a value is not known at compile-time,
68
- * it is set to the \a Dynamic constant.
69
- * \sa MatrixBase::rows(), MatrixBase::cols(), RowsAtCompileTime, SizeAtCompileTime */
70
-
71
-
72
- SizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::RowsAtCompileTime,
73
- internal::traits<Derived>::ColsAtCompileTime>::ret),
74
- /**< This is equal to the number of coefficients, i.e. the number of
75
- * rows times the number of columns, or to \a Dynamic if this is not
76
- * known at compile-time. \sa RowsAtCompileTime, ColsAtCompileTime */
77
-
78
- MaxRowsAtCompileTime = RowsAtCompileTime,
79
- MaxColsAtCompileTime = ColsAtCompileTime,
80
-
81
- MaxSizeAtCompileTime = (internal::size_at_compile_time<MaxRowsAtCompileTime,
82
- MaxColsAtCompileTime>::ret),
83
-
84
- IsVectorAtCompileTime = RowsAtCompileTime == 1 || ColsAtCompileTime == 1,
85
- /**< This is set to true if either the number of rows or the number of
86
- * columns is known at compile-time to be equal to 1. Indeed, in that case,
87
- * we are dealing with a column-vector (if there is only one column) or with
88
- * a row-vector (if there is only one row). */
89
-
90
- Flags = internal::traits<Derived>::Flags,
91
- /**< This stores expression \ref flags flags which may or may not be inherited by new expressions
92
- * constructed from this one. See the \ref flags "list of flags".
93
- */
94
-
95
- IsRowMajor = Flags&RowMajorBit ? 1 : 0,
96
-
97
- InnerSizeAtCompileTime = int(IsVectorAtCompileTime) ? int(SizeAtCompileTime)
98
- : int(IsRowMajor) ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
99
-
100
- #ifndef EIGEN_PARSED_BY_DOXYGEN
101
- _HasDirectAccess = (int(Flags)&DirectAccessBit) ? 1 : 0 // workaround sunCC
102
- #endif
103
- };
104
-
105
- /** \internal the return type of MatrixBase::adjoint() */
106
- typedef typename internal::conditional<NumTraits<Scalar>::IsComplex,
107
- CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, Eigen::Transpose<const Derived> >,
108
- Transpose<const Derived>
109
- >::type AdjointReturnType;
110
- typedef Transpose<Derived> TransposeReturnType;
111
- typedef typename internal::add_const<Transpose<const Derived> >::type ConstTransposeReturnType;
112
-
113
- // FIXME storage order do not match evaluator storage order
114
- typedef SparseMatrix<Scalar, Flags&RowMajorBit ? RowMajor : ColMajor, StorageIndex> PlainObject;
19
+ *
20
+ * \class SparseMatrixBase
21
+ *
22
+ * \brief Base class of any sparse matrices or sparse expressions
23
+ *
24
+ * \tparam Derived is the derived type, e.g. a sparse matrix type, or an expression, etc.
25
+ *
26
+ * This class can be extended with the help of the plugin mechanism described on the page
27
+ * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_SPARSEMATRIXBASE_PLUGIN.
28
+ */
29
+ template <typename Derived>
30
+ class SparseMatrixBase : public EigenBase<Derived> {
31
+ public:
32
+ typedef typename internal::traits<Derived>::Scalar Scalar;
33
+
34
+ /** The numeric type of the expression' coefficients, e.g. float, double, int or std::complex<float>, etc.
35
+ *
36
+ * It is an alias for the Scalar type */
37
+ typedef Scalar value_type;
38
+
39
+ typedef typename internal::packet_traits<Scalar>::type PacketScalar;
40
+ typedef typename internal::traits<Derived>::StorageKind StorageKind;
41
+
42
+ /** The integer type used to \b store indices within a SparseMatrix.
43
+ * For a \c SparseMatrix<Scalar,Options,IndexType> it an alias of the third template parameter \c IndexType. */
44
+ typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
45
+
46
+ typedef typename internal::add_const_on_value_type_if_arithmetic<typename internal::packet_traits<Scalar>::type>::type
47
+ PacketReturnType;
48
+
49
+ typedef SparseMatrixBase StorageBaseType;
50
+
51
+ typedef Matrix<StorageIndex, Dynamic, 1> IndexVector;
52
+ typedef Matrix<Scalar, Dynamic, 1> ScalarVector;
53
+
54
+ template <typename OtherDerived>
55
+ Derived& operator=(const EigenBase<OtherDerived>& other);
56
+
57
+ enum {
58
+
59
+ RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
60
+ /**< The number of rows at compile-time. This is just a copy of the value provided
61
+ * by the \a Derived type. If a value is not known at compile-time,
62
+ * it is set to the \a Dynamic constant.
63
+ * \sa MatrixBase::rows(), MatrixBase::cols(), ColsAtCompileTime, SizeAtCompileTime */
64
+
65
+ ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
66
+ /**< The number of columns at compile-time. This is just a copy of the value provided
67
+ * by the \a Derived type. If a value is not known at compile-time,
68
+ * it is set to the \a Dynamic constant.
69
+ * \sa MatrixBase::rows(), MatrixBase::cols(), RowsAtCompileTime, SizeAtCompileTime */
70
+
71
+ SizeAtCompileTime = (internal::size_of_xpr_at_compile_time<Derived>::ret),
72
+ /**< This is equal to the number of coefficients, i.e. the number of
73
+ * rows times the number of columns, or to \a Dynamic if this is not
74
+ * known at compile-time. \sa RowsAtCompileTime, ColsAtCompileTime */
75
+
76
+ MaxRowsAtCompileTime = RowsAtCompileTime,
77
+ MaxColsAtCompileTime = ColsAtCompileTime,
78
+
79
+ MaxSizeAtCompileTime = internal::size_at_compile_time(MaxRowsAtCompileTime, MaxColsAtCompileTime),
80
+
81
+ IsVectorAtCompileTime = RowsAtCompileTime == 1 || ColsAtCompileTime == 1,
82
+ /**< This is set to true if either the number of rows or the number of
83
+ * columns is known at compile-time to be equal to 1. Indeed, in that case,
84
+ * we are dealing with a column-vector (if there is only one column) or with
85
+ * a row-vector (if there is only one row). */
86
+
87
+ NumDimensions = int(MaxSizeAtCompileTime) == 1 ? 0
88
+ : bool(IsVectorAtCompileTime) ? 1
89
+ : 2,
90
+ /**< This value is equal to Tensor::NumDimensions, i.e. 0 for scalars, 1 for vectors,
91
+ * and 2 for matrices.
92
+ */
93
+
94
+ Flags = internal::traits<Derived>::Flags,
95
+ /**< This stores expression \ref flags flags which may or may not be inherited by new expressions
96
+ * constructed from this one. See the \ref flags "list of flags".
97
+ */
98
+
99
+ IsRowMajor = Flags & RowMajorBit ? 1 : 0,
100
+
101
+ InnerSizeAtCompileTime = int(IsVectorAtCompileTime) ? int(SizeAtCompileTime)
102
+ : int(IsRowMajor) ? int(ColsAtCompileTime)
103
+ : int(RowsAtCompileTime),
115
104
 
116
105
  #ifndef EIGEN_PARSED_BY_DOXYGEN
117
- /** This is the "real scalar" type; if the \a Scalar type is already real numbers
118
- * (e.g. int, float or double) then \a RealScalar is just the same as \a Scalar. If
119
- * \a Scalar is \a std::complex<T> then RealScalar is \a T.
120
- *
121
- * \sa class NumTraits
122
- */
123
- typedef typename NumTraits<Scalar>::Real RealScalar;
106
+ HasDirectAccess_ = (int(Flags) & DirectAccessBit) ? 1 : 0 // workaround sunCC
107
+ #endif
108
+ };
109
+
110
+ /** \internal the return type of MatrixBase::adjoint() */
111
+ typedef std::conditional_t<NumTraits<Scalar>::IsComplex,
112
+ CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, Eigen::Transpose<const Derived> >,
113
+ Transpose<const Derived> >
114
+ AdjointReturnType;
115
+ typedef Transpose<Derived> TransposeReturnType;
116
+ typedef Transpose<const Derived> ConstTransposeReturnType;
117
+
118
+ // FIXME storage order do not match evaluator storage order
119
+ typedef SparseMatrix<Scalar, Flags & RowMajorBit ? RowMajor : ColMajor, StorageIndex> PlainObject;
120
+
121
+ /** This is the "real scalar" type; if the \a Scalar type is already real numbers
122
+ * (e.g. int, float or double) then \a RealScalar is just the same as \a Scalar. If
123
+ * \a Scalar is \a std::complex<T> then RealScalar is \a T.
124
+ *
125
+ * \sa class NumTraits
126
+ */
127
+ typedef typename NumTraits<Scalar>::Real RealScalar;
124
128
 
125
- /** \internal the return type of coeff()
126
- */
127
- typedef typename internal::conditional<_HasDirectAccess, const Scalar&, Scalar>::type CoeffReturnType;
129
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
130
+ /** \internal the return type of coeff()
131
+ */
132
+ typedef std::conditional_t<HasDirectAccess_, const Scalar&, Scalar> CoeffReturnType;
128
133
 
129
- /** \internal Represents a matrix with all coefficients equal to one another*/
130
- typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,Matrix<Scalar,Dynamic,Dynamic> > ConstantReturnType;
134
+ /** \internal Represents a matrix with all coefficients equal to one another*/
135
+ typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>, Matrix<Scalar, Dynamic, Dynamic> > ConstantReturnType;
131
136
 
132
- /** type of the equivalent dense matrix */
133
- typedef Matrix<Scalar,RowsAtCompileTime,ColsAtCompileTime> DenseMatrixType;
134
- /** type of the equivalent square matrix */
135
- typedef Matrix<Scalar,EIGEN_SIZE_MAX(RowsAtCompileTime,ColsAtCompileTime),
136
- EIGEN_SIZE_MAX(RowsAtCompileTime,ColsAtCompileTime)> SquareMatrixType;
137
+ /** type of the equivalent dense matrix */
138
+ typedef Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime> DenseMatrixType;
139
+ /** type of the equivalent square matrix */
140
+ typedef Matrix<Scalar, internal::max_size_prefer_dynamic(RowsAtCompileTime, ColsAtCompileTime),
141
+ internal::max_size_prefer_dynamic(RowsAtCompileTime, ColsAtCompileTime)>
142
+ SquareMatrixType;
137
143
 
138
- inline const Derived& derived() const { return *static_cast<const Derived*>(this); }
139
- inline Derived& derived() { return *static_cast<Derived*>(this); }
140
- inline Derived& const_cast_derived() const
141
- { return *static_cast<Derived*>(const_cast<SparseMatrixBase*>(this)); }
144
+ inline const Derived& derived() const { return *static_cast<const Derived*>(this); }
145
+ inline Derived& derived() { return *static_cast<Derived*>(this); }
146
+ inline Derived& const_cast_derived() const { return *static_cast<Derived*>(const_cast<SparseMatrixBase*>(this)); }
142
147
 
143
- typedef EigenBase<Derived> Base;
148
+ typedef EigenBase<Derived> Base;
144
149
 
145
- #endif // not EIGEN_PARSED_BY_DOXYGEN
150
+ #endif // not EIGEN_PARSED_BY_DOXYGEN
146
151
 
147
152
  #define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::SparseMatrixBase
148
153
  #ifdef EIGEN_PARSED_BY_DOXYGEN
149
- #define EIGEN_DOC_UNARY_ADDONS(METHOD,OP) /** <p>This method does not change the sparsity of \c *this: the OP is applied to explicitly stored coefficients only. \sa SparseCompressedBase::coeffs() </p> */
150
- #define EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL /** <p> \warning This method returns a read-only expression for any sparse matrices. \sa \ref TutorialSparse_SubMatrices "Sparse block operations" </p> */
151
- #define EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(COND) /** <p> \warning This method returns a read-write expression for COND sparse matrices only. Otherwise, the returned expression is read-only. \sa \ref TutorialSparse_SubMatrices "Sparse block operations" </p> */
154
+ #define EIGEN_DOC_UNARY_ADDONS(METHOD, \
155
+ OP) /** <p>This method does not change the sparsity of \c *this: the OP is applied to \
156
+ explicitly stored coefficients only. \sa SparseCompressedBase::coeffs() </p> */
157
+ #define EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL /** <p> \warning This method returns a read-only expression for any \
158
+ sparse matrices. \sa \ref TutorialSparse_SubMatrices "Sparse block \
159
+ operations" </p> */
160
+ #define EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF( \
161
+ COND) /** <p> \warning This method returns a read-write expression for COND sparse matrices only. Otherwise, the \
162
+ returned expression is read-only. \sa \ref TutorialSparse_SubMatrices "Sparse block operations" </p> */
152
163
  #else
153
- #define EIGEN_DOC_UNARY_ADDONS(X,Y)
164
+ #define EIGEN_DOC_UNARY_ADDONS(X, Y)
154
165
  #define EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
155
166
  #define EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(COND)
156
167
  #endif
157
- # include "../plugins/CommonCwiseUnaryOps.h"
158
- # include "../plugins/CommonCwiseBinaryOps.h"
159
- # include "../plugins/MatrixCwiseUnaryOps.h"
160
- # include "../plugins/MatrixCwiseBinaryOps.h"
161
- # include "../plugins/BlockMethods.h"
162
- # ifdef EIGEN_SPARSEMATRIXBASE_PLUGIN
163
- # include EIGEN_SPARSEMATRIXBASE_PLUGIN
164
- # endif
168
+ #include "../plugins/CommonCwiseUnaryOps.inc"
169
+ #include "../plugins/CommonCwiseBinaryOps.inc"
170
+ #include "../plugins/MatrixCwiseUnaryOps.inc"
171
+ #include "../plugins/MatrixCwiseBinaryOps.inc"
172
+ #include "../plugins/BlockMethods.inc"
173
+ #ifdef EIGEN_SPARSEMATRIXBASE_PLUGIN
174
+ #include EIGEN_SPARSEMATRIXBASE_PLUGIN
175
+ #endif
165
176
  #undef EIGEN_CURRENT_STORAGE_BASE_CLASS
166
177
  #undef EIGEN_DOC_UNARY_ADDONS
167
178
  #undef EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
168
179
  #undef EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF
169
180
 
170
- /** \returns the number of rows. \sa cols() */
171
- inline Index rows() const { return derived().rows(); }
172
- /** \returns the number of columns. \sa rows() */
173
- inline Index cols() const { return derived().cols(); }
174
- /** \returns the number of coefficients, which is \a rows()*cols().
175
- * \sa rows(), cols(). */
176
- inline Index size() const { return rows() * cols(); }
177
- /** \returns true if either the number of rows or the number of columns is equal to 1.
178
- * In other words, this function returns
179
- * \code rows()==1 || cols()==1 \endcode
180
- * \sa rows(), cols(), IsVectorAtCompileTime. */
181
- inline bool isVector() const { return rows()==1 || cols()==1; }
182
- /** \returns the size of the storage major dimension,
183
- * i.e., the number of columns for a columns major matrix, and the number of rows otherwise */
184
- Index outerSize() const { return (int(Flags)&RowMajorBit) ? this->rows() : this->cols(); }
185
- /** \returns the size of the inner dimension according to the storage order,
186
- * i.e., the number of rows for a columns major matrix, and the number of cols otherwise */
187
- Index innerSize() const { return (int(Flags)&RowMajorBit) ? this->cols() : this->rows(); }
188
-
189
- bool isRValue() const { return m_isRValue; }
190
- Derived& markAsRValue() { m_isRValue = true; return derived(); }
191
-
192
- SparseMatrixBase() : m_isRValue(false) { /* TODO check flags */ }
193
-
194
-
195
- template<typename OtherDerived>
196
- Derived& operator=(const ReturnByValue<OtherDerived>& other);
197
-
198
- template<typename OtherDerived>
199
- inline Derived& operator=(const SparseMatrixBase<OtherDerived>& other);
200
-
201
- inline Derived& operator=(const Derived& other);
202
-
203
- protected:
204
-
205
- template<typename OtherDerived>
206
- inline Derived& assign(const OtherDerived& other);
207
-
208
- template<typename OtherDerived>
209
- inline void assignGeneric(const OtherDerived& other);
210
-
211
- public:
212
-
213
- friend std::ostream & operator << (std::ostream & s, const SparseMatrixBase& m)
214
- {
215
- typedef typename Derived::Nested Nested;
216
- typedef typename internal::remove_all<Nested>::type NestedCleaned;
217
-
218
- if (Flags&RowMajorBit)
181
+ /** \returns the number of rows. \sa cols() */
182
+ inline Index rows() const { return derived().rows(); }
183
+ /** \returns the number of columns. \sa rows() */
184
+ inline Index cols() const { return derived().cols(); }
185
+ /** \returns the number of coefficients, which is \a rows()*cols().
186
+ * \sa rows(), cols(). */
187
+ inline Index size() const { return rows() * cols(); }
188
+ /** \returns true if either the number of rows or the number of columns is equal to 1.
189
+ * In other words, this function returns
190
+ * \code rows()==1 || cols()==1 \endcode
191
+ * \sa rows(), cols(), IsVectorAtCompileTime. */
192
+ inline bool isVector() const { return rows() == 1 || cols() == 1; }
193
+ /** \returns the size of the storage major dimension,
194
+ * i.e., the number of columns for a columns major matrix, and the number of rows otherwise */
195
+ Index outerSize() const { return (int(Flags) & RowMajorBit) ? this->rows() : this->cols(); }
196
+ /** \returns the size of the inner dimension according to the storage order,
197
+ * i.e., the number of rows for a columns major matrix, and the number of cols otherwise */
198
+ Index innerSize() const { return (int(Flags) & RowMajorBit) ? this->cols() : this->rows(); }
199
+
200
+ bool isRValue() const { return m_isRValue; }
201
+ Derived& markAsRValue() {
202
+ m_isRValue = true;
203
+ return derived();
204
+ }
205
+
206
+ SparseMatrixBase() : m_isRValue(false) { /* TODO check flags */
207
+ }
208
+
209
+ template <typename OtherDerived>
210
+ Derived& operator=(const ReturnByValue<OtherDerived>& other);
211
+
212
+ template <typename OtherDerived>
213
+ inline Derived& operator=(const SparseMatrixBase<OtherDerived>& other);
214
+
215
+ inline Derived& operator=(const Derived& other);
216
+
217
+ protected:
218
+ template <typename OtherDerived>
219
+ inline Derived& assign(const OtherDerived& other);
220
+
221
+ template <typename OtherDerived>
222
+ inline void assignGeneric(const OtherDerived& other);
223
+
224
+ public:
225
+ #ifndef EIGEN_NO_IO
226
+ friend std::ostream& operator<<(std::ostream& s, const SparseMatrixBase& m) {
227
+ using Nested = typename Derived::Nested;
228
+ using NestedCleaned = typename internal::remove_all<Nested>::type;
229
+
230
+ if (Flags & RowMajorBit) {
231
+ Nested nm(m.derived());
232
+ internal::evaluator<NestedCleaned> thisEval(nm);
233
+
234
+ // compute global width
235
+ std::size_t width = 0;
219
236
  {
220
- Nested nm(m.derived());
221
- internal::evaluator<NestedCleaned> thisEval(nm);
222
- for (Index row=0; row<nm.outerSize(); ++row)
223
- {
224
- Index col = 0;
225
- for (typename internal::evaluator<NestedCleaned>::InnerIterator it(thisEval, row); it; ++it)
226
- {
227
- for ( ; col<it.index(); ++col)
228
- s << "0 ";
229
- s << it.value() << " ";
230
- ++col;
237
+ std::ostringstream ss0;
238
+ ss0.copyfmt(s);
239
+ ss0 << Scalar(0);
240
+ width = ss0.str().size();
241
+ for (Index row = 0; row < nm.outerSize(); ++row) {
242
+ for (typename internal::evaluator<NestedCleaned>::InnerIterator it(thisEval, row); it; ++it) {
243
+ std::ostringstream ss;
244
+ ss.copyfmt(s);
245
+ ss << it.value();
246
+
247
+ const std::size_t potential_width = ss.str().size();
248
+ if (potential_width > width) width = potential_width;
231
249
  }
232
- for ( ; col<m.cols(); ++col)
233
- s << "0 ";
234
- s << std::endl;
235
250
  }
236
251
  }
237
- else
238
- {
239
- Nested nm(m.derived());
240
- internal::evaluator<NestedCleaned> thisEval(nm);
241
- if (m.cols() == 1) {
242
- Index row = 0;
243
- for (typename internal::evaluator<NestedCleaned>::InnerIterator it(thisEval, 0); it; ++it)
244
- {
245
- for ( ; row<it.index(); ++row)
246
- s << "0" << std::endl;
247
- s << it.value() << std::endl;
248
- ++row;
252
+
253
+ for (Index row = 0; row < nm.outerSize(); ++row) {
254
+ Index col = 0;
255
+ for (typename internal::evaluator<NestedCleaned>::InnerIterator it(thisEval, row); it; ++it) {
256
+ for (; col < it.index(); ++col) {
257
+ s.width(width);
258
+ s << Scalar(0) << " ";
249
259
  }
250
- for ( ; row<m.rows(); ++row)
251
- s << "0" << std::endl;
260
+ s.width(width);
261
+ s << it.value() << " ";
262
+ ++col;
252
263
  }
253
- else
254
- {
255
- SparseMatrix<Scalar, RowMajorBit, StorageIndex> trans = m;
256
- s << static_cast<const SparseMatrixBase<SparseMatrix<Scalar, RowMajorBit, StorageIndex> >&>(trans);
264
+ for (; col < m.cols(); ++col) {
265
+ s.width(width);
266
+ s << Scalar(0) << " ";
257
267
  }
268
+ s << std::endl;
258
269
  }
259
- return s;
260
- }
261
-
262
- template<typename OtherDerived>
263
- Derived& operator+=(const SparseMatrixBase<OtherDerived>& other);
264
- template<typename OtherDerived>
265
- Derived& operator-=(const SparseMatrixBase<OtherDerived>& other);
266
-
267
- template<typename OtherDerived>
268
- Derived& operator+=(const DiagonalBase<OtherDerived>& other);
269
- template<typename OtherDerived>
270
- Derived& operator-=(const DiagonalBase<OtherDerived>& other);
271
-
272
- template<typename OtherDerived>
273
- Derived& operator+=(const EigenBase<OtherDerived> &other);
274
- template<typename OtherDerived>
275
- Derived& operator-=(const EigenBase<OtherDerived> &other);
276
-
277
- Derived& operator*=(const Scalar& other);
278
- Derived& operator/=(const Scalar& other);
279
-
280
- template<typename OtherDerived> struct CwiseProductDenseReturnType {
281
- typedef CwiseBinaryOp<internal::scalar_product_op<typename ScalarBinaryOpTraits<
282
- typename internal::traits<Derived>::Scalar,
283
- typename internal::traits<OtherDerived>::Scalar
284
- >::ReturnType>,
285
- const Derived,
286
- const OtherDerived
287
- > Type;
288
- };
289
-
290
- template<typename OtherDerived>
291
- EIGEN_STRONG_INLINE const typename CwiseProductDenseReturnType<OtherDerived>::Type
292
- cwiseProduct(const MatrixBase<OtherDerived> &other) const;
293
-
294
- // sparse * diagonal
295
- template<typename OtherDerived>
296
- const Product<Derived,OtherDerived>
297
- operator*(const DiagonalBase<OtherDerived> &other) const
298
- { return Product<Derived,OtherDerived>(derived(), other.derived()); }
299
-
300
- // diagonal * sparse
301
- template<typename OtherDerived> friend
302
- const Product<OtherDerived,Derived>
303
- operator*(const DiagonalBase<OtherDerived> &lhs, const SparseMatrixBase& rhs)
304
- { return Product<OtherDerived,Derived>(lhs.derived(), rhs.derived()); }
305
-
306
- // sparse * sparse
307
- template<typename OtherDerived>
308
- const Product<Derived,OtherDerived,AliasFreeProduct>
309
- operator*(const SparseMatrixBase<OtherDerived> &other) const;
310
-
311
- // sparse * dense
312
- template<typename OtherDerived>
313
- const Product<Derived,OtherDerived>
314
- operator*(const MatrixBase<OtherDerived> &other) const
315
- { return Product<Derived,OtherDerived>(derived(), other.derived()); }
316
-
317
- // dense * sparse
318
- template<typename OtherDerived> friend
319
- const Product<OtherDerived,Derived>
320
- operator*(const MatrixBase<OtherDerived> &lhs, const SparseMatrixBase& rhs)
321
- { return Product<OtherDerived,Derived>(lhs.derived(), rhs.derived()); }
322
-
323
- /** \returns an expression of P H P^-1 where H is the matrix represented by \c *this */
324
- SparseSymmetricPermutationProduct<Derived,Upper|Lower> twistedBy(const PermutationMatrix<Dynamic,Dynamic,StorageIndex>& perm) const
325
- {
326
- return SparseSymmetricPermutationProduct<Derived,Upper|Lower>(derived(), perm);
327
- }
270
+ } else {
271
+ Nested nm(m.derived());
272
+ internal::evaluator<NestedCleaned> thisEval(nm);
273
+ if (m.cols() == 1) {
274
+ // compute local width (single col)
275
+ std::size_t width = 0;
276
+ {
277
+ std::ostringstream ss0;
278
+ ss0.copyfmt(s);
279
+ ss0 << Scalar(0);
280
+ width = ss0.str().size();
281
+ for (typename internal::evaluator<NestedCleaned>::InnerIterator it(thisEval, 0); it; ++it) {
282
+ std::ostringstream ss;
283
+ ss.copyfmt(s);
284
+ ss << it.value();
285
+
286
+ const std::size_t potential_width = ss.str().size();
287
+ if (potential_width > width) width = potential_width;
288
+ }
289
+ }
328
290
 
329
- template<typename OtherDerived>
330
- Derived& operator*=(const SparseMatrixBase<OtherDerived>& other);
331
-
332
- template<int Mode>
333
- inline const TriangularView<const Derived, Mode> triangularView() const;
334
-
335
- template<unsigned int UpLo> struct SelfAdjointViewReturnType { typedef SparseSelfAdjointView<Derived, UpLo> Type; };
336
- template<unsigned int UpLo> struct ConstSelfAdjointViewReturnType { typedef const SparseSelfAdjointView<const Derived, UpLo> Type; };
337
-
338
- template<unsigned int UpLo> inline
339
- typename ConstSelfAdjointViewReturnType<UpLo>::Type selfadjointView() const;
340
- template<unsigned int UpLo> inline
341
- typename SelfAdjointViewReturnType<UpLo>::Type selfadjointView();
342
-
343
- template<typename OtherDerived> Scalar dot(const MatrixBase<OtherDerived>& other) const;
344
- template<typename OtherDerived> Scalar dot(const SparseMatrixBase<OtherDerived>& other) const;
345
- RealScalar squaredNorm() const;
346
- RealScalar norm() const;
347
- RealScalar blueNorm() const;
348
-
349
- TransposeReturnType transpose() { return TransposeReturnType(derived()); }
350
- const ConstTransposeReturnType transpose() const { return ConstTransposeReturnType(derived()); }
351
- const AdjointReturnType adjoint() const { return AdjointReturnType(transpose()); }
352
-
353
- // inner-vector
354
- typedef Block<Derived,IsRowMajor?1:Dynamic,IsRowMajor?Dynamic:1,true> InnerVectorReturnType;
355
- typedef Block<const Derived,IsRowMajor?1:Dynamic,IsRowMajor?Dynamic:1,true> ConstInnerVectorReturnType;
356
- InnerVectorReturnType innerVector(Index outer);
357
- const ConstInnerVectorReturnType innerVector(Index outer) const;
358
-
359
- // set of inner-vectors
360
- typedef Block<Derived,Dynamic,Dynamic,true> InnerVectorsReturnType;
361
- typedef Block<const Derived,Dynamic,Dynamic,true> ConstInnerVectorsReturnType;
362
- InnerVectorsReturnType innerVectors(Index outerStart, Index outerSize);
363
- const ConstInnerVectorsReturnType innerVectors(Index outerStart, Index outerSize) const;
364
-
365
- DenseMatrixType toDense() const
366
- {
367
- return DenseMatrixType(derived());
291
+ Index row = 0;
292
+ for (typename internal::evaluator<NestedCleaned>::InnerIterator it(thisEval, 0); it; ++it) {
293
+ for (; row < it.index(); ++row) {
294
+ s.width(width);
295
+ s << Scalar(0) << std::endl;
296
+ }
297
+ s.width(width);
298
+ s << it.value() << std::endl;
299
+ ++row;
300
+ }
301
+ for (; row < m.rows(); ++row) {
302
+ s.width(width);
303
+ s << Scalar(0) << std::endl;
304
+ }
305
+ } else {
306
+ SparseMatrix<Scalar, RowMajorBit, StorageIndex> trans = m;
307
+ s << static_cast<const SparseMatrixBase<SparseMatrix<Scalar, RowMajorBit, StorageIndex> >&>(trans);
308
+ }
368
309
  }
310
+ return s;
311
+ }
312
+ #endif
369
313
 
370
- template<typename OtherDerived>
371
- bool isApprox(const SparseMatrixBase<OtherDerived>& other,
372
- const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
373
-
374
- template<typename OtherDerived>
375
- bool isApprox(const MatrixBase<OtherDerived>& other,
376
- const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const
377
- { return toDense().isApprox(other,prec); }
378
-
379
- /** \returns the matrix or vector obtained by evaluating this expression.
380
- *
381
- * Notice that in the case of a plain matrix or vector (not an expression) this function just returns
382
- * a const reference, in order to avoid a useless copy.
383
- */
384
- inline const typename internal::eval<Derived>::type eval() const
385
- { return typename internal::eval<Derived>::type(derived()); }
386
-
387
- Scalar sum() const;
388
-
389
- inline const SparseView<Derived>
390
- pruned(const Scalar& reference = Scalar(0), const RealScalar& epsilon = NumTraits<Scalar>::dummy_precision()) const;
391
-
392
- protected:
393
-
394
- bool m_isRValue;
395
-
396
- static inline StorageIndex convert_index(const Index idx) {
397
- return internal::convert_index<StorageIndex>(idx);
398
- }
399
- private:
400
- template<typename Dest> void evalTo(Dest &) const;
314
+ template <typename OtherDerived>
315
+ Derived& operator+=(const SparseMatrixBase<OtherDerived>& other);
316
+ template <typename OtherDerived>
317
+ Derived& operator-=(const SparseMatrixBase<OtherDerived>& other);
318
+
319
+ template <typename OtherDerived>
320
+ Derived& operator+=(const DiagonalBase<OtherDerived>& other);
321
+ template <typename OtherDerived>
322
+ Derived& operator-=(const DiagonalBase<OtherDerived>& other);
323
+
324
+ template <typename OtherDerived>
325
+ Derived& operator+=(const EigenBase<OtherDerived>& other);
326
+ template <typename OtherDerived>
327
+ Derived& operator-=(const EigenBase<OtherDerived>& other);
328
+
329
+ Derived& operator*=(const Scalar& other);
330
+ Derived& operator/=(const Scalar& other);
331
+
332
+ template <typename OtherDerived>
333
+ struct CwiseProductDenseReturnType {
334
+ typedef CwiseBinaryOp<
335
+ internal::scalar_product_op<typename ScalarBinaryOpTraits<
336
+ typename internal::traits<Derived>::Scalar, typename internal::traits<OtherDerived>::Scalar>::ReturnType>,
337
+ const Derived, const OtherDerived>
338
+ Type;
339
+ };
340
+
341
+ template <typename OtherDerived>
342
+ EIGEN_STRONG_INLINE const typename CwiseProductDenseReturnType<OtherDerived>::Type cwiseProduct(
343
+ const MatrixBase<OtherDerived>& other) const;
344
+
345
+ // sparse * diagonal
346
+ template <typename OtherDerived>
347
+ const Product<Derived, OtherDerived> operator*(const DiagonalBase<OtherDerived>& other) const {
348
+ return Product<Derived, OtherDerived>(derived(), other.derived());
349
+ }
350
+
351
+ // diagonal * sparse
352
+ template <typename OtherDerived>
353
+ friend const Product<OtherDerived, Derived> operator*(const DiagonalBase<OtherDerived>& lhs,
354
+ const SparseMatrixBase& rhs) {
355
+ return Product<OtherDerived, Derived>(lhs.derived(), rhs.derived());
356
+ }
357
+
358
+ // sparse * sparse
359
+ template <typename OtherDerived>
360
+ const Product<Derived, OtherDerived, AliasFreeProduct> operator*(const SparseMatrixBase<OtherDerived>& other) const;
361
+
362
+ // sparse * dense
363
+ template <typename OtherDerived>
364
+ const Product<Derived, OtherDerived> operator*(const MatrixBase<OtherDerived>& other) const {
365
+ return Product<Derived, OtherDerived>(derived(), other.derived());
366
+ }
367
+
368
+ // dense * sparse
369
+ template <typename OtherDerived>
370
+ friend const Product<OtherDerived, Derived> operator*(const MatrixBase<OtherDerived>& lhs,
371
+ const SparseMatrixBase& rhs) {
372
+ return Product<OtherDerived, Derived>(lhs.derived(), rhs.derived());
373
+ }
374
+
375
+ /** \returns an expression of P H P^-1 where H is the matrix represented by \c *this */
376
+ SparseSymmetricPermutationProduct<Derived, Upper | Lower> twistedBy(
377
+ const PermutationMatrix<Dynamic, Dynamic, StorageIndex>& perm) const {
378
+ return SparseSymmetricPermutationProduct<Derived, Upper | Lower>(derived(), perm);
379
+ }
380
+
381
+ template <typename OtherDerived>
382
+ Derived& operator*=(const SparseMatrixBase<OtherDerived>& other);
383
+
384
+ template <int Mode>
385
+ inline const TriangularView<const Derived, Mode> triangularView() const;
386
+
387
+ template <unsigned int UpLo>
388
+ struct SelfAdjointViewReturnType {
389
+ typedef SparseSelfAdjointView<Derived, UpLo> Type;
390
+ };
391
+ template <unsigned int UpLo>
392
+ struct ConstSelfAdjointViewReturnType {
393
+ typedef const SparseSelfAdjointView<const Derived, UpLo> Type;
394
+ };
395
+
396
+ template <unsigned int UpLo>
397
+ inline typename ConstSelfAdjointViewReturnType<UpLo>::Type selfadjointView() const;
398
+ template <unsigned int UpLo>
399
+ inline typename SelfAdjointViewReturnType<UpLo>::Type selfadjointView();
400
+
401
+ template <typename OtherDerived>
402
+ Scalar dot(const MatrixBase<OtherDerived>& other) const;
403
+ template <typename OtherDerived>
404
+ Scalar dot(const SparseMatrixBase<OtherDerived>& other) const;
405
+ RealScalar squaredNorm() const;
406
+ RealScalar norm() const;
407
+ RealScalar blueNorm() const;
408
+
409
+ TransposeReturnType transpose() { return TransposeReturnType(derived()); }
410
+ const ConstTransposeReturnType transpose() const { return ConstTransposeReturnType(derived()); }
411
+ const AdjointReturnType adjoint() const { return AdjointReturnType(transpose()); }
412
+
413
+ DenseMatrixType toDense() const { return DenseMatrixType(derived()); }
414
+
415
+ template <typename OtherDerived>
416
+ bool isApprox(const SparseMatrixBase<OtherDerived>& other,
417
+ const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
418
+
419
+ template <typename OtherDerived>
420
+ bool isApprox(const MatrixBase<OtherDerived>& other,
421
+ const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const {
422
+ return toDense().isApprox(other, prec);
423
+ }
424
+
425
+ /** \returns the matrix or vector obtained by evaluating this expression.
426
+ *
427
+ * Notice that in the case of a plain matrix or vector (not an expression) this function just returns
428
+ * a const reference, in order to avoid a useless copy.
429
+ */
430
+ inline const typename internal::eval<Derived>::type eval() const {
431
+ return typename internal::eval<Derived>::type(derived());
432
+ }
433
+
434
+ Scalar sum() const;
435
+
436
+ inline const SparseView<Derived> pruned(const Scalar& reference = Scalar(0),
437
+ const RealScalar& epsilon = NumTraits<Scalar>::dummy_precision()) const;
438
+
439
+ protected:
440
+ bool m_isRValue;
441
+
442
+ static inline StorageIndex convert_index(const Index idx) { return internal::convert_index<StorageIndex>(idx); }
443
+
444
+ private:
445
+ template <typename Dest>
446
+ void evalTo(Dest&) const;
401
447
  };
402
448
 
403
- } // end namespace Eigen
449
+ } // end namespace Eigen
404
450
 
405
- #endif // EIGEN_SPARSEMATRIXBASE_H
451
+ #endif // EIGEN_SPARSEMATRIXBASE_H