@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,145 +10,136 @@
10
10
  #ifndef EIGEN_HOMOGENEOUS_H
11
11
  #define EIGEN_HOMOGENEOUS_H
12
12
 
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
13
16
  namespace Eigen {
14
17
 
15
18
  /** \geometry_module \ingroup Geometry_Module
16
- *
17
- * \class Homogeneous
18
- *
19
- * \brief Expression of one (or a set of) homogeneous vector(s)
20
- *
21
- * \param MatrixType the type of the object in which we are making homogeneous
22
- *
23
- * This class represents an expression of one (or a set of) homogeneous vector(s).
24
- * It is the return type of MatrixBase::homogeneous() and most of the time
25
- * this is the only way it is used.
26
- *
27
- * \sa MatrixBase::homogeneous()
28
- */
19
+ *
20
+ * \class Homogeneous
21
+ *
22
+ * \brief Expression of one (or a set of) homogeneous vector(s)
23
+ *
24
+ * \param MatrixType the type of the object in which we are making homogeneous
25
+ *
26
+ * This class represents an expression of one (or a set of) homogeneous vector(s).
27
+ * It is the return type of MatrixBase::homogeneous() and most of the time
28
+ * this is the only way it is used.
29
+ *
30
+ * \sa MatrixBase::homogeneous()
31
+ */
29
32
 
30
33
  namespace internal {
31
34
 
32
- template<typename MatrixType,int Direction>
33
- struct traits<Homogeneous<MatrixType,Direction> >
34
- : traits<MatrixType>
35
- {
35
+ template <typename MatrixType, int Direction>
36
+ struct traits<Homogeneous<MatrixType, Direction> > : traits<MatrixType> {
36
37
  typedef typename traits<MatrixType>::StorageKind StorageKind;
37
38
  typedef typename ref_selector<MatrixType>::type MatrixTypeNested;
38
- typedef typename remove_reference<MatrixTypeNested>::type _MatrixTypeNested;
39
+ typedef std::remove_reference_t<MatrixTypeNested> MatrixTypeNested_;
39
40
  enum {
40
- RowsPlusOne = (MatrixType::RowsAtCompileTime != Dynamic) ?
41
- int(MatrixType::RowsAtCompileTime) + 1 : Dynamic,
42
- ColsPlusOne = (MatrixType::ColsAtCompileTime != Dynamic) ?
43
- int(MatrixType::ColsAtCompileTime) + 1 : Dynamic,
44
- RowsAtCompileTime = Direction==Vertical ? RowsPlusOne : MatrixType::RowsAtCompileTime,
45
- ColsAtCompileTime = Direction==Horizontal ? ColsPlusOne : MatrixType::ColsAtCompileTime,
41
+ RowsPlusOne = (MatrixType::RowsAtCompileTime != Dynamic) ? int(MatrixType::RowsAtCompileTime) + 1 : Dynamic,
42
+ ColsPlusOne = (MatrixType::ColsAtCompileTime != Dynamic) ? int(MatrixType::ColsAtCompileTime) + 1 : Dynamic,
43
+ RowsAtCompileTime = Direction == Vertical ? RowsPlusOne : MatrixType::RowsAtCompileTime,
44
+ ColsAtCompileTime = Direction == Horizontal ? ColsPlusOne : MatrixType::ColsAtCompileTime,
46
45
  MaxRowsAtCompileTime = RowsAtCompileTime,
47
46
  MaxColsAtCompileTime = ColsAtCompileTime,
48
- TmpFlags = _MatrixTypeNested::Flags & HereditaryBits,
49
- Flags = ColsAtCompileTime==1 ? (TmpFlags & ~RowMajorBit)
50
- : RowsAtCompileTime==1 ? (TmpFlags | RowMajorBit)
51
- : TmpFlags
47
+ TmpFlags = MatrixTypeNested_::Flags & HereditaryBits,
48
+ Flags = ColsAtCompileTime == 1 ? (TmpFlags & ~RowMajorBit)
49
+ : RowsAtCompileTime == 1 ? (TmpFlags | RowMajorBit)
50
+ : TmpFlags
52
51
  };
53
52
  };
54
53
 
55
- template<typename MatrixType,typename Lhs> struct homogeneous_left_product_impl;
56
- template<typename MatrixType,typename Rhs> struct homogeneous_right_product_impl;
57
-
58
- } // end namespace internal
59
-
60
- template<typename MatrixType,int _Direction> class Homogeneous
61
- : public MatrixBase<Homogeneous<MatrixType,_Direction> >, internal::no_assignment_operator
62
- {
63
- public:
64
-
65
- typedef MatrixType NestedExpression;
66
- enum { Direction = _Direction };
67
-
68
- typedef MatrixBase<Homogeneous> Base;
69
- EIGEN_DENSE_PUBLIC_INTERFACE(Homogeneous)
70
-
71
- EIGEN_DEVICE_FUNC explicit inline Homogeneous(const MatrixType& matrix)
72
- : m_matrix(matrix)
73
- {}
74
-
75
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
76
- inline Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows() + (int(Direction)==Vertical ? 1 : 0); }
77
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
78
- inline Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols() + (int(Direction)==Horizontal ? 1 : 0); }
79
-
80
- EIGEN_DEVICE_FUNC const NestedExpression& nestedExpression() const { return m_matrix; }
81
-
82
- template<typename Rhs>
83
- EIGEN_DEVICE_FUNC inline const Product<Homogeneous,Rhs>
84
- operator* (const MatrixBase<Rhs>& rhs) const
85
- {
86
- eigen_assert(int(Direction)==Horizontal);
87
- return Product<Homogeneous,Rhs>(*this,rhs.derived());
88
- }
89
-
90
- template<typename Lhs> friend
91
- EIGEN_DEVICE_FUNC inline const Product<Lhs,Homogeneous>
92
- operator* (const MatrixBase<Lhs>& lhs, const Homogeneous& rhs)
93
- {
94
- eigen_assert(int(Direction)==Vertical);
95
- return Product<Lhs,Homogeneous>(lhs.derived(),rhs);
96
- }
97
-
98
- template<typename Scalar, int Dim, int Mode, int Options> friend
99
- EIGEN_DEVICE_FUNC inline const Product<Transform<Scalar,Dim,Mode,Options>, Homogeneous >
100
- operator* (const Transform<Scalar,Dim,Mode,Options>& lhs, const Homogeneous& rhs)
101
- {
102
- eigen_assert(int(Direction)==Vertical);
103
- return Product<Transform<Scalar,Dim,Mode,Options>, Homogeneous>(lhs,rhs);
104
- }
105
-
106
- template<typename Func>
107
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename internal::result_of<Func(Scalar,Scalar)>::type
108
- redux(const Func& func) const
109
- {
110
- return func(m_matrix.redux(func), Scalar(1));
111
- }
112
-
113
- protected:
114
- typename MatrixType::Nested m_matrix;
54
+ template <typename MatrixType, typename Lhs>
55
+ struct homogeneous_left_product_impl;
56
+ template <typename MatrixType, typename Rhs>
57
+ struct homogeneous_right_product_impl;
58
+
59
+ } // end namespace internal
60
+
61
+ template <typename MatrixType, int Direction_>
62
+ class Homogeneous : public MatrixBase<Homogeneous<MatrixType, Direction_> >, internal::no_assignment_operator {
63
+ public:
64
+ typedef MatrixType NestedExpression;
65
+ enum { Direction = Direction_ };
66
+
67
+ typedef MatrixBase<Homogeneous> Base;
68
+ EIGEN_DENSE_PUBLIC_INTERFACE(Homogeneous)
69
+
70
+ EIGEN_DEVICE_FUNC explicit inline Homogeneous(const MatrixType& matrix) : m_matrix(matrix) {}
71
+
72
+ EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept {
73
+ return m_matrix.rows() + (int(Direction) == Vertical ? 1 : 0);
74
+ }
75
+ EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept {
76
+ return m_matrix.cols() + (int(Direction) == Horizontal ? 1 : 0);
77
+ }
78
+
79
+ EIGEN_DEVICE_FUNC const NestedExpression& nestedExpression() const { return m_matrix; }
80
+
81
+ template <typename Rhs>
82
+ EIGEN_DEVICE_FUNC inline const Product<Homogeneous, Rhs> operator*(const MatrixBase<Rhs>& rhs) const {
83
+ return Product<Homogeneous, Rhs>(*this, rhs.derived());
84
+ }
85
+
86
+ template <typename Lhs>
87
+ friend EIGEN_DEVICE_FUNC inline const Product<Lhs, Homogeneous> operator*(const MatrixBase<Lhs>& lhs,
88
+ const Homogeneous& rhs) {
89
+ return Product<Lhs, Homogeneous>(lhs.derived(), rhs);
90
+ }
91
+
92
+ template <typename Scalar, int Dim, int Mode, int Options>
93
+ friend EIGEN_DEVICE_FUNC inline const Product<Transform<Scalar, Dim, Mode, Options>, Homogeneous> operator*(
94
+ const Transform<Scalar, Dim, Mode, Options>& lhs, const Homogeneous& rhs) {
95
+ eigen_assert(int(Direction) == Vertical);
96
+ return Product<Transform<Scalar, Dim, Mode, Options>, Homogeneous>(lhs, rhs);
97
+ }
98
+
99
+ template <typename Func>
100
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename internal::result_of<Func(Scalar, Scalar)>::type redux(
101
+ const Func& func) const {
102
+ return func(m_matrix.redux(func), Scalar(1));
103
+ }
104
+
105
+ protected:
106
+ typename MatrixType::Nested m_matrix;
115
107
  };
116
108
 
117
109
  /** \geometry_module \ingroup Geometry_Module
118
- *
119
- * \returns a vector expression that is one longer than the vector argument, with the value 1 symbolically appended as the last coefficient.
120
- *
121
- * This can be used to convert affine coordinates to homogeneous coordinates.
122
- *
123
- * \only_for_vectors
124
- *
125
- * Example: \include MatrixBase_homogeneous.cpp
126
- * Output: \verbinclude MatrixBase_homogeneous.out
127
- *
128
- * \sa VectorwiseOp::homogeneous(), class Homogeneous
129
- */
130
- template<typename Derived>
131
- EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::HomogeneousReturnType
132
- MatrixBase<Derived>::homogeneous() const
133
- {
110
+ *
111
+ * \returns a vector expression that is one longer than the vector argument, with the value 1 symbolically appended as
112
+ * the last coefficient.
113
+ *
114
+ * This can be used to convert affine coordinates to homogeneous coordinates.
115
+ *
116
+ * \only_for_vectors
117
+ *
118
+ * Example: \include MatrixBase_homogeneous.cpp
119
+ * Output: \verbinclude MatrixBase_homogeneous.out
120
+ *
121
+ * \sa VectorwiseOp::homogeneous(), class Homogeneous
122
+ */
123
+ template <typename Derived>
124
+ EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::HomogeneousReturnType MatrixBase<Derived>::homogeneous() const {
134
125
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
135
126
  return HomogeneousReturnType(derived());
136
127
  }
137
128
 
138
129
  /** \geometry_module \ingroup Geometry_Module
139
- *
140
- * \returns an expression where the value 1 is symbolically appended as the final coefficient to each column (or row) of the matrix.
141
- *
142
- * This can be used to convert affine coordinates to homogeneous coordinates.
143
- *
144
- * Example: \include VectorwiseOp_homogeneous.cpp
145
- * Output: \verbinclude VectorwiseOp_homogeneous.out
146
- *
147
- * \sa MatrixBase::homogeneous(), class Homogeneous */
148
- template<typename ExpressionType, int Direction>
149
- EIGEN_DEVICE_FUNC inline Homogeneous<ExpressionType,Direction>
150
- VectorwiseOp<ExpressionType,Direction>::homogeneous() const
151
- {
130
+ *
131
+ * \returns an expression where the value 1 is symbolically appended as the final coefficient to each column (or row) of
132
+ * the matrix.
133
+ *
134
+ * This can be used to convert affine coordinates to homogeneous coordinates.
135
+ *
136
+ * Example: \include VectorwiseOp_homogeneous.cpp
137
+ * Output: \verbinclude VectorwiseOp_homogeneous.out
138
+ *
139
+ * \sa MatrixBase::homogeneous(), class Homogeneous */
140
+ template <typename ExpressionType, int Direction>
141
+ EIGEN_DEVICE_FUNC inline Homogeneous<ExpressionType, Direction> VectorwiseOp<ExpressionType, Direction>::homogeneous()
142
+ const {
152
143
  return HomogeneousReturnType(_expression());
153
144
  }
154
145
 
@@ -169,333 +160,294 @@ VectorwiseOp<ExpressionType,Direction>::homogeneous() const
169
160
  * Output: \verbinclude MatrixBase_hnormalized.out
170
161
  *
171
162
  * \sa VectorwiseOp::hnormalized() */
172
- template<typename Derived>
173
- EIGEN_DEVICE_FUNC inline const typename MatrixBase<Derived>::HNormalizedReturnType
174
- MatrixBase<Derived>::hnormalized() const
175
- {
163
+ template <typename Derived>
164
+ EIGEN_DEVICE_FUNC inline const typename MatrixBase<Derived>::HNormalizedReturnType MatrixBase<Derived>::hnormalized()
165
+ const {
176
166
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
177
- return ConstStartMinusOne(derived(),0,0,
178
- ColsAtCompileTime==1?size()-1:1,
179
- ColsAtCompileTime==1?1:size()-1) / coeff(size()-1);
167
+ return ConstStartMinusOne(derived(), 0, 0, ColsAtCompileTime == 1 ? size() - 1 : 1,
168
+ ColsAtCompileTime == 1 ? 1 : size() - 1) /
169
+ coeff(size() - 1);
180
170
  }
181
171
 
182
172
  /** \geometry_module \ingroup Geometry_Module
183
- *
184
- * \brief column or row-wise homogeneous normalization
185
- *
186
- * \returns an expression of the first N-1 coefficients of each column (or row) of \c *this divided by the last coefficient of each column (or row).
187
- *
188
- * This can be used to convert homogeneous coordinates to affine coordinates.
189
- *
190
- * It is conceptually equivalent to calling MatrixBase::hnormalized() to each column (or row) of \c *this.
191
- *
192
- * Example: \include DirectionWise_hnormalized.cpp
193
- * Output: \verbinclude DirectionWise_hnormalized.out
194
- *
195
- * \sa MatrixBase::hnormalized() */
196
- template<typename ExpressionType, int Direction>
197
- EIGEN_DEVICE_FUNC inline const typename VectorwiseOp<ExpressionType,Direction>::HNormalizedReturnType
198
- VectorwiseOp<ExpressionType,Direction>::hnormalized() const
199
- {
200
- return HNormalized_Block(_expression(),0,0,
201
- Direction==Vertical ? _expression().rows()-1 : _expression().rows(),
202
- Direction==Horizontal ? _expression().cols()-1 : _expression().cols()).cwiseQuotient(
203
- Replicate<HNormalized_Factors,
204
- Direction==Vertical ? HNormalized_SizeMinusOne : 1,
205
- Direction==Horizontal ? HNormalized_SizeMinusOne : 1>
206
- (HNormalized_Factors(_expression(),
207
- Direction==Vertical ? _expression().rows()-1:0,
208
- Direction==Horizontal ? _expression().cols()-1:0,
209
- Direction==Vertical ? 1 : _expression().rows(),
210
- Direction==Horizontal ? 1 : _expression().cols()),
211
- Direction==Vertical ? _expression().rows()-1 : 1,
212
- Direction==Horizontal ? _expression().cols()-1 : 1));
173
+ *
174
+ * \brief column or row-wise homogeneous normalization
175
+ *
176
+ * \returns an expression of the first N-1 coefficients of each column (or row) of \c *this divided by the last
177
+ * coefficient of each column (or row).
178
+ *
179
+ * This can be used to convert homogeneous coordinates to affine coordinates.
180
+ *
181
+ * It is conceptually equivalent to calling MatrixBase::hnormalized() to each column (or row) of \c *this.
182
+ *
183
+ * Example: \include DirectionWise_hnormalized.cpp
184
+ * Output: \verbinclude DirectionWise_hnormalized.out
185
+ *
186
+ * \sa MatrixBase::hnormalized() */
187
+ template <typename ExpressionType, int Direction>
188
+ EIGEN_DEVICE_FUNC inline const typename VectorwiseOp<ExpressionType, Direction>::HNormalizedReturnType
189
+ VectorwiseOp<ExpressionType, Direction>::hnormalized() const {
190
+ return HNormalized_Block(_expression(), 0, 0, Direction == Vertical ? _expression().rows() - 1 : _expression().rows(),
191
+ Direction == Horizontal ? _expression().cols() - 1 : _expression().cols())
192
+ .cwiseQuotient(Replicate < HNormalized_Factors, Direction == Vertical ? HNormalized_SizeMinusOne : 1,
193
+ Direction == Horizontal
194
+ ? HNormalized_SizeMinusOne
195
+ : 1 > (HNormalized_Factors(_expression(), Direction == Vertical ? _expression().rows() - 1 : 0,
196
+ Direction == Horizontal ? _expression().cols() - 1 : 0,
197
+ Direction == Vertical ? 1 : _expression().rows(),
198
+ Direction == Horizontal ? 1 : _expression().cols()),
199
+ Direction == Vertical ? _expression().rows() - 1 : 1,
200
+ Direction == Horizontal ? _expression().cols() - 1 : 1));
213
201
  }
214
202
 
215
203
  namespace internal {
216
204
 
217
- template<typename MatrixOrTransformType>
218
- struct take_matrix_for_product
219
- {
205
+ template <typename MatrixOrTransformType>
206
+ struct take_matrix_for_product {
220
207
  typedef MatrixOrTransformType type;
221
- EIGEN_DEVICE_FUNC static const type& run(const type &x) { return x; }
208
+ EIGEN_DEVICE_FUNC static const type& run(const type& x) { return x; }
222
209
  };
223
210
 
224
- template<typename Scalar, int Dim, int Mode,int Options>
225
- struct take_matrix_for_product<Transform<Scalar, Dim, Mode, Options> >
226
- {
211
+ template <typename Scalar, int Dim, int Mode, int Options>
212
+ struct take_matrix_for_product<Transform<Scalar, Dim, Mode, Options> > {
227
213
  typedef Transform<Scalar, Dim, Mode, Options> TransformType;
228
- typedef typename internal::add_const<typename TransformType::ConstAffinePart>::type type;
229
- EIGEN_DEVICE_FUNC static type run (const TransformType& x) { return x.affine(); }
214
+ typedef std::add_const_t<typename TransformType::ConstAffinePart> type;
215
+ EIGEN_DEVICE_FUNC static type run(const TransformType& x) { return x.affine(); }
230
216
  };
231
217
 
232
- template<typename Scalar, int Dim, int Options>
233
- struct take_matrix_for_product<Transform<Scalar, Dim, Projective, Options> >
234
- {
218
+ template <typename Scalar, int Dim, int Options>
219
+ struct take_matrix_for_product<Transform<Scalar, Dim, Projective, Options> > {
235
220
  typedef Transform<Scalar, Dim, Projective, Options> TransformType;
236
221
  typedef typename TransformType::MatrixType type;
237
- EIGEN_DEVICE_FUNC static const type& run (const TransformType& x) { return x.matrix(); }
222
+ EIGEN_DEVICE_FUNC static const type& run(const TransformType& x) { return x.matrix(); }
238
223
  };
239
224
 
240
- template<typename MatrixType,typename Lhs>
241
- struct traits<homogeneous_left_product_impl<Homogeneous<MatrixType,Vertical>,Lhs> >
242
- {
225
+ template <typename MatrixType, typename Lhs>
226
+ struct traits<homogeneous_left_product_impl<Homogeneous<MatrixType, Vertical>, Lhs> > {
243
227
  typedef typename take_matrix_for_product<Lhs>::type LhsMatrixType;
244
- typedef typename remove_all<MatrixType>::type MatrixTypeCleaned;
245
- typedef typename remove_all<LhsMatrixType>::type LhsMatrixTypeCleaned;
228
+ typedef remove_all_t<MatrixType> MatrixTypeCleaned;
229
+ typedef remove_all_t<LhsMatrixType> LhsMatrixTypeCleaned;
246
230
  typedef typename make_proper_matrix_type<
247
- typename traits<MatrixTypeCleaned>::Scalar,
248
- LhsMatrixTypeCleaned::RowsAtCompileTime,
249
- MatrixTypeCleaned::ColsAtCompileTime,
250
- MatrixTypeCleaned::PlainObject::Options,
251
- LhsMatrixTypeCleaned::MaxRowsAtCompileTime,
252
- MatrixTypeCleaned::MaxColsAtCompileTime>::type ReturnType;
231
+ typename traits<MatrixTypeCleaned>::Scalar, LhsMatrixTypeCleaned::RowsAtCompileTime,
232
+ MatrixTypeCleaned::ColsAtCompileTime, MatrixTypeCleaned::PlainObject::Options,
233
+ LhsMatrixTypeCleaned::MaxRowsAtCompileTime, MatrixTypeCleaned::MaxColsAtCompileTime>::type ReturnType;
253
234
  };
254
235
 
255
- template<typename MatrixType,typename Lhs>
256
- struct homogeneous_left_product_impl<Homogeneous<MatrixType,Vertical>,Lhs>
257
- : public ReturnByValue<homogeneous_left_product_impl<Homogeneous<MatrixType,Vertical>,Lhs> >
258
- {
236
+ template <typename MatrixType, typename Lhs>
237
+ struct homogeneous_left_product_impl<Homogeneous<MatrixType, Vertical>, Lhs>
238
+ : public ReturnByValue<homogeneous_left_product_impl<Homogeneous<MatrixType, Vertical>, Lhs> > {
259
239
  typedef typename traits<homogeneous_left_product_impl>::LhsMatrixType LhsMatrixType;
260
- typedef typename remove_all<LhsMatrixType>::type LhsMatrixTypeCleaned;
261
- typedef typename remove_all<typename LhsMatrixTypeCleaned::Nested>::type LhsMatrixTypeNested;
240
+ typedef remove_all_t<LhsMatrixType> LhsMatrixTypeCleaned;
241
+ typedef remove_all_t<typename LhsMatrixTypeCleaned::Nested> LhsMatrixTypeNested;
262
242
  EIGEN_DEVICE_FUNC homogeneous_left_product_impl(const Lhs& lhs, const MatrixType& rhs)
263
- : m_lhs(take_matrix_for_product<Lhs>::run(lhs)),
264
- m_rhs(rhs)
265
- {}
243
+ : m_lhs(take_matrix_for_product<Lhs>::run(lhs)), m_rhs(rhs) {}
266
244
 
267
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
268
- inline Index rows() const EIGEN_NOEXCEPT { return m_lhs.rows(); }
269
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
270
- inline Index cols() const EIGEN_NOEXCEPT { return m_rhs.cols(); }
245
+ EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return m_lhs.rows(); }
246
+ EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return m_rhs.cols(); }
271
247
 
272
- template<typename Dest> EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const
273
- {
248
+ template <typename Dest>
249
+ EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const {
274
250
  // FIXME investigate how to allow lazy evaluation of this product when possible
275
- dst = Block<const LhsMatrixTypeNested,
276
- LhsMatrixTypeNested::RowsAtCompileTime,
277
- LhsMatrixTypeNested::ColsAtCompileTime==Dynamic?Dynamic:LhsMatrixTypeNested::ColsAtCompileTime-1>
278
- (m_lhs,0,0,m_lhs.rows(),m_lhs.cols()-1) * m_rhs;
279
- dst += m_lhs.col(m_lhs.cols()-1).rowwise()
280
- .template replicate<MatrixType::ColsAtCompileTime>(m_rhs.cols());
251
+ dst = Block < const LhsMatrixTypeNested, LhsMatrixTypeNested::RowsAtCompileTime,
252
+ LhsMatrixTypeNested::ColsAtCompileTime == Dynamic
253
+ ? Dynamic
254
+ : LhsMatrixTypeNested::ColsAtCompileTime - 1 > (m_lhs, 0, 0, m_lhs.rows(), m_lhs.cols() - 1) * m_rhs;
255
+ dst += m_lhs.col(m_lhs.cols() - 1).rowwise().template replicate<MatrixType::ColsAtCompileTime>(m_rhs.cols());
281
256
  }
282
257
 
283
258
  typename LhsMatrixTypeCleaned::Nested m_lhs;
284
259
  typename MatrixType::Nested m_rhs;
285
260
  };
286
261
 
287
- template<typename MatrixType,typename Rhs>
288
- struct traits<homogeneous_right_product_impl<Homogeneous<MatrixType,Horizontal>,Rhs> >
289
- {
290
- typedef typename make_proper_matrix_type<typename traits<MatrixType>::Scalar,
291
- MatrixType::RowsAtCompileTime,
292
- Rhs::ColsAtCompileTime,
293
- MatrixType::PlainObject::Options,
294
- MatrixType::MaxRowsAtCompileTime,
295
- Rhs::MaxColsAtCompileTime>::type ReturnType;
262
+ template <typename MatrixType, typename Rhs>
263
+ struct traits<homogeneous_right_product_impl<Homogeneous<MatrixType, Horizontal>, Rhs> > {
264
+ typedef
265
+ typename make_proper_matrix_type<typename traits<MatrixType>::Scalar, MatrixType::RowsAtCompileTime,
266
+ Rhs::ColsAtCompileTime, MatrixType::PlainObject::Options,
267
+ MatrixType::MaxRowsAtCompileTime, Rhs::MaxColsAtCompileTime>::type ReturnType;
296
268
  };
297
269
 
298
- template<typename MatrixType,typename Rhs>
299
- struct homogeneous_right_product_impl<Homogeneous<MatrixType,Horizontal>,Rhs>
300
- : public ReturnByValue<homogeneous_right_product_impl<Homogeneous<MatrixType,Horizontal>,Rhs> >
301
- {
302
- typedef typename remove_all<typename Rhs::Nested>::type RhsNested;
303
- EIGEN_DEVICE_FUNC homogeneous_right_product_impl(const MatrixType& lhs, const Rhs& rhs)
304
- : m_lhs(lhs), m_rhs(rhs)
305
- {}
270
+ template <typename MatrixType, typename Rhs>
271
+ struct homogeneous_right_product_impl<Homogeneous<MatrixType, Horizontal>, Rhs>
272
+ : public ReturnByValue<homogeneous_right_product_impl<Homogeneous<MatrixType, Horizontal>, Rhs> > {
273
+ typedef remove_all_t<typename Rhs::Nested> RhsNested;
274
+ EIGEN_DEVICE_FUNC homogeneous_right_product_impl(const MatrixType& lhs, const Rhs& rhs) : m_lhs(lhs), m_rhs(rhs) {}
306
275
 
307
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index rows() const EIGEN_NOEXCEPT { return m_lhs.rows(); }
308
- EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index cols() const EIGEN_NOEXCEPT { return m_rhs.cols(); }
276
+ EIGEN_DEVICE_FUNC constexpr Index rows() const noexcept { return m_lhs.rows(); }
277
+ EIGEN_DEVICE_FUNC constexpr Index cols() const noexcept { return m_rhs.cols(); }
309
278
 
310
- template<typename Dest> EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const
311
- {
279
+ template <typename Dest>
280
+ EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const {
312
281
  // FIXME investigate how to allow lazy evaluation of this product when possible
313
- dst = m_lhs * Block<const RhsNested,
314
- RhsNested::RowsAtCompileTime==Dynamic?Dynamic:RhsNested::RowsAtCompileTime-1,
315
- RhsNested::ColsAtCompileTime>
316
- (m_rhs,0,0,m_rhs.rows()-1,m_rhs.cols());
317
- dst += m_rhs.row(m_rhs.rows()-1).colwise()
318
- .template replicate<MatrixType::RowsAtCompileTime>(m_lhs.rows());
282
+ dst = m_lhs * Block < const RhsNested,
283
+ RhsNested::RowsAtCompileTime == Dynamic ? Dynamic : RhsNested::RowsAtCompileTime - 1,
284
+ RhsNested::ColsAtCompileTime > (m_rhs, 0, 0, m_rhs.rows() - 1, m_rhs.cols());
285
+ dst += m_rhs.row(m_rhs.rows() - 1).colwise().template replicate<MatrixType::RowsAtCompileTime>(m_lhs.rows());
319
286
  }
320
287
 
321
288
  typename MatrixType::Nested m_lhs;
322
289
  typename Rhs::Nested m_rhs;
323
290
  };
324
291
 
325
- template<typename ArgType,int Direction>
326
- struct evaluator_traits<Homogeneous<ArgType,Direction> >
327
- {
292
+ template <typename ArgType, int Direction>
293
+ struct evaluator_traits<Homogeneous<ArgType, Direction> > {
328
294
  typedef typename storage_kind_to_evaluator_kind<typename ArgType::StorageKind>::Kind Kind;
329
295
  typedef HomogeneousShape Shape;
330
296
  };
331
297
 
332
- template<> struct AssignmentKind<DenseShape,HomogeneousShape> { typedef Dense2Dense Kind; };
333
-
298
+ template <>
299
+ struct AssignmentKind<DenseShape, HomogeneousShape> {
300
+ typedef Dense2Dense Kind;
301
+ };
334
302
 
335
- template<typename ArgType,int Direction>
336
- struct unary_evaluator<Homogeneous<ArgType,Direction>, IndexBased>
337
- : evaluator<typename Homogeneous<ArgType,Direction>::PlainObject >
338
- {
339
- typedef Homogeneous<ArgType,Direction> XprType;
303
+ template <typename ArgType, int Direction>
304
+ struct unary_evaluator<Homogeneous<ArgType, Direction>, IndexBased>
305
+ : evaluator<typename Homogeneous<ArgType, Direction>::PlainObject> {
306
+ typedef Homogeneous<ArgType, Direction> XprType;
340
307
  typedef typename XprType::PlainObject PlainObject;
341
308
  typedef evaluator<PlainObject> Base;
342
309
 
343
- EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& op)
344
- : Base(), m_temp(op)
345
- {
346
- ::new (static_cast<Base*>(this)) Base(m_temp);
310
+ EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& op) : Base(), m_temp(op) {
311
+ internal::construct_at<Base>(this, m_temp);
347
312
  }
348
313
 
349
- protected:
314
+ protected:
350
315
  PlainObject m_temp;
351
316
  };
352
317
 
353
318
  // dense = homogeneous
354
- template< typename DstXprType, typename ArgType, typename Scalar>
355
- struct Assignment<DstXprType, Homogeneous<ArgType,Vertical>, internal::assign_op<Scalar,typename ArgType::Scalar>, Dense2Dense>
356
- {
357
- typedef Homogeneous<ArgType,Vertical> SrcXprType;
358
- EIGEN_DEVICE_FUNC static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,typename ArgType::Scalar> &)
359
- {
319
+ template <typename DstXprType, typename ArgType, typename Scalar>
320
+ struct Assignment<DstXprType, Homogeneous<ArgType, Vertical>, internal::assign_op<Scalar, typename ArgType::Scalar>,
321
+ Dense2Dense> {
322
+ typedef Homogeneous<ArgType, Vertical> SrcXprType;
323
+ EIGEN_DEVICE_FUNC static void run(DstXprType& dst, const SrcXprType& src,
324
+ const internal::assign_op<Scalar, typename ArgType::Scalar>&) {
360
325
  Index dstRows = src.rows();
361
326
  Index dstCols = src.cols();
362
- if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
363
- dst.resize(dstRows, dstCols);
327
+ if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
364
328
 
365
329
  dst.template topRows<ArgType::RowsAtCompileTime>(src.nestedExpression().rows()) = src.nestedExpression();
366
- dst.row(dst.rows()-1).setOnes();
330
+ dst.row(dst.rows() - 1).setOnes();
367
331
  }
368
332
  };
369
333
 
370
334
  // dense = homogeneous
371
- template< typename DstXprType, typename ArgType, typename Scalar>
372
- struct Assignment<DstXprType, Homogeneous<ArgType,Horizontal>, internal::assign_op<Scalar,typename ArgType::Scalar>, Dense2Dense>
373
- {
374
- typedef Homogeneous<ArgType,Horizontal> SrcXprType;
375
- EIGEN_DEVICE_FUNC static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,typename ArgType::Scalar> &)
376
- {
335
+ template <typename DstXprType, typename ArgType, typename Scalar>
336
+ struct Assignment<DstXprType, Homogeneous<ArgType, Horizontal>, internal::assign_op<Scalar, typename ArgType::Scalar>,
337
+ Dense2Dense> {
338
+ typedef Homogeneous<ArgType, Horizontal> SrcXprType;
339
+ EIGEN_DEVICE_FUNC static void run(DstXprType& dst, const SrcXprType& src,
340
+ const internal::assign_op<Scalar, typename ArgType::Scalar>&) {
377
341
  Index dstRows = src.rows();
378
342
  Index dstCols = src.cols();
379
- if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
380
- dst.resize(dstRows, dstCols);
343
+ if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
381
344
 
382
345
  dst.template leftCols<ArgType::ColsAtCompileTime>(src.nestedExpression().cols()) = src.nestedExpression();
383
- dst.col(dst.cols()-1).setOnes();
346
+ dst.col(dst.cols() - 1).setOnes();
384
347
  }
385
348
  };
386
349
 
387
- template<typename LhsArg, typename Rhs, int ProductTag>
388
- struct generic_product_impl<Homogeneous<LhsArg,Horizontal>, Rhs, HomogeneousShape, DenseShape, ProductTag>
389
- {
390
- template<typename Dest>
391
- EIGEN_DEVICE_FUNC static void evalTo(Dest& dst, const Homogeneous<LhsArg,Horizontal>& lhs, const Rhs& rhs)
392
- {
393
- homogeneous_right_product_impl<Homogeneous<LhsArg,Horizontal>, Rhs>(lhs.nestedExpression(), rhs).evalTo(dst);
350
+ template <typename LhsArg, typename Rhs, int ProductTag>
351
+ struct generic_product_impl<Homogeneous<LhsArg, Horizontal>, Rhs, HomogeneousShape, DenseShape, ProductTag> {
352
+ template <typename Dest>
353
+ EIGEN_DEVICE_FUNC static void evalTo(Dest& dst, const Homogeneous<LhsArg, Horizontal>& lhs, const Rhs& rhs) {
354
+ homogeneous_right_product_impl<Homogeneous<LhsArg, Horizontal>, Rhs>(lhs.nestedExpression(), rhs).evalTo(dst);
394
355
  }
395
356
  };
396
357
 
397
- template<typename Lhs,typename Rhs>
398
- struct homogeneous_right_product_refactoring_helper
399
- {
400
- enum {
401
- Dim = Lhs::ColsAtCompileTime,
402
- Rows = Lhs::RowsAtCompileTime
403
- };
404
- typedef typename Rhs::template ConstNRowsBlockXpr<Dim>::Type LinearBlockConst;
405
- typedef typename remove_const<LinearBlockConst>::type LinearBlock;
406
- typedef typename Rhs::ConstRowXpr ConstantColumn;
407
- typedef Replicate<const ConstantColumn,Rows,1> ConstantBlock;
408
- typedef Product<Lhs,LinearBlock,LazyProduct> LinearProduct;
409
- typedef CwiseBinaryOp<internal::scalar_sum_op<typename Lhs::Scalar,typename Rhs::Scalar>, const LinearProduct, const ConstantBlock> Xpr;
358
+ template <typename Lhs, typename Rhs>
359
+ struct homogeneous_right_product_refactoring_helper {
360
+ enum { Dim = Lhs::ColsAtCompileTime, Rows = Lhs::RowsAtCompileTime };
361
+ typedef typename Rhs::template ConstNRowsBlockXpr<Dim>::Type LinearBlockConst;
362
+ typedef std::remove_const_t<LinearBlockConst> LinearBlock;
363
+ typedef typename Rhs::ConstRowXpr ConstantColumn;
364
+ typedef Replicate<const ConstantColumn, Rows, 1> ConstantBlock;
365
+ typedef Product<Lhs, LinearBlock, LazyProduct> LinearProduct;
366
+ typedef CwiseBinaryOp<internal::scalar_sum_op<typename Lhs::Scalar, typename Rhs::Scalar>, const LinearProduct,
367
+ const ConstantBlock>
368
+ Xpr;
410
369
  };
411
370
 
412
- template<typename Lhs, typename Rhs, int ProductTag>
371
+ template <typename Lhs, typename Rhs, int ProductTag>
413
372
  struct product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, HomogeneousShape, DenseShape>
414
- : public evaluator<typename homogeneous_right_product_refactoring_helper<typename Lhs::NestedExpression,Rhs>::Xpr>
415
- {
373
+ : public evaluator<
374
+ typename homogeneous_right_product_refactoring_helper<typename Lhs::NestedExpression, Rhs>::Xpr> {
416
375
  typedef Product<Lhs, Rhs, LazyProduct> XprType;
417
- typedef homogeneous_right_product_refactoring_helper<typename Lhs::NestedExpression,Rhs> helper;
376
+ typedef homogeneous_right_product_refactoring_helper<typename Lhs::NestedExpression, Rhs> helper;
418
377
  typedef typename helper::ConstantBlock ConstantBlock;
419
378
  typedef typename helper::Xpr RefactoredXpr;
420
379
  typedef evaluator<RefactoredXpr> Base;
421
380
 
422
381
  EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
423
- : Base( xpr.lhs().nestedExpression() .lazyProduct( xpr.rhs().template topRows<helper::Dim>(xpr.lhs().nestedExpression().cols()) )
424
- + ConstantBlock(xpr.rhs().row(xpr.rhs().rows()-1),xpr.lhs().rows(), 1) )
425
- {}
382
+ : Base(xpr.lhs().nestedExpression().lazyProduct(
383
+ xpr.rhs().template topRows<helper::Dim>(xpr.lhs().nestedExpression().cols())) +
384
+ ConstantBlock(xpr.rhs().row(xpr.rhs().rows() - 1), xpr.lhs().rows(), 1)) {}
426
385
  };
427
386
 
428
- template<typename Lhs, typename RhsArg, int ProductTag>
429
- struct generic_product_impl<Lhs, Homogeneous<RhsArg,Vertical>, DenseShape, HomogeneousShape, ProductTag>
430
- {
431
- template<typename Dest>
432
- EIGEN_DEVICE_FUNC static void evalTo(Dest& dst, const Lhs& lhs, const Homogeneous<RhsArg,Vertical>& rhs)
433
- {
434
- homogeneous_left_product_impl<Homogeneous<RhsArg,Vertical>, Lhs>(lhs, rhs.nestedExpression()).evalTo(dst);
387
+ template <typename Lhs, typename RhsArg, int ProductTag>
388
+ struct generic_product_impl<Lhs, Homogeneous<RhsArg, Vertical>, DenseShape, HomogeneousShape, ProductTag> {
389
+ template <typename Dest>
390
+ EIGEN_DEVICE_FUNC static void evalTo(Dest& dst, const Lhs& lhs, const Homogeneous<RhsArg, Vertical>& rhs) {
391
+ homogeneous_left_product_impl<Homogeneous<RhsArg, Vertical>, Lhs>(lhs, rhs.nestedExpression()).evalTo(dst);
435
392
  }
436
393
  };
437
394
 
438
395
  // TODO: the following specialization is to address a regression from 3.2 to 3.3
439
396
  // In the future, this path should be optimized.
440
- template<typename Lhs, typename RhsArg, int ProductTag>
441
- struct generic_product_impl<Lhs, Homogeneous<RhsArg,Vertical>, TriangularShape, HomogeneousShape, ProductTag>
442
- {
443
- template<typename Dest>
444
- static void evalTo(Dest& dst, const Lhs& lhs, const Homogeneous<RhsArg,Vertical>& rhs)
445
- {
397
+ template <typename Lhs, typename RhsArg, int ProductTag>
398
+ struct generic_product_impl<Lhs, Homogeneous<RhsArg, Vertical>, TriangularShape, HomogeneousShape, ProductTag> {
399
+ template <typename Dest>
400
+ static void evalTo(Dest& dst, const Lhs& lhs, const Homogeneous<RhsArg, Vertical>& rhs) {
446
401
  dst.noalias() = lhs * rhs.eval();
447
402
  }
448
403
  };
449
404
 
450
- template<typename Lhs,typename Rhs>
451
- struct homogeneous_left_product_refactoring_helper
452
- {
453
- enum {
454
- Dim = Rhs::RowsAtCompileTime,
455
- Cols = Rhs::ColsAtCompileTime
456
- };
457
- typedef typename Lhs::template ConstNColsBlockXpr<Dim>::Type LinearBlockConst;
458
- typedef typename remove_const<LinearBlockConst>::type LinearBlock;
459
- typedef typename Lhs::ConstColXpr ConstantColumn;
460
- typedef Replicate<const ConstantColumn,1,Cols> ConstantBlock;
461
- typedef Product<LinearBlock,Rhs,LazyProduct> LinearProduct;
462
- typedef CwiseBinaryOp<internal::scalar_sum_op<typename Lhs::Scalar,typename Rhs::Scalar>, const LinearProduct, const ConstantBlock> Xpr;
405
+ template <typename Lhs, typename Rhs>
406
+ struct homogeneous_left_product_refactoring_helper {
407
+ enum { Dim = Rhs::RowsAtCompileTime, Cols = Rhs::ColsAtCompileTime };
408
+ typedef typename Lhs::template ConstNColsBlockXpr<Dim>::Type LinearBlockConst;
409
+ typedef std::remove_const_t<LinearBlockConst> LinearBlock;
410
+ typedef typename Lhs::ConstColXpr ConstantColumn;
411
+ typedef Replicate<const ConstantColumn, 1, Cols> ConstantBlock;
412
+ typedef Product<LinearBlock, Rhs, LazyProduct> LinearProduct;
413
+ typedef CwiseBinaryOp<internal::scalar_sum_op<typename Lhs::Scalar, typename Rhs::Scalar>, const LinearProduct,
414
+ const ConstantBlock>
415
+ Xpr;
463
416
  };
464
417
 
465
- template<typename Lhs, typename Rhs, int ProductTag>
418
+ template <typename Lhs, typename Rhs, int ProductTag>
466
419
  struct product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, DenseShape, HomogeneousShape>
467
- : public evaluator<typename homogeneous_left_product_refactoring_helper<Lhs,typename Rhs::NestedExpression>::Xpr>
468
- {
420
+ : public evaluator<typename homogeneous_left_product_refactoring_helper<Lhs, typename Rhs::NestedExpression>::Xpr> {
469
421
  typedef Product<Lhs, Rhs, LazyProduct> XprType;
470
- typedef homogeneous_left_product_refactoring_helper<Lhs,typename Rhs::NestedExpression> helper;
422
+ typedef homogeneous_left_product_refactoring_helper<Lhs, typename Rhs::NestedExpression> helper;
471
423
  typedef typename helper::ConstantBlock ConstantBlock;
472
424
  typedef typename helper::Xpr RefactoredXpr;
473
425
  typedef evaluator<RefactoredXpr> Base;
474
426
 
475
427
  EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
476
- : Base( xpr.lhs().template leftCols<helper::Dim>(xpr.rhs().nestedExpression().rows()) .lazyProduct( xpr.rhs().nestedExpression() )
477
- + ConstantBlock(xpr.lhs().col(xpr.lhs().cols()-1),1,xpr.rhs().cols()) )
478
- {}
428
+ : Base(xpr.lhs()
429
+ .template leftCols<helper::Dim>(xpr.rhs().nestedExpression().rows())
430
+ .lazyProduct(xpr.rhs().nestedExpression()) +
431
+ ConstantBlock(xpr.lhs().col(xpr.lhs().cols() - 1), 1, xpr.rhs().cols())) {}
479
432
  };
480
433
 
481
- template<typename Scalar, int Dim, int Mode,int Options, typename RhsArg, int ProductTag>
482
- struct generic_product_impl<Transform<Scalar,Dim,Mode,Options>, Homogeneous<RhsArg,Vertical>, DenseShape, HomogeneousShape, ProductTag>
483
- {
484
- typedef Transform<Scalar,Dim,Mode,Options> TransformType;
485
- template<typename Dest>
486
- EIGEN_DEVICE_FUNC static void evalTo(Dest& dst, const TransformType& lhs, const Homogeneous<RhsArg,Vertical>& rhs)
487
- {
488
- homogeneous_left_product_impl<Homogeneous<RhsArg,Vertical>, TransformType>(lhs, rhs.nestedExpression()).evalTo(dst);
434
+ template <typename Scalar, int Dim, int Mode, int Options, typename RhsArg, int ProductTag>
435
+ struct generic_product_impl<Transform<Scalar, Dim, Mode, Options>, Homogeneous<RhsArg, Vertical>, DenseShape,
436
+ HomogeneousShape, ProductTag> {
437
+ typedef Transform<Scalar, Dim, Mode, Options> TransformType;
438
+ template <typename Dest>
439
+ EIGEN_DEVICE_FUNC static void evalTo(Dest& dst, const TransformType& lhs, const Homogeneous<RhsArg, Vertical>& rhs) {
440
+ homogeneous_left_product_impl<Homogeneous<RhsArg, Vertical>, TransformType>(lhs, rhs.nestedExpression())
441
+ .evalTo(dst);
489
442
  }
490
443
  };
491
444
 
492
- template<typename ExpressionType, int Side, bool Transposed>
445
+ template <typename ExpressionType, int Side, bool Transposed>
493
446
  struct permutation_matrix_product<ExpressionType, Side, Transposed, HomogeneousShape>
494
- : public permutation_matrix_product<ExpressionType, Side, Transposed, DenseShape>
495
- {};
447
+ : public permutation_matrix_product<ExpressionType, Side, Transposed, DenseShape> {};
496
448
 
497
- } // end namespace internal
449
+ } // end namespace internal
498
450
 
499
- } // end namespace Eigen
451
+ } // end namespace Eigen
500
452
 
501
- #endif // EIGEN_HOMOGENEOUS_H
453
+ #endif // EIGEN_HOMOGENEOUS_H