@smake/eigen 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -20
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +187 -120
  6. package/eigen/Eigen/Eigenvalues +16 -13
  7. package/eigen/Eigen/Geometry +18 -18
  8. package/eigen/Eigen/Householder +9 -7
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -13
  11. package/eigen/Eigen/KLUSupport +23 -21
  12. package/eigen/Eigen/LU +15 -16
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -51
  15. package/eigen/Eigen/PaStiXSupport +23 -21
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -20
  18. package/eigen/Eigen/QtAlignedMalloc +5 -12
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -17
  21. package/eigen/Eigen/Sparse +1 -2
  22. package/eigen/Eigen/SparseCholesky +18 -15
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +9 -9
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
  37. package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
  42. package/eigen/Eigen/src/Core/Array.h +329 -370
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
  48. package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
  49. package/eigen/Eigen/src/Core/Block.h +371 -390
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
  53. package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
  59. package/eigen/Eigen/src/Core/DenseBase.h +630 -658
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
  61. package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +168 -207
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +167 -217
  67. package/eigen/Eigen/src/Core/EigenBase.h +74 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
  75. package/eigen/Eigen/src/Core/IO.h +131 -156
  76. package/eigen/Eigen/src/Core/IndexedView.h +209 -125
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +50 -59
  80. package/eigen/Eigen/src/Core/Map.h +123 -141
  81. package/eigen/Eigen/src/Core/MapBase.h +255 -282
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
  84. package/eigen/Eigen/src/Core/Matrix.h +463 -494
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
  86. package/eigen/Eigen/src/Core/NestByValue.h +58 -52
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -86
  88. package/eigen/Eigen/src/Core/NumTraits.h +206 -206
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
  92. package/eigen/Eigen/src/Core/Product.h +246 -130
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
  94. package/eigen/Eigen/src/Core/Random.h +153 -164
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +334 -314
  98. package/eigen/Eigen/src/Core/Ref.h +259 -257
  99. package/eigen/Eigen/src/Core/Replicate.h +92 -104
  100. package/eigen/Eigen/src/Core/Reshaped.h +215 -271
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +133 -148
  103. package/eigen/Eigen/src/Core/Select.h +68 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +88 -102
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
  109. package/eigen/Eigen/src/Core/SolverBase.h +132 -133
  110. package/eigen/Eigen/src/Core/StableNorm.h +113 -147
  111. package/eigen/Eigen/src/Core/StlIterators.h +404 -248
  112. package/eigen/Eigen/src/Core/Stride.h +90 -92
  113. package/eigen/Eigen/src/Core/Swap.h +70 -39
  114. package/eigen/Eigen/src/Core/Transpose.h +258 -295
  115. package/eigen/Eigen/src/Core/Transpositions.h +270 -333
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
  119. package/eigen/Eigen/src/Core/Visitor.h +464 -308
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
  217. package/eigen/Eigen/src/Core/util/Constants.h +297 -262
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
  226. package/eigen/Eigen/src/Core/util/Macros.h +655 -773
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +970 -748
  229. package/eigen/Eigen/src/Core/util/Meta.h +581 -633
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
  264. package/eigen/Eigen/src/Geometry/Transform.h +858 -936
  265. package/eigen/Eigen/src/Geometry/Translation.h +94 -92
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
  269. package/eigen/Eigen/src/Householder/Householder.h +102 -124
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
  285. package/eigen/Eigen/src/LU/Determinant.h +50 -69
  286. package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/package.json +1 -1
  409. package/eigen/COPYING.APACHE +0 -203
  410. package/eigen/COPYING.BSD +0 -26
  411. package/eigen/COPYING.GPL +0 -674
  412. package/eigen/COPYING.LGPL +0 -502
  413. package/eigen/COPYING.MINPACK +0 -51
  414. package/eigen/COPYING.MPL2 +0 -373
  415. package/eigen/COPYING.README +0 -18
  416. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
  417. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
  418. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
  419. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
  420. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  421. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  422. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  423. package/eigen/Eigen/src/misc/lapack.h +0 -152
  424. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
  425. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
  426. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  427. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
  428. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  429. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
  430. package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
  431. package/eigen/README.md +0 -5
@@ -10,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
- {
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) {
172
179
  EIGEN_USING_STD(atan2)
173
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
- {
215
+ */
216
+ template <typename Scalar>
217
+ typename AngleAxis<Scalar>::Matrix3 EIGEN_DEVICE_FUNC AngleAxis<Scalar>::toRotationMatrix(void) const {
220
218
  EIGEN_USING_STD(sin)
221
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(atan2)
40
- EIGEN_USING_STD(sin)
41
- EIGEN_USING_STD(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