@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,602 +11,663 @@
11
11
  #ifndef EIGEN_DENSEBASE_H
12
12
  #define EIGEN_DENSEBASE_H
13
13
 
14
+ // IWYU pragma: private
15
+ #include "./InternalHeaderCheck.h"
16
+
14
17
  namespace Eigen {
15
18
 
16
- namespace internal {
17
-
18
19
  // The index type defined by EIGEN_DEFAULT_DENSE_INDEX_TYPE must be a signed type.
19
- // This dummy function simply aims at checking that at compile time.
20
- static inline void check_DenseIndex_is_signed() {
21
- EIGEN_STATIC_ASSERT(NumTraits<DenseIndex>::IsSigned,THE_INDEX_TYPE_MUST_BE_A_SIGNED_TYPE);
22
- }
20
+ EIGEN_STATIC_ASSERT(NumTraits<DenseIndex>::IsSigned, THE_INDEX_TYPE_MUST_BE_A_SIGNED_TYPE)
23
21
 
24
- } // end namespace internal
25
-
26
22
  /** \class DenseBase
27
- * \ingroup Core_Module
28
- *
29
- * \brief Base class for all dense matrices, vectors, and arrays
30
- *
31
- * This class is the base that is inherited by all dense objects (matrix, vector, arrays,
32
- * and related expression types). The common Eigen API for dense objects is contained in this class.
33
- *
34
- * \tparam Derived is the derived type, e.g., a matrix type or an expression.
35
- *
36
- * This class can be extended with the help of the plugin mechanism described on the page
37
- * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_DENSEBASE_PLUGIN.
38
- *
39
- * \sa \blank \ref TopicClassHierarchy
40
- */
41
- template<typename Derived> class DenseBase
23
+ * \ingroup Core_Module
24
+ *
25
+ * \brief Base class for all dense matrices, vectors, and arrays
26
+ *
27
+ * This class is the base that is inherited by all dense objects (matrix, vector, arrays,
28
+ * and related expression types). The common Eigen API for dense objects is contained in this class.
29
+ *
30
+ * \tparam Derived is the derived type, e.g., a matrix type or an expression.
31
+ *
32
+ * This class can be extended with the help of the plugin mechanism described on the page
33
+ * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_DENSEBASE_PLUGIN.
34
+ *
35
+ * \sa \blank \ref TopicClassHierarchy
36
+ */
37
+ template <typename Derived>
38
+ class DenseBase
42
39
  #ifndef EIGEN_PARSED_BY_DOXYGEN
43
- : public DenseCoeffsBase<Derived, internal::accessors_level<Derived>::value>
40
+ : public DenseCoeffsBase<Derived, internal::accessors_level<Derived>::value>
44
41
  #else
45
- : public DenseCoeffsBase<Derived,DirectWriteAccessors>
46
- #endif // not EIGEN_PARSED_BY_DOXYGEN
42
+ : public DenseCoeffsBase<Derived, DirectWriteAccessors>
43
+ #endif // not EIGEN_PARSED_BY_DOXYGEN
47
44
  {
48
- public:
45
+ public:
46
+ /** Inner iterator type to iterate over the coefficients of a row or column.
47
+ * \sa class InnerIterator
48
+ */
49
+ typedef Eigen::InnerIterator<Derived> InnerIterator;
50
+
51
+ typedef typename internal::traits<Derived>::StorageKind StorageKind;
52
+
53
+ /**
54
+ * \brief The type used to store indices
55
+ * \details This typedef is relevant for types that store multiple indices such as
56
+ * PermutationMatrix or Transpositions, otherwise it defaults to Eigen::Index
57
+ * \sa \blank \ref TopicPreprocessorDirectives, Eigen::Index, SparseMatrixBase.
58
+ */
59
+ typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
60
+
61
+ /** The numeric type of the expression' coefficients, e.g. float, double, int or std::complex<float>, etc. */
62
+ typedef typename internal::traits<Derived>::Scalar Scalar;
63
+
64
+ /** The numeric type of the expression' coefficients, e.g. float, double, int or std::complex<float>, etc.
65
+ *
66
+ * It is an alias for the Scalar type */
67
+ typedef Scalar value_type;
68
+
69
+ typedef typename NumTraits<Scalar>::Real RealScalar;
70
+ typedef DenseCoeffsBase<Derived, internal::accessors_level<Derived>::value> Base;
71
+
72
+ using Base::coeff;
73
+ using Base::coeffByOuterInner;
74
+ using Base::colIndexByOuterInner;
75
+ using Base::cols;
76
+ using Base::const_cast_derived;
77
+ using Base::derived;
78
+ using Base::rowIndexByOuterInner;
79
+ using Base::rows;
80
+ using Base::size;
81
+ using Base::operator();
82
+ using Base::operator[];
83
+ using Base::colStride;
84
+ using Base::innerStride;
85
+ using Base::outerStride;
86
+ using Base::rowStride;
87
+ using Base::stride;
88
+ using Base::w;
89
+ using Base::x;
90
+ using Base::y;
91
+ using Base::z;
92
+ typedef typename Base::CoeffReturnType CoeffReturnType;
93
+
94
+ enum {
95
+
96
+ RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
97
+ /**< The number of rows at compile-time. This is just a copy of the value provided
98
+ * by the \a Derived type. If a value is not known at compile-time,
99
+ * it is set to the \a Dynamic constant.
100
+ * \sa MatrixBase::rows(), MatrixBase::cols(), ColsAtCompileTime, SizeAtCompileTime */
101
+
102
+ ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
103
+ /**< The number of columns at compile-time. This is just a copy of the value provided
104
+ * by the \a Derived type. If a value is not known at compile-time,
105
+ * it is set to the \a Dynamic constant.
106
+ * \sa MatrixBase::rows(), MatrixBase::cols(), RowsAtCompileTime, SizeAtCompileTime */
107
+
108
+ SizeAtCompileTime = (internal::size_of_xpr_at_compile_time<Derived>::ret),
109
+ /**< This is equal to the number of coefficients, i.e. the number of
110
+ * rows times the number of columns, or to \a Dynamic if this is not
111
+ * known at compile-time. \sa RowsAtCompileTime, ColsAtCompileTime */
112
+
113
+ MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
114
+ /**< This value is equal to the maximum possible number of rows that this expression
115
+ * might have. If this expression might have an arbitrarily high number of rows,
116
+ * this value is set to \a Dynamic.
117
+ *
118
+ * This value is useful to know when evaluating an expression, in order to determine
119
+ * whether it is possible to avoid doing a dynamic memory allocation.
120
+ *
121
+ * \sa RowsAtCompileTime, MaxColsAtCompileTime, MaxSizeAtCompileTime
122
+ */
123
+
124
+ MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
125
+ /**< This value is equal to the maximum possible number of columns that this expression
126
+ * might have. If this expression might have an arbitrarily high number of columns,
127
+ * this value is set to \a Dynamic.
128
+ *
129
+ * This value is useful to know when evaluating an expression, in order to determine
130
+ * whether it is possible to avoid doing a dynamic memory allocation.
131
+ *
132
+ * \sa ColsAtCompileTime, MaxRowsAtCompileTime, MaxSizeAtCompileTime
133
+ */
49
134
 
50
- /** Inner iterator type to iterate over the coefficients of a row or column.
51
- * \sa class InnerIterator
52
- */
53
- typedef Eigen::InnerIterator<Derived> InnerIterator;
135
+ MaxSizeAtCompileTime = internal::size_at_compile_time(internal::traits<Derived>::MaxRowsAtCompileTime,
136
+ internal::traits<Derived>::MaxColsAtCompileTime),
137
+ /**< This value is equal to the maximum possible number of coefficients that this expression
138
+ * might have. If this expression might have an arbitrarily high number of coefficients,
139
+ * this value is set to \a Dynamic.
140
+ *
141
+ * This value is useful to know when evaluating an expression, in order to determine
142
+ * whether it is possible to avoid doing a dynamic memory allocation.
143
+ *
144
+ * \sa SizeAtCompileTime, MaxRowsAtCompileTime, MaxColsAtCompileTime
145
+ */
54
146
 
55
- typedef typename internal::traits<Derived>::StorageKind StorageKind;
147
+ IsVectorAtCompileTime =
148
+ internal::traits<Derived>::RowsAtCompileTime == 1 || internal::traits<Derived>::ColsAtCompileTime == 1,
149
+ /**< This is set to true if either the number of rows or the number of
150
+ * columns is known at compile-time to be equal to 1. Indeed, in that case,
151
+ * we are dealing with a column-vector (if there is only one column) or with
152
+ * a row-vector (if there is only one row). */
153
+
154
+ NumDimensions = int(MaxSizeAtCompileTime) == 1 ? 0
155
+ : bool(IsVectorAtCompileTime) ? 1
156
+ : 2,
157
+ /**< This value is equal to Tensor::NumDimensions, i.e. 0 for scalars, 1 for vectors,
158
+ * and 2 for matrices.
159
+ */
56
160
 
57
- /**
58
- * \brief The type used to store indices
59
- * \details This typedef is relevant for types that store multiple indices such as
60
- * PermutationMatrix or Transpositions, otherwise it defaults to Eigen::Index
61
- * \sa \blank \ref TopicPreprocessorDirectives, Eigen::Index, SparseMatrixBase.
161
+ Flags = internal::traits<Derived>::Flags,
162
+ /**< This stores expression \ref flags flags which may or may not be inherited by new expressions
163
+ * constructed from this one. See the \ref flags "list of flags".
62
164
  */
63
- typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
64
-
65
- /** The numeric type of the expression' coefficients, e.g. float, double, int or std::complex<float>, etc. */
66
- typedef typename internal::traits<Derived>::Scalar Scalar;
67
-
68
- /** The numeric type of the expression' coefficients, e.g. float, double, int or std::complex<float>, etc.
69
- *
70
- * It is an alias for the Scalar type */
71
- typedef Scalar value_type;
72
-
73
- typedef typename NumTraits<Scalar>::Real RealScalar;
74
- typedef DenseCoeffsBase<Derived, internal::accessors_level<Derived>::value> Base;
75
-
76
- using Base::derived;
77
- using Base::const_cast_derived;
78
- using Base::rows;
79
- using Base::cols;
80
- using Base::size;
81
- using Base::rowIndexByOuterInner;
82
- using Base::colIndexByOuterInner;
83
- using Base::coeff;
84
- using Base::coeffByOuterInner;
85
- using Base::operator();
86
- using Base::operator[];
87
- using Base::x;
88
- using Base::y;
89
- using Base::z;
90
- using Base::w;
91
- using Base::stride;
92
- using Base::innerStride;
93
- using Base::outerStride;
94
- using Base::rowStride;
95
- using Base::colStride;
96
- typedef typename Base::CoeffReturnType CoeffReturnType;
97
-
98
- enum {
99
-
100
- RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
101
- /**< The number of rows at compile-time. This is just a copy of the value provided
102
- * by the \a Derived type. If a value is not known at compile-time,
103
- * it is set to the \a Dynamic constant.
104
- * \sa MatrixBase::rows(), MatrixBase::cols(), ColsAtCompileTime, SizeAtCompileTime */
105
-
106
- ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
107
- /**< The number of columns at compile-time. This is just a copy of the value provided
108
- * by the \a Derived type. If a value is not known at compile-time,
109
- * it is set to the \a Dynamic constant.
110
- * \sa MatrixBase::rows(), MatrixBase::cols(), RowsAtCompileTime, SizeAtCompileTime */
111
-
112
-
113
- SizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::RowsAtCompileTime,
114
- internal::traits<Derived>::ColsAtCompileTime>::ret),
115
- /**< This is equal to the number of coefficients, i.e. the number of
116
- * rows times the number of columns, or to \a Dynamic if this is not
117
- * known at compile-time. \sa RowsAtCompileTime, ColsAtCompileTime */
118
-
119
- MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
120
- /**< This value is equal to the maximum possible number of rows that this expression
121
- * might have. If this expression might have an arbitrarily high number of rows,
122
- * this value is set to \a Dynamic.
123
- *
124
- * This value is useful to know when evaluating an expression, in order to determine
125
- * whether it is possible to avoid doing a dynamic memory allocation.
126
- *
127
- * \sa RowsAtCompileTime, MaxColsAtCompileTime, MaxSizeAtCompileTime
128
- */
129
-
130
- MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
131
- /**< This value is equal to the maximum possible number of columns that this expression
132
- * might have. If this expression might have an arbitrarily high number of columns,
133
- * this value is set to \a Dynamic.
134
- *
135
- * This value is useful to know when evaluating an expression, in order to determine
136
- * whether it is possible to avoid doing a dynamic memory allocation.
137
- *
138
- * \sa ColsAtCompileTime, MaxRowsAtCompileTime, MaxSizeAtCompileTime
139
- */
140
-
141
- MaxSizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::MaxRowsAtCompileTime,
142
- internal::traits<Derived>::MaxColsAtCompileTime>::ret),
143
- /**< This value is equal to the maximum possible number of coefficients that this expression
144
- * might have. If this expression might have an arbitrarily high number of coefficients,
145
- * this value is set to \a Dynamic.
146
- *
147
- * This value is useful to know when evaluating an expression, in order to determine
148
- * whether it is possible to avoid doing a dynamic memory allocation.
149
- *
150
- * \sa SizeAtCompileTime, MaxRowsAtCompileTime, MaxColsAtCompileTime
151
- */
152
-
153
- IsVectorAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime == 1
154
- || internal::traits<Derived>::MaxColsAtCompileTime == 1,
155
- /**< This is set to true if either the number of rows or the number of
156
- * columns is known at compile-time to be equal to 1. Indeed, in that case,
157
- * we are dealing with a column-vector (if there is only one column) or with
158
- * a row-vector (if there is only one row). */
159
-
160
- Flags = internal::traits<Derived>::Flags,
161
- /**< This stores expression \ref flags flags which may or may not be inherited by new expressions
162
- * constructed from this one. See the \ref flags "list of flags".
163
- */
164
-
165
- IsRowMajor = int(Flags) & RowMajorBit, /**< True if this expression has row-major storage order. */
166
-
167
- InnerSizeAtCompileTime = int(IsVectorAtCompileTime) ? int(SizeAtCompileTime)
168
- : int(IsRowMajor) ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
169
-
170
- InnerStrideAtCompileTime = internal::inner_stride_at_compile_time<Derived>::ret,
171
- OuterStrideAtCompileTime = internal::outer_stride_at_compile_time<Derived>::ret
172
- };
173
-
174
- typedef typename internal::find_best_packet<Scalar,SizeAtCompileTime>::type PacketScalar;
175
-
176
- enum { IsPlainObjectBase = 0 };
177
-
178
- /** The plain matrix type corresponding to this expression.
179
- * \sa PlainObject */
180
- typedef Matrix<typename internal::traits<Derived>::Scalar,
181
- internal::traits<Derived>::RowsAtCompileTime,
182
- internal::traits<Derived>::ColsAtCompileTime,
183
- AutoAlign | (internal::traits<Derived>::Flags&RowMajorBit ? RowMajor : ColMajor),
184
- internal::traits<Derived>::MaxRowsAtCompileTime,
185
- internal::traits<Derived>::MaxColsAtCompileTime
186
- > PlainMatrix;
187
-
188
- /** The plain array type corresponding to this expression.
189
- * \sa PlainObject */
190
- typedef Array<typename internal::traits<Derived>::Scalar,
191
- internal::traits<Derived>::RowsAtCompileTime,
165
+
166
+ IsRowMajor = int(Flags) & RowMajorBit, /**< True if this expression has row-major storage order. */
167
+
168
+ InnerSizeAtCompileTime = int(IsVectorAtCompileTime) ? int(SizeAtCompileTime)
169
+ : int(IsRowMajor) ? int(ColsAtCompileTime)
170
+ : int(RowsAtCompileTime),
171
+
172
+ InnerStrideAtCompileTime = internal::inner_stride_at_compile_time<Derived>::ret,
173
+ OuterStrideAtCompileTime = internal::outer_stride_at_compile_time<Derived>::ret
174
+ };
175
+
176
+ typedef typename internal::find_best_packet<Scalar, SizeAtCompileTime>::type PacketScalar;
177
+
178
+ enum { IsPlainObjectBase = 0 };
179
+
180
+ /** The plain matrix type corresponding to this expression.
181
+ * \sa PlainObject */
182
+ typedef Matrix<typename internal::traits<Derived>::Scalar, internal::traits<Derived>::RowsAtCompileTime,
183
+ internal::traits<Derived>::ColsAtCompileTime,
184
+ AutoAlign | (internal::traits<Derived>::Flags & RowMajorBit ? RowMajor : ColMajor),
185
+ internal::traits<Derived>::MaxRowsAtCompileTime, internal::traits<Derived>::MaxColsAtCompileTime>
186
+ PlainMatrix;
187
+
188
+ /** The plain array type corresponding to this expression.
189
+ * \sa PlainObject */
190
+ typedef Array<typename internal::traits<Derived>::Scalar, internal::traits<Derived>::RowsAtCompileTime,
192
191
  internal::traits<Derived>::ColsAtCompileTime,
193
- AutoAlign | (internal::traits<Derived>::Flags&RowMajorBit ? RowMajor : ColMajor),
194
- internal::traits<Derived>::MaxRowsAtCompileTime,
195
- internal::traits<Derived>::MaxColsAtCompileTime
196
- > PlainArray;
197
-
198
- /** \brief The plain matrix or array type corresponding to this expression.
199
- *
200
- * This is not necessarily exactly the return type of eval(). In the case of plain matrices,
201
- * the return type of eval() is a const reference to a matrix, not a matrix! It is however guaranteed
202
- * that the return type of eval() is either PlainObject or const PlainObject&.
203
- */
204
- typedef typename internal::conditional<internal::is_same<typename internal::traits<Derived>::XprKind,MatrixXpr >::value,
205
- PlainMatrix, PlainArray>::type PlainObject;
206
-
207
- /** \returns the number of nonzero coefficients which is in practice the number
208
- * of stored coefficients. */
209
- EIGEN_DEVICE_FUNC
210
- inline Index nonZeros() const { return size(); }
211
-
212
- /** \returns the outer size.
213
- *
214
- * \note For a vector, this returns just 1. For a matrix (non-vector), this is the major dimension
215
- * with respect to the \ref TopicStorageOrders "storage order", i.e., the number of columns for a
216
- * column-major matrix, and the number of rows for a row-major matrix. */
217
- EIGEN_DEVICE_FUNC
218
- Index outerSize() const
219
- {
220
- return IsVectorAtCompileTime ? 1
221
- : int(IsRowMajor) ? this->rows() : this->cols();
222
- }
223
-
224
- /** \returns the inner size.
225
- *
226
- * \note For a vector, this is just the size. For a matrix (non-vector), this is the minor dimension
227
- * with respect to the \ref TopicStorageOrders "storage order", i.e., the number of rows for a
228
- * column-major matrix, and the number of columns for a row-major matrix. */
229
- EIGEN_DEVICE_FUNC
230
- Index innerSize() const
231
- {
232
- return IsVectorAtCompileTime ? this->size()
233
- : int(IsRowMajor) ? this->cols() : this->rows();
234
- }
235
-
236
- /** Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are
237
- * Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and does
238
- * nothing else.
239
- */
240
- EIGEN_DEVICE_FUNC
241
- void resize(Index newSize)
242
- {
243
- EIGEN_ONLY_USED_FOR_DEBUG(newSize);
244
- eigen_assert(newSize == this->size()
245
- && "DenseBase::resize() does not actually allow to resize.");
246
- }
247
- /** Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are
248
- * Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and does
249
- * nothing else.
250
- */
251
- EIGEN_DEVICE_FUNC
252
- void resize(Index rows, Index cols)
253
- {
254
- EIGEN_ONLY_USED_FOR_DEBUG(rows);
255
- EIGEN_ONLY_USED_FOR_DEBUG(cols);
256
- eigen_assert(rows == this->rows() && cols == this->cols()
257
- && "DenseBase::resize() does not actually allow to resize.");
258
- }
192
+ AutoAlign | (internal::traits<Derived>::Flags & RowMajorBit ? RowMajor : ColMajor),
193
+ internal::traits<Derived>::MaxRowsAtCompileTime, internal::traits<Derived>::MaxColsAtCompileTime>
194
+ PlainArray;
195
+
196
+ /** \brief The plain matrix or array type corresponding to this expression.
197
+ *
198
+ * This is not necessarily exactly the return type of eval(). In the case of plain matrices,
199
+ * the return type of eval() is a const reference to a matrix, not a matrix! It is however guaranteed
200
+ * that the return type of eval() is either PlainObject or const PlainObject&.
201
+ */
202
+ typedef std::conditional_t<internal::is_same<typename internal::traits<Derived>::XprKind, MatrixXpr>::value,
203
+ PlainMatrix, PlainArray>
204
+ PlainObject;
205
+
206
+ /** \returns the outer size.
207
+ *
208
+ * \note For a vector, this returns just 1. For a matrix (non-vector), this is the major dimension
209
+ * with respect to the \ref TopicStorageOrders "storage order", i.e., the number of columns for a
210
+ * column-major matrix, and the number of rows for a row-major matrix. */
211
+ EIGEN_DEVICE_FUNC constexpr Index outerSize() const {
212
+ return IsVectorAtCompileTime ? 1 : int(IsRowMajor) ? this->rows() : this->cols();
213
+ }
214
+
215
+ /** \returns the inner size.
216
+ *
217
+ * \note For a vector, this is just the size. For a matrix (non-vector), this is the minor dimension
218
+ * with respect to the \ref TopicStorageOrders "storage order", i.e., the number of rows for a
219
+ * column-major matrix, and the number of columns for a row-major matrix. */
220
+ EIGEN_DEVICE_FUNC constexpr Index innerSize() const {
221
+ return IsVectorAtCompileTime ? this->size() : int(IsRowMajor) ? this->cols() : this->rows();
222
+ }
223
+
224
+ /** Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are
225
+ * Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and
226
+ * does nothing else.
227
+ */
228
+ EIGEN_DEVICE_FUNC void resize(Index newSize) {
229
+ EIGEN_ONLY_USED_FOR_DEBUG(newSize);
230
+ eigen_assert(newSize == this->size() && "DenseBase::resize() does not actually allow to resize.");
231
+ }
232
+ /** Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are
233
+ * Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and
234
+ * does nothing else.
235
+ */
236
+ EIGEN_DEVICE_FUNC void resize(Index rows, Index cols) {
237
+ EIGEN_ONLY_USED_FOR_DEBUG(rows);
238
+ EIGEN_ONLY_USED_FOR_DEBUG(cols);
239
+ eigen_assert(rows == this->rows() && cols == this->cols() &&
240
+ "DenseBase::resize() does not actually allow to resize.");
241
+ }
259
242
 
260
243
  #ifndef EIGEN_PARSED_BY_DOXYGEN
261
- /** \internal Represents a matrix with all coefficients equal to one another*/
262
- typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,PlainObject> ConstantReturnType;
263
- /** \internal \deprecated Represents a vector with linearly spaced coefficients that allows sequential access only. */
264
- typedef CwiseNullaryOp<internal::linspaced_op<Scalar,PacketScalar>,PlainObject> SequentialLinSpacedReturnType;
265
- /** \internal Represents a vector with linearly spaced coefficients that allows random access. */
266
- typedef CwiseNullaryOp<internal::linspaced_op<Scalar,PacketScalar>,PlainObject> RandomAccessLinSpacedReturnType;
267
- /** \internal the return type of MatrixBase::eigenvalues() */
268
- typedef Matrix<typename NumTraits<typename internal::traits<Derived>::Scalar>::Real, internal::traits<Derived>::ColsAtCompileTime, 1> EigenvaluesReturnType;
269
-
270
- #endif // not EIGEN_PARSED_BY_DOXYGEN
271
-
272
- /** Copies \a other into *this. \returns a reference to *this. */
273
- template<typename OtherDerived>
274
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
275
- Derived& operator=(const DenseBase<OtherDerived>& other);
276
-
277
- /** Special case of the template operator=, in order to prevent the compiler
278
- * from generating a default operator= (issue hit with g++ 4.1)
279
- */
280
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
281
- Derived& operator=(const DenseBase& other);
282
-
283
- template<typename OtherDerived>
284
- EIGEN_DEVICE_FUNC
285
- Derived& operator=(const EigenBase<OtherDerived> &other);
286
-
287
- template<typename OtherDerived>
288
- EIGEN_DEVICE_FUNC
289
- Derived& operator+=(const EigenBase<OtherDerived> &other);
290
-
291
- template<typename OtherDerived>
292
- EIGEN_DEVICE_FUNC
293
- Derived& operator-=(const EigenBase<OtherDerived> &other);
294
-
295
- template<typename OtherDerived>
296
- EIGEN_DEVICE_FUNC
297
- Derived& operator=(const ReturnByValue<OtherDerived>& func);
298
-
299
- /** \internal
300
- * Copies \a other into *this without evaluating other. \returns a reference to *this.
301
- * \deprecated */
302
- template<typename OtherDerived>
303
- EIGEN_DEVICE_FUNC
304
- Derived& lazyAssign(const DenseBase<OtherDerived>& other);
305
-
306
- EIGEN_DEVICE_FUNC
307
- CommaInitializer<Derived> operator<< (const Scalar& s);
308
-
309
- /** \deprecated it now returns \c *this */
310
- template<unsigned int Added,unsigned int Removed>
311
- EIGEN_DEPRECATED
312
- const Derived& flagged() const
313
- { return derived(); }
314
-
315
- template<typename OtherDerived>
316
- EIGEN_DEVICE_FUNC
317
- CommaInitializer<Derived> operator<< (const DenseBase<OtherDerived>& other);
318
-
319
- typedef Transpose<Derived> TransposeReturnType;
320
- EIGEN_DEVICE_FUNC
321
- TransposeReturnType transpose();
322
- typedef typename internal::add_const<Transpose<const Derived> >::type ConstTransposeReturnType;
323
- EIGEN_DEVICE_FUNC
324
- ConstTransposeReturnType transpose() const;
325
- EIGEN_DEVICE_FUNC
326
- void transposeInPlace();
327
-
328
- EIGEN_DEVICE_FUNC static const ConstantReturnType
329
- Constant(Index rows, Index cols, const Scalar& value);
330
- EIGEN_DEVICE_FUNC static const ConstantReturnType
331
- Constant(Index size, const Scalar& value);
332
- EIGEN_DEVICE_FUNC static const ConstantReturnType
333
- Constant(const Scalar& value);
334
-
335
- EIGEN_DEVICE_FUNC static const SequentialLinSpacedReturnType
336
- LinSpaced(Sequential_t, Index size, const Scalar& low, const Scalar& high);
337
- EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
338
- LinSpaced(Index size, const Scalar& low, const Scalar& high);
339
- EIGEN_DEVICE_FUNC static const SequentialLinSpacedReturnType
340
- LinSpaced(Sequential_t, const Scalar& low, const Scalar& high);
341
- EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
342
- LinSpaced(const Scalar& low, const Scalar& high);
343
-
344
- template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
345
- static const CwiseNullaryOp<CustomNullaryOp, PlainObject>
346
- NullaryExpr(Index rows, Index cols, const CustomNullaryOp& func);
347
- template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
348
- static const CwiseNullaryOp<CustomNullaryOp, PlainObject>
349
- NullaryExpr(Index size, const CustomNullaryOp& func);
350
- template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
351
- static const CwiseNullaryOp<CustomNullaryOp, PlainObject>
352
- NullaryExpr(const CustomNullaryOp& func);
353
-
354
- EIGEN_DEVICE_FUNC static const ConstantReturnType Zero(Index rows, Index cols);
355
- EIGEN_DEVICE_FUNC static const ConstantReturnType Zero(Index size);
356
- EIGEN_DEVICE_FUNC static const ConstantReturnType Zero();
357
- EIGEN_DEVICE_FUNC static const ConstantReturnType Ones(Index rows, Index cols);
358
- EIGEN_DEVICE_FUNC static const ConstantReturnType Ones(Index size);
359
- EIGEN_DEVICE_FUNC static const ConstantReturnType Ones();
360
-
361
- EIGEN_DEVICE_FUNC void fill(const Scalar& value);
362
- EIGEN_DEVICE_FUNC Derived& setConstant(const Scalar& value);
363
- EIGEN_DEVICE_FUNC Derived& setLinSpaced(Index size, const Scalar& low, const Scalar& high);
364
- EIGEN_DEVICE_FUNC Derived& setLinSpaced(const Scalar& low, const Scalar& high);
365
- EIGEN_DEVICE_FUNC Derived& setZero();
366
- EIGEN_DEVICE_FUNC Derived& setOnes();
367
- EIGEN_DEVICE_FUNC Derived& setRandom();
368
-
369
- template<typename OtherDerived> EIGEN_DEVICE_FUNC
370
- bool isApprox(const DenseBase<OtherDerived>& other,
371
- const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
372
- EIGEN_DEVICE_FUNC
373
- bool isMuchSmallerThan(const RealScalar& other,
374
- const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
375
- template<typename OtherDerived> EIGEN_DEVICE_FUNC
376
- bool isMuchSmallerThan(const DenseBase<OtherDerived>& other,
377
- const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
378
-
379
- EIGEN_DEVICE_FUNC bool isApproxToConstant(const Scalar& value, const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
380
- EIGEN_DEVICE_FUNC bool isConstant(const Scalar& value, const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
381
- EIGEN_DEVICE_FUNC bool isZero(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
382
- EIGEN_DEVICE_FUNC bool isOnes(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
383
-
384
- inline bool hasNaN() const;
385
- inline bool allFinite() const;
386
-
387
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
388
- Derived& operator*=(const Scalar& other);
389
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
390
- Derived& operator/=(const Scalar& other);
391
-
392
- typedef typename internal::add_const_on_value_type<typename internal::eval<Derived>::type>::type EvalReturnType;
393
- /** \returns the matrix or vector obtained by evaluating this expression.
394
- *
395
- * Notice that in the case of a plain matrix or vector (not an expression) this function just returns
396
- * a const reference, in order to avoid a useless copy.
397
- *
398
- * \warning Be carefull with eval() and the auto C++ keyword, as detailed in this \link TopicPitfalls_auto_keyword page \endlink.
399
- */
400
- EIGEN_DEVICE_FUNC
401
- EIGEN_STRONG_INLINE EvalReturnType eval() const
402
- {
403
- // Even though MSVC does not honor strong inlining when the return type
404
- // is a dynamic matrix, we desperately need strong inlining for fixed
405
- // size types on MSVC.
406
- return typename internal::eval<Derived>::type(derived());
407
- }
408
-
409
- /** swaps *this with the expression \a other.
410
- *
411
- */
412
- template<typename OtherDerived>
413
- EIGEN_DEVICE_FUNC
414
- void swap(const DenseBase<OtherDerived>& other)
415
- {
416
- EIGEN_STATIC_ASSERT(!OtherDerived::IsPlainObjectBase,THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY);
417
- eigen_assert(rows()==other.rows() && cols()==other.cols());
418
- call_assignment(derived(), other.const_cast_derived(), internal::swap_assign_op<Scalar>());
419
- }
420
-
421
- /** swaps *this with the matrix or array \a other.
422
- *
423
- */
424
- template<typename OtherDerived>
425
- EIGEN_DEVICE_FUNC
426
- void swap(PlainObjectBase<OtherDerived>& other)
427
- {
428
- eigen_assert(rows()==other.rows() && cols()==other.cols());
429
- call_assignment(derived(), other.derived(), internal::swap_assign_op<Scalar>());
430
- }
431
-
432
- EIGEN_DEVICE_FUNC inline const NestByValue<Derived> nestByValue() const;
433
- EIGEN_DEVICE_FUNC inline const ForceAlignedAccess<Derived> forceAlignedAccess() const;
434
- EIGEN_DEVICE_FUNC inline ForceAlignedAccess<Derived> forceAlignedAccess();
435
- template<bool Enable> EIGEN_DEVICE_FUNC
436
- inline const typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type forceAlignedAccessIf() const;
437
- template<bool Enable> EIGEN_DEVICE_FUNC
438
- inline typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type forceAlignedAccessIf();
439
-
440
- EIGEN_DEVICE_FUNC Scalar sum() const;
441
- EIGEN_DEVICE_FUNC Scalar mean() const;
442
- EIGEN_DEVICE_FUNC Scalar trace() const;
443
-
444
- EIGEN_DEVICE_FUNC Scalar prod() const;
445
-
446
- EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar minCoeff() const;
447
- EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar maxCoeff() const;
448
-
449
- template<typename IndexType> EIGEN_DEVICE_FUNC
450
- typename internal::traits<Derived>::Scalar minCoeff(IndexType* row, IndexType* col) const;
451
- template<typename IndexType> EIGEN_DEVICE_FUNC
452
- typename internal::traits<Derived>::Scalar maxCoeff(IndexType* row, IndexType* col) const;
453
- template<typename IndexType> EIGEN_DEVICE_FUNC
454
- typename internal::traits<Derived>::Scalar minCoeff(IndexType* index) const;
455
- template<typename IndexType> EIGEN_DEVICE_FUNC
456
- typename internal::traits<Derived>::Scalar maxCoeff(IndexType* index) const;
457
-
458
- template<typename BinaryOp>
459
- EIGEN_DEVICE_FUNC
460
- Scalar redux(const BinaryOp& func) const;
461
-
462
- template<typename Visitor>
463
- EIGEN_DEVICE_FUNC
464
- void visit(Visitor& func) const;
465
-
466
- /** \returns a WithFormat proxy object allowing to print a matrix the with given
467
- * format \a fmt.
468
- *
469
- * See class IOFormat for some examples.
470
- *
471
- * \sa class IOFormat, class WithFormat
472
- */
473
- inline const WithFormat<Derived> format(const IOFormat& fmt) const
474
- {
475
- return WithFormat<Derived>(derived(), fmt);
476
- }
477
-
478
- /** \returns the unique coefficient of a 1x1 expression */
479
- EIGEN_DEVICE_FUNC
480
- CoeffReturnType value() const
481
- {
482
- EIGEN_STATIC_ASSERT_SIZE_1x1(Derived)
483
- eigen_assert(this->rows() == 1 && this->cols() == 1);
484
- return derived().coeff(0,0);
485
- }
486
-
487
- EIGEN_DEVICE_FUNC bool all() const;
488
- EIGEN_DEVICE_FUNC bool any() const;
489
- EIGEN_DEVICE_FUNC Index count() const;
490
-
491
- typedef VectorwiseOp<Derived, Horizontal> RowwiseReturnType;
492
- typedef const VectorwiseOp<const Derived, Horizontal> ConstRowwiseReturnType;
493
- typedef VectorwiseOp<Derived, Vertical> ColwiseReturnType;
494
- typedef const VectorwiseOp<const Derived, Vertical> ConstColwiseReturnType;
495
-
496
- /** \returns a VectorwiseOp wrapper of *this providing additional partial reduction operations
497
- *
498
- * Example: \include MatrixBase_rowwise.cpp
499
- * Output: \verbinclude MatrixBase_rowwise.out
500
- *
501
- * \sa colwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
502
- */
503
- //Code moved here due to a CUDA compiler bug
504
- EIGEN_DEVICE_FUNC inline ConstRowwiseReturnType rowwise() const {
505
- return ConstRowwiseReturnType(derived());
506
- }
507
- EIGEN_DEVICE_FUNC RowwiseReturnType rowwise();
508
-
509
- /** \returns a VectorwiseOp wrapper of *this providing additional partial reduction operations
510
- *
511
- * Example: \include MatrixBase_colwise.cpp
512
- * Output: \verbinclude MatrixBase_colwise.out
513
- *
514
- * \sa rowwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
515
- */
516
- EIGEN_DEVICE_FUNC inline ConstColwiseReturnType colwise() const {
517
- return ConstColwiseReturnType(derived());
518
- }
519
- EIGEN_DEVICE_FUNC ColwiseReturnType colwise();
520
-
521
- typedef CwiseNullaryOp<internal::scalar_random_op<Scalar>,PlainObject> RandomReturnType;
522
- static const RandomReturnType Random(Index rows, Index cols);
523
- static const RandomReturnType Random(Index size);
524
- static const RandomReturnType Random();
525
-
526
- template<typename ThenDerived,typename ElseDerived>
527
- const Select<Derived,ThenDerived,ElseDerived>
528
- select(const DenseBase<ThenDerived>& thenMatrix,
529
- const DenseBase<ElseDerived>& elseMatrix) const;
530
-
531
- template<typename ThenDerived>
532
- inline const Select<Derived,ThenDerived, typename ThenDerived::ConstantReturnType>
533
- select(const DenseBase<ThenDerived>& thenMatrix, const typename ThenDerived::Scalar& elseScalar) const;
534
-
535
- template<typename ElseDerived>
536
- inline const Select<Derived, typename ElseDerived::ConstantReturnType, ElseDerived >
537
- select(const typename ElseDerived::Scalar& thenScalar, const DenseBase<ElseDerived>& elseMatrix) const;
538
-
539
- template<int p> RealScalar lpNorm() const;
540
-
541
- template<int RowFactor, int ColFactor>
542
- EIGEN_DEVICE_FUNC
543
- const Replicate<Derived,RowFactor,ColFactor> replicate() const;
544
- /**
545
- * \return an expression of the replication of \c *this
546
- *
547
- * Example: \include MatrixBase_replicate_int_int.cpp
548
- * Output: \verbinclude MatrixBase_replicate_int_int.out
549
- *
550
- * \sa VectorwiseOp::replicate(), DenseBase::replicate<int,int>(), class Replicate
551
- */
552
- //Code moved here due to a CUDA compiler bug
553
- EIGEN_DEVICE_FUNC
554
- const Replicate<Derived, Dynamic, Dynamic> replicate(Index rowFactor, Index colFactor) const
555
- {
556
- return Replicate<Derived, Dynamic, Dynamic>(derived(), rowFactor, colFactor);
557
- }
558
-
559
- typedef Reverse<Derived, BothDirections> ReverseReturnType;
560
- typedef const Reverse<const Derived, BothDirections> ConstReverseReturnType;
561
- EIGEN_DEVICE_FUNC ReverseReturnType reverse();
562
- /** This is the const version of reverse(). */
563
- //Code moved here due to a CUDA compiler bug
564
- EIGEN_DEVICE_FUNC ConstReverseReturnType reverse() const
565
- {
566
- return ConstReverseReturnType(derived());
567
- }
568
- EIGEN_DEVICE_FUNC void reverseInPlace();
244
+ /** \internal Represents a matrix with all coefficients equal to one another*/
245
+ typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>, PlainObject> ConstantReturnType;
246
+ /** \internal Represents a matrix with all coefficients equal to zero*/
247
+ typedef CwiseNullaryOp<internal::scalar_zero_op<Scalar>, PlainObject> ZeroReturnType;
248
+ /** \internal \deprecated Represents a vector with linearly spaced coefficients that allows sequential access only. */
249
+ EIGEN_DEPRECATED typedef CwiseNullaryOp<internal::linspaced_op<Scalar>, PlainObject> SequentialLinSpacedReturnType;
250
+ /** \internal Represents a vector with linearly spaced coefficients that allows random access. */
251
+ typedef CwiseNullaryOp<internal::linspaced_op<Scalar>, PlainObject> RandomAccessLinSpacedReturnType;
252
+ /** \internal Represents a vector with equally spaced coefficients that allows random access. */
253
+ typedef CwiseNullaryOp<internal::equalspaced_op<Scalar>, PlainObject> RandomAccessEqualSpacedReturnType;
254
+ /** \internal the return type of MatrixBase::eigenvalues() */
255
+ typedef Matrix<typename NumTraits<typename internal::traits<Derived>::Scalar>::Real,
256
+ internal::traits<Derived>::ColsAtCompileTime, 1>
257
+ EigenvaluesReturnType;
258
+
259
+ #endif // not EIGEN_PARSED_BY_DOXYGEN
260
+
261
+ /** Copies \a other into *this. \returns a reference to *this. */
262
+ template <typename OtherDerived>
263
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const DenseBase<OtherDerived>& other);
264
+
265
+ /** Special case of the template operator=, in order to prevent the compiler
266
+ * from generating a default operator= (issue hit with g++ 4.1)
267
+ */
268
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const DenseBase& other);
269
+
270
+ template <typename OtherDerived>
271
+ EIGEN_DEVICE_FUNC Derived& operator=(const EigenBase<OtherDerived>& other);
272
+
273
+ template <typename OtherDerived>
274
+ EIGEN_DEVICE_FUNC Derived& operator+=(const EigenBase<OtherDerived>& other);
275
+
276
+ template <typename OtherDerived>
277
+ EIGEN_DEVICE_FUNC Derived& operator-=(const EigenBase<OtherDerived>& other);
278
+
279
+ template <typename OtherDerived>
280
+ EIGEN_DEVICE_FUNC Derived& operator=(const ReturnByValue<OtherDerived>& func);
281
+
282
+ /** \internal
283
+ * Copies \a other into *this without evaluating other. \returns a reference to *this. */
284
+ template <typename OtherDerived>
285
+ /** \deprecated */
286
+ EIGEN_DEPRECATED EIGEN_DEVICE_FUNC Derived& lazyAssign(const DenseBase<OtherDerived>& other);
287
+
288
+ EIGEN_DEVICE_FUNC CommaInitializer<Derived> operator<<(const Scalar& s);
289
+
290
+ template <unsigned int Added, unsigned int Removed>
291
+ /** \deprecated it now returns \c *this */
292
+ EIGEN_DEPRECATED const Derived& flagged() const {
293
+ return derived();
294
+ }
295
+
296
+ template <typename OtherDerived>
297
+ EIGEN_DEVICE_FUNC CommaInitializer<Derived> operator<<(const DenseBase<OtherDerived>& other);
298
+
299
+ typedef Transpose<Derived> TransposeReturnType;
300
+ EIGEN_DEVICE_FUNC TransposeReturnType transpose();
301
+ typedef Transpose<const Derived> ConstTransposeReturnType;
302
+ EIGEN_DEVICE_FUNC const ConstTransposeReturnType transpose() const;
303
+ EIGEN_DEVICE_FUNC void transposeInPlace();
304
+
305
+ EIGEN_DEVICE_FUNC static const ConstantReturnType Constant(Index rows, Index cols, const Scalar& value);
306
+ EIGEN_DEVICE_FUNC static const ConstantReturnType Constant(Index size, const Scalar& value);
307
+ EIGEN_DEVICE_FUNC static const ConstantReturnType Constant(const Scalar& value);
308
+
309
+ EIGEN_DEPRECATED_WITH_REASON("The method may result in accuracy loss. Use .EqualSpaced() instead.")
310
+ EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType LinSpaced(Sequential_t, Index size, const Scalar& low,
311
+ const Scalar& high);
312
+ EIGEN_DEPRECATED_WITH_REASON("The method may result in accuracy loss. Use .EqualSpaced() instead.")
313
+ EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType LinSpaced(Sequential_t, const Scalar& low,
314
+ const Scalar& high);
315
+
316
+ EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType LinSpaced(Index size, const Scalar& low,
317
+ const Scalar& high);
318
+ EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType LinSpaced(const Scalar& low, const Scalar& high);
319
+
320
+ EIGEN_DEVICE_FUNC static const RandomAccessEqualSpacedReturnType EqualSpaced(Index size, const Scalar& low,
321
+ const Scalar& step);
322
+ EIGEN_DEVICE_FUNC static const RandomAccessEqualSpacedReturnType EqualSpaced(const Scalar& low, const Scalar& step);
323
+
324
+ template <typename CustomNullaryOp>
325
+ EIGEN_DEVICE_FUNC static const CwiseNullaryOp<CustomNullaryOp, PlainObject> NullaryExpr(Index rows, Index cols,
326
+ const CustomNullaryOp& func);
327
+ template <typename CustomNullaryOp>
328
+ EIGEN_DEVICE_FUNC static const CwiseNullaryOp<CustomNullaryOp, PlainObject> NullaryExpr(Index size,
329
+ const CustomNullaryOp& func);
330
+ template <typename CustomNullaryOp>
331
+ EIGEN_DEVICE_FUNC static const CwiseNullaryOp<CustomNullaryOp, PlainObject> NullaryExpr(const CustomNullaryOp& func);
332
+
333
+ EIGEN_DEVICE_FUNC static const ZeroReturnType Zero(Index rows, Index cols);
334
+ EIGEN_DEVICE_FUNC static const ZeroReturnType Zero(Index size);
335
+ EIGEN_DEVICE_FUNC static const ZeroReturnType Zero();
336
+ EIGEN_DEVICE_FUNC static const ConstantReturnType Ones(Index rows, Index cols);
337
+ EIGEN_DEVICE_FUNC static const ConstantReturnType Ones(Index size);
338
+ EIGEN_DEVICE_FUNC static const ConstantReturnType Ones();
339
+
340
+ EIGEN_DEVICE_FUNC void fill(const Scalar& value);
341
+ EIGEN_DEVICE_FUNC Derived& setConstant(const Scalar& value);
342
+ EIGEN_DEVICE_FUNC Derived& setLinSpaced(Index size, const Scalar& low, const Scalar& high);
343
+ EIGEN_DEVICE_FUNC Derived& setLinSpaced(const Scalar& low, const Scalar& high);
344
+ EIGEN_DEVICE_FUNC Derived& setEqualSpaced(Index size, const Scalar& low, const Scalar& step);
345
+ EIGEN_DEVICE_FUNC Derived& setEqualSpaced(const Scalar& low, const Scalar& step);
346
+ EIGEN_DEVICE_FUNC Derived& setZero();
347
+ EIGEN_DEVICE_FUNC Derived& setOnes();
348
+ EIGEN_DEVICE_FUNC Derived& setRandom();
349
+
350
+ template <typename OtherDerived>
351
+ EIGEN_DEVICE_FUNC bool isApprox(const DenseBase<OtherDerived>& other,
352
+ const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
353
+ EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const RealScalar& other,
354
+ const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
355
+ template <typename OtherDerived>
356
+ EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const DenseBase<OtherDerived>& other,
357
+ const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
358
+
359
+ EIGEN_DEVICE_FUNC bool isApproxToConstant(const Scalar& value,
360
+ const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
361
+ EIGEN_DEVICE_FUNC bool isConstant(const Scalar& value,
362
+ const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
363
+ EIGEN_DEVICE_FUNC bool isZero(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
364
+ EIGEN_DEVICE_FUNC bool isOnes(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
365
+
366
+ EIGEN_DEVICE_FUNC inline bool hasNaN() const;
367
+ EIGEN_DEVICE_FUNC inline bool allFinite() const;
368
+
369
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator*=(const Scalar& other);
370
+ template <bool Enable = !internal::is_same<Scalar, RealScalar>::value, typename = std::enable_if_t<Enable>>
371
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator*=(const RealScalar& other);
372
+
373
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator/=(const Scalar& other);
374
+ template <bool Enable = !internal::is_same<Scalar, RealScalar>::value, typename = std::enable_if_t<Enable>>
375
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator/=(const RealScalar& other);
376
+
377
+ typedef internal::add_const_on_value_type_t<typename internal::eval<Derived>::type> EvalReturnType;
378
+ /** \returns the matrix or vector obtained by evaluating this expression.
379
+ *
380
+ * Notice that in the case of a plain matrix or vector (not an expression) this function just returns
381
+ * a const reference, in order to avoid a useless copy.
382
+ *
383
+ * \warning Be careful with eval() and the auto C++ keyword, as detailed in this \link TopicPitfalls_auto_keyword page
384
+ * \endlink.
385
+ */
386
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EvalReturnType eval() const {
387
+ // Even though MSVC does not honor strong inlining when the return type
388
+ // is a dynamic matrix, we desperately need strong inlining for fixed
389
+ // size types on MSVC.
390
+ return typename internal::eval<Derived>::type(derived());
391
+ }
392
+
393
+ /** swaps *this with the expression \a other.
394
+ *
395
+ */
396
+ template <typename OtherDerived>
397
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void swap(const DenseBase<OtherDerived>& other) {
398
+ EIGEN_STATIC_ASSERT(!OtherDerived::IsPlainObjectBase, THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY);
399
+ eigen_assert(rows() == other.rows() && cols() == other.cols());
400
+ call_assignment(derived(), other.const_cast_derived(), internal::swap_assign_op<Scalar>());
401
+ }
402
+
403
+ /** swaps *this with the matrix or array \a other.
404
+ *
405
+ */
406
+ template <typename OtherDerived>
407
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void swap(PlainObjectBase<OtherDerived>& other) {
408
+ eigen_assert(rows() == other.rows() && cols() == other.cols());
409
+ call_assignment(derived(), other.derived(), internal::swap_assign_op<Scalar>());
410
+ }
411
+
412
+ EIGEN_DEVICE_FUNC inline const NestByValue<Derived> nestByValue() const;
413
+ EIGEN_DEVICE_FUNC inline const ForceAlignedAccess<Derived> forceAlignedAccess() const;
414
+ EIGEN_DEVICE_FUNC inline ForceAlignedAccess<Derived> forceAlignedAccess();
415
+ template <bool Enable>
416
+ EIGEN_DEVICE_FUNC inline const std::conditional_t<Enable, ForceAlignedAccess<Derived>, Derived&>
417
+ forceAlignedAccessIf() const;
418
+ template <bool Enable>
419
+ EIGEN_DEVICE_FUNC inline std::conditional_t<Enable, ForceAlignedAccess<Derived>, Derived&> forceAlignedAccessIf();
420
+
421
+ EIGEN_DEVICE_FUNC Scalar sum() const;
422
+ EIGEN_DEVICE_FUNC Scalar mean() const;
423
+ EIGEN_DEVICE_FUNC Scalar trace() const;
424
+
425
+ EIGEN_DEVICE_FUNC Scalar prod() const;
426
+
427
+ template <int NaNPropagation>
428
+ EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar minCoeff() const;
429
+ template <int NaNPropagation>
430
+ EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar maxCoeff() const;
431
+
432
+ // By default, the fastest version with undefined NaN propagation semantics is
433
+ // used.
434
+ // TODO(rmlarsen): Replace with default template argument when we move to
435
+ // c++11 or beyond.
436
+ EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar minCoeff() const {
437
+ return minCoeff<PropagateFast>();
438
+ }
439
+ EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar maxCoeff() const {
440
+ return maxCoeff<PropagateFast>();
441
+ }
442
+
443
+ template <int NaNPropagation, typename IndexType>
444
+ EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar minCoeff(IndexType* row, IndexType* col) const;
445
+ template <int NaNPropagation, typename IndexType>
446
+ EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar maxCoeff(IndexType* row, IndexType* col) const;
447
+ template <int NaNPropagation, typename IndexType>
448
+ EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar minCoeff(IndexType* index) const;
449
+ template <int NaNPropagation, typename IndexType>
450
+ EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar maxCoeff(IndexType* index) const;
451
+
452
+ // TODO(rmlarsen): Replace these methods with a default template argument.
453
+ template <typename IndexType>
454
+ EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar minCoeff(IndexType* row, IndexType* col) const {
455
+ return minCoeff<PropagateFast>(row, col);
456
+ }
457
+ template <typename IndexType>
458
+ EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar maxCoeff(IndexType* row, IndexType* col) const {
459
+ return maxCoeff<PropagateFast>(row, col);
460
+ }
461
+ template <typename IndexType>
462
+ EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar minCoeff(IndexType* index) const {
463
+ return minCoeff<PropagateFast>(index);
464
+ }
465
+ template <typename IndexType>
466
+ EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar maxCoeff(IndexType* index) const {
467
+ return maxCoeff<PropagateFast>(index);
468
+ }
469
+
470
+ template <typename BinaryOp>
471
+ EIGEN_DEVICE_FUNC Scalar redux(const BinaryOp& func) const;
472
+
473
+ template <typename Visitor>
474
+ EIGEN_DEVICE_FUNC void visit(Visitor& func) const;
475
+
476
+ /** \returns a WithFormat proxy object allowing to print a matrix the with given
477
+ * format \a fmt.
478
+ *
479
+ * See class IOFormat for some examples.
480
+ *
481
+ * \sa class IOFormat, class WithFormat
482
+ */
483
+ inline const WithFormat<Derived> format(const IOFormat& fmt) const { return WithFormat<Derived>(derived(), fmt); }
484
+
485
+ /** \returns the unique coefficient of a 1x1 expression */
486
+ EIGEN_DEVICE_FUNC CoeffReturnType value() const {
487
+ EIGEN_STATIC_ASSERT_SIZE_1x1(Derived) eigen_assert(this->rows() == 1 && this->cols() == 1);
488
+ return derived().coeff(0, 0);
489
+ }
490
+
491
+ EIGEN_DEVICE_FUNC bool all() const;
492
+ EIGEN_DEVICE_FUNC bool any() const;
493
+ EIGEN_DEVICE_FUNC Index count() const;
494
+
495
+ typedef VectorwiseOp<Derived, Horizontal> RowwiseReturnType;
496
+ typedef const VectorwiseOp<const Derived, Horizontal> ConstRowwiseReturnType;
497
+ typedef VectorwiseOp<Derived, Vertical> ColwiseReturnType;
498
+ typedef const VectorwiseOp<const Derived, Vertical> ConstColwiseReturnType;
499
+
500
+ /** \returns a VectorwiseOp wrapper of *this for broadcasting and partial reductions
501
+ *
502
+ * Example: \include MatrixBase_rowwise.cpp
503
+ * Output: \verbinclude MatrixBase_rowwise.out
504
+ *
505
+ * \sa colwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
506
+ */
507
+ // Code moved here due to a CUDA compiler bug
508
+ EIGEN_DEVICE_FUNC inline ConstRowwiseReturnType rowwise() const { return ConstRowwiseReturnType(derived()); }
509
+ EIGEN_DEVICE_FUNC RowwiseReturnType rowwise();
510
+
511
+ /** \returns a VectorwiseOp wrapper of *this broadcasting and partial reductions
512
+ *
513
+ * Example: \include MatrixBase_colwise.cpp
514
+ * Output: \verbinclude MatrixBase_colwise.out
515
+ *
516
+ * \sa rowwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
517
+ */
518
+ EIGEN_DEVICE_FUNC inline ConstColwiseReturnType colwise() const { return ConstColwiseReturnType(derived()); }
519
+ EIGEN_DEVICE_FUNC ColwiseReturnType colwise();
520
+
521
+ typedef CwiseNullaryOp<internal::scalar_random_op<Scalar>, PlainObject> RandomReturnType;
522
+ static const RandomReturnType Random(Index rows, Index cols);
523
+ static const RandomReturnType Random(Index size);
524
+ static const RandomReturnType Random();
525
+
526
+ template <typename ThenDerived, typename ElseDerived>
527
+ inline EIGEN_DEVICE_FUNC
528
+ CwiseTernaryOp<internal::scalar_boolean_select_op<typename DenseBase<ThenDerived>::Scalar,
529
+ typename DenseBase<ElseDerived>::Scalar, Scalar>,
530
+ ThenDerived, ElseDerived, Derived>
531
+ select(const DenseBase<ThenDerived>& thenMatrix, const DenseBase<ElseDerived>& elseMatrix) const;
532
+
533
+ template <typename ThenDerived>
534
+ inline EIGEN_DEVICE_FUNC
535
+ CwiseTernaryOp<internal::scalar_boolean_select_op<typename DenseBase<ThenDerived>::Scalar,
536
+ typename DenseBase<ThenDerived>::Scalar, Scalar>,
537
+ ThenDerived, typename DenseBase<ThenDerived>::ConstantReturnType, Derived>
538
+ select(const DenseBase<ThenDerived>& thenMatrix, const typename DenseBase<ThenDerived>::Scalar& elseScalar) const;
539
+
540
+ template <typename ElseDerived>
541
+ inline EIGEN_DEVICE_FUNC
542
+ CwiseTernaryOp<internal::scalar_boolean_select_op<typename DenseBase<ElseDerived>::Scalar,
543
+ typename DenseBase<ElseDerived>::Scalar, Scalar>,
544
+ typename DenseBase<ElseDerived>::ConstantReturnType, ElseDerived, Derived>
545
+ select(const typename DenseBase<ElseDerived>::Scalar& thenScalar, const DenseBase<ElseDerived>& elseMatrix) const;
546
+
547
+ template <int p>
548
+ RealScalar lpNorm() const;
549
+
550
+ template <int RowFactor, int ColFactor>
551
+ EIGEN_DEVICE_FUNC const Replicate<Derived, RowFactor, ColFactor> replicate() const;
552
+ /**
553
+ * \return an expression of the replication of \c *this
554
+ *
555
+ * Example: \include MatrixBase_replicate_int_int.cpp
556
+ * Output: \verbinclude MatrixBase_replicate_int_int.out
557
+ *
558
+ * \sa VectorwiseOp::replicate(), DenseBase::replicate<int,int>(), class Replicate
559
+ */
560
+ // Code moved here due to a CUDA compiler bug
561
+ EIGEN_DEVICE_FUNC const Replicate<Derived, Dynamic, Dynamic> replicate(Index rowFactor, Index colFactor) const {
562
+ return Replicate<Derived, Dynamic, Dynamic>(derived(), rowFactor, colFactor);
563
+ }
564
+
565
+ typedef Reverse<Derived, BothDirections> ReverseReturnType;
566
+ typedef const Reverse<const Derived, BothDirections> ConstReverseReturnType;
567
+ EIGEN_DEVICE_FUNC ReverseReturnType reverse();
568
+ /** This is the const version of reverse(). */
569
+ // Code moved here due to a CUDA compiler bug
570
+ EIGEN_DEVICE_FUNC ConstReverseReturnType reverse() const { return ConstReverseReturnType(derived()); }
571
+ EIGEN_DEVICE_FUNC void reverseInPlace();
572
+
573
+ #ifdef EIGEN_PARSED_BY_DOXYGEN
574
+ /** STL-like <a href="https://en.cppreference.com/w/cpp/named_req/RandomAccessIterator">RandomAccessIterator</a>
575
+ * iterator type as returned by the begin() and end() methods.
576
+ */
577
+ typedef random_access_iterator_type iterator;
578
+ /** This is the const version of iterator (aka read-only) */
579
+ typedef random_access_iterator_type const_iterator;
580
+ #else
581
+ typedef std::conditional_t<(Flags & DirectAccessBit) == DirectAccessBit,
582
+ internal::pointer_based_stl_iterator<Derived>,
583
+ internal::generic_randaccess_stl_iterator<Derived> >
584
+ iterator_type;
585
+
586
+ typedef std::conditional_t<(Flags & DirectAccessBit) == DirectAccessBit,
587
+ internal::pointer_based_stl_iterator<const Derived>,
588
+ internal::generic_randaccess_stl_iterator<const Derived> >
589
+ const_iterator_type;
590
+
591
+ // Stl-style iterators are supported only for vectors.
592
+
593
+ typedef std::conditional_t<IsVectorAtCompileTime, iterator_type, void> iterator;
594
+
595
+ typedef std::conditional_t<IsVectorAtCompileTime, const_iterator_type, void> const_iterator;
596
+ #endif
597
+
598
+ inline iterator begin();
599
+ inline const_iterator begin() const;
600
+ inline const_iterator cbegin() const;
601
+ inline iterator end();
602
+ inline const_iterator end() const;
603
+ inline const_iterator cend() const;
604
+
605
+ using RealViewReturnType = std::conditional_t<NumTraits<Scalar>::IsComplex, RealView<Derived>, Derived&>;
606
+ using ConstRealViewReturnType =
607
+ std::conditional_t<NumTraits<Scalar>::IsComplex, RealView<const Derived>, const Derived&>;
608
+
609
+ EIGEN_DEVICE_FUNC RealViewReturnType realView();
610
+ EIGEN_DEVICE_FUNC ConstRealViewReturnType realView() const;
569
611
 
570
612
  #define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::DenseBase
571
613
  #define EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
572
614
  #define EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(COND)
573
- # include "../plugins/BlockMethods.h"
574
- # ifdef EIGEN_DENSEBASE_PLUGIN
575
- # include EIGEN_DENSEBASE_PLUGIN
576
- # endif
615
+ #define EIGEN_DOC_UNARY_ADDONS(X, Y)
616
+ #include "../plugins/CommonCwiseUnaryOps.inc"
617
+ #include "../plugins/BlockMethods.inc"
618
+ #include "../plugins/IndexedViewMethods.inc"
619
+ #include "../plugins/ReshapedMethods.inc"
620
+ #ifdef EIGEN_DENSEBASE_PLUGIN
621
+ #include EIGEN_DENSEBASE_PLUGIN
622
+ #endif
577
623
  #undef EIGEN_CURRENT_STORAGE_BASE_CLASS
578
624
  #undef EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
579
625
  #undef EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF
580
-
581
- // disable the use of evalTo for dense objects with a nice compilation error
582
- template<typename Dest>
583
- EIGEN_DEVICE_FUNC
584
- inline void evalTo(Dest& ) const
585
- {
586
- EIGEN_STATIC_ASSERT((internal::is_same<Dest,void>::value),THE_EVAL_EVALTO_FUNCTION_SHOULD_NEVER_BE_CALLED_FOR_DENSE_OBJECTS);
587
- }
588
-
589
- protected:
590
- EIGEN_DEFAULT_COPY_CONSTRUCTOR(DenseBase)
591
- /** Default constructor. Do nothing. */
592
- EIGEN_DEVICE_FUNC DenseBase()
593
- {
594
- /* Just checks for self-consistency of the flags.
595
- * Only do it when debugging Eigen, as this borders on paranoia and could slow compilation down
596
- */
626
+ #undef EIGEN_DOC_UNARY_ADDONS
627
+
628
+ // disable the use of evalTo for dense objects with a nice compilation error
629
+ template <typename Dest>
630
+ EIGEN_DEVICE_FUNC inline void evalTo(Dest&) const {
631
+ EIGEN_STATIC_ASSERT((internal::is_same<Dest, void>::value),
632
+ THE_EVAL_EVALTO_FUNCTION_SHOULD_NEVER_BE_CALLED_FOR_DENSE_OBJECTS);
633
+ }
634
+
635
+ protected:
636
+ EIGEN_DEFAULT_COPY_CONSTRUCTOR(DenseBase)
637
+ /** Default constructor. Do nothing. */
597
638
  #ifdef EIGEN_INTERNAL_DEBUGGING
598
- EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1, int(IsRowMajor))
599
- && EIGEN_IMPLIES(MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1, int(!IsRowMajor))),
600
- INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION)
639
+ EIGEN_DEVICE_FUNC constexpr DenseBase() {
640
+ /* Just checks for self-consistency of the flags.
641
+ * Only do it when debugging Eigen, as this borders on paranoia and could slow compilation down
642
+ */
643
+ EIGEN_STATIC_ASSERT(
644
+ (internal::check_implication(MaxRowsAtCompileTime == 1 && MaxColsAtCompileTime != 1, int(IsRowMajor)) &&
645
+ internal::check_implication(MaxColsAtCompileTime == 1 && MaxRowsAtCompileTime != 1, int(!IsRowMajor))),
646
+ INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION)
647
+ }
648
+ #else
649
+ EIGEN_DEVICE_FUNC constexpr DenseBase() = default;
601
650
  #endif
602
- }
603
651
 
604
- private:
605
- EIGEN_DEVICE_FUNC explicit DenseBase(int);
606
- EIGEN_DEVICE_FUNC DenseBase(int,int);
607
- template<typename OtherDerived> EIGEN_DEVICE_FUNC explicit DenseBase(const DenseBase<OtherDerived>&);
652
+ private:
653
+ EIGEN_DEVICE_FUNC explicit DenseBase(int);
654
+ EIGEN_DEVICE_FUNC DenseBase(int, int);
655
+ template <typename OtherDerived>
656
+ EIGEN_DEVICE_FUNC explicit DenseBase(const DenseBase<OtherDerived>&);
608
657
  };
609
658
 
610
- } // end namespace Eigen
659
+ /** Free-function swap.
660
+ */
661
+ template <typename DerivedA, typename DerivedB>
662
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
663
+ // Use forwarding references to capture all combinations of cv-qualified l+r-value cases.
664
+ std::enable_if_t<std::is_base_of<DenseBase<std::decay_t<DerivedA>>, std::decay_t<DerivedA>>::value &&
665
+ std::is_base_of<DenseBase<std::decay_t<DerivedB>>, std::decay_t<DerivedB>>::value,
666
+ void>
667
+ swap(DerivedA&& a, DerivedB&& b) {
668
+ a.swap(b);
669
+ }
670
+
671
+ } // end namespace Eigen
611
672
 
612
- #endif // EIGEN_DENSEBASE_H
673
+ #endif // EIGEN_DENSEBASE_H