@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,82 +10,85 @@
10
10
  #ifndef EIGEN_ANGLEAXIS_H
11
11
  #define EIGEN_ANGLEAXIS_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 AngleAxis
18
- *
19
- * \brief Represents a 3D rotation as a rotation angle around an arbitrary 3D axis
20
- *
21
- * \param _Scalar the scalar type, i.e., the type of the coefficients.
22
- *
23
- * \warning When setting up an AngleAxis object, the axis vector \b must \b be \b normalized.
24
- *
25
- * The following two typedefs are provided for convenience:
26
- * \li \c AngleAxisf for \c float
27
- * \li \c AngleAxisd for \c double
28
- *
29
- * Combined with MatrixBase::Unit{X,Y,Z}, AngleAxis can be used to easily
30
- * mimic Euler-angles. Here is an example:
31
- * \include AngleAxis_mimic_euler.cpp
32
- * Output: \verbinclude AngleAxis_mimic_euler.out
33
- *
34
- * \note This class is not aimed to be used to store a rotation transformation,
35
- * but rather to make easier the creation of other rotation (Quaternion, rotation Matrix)
36
- * and transformation objects.
37
- *
38
- * \sa class Quaternion, class Transform, MatrixBase::UnitX()
39
- */
19
+ *
20
+ * \class AngleAxis
21
+ *
22
+ * \brief Represents a 3D rotation as a rotation angle around an arbitrary 3D axis
23
+ *
24
+ * \param Scalar_ the scalar type, i.e., the type of the coefficients.
25
+ *
26
+ * \warning When setting up an AngleAxis object, the axis vector \b must \b be \b normalized.
27
+ *
28
+ * The following two typedefs are provided for convenience:
29
+ * \li \c AngleAxisf for \c float
30
+ * \li \c AngleAxisd for \c double
31
+ *
32
+ * Combined with MatrixBase::Unit{X,Y,Z}, AngleAxis can be used to easily
33
+ * mimic Euler-angles. Here is an example:
34
+ * \include AngleAxis_mimic_euler.cpp
35
+ * Output: \verbinclude AngleAxis_mimic_euler.out
36
+ *
37
+ * \note This class is not aimed to be used to store a rotation transformation,
38
+ * but rather to make easier the creation of other rotation (Quaternion, rotation Matrix)
39
+ * and transformation objects.
40
+ *
41
+ * \sa class Quaternion, class Transform, MatrixBase::UnitX()
42
+ */
40
43
 
41
44
  namespace internal {
42
- template<typename _Scalar> struct traits<AngleAxis<_Scalar> >
43
- {
44
- typedef _Scalar Scalar;
45
+ template <typename Scalar_>
46
+ struct traits<AngleAxis<Scalar_> > {
47
+ typedef Scalar_ Scalar;
45
48
  };
46
- }
49
+ } // namespace internal
47
50
 
48
- template<typename _Scalar>
49
- class AngleAxis : public RotationBase<AngleAxis<_Scalar>,3>
50
- {
51
- typedef RotationBase<AngleAxis<_Scalar>,3> Base;
52
-
53
- public:
51
+ template <typename Scalar_>
52
+ class AngleAxis : public RotationBase<AngleAxis<Scalar_>, 3> {
53
+ typedef RotationBase<AngleAxis<Scalar_>, 3> Base;
54
54
 
55
+ public:
55
56
  using Base::operator*;
56
57
 
57
58
  enum { Dim = 3 };
58
59
  /** the scalar type of the coefficients */
59
- typedef _Scalar Scalar;
60
- typedef Matrix<Scalar,3,3> Matrix3;
61
- typedef Matrix<Scalar,3,1> Vector3;
60
+ typedef Scalar_ Scalar;
61
+ typedef Matrix<Scalar, 3, 3> Matrix3;
62
+ typedef Matrix<Scalar, 3, 1> Vector3;
62
63
  typedef Quaternion<Scalar> QuaternionType;
63
64
 
64
- protected:
65
-
65
+ protected:
66
66
  Vector3 m_axis;
67
67
  Scalar m_angle;
68
68
 
69
- public:
70
-
69
+ public:
71
70
  /** Default constructor without initialization. */
72
71
  EIGEN_DEVICE_FUNC AngleAxis() {}
73
72
  /** Constructs and initialize the angle-axis rotation from an \a angle in radian
74
- * and an \a axis which \b must \b be \b normalized.
75
- *
76
- * \warning If the \a axis vector is not normalized, then the angle-axis object
77
- * represents an invalid rotation. */
78
- template<typename Derived>
79
- EIGEN_DEVICE_FUNC
80
- inline AngleAxis(const Scalar& angle, const MatrixBase<Derived>& axis) : m_axis(axis), m_angle(angle) {}
73
+ * and an \a axis which \b must \b be \b normalized.
74
+ *
75
+ * \warning If the \a axis vector is not normalized, then the angle-axis object
76
+ * represents an invalid rotation. */
77
+ template <typename Derived>
78
+ EIGEN_DEVICE_FUNC inline AngleAxis(const Scalar& angle, const MatrixBase<Derived>& axis)
79
+ : m_axis(axis), m_angle(angle) {}
81
80
  /** Constructs and initialize the angle-axis rotation from a quaternion \a q.
82
- * This function implicitly normalizes the quaternion \a q.
83
- */
84
- template<typename QuatDerived>
85
- EIGEN_DEVICE_FUNC inline explicit AngleAxis(const QuaternionBase<QuatDerived>& q) { *this = q; }
81
+ * This function implicitly normalizes the quaternion \a q.
82
+ */
83
+ template <typename QuatDerived>
84
+ EIGEN_DEVICE_FUNC inline explicit AngleAxis(const QuaternionBase<QuatDerived>& q) {
85
+ *this = q;
86
+ }
86
87
  /** Constructs and initialize the angle-axis rotation from a 3x3 rotation matrix. */
87
- template<typename Derived>
88
- EIGEN_DEVICE_FUNC inline explicit AngleAxis(const MatrixBase<Derived>& m) { *this = m; }
88
+ template <typename Derived>
89
+ EIGEN_DEVICE_FUNC inline explicit AngleAxis(const MatrixBase<Derived>& m) {
90
+ *this = m;
91
+ }
89
92
 
90
93
  /** \returns the value of the rotation angle in radian */
91
94
  EIGEN_DEVICE_FUNC Scalar angle() const { return m_angle; }
@@ -95,49 +98,52 @@ public:
95
98
  /** \returns the rotation axis */
96
99
  EIGEN_DEVICE_FUNC const Vector3& axis() const { return m_axis; }
97
100
  /** \returns a read-write reference to the stored rotation axis.
98
- *
99
- * \warning The rotation axis must remain a \b unit vector.
100
- */
101
+ *
102
+ * \warning The rotation axis must remain a \b unit vector.
103
+ */
101
104
  EIGEN_DEVICE_FUNC Vector3& axis() { return m_axis; }
102
105
 
103
106
  /** Concatenates two rotations */
104
- EIGEN_DEVICE_FUNC inline QuaternionType operator* (const AngleAxis& other) const
105
- { return QuaternionType(*this) * QuaternionType(other); }
107
+ EIGEN_DEVICE_FUNC inline QuaternionType operator*(const AngleAxis& other) const {
108
+ return QuaternionType(*this) * QuaternionType(other);
109
+ }
106
110
 
107
111
  /** Concatenates two rotations */
108
- EIGEN_DEVICE_FUNC inline QuaternionType operator* (const QuaternionType& other) const
109
- { return QuaternionType(*this) * other; }
112
+ EIGEN_DEVICE_FUNC inline QuaternionType operator*(const QuaternionType& other) const {
113
+ return QuaternionType(*this) * other;
114
+ }
110
115
 
111
116
  /** Concatenates two rotations */
112
- friend EIGEN_DEVICE_FUNC inline QuaternionType operator* (const QuaternionType& a, const AngleAxis& b)
113
- { return a * QuaternionType(b); }
117
+ friend EIGEN_DEVICE_FUNC inline QuaternionType operator*(const QuaternionType& a, const AngleAxis& b) {
118
+ return a * QuaternionType(b);
119
+ }
114
120
 
115
121
  /** \returns the inverse rotation, i.e., an angle-axis with opposite rotation angle */
116
- EIGEN_DEVICE_FUNC AngleAxis inverse() const
117
- { return AngleAxis(-m_angle, m_axis); }
122
+ EIGEN_DEVICE_FUNC AngleAxis inverse() const { return AngleAxis(-m_angle, m_axis); }
118
123
 
119
- template<class QuatDerived>
124
+ template <class QuatDerived>
120
125
  EIGEN_DEVICE_FUNC AngleAxis& operator=(const QuaternionBase<QuatDerived>& q);
121
- template<typename Derived>
126
+ template <typename Derived>
122
127
  EIGEN_DEVICE_FUNC AngleAxis& operator=(const MatrixBase<Derived>& m);
123
128
 
124
- template<typename Derived>
129
+ template <typename Derived>
125
130
  EIGEN_DEVICE_FUNC AngleAxis& fromRotationMatrix(const MatrixBase<Derived>& m);
126
131
  EIGEN_DEVICE_FUNC Matrix3 toRotationMatrix(void) const;
127
132
 
128
133
  /** \returns \c *this with scalar type casted to \a NewScalarType
129
- *
130
- * Note that if \a NewScalarType is equal to the current scalar type of \c *this
131
- * then this function smartly returns a const reference to \c *this.
132
- */
133
- template<typename NewScalarType>
134
- EIGEN_DEVICE_FUNC inline typename internal::cast_return_type<AngleAxis,AngleAxis<NewScalarType> >::type cast() const
135
- { return typename internal::cast_return_type<AngleAxis,AngleAxis<NewScalarType> >::type(*this); }
134
+ *
135
+ * Note that if \a NewScalarType is equal to the current scalar type of \c *this
136
+ * then this function smartly returns a const reference to \c *this.
137
+ */
138
+ template <typename NewScalarType>
139
+ EIGEN_DEVICE_FUNC inline typename internal::cast_return_type<AngleAxis, AngleAxis<NewScalarType> >::type cast()
140
+ const {
141
+ return typename internal::cast_return_type<AngleAxis, AngleAxis<NewScalarType> >::type(*this);
142
+ }
136
143
 
137
144
  /** Copy constructor with scalar type conversion */
138
- template<typename OtherScalarType>
139
- EIGEN_DEVICE_FUNC inline explicit AngleAxis(const AngleAxis<OtherScalarType>& other)
140
- {
145
+ template <typename OtherScalarType>
146
+ EIGEN_DEVICE_FUNC inline explicit AngleAxis(const AngleAxis<OtherScalarType>& other) {
141
147
  m_axis = other.axis().template cast<Scalar>();
142
148
  m_angle = Scalar(other.angle());
143
149
  }
@@ -145,45 +151,41 @@ public:
145
151
  EIGEN_DEVICE_FUNC static inline const AngleAxis Identity() { return AngleAxis(Scalar(0), Vector3::UnitX()); }
146
152
 
147
153
  /** \returns \c true if \c *this is approximately equal to \a other, within the precision
148
- * determined by \a prec.
149
- *
150
- * \sa MatrixBase::isApprox() */
151
- EIGEN_DEVICE_FUNC bool isApprox(const AngleAxis& other, const typename NumTraits<Scalar>::Real& prec = NumTraits<Scalar>::dummy_precision()) const
152
- { return m_axis.isApprox(other.m_axis, prec) && internal::isApprox(m_angle,other.m_angle, prec); }
154
+ * determined by \a prec.
155
+ *
156
+ * \sa MatrixBase::isApprox() */
157
+ EIGEN_DEVICE_FUNC bool isApprox(const AngleAxis& other, const typename NumTraits<Scalar>::Real& prec =
158
+ NumTraits<Scalar>::dummy_precision()) const {
159
+ return m_axis.isApprox(other.m_axis, prec) && internal::isApprox(m_angle, other.m_angle, prec);
160
+ }
153
161
  };
154
162
 
155
163
  /** \ingroup Geometry_Module
156
- * single precision angle-axis type */
164
+ * single precision angle-axis type */
157
165
  typedef AngleAxis<float> AngleAxisf;
158
166
  /** \ingroup Geometry_Module
159
- * double precision angle-axis type */
167
+ * double precision angle-axis type */
160
168
  typedef AngleAxis<double> AngleAxisd;
161
169
 
162
170
  /** Set \c *this from a \b unit quaternion.
163
- *
164
- * The resulting axis is normalized, and the computed angle is in the [0,pi] range.
165
- *
166
- * This function implicitly normalizes the quaternion \a q.
167
- */
168
- template<typename Scalar>
169
- template<typename QuatDerived>
170
- EIGEN_DEVICE_FUNC AngleAxis<Scalar>& AngleAxis<Scalar>::operator=(const QuaternionBase<QuatDerived>& q)
171
- {
172
- EIGEN_USING_STD_MATH(atan2)
173
- EIGEN_USING_STD_MATH(abs)
171
+ *
172
+ * The resulting axis is normalized, and the computed angle is in the [0,pi] range.
173
+ *
174
+ * This function implicitly normalizes the quaternion \a q.
175
+ */
176
+ template <typename Scalar>
177
+ template <typename QuatDerived>
178
+ EIGEN_DEVICE_FUNC AngleAxis<Scalar>& AngleAxis<Scalar>::operator=(const QuaternionBase<QuatDerived>& q) {
179
+ EIGEN_USING_STD(atan2)
180
+ EIGEN_USING_STD(abs)
174
181
  Scalar n = q.vec().norm();
175
- if(n<NumTraits<Scalar>::epsilon())
176
- n = q.vec().stableNorm();
177
-
178
- if (n != Scalar(0))
179
- {
180
- m_angle = Scalar(2)*atan2(n, abs(q.w()));
181
- if(q.w() < Scalar(0))
182
- n = -n;
183
- m_axis = q.vec() / n;
184
- }
185
- else
186
- {
182
+ if (n < NumTraits<Scalar>::epsilon()) n = q.vec().stableNorm();
183
+
184
+ if (n != Scalar(0)) {
185
+ m_angle = Scalar(2) * atan2(n, abs(q.w()));
186
+ if (q.w() < Scalar(0)) n = -n;
187
+ m_axis = q.vec() / n;
188
+ } else {
187
189
  m_angle = Scalar(0);
188
190
  m_axis << Scalar(1), Scalar(0), Scalar(0);
189
191
  }
@@ -191,57 +193,53 @@ EIGEN_DEVICE_FUNC AngleAxis<Scalar>& AngleAxis<Scalar>::operator=(const Quaterni
191
193
  }
192
194
 
193
195
  /** Set \c *this from a 3x3 rotation matrix \a mat.
194
- */
195
- template<typename Scalar>
196
- template<typename Derived>
197
- EIGEN_DEVICE_FUNC AngleAxis<Scalar>& AngleAxis<Scalar>::operator=(const MatrixBase<Derived>& mat)
198
- {
196
+ */
197
+ template <typename Scalar>
198
+ template <typename Derived>
199
+ EIGEN_DEVICE_FUNC AngleAxis<Scalar>& AngleAxis<Scalar>::operator=(const MatrixBase<Derived>& mat) {
199
200
  // Since a direct conversion would not be really faster,
200
201
  // let's use the robust Quaternion implementation:
201
202
  return *this = QuaternionType(mat);
202
203
  }
203
204
 
204
205
  /**
205
- * \brief Sets \c *this from a 3x3 rotation matrix.
206
- **/
207
- template<typename Scalar>
208
- template<typename Derived>
209
- EIGEN_DEVICE_FUNC AngleAxis<Scalar>& AngleAxis<Scalar>::fromRotationMatrix(const MatrixBase<Derived>& mat)
210
- {
206
+ * \brief Sets \c *this from a 3x3 rotation matrix.
207
+ **/
208
+ template <typename Scalar>
209
+ template <typename Derived>
210
+ EIGEN_DEVICE_FUNC AngleAxis<Scalar>& AngleAxis<Scalar>::fromRotationMatrix(const MatrixBase<Derived>& mat) {
211
211
  return *this = QuaternionType(mat);
212
212
  }
213
213
 
214
214
  /** Constructs and \returns an equivalent 3x3 rotation matrix.
215
- */
216
- template<typename Scalar>
217
- typename AngleAxis<Scalar>::Matrix3
218
- EIGEN_DEVICE_FUNC AngleAxis<Scalar>::toRotationMatrix(void) const
219
- {
220
- EIGEN_USING_STD_MATH(sin)
221
- EIGEN_USING_STD_MATH(cos)
215
+ */
216
+ template <typename Scalar>
217
+ typename AngleAxis<Scalar>::Matrix3 EIGEN_DEVICE_FUNC AngleAxis<Scalar>::toRotationMatrix(void) const {
218
+ EIGEN_USING_STD(sin)
219
+ EIGEN_USING_STD(cos)
222
220
  Matrix3 res;
223
- Vector3 sin_axis = sin(m_angle) * m_axis;
221
+ Vector3 sin_axis = sin(m_angle) * m_axis;
224
222
  Scalar c = cos(m_angle);
225
- Vector3 cos1_axis = (Scalar(1)-c) * m_axis;
223
+ Vector3 cos1_axis = (Scalar(1) - c) * m_axis;
226
224
 
227
225
  Scalar tmp;
228
226
  tmp = cos1_axis.x() * m_axis.y();
229
- res.coeffRef(0,1) = tmp - sin_axis.z();
230
- res.coeffRef(1,0) = tmp + sin_axis.z();
227
+ res.coeffRef(0, 1) = tmp - sin_axis.z();
228
+ res.coeffRef(1, 0) = tmp + sin_axis.z();
231
229
 
232
230
  tmp = cos1_axis.x() * m_axis.z();
233
- res.coeffRef(0,2) = tmp + sin_axis.y();
234
- res.coeffRef(2,0) = tmp - sin_axis.y();
231
+ res.coeffRef(0, 2) = tmp + sin_axis.y();
232
+ res.coeffRef(2, 0) = tmp - sin_axis.y();
235
233
 
236
234
  tmp = cos1_axis.y() * m_axis.z();
237
- res.coeffRef(1,2) = tmp - sin_axis.x();
238
- res.coeffRef(2,1) = tmp + sin_axis.x();
235
+ res.coeffRef(1, 2) = tmp - sin_axis.x();
236
+ res.coeffRef(2, 1) = tmp + sin_axis.x();
239
237
 
240
238
  res.diagonal() = (cos1_axis.cwiseProduct(m_axis)).array() + c;
241
239
 
242
240
  return res;
243
241
  }
244
242
 
245
- } // end namespace Eigen
243
+ } // end namespace Eigen
246
244
 
247
- #endif // EIGEN_ANGLEAXIS_H
245
+ #endif // EIGEN_ANGLEAXIS_H
@@ -2,6 +2,7 @@
2
2
  // for linear algebra.
3
3
  //
4
4
  // Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
5
+ // Copyright (C) 2023 Juraj Oršulić, University of Zagreb <juraj.orsulic@fer.hr>
5
6
  //
6
7
  // This Source Code Form is subject to the terms of the Mozilla
7
8
  // Public License v. 2.0. If a copy of the MPL was not distributed
@@ -10,105 +11,193 @@
10
11
  #ifndef EIGEN_EULERANGLES_H
11
12
  #define EIGEN_EULERANGLES_H
12
13
 
13
- namespace Eigen {
14
+ // IWYU pragma: private
15
+ #include "./InternalHeaderCheck.h"
16
+
17
+ namespace Eigen {
18
+
19
+ /** \geometry_module \ingroup Geometry_Module
20
+ *
21
+ *
22
+ * \returns the canonical Euler-angles of the rotation matrix \c *this using the convention defined by the triplet (\a
23
+ * a0,\a a1,\a a2)
24
+ *
25
+ * Each of the three parameters \a a0,\a a1,\a a2 represents the respective rotation axis as an integer in {0,1,2}.
26
+ * For instance, in:
27
+ * \code Vector3f ea = mat.eulerAngles(2, 0, 2); \endcode
28
+ * "2" represents the z axis and "0" the x axis, etc. The returned angles are such that
29
+ * we have the following equality:
30
+ * \code
31
+ * mat == AngleAxisf(ea[0], Vector3f::UnitZ())
32
+ * * AngleAxisf(ea[1], Vector3f::UnitX())
33
+ * * AngleAxisf(ea[2], Vector3f::UnitZ()); \endcode
34
+ * This corresponds to the right-multiply conventions (with right hand side frames).
35
+ *
36
+ * For Tait-Bryan angle configurations (a0 != a2), the returned angles are in the ranges [-pi:pi]x[-pi/2:pi/2]x[-pi:pi].
37
+ * For proper Euler angle configurations (a0 == a2), the returned angles are in the ranges [-pi:pi]x[0:pi]x[-pi:pi].
38
+ *
39
+ * The approach used is also described here:
40
+ * https://d3cw3dd2w32x2b.cloudfront.net/wp-content/uploads/2012/07/euler-angles.pdf
41
+ *
42
+ * \sa class AngleAxis
43
+ */
44
+ template <typename Derived>
45
+ EIGEN_DEVICE_FUNC inline Matrix<typename MatrixBase<Derived>::Scalar, 3, 1> MatrixBase<Derived>::canonicalEulerAngles(
46
+ Index a0, Index a1, Index a2) const {
47
+ /* Implemented from Graphics Gems IV */
48
+ EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived, 3, 3)
49
+
50
+ Matrix<Scalar, 3, 1> res;
51
+
52
+ const Index odd = ((a0 + 1) % 3 == a1) ? 0 : 1;
53
+ const Index i = a0;
54
+ const Index j = (a0 + 1 + odd) % 3;
55
+ const Index k = (a0 + 2 - odd) % 3;
56
+
57
+ if (a0 == a2) {
58
+ // Proper Euler angles (same first and last axis).
59
+ // The i, j, k indices enable addressing the input matrix as the XYX archetype matrix (see Graphics Gems IV),
60
+ // where e.g. coeff(k, i) means third column, first row in the XYX archetype matrix:
61
+ // c2 s2s1 s2c1
62
+ // s2s3 -c2s1s3 + c1c3 -c2c1s3 - s1c3
63
+ // -s2c3 c2s1c3 + c1s3 c2c1c3 - s1s3
64
+
65
+ // Note: s2 is always positive.
66
+ Scalar s2 = numext::hypot(coeff(j, i), coeff(k, i));
67
+ if (odd) {
68
+ res[0] = numext::atan2(coeff(j, i), coeff(k, i));
69
+ // s2 is always positive, so res[1] will be within the canonical [0, pi] range
70
+ res[1] = numext::atan2(s2, coeff(i, i));
71
+ } else {
72
+ // In the !odd case, signs of all three angles are flipped at the very end. To keep the solution within the
73
+ // canonical range, we flip the solution and make res[1] always negative here (since s2 is always positive,
74
+ // -atan2(s2, c2) will always be negative). The final flip at the end due to !odd will thus make res[1] positive
75
+ // and canonical. NB: in the general case, there are two correct solutions, but only one is canonical. For proper
76
+ // Euler angles, flipping from one solution to the other involves flipping the sign of the second angle res[1] and
77
+ // adding/subtracting pi to the first and third angles. The addition/subtraction of pi to the first angle res[0]
78
+ // is handled here by flipping the signs of arguments to atan2, while the calculation of the third angle does not
79
+ // need special adjustment since it uses the adjusted res[0] as the input and produces a correct result.
80
+ res[0] = numext::atan2(-coeff(j, i), -coeff(k, i));
81
+ res[1] = -numext::atan2(s2, coeff(i, i));
82
+ }
83
+
84
+ // With a=(0,1,0), we have i=0; j=1; k=2, and after computing the first two angles,
85
+ // we can compute their respective rotation, and apply its inverse to M. Since the result must
86
+ // be a rotation around x, we have:
87
+ //
88
+ // c2 s1.s2 c1.s2 1 0 0
89
+ // 0 c1 -s1 * M = 0 c3 s3
90
+ // -s2 s1.c2 c1.c2 0 -s3 c3
91
+ //
92
+ // Thus: m11.c1 - m21.s1 = c3 & m12.c1 - m22.s1 = s3
93
+
94
+ Scalar s1 = numext::sin(res[0]);
95
+ Scalar c1 = numext::cos(res[0]);
96
+ res[2] = numext::atan2(c1 * coeff(j, k) - s1 * coeff(k, k), c1 * coeff(j, j) - s1 * coeff(k, j));
97
+ } else {
98
+ // Tait-Bryan angles (all three axes are different; typically used for yaw-pitch-roll calculations).
99
+ // The i, j, k indices enable addressing the input matrix as the XYZ archetype matrix (see Graphics Gems IV),
100
+ // where e.g. coeff(k, i) means third column, first row in the XYZ archetype matrix:
101
+ // c2c3 s2s1c3 - c1s3 s2c1c3 + s1s3
102
+ // c2s3 s2s1s3 + c1c3 s2c1s3 - s1c3
103
+ // -s2 c2s1 c2c1
104
+
105
+ res[0] = numext::atan2(coeff(j, k), coeff(k, k));
106
+
107
+ Scalar c2 = numext::hypot(coeff(i, i), coeff(i, j));
108
+ // c2 is always positive, so the following atan2 will always return a result in the correct canonical middle angle
109
+ // range [-pi/2, pi/2]
110
+ res[1] = numext::atan2(-coeff(i, k), c2);
111
+
112
+ Scalar s1 = numext::sin(res[0]);
113
+ Scalar c1 = numext::cos(res[0]);
114
+ res[2] = numext::atan2(s1 * coeff(k, i) - c1 * coeff(j, i), c1 * coeff(j, j) - s1 * coeff(k, j));
115
+ }
116
+ if (!odd) {
117
+ res = -res;
118
+ }
119
+
120
+ return res;
121
+ }
14
122
 
15
123
  /** \geometry_module \ingroup Geometry_Module
16
- *
17
- *
18
- * \returns the Euler-angles of the rotation matrix \c *this using the convention defined by the triplet (\a a0,\a a1,\a a2)
19
- *
20
- * Each of the three parameters \a a0,\a a1,\a a2 represents the respective rotation axis as an integer in {0,1,2}.
21
- * For instance, in:
22
- * \code Vector3f ea = mat.eulerAngles(2, 0, 2); \endcode
23
- * "2" represents the z axis and "0" the x axis, etc. The returned angles are such that
24
- * we have the following equality:
25
- * \code
26
- * mat == AngleAxisf(ea[0], Vector3f::UnitZ())
27
- * * AngleAxisf(ea[1], Vector3f::UnitX())
28
- * * AngleAxisf(ea[2], Vector3f::UnitZ()); \endcode
29
- * This corresponds to the right-multiply conventions (with right hand side frames).
30
- *
31
- * The returned angles are in the ranges [0:pi]x[-pi:pi]x[-pi:pi].
32
- *
33
- * \sa class AngleAxis
34
- */
35
- template<typename Derived>
36
- EIGEN_DEVICE_FUNC inline Matrix<typename MatrixBase<Derived>::Scalar,3,1>
37
- MatrixBase<Derived>::eulerAngles(Index a0, Index a1, Index a2) const
38
- {
39
- EIGEN_USING_STD_MATH(atan2)
40
- EIGEN_USING_STD_MATH(sin)
41
- EIGEN_USING_STD_MATH(cos)
124
+ *
125
+ *
126
+ * \returns the Euler-angles of the rotation matrix \c *this using the convention defined by the triplet (\a a0,\a a1,\a
127
+ * a2)
128
+ *
129
+ * NB: The returned angles are in non-canonical ranges [0:pi]x[-pi:pi]x[-pi:pi]. For canonical Tait-Bryan/proper Euler
130
+ * ranges, use canonicalEulerAngles.
131
+ *
132
+ * \sa MatrixBase::canonicalEulerAngles
133
+ * \sa class AngleAxis
134
+ */
135
+ template <typename Derived>
136
+ EIGEN_DEVICE_FUNC inline Matrix<typename MatrixBase<Derived>::Scalar, 3, 1> MatrixBase<Derived>::eulerAngles(
137
+ Index a0, Index a1, Index a2) const {
42
138
  /* Implemented from Graphics Gems IV */
43
- EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived,3,3)
139
+ EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived, 3, 3)
44
140
 
45
- Matrix<Scalar,3,1> res;
46
- typedef Matrix<typename Derived::Scalar,2,1> Vector2;
141
+ Matrix<Scalar, 3, 1> res;
47
142
 
48
- const Index odd = ((a0+1)%3 == a1) ? 0 : 1;
143
+ const Index odd = ((a0 + 1) % 3 == a1) ? 0 : 1;
49
144
  const Index i = a0;
50
- const Index j = (a0 + 1 + odd)%3;
51
- const Index k = (a0 + 2 - odd)%3;
52
-
53
- if (a0==a2)
54
- {
55
- res[0] = atan2(coeff(j,i), coeff(k,i));
56
- if((odd && res[0]<Scalar(0)) || ((!odd) && res[0]>Scalar(0)))
57
- {
58
- if(res[0] > Scalar(0)) {
145
+ const Index j = (a0 + 1 + odd) % 3;
146
+ const Index k = (a0 + 2 - odd) % 3;
147
+
148
+ if (a0 == a2) {
149
+ res[0] = numext::atan2(coeff(j, i), coeff(k, i));
150
+ if ((odd && res[0] < Scalar(0)) || ((!odd) && res[0] > Scalar(0))) {
151
+ if (res[0] > Scalar(0)) {
59
152
  res[0] -= Scalar(EIGEN_PI);
60
- }
61
- else {
153
+ } else {
62
154
  res[0] += Scalar(EIGEN_PI);
63
155
  }
64
- Scalar s2 = Vector2(coeff(j,i), coeff(k,i)).norm();
65
- res[1] = -atan2(s2, coeff(i,i));
66
- }
67
- else
68
- {
69
- Scalar s2 = Vector2(coeff(j,i), coeff(k,i)).norm();
70
- res[1] = atan2(s2, coeff(i,i));
156
+
157
+ Scalar s2 = numext::hypot(coeff(j, i), coeff(k, i));
158
+ res[1] = -numext::atan2(s2, coeff(i, i));
159
+ } else {
160
+ Scalar s2 = numext::hypot(coeff(j, i), coeff(k, i));
161
+ res[1] = numext::atan2(s2, coeff(i, i));
71
162
  }
72
-
163
+
73
164
  // With a=(0,1,0), we have i=0; j=1; k=2, and after computing the first two angles,
74
165
  // we can compute their respective rotation, and apply its inverse to M. Since the result must
75
166
  // be a rotation around x, we have:
76
167
  //
77
- // c2 s1.s2 c1.s2 1 0 0
168
+ // c2 s1.s2 c1.s2 1 0 0
78
169
  // 0 c1 -s1 * M = 0 c3 s3
79
170
  // -s2 s1.c2 c1.c2 0 -s3 c3
80
171
  //
81
172
  // Thus: m11.c1 - m21.s1 = c3 & m12.c1 - m22.s1 = s3
82
-
83
- Scalar s1 = sin(res[0]);
84
- Scalar c1 = cos(res[0]);
85
- res[2] = atan2(c1*coeff(j,k)-s1*coeff(k,k), c1*coeff(j,j) - s1 * coeff(k,j));
86
- }
87
- else
88
- {
89
- res[0] = atan2(coeff(j,k), coeff(k,k));
90
- Scalar c2 = Vector2(coeff(i,i), coeff(i,j)).norm();
91
- if((odd && res[0]<Scalar(0)) || ((!odd) && res[0]>Scalar(0))) {
92
- if(res[0] > Scalar(0)) {
173
+
174
+ Scalar s1 = numext::sin(res[0]);
175
+ Scalar c1 = numext::cos(res[0]);
176
+ res[2] = numext::atan2(c1 * coeff(j, k) - s1 * coeff(k, k), c1 * coeff(j, j) - s1 * coeff(k, j));
177
+ } else {
178
+ res[0] = numext::atan2(coeff(j, k), coeff(k, k));
179
+ Scalar c2 = numext::hypot(coeff(i, i), coeff(i, j));
180
+ if ((odd && res[0] < Scalar(0)) || ((!odd) && res[0] > Scalar(0))) {
181
+ if (res[0] > Scalar(0)) {
93
182
  res[0] -= Scalar(EIGEN_PI);
94
- }
95
- else {
183
+ } else {
96
184
  res[0] += Scalar(EIGEN_PI);
97
185
  }
98
- res[1] = atan2(-coeff(i,k), -c2);
186
+ res[1] = numext::atan2(-coeff(i, k), -c2);
187
+ } else {
188
+ res[1] = numext::atan2(-coeff(i, k), c2);
99
189
  }
100
- else
101
- res[1] = atan2(-coeff(i,k), c2);
102
- Scalar s1 = sin(res[0]);
103
- Scalar c1 = cos(res[0]);
104
- res[2] = atan2(s1*coeff(k,i)-c1*coeff(j,i), c1*coeff(j,j) - s1 * coeff(k,j));
190
+ Scalar s1 = numext::sin(res[0]);
191
+ Scalar c1 = numext::cos(res[0]);
192
+ res[2] = numext::atan2(s1 * coeff(k, i) - c1 * coeff(j, i), c1 * coeff(j, j) - s1 * coeff(k, j));
105
193
  }
106
- if (!odd)
194
+ if (!odd) {
107
195
  res = -res;
108
-
196
+ }
197
+
109
198
  return res;
110
199
  }
111
200
 
112
- } // end namespace Eigen
201
+ } // end namespace Eigen
113
202
 
114
- #endif // EIGEN_EULERANGLES_H
203
+ #endif // EIGEN_EULERANGLES_H