@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,20 +11,20 @@
11
11
  #ifndef EIGEN_RETURNBYVALUE_H
12
12
  #define EIGEN_RETURNBYVALUE_H
13
13
 
14
+ // IWYU pragma: private
15
+ #include "./InternalHeaderCheck.h"
16
+
14
17
  namespace Eigen {
15
18
 
16
19
  namespace internal {
17
20
 
18
- template<typename Derived>
19
- struct traits<ReturnByValue<Derived> >
20
- : public traits<typename traits<Derived>::ReturnType>
21
- {
21
+ template <typename Derived>
22
+ struct traits<ReturnByValue<Derived> > : public traits<typename traits<Derived>::ReturnType> {
22
23
  enum {
23
24
  // We're disabling the DirectAccess because e.g. the constructor of
24
25
  // the Block-with-DirectAccess expression requires to have a coeffRef method.
25
26
  // Also, we don't want to have to implement the stride stuff.
26
- Flags = (traits<typename traits<Derived>::ReturnType>::Flags
27
- | EvalBeforeNestingBit) & ~DirectAccessBit
27
+ Flags = (traits<typename traits<Derived>::ReturnType>::Flags | EvalBeforeNestingBit) & ~DirectAccessBit
28
28
  };
29
29
  };
30
30
 
@@ -35,54 +35,50 @@ struct traits<ReturnByValue<Derived> >
35
35
  * FIXME: I don't understand why we need this specialization: isn't this taken care of by the EvalBeforeNestingBit ??
36
36
  * Answer: EvalBeforeNestingBit should be deprecated since we have the evaluators
37
37
  */
38
- template<typename Derived,int n,typename PlainObject>
39
- struct nested_eval<ReturnByValue<Derived>, n, PlainObject>
40
- {
38
+ template <typename Derived, int n, typename PlainObject>
39
+ struct nested_eval<ReturnByValue<Derived>, n, PlainObject> {
41
40
  typedef typename traits<Derived>::ReturnType type;
42
41
  };
43
42
 
44
- } // end namespace internal
43
+ } // end namespace internal
45
44
 
46
45
  /** \class ReturnByValue
47
- * \ingroup Core_Module
48
- *
49
- */
50
- template<typename Derived> class ReturnByValue
51
- : public internal::dense_xpr_base< ReturnByValue<Derived> >::type, internal::no_assignment_operator
52
- {
53
- public:
54
- typedef typename internal::traits<Derived>::ReturnType ReturnType;
55
-
56
- typedef typename internal::dense_xpr_base<ReturnByValue>::type Base;
57
- EIGEN_DENSE_PUBLIC_INTERFACE(ReturnByValue)
58
-
59
- template<typename Dest>
60
- EIGEN_DEVICE_FUNC
61
- inline void evalTo(Dest& dst) const
62
- { static_cast<const Derived*>(this)->evalTo(dst); }
63
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
64
- inline Index rows() const EIGEN_NOEXCEPT { return static_cast<const Derived*>(this)->rows(); }
65
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
66
- inline Index cols() const EIGEN_NOEXCEPT { return static_cast<const Derived*>(this)->cols(); }
46
+ * \ingroup Core_Module
47
+ *
48
+ */
49
+ template <typename Derived>
50
+ class ReturnByValue : public internal::dense_xpr_base<ReturnByValue<Derived> >::type, internal::no_assignment_operator {
51
+ public:
52
+ typedef typename internal::traits<Derived>::ReturnType ReturnType;
53
+
54
+ typedef typename internal::dense_xpr_base<ReturnByValue>::type Base;
55
+ EIGEN_DENSE_PUBLIC_INTERFACE(ReturnByValue)
56
+
57
+ template <typename Dest>
58
+ EIGEN_DEVICE_FUNC inline void evalTo(Dest& dst) const {
59
+ static_cast<const Derived*>(this)->evalTo(dst);
60
+ }
61
+ EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return static_cast<const Derived*>(this)->rows(); }
62
+ EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return static_cast<const Derived*>(this)->cols(); }
67
63
 
68
64
  #ifndef EIGEN_PARSED_BY_DOXYGEN
69
- #define Unusable YOU_ARE_TRYING_TO_ACCESS_A_SINGLE_COEFFICIENT_IN_A_SPECIAL_EXPRESSION_WHERE_THAT_IS_NOT_ALLOWED_BECAUSE_THAT_WOULD_BE_INEFFICIENT
70
- class Unusable{
71
- Unusable(const Unusable&) {}
72
- Unusable& operator=(const Unusable&) {return *this;}
73
- };
74
- const Unusable& coeff(Index) const { return *reinterpret_cast<const Unusable*>(this); }
75
- const Unusable& coeff(Index,Index) const { return *reinterpret_cast<const Unusable*>(this); }
76
- Unusable& coeffRef(Index) { return *reinterpret_cast<Unusable*>(this); }
77
- Unusable& coeffRef(Index,Index) { return *reinterpret_cast<Unusable*>(this); }
65
+ #define Unusable \
66
+ YOU_ARE_TRYING_TO_ACCESS_A_SINGLE_COEFFICIENT_IN_A_SPECIAL_EXPRESSION_WHERE_THAT_IS_NOT_ALLOWED_BECAUSE_THAT_WOULD_BE_INEFFICIENT
67
+ class Unusable {
68
+ Unusable(const Unusable&) {}
69
+ Unusable& operator=(const Unusable&) { return *this; }
70
+ };
71
+ const Unusable& coeff(Index) const { return *reinterpret_cast<const Unusable*>(this); }
72
+ const Unusable& coeff(Index, Index) const { return *reinterpret_cast<const Unusable*>(this); }
73
+ Unusable& coeffRef(Index) { return *reinterpret_cast<Unusable*>(this); }
74
+ Unusable& coeffRef(Index, Index) { return *reinterpret_cast<Unusable*>(this); }
78
75
  #undef Unusable
79
76
  #endif
80
77
  };
81
78
 
82
- template<typename Derived>
83
- template<typename OtherDerived>
84
- EIGEN_DEVICE_FUNC Derived& DenseBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other)
85
- {
79
+ template <typename Derived>
80
+ template <typename OtherDerived>
81
+ EIGEN_DEVICE_FUNC Derived& DenseBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other) {
86
82
  other.evalTo(derived());
87
83
  return derived();
88
84
  }
@@ -93,27 +89,23 @@ namespace internal {
93
89
  // when a ReturnByValue expression is assigned, the evaluator is not constructed.
94
90
  // TODO: Finalize port to new regime; ReturnByValue should not exist in the expression world
95
91
 
96
- template<typename Derived>
97
- struct evaluator<ReturnByValue<Derived> >
98
- : public evaluator<typename internal::traits<Derived>::ReturnType>
99
- {
92
+ template <typename Derived>
93
+ struct evaluator<ReturnByValue<Derived> > : public evaluator<typename internal::traits<Derived>::ReturnType> {
100
94
  typedef ReturnByValue<Derived> XprType;
101
95
  typedef typename internal::traits<Derived>::ReturnType PlainObject;
102
96
  typedef evaluator<PlainObject> Base;
103
97
 
104
- EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr)
105
- : m_result(xpr.rows(), xpr.cols())
106
- {
107
- ::new (static_cast<Base*>(this)) Base(m_result);
98
+ EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : m_result(xpr.rows(), xpr.cols()) {
99
+ internal::construct_at<Base>(this, m_result);
108
100
  xpr.evalTo(m_result);
109
101
  }
110
102
 
111
- protected:
103
+ protected:
112
104
  PlainObject m_result;
113
105
  };
114
106
 
115
- } // end namespace internal
107
+ } // end namespace internal
116
108
 
117
- } // end namespace Eigen
109
+ } // end namespace Eigen
118
110
 
119
- #endif // EIGEN_RETURNBYVALUE_H
111
+ #endif // EIGEN_RETURNBYVALUE_H
@@ -12,206 +12,191 @@
12
12
  #ifndef EIGEN_REVERSE_H
13
13
  #define EIGEN_REVERSE_H
14
14
 
15
+ // IWYU pragma: private
16
+ #include "./InternalHeaderCheck.h"
17
+
15
18
  namespace Eigen {
16
19
 
17
20
  namespace internal {
18
21
 
19
- template<typename MatrixType, int Direction>
20
- struct traits<Reverse<MatrixType, Direction> >
21
- : traits<MatrixType>
22
- {
22
+ template <typename MatrixType, int Direction>
23
+ struct traits<Reverse<MatrixType, Direction> > : traits<MatrixType> {
23
24
  typedef typename MatrixType::Scalar Scalar;
24
25
  typedef typename traits<MatrixType>::StorageKind StorageKind;
25
26
  typedef typename traits<MatrixType>::XprKind XprKind;
26
27
  typedef typename ref_selector<MatrixType>::type MatrixTypeNested;
27
- typedef typename remove_reference<MatrixTypeNested>::type _MatrixTypeNested;
28
+ typedef std::remove_reference_t<MatrixTypeNested> MatrixTypeNested_;
28
29
  enum {
29
30
  RowsAtCompileTime = MatrixType::RowsAtCompileTime,
30
31
  ColsAtCompileTime = MatrixType::ColsAtCompileTime,
31
32
  MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
32
33
  MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
33
- Flags = _MatrixTypeNested::Flags & (RowMajorBit | LvalueBit)
34
+ Flags = MatrixTypeNested_::Flags & (RowMajorBit | LvalueBit)
34
35
  };
35
36
  };
36
37
 
37
- template<typename PacketType, bool ReversePacket> struct reverse_packet_cond
38
- {
38
+ template <typename PacketType, bool ReversePacket>
39
+ struct reverse_packet_cond {
39
40
  static inline PacketType run(const PacketType& x) { return preverse(x); }
40
41
  };
41
42
 
42
- template<typename PacketType> struct reverse_packet_cond<PacketType,false>
43
- {
43
+ template <typename PacketType>
44
+ struct reverse_packet_cond<PacketType, false> {
44
45
  static inline PacketType run(const PacketType& x) { return x; }
45
46
  };
46
47
 
47
- } // end namespace internal
48
+ } // end namespace internal
48
49
 
49
50
  /** \class Reverse
50
- * \ingroup Core_Module
51
- *
52
- * \brief Expression of the reverse of a vector or matrix
53
- *
54
- * \tparam MatrixType the type of the object of which we are taking the reverse
55
- * \tparam Direction defines the direction of the reverse operation, can be Vertical, Horizontal, or BothDirections
56
- *
57
- * This class represents an expression of the reverse of a vector.
58
- * It is the return type of MatrixBase::reverse() and VectorwiseOp::reverse()
59
- * and most of the time this is the only way it is used.
60
- *
61
- * \sa MatrixBase::reverse(), VectorwiseOp::reverse()
62
- */
63
- template<typename MatrixType, int Direction> class Reverse
64
- : public internal::dense_xpr_base< Reverse<MatrixType, Direction> >::type
65
- {
66
- public:
67
-
68
- typedef typename internal::dense_xpr_base<Reverse>::type Base;
69
- EIGEN_DENSE_PUBLIC_INTERFACE(Reverse)
70
- typedef typename internal::remove_all<MatrixType>::type NestedExpression;
71
- using Base::IsRowMajor;
72
-
73
- protected:
74
- enum {
75
- PacketSize = internal::packet_traits<Scalar>::size,
76
- IsColMajor = !IsRowMajor,
77
- ReverseRow = (Direction == Vertical) || (Direction == BothDirections),
78
- ReverseCol = (Direction == Horizontal) || (Direction == BothDirections),
79
- OffsetRow = ReverseRow && IsColMajor ? PacketSize : 1,
80
- OffsetCol = ReverseCol && IsRowMajor ? PacketSize : 1,
81
- ReversePacket = (Direction == BothDirections)
82
- || ((Direction == Vertical) && IsColMajor)
83
- || ((Direction == Horizontal) && IsRowMajor)
84
- };
85
- typedef internal::reverse_packet_cond<PacketScalar,ReversePacket> reverse_packet;
86
- public:
87
-
88
- EIGEN_DEVICE_FUNC explicit inline Reverse(const MatrixType& matrix) : m_matrix(matrix) { }
89
-
90
- EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Reverse)
91
-
92
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
93
- inline Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows(); }
94
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
95
- inline Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols(); }
96
-
97
- EIGEN_DEVICE_FUNC inline Index innerStride() const
98
- {
99
- return -m_matrix.innerStride();
100
- }
51
+ * \ingroup Core_Module
52
+ *
53
+ * \brief Expression of the reverse of a vector or matrix
54
+ *
55
+ * \tparam MatrixType the type of the object of which we are taking the reverse
56
+ * \tparam Direction defines the direction of the reverse operation, can be Vertical, Horizontal, or BothDirections
57
+ *
58
+ * This class represents an expression of the reverse of a vector.
59
+ * It is the return type of MatrixBase::reverse() and VectorwiseOp::reverse()
60
+ * and most of the time this is the only way it is used.
61
+ *
62
+ * \sa MatrixBase::reverse(), VectorwiseOp::reverse()
63
+ */
64
+ template <typename MatrixType, int Direction>
65
+ class Reverse : public internal::dense_xpr_base<Reverse<MatrixType, Direction> >::type {
66
+ public:
67
+ typedef typename internal::dense_xpr_base<Reverse>::type Base;
68
+ EIGEN_DENSE_PUBLIC_INTERFACE(Reverse)
69
+ typedef internal::remove_all_t<MatrixType> NestedExpression;
70
+ using Base::IsRowMajor;
71
+
72
+ protected:
73
+ enum {
74
+ PacketSize = internal::packet_traits<Scalar>::size,
75
+ IsColMajor = !IsRowMajor,
76
+ ReverseRow = (Direction == Vertical) || (Direction == BothDirections),
77
+ ReverseCol = (Direction == Horizontal) || (Direction == BothDirections),
78
+ OffsetRow = ReverseRow && IsColMajor ? PacketSize : 1,
79
+ OffsetCol = ReverseCol && IsRowMajor ? PacketSize : 1,
80
+ ReversePacket = (Direction == BothDirections) || ((Direction == Vertical) && IsColMajor) ||
81
+ ((Direction == Horizontal) && IsRowMajor)
82
+ };
83
+ typedef internal::reverse_packet_cond<PacketScalar, ReversePacket> reverse_packet;
101
84
 
102
- EIGEN_DEVICE_FUNC const typename internal::remove_all<typename MatrixType::Nested>::type&
103
- nestedExpression() const
104
- {
105
- return m_matrix;
106
- }
85
+ public:
86
+ EIGEN_DEVICE_FUNC explicit inline Reverse(const MatrixType& matrix) : m_matrix(matrix) {}
87
+
88
+ EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Reverse)
107
89
 
108
- protected:
109
- typename MatrixType::Nested m_matrix;
90
+ EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return m_matrix.rows(); }
91
+ EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return m_matrix.cols(); }
92
+
93
+ EIGEN_DEVICE_FUNC inline Index innerStride() const { return -m_matrix.innerStride(); }
94
+
95
+ EIGEN_DEVICE_FUNC const internal::remove_all_t<typename MatrixType::Nested>& nestedExpression() const {
96
+ return m_matrix;
97
+ }
98
+
99
+ protected:
100
+ typename MatrixType::Nested m_matrix;
110
101
  };
111
102
 
112
103
  /** \returns an expression of the reverse of *this.
113
- *
114
- * Example: \include MatrixBase_reverse.cpp
115
- * Output: \verbinclude MatrixBase_reverse.out
116
- *
117
- */
118
- template<typename Derived>
119
- EIGEN_DEVICE_FUNC inline typename DenseBase<Derived>::ReverseReturnType
120
- DenseBase<Derived>::reverse()
121
- {
104
+ *
105
+ * Example: \include MatrixBase_reverse.cpp
106
+ * Output: \verbinclude MatrixBase_reverse.out
107
+ *
108
+ */
109
+ template <typename Derived>
110
+ EIGEN_DEVICE_FUNC inline typename DenseBase<Derived>::ReverseReturnType DenseBase<Derived>::reverse() {
122
111
  return ReverseReturnType(derived());
123
112
  }
124
113
 
125
-
126
- //reverse const overload moved DenseBase.h due to a CUDA compiler bug
114
+ // reverse const overload moved DenseBase.h due to a CUDA compiler bug
127
115
 
128
116
  /** This is the "in place" version of reverse: it reverses \c *this.
129
- *
130
- * In most cases it is probably better to simply use the reversed expression
131
- * of a matrix. However, when reversing the matrix data itself is really needed,
132
- * then this "in-place" version is probably the right choice because it provides
133
- * the following additional benefits:
134
- * - less error prone: doing the same operation with .reverse() requires special care:
135
- * \code m = m.reverse().eval(); \endcode
136
- * - this API enables reverse operations without the need for a temporary
137
- * - it allows future optimizations (cache friendliness, etc.)
138
- *
139
- * \sa VectorwiseOp::reverseInPlace(), reverse() */
140
- template<typename Derived>
141
- EIGEN_DEVICE_FUNC inline void DenseBase<Derived>::reverseInPlace()
142
- {
143
- if(cols()>rows())
144
- {
145
- Index half = cols()/2;
146
- leftCols(half).swap(rightCols(half).reverse());
147
- if((cols()%2)==1)
148
- {
149
- Index half2 = rows()/2;
150
- col(half).head(half2).swap(col(half).tail(half2).reverse());
117
+ *
118
+ * In most cases it is probably better to simply use the reversed expression
119
+ * of a matrix. However, when reversing the matrix data itself is really needed,
120
+ * then this "in-place" version is probably the right choice because it provides
121
+ * the following additional benefits:
122
+ * - less error prone: doing the same operation with .reverse() requires special care:
123
+ * \code m = m.reverse().eval(); \endcode
124
+ * - this API enables reverse operations without the need for a temporary
125
+ * - it allows future optimizations (cache friendliness, etc.)
126
+ *
127
+ * \sa VectorwiseOp::reverseInPlace(), reverse() */
128
+ template <typename Derived>
129
+ EIGEN_DEVICE_FUNC inline void DenseBase<Derived>::reverseInPlace() {
130
+ constexpr int HalfRowsAtCompileTime = RowsAtCompileTime == Dynamic ? Dynamic : RowsAtCompileTime / 2;
131
+ constexpr int HalfColsAtCompileTime = ColsAtCompileTime == Dynamic ? Dynamic : ColsAtCompileTime / 2;
132
+ if (cols() > rows()) {
133
+ Index half = cols() / 2;
134
+ this->template leftCols<HalfColsAtCompileTime>(half).swap(
135
+ this->template rightCols<HalfColsAtCompileTime>(half).reverse());
136
+ if ((cols() % 2) == 1) {
137
+ Index half2 = rows() / 2;
138
+ col(half).template head<HalfRowsAtCompileTime>(half2).swap(
139
+ col(half).template tail<HalfRowsAtCompileTime>(half2).reverse());
151
140
  }
152
- }
153
- else
154
- {
155
- Index half = rows()/2;
156
- topRows(half).swap(bottomRows(half).reverse());
157
- if((rows()%2)==1)
158
- {
159
- Index half2 = cols()/2;
160
- row(half).head(half2).swap(row(half).tail(half2).reverse());
141
+ } else {
142
+ Index half = rows() / 2;
143
+ this->template topRows<HalfRowsAtCompileTime>(half).swap(
144
+ this->template bottomRows<HalfRowsAtCompileTime>(half).reverse());
145
+ if ((rows() % 2) == 1) {
146
+ Index half2 = cols() / 2;
147
+ row(half).template head<HalfColsAtCompileTime>(half2).swap(
148
+ row(half).template tail<HalfColsAtCompileTime>(half2).reverse());
161
149
  }
162
150
  }
163
151
  }
164
152
 
165
153
  namespace internal {
166
154
 
167
- template<int Direction>
155
+ template <int Direction>
168
156
  struct vectorwise_reverse_inplace_impl;
169
157
 
170
- template<>
171
- struct vectorwise_reverse_inplace_impl<Vertical>
172
- {
173
- template<typename ExpressionType>
174
- static void run(ExpressionType &xpr)
175
- {
176
- const int HalfAtCompileTime = ExpressionType::RowsAtCompileTime==Dynamic?Dynamic:ExpressionType::RowsAtCompileTime/2;
177
- Index half = xpr.rows()/2;
178
- xpr.topRows(fix<HalfAtCompileTime>(half))
179
- .swap(xpr.bottomRows(fix<HalfAtCompileTime>(half)).colwise().reverse());
158
+ template <>
159
+ struct vectorwise_reverse_inplace_impl<Vertical> {
160
+ template <typename ExpressionType>
161
+ static void run(ExpressionType& xpr) {
162
+ constexpr Index HalfAtCompileTime =
163
+ ExpressionType::RowsAtCompileTime == Dynamic ? Dynamic : ExpressionType::RowsAtCompileTime / 2;
164
+ Index half = xpr.rows() / 2;
165
+ xpr.template topRows<HalfAtCompileTime>(half).swap(
166
+ xpr.template bottomRows<HalfAtCompileTime>(half).colwise().reverse());
180
167
  }
181
168
  };
182
169
 
183
- template<>
184
- struct vectorwise_reverse_inplace_impl<Horizontal>
185
- {
186
- template<typename ExpressionType>
187
- static void run(ExpressionType &xpr)
188
- {
189
- const int HalfAtCompileTime = ExpressionType::ColsAtCompileTime==Dynamic?Dynamic:ExpressionType::ColsAtCompileTime/2;
190
- Index half = xpr.cols()/2;
191
- xpr.leftCols(fix<HalfAtCompileTime>(half))
192
- .swap(xpr.rightCols(fix<HalfAtCompileTime>(half)).rowwise().reverse());
170
+ template <>
171
+ struct vectorwise_reverse_inplace_impl<Horizontal> {
172
+ template <typename ExpressionType>
173
+ static void run(ExpressionType& xpr) {
174
+ constexpr Index HalfAtCompileTime =
175
+ ExpressionType::ColsAtCompileTime == Dynamic ? Dynamic : ExpressionType::ColsAtCompileTime / 2;
176
+ Index half = xpr.cols() / 2;
177
+ xpr.template leftCols<HalfAtCompileTime>(half).swap(
178
+ xpr.template rightCols<HalfAtCompileTime>(half).rowwise().reverse());
193
179
  }
194
180
  };
195
181
 
196
- } // end namespace internal
182
+ } // end namespace internal
197
183
 
198
184
  /** This is the "in place" version of VectorwiseOp::reverse: it reverses each column or row of \c *this.
199
- *
200
- * In most cases it is probably better to simply use the reversed expression
201
- * of a matrix. However, when reversing the matrix data itself is really needed,
202
- * then this "in-place" version is probably the right choice because it provides
203
- * the following additional benefits:
204
- * - less error prone: doing the same operation with .reverse() requires special care:
205
- * \code m = m.reverse().eval(); \endcode
206
- * - this API enables reverse operations without the need for a temporary
207
- *
208
- * \sa DenseBase::reverseInPlace(), reverse() */
209
- template<typename ExpressionType, int Direction>
210
- EIGEN_DEVICE_FUNC void VectorwiseOp<ExpressionType,Direction>::reverseInPlace()
211
- {
185
+ *
186
+ * In most cases it is probably better to simply use the reversed expression
187
+ * of a matrix. However, when reversing the matrix data itself is really needed,
188
+ * then this "in-place" version is probably the right choice because it provides
189
+ * the following additional benefits:
190
+ * - less error prone: doing the same operation with .reverse() requires special care:
191
+ * \code m = m.reverse().eval(); \endcode
192
+ * - this API enables reverse operations without the need for a temporary
193
+ *
194
+ * \sa DenseBase::reverseInPlace(), reverse() */
195
+ template <typename ExpressionType, int Direction>
196
+ EIGEN_DEVICE_FUNC void VectorwiseOp<ExpressionType, Direction>::reverseInPlace() {
212
197
  internal::vectorwise_reverse_inplace_impl<Direction>::run(m_matrix);
213
198
  }
214
199
 
215
- } // end namespace Eigen
200
+ } // end namespace Eigen
216
201
 
217
- #endif // EIGEN_REVERSE_H
202
+ #endif // EIGEN_REVERSE_H