@smake/eigen 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -20
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +187 -120
  6. package/eigen/Eigen/Eigenvalues +16 -13
  7. package/eigen/Eigen/Geometry +18 -18
  8. package/eigen/Eigen/Householder +9 -7
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -13
  11. package/eigen/Eigen/KLUSupport +23 -21
  12. package/eigen/Eigen/LU +15 -16
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -51
  15. package/eigen/Eigen/PaStiXSupport +23 -21
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -20
  18. package/eigen/Eigen/QtAlignedMalloc +5 -12
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -17
  21. package/eigen/Eigen/Sparse +1 -2
  22. package/eigen/Eigen/SparseCholesky +18 -15
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +9 -9
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
  37. package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
  42. package/eigen/Eigen/src/Core/Array.h +329 -370
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
  48. package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
  49. package/eigen/Eigen/src/Core/Block.h +371 -390
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
  53. package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
  59. package/eigen/Eigen/src/Core/DenseBase.h +630 -658
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
  61. package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +168 -207
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +167 -217
  67. package/eigen/Eigen/src/Core/EigenBase.h +74 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
  75. package/eigen/Eigen/src/Core/IO.h +131 -156
  76. package/eigen/Eigen/src/Core/IndexedView.h +209 -125
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +50 -59
  80. package/eigen/Eigen/src/Core/Map.h +123 -141
  81. package/eigen/Eigen/src/Core/MapBase.h +255 -282
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
  84. package/eigen/Eigen/src/Core/Matrix.h +463 -494
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
  86. package/eigen/Eigen/src/Core/NestByValue.h +58 -52
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -86
  88. package/eigen/Eigen/src/Core/NumTraits.h +206 -206
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
  92. package/eigen/Eigen/src/Core/Product.h +246 -130
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
  94. package/eigen/Eigen/src/Core/Random.h +153 -164
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +334 -314
  98. package/eigen/Eigen/src/Core/Ref.h +259 -257
  99. package/eigen/Eigen/src/Core/Replicate.h +92 -104
  100. package/eigen/Eigen/src/Core/Reshaped.h +215 -271
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +133 -148
  103. package/eigen/Eigen/src/Core/Select.h +68 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +88 -102
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
  109. package/eigen/Eigen/src/Core/SolverBase.h +132 -133
  110. package/eigen/Eigen/src/Core/StableNorm.h +113 -147
  111. package/eigen/Eigen/src/Core/StlIterators.h +404 -248
  112. package/eigen/Eigen/src/Core/Stride.h +90 -92
  113. package/eigen/Eigen/src/Core/Swap.h +70 -39
  114. package/eigen/Eigen/src/Core/Transpose.h +258 -295
  115. package/eigen/Eigen/src/Core/Transpositions.h +270 -333
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
  119. package/eigen/Eigen/src/Core/Visitor.h +464 -308
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
  217. package/eigen/Eigen/src/Core/util/Constants.h +297 -262
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
  226. package/eigen/Eigen/src/Core/util/Macros.h +655 -773
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +970 -748
  229. package/eigen/Eigen/src/Core/util/Meta.h +581 -633
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
  264. package/eigen/Eigen/src/Geometry/Transform.h +858 -936
  265. package/eigen/Eigen/src/Geometry/Translation.h +94 -92
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
  269. package/eigen/Eigen/src/Householder/Householder.h +102 -124
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
  285. package/eigen/Eigen/src/LU/Determinant.h +50 -69
  286. package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/package.json +1 -1
  409. package/eigen/COPYING.APACHE +0 -203
  410. package/eigen/COPYING.BSD +0 -26
  411. package/eigen/COPYING.GPL +0 -674
  412. package/eigen/COPYING.LGPL +0 -502
  413. package/eigen/COPYING.MINPACK +0 -51
  414. package/eigen/COPYING.MPL2 +0 -373
  415. package/eigen/COPYING.README +0 -18
  416. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
  417. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
  418. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
  419. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
  420. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  421. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  422. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  423. package/eigen/Eigen/src/misc/lapack.h +0 -152
  424. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
  425. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
  426. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  427. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
  428. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  429. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
  430. package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
  431. package/eigen/README.md +0 -5
@@ -10,105 +10,175 @@
10
10
  #ifndef EIGEN_STLITERATORS_H
11
11
  #define EIGEN_STLITERATORS_H
12
12
 
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
13
16
  namespace Eigen {
14
17
 
15
18
  namespace internal {
16
19
 
17
- template<typename IteratorType>
20
+ template <typename IteratorType>
18
21
  struct indexed_based_stl_iterator_traits;
19
22
 
20
- template<typename Derived>
21
- class indexed_based_stl_iterator_base
22
- {
23
- protected:
23
+ template <typename Derived>
24
+ class indexed_based_stl_iterator_base {
25
+ protected:
24
26
  typedef indexed_based_stl_iterator_traits<Derived> traits;
25
27
  typedef typename traits::XprType XprType;
26
28
  typedef indexed_based_stl_iterator_base<typename traits::non_const_iterator> non_const_iterator;
27
29
  typedef indexed_based_stl_iterator_base<typename traits::const_iterator> const_iterator;
28
- typedef typename internal::conditional<internal::is_const<XprType>::value,non_const_iterator,const_iterator>::type other_iterator;
30
+ typedef std::conditional_t<internal::is_const<XprType>::value, non_const_iterator, const_iterator> other_iterator;
29
31
  // NOTE: in C++03 we cannot declare friend classes through typedefs because we need to write friend class:
30
32
  friend class indexed_based_stl_iterator_base<typename traits::const_iterator>;
31
33
  friend class indexed_based_stl_iterator_base<typename traits::non_const_iterator>;
32
- public:
34
+
35
+ public:
33
36
  typedef Index difference_type;
34
37
  typedef std::random_access_iterator_tag iterator_category;
35
38
 
36
- indexed_based_stl_iterator_base() EIGEN_NO_THROW : mp_xpr(0), m_index(0) {}
37
- indexed_based_stl_iterator_base(XprType& xpr, Index index) EIGEN_NO_THROW : mp_xpr(&xpr), m_index(index) {}
39
+ indexed_based_stl_iterator_base() noexcept : mp_xpr(0), m_index(0) {}
40
+ indexed_based_stl_iterator_base(XprType& xpr, Index index) noexcept : mp_xpr(&xpr), m_index(index) {}
38
41
 
39
- indexed_based_stl_iterator_base(const non_const_iterator& other) EIGEN_NO_THROW
40
- : mp_xpr(other.mp_xpr), m_index(other.m_index)
41
- {}
42
+ indexed_based_stl_iterator_base(const non_const_iterator& other) noexcept
43
+ : mp_xpr(other.mp_xpr), m_index(other.m_index) {}
42
44
 
43
- indexed_based_stl_iterator_base& operator=(const non_const_iterator& other)
44
- {
45
+ indexed_based_stl_iterator_base& operator=(const non_const_iterator& other) {
45
46
  mp_xpr = other.mp_xpr;
46
47
  m_index = other.m_index;
47
48
  return *this;
48
49
  }
49
50
 
50
- Derived& operator++() { ++m_index; return derived(); }
51
- Derived& operator--() { --m_index; return derived(); }
51
+ Derived& operator++() {
52
+ ++m_index;
53
+ return derived();
54
+ }
55
+ Derived& operator--() {
56
+ --m_index;
57
+ return derived();
58
+ }
59
+
60
+ Derived operator++(int) {
61
+ Derived prev(derived());
62
+ operator++();
63
+ return prev;
64
+ }
65
+ Derived operator--(int) {
66
+ Derived prev(derived());
67
+ operator--();
68
+ return prev;
69
+ }
52
70
 
53
- Derived operator++(int) { Derived prev(derived()); operator++(); return prev;}
54
- Derived operator--(int) { Derived prev(derived()); operator--(); return prev;}
71
+ friend Derived operator+(const indexed_based_stl_iterator_base& a, Index b) {
72
+ Derived ret(a.derived());
73
+ ret += b;
74
+ return ret;
75
+ }
76
+ friend Derived operator-(const indexed_based_stl_iterator_base& a, Index b) {
77
+ Derived ret(a.derived());
78
+ ret -= b;
79
+ return ret;
80
+ }
81
+ friend Derived operator+(Index a, const indexed_based_stl_iterator_base& b) {
82
+ Derived ret(b.derived());
83
+ ret += a;
84
+ return ret;
85
+ }
86
+ friend Derived operator-(Index a, const indexed_based_stl_iterator_base& b) {
87
+ Derived ret(b.derived());
88
+ ret -= a;
89
+ return ret;
90
+ }
55
91
 
56
- friend Derived operator+(const indexed_based_stl_iterator_base& a, Index b) { Derived ret(a.derived()); ret += b; return ret; }
57
- friend Derived operator-(const indexed_based_stl_iterator_base& a, Index b) { Derived ret(a.derived()); ret -= b; return ret; }
58
- friend Derived operator+(Index a, const indexed_based_stl_iterator_base& b) { Derived ret(b.derived()); ret += a; return ret; }
59
- friend Derived operator-(Index a, const indexed_based_stl_iterator_base& b) { Derived ret(b.derived()); ret -= a; return ret; }
60
-
61
- Derived& operator+=(Index b) { m_index += b; return derived(); }
62
- Derived& operator-=(Index b) { m_index -= b; return derived(); }
92
+ Derived& operator+=(Index b) {
93
+ m_index += b;
94
+ return derived();
95
+ }
96
+ Derived& operator-=(Index b) {
97
+ m_index -= b;
98
+ return derived();
99
+ }
63
100
 
64
- difference_type operator-(const indexed_based_stl_iterator_base& other) const
65
- {
101
+ difference_type operator-(const indexed_based_stl_iterator_base& other) const {
66
102
  eigen_assert(mp_xpr == other.mp_xpr);
67
103
  return m_index - other.m_index;
68
104
  }
69
105
 
70
- difference_type operator-(const other_iterator& other) const
71
- {
106
+ difference_type operator-(const other_iterator& other) const {
72
107
  eigen_assert(mp_xpr == other.mp_xpr);
73
108
  return m_index - other.m_index;
74
109
  }
75
110
 
76
- bool operator==(const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index == other.m_index; }
77
- bool operator!=(const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index != other.m_index; }
78
- bool operator< (const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index < other.m_index; }
79
- bool operator<=(const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index <= other.m_index; }
80
- bool operator> (const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index > other.m_index; }
81
- bool operator>=(const indexed_based_stl_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index >= other.m_index; }
82
-
83
- bool operator==(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index == other.m_index; }
84
- bool operator!=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index != other.m_index; }
85
- bool operator< (const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index < other.m_index; }
86
- bool operator<=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index <= other.m_index; }
87
- bool operator> (const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index > other.m_index; }
88
- bool operator>=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index >= other.m_index; }
111
+ bool operator==(const indexed_based_stl_iterator_base& other) const {
112
+ eigen_assert(mp_xpr == other.mp_xpr);
113
+ return m_index == other.m_index;
114
+ }
115
+ bool operator!=(const indexed_based_stl_iterator_base& other) const {
116
+ eigen_assert(mp_xpr == other.mp_xpr);
117
+ return m_index != other.m_index;
118
+ }
119
+ bool operator<(const indexed_based_stl_iterator_base& other) const {
120
+ eigen_assert(mp_xpr == other.mp_xpr);
121
+ return m_index < other.m_index;
122
+ }
123
+ bool operator<=(const indexed_based_stl_iterator_base& other) const {
124
+ eigen_assert(mp_xpr == other.mp_xpr);
125
+ return m_index <= other.m_index;
126
+ }
127
+ bool operator>(const indexed_based_stl_iterator_base& other) const {
128
+ eigen_assert(mp_xpr == other.mp_xpr);
129
+ return m_index > other.m_index;
130
+ }
131
+ bool operator>=(const indexed_based_stl_iterator_base& other) const {
132
+ eigen_assert(mp_xpr == other.mp_xpr);
133
+ return m_index >= other.m_index;
134
+ }
89
135
 
90
- protected:
136
+ bool operator==(const other_iterator& other) const {
137
+ eigen_assert(mp_xpr == other.mp_xpr);
138
+ return m_index == other.m_index;
139
+ }
140
+ bool operator!=(const other_iterator& other) const {
141
+ eigen_assert(mp_xpr == other.mp_xpr);
142
+ return m_index != other.m_index;
143
+ }
144
+ bool operator<(const other_iterator& other) const {
145
+ eigen_assert(mp_xpr == other.mp_xpr);
146
+ return m_index < other.m_index;
147
+ }
148
+ bool operator<=(const other_iterator& other) const {
149
+ eigen_assert(mp_xpr == other.mp_xpr);
150
+ return m_index <= other.m_index;
151
+ }
152
+ bool operator>(const other_iterator& other) const {
153
+ eigen_assert(mp_xpr == other.mp_xpr);
154
+ return m_index > other.m_index;
155
+ }
156
+ bool operator>=(const other_iterator& other) const {
157
+ eigen_assert(mp_xpr == other.mp_xpr);
158
+ return m_index >= other.m_index;
159
+ }
91
160
 
161
+ protected:
92
162
  Derived& derived() { return static_cast<Derived&>(*this); }
93
163
  const Derived& derived() const { return static_cast<const Derived&>(*this); }
94
164
 
95
- XprType *mp_xpr;
165
+ XprType* mp_xpr;
96
166
  Index m_index;
97
167
  };
98
168
 
99
- template<typename Derived>
100
- class indexed_based_stl_reverse_iterator_base
101
- {
102
- protected:
169
+ template <typename Derived>
170
+ class indexed_based_stl_reverse_iterator_base {
171
+ protected:
103
172
  typedef indexed_based_stl_iterator_traits<Derived> traits;
104
173
  typedef typename traits::XprType XprType;
105
174
  typedef indexed_based_stl_reverse_iterator_base<typename traits::non_const_iterator> non_const_iterator;
106
175
  typedef indexed_based_stl_reverse_iterator_base<typename traits::const_iterator> const_iterator;
107
- typedef typename internal::conditional<internal::is_const<XprType>::value,non_const_iterator,const_iterator>::type other_iterator;
176
+ typedef std::conditional_t<internal::is_const<XprType>::value, non_const_iterator, const_iterator> other_iterator;
108
177
  // NOTE: in C++03 we cannot declare friend classes through typedefs because we need to write friend class:
109
178
  friend class indexed_based_stl_reverse_iterator_base<typename traits::const_iterator>;
110
179
  friend class indexed_based_stl_reverse_iterator_base<typename traits::non_const_iterator>;
111
- public:
180
+
181
+ public:
112
182
  typedef Index difference_type;
113
183
  typedef std::random_access_iterator_tag iterator_category;
114
184
 
@@ -116,165 +186,264 @@ public:
116
186
  indexed_based_stl_reverse_iterator_base(XprType& xpr, Index index) : mp_xpr(&xpr), m_index(index) {}
117
187
 
118
188
  indexed_based_stl_reverse_iterator_base(const non_const_iterator& other)
119
- : mp_xpr(other.mp_xpr), m_index(other.m_index)
120
- {}
189
+ : mp_xpr(other.mp_xpr), m_index(other.m_index) {}
121
190
 
122
- indexed_based_stl_reverse_iterator_base& operator=(const non_const_iterator& other)
123
- {
191
+ indexed_based_stl_reverse_iterator_base& operator=(const non_const_iterator& other) {
124
192
  mp_xpr = other.mp_xpr;
125
193
  m_index = other.m_index;
126
194
  return *this;
127
195
  }
128
196
 
129
- Derived& operator++() { --m_index; return derived(); }
130
- Derived& operator--() { ++m_index; return derived(); }
197
+ Derived& operator++() {
198
+ --m_index;
199
+ return derived();
200
+ }
201
+ Derived& operator--() {
202
+ ++m_index;
203
+ return derived();
204
+ }
131
205
 
132
- Derived operator++(int) { Derived prev(derived()); operator++(); return prev;}
133
- Derived operator--(int) { Derived prev(derived()); operator--(); return prev;}
206
+ Derived operator++(int) {
207
+ Derived prev(derived());
208
+ operator++();
209
+ return prev;
210
+ }
211
+ Derived operator--(int) {
212
+ Derived prev(derived());
213
+ operator--();
214
+ return prev;
215
+ }
134
216
 
135
- friend Derived operator+(const indexed_based_stl_reverse_iterator_base& a, Index b) { Derived ret(a.derived()); ret += b; return ret; }
136
- friend Derived operator-(const indexed_based_stl_reverse_iterator_base& a, Index b) { Derived ret(a.derived()); ret -= b; return ret; }
137
- friend Derived operator+(Index a, const indexed_based_stl_reverse_iterator_base& b) { Derived ret(b.derived()); ret += a; return ret; }
138
- friend Derived operator-(Index a, const indexed_based_stl_reverse_iterator_base& b) { Derived ret(b.derived()); ret -= a; return ret; }
139
-
140
- Derived& operator+=(Index b) { m_index -= b; return derived(); }
141
- Derived& operator-=(Index b) { m_index += b; return derived(); }
217
+ friend Derived operator+(const indexed_based_stl_reverse_iterator_base& a, Index b) {
218
+ Derived ret(a.derived());
219
+ ret += b;
220
+ return ret;
221
+ }
222
+ friend Derived operator-(const indexed_based_stl_reverse_iterator_base& a, Index b) {
223
+ Derived ret(a.derived());
224
+ ret -= b;
225
+ return ret;
226
+ }
227
+ friend Derived operator+(Index a, const indexed_based_stl_reverse_iterator_base& b) {
228
+ Derived ret(b.derived());
229
+ ret += a;
230
+ return ret;
231
+ }
232
+ friend Derived operator-(Index a, const indexed_based_stl_reverse_iterator_base& b) {
233
+ Derived ret(b.derived());
234
+ ret -= a;
235
+ return ret;
236
+ }
142
237
 
143
- difference_type operator-(const indexed_based_stl_reverse_iterator_base& other) const
144
- {
238
+ Derived& operator+=(Index b) {
239
+ m_index -= b;
240
+ return derived();
241
+ }
242
+ Derived& operator-=(Index b) {
243
+ m_index += b;
244
+ return derived();
245
+ }
246
+
247
+ difference_type operator-(const indexed_based_stl_reverse_iterator_base& other) const {
145
248
  eigen_assert(mp_xpr == other.mp_xpr);
146
249
  return other.m_index - m_index;
147
250
  }
148
251
 
149
- difference_type operator-(const other_iterator& other) const
150
- {
252
+ difference_type operator-(const other_iterator& other) const {
151
253
  eigen_assert(mp_xpr == other.mp_xpr);
152
254
  return other.m_index - m_index;
153
255
  }
154
256
 
155
- bool operator==(const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index == other.m_index; }
156
- bool operator!=(const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index != other.m_index; }
157
- bool operator< (const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index > other.m_index; }
158
- bool operator<=(const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index >= other.m_index; }
159
- bool operator> (const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index < other.m_index; }
160
- bool operator>=(const indexed_based_stl_reverse_iterator_base& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index <= other.m_index; }
161
-
162
- bool operator==(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index == other.m_index; }
163
- bool operator!=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index != other.m_index; }
164
- bool operator< (const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index > other.m_index; }
165
- bool operator<=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index >= other.m_index; }
166
- bool operator> (const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index < other.m_index; }
167
- bool operator>=(const other_iterator& other) const { eigen_assert(mp_xpr == other.mp_xpr); return m_index <= other.m_index; }
257
+ bool operator==(const indexed_based_stl_reverse_iterator_base& other) const {
258
+ eigen_assert(mp_xpr == other.mp_xpr);
259
+ return m_index == other.m_index;
260
+ }
261
+ bool operator!=(const indexed_based_stl_reverse_iterator_base& other) const {
262
+ eigen_assert(mp_xpr == other.mp_xpr);
263
+ return m_index != other.m_index;
264
+ }
265
+ bool operator<(const indexed_based_stl_reverse_iterator_base& other) const {
266
+ eigen_assert(mp_xpr == other.mp_xpr);
267
+ return m_index > other.m_index;
268
+ }
269
+ bool operator<=(const indexed_based_stl_reverse_iterator_base& other) const {
270
+ eigen_assert(mp_xpr == other.mp_xpr);
271
+ return m_index >= other.m_index;
272
+ }
273
+ bool operator>(const indexed_based_stl_reverse_iterator_base& other) const {
274
+ eigen_assert(mp_xpr == other.mp_xpr);
275
+ return m_index < other.m_index;
276
+ }
277
+ bool operator>=(const indexed_based_stl_reverse_iterator_base& other) const {
278
+ eigen_assert(mp_xpr == other.mp_xpr);
279
+ return m_index <= other.m_index;
280
+ }
168
281
 
169
- protected:
282
+ bool operator==(const other_iterator& other) const {
283
+ eigen_assert(mp_xpr == other.mp_xpr);
284
+ return m_index == other.m_index;
285
+ }
286
+ bool operator!=(const other_iterator& other) const {
287
+ eigen_assert(mp_xpr == other.mp_xpr);
288
+ return m_index != other.m_index;
289
+ }
290
+ bool operator<(const other_iterator& other) const {
291
+ eigen_assert(mp_xpr == other.mp_xpr);
292
+ return m_index > other.m_index;
293
+ }
294
+ bool operator<=(const other_iterator& other) const {
295
+ eigen_assert(mp_xpr == other.mp_xpr);
296
+ return m_index >= other.m_index;
297
+ }
298
+ bool operator>(const other_iterator& other) const {
299
+ eigen_assert(mp_xpr == other.mp_xpr);
300
+ return m_index < other.m_index;
301
+ }
302
+ bool operator>=(const other_iterator& other) const {
303
+ eigen_assert(mp_xpr == other.mp_xpr);
304
+ return m_index <= other.m_index;
305
+ }
170
306
 
307
+ protected:
171
308
  Derived& derived() { return static_cast<Derived&>(*this); }
172
309
  const Derived& derived() const { return static_cast<const Derived&>(*this); }
173
310
 
174
- XprType *mp_xpr;
311
+ XprType* mp_xpr;
175
312
  Index m_index;
176
313
  };
177
314
 
178
- template<typename XprType>
179
- class pointer_based_stl_iterator
180
- {
181
- enum { is_lvalue = internal::is_lvalue<XprType>::value };
182
- typedef pointer_based_stl_iterator<typename internal::remove_const<XprType>::type> non_const_iterator;
183
- typedef pointer_based_stl_iterator<typename internal::add_const<XprType>::type> const_iterator;
184
- typedef typename internal::conditional<internal::is_const<XprType>::value,non_const_iterator,const_iterator>::type other_iterator;
315
+ template <typename XprType>
316
+ class pointer_based_stl_iterator {
317
+ enum { is_lvalue = internal::is_lvalue<XprType>::value };
318
+ typedef pointer_based_stl_iterator<std::remove_const_t<XprType>> non_const_iterator;
319
+ typedef pointer_based_stl_iterator<std::add_const_t<XprType>> const_iterator;
320
+ typedef std::conditional_t<internal::is_const<XprType>::value, non_const_iterator, const_iterator> other_iterator;
185
321
  // NOTE: in C++03 we cannot declare friend classes through typedefs because we need to write friend class:
186
- friend class pointer_based_stl_iterator<typename internal::add_const<XprType>::type>;
187
- friend class pointer_based_stl_iterator<typename internal::remove_const<XprType>::type>;
188
- public:
322
+ friend class pointer_based_stl_iterator<std::add_const_t<XprType>>;
323
+ friend class pointer_based_stl_iterator<std::remove_const_t<XprType>>;
324
+
325
+ public:
189
326
  typedef Index difference_type;
190
327
  typedef typename XprType::Scalar value_type;
328
+ #if EIGEN_COMP_CXXVER >= 20 && defined(__cpp_lib_concepts) && __cpp_lib_concepts >= 202002L
329
+ typedef std::conditional_t<XprType::InnerStrideAtCompileTime == 1, std::contiguous_iterator_tag,
330
+ std::random_access_iterator_tag>
331
+ iterator_category;
332
+ #else
191
333
  typedef std::random_access_iterator_tag iterator_category;
192
- typedef typename internal::conditional<bool(is_lvalue), value_type*, const value_type*>::type pointer;
193
- typedef typename internal::conditional<bool(is_lvalue), value_type&, const value_type&>::type reference;
334
+ #endif
335
+ typedef std::conditional_t<bool(is_lvalue), value_type*, const value_type*> pointer;
336
+ typedef std::conditional_t<bool(is_lvalue), value_type&, const value_type&> reference;
194
337
 
195
-
196
- pointer_based_stl_iterator() EIGEN_NO_THROW : m_ptr(0) {}
197
- pointer_based_stl_iterator(XprType& xpr, Index index) EIGEN_NO_THROW : m_incr(xpr.innerStride())
198
- {
338
+ pointer_based_stl_iterator() noexcept : m_ptr(0) {}
339
+ pointer_based_stl_iterator(XprType& xpr, Index index) noexcept : m_incr(xpr.innerStride()) {
199
340
  m_ptr = xpr.data() + index * m_incr.value();
200
341
  }
201
342
 
202
- pointer_based_stl_iterator(const non_const_iterator& other) EIGEN_NO_THROW
203
- : m_ptr(other.m_ptr), m_incr(other.m_incr)
204
- {}
343
+ pointer_based_stl_iterator(const non_const_iterator& other) noexcept : m_ptr(other.m_ptr), m_incr(other.m_incr) {}
205
344
 
206
- pointer_based_stl_iterator& operator=(const non_const_iterator& other) EIGEN_NO_THROW
207
- {
345
+ pointer_based_stl_iterator& operator=(const non_const_iterator& other) noexcept {
208
346
  m_ptr = other.m_ptr;
209
347
  m_incr.setValue(other.m_incr);
210
348
  return *this;
211
349
  }
212
350
 
213
- reference operator*() const { return *m_ptr; }
214
- reference operator[](Index i) const { return *(m_ptr+i*m_incr.value()); }
215
- pointer operator->() const { return m_ptr; }
351
+ reference operator*() const { return *m_ptr; }
352
+ reference operator[](Index i) const { return *(m_ptr + i * m_incr.value()); }
353
+ pointer operator->() const { return m_ptr; }
354
+
355
+ pointer_based_stl_iterator& operator++() {
356
+ m_ptr += m_incr.value();
357
+ return *this;
358
+ }
359
+ pointer_based_stl_iterator& operator--() {
360
+ m_ptr -= m_incr.value();
361
+ return *this;
362
+ }
216
363
 
217
- pointer_based_stl_iterator& operator++() { m_ptr += m_incr.value(); return *this; }
218
- pointer_based_stl_iterator& operator--() { m_ptr -= m_incr.value(); return *this; }
364
+ pointer_based_stl_iterator operator++(int) {
365
+ pointer_based_stl_iterator prev(*this);
366
+ operator++();
367
+ return prev;
368
+ }
369
+ pointer_based_stl_iterator operator--(int) {
370
+ pointer_based_stl_iterator prev(*this);
371
+ operator--();
372
+ return prev;
373
+ }
219
374
 
220
- pointer_based_stl_iterator operator++(int) { pointer_based_stl_iterator prev(*this); operator++(); return prev;}
221
- pointer_based_stl_iterator operator--(int) { pointer_based_stl_iterator prev(*this); operator--(); return prev;}
375
+ friend pointer_based_stl_iterator operator+(const pointer_based_stl_iterator& a, Index b) {
376
+ pointer_based_stl_iterator ret(a);
377
+ ret += b;
378
+ return ret;
379
+ }
380
+ friend pointer_based_stl_iterator operator-(const pointer_based_stl_iterator& a, Index b) {
381
+ pointer_based_stl_iterator ret(a);
382
+ ret -= b;
383
+ return ret;
384
+ }
385
+ friend pointer_based_stl_iterator operator+(Index a, const pointer_based_stl_iterator& b) {
386
+ pointer_based_stl_iterator ret(b);
387
+ ret += a;
388
+ return ret;
389
+ }
390
+ friend pointer_based_stl_iterator operator-(Index a, const pointer_based_stl_iterator& b) {
391
+ pointer_based_stl_iterator ret(b);
392
+ ret -= a;
393
+ return ret;
394
+ }
222
395
 
223
- friend pointer_based_stl_iterator operator+(const pointer_based_stl_iterator& a, Index b) { pointer_based_stl_iterator ret(a); ret += b; return ret; }
224
- friend pointer_based_stl_iterator operator-(const pointer_based_stl_iterator& a, Index b) { pointer_based_stl_iterator ret(a); ret -= b; return ret; }
225
- friend pointer_based_stl_iterator operator+(Index a, const pointer_based_stl_iterator& b) { pointer_based_stl_iterator ret(b); ret += a; return ret; }
226
- friend pointer_based_stl_iterator operator-(Index a, const pointer_based_stl_iterator& b) { pointer_based_stl_iterator ret(b); ret -= a; return ret; }
227
-
228
- pointer_based_stl_iterator& operator+=(Index b) { m_ptr += b*m_incr.value(); return *this; }
229
- pointer_based_stl_iterator& operator-=(Index b) { m_ptr -= b*m_incr.value(); return *this; }
396
+ pointer_based_stl_iterator& operator+=(Index b) {
397
+ m_ptr += b * m_incr.value();
398
+ return *this;
399
+ }
400
+ pointer_based_stl_iterator& operator-=(Index b) {
401
+ m_ptr -= b * m_incr.value();
402
+ return *this;
403
+ }
230
404
 
231
405
  difference_type operator-(const pointer_based_stl_iterator& other) const {
232
- return (m_ptr - other.m_ptr)/m_incr.value();
406
+ return (m_ptr - other.m_ptr) / m_incr.value();
233
407
  }
234
408
 
235
- difference_type operator-(const other_iterator& other) const {
236
- return (m_ptr - other.m_ptr)/m_incr.value();
237
- }
409
+ difference_type operator-(const other_iterator& other) const { return (m_ptr - other.m_ptr) / m_incr.value(); }
238
410
 
239
411
  bool operator==(const pointer_based_stl_iterator& other) const { return m_ptr == other.m_ptr; }
240
412
  bool operator!=(const pointer_based_stl_iterator& other) const { return m_ptr != other.m_ptr; }
241
- bool operator< (const pointer_based_stl_iterator& other) const { return m_ptr < other.m_ptr; }
413
+ bool operator<(const pointer_based_stl_iterator& other) const { return m_ptr < other.m_ptr; }
242
414
  bool operator<=(const pointer_based_stl_iterator& other) const { return m_ptr <= other.m_ptr; }
243
- bool operator> (const pointer_based_stl_iterator& other) const { return m_ptr > other.m_ptr; }
415
+ bool operator>(const pointer_based_stl_iterator& other) const { return m_ptr > other.m_ptr; }
244
416
  bool operator>=(const pointer_based_stl_iterator& other) const { return m_ptr >= other.m_ptr; }
245
417
 
246
418
  bool operator==(const other_iterator& other) const { return m_ptr == other.m_ptr; }
247
419
  bool operator!=(const other_iterator& other) const { return m_ptr != other.m_ptr; }
248
- bool operator< (const other_iterator& other) const { return m_ptr < other.m_ptr; }
420
+ bool operator<(const other_iterator& other) const { return m_ptr < other.m_ptr; }
249
421
  bool operator<=(const other_iterator& other) const { return m_ptr <= other.m_ptr; }
250
- bool operator> (const other_iterator& other) const { return m_ptr > other.m_ptr; }
422
+ bool operator>(const other_iterator& other) const { return m_ptr > other.m_ptr; }
251
423
  bool operator>=(const other_iterator& other) const { return m_ptr >= other.m_ptr; }
252
424
 
253
- protected:
254
-
425
+ protected:
255
426
  pointer m_ptr;
256
427
  internal::variable_if_dynamic<Index, XprType::InnerStrideAtCompileTime> m_incr;
257
428
  };
258
429
 
259
- template<typename _XprType>
260
- struct indexed_based_stl_iterator_traits<generic_randaccess_stl_iterator<_XprType> >
261
- {
262
- typedef _XprType XprType;
263
- typedef generic_randaccess_stl_iterator<typename internal::remove_const<XprType>::type> non_const_iterator;
264
- typedef generic_randaccess_stl_iterator<typename internal::add_const<XprType>::type> const_iterator;
430
+ template <typename XprType_>
431
+ struct indexed_based_stl_iterator_traits<generic_randaccess_stl_iterator<XprType_>> {
432
+ typedef XprType_ XprType;
433
+ typedef generic_randaccess_stl_iterator<std::remove_const_t<XprType>> non_const_iterator;
434
+ typedef generic_randaccess_stl_iterator<std::add_const_t<XprType>> const_iterator;
265
435
  };
266
436
 
267
- template<typename XprType>
268
- class generic_randaccess_stl_iterator : public indexed_based_stl_iterator_base<generic_randaccess_stl_iterator<XprType> >
269
- {
270
- public:
437
+ template <typename XprType>
438
+ class generic_randaccess_stl_iterator
439
+ : public indexed_based_stl_iterator_base<generic_randaccess_stl_iterator<XprType>> {
440
+ public:
271
441
  typedef typename XprType::Scalar value_type;
272
442
 
273
- protected:
274
-
443
+ protected:
275
444
  enum {
276
445
  has_direct_access = (internal::traits<XprType>::Flags & DirectAccessBit) ? 1 : 0,
277
- is_lvalue = internal::is_lvalue<XprType>::value
446
+ is_lvalue = internal::is_lvalue<XprType>::value
278
447
  };
279
448
 
280
449
  typedef indexed_based_stl_iterator_base<generic_randaccess_stl_iterator> Base;
@@ -283,181 +452,168 @@ protected:
283
452
 
284
453
  // TODO currently const Transpose/Reshape expressions never returns const references,
285
454
  // so lets return by value too.
286
- //typedef typename internal::conditional<bool(has_direct_access), const value_type&, const value_type>::type read_only_ref_t;
455
+ // typedef std::conditional_t<bool(has_direct_access), const value_type&, const value_type> read_only_ref_t;
287
456
  typedef const value_type read_only_ref_t;
288
457
 
289
- public:
290
-
291
- typedef typename internal::conditional<bool(is_lvalue), value_type *, const value_type *>::type pointer;
292
- typedef typename internal::conditional<bool(is_lvalue), value_type&, read_only_ref_t>::type reference;
293
-
458
+ public:
459
+ typedef std::conditional_t<bool(is_lvalue), value_type*, const value_type*> pointer;
460
+ typedef std::conditional_t<bool(is_lvalue), value_type&, read_only_ref_t> reference;
461
+
294
462
  generic_randaccess_stl_iterator() : Base() {}
295
- generic_randaccess_stl_iterator(XprType& xpr, Index index) : Base(xpr,index) {}
463
+ generic_randaccess_stl_iterator(XprType& xpr, Index index) : Base(xpr, index) {}
296
464
  generic_randaccess_stl_iterator(const typename Base::non_const_iterator& other) : Base(other) {}
297
465
  using Base::operator=;
298
466
 
299
- reference operator*() const { return (*mp_xpr)(m_index); }
300
- reference operator[](Index i) const { return (*mp_xpr)(m_index+i); }
301
- pointer operator->() const { return &((*mp_xpr)(m_index)); }
467
+ reference operator*() const { return (*mp_xpr)(m_index); }
468
+ reference operator[](Index i) const { return (*mp_xpr)(m_index + i); }
469
+ pointer operator->() const { return &((*mp_xpr)(m_index)); }
302
470
  };
303
471
 
304
- template<typename _XprType, DirectionType Direction>
305
- struct indexed_based_stl_iterator_traits<subvector_stl_iterator<_XprType,Direction> >
306
- {
307
- typedef _XprType XprType;
308
- typedef subvector_stl_iterator<typename internal::remove_const<XprType>::type, Direction> non_const_iterator;
309
- typedef subvector_stl_iterator<typename internal::add_const<XprType>::type, Direction> const_iterator;
472
+ template <typename XprType_, DirectionType Direction>
473
+ struct indexed_based_stl_iterator_traits<subvector_stl_iterator<XprType_, Direction>> {
474
+ typedef XprType_ XprType;
475
+ typedef subvector_stl_iterator<std::remove_const_t<XprType>, Direction> non_const_iterator;
476
+ typedef subvector_stl_iterator<std::add_const_t<XprType>, Direction> const_iterator;
310
477
  };
311
478
 
312
- template<typename XprType, DirectionType Direction>
313
- class subvector_stl_iterator : public indexed_based_stl_iterator_base<subvector_stl_iterator<XprType,Direction> >
314
- {
315
- protected:
316
-
317
- enum { is_lvalue = internal::is_lvalue<XprType>::value };
479
+ template <typename XprType, DirectionType Direction>
480
+ class subvector_stl_iterator : public indexed_based_stl_iterator_base<subvector_stl_iterator<XprType, Direction>> {
481
+ protected:
482
+ enum { is_lvalue = internal::is_lvalue<XprType>::value };
318
483
 
319
484
  typedef indexed_based_stl_iterator_base<subvector_stl_iterator> Base;
320
485
  using Base::m_index;
321
486
  using Base::mp_xpr;
322
487
 
323
- typedef typename internal::conditional<Direction==Vertical,typename XprType::ColXpr,typename XprType::RowXpr>::type SubVectorType;
324
- typedef typename internal::conditional<Direction==Vertical,typename XprType::ConstColXpr,typename XprType::ConstRowXpr>::type ConstSubVectorType;
325
-
488
+ typedef std::conditional_t<Direction == Vertical, typename XprType::ColXpr, typename XprType::RowXpr> SubVectorType;
489
+ typedef std::conditional_t<Direction == Vertical, typename XprType::ConstColXpr, typename XprType::ConstRowXpr>
490
+ ConstSubVectorType;
326
491
 
327
- public:
328
- typedef typename internal::conditional<bool(is_lvalue), SubVectorType, ConstSubVectorType>::type reference;
492
+ public:
493
+ typedef std::conditional_t<bool(is_lvalue), SubVectorType, ConstSubVectorType> reference;
329
494
  typedef typename reference::PlainObject value_type;
330
495
 
331
- private:
332
- class subvector_stl_iterator_ptr
333
- {
334
- public:
335
- subvector_stl_iterator_ptr(const reference &subvector) : m_subvector(subvector) {}
336
- reference* operator->() { return &m_subvector; }
337
- private:
338
- reference m_subvector;
496
+ private:
497
+ class subvector_stl_iterator_ptr {
498
+ public:
499
+ subvector_stl_iterator_ptr(const reference& subvector) : m_subvector(subvector) {}
500
+ reference* operator->() { return &m_subvector; }
501
+
502
+ private:
503
+ reference m_subvector;
339
504
  };
340
- public:
341
505
 
506
+ public:
342
507
  typedef subvector_stl_iterator_ptr pointer;
343
-
508
+
344
509
  subvector_stl_iterator() : Base() {}
345
- subvector_stl_iterator(XprType& xpr, Index index) : Base(xpr,index) {}
510
+ subvector_stl_iterator(XprType& xpr, Index index) : Base(xpr, index) {}
346
511
 
347
- reference operator*() const { return (*mp_xpr).template subVector<Direction>(m_index); }
348
- reference operator[](Index i) const { return (*mp_xpr).template subVector<Direction>(m_index+i); }
349
- pointer operator->() const { return (*mp_xpr).template subVector<Direction>(m_index); }
512
+ reference operator*() const { return (*mp_xpr).template subVector<Direction>(m_index); }
513
+ reference operator[](Index i) const { return (*mp_xpr).template subVector<Direction>(m_index + i); }
514
+ pointer operator->() const { return (*mp_xpr).template subVector<Direction>(m_index); }
350
515
  };
351
516
 
352
- template<typename _XprType, DirectionType Direction>
353
- struct indexed_based_stl_iterator_traits<subvector_stl_reverse_iterator<_XprType,Direction> >
354
- {
355
- typedef _XprType XprType;
356
- typedef subvector_stl_reverse_iterator<typename internal::remove_const<XprType>::type, Direction> non_const_iterator;
357
- typedef subvector_stl_reverse_iterator<typename internal::add_const<XprType>::type, Direction> const_iterator;
517
+ template <typename XprType_, DirectionType Direction>
518
+ struct indexed_based_stl_iterator_traits<subvector_stl_reverse_iterator<XprType_, Direction>> {
519
+ typedef XprType_ XprType;
520
+ typedef subvector_stl_reverse_iterator<std::remove_const_t<XprType>, Direction> non_const_iterator;
521
+ typedef subvector_stl_reverse_iterator<std::add_const_t<XprType>, Direction> const_iterator;
358
522
  };
359
523
 
360
- template<typename XprType, DirectionType Direction>
361
- class subvector_stl_reverse_iterator : public indexed_based_stl_reverse_iterator_base<subvector_stl_reverse_iterator<XprType,Direction> >
362
- {
363
- protected:
364
-
365
- enum { is_lvalue = internal::is_lvalue<XprType>::value };
524
+ template <typename XprType, DirectionType Direction>
525
+ class subvector_stl_reverse_iterator
526
+ : public indexed_based_stl_reverse_iterator_base<subvector_stl_reverse_iterator<XprType, Direction>> {
527
+ protected:
528
+ enum { is_lvalue = internal::is_lvalue<XprType>::value };
366
529
 
367
530
  typedef indexed_based_stl_reverse_iterator_base<subvector_stl_reverse_iterator> Base;
368
531
  using Base::m_index;
369
532
  using Base::mp_xpr;
370
533
 
371
- typedef typename internal::conditional<Direction==Vertical,typename XprType::ColXpr,typename XprType::RowXpr>::type SubVectorType;
372
- typedef typename internal::conditional<Direction==Vertical,typename XprType::ConstColXpr,typename XprType::ConstRowXpr>::type ConstSubVectorType;
373
-
534
+ typedef std::conditional_t<Direction == Vertical, typename XprType::ColXpr, typename XprType::RowXpr> SubVectorType;
535
+ typedef std::conditional_t<Direction == Vertical, typename XprType::ConstColXpr, typename XprType::ConstRowXpr>
536
+ ConstSubVectorType;
374
537
 
375
- public:
376
- typedef typename internal::conditional<bool(is_lvalue), SubVectorType, ConstSubVectorType>::type reference;
538
+ public:
539
+ typedef std::conditional_t<bool(is_lvalue), SubVectorType, ConstSubVectorType> reference;
377
540
  typedef typename reference::PlainObject value_type;
378
541
 
379
- private:
380
- class subvector_stl_reverse_iterator_ptr
381
- {
382
- public:
383
- subvector_stl_reverse_iterator_ptr(const reference &subvector) : m_subvector(subvector) {}
384
- reference* operator->() { return &m_subvector; }
385
- private:
386
- reference m_subvector;
542
+ private:
543
+ class subvector_stl_reverse_iterator_ptr {
544
+ public:
545
+ subvector_stl_reverse_iterator_ptr(const reference& subvector) : m_subvector(subvector) {}
546
+ reference* operator->() { return &m_subvector; }
547
+
548
+ private:
549
+ reference m_subvector;
387
550
  };
388
- public:
389
551
 
552
+ public:
390
553
  typedef subvector_stl_reverse_iterator_ptr pointer;
391
-
554
+
392
555
  subvector_stl_reverse_iterator() : Base() {}
393
- subvector_stl_reverse_iterator(XprType& xpr, Index index) : Base(xpr,index) {}
556
+ subvector_stl_reverse_iterator(XprType& xpr, Index index) : Base(xpr, index) {}
394
557
 
395
- reference operator*() const { return (*mp_xpr).template subVector<Direction>(m_index); }
396
- reference operator[](Index i) const { return (*mp_xpr).template subVector<Direction>(m_index+i); }
397
- pointer operator->() const { return (*mp_xpr).template subVector<Direction>(m_index); }
558
+ reference operator*() const { return (*mp_xpr).template subVector<Direction>(m_index); }
559
+ reference operator[](Index i) const { return (*mp_xpr).template subVector<Direction>(m_index + i); }
560
+ pointer operator->() const { return (*mp_xpr).template subVector<Direction>(m_index); }
398
561
  };
399
562
 
400
- } // namespace internal
401
-
563
+ } // namespace internal
402
564
 
403
565
  /** returns an iterator to the first element of the 1D vector or array
404
- * \only_for_vectors
405
- * \sa end(), cbegin()
406
- */
407
- template<typename Derived>
408
- inline typename DenseBase<Derived>::iterator DenseBase<Derived>::begin()
409
- {
566
+ * \only_for_vectors
567
+ * \sa end(), cbegin()
568
+ */
569
+ template <typename Derived>
570
+ inline typename DenseBase<Derived>::iterator DenseBase<Derived>::begin() {
410
571
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
411
572
  return iterator(derived(), 0);
412
573
  }
413
574
 
414
575
  /** const version of begin() */
415
- template<typename Derived>
416
- inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::begin() const
417
- {
576
+ template <typename Derived>
577
+ inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::begin() const {
418
578
  return cbegin();
419
579
  }
420
580
 
421
581
  /** returns a read-only const_iterator to the first element of the 1D vector or array
422
- * \only_for_vectors
423
- * \sa cend(), begin()
424
- */
425
- template<typename Derived>
426
- inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::cbegin() const
427
- {
582
+ * \only_for_vectors
583
+ * \sa cend(), begin()
584
+ */
585
+ template <typename Derived>
586
+ inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::cbegin() const {
428
587
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
429
588
  return const_iterator(derived(), 0);
430
589
  }
431
590
 
432
591
  /** returns an iterator to the element following the last element of the 1D vector or array
433
- * \only_for_vectors
434
- * \sa begin(), cend()
435
- */
436
- template<typename Derived>
437
- inline typename DenseBase<Derived>::iterator DenseBase<Derived>::end()
438
- {
592
+ * \only_for_vectors
593
+ * \sa begin(), cend()
594
+ */
595
+ template <typename Derived>
596
+ inline typename DenseBase<Derived>::iterator DenseBase<Derived>::end() {
439
597
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
440
598
  return iterator(derived(), size());
441
599
  }
442
600
 
443
601
  /** const version of end() */
444
- template<typename Derived>
445
- inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::end() const
446
- {
602
+ template <typename Derived>
603
+ inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::end() const {
447
604
  return cend();
448
605
  }
449
606
 
450
607
  /** returns a read-only const_iterator to the element following the last element of the 1D vector or array
451
- * \only_for_vectors
452
- * \sa begin(), cend()
453
- */
454
- template<typename Derived>
455
- inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::cend() const
456
- {
608
+ * \only_for_vectors
609
+ * \sa begin(), cend()
610
+ */
611
+ template <typename Derived>
612
+ inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::cend() const {
457
613
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
458
614
  return const_iterator(derived(), size());
459
615
  }
460
616
 
461
- } // namespace Eigen
617
+ } // namespace Eigen
462
618
 
463
- #endif // EIGEN_STLITERATORS_H
619
+ #endif // EIGEN_STLITERATORS_H