@smake/eigen 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -21
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +235 -326
  6. package/eigen/Eigen/Eigenvalues +16 -14
  7. package/eigen/Eigen/Geometry +21 -24
  8. package/eigen/Eigen/Householder +9 -8
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -14
  11. package/eigen/Eigen/KLUSupport +43 -0
  12. package/eigen/Eigen/LU +16 -20
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -54
  15. package/eigen/Eigen/PaStiXSupport +23 -20
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -21
  18. package/eigen/Eigen/QtAlignedMalloc +5 -13
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -18
  21. package/eigen/Eigen/Sparse +1 -4
  22. package/eigen/Eigen/SparseCholesky +18 -23
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +12 -8
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
  37. package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
  42. package/eigen/Eigen/src/Core/Array.h +341 -294
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
  48. package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
  49. package/eigen/Eigen/src/Core/Block.h +375 -398
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
  53. package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
  59. package/eigen/Eigen/src/Core/DenseBase.h +632 -571
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
  61. package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +169 -210
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +172 -222
  67. package/eigen/Eigen/src/Core/EigenBase.h +75 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
  75. package/eigen/Eigen/src/Core/IO.h +147 -139
  76. package/eigen/Eigen/src/Core/IndexedView.h +321 -0
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +56 -66
  80. package/eigen/Eigen/src/Core/Map.h +124 -142
  81. package/eigen/Eigen/src/Core/MapBase.h +256 -281
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
  84. package/eigen/Eigen/src/Core/Matrix.h +491 -416
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
  86. package/eigen/Eigen/src/Core/NestByValue.h +66 -85
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -85
  88. package/eigen/Eigen/src/Core/NumTraits.h +235 -148
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
  92. package/eigen/Eigen/src/Core/Product.h +260 -139
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
  94. package/eigen/Eigen/src/Core/Random.h +161 -136
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +366 -336
  98. package/eigen/Eigen/src/Core/Ref.h +308 -209
  99. package/eigen/Eigen/src/Core/Replicate.h +94 -106
  100. package/eigen/Eigen/src/Core/Reshaped.h +398 -0
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +136 -145
  103. package/eigen/Eigen/src/Core/Select.h +70 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +97 -111
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
  109. package/eigen/Eigen/src/Core/SolverBase.h +138 -101
  110. package/eigen/Eigen/src/Core/StableNorm.h +156 -160
  111. package/eigen/Eigen/src/Core/StlIterators.h +619 -0
  112. package/eigen/Eigen/src/Core/Stride.h +91 -88
  113. package/eigen/Eigen/src/Core/Swap.h +70 -38
  114. package/eigen/Eigen/src/Core/Transpose.h +295 -273
  115. package/eigen/Eigen/src/Core/Transpositions.h +272 -317
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
  119. package/eigen/Eigen/src/Core/Visitor.h +480 -216
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
  217. package/eigen/Eigen/src/Core/util/Constants.h +314 -263
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
  226. package/eigen/Eigen/src/Core/util/Macros.h +939 -646
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
  229. package/eigen/Eigen/src/Core/util/Meta.h +618 -426
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
  264. package/eigen/Eigen/src/Geometry/Transform.h +896 -953
  265. package/eigen/Eigen/src/Geometry/Translation.h +100 -98
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
  269. package/eigen/Eigen/src/Householder/Householder.h +104 -122
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
  285. package/eigen/Eigen/src/LU/Determinant.h +60 -63
  286. package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/lib/LibEigen.d.ts +4 -0
  409. package/lib/LibEigen.js +14 -0
  410. package/lib/index.d.ts +1 -1
  411. package/lib/index.js +7 -3
  412. package/package.json +2 -10
  413. package/eigen/Eigen/CMakeLists.txt +0 -19
  414. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
  415. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
  416. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  417. package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
  418. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  419. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  420. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  421. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  422. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  423. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  424. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  425. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  426. package/eigen/Eigen/src/misc/lapack.h +0 -152
  427. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
  428. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
  429. package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
  430. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  431. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
  432. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  433. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
  434. package/lib/eigen.d.ts +0 -2
  435. package/lib/eigen.js +0 -15
@@ -10,143 +10,136 @@
10
10
  #ifndef EIGEN_HOMOGENEOUS_H
11
11
  #define EIGEN_HOMOGENEOUS_H
12
12
 
13
- namespace Eigen {
13
+ // IWYU pragma: private
14
+ #include "./InternalHeaderCheck.h"
15
+
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 inline Index rows() const { return m_matrix.rows() + (int(Direction)==Vertical ? 1 : 0); }
76
- EIGEN_DEVICE_FUNC inline Index cols() const { return m_matrix.cols() + (int(Direction)==Horizontal ? 1 : 0); }
77
-
78
- EIGEN_DEVICE_FUNC const NestedExpression& nestedExpression() const { return m_matrix; }
79
-
80
- template<typename Rhs>
81
- EIGEN_DEVICE_FUNC inline const Product<Homogeneous,Rhs>
82
- operator* (const MatrixBase<Rhs>& rhs) const
83
- {
84
- eigen_assert(int(Direction)==Horizontal);
85
- return Product<Homogeneous,Rhs>(*this,rhs.derived());
86
- }
87
-
88
- template<typename Lhs> friend
89
- EIGEN_DEVICE_FUNC inline const Product<Lhs,Homogeneous>
90
- operator* (const MatrixBase<Lhs>& lhs, const Homogeneous& rhs)
91
- {
92
- eigen_assert(int(Direction)==Vertical);
93
- return Product<Lhs,Homogeneous>(lhs.derived(),rhs);
94
- }
95
-
96
- template<typename Scalar, int Dim, int Mode, int Options> friend
97
- EIGEN_DEVICE_FUNC inline const Product<Transform<Scalar,Dim,Mode,Options>, Homogeneous >
98
- operator* (const Transform<Scalar,Dim,Mode,Options>& lhs, const Homogeneous& rhs)
99
- {
100
- eigen_assert(int(Direction)==Vertical);
101
- return Product<Transform<Scalar,Dim,Mode,Options>, Homogeneous>(lhs,rhs);
102
- }
103
-
104
- template<typename Func>
105
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename internal::result_of<Func(Scalar,Scalar)>::type
106
- redux(const Func& func) const
107
- {
108
- return func(m_matrix.redux(func), Scalar(1));
109
- }
110
-
111
- protected:
112
- 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;
113
107
  };
114
108
 
115
109
  /** \geometry_module \ingroup Geometry_Module
116
- *
117
- * \returns a vector expression that is one longer than the vector argument, with the value 1 symbolically appended as the last coefficient.
118
- *
119
- * This can be used to convert affine coordinates to homogeneous coordinates.
120
- *
121
- * \only_for_vectors
122
- *
123
- * Example: \include MatrixBase_homogeneous.cpp
124
- * Output: \verbinclude MatrixBase_homogeneous.out
125
- *
126
- * \sa VectorwiseOp::homogeneous(), class Homogeneous
127
- */
128
- template<typename Derived>
129
- EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::HomogeneousReturnType
130
- MatrixBase<Derived>::homogeneous() const
131
- {
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 {
132
125
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
133
126
  return HomogeneousReturnType(derived());
134
127
  }
135
128
 
136
129
  /** \geometry_module \ingroup Geometry_Module
137
- *
138
- * \returns an expression where the value 1 is symbolically appended as the final coefficient to each column (or row) of the matrix.
139
- *
140
- * This can be used to convert affine coordinates to homogeneous coordinates.
141
- *
142
- * Example: \include VectorwiseOp_homogeneous.cpp
143
- * Output: \verbinclude VectorwiseOp_homogeneous.out
144
- *
145
- * \sa MatrixBase::homogeneous(), class Homogeneous */
146
- template<typename ExpressionType, int Direction>
147
- EIGEN_DEVICE_FUNC inline Homogeneous<ExpressionType,Direction>
148
- VectorwiseOp<ExpressionType,Direction>::homogeneous() const
149
- {
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 {
150
143
  return HomogeneousReturnType(_expression());
151
144
  }
152
145
 
@@ -167,331 +160,294 @@ VectorwiseOp<ExpressionType,Direction>::homogeneous() const
167
160
  * Output: \verbinclude MatrixBase_hnormalized.out
168
161
  *
169
162
  * \sa VectorwiseOp::hnormalized() */
170
- template<typename Derived>
171
- EIGEN_DEVICE_FUNC inline const typename MatrixBase<Derived>::HNormalizedReturnType
172
- MatrixBase<Derived>::hnormalized() const
173
- {
163
+ template <typename Derived>
164
+ EIGEN_DEVICE_FUNC inline const typename MatrixBase<Derived>::HNormalizedReturnType MatrixBase<Derived>::hnormalized()
165
+ const {
174
166
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
175
- return ConstStartMinusOne(derived(),0,0,
176
- ColsAtCompileTime==1?size()-1:1,
177
- 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);
178
170
  }
179
171
 
180
172
  /** \geometry_module \ingroup Geometry_Module
181
- *
182
- * \brief column or row-wise homogeneous normalization
183
- *
184
- * \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).
185
- *
186
- * This can be used to convert homogeneous coordinates to affine coordinates.
187
- *
188
- * It is conceptually equivalent to calling MatrixBase::hnormalized() to each column (or row) of \c *this.
189
- *
190
- * Example: \include DirectionWise_hnormalized.cpp
191
- * Output: \verbinclude DirectionWise_hnormalized.out
192
- *
193
- * \sa MatrixBase::hnormalized() */
194
- template<typename ExpressionType, int Direction>
195
- EIGEN_DEVICE_FUNC inline const typename VectorwiseOp<ExpressionType,Direction>::HNormalizedReturnType
196
- VectorwiseOp<ExpressionType,Direction>::hnormalized() const
197
- {
198
- return HNormalized_Block(_expression(),0,0,
199
- Direction==Vertical ? _expression().rows()-1 : _expression().rows(),
200
- Direction==Horizontal ? _expression().cols()-1 : _expression().cols()).cwiseQuotient(
201
- Replicate<HNormalized_Factors,
202
- Direction==Vertical ? HNormalized_SizeMinusOne : 1,
203
- Direction==Horizontal ? HNormalized_SizeMinusOne : 1>
204
- (HNormalized_Factors(_expression(),
205
- Direction==Vertical ? _expression().rows()-1:0,
206
- Direction==Horizontal ? _expression().cols()-1:0,
207
- Direction==Vertical ? 1 : _expression().rows(),
208
- Direction==Horizontal ? 1 : _expression().cols()),
209
- Direction==Vertical ? _expression().rows()-1 : 1,
210
- 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));
211
201
  }
212
202
 
213
203
  namespace internal {
214
204
 
215
- template<typename MatrixOrTransformType>
216
- struct take_matrix_for_product
217
- {
205
+ template <typename MatrixOrTransformType>
206
+ struct take_matrix_for_product {
218
207
  typedef MatrixOrTransformType type;
219
- 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; }
220
209
  };
221
210
 
222
- template<typename Scalar, int Dim, int Mode,int Options>
223
- struct take_matrix_for_product<Transform<Scalar, Dim, Mode, Options> >
224
- {
211
+ template <typename Scalar, int Dim, int Mode, int Options>
212
+ struct take_matrix_for_product<Transform<Scalar, Dim, Mode, Options> > {
225
213
  typedef Transform<Scalar, Dim, Mode, Options> TransformType;
226
- typedef typename internal::add_const<typename TransformType::ConstAffinePart>::type type;
227
- 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(); }
228
216
  };
229
217
 
230
- template<typename Scalar, int Dim, int Options>
231
- struct take_matrix_for_product<Transform<Scalar, Dim, Projective, Options> >
232
- {
218
+ template <typename Scalar, int Dim, int Options>
219
+ struct take_matrix_for_product<Transform<Scalar, Dim, Projective, Options> > {
233
220
  typedef Transform<Scalar, Dim, Projective, Options> TransformType;
234
221
  typedef typename TransformType::MatrixType type;
235
- 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(); }
236
223
  };
237
224
 
238
- template<typename MatrixType,typename Lhs>
239
- struct traits<homogeneous_left_product_impl<Homogeneous<MatrixType,Vertical>,Lhs> >
240
- {
225
+ template <typename MatrixType, typename Lhs>
226
+ struct traits<homogeneous_left_product_impl<Homogeneous<MatrixType, Vertical>, Lhs> > {
241
227
  typedef typename take_matrix_for_product<Lhs>::type LhsMatrixType;
242
- typedef typename remove_all<MatrixType>::type MatrixTypeCleaned;
243
- typedef typename remove_all<LhsMatrixType>::type LhsMatrixTypeCleaned;
228
+ typedef remove_all_t<MatrixType> MatrixTypeCleaned;
229
+ typedef remove_all_t<LhsMatrixType> LhsMatrixTypeCleaned;
244
230
  typedef typename make_proper_matrix_type<
245
- typename traits<MatrixTypeCleaned>::Scalar,
246
- LhsMatrixTypeCleaned::RowsAtCompileTime,
247
- MatrixTypeCleaned::ColsAtCompileTime,
248
- MatrixTypeCleaned::PlainObject::Options,
249
- LhsMatrixTypeCleaned::MaxRowsAtCompileTime,
250
- MatrixTypeCleaned::MaxColsAtCompileTime>::type ReturnType;
231
+ typename traits<MatrixTypeCleaned>::Scalar, LhsMatrixTypeCleaned::RowsAtCompileTime,
232
+ MatrixTypeCleaned::ColsAtCompileTime, MatrixTypeCleaned::PlainObject::Options,
233
+ LhsMatrixTypeCleaned::MaxRowsAtCompileTime, MatrixTypeCleaned::MaxColsAtCompileTime>::type ReturnType;
251
234
  };
252
235
 
253
- template<typename MatrixType,typename Lhs>
254
- struct homogeneous_left_product_impl<Homogeneous<MatrixType,Vertical>,Lhs>
255
- : public ReturnByValue<homogeneous_left_product_impl<Homogeneous<MatrixType,Vertical>,Lhs> >
256
- {
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> > {
257
239
  typedef typename traits<homogeneous_left_product_impl>::LhsMatrixType LhsMatrixType;
258
- typedef typename remove_all<LhsMatrixType>::type LhsMatrixTypeCleaned;
259
- 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;
260
242
  EIGEN_DEVICE_FUNC homogeneous_left_product_impl(const Lhs& lhs, const MatrixType& rhs)
261
- : m_lhs(take_matrix_for_product<Lhs>::run(lhs)),
262
- m_rhs(rhs)
263
- {}
243
+ : m_lhs(take_matrix_for_product<Lhs>::run(lhs)), m_rhs(rhs) {}
264
244
 
265
- EIGEN_DEVICE_FUNC inline Index rows() const { return m_lhs.rows(); }
266
- EIGEN_DEVICE_FUNC inline Index cols() const { 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(); }
267
247
 
268
- template<typename Dest> EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const
269
- {
248
+ template <typename Dest>
249
+ EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const {
270
250
  // FIXME investigate how to allow lazy evaluation of this product when possible
271
- dst = Block<const LhsMatrixTypeNested,
272
- LhsMatrixTypeNested::RowsAtCompileTime,
273
- LhsMatrixTypeNested::ColsAtCompileTime==Dynamic?Dynamic:LhsMatrixTypeNested::ColsAtCompileTime-1>
274
- (m_lhs,0,0,m_lhs.rows(),m_lhs.cols()-1) * m_rhs;
275
- dst += m_lhs.col(m_lhs.cols()-1).rowwise()
276
- .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());
277
256
  }
278
257
 
279
258
  typename LhsMatrixTypeCleaned::Nested m_lhs;
280
259
  typename MatrixType::Nested m_rhs;
281
260
  };
282
261
 
283
- template<typename MatrixType,typename Rhs>
284
- struct traits<homogeneous_right_product_impl<Homogeneous<MatrixType,Horizontal>,Rhs> >
285
- {
286
- typedef typename make_proper_matrix_type<typename traits<MatrixType>::Scalar,
287
- MatrixType::RowsAtCompileTime,
288
- Rhs::ColsAtCompileTime,
289
- MatrixType::PlainObject::Options,
290
- MatrixType::MaxRowsAtCompileTime,
291
- 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;
292
268
  };
293
269
 
294
- template<typename MatrixType,typename Rhs>
295
- struct homogeneous_right_product_impl<Homogeneous<MatrixType,Horizontal>,Rhs>
296
- : public ReturnByValue<homogeneous_right_product_impl<Homogeneous<MatrixType,Horizontal>,Rhs> >
297
- {
298
- typedef typename remove_all<typename Rhs::Nested>::type RhsNested;
299
- EIGEN_DEVICE_FUNC homogeneous_right_product_impl(const MatrixType& lhs, const Rhs& rhs)
300
- : m_lhs(lhs), m_rhs(rhs)
301
- {}
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) {}
302
275
 
303
- EIGEN_DEVICE_FUNC inline Index rows() const { return m_lhs.rows(); }
304
- EIGEN_DEVICE_FUNC inline Index cols() const { 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(); }
305
278
 
306
- template<typename Dest> EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const
307
- {
279
+ template <typename Dest>
280
+ EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const {
308
281
  // FIXME investigate how to allow lazy evaluation of this product when possible
309
- dst = m_lhs * Block<const RhsNested,
310
- RhsNested::RowsAtCompileTime==Dynamic?Dynamic:RhsNested::RowsAtCompileTime-1,
311
- RhsNested::ColsAtCompileTime>
312
- (m_rhs,0,0,m_rhs.rows()-1,m_rhs.cols());
313
- dst += m_rhs.row(m_rhs.rows()-1).colwise()
314
- .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());
315
286
  }
316
287
 
317
288
  typename MatrixType::Nested m_lhs;
318
289
  typename Rhs::Nested m_rhs;
319
290
  };
320
291
 
321
- template<typename ArgType,int Direction>
322
- struct evaluator_traits<Homogeneous<ArgType,Direction> >
323
- {
292
+ template <typename ArgType, int Direction>
293
+ struct evaluator_traits<Homogeneous<ArgType, Direction> > {
324
294
  typedef typename storage_kind_to_evaluator_kind<typename ArgType::StorageKind>::Kind Kind;
325
- typedef HomogeneousShape Shape;
295
+ typedef HomogeneousShape Shape;
326
296
  };
327
297
 
328
- template<> struct AssignmentKind<DenseShape,HomogeneousShape> { typedef Dense2Dense Kind; };
329
-
298
+ template <>
299
+ struct AssignmentKind<DenseShape, HomogeneousShape> {
300
+ typedef Dense2Dense Kind;
301
+ };
330
302
 
331
- template<typename ArgType,int Direction>
332
- struct unary_evaluator<Homogeneous<ArgType,Direction>, IndexBased>
333
- : evaluator<typename Homogeneous<ArgType,Direction>::PlainObject >
334
- {
335
- 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;
336
307
  typedef typename XprType::PlainObject PlainObject;
337
308
  typedef evaluator<PlainObject> Base;
338
309
 
339
- EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& op)
340
- : Base(), m_temp(op)
341
- {
342
- ::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);
343
312
  }
344
313
 
345
- protected:
314
+ protected:
346
315
  PlainObject m_temp;
347
316
  };
348
317
 
349
318
  // dense = homogeneous
350
- template< typename DstXprType, typename ArgType, typename Scalar>
351
- struct Assignment<DstXprType, Homogeneous<ArgType,Vertical>, internal::assign_op<Scalar,typename ArgType::Scalar>, Dense2Dense>
352
- {
353
- typedef Homogeneous<ArgType,Vertical> SrcXprType;
354
- EIGEN_DEVICE_FUNC static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,typename ArgType::Scalar> &)
355
- {
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>&) {
356
325
  Index dstRows = src.rows();
357
326
  Index dstCols = src.cols();
358
- if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
359
- dst.resize(dstRows, dstCols);
327
+ if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
360
328
 
361
329
  dst.template topRows<ArgType::RowsAtCompileTime>(src.nestedExpression().rows()) = src.nestedExpression();
362
- dst.row(dst.rows()-1).setOnes();
330
+ dst.row(dst.rows() - 1).setOnes();
363
331
  }
364
332
  };
365
333
 
366
334
  // dense = homogeneous
367
- template< typename DstXprType, typename ArgType, typename Scalar>
368
- struct Assignment<DstXprType, Homogeneous<ArgType,Horizontal>, internal::assign_op<Scalar,typename ArgType::Scalar>, Dense2Dense>
369
- {
370
- typedef Homogeneous<ArgType,Horizontal> SrcXprType;
371
- EIGEN_DEVICE_FUNC static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,typename ArgType::Scalar> &)
372
- {
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>&) {
373
341
  Index dstRows = src.rows();
374
342
  Index dstCols = src.cols();
375
- if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
376
- dst.resize(dstRows, dstCols);
343
+ if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
377
344
 
378
345
  dst.template leftCols<ArgType::ColsAtCompileTime>(src.nestedExpression().cols()) = src.nestedExpression();
379
- dst.col(dst.cols()-1).setOnes();
346
+ dst.col(dst.cols() - 1).setOnes();
380
347
  }
381
348
  };
382
349
 
383
- template<typename LhsArg, typename Rhs, int ProductTag>
384
- struct generic_product_impl<Homogeneous<LhsArg,Horizontal>, Rhs, HomogeneousShape, DenseShape, ProductTag>
385
- {
386
- template<typename Dest>
387
- EIGEN_DEVICE_FUNC static void evalTo(Dest& dst, const Homogeneous<LhsArg,Horizontal>& lhs, const Rhs& rhs)
388
- {
389
- 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);
390
355
  }
391
356
  };
392
357
 
393
- template<typename Lhs,typename Rhs>
394
- struct homogeneous_right_product_refactoring_helper
395
- {
396
- enum {
397
- Dim = Lhs::ColsAtCompileTime,
398
- Rows = Lhs::RowsAtCompileTime
399
- };
400
- typedef typename Rhs::template ConstNRowsBlockXpr<Dim>::Type LinearBlockConst;
401
- typedef typename remove_const<LinearBlockConst>::type LinearBlock;
402
- typedef typename Rhs::ConstRowXpr ConstantColumn;
403
- typedef Replicate<const ConstantColumn,Rows,1> ConstantBlock;
404
- typedef Product<Lhs,LinearBlock,LazyProduct> LinearProduct;
405
- 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;
406
369
  };
407
370
 
408
- template<typename Lhs, typename Rhs, int ProductTag>
371
+ template <typename Lhs, typename Rhs, int ProductTag>
409
372
  struct product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, HomogeneousShape, DenseShape>
410
- : public evaluator<typename homogeneous_right_product_refactoring_helper<typename Lhs::NestedExpression,Rhs>::Xpr>
411
- {
373
+ : public evaluator<
374
+ typename homogeneous_right_product_refactoring_helper<typename Lhs::NestedExpression, Rhs>::Xpr> {
412
375
  typedef Product<Lhs, Rhs, LazyProduct> XprType;
413
- typedef homogeneous_right_product_refactoring_helper<typename Lhs::NestedExpression,Rhs> helper;
376
+ typedef homogeneous_right_product_refactoring_helper<typename Lhs::NestedExpression, Rhs> helper;
414
377
  typedef typename helper::ConstantBlock ConstantBlock;
415
378
  typedef typename helper::Xpr RefactoredXpr;
416
379
  typedef evaluator<RefactoredXpr> Base;
417
-
380
+
418
381
  EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
419
- : Base( xpr.lhs().nestedExpression() .lazyProduct( xpr.rhs().template topRows<helper::Dim>(xpr.lhs().nestedExpression().cols()) )
420
- + ConstantBlock(xpr.rhs().row(xpr.rhs().rows()-1),xpr.lhs().rows(), 1) )
421
- {}
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)) {}
422
385
  };
423
386
 
424
- template<typename Lhs, typename RhsArg, int ProductTag>
425
- struct generic_product_impl<Lhs, Homogeneous<RhsArg,Vertical>, DenseShape, HomogeneousShape, ProductTag>
426
- {
427
- template<typename Dest>
428
- EIGEN_DEVICE_FUNC static void evalTo(Dest& dst, const Lhs& lhs, const Homogeneous<RhsArg,Vertical>& rhs)
429
- {
430
- 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);
431
392
  }
432
393
  };
433
394
 
434
395
  // TODO: the following specialization is to address a regression from 3.2 to 3.3
435
396
  // In the future, this path should be optimized.
436
- template<typename Lhs, typename RhsArg, int ProductTag>
437
- struct generic_product_impl<Lhs, Homogeneous<RhsArg,Vertical>, TriangularShape, HomogeneousShape, ProductTag>
438
- {
439
- template<typename Dest>
440
- static void evalTo(Dest& dst, const Lhs& lhs, const Homogeneous<RhsArg,Vertical>& rhs)
441
- {
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) {
442
401
  dst.noalias() = lhs * rhs.eval();
443
402
  }
444
403
  };
445
404
 
446
- template<typename Lhs,typename Rhs>
447
- struct homogeneous_left_product_refactoring_helper
448
- {
449
- enum {
450
- Dim = Rhs::RowsAtCompileTime,
451
- Cols = Rhs::ColsAtCompileTime
452
- };
453
- typedef typename Lhs::template ConstNColsBlockXpr<Dim>::Type LinearBlockConst;
454
- typedef typename remove_const<LinearBlockConst>::type LinearBlock;
455
- typedef typename Lhs::ConstColXpr ConstantColumn;
456
- typedef Replicate<const ConstantColumn,1,Cols> ConstantBlock;
457
- typedef Product<LinearBlock,Rhs,LazyProduct> LinearProduct;
458
- 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;
459
416
  };
460
417
 
461
- template<typename Lhs, typename Rhs, int ProductTag>
418
+ template <typename Lhs, typename Rhs, int ProductTag>
462
419
  struct product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, DenseShape, HomogeneousShape>
463
- : public evaluator<typename homogeneous_left_product_refactoring_helper<Lhs,typename Rhs::NestedExpression>::Xpr>
464
- {
420
+ : public evaluator<typename homogeneous_left_product_refactoring_helper<Lhs, typename Rhs::NestedExpression>::Xpr> {
465
421
  typedef Product<Lhs, Rhs, LazyProduct> XprType;
466
- typedef homogeneous_left_product_refactoring_helper<Lhs,typename Rhs::NestedExpression> helper;
422
+ typedef homogeneous_left_product_refactoring_helper<Lhs, typename Rhs::NestedExpression> helper;
467
423
  typedef typename helper::ConstantBlock ConstantBlock;
468
424
  typedef typename helper::Xpr RefactoredXpr;
469
425
  typedef evaluator<RefactoredXpr> Base;
470
-
426
+
471
427
  EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
472
- : Base( xpr.lhs().template leftCols<helper::Dim>(xpr.rhs().nestedExpression().rows()) .lazyProduct( xpr.rhs().nestedExpression() )
473
- + ConstantBlock(xpr.lhs().col(xpr.lhs().cols()-1),1,xpr.rhs().cols()) )
474
- {}
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())) {}
475
432
  };
476
433
 
477
- template<typename Scalar, int Dim, int Mode,int Options, typename RhsArg, int ProductTag>
478
- struct generic_product_impl<Transform<Scalar,Dim,Mode,Options>, Homogeneous<RhsArg,Vertical>, DenseShape, HomogeneousShape, ProductTag>
479
- {
480
- typedef Transform<Scalar,Dim,Mode,Options> TransformType;
481
- template<typename Dest>
482
- EIGEN_DEVICE_FUNC static void evalTo(Dest& dst, const TransformType& lhs, const Homogeneous<RhsArg,Vertical>& rhs)
483
- {
484
- 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);
485
442
  }
486
443
  };
487
444
 
488
- template<typename ExpressionType, int Side, bool Transposed>
445
+ template <typename ExpressionType, int Side, bool Transposed>
489
446
  struct permutation_matrix_product<ExpressionType, Side, Transposed, HomogeneousShape>
490
- : public permutation_matrix_product<ExpressionType, Side, Transposed, DenseShape>
491
- {};
447
+ : public permutation_matrix_product<ExpressionType, Side, Transposed, DenseShape> {};
492
448
 
493
- } // end namespace internal
449
+ } // end namespace internal
494
450
 
495
- } // end namespace Eigen
451
+ } // end namespace Eigen
496
452
 
497
- #endif // EIGEN_HOMOGENEOUS_H
453
+ #endif // EIGEN_HOMOGENEOUS_H