@smake/eigen 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -20
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +187 -120
  6. package/eigen/Eigen/Eigenvalues +16 -13
  7. package/eigen/Eigen/Geometry +18 -18
  8. package/eigen/Eigen/Householder +9 -7
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -13
  11. package/eigen/Eigen/KLUSupport +23 -21
  12. package/eigen/Eigen/LU +15 -16
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -51
  15. package/eigen/Eigen/PaStiXSupport +23 -21
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -20
  18. package/eigen/Eigen/QtAlignedMalloc +5 -12
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -17
  21. package/eigen/Eigen/Sparse +1 -2
  22. package/eigen/Eigen/SparseCholesky +18 -15
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +9 -9
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
  37. package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
  42. package/eigen/Eigen/src/Core/Array.h +329 -370
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
  48. package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
  49. package/eigen/Eigen/src/Core/Block.h +371 -390
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
  53. package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
  59. package/eigen/Eigen/src/Core/DenseBase.h +630 -658
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
  61. package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +168 -207
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +167 -217
  67. package/eigen/Eigen/src/Core/EigenBase.h +74 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
  75. package/eigen/Eigen/src/Core/IO.h +131 -156
  76. package/eigen/Eigen/src/Core/IndexedView.h +209 -125
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +50 -59
  80. package/eigen/Eigen/src/Core/Map.h +123 -141
  81. package/eigen/Eigen/src/Core/MapBase.h +255 -282
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
  84. package/eigen/Eigen/src/Core/Matrix.h +463 -494
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
  86. package/eigen/Eigen/src/Core/NestByValue.h +58 -52
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -86
  88. package/eigen/Eigen/src/Core/NumTraits.h +206 -206
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
  92. package/eigen/Eigen/src/Core/Product.h +246 -130
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
  94. package/eigen/Eigen/src/Core/Random.h +153 -164
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +334 -314
  98. package/eigen/Eigen/src/Core/Ref.h +259 -257
  99. package/eigen/Eigen/src/Core/Replicate.h +92 -104
  100. package/eigen/Eigen/src/Core/Reshaped.h +215 -271
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +133 -148
  103. package/eigen/Eigen/src/Core/Select.h +68 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +88 -102
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
  109. package/eigen/Eigen/src/Core/SolverBase.h +132 -133
  110. package/eigen/Eigen/src/Core/StableNorm.h +113 -147
  111. package/eigen/Eigen/src/Core/StlIterators.h +404 -248
  112. package/eigen/Eigen/src/Core/Stride.h +90 -92
  113. package/eigen/Eigen/src/Core/Swap.h +70 -39
  114. package/eigen/Eigen/src/Core/Transpose.h +258 -295
  115. package/eigen/Eigen/src/Core/Transpositions.h +270 -333
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
  119. package/eigen/Eigen/src/Core/Visitor.h +464 -308
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
  217. package/eigen/Eigen/src/Core/util/Constants.h +297 -262
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
  226. package/eigen/Eigen/src/Core/util/Macros.h +655 -773
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +970 -748
  229. package/eigen/Eigen/src/Core/util/Meta.h +581 -633
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
  264. package/eigen/Eigen/src/Geometry/Transform.h +858 -936
  265. package/eigen/Eigen/src/Geometry/Translation.h +94 -92
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
  269. package/eigen/Eigen/src/Householder/Householder.h +102 -124
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
  285. package/eigen/Eigen/src/LU/Determinant.h +50 -69
  286. package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/package.json +1 -1
  409. package/eigen/COPYING.APACHE +0 -203
  410. package/eigen/COPYING.BSD +0 -26
  411. package/eigen/COPYING.GPL +0 -674
  412. package/eigen/COPYING.LGPL +0 -502
  413. package/eigen/COPYING.MINPACK +0 -51
  414. package/eigen/COPYING.MPL2 +0 -373
  415. package/eigen/COPYING.README +0 -18
  416. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
  417. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
  418. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
  419. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
  420. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  421. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  422. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  423. package/eigen/Eigen/src/misc/lapack.h +0 -152
  424. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
  425. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
  426. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  427. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
  428. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  429. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
  430. package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
  431. package/eigen/README.md +0 -5
@@ -11,691 +11,663 @@
11
11
  #ifndef EIGEN_DENSEBASE_H
12
12
  #define EIGEN_DENSEBASE_H
13
13
 
14
- namespace Eigen {
14
+ // IWYU pragma: private
15
+ #include "./InternalHeaderCheck.h"
15
16
 
16
- namespace internal {
17
+ namespace Eigen {
17
18
 
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
- }
23
-
24
- } // end namespace internal
20
+ EIGEN_STATIC_ASSERT(NumTraits<DenseIndex>::IsSigned, THE_INDEX_TYPE_MUST_BE_A_SIGNED_TYPE)
25
21
 
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
+ */
49
123
 
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;
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
+ */
54
134
 
55
- typedef typename internal::traits<Derived>::StorageKind StorageKind;
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
+ */
56
146
 
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.
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.
62
159
  */
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>::RowsAtCompileTime == 1
154
- || internal::traits<Derived>::ColsAtCompileTime == 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
- NumDimensions = int(MaxSizeAtCompileTime) == 1 ? 0 : bool(IsVectorAtCompileTime) ? 1 : 2,
161
- /**< This value is equal to Tensor::NumDimensions, i.e. 0 for scalars, 1 for vectors,
162
- * and 2 for matrices.
163
- */
164
-
165
- Flags = internal::traits<Derived>::Flags,
166
- /**< This stores expression \ref flags flags which may or may not be inherited by new expressions
167
- * constructed from this one. See the \ref flags "list of flags".
168
- */
169
-
170
- IsRowMajor = int(Flags) & RowMajorBit, /**< True if this expression has row-major storage order. */
171
-
172
- InnerSizeAtCompileTime = int(IsVectorAtCompileTime) ? int(SizeAtCompileTime)
173
- : int(IsRowMajor) ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
174
-
175
- InnerStrideAtCompileTime = internal::inner_stride_at_compile_time<Derived>::ret,
176
- OuterStrideAtCompileTime = internal::outer_stride_at_compile_time<Derived>::ret
177
- };
178
-
179
- typedef typename internal::find_best_packet<Scalar,SizeAtCompileTime>::type PacketScalar;
180
-
181
- enum { IsPlainObjectBase = 0 };
182
-
183
- /** The plain matrix type corresponding to this expression.
184
- * \sa PlainObject */
185
- typedef Matrix<typename internal::traits<Derived>::Scalar,
186
- internal::traits<Derived>::RowsAtCompileTime,
187
- internal::traits<Derived>::ColsAtCompileTime,
188
- AutoAlign | (internal::traits<Derived>::Flags&RowMajorBit ? RowMajor : ColMajor),
189
- internal::traits<Derived>::MaxRowsAtCompileTime,
190
- internal::traits<Derived>::MaxColsAtCompileTime
191
- > PlainMatrix;
192
-
193
- /** The plain array type corresponding to this expression.
194
- * \sa PlainObject */
195
- typedef Array<typename internal::traits<Derived>::Scalar,
196
- internal::traits<Derived>::RowsAtCompileTime,
160
+
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".
164
+ */
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,
197
191
  internal::traits<Derived>::ColsAtCompileTime,
198
- AutoAlign | (internal::traits<Derived>::Flags&RowMajorBit ? RowMajor : ColMajor),
199
- internal::traits<Derived>::MaxRowsAtCompileTime,
200
- internal::traits<Derived>::MaxColsAtCompileTime
201
- > PlainArray;
202
-
203
- /** \brief The plain matrix or array type corresponding to this expression.
204
- *
205
- * This is not necessarily exactly the return type of eval(). In the case of plain matrices,
206
- * the return type of eval() is a const reference to a matrix, not a matrix! It is however guaranteed
207
- * that the return type of eval() is either PlainObject or const PlainObject&.
208
- */
209
- typedef typename internal::conditional<internal::is_same<typename internal::traits<Derived>::XprKind,MatrixXpr >::value,
210
- PlainMatrix, PlainArray>::type PlainObject;
211
-
212
- /** \returns the number of nonzero coefficients which is in practice the number
213
- * of stored coefficients. */
214
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
215
- inline Index nonZeros() const { return size(); }
216
-
217
- /** \returns the outer size.
218
- *
219
- * \note For a vector, this returns just 1. For a matrix (non-vector), this is the major dimension
220
- * with respect to the \ref TopicStorageOrders "storage order", i.e., the number of columns for a
221
- * column-major matrix, and the number of rows for a row-major matrix. */
222
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
223
- Index outerSize() const
224
- {
225
- return IsVectorAtCompileTime ? 1
226
- : int(IsRowMajor) ? this->rows() : this->cols();
227
- }
228
-
229
- /** \returns the inner size.
230
- *
231
- * \note For a vector, this is just the size. For a matrix (non-vector), this is the minor dimension
232
- * with respect to the \ref TopicStorageOrders "storage order", i.e., the number of rows for a
233
- * column-major matrix, and the number of columns for a row-major matrix. */
234
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
235
- Index innerSize() const
236
- {
237
- return IsVectorAtCompileTime ? this->size()
238
- : int(IsRowMajor) ? this->cols() : this->rows();
239
- }
240
-
241
- /** Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are
242
- * Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and does
243
- * nothing else.
244
- */
245
- EIGEN_DEVICE_FUNC
246
- void resize(Index newSize)
247
- {
248
- EIGEN_ONLY_USED_FOR_DEBUG(newSize);
249
- eigen_assert(newSize == this->size()
250
- && "DenseBase::resize() does not actually allow to resize.");
251
- }
252
- /** Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are
253
- * Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and does
254
- * nothing else.
255
- */
256
- EIGEN_DEVICE_FUNC
257
- void resize(Index rows, Index cols)
258
- {
259
- EIGEN_ONLY_USED_FOR_DEBUG(rows);
260
- EIGEN_ONLY_USED_FOR_DEBUG(cols);
261
- eigen_assert(rows == this->rows() && cols == this->cols()
262
- && "DenseBase::resize() does not actually allow to resize.");
263
- }
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
+ }
264
242
 
265
243
  #ifndef EIGEN_PARSED_BY_DOXYGEN
266
- /** \internal Represents a matrix with all coefficients equal to one another*/
267
- typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,PlainObject> ConstantReturnType;
268
- /** \internal \deprecated Represents a vector with linearly spaced coefficients that allows sequential access only. */
269
- EIGEN_DEPRECATED typedef CwiseNullaryOp<internal::linspaced_op<Scalar>,PlainObject> SequentialLinSpacedReturnType;
270
- /** \internal Represents a vector with linearly spaced coefficients that allows random access. */
271
- typedef CwiseNullaryOp<internal::linspaced_op<Scalar>,PlainObject> RandomAccessLinSpacedReturnType;
272
- /** \internal the return type of MatrixBase::eigenvalues() */
273
- typedef Matrix<typename NumTraits<typename internal::traits<Derived>::Scalar>::Real, internal::traits<Derived>::ColsAtCompileTime, 1> EigenvaluesReturnType;
274
-
275
- #endif // not EIGEN_PARSED_BY_DOXYGEN
276
-
277
- /** Copies \a other into *this. \returns a reference to *this. */
278
- template<typename OtherDerived>
279
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
280
- Derived& operator=(const DenseBase<OtherDerived>& other);
281
-
282
- /** Special case of the template operator=, in order to prevent the compiler
283
- * from generating a default operator= (issue hit with g++ 4.1)
284
- */
285
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
286
- Derived& operator=(const DenseBase& other);
287
-
288
- template<typename OtherDerived>
289
- EIGEN_DEVICE_FUNC
290
- Derived& operator=(const EigenBase<OtherDerived> &other);
291
-
292
- template<typename OtherDerived>
293
- EIGEN_DEVICE_FUNC
294
- Derived& operator+=(const EigenBase<OtherDerived> &other);
295
-
296
- template<typename OtherDerived>
297
- EIGEN_DEVICE_FUNC
298
- Derived& operator-=(const EigenBase<OtherDerived> &other);
299
-
300
- template<typename OtherDerived>
301
- EIGEN_DEVICE_FUNC
302
- Derived& operator=(const ReturnByValue<OtherDerived>& func);
303
-
304
- /** \internal
305
- * Copies \a other into *this without evaluating other. \returns a reference to *this. */
306
- template<typename OtherDerived>
307
- /** \deprecated */
308
- EIGEN_DEPRECATED EIGEN_DEVICE_FUNC
309
- Derived& lazyAssign(const DenseBase<OtherDerived>& other);
310
-
311
- EIGEN_DEVICE_FUNC
312
- CommaInitializer<Derived> operator<< (const Scalar& s);
313
-
314
- template<unsigned int Added,unsigned int Removed>
315
- /** \deprecated it now returns \c *this */
316
- EIGEN_DEPRECATED
317
- const Derived& flagged() const
318
- { return derived(); }
319
-
320
- template<typename OtherDerived>
321
- EIGEN_DEVICE_FUNC
322
- CommaInitializer<Derived> operator<< (const DenseBase<OtherDerived>& other);
323
-
324
- typedef Transpose<Derived> TransposeReturnType;
325
- EIGEN_DEVICE_FUNC
326
- TransposeReturnType transpose();
327
- typedef typename internal::add_const<Transpose<const Derived> >::type ConstTransposeReturnType;
328
- EIGEN_DEVICE_FUNC
329
- ConstTransposeReturnType transpose() const;
330
- EIGEN_DEVICE_FUNC
331
- void transposeInPlace();
332
-
333
- EIGEN_DEVICE_FUNC static const ConstantReturnType
334
- Constant(Index rows, Index cols, const Scalar& value);
335
- EIGEN_DEVICE_FUNC static const ConstantReturnType
336
- Constant(Index size, const Scalar& value);
337
- EIGEN_DEVICE_FUNC static const ConstantReturnType
338
- Constant(const Scalar& value);
339
-
340
- EIGEN_DEPRECATED EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
341
- LinSpaced(Sequential_t, Index size, const Scalar& low, const Scalar& high);
342
- EIGEN_DEPRECATED EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
343
- LinSpaced(Sequential_t, const Scalar& low, const Scalar& high);
344
-
345
- EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
346
- LinSpaced(Index size, const Scalar& low, const Scalar& high);
347
- EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
348
- LinSpaced(const Scalar& low, const Scalar& high);
349
-
350
- template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
351
- static const CwiseNullaryOp<CustomNullaryOp, PlainObject>
352
- NullaryExpr(Index rows, Index cols, const CustomNullaryOp& func);
353
- template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
354
- static const CwiseNullaryOp<CustomNullaryOp, PlainObject>
355
- NullaryExpr(Index size, const CustomNullaryOp& func);
356
- template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
357
- static const CwiseNullaryOp<CustomNullaryOp, PlainObject>
358
- NullaryExpr(const CustomNullaryOp& func);
359
-
360
- EIGEN_DEVICE_FUNC static const ConstantReturnType Zero(Index rows, Index cols);
361
- EIGEN_DEVICE_FUNC static const ConstantReturnType Zero(Index size);
362
- EIGEN_DEVICE_FUNC static const ConstantReturnType Zero();
363
- EIGEN_DEVICE_FUNC static const ConstantReturnType Ones(Index rows, Index cols);
364
- EIGEN_DEVICE_FUNC static const ConstantReturnType Ones(Index size);
365
- EIGEN_DEVICE_FUNC static const ConstantReturnType Ones();
366
-
367
- EIGEN_DEVICE_FUNC void fill(const Scalar& value);
368
- EIGEN_DEVICE_FUNC Derived& setConstant(const Scalar& value);
369
- EIGEN_DEVICE_FUNC Derived& setLinSpaced(Index size, const Scalar& low, const Scalar& high);
370
- EIGEN_DEVICE_FUNC Derived& setLinSpaced(const Scalar& low, const Scalar& high);
371
- EIGEN_DEVICE_FUNC Derived& setZero();
372
- EIGEN_DEVICE_FUNC Derived& setOnes();
373
- EIGEN_DEVICE_FUNC Derived& setRandom();
374
-
375
- template<typename OtherDerived> EIGEN_DEVICE_FUNC
376
- bool isApprox(const DenseBase<OtherDerived>& other,
377
- const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
378
- EIGEN_DEVICE_FUNC
379
- bool isMuchSmallerThan(const RealScalar& other,
380
- const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
381
- template<typename OtherDerived> EIGEN_DEVICE_FUNC
382
- bool isMuchSmallerThan(const DenseBase<OtherDerived>& other,
383
- const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
384
-
385
- EIGEN_DEVICE_FUNC bool isApproxToConstant(const Scalar& value, const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
386
- EIGEN_DEVICE_FUNC bool isConstant(const Scalar& value, const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
387
- EIGEN_DEVICE_FUNC bool isZero(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
388
- EIGEN_DEVICE_FUNC bool isOnes(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
389
-
390
- inline bool hasNaN() const;
391
- inline bool allFinite() const;
392
-
393
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
394
- Derived& operator*=(const Scalar& other);
395
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
396
- Derived& operator/=(const Scalar& other);
397
-
398
- typedef typename internal::add_const_on_value_type<typename internal::eval<Derived>::type>::type EvalReturnType;
399
- /** \returns the matrix or vector obtained by evaluating this expression.
400
- *
401
- * Notice that in the case of a plain matrix or vector (not an expression) this function just returns
402
- * a const reference, in order to avoid a useless copy.
403
- *
404
- * \warning Be careful with eval() and the auto C++ keyword, as detailed in this \link TopicPitfalls_auto_keyword page \endlink.
405
- */
406
- EIGEN_DEVICE_FUNC
407
- EIGEN_STRONG_INLINE EvalReturnType eval() const
408
- {
409
- // Even though MSVC does not honor strong inlining when the return type
410
- // is a dynamic matrix, we desperately need strong inlining for fixed
411
- // size types on MSVC.
412
- return typename internal::eval<Derived>::type(derived());
413
- }
414
-
415
- /** swaps *this with the expression \a other.
416
- *
417
- */
418
- template<typename OtherDerived>
419
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
420
- void swap(const DenseBase<OtherDerived>& other)
421
- {
422
- EIGEN_STATIC_ASSERT(!OtherDerived::IsPlainObjectBase,THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY);
423
- eigen_assert(rows()==other.rows() && cols()==other.cols());
424
- call_assignment(derived(), other.const_cast_derived(), internal::swap_assign_op<Scalar>());
425
- }
426
-
427
- /** swaps *this with the matrix or array \a other.
428
- *
429
- */
430
- template<typename OtherDerived>
431
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
432
- void swap(PlainObjectBase<OtherDerived>& other)
433
- {
434
- eigen_assert(rows()==other.rows() && cols()==other.cols());
435
- call_assignment(derived(), other.derived(), internal::swap_assign_op<Scalar>());
436
- }
437
-
438
- EIGEN_DEVICE_FUNC inline const NestByValue<Derived> nestByValue() const;
439
- EIGEN_DEVICE_FUNC inline const ForceAlignedAccess<Derived> forceAlignedAccess() const;
440
- EIGEN_DEVICE_FUNC inline ForceAlignedAccess<Derived> forceAlignedAccess();
441
- template<bool Enable> EIGEN_DEVICE_FUNC
442
- inline const typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type forceAlignedAccessIf() const;
443
- template<bool Enable> EIGEN_DEVICE_FUNC
444
- inline typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type forceAlignedAccessIf();
445
-
446
- EIGEN_DEVICE_FUNC Scalar sum() const;
447
- EIGEN_DEVICE_FUNC Scalar mean() const;
448
- EIGEN_DEVICE_FUNC Scalar trace() const;
449
-
450
- EIGEN_DEVICE_FUNC Scalar prod() const;
451
-
452
- template<int NaNPropagation>
453
- EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar minCoeff() const;
454
- template<int NaNPropagation>
455
- EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar maxCoeff() const;
456
-
457
-
458
- // By default, the fastest version with undefined NaN propagation semantics is
459
- // used.
460
- // TODO(rmlarsen): Replace with default template argument when we move to
461
- // c++11 or beyond.
462
- EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar minCoeff() const {
463
- return minCoeff<PropagateFast>();
464
- }
465
- EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar maxCoeff() const {
466
- return maxCoeff<PropagateFast>();
467
- }
468
-
469
- template<int NaNPropagation, typename IndexType>
470
- EIGEN_DEVICE_FUNC
471
- typename internal::traits<Derived>::Scalar minCoeff(IndexType* row, IndexType* col) const;
472
- template<int NaNPropagation, typename IndexType>
473
- EIGEN_DEVICE_FUNC
474
- typename internal::traits<Derived>::Scalar maxCoeff(IndexType* row, IndexType* col) const;
475
- template<int NaNPropagation, typename IndexType>
476
- EIGEN_DEVICE_FUNC
477
- typename internal::traits<Derived>::Scalar minCoeff(IndexType* index) const;
478
- template<int NaNPropagation, typename IndexType>
479
- EIGEN_DEVICE_FUNC
480
- typename internal::traits<Derived>::Scalar maxCoeff(IndexType* index) const;
481
-
482
- // TODO(rmlarsen): Replace these methods with a default template argument.
483
- template<typename IndexType>
484
- EIGEN_DEVICE_FUNC inline
485
- typename internal::traits<Derived>::Scalar minCoeff(IndexType* row, IndexType* col) const {
486
- return minCoeff<PropagateFast>(row, col);
487
- }
488
- template<typename IndexType>
489
- EIGEN_DEVICE_FUNC inline
490
- typename internal::traits<Derived>::Scalar maxCoeff(IndexType* row, IndexType* col) const {
491
- return maxCoeff<PropagateFast>(row, col);
492
- }
493
- template<typename IndexType>
494
- EIGEN_DEVICE_FUNC inline
495
- typename internal::traits<Derived>::Scalar minCoeff(IndexType* index) const {
496
- return minCoeff<PropagateFast>(index);
497
- }
498
- template<typename IndexType>
499
- EIGEN_DEVICE_FUNC inline
500
- typename internal::traits<Derived>::Scalar maxCoeff(IndexType* index) const {
501
- return maxCoeff<PropagateFast>(index);
502
- }
503
-
504
- template<typename BinaryOp>
505
- EIGEN_DEVICE_FUNC
506
- Scalar redux(const BinaryOp& func) const;
507
-
508
- template<typename Visitor>
509
- EIGEN_DEVICE_FUNC
510
- void visit(Visitor& func) const;
511
-
512
- /** \returns a WithFormat proxy object allowing to print a matrix the with given
513
- * format \a fmt.
514
- *
515
- * See class IOFormat for some examples.
516
- *
517
- * \sa class IOFormat, class WithFormat
518
- */
519
- inline const WithFormat<Derived> format(const IOFormat& fmt) const
520
- {
521
- return WithFormat<Derived>(derived(), fmt);
522
- }
523
-
524
- /** \returns the unique coefficient of a 1x1 expression */
525
- EIGEN_DEVICE_FUNC
526
- CoeffReturnType value() const
527
- {
528
- EIGEN_STATIC_ASSERT_SIZE_1x1(Derived)
529
- eigen_assert(this->rows() == 1 && this->cols() == 1);
530
- return derived().coeff(0,0);
531
- }
532
-
533
- EIGEN_DEVICE_FUNC bool all() const;
534
- EIGEN_DEVICE_FUNC bool any() const;
535
- EIGEN_DEVICE_FUNC Index count() const;
536
-
537
- typedef VectorwiseOp<Derived, Horizontal> RowwiseReturnType;
538
- typedef const VectorwiseOp<const Derived, Horizontal> ConstRowwiseReturnType;
539
- typedef VectorwiseOp<Derived, Vertical> ColwiseReturnType;
540
- typedef const VectorwiseOp<const Derived, Vertical> ConstColwiseReturnType;
541
-
542
- /** \returns a VectorwiseOp wrapper of *this for broadcasting and partial reductions
543
- *
544
- * Example: \include MatrixBase_rowwise.cpp
545
- * Output: \verbinclude MatrixBase_rowwise.out
546
- *
547
- * \sa colwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
548
- */
549
- //Code moved here due to a CUDA compiler bug
550
- EIGEN_DEVICE_FUNC inline ConstRowwiseReturnType rowwise() const {
551
- return ConstRowwiseReturnType(derived());
552
- }
553
- EIGEN_DEVICE_FUNC RowwiseReturnType rowwise();
554
-
555
- /** \returns a VectorwiseOp wrapper of *this broadcasting and partial reductions
556
- *
557
- * Example: \include MatrixBase_colwise.cpp
558
- * Output: \verbinclude MatrixBase_colwise.out
559
- *
560
- * \sa rowwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
561
- */
562
- EIGEN_DEVICE_FUNC inline ConstColwiseReturnType colwise() const {
563
- return ConstColwiseReturnType(derived());
564
- }
565
- EIGEN_DEVICE_FUNC ColwiseReturnType colwise();
566
-
567
- typedef CwiseNullaryOp<internal::scalar_random_op<Scalar>,PlainObject> RandomReturnType;
568
- static const RandomReturnType Random(Index rows, Index cols);
569
- static const RandomReturnType Random(Index size);
570
- static const RandomReturnType Random();
571
-
572
- template<typename ThenDerived,typename ElseDerived>
573
- inline EIGEN_DEVICE_FUNC const Select<Derived,ThenDerived,ElseDerived>
574
- select(const DenseBase<ThenDerived>& thenMatrix,
575
- const DenseBase<ElseDerived>& elseMatrix) const;
576
-
577
- template<typename ThenDerived>
578
- inline EIGEN_DEVICE_FUNC const Select<Derived,ThenDerived, typename ThenDerived::ConstantReturnType>
579
- select(const DenseBase<ThenDerived>& thenMatrix, const typename ThenDerived::Scalar& elseScalar) const;
580
-
581
- template<typename ElseDerived>
582
- inline EIGEN_DEVICE_FUNC const Select<Derived, typename ElseDerived::ConstantReturnType, ElseDerived >
583
- select(const typename ElseDerived::Scalar& thenScalar, const DenseBase<ElseDerived>& elseMatrix) const;
584
-
585
- template<int p> RealScalar lpNorm() const;
586
-
587
- template<int RowFactor, int ColFactor>
588
- EIGEN_DEVICE_FUNC
589
- const Replicate<Derived,RowFactor,ColFactor> replicate() const;
590
- /**
591
- * \return an expression of the replication of \c *this
592
- *
593
- * Example: \include MatrixBase_replicate_int_int.cpp
594
- * Output: \verbinclude MatrixBase_replicate_int_int.out
595
- *
596
- * \sa VectorwiseOp::replicate(), DenseBase::replicate<int,int>(), class Replicate
597
- */
598
- //Code moved here due to a CUDA compiler bug
599
- EIGEN_DEVICE_FUNC
600
- const Replicate<Derived, Dynamic, Dynamic> replicate(Index rowFactor, Index colFactor) const
601
- {
602
- return Replicate<Derived, Dynamic, Dynamic>(derived(), rowFactor, colFactor);
603
- }
604
-
605
- typedef Reverse<Derived, BothDirections> ReverseReturnType;
606
- typedef const Reverse<const Derived, BothDirections> ConstReverseReturnType;
607
- EIGEN_DEVICE_FUNC ReverseReturnType reverse();
608
- /** This is the const version of reverse(). */
609
- //Code moved here due to a CUDA compiler bug
610
- EIGEN_DEVICE_FUNC ConstReverseReturnType reverse() const
611
- {
612
- return ConstReverseReturnType(derived());
613
- }
614
- EIGEN_DEVICE_FUNC void reverseInPlace();
615
-
616
- #ifdef EIGEN_PARSED_BY_DOXYGEN
617
- /** STL-like <a href="https://en.cppreference.com/w/cpp/named_req/RandomAccessIterator">RandomAccessIterator</a>
618
- * iterator type as returned by the begin() and end() methods.
619
- */
620
- typedef random_access_iterator_type iterator;
621
- /** This is the const version of iterator (aka read-only) */
622
- typedef random_access_iterator_type const_iterator;
623
- #else
624
- typedef typename internal::conditional< (Flags&DirectAccessBit)==DirectAccessBit,
625
- internal::pointer_based_stl_iterator<Derived>,
626
- internal::generic_randaccess_stl_iterator<Derived>
627
- >::type iterator_type;
628
-
629
- typedef typename internal::conditional< (Flags&DirectAccessBit)==DirectAccessBit,
630
- internal::pointer_based_stl_iterator<const Derived>,
631
- internal::generic_randaccess_stl_iterator<const Derived>
632
- >::type const_iterator_type;
633
-
634
- // Stl-style iterators are supported only for vectors.
635
-
636
- typedef typename internal::conditional< IsVectorAtCompileTime,
637
- iterator_type,
638
- void
639
- >::type iterator;
640
-
641
- typedef typename internal::conditional< IsVectorAtCompileTime,
642
- const_iterator_type,
643
- void
644
- >::type const_iterator;
645
- #endif
646
-
647
- inline iterator begin();
648
- inline const_iterator begin() const;
649
- inline const_iterator cbegin() const;
650
- inline iterator end();
651
- inline const_iterator end() const;
652
- inline const_iterator cend() const;
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;
653
611
 
654
612
  #define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::DenseBase
655
613
  #define EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
656
614
  #define EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(COND)
657
- #define EIGEN_DOC_UNARY_ADDONS(X,Y)
658
- # include "../plugins/CommonCwiseUnaryOps.h"
659
- # include "../plugins/BlockMethods.h"
660
- # include "../plugins/IndexedViewMethods.h"
661
- # include "../plugins/ReshapedMethods.h"
662
- # ifdef EIGEN_DENSEBASE_PLUGIN
663
- # include EIGEN_DENSEBASE_PLUGIN
664
- # 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
665
623
  #undef EIGEN_CURRENT_STORAGE_BASE_CLASS
666
624
  #undef EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
667
625
  #undef EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF
668
626
  #undef EIGEN_DOC_UNARY_ADDONS
669
627
 
670
- // disable the use of evalTo for dense objects with a nice compilation error
671
- template<typename Dest>
672
- EIGEN_DEVICE_FUNC
673
- inline void evalTo(Dest& ) const
674
- {
675
- EIGEN_STATIC_ASSERT((internal::is_same<Dest,void>::value),THE_EVAL_EVALTO_FUNCTION_SHOULD_NEVER_BE_CALLED_FOR_DENSE_OBJECTS);
676
- }
677
-
678
- protected:
679
- EIGEN_DEFAULT_COPY_CONSTRUCTOR(DenseBase)
680
- /** Default constructor. Do nothing. */
681
- EIGEN_DEVICE_FUNC DenseBase()
682
- {
683
- /* Just checks for self-consistency of the flags.
684
- * Only do it when debugging Eigen, as this borders on paranoia and could slow compilation down
685
- */
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. */
686
638
  #ifdef EIGEN_INTERNAL_DEBUGGING
687
- EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1, int(IsRowMajor))
688
- && EIGEN_IMPLIES(MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1, int(!IsRowMajor))),
689
- 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;
690
650
  #endif
691
- }
692
651
 
693
- private:
694
- EIGEN_DEVICE_FUNC explicit DenseBase(int);
695
- EIGEN_DEVICE_FUNC DenseBase(int,int);
696
- 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>&);
697
657
  };
698
658
 
699
- } // 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
700
672
 
701
- #endif // EIGEN_DENSEBASE_H
673
+ #endif // EIGEN_DENSEBASE_H