@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.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -20
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +187 -120
- package/eigen/Eigen/Eigenvalues +16 -13
- package/eigen/Eigen/Geometry +18 -18
- package/eigen/Eigen/Householder +9 -7
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -13
- package/eigen/Eigen/KLUSupport +23 -21
- package/eigen/Eigen/LU +15 -16
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -51
- package/eigen/Eigen/PaStiXSupport +23 -21
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -20
- package/eigen/Eigen/QtAlignedMalloc +5 -12
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -17
- package/eigen/Eigen/Sparse +1 -2
- package/eigen/Eigen/SparseCholesky +18 -15
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +9 -9
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
- package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
- package/eigen/Eigen/src/Core/Array.h +329 -370
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
- package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
- package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
- package/eigen/Eigen/src/Core/Block.h +371 -390
- package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
- package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
- package/eigen/Eigen/src/Core/DenseBase.h +630 -658
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
- package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +168 -207
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +167 -217
- package/eigen/Eigen/src/Core/EigenBase.h +74 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
- package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
- package/eigen/Eigen/src/Core/IO.h +131 -156
- package/eigen/Eigen/src/Core/IndexedView.h +209 -125
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +50 -59
- package/eigen/Eigen/src/Core/Map.h +123 -141
- package/eigen/Eigen/src/Core/MapBase.h +255 -282
- package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
- package/eigen/Eigen/src/Core/Matrix.h +463 -494
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
- package/eigen/Eigen/src/Core/NestByValue.h +58 -52
- package/eigen/Eigen/src/Core/NoAlias.h +79 -86
- package/eigen/Eigen/src/Core/NumTraits.h +206 -206
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
- package/eigen/Eigen/src/Core/Product.h +246 -130
- package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
- package/eigen/Eigen/src/Core/Random.h +153 -164
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +334 -314
- package/eigen/Eigen/src/Core/Ref.h +259 -257
- package/eigen/Eigen/src/Core/Replicate.h +92 -104
- package/eigen/Eigen/src/Core/Reshaped.h +215 -271
- package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
- package/eigen/Eigen/src/Core/Reverse.h +133 -148
- package/eigen/Eigen/src/Core/Select.h +68 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +88 -102
- package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
- package/eigen/Eigen/src/Core/SolverBase.h +132 -133
- package/eigen/Eigen/src/Core/StableNorm.h +113 -147
- package/eigen/Eigen/src/Core/StlIterators.h +404 -248
- package/eigen/Eigen/src/Core/Stride.h +90 -92
- package/eigen/Eigen/src/Core/Swap.h +70 -39
- package/eigen/Eigen/src/Core/Transpose.h +258 -295
- package/eigen/Eigen/src/Core/Transpositions.h +270 -333
- package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
- package/eigen/Eigen/src/Core/Visitor.h +464 -308
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
- package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
- package/eigen/Eigen/src/Core/util/Constants.h +297 -262
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
- package/eigen/Eigen/src/Core/util/Macros.h +655 -773
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +970 -748
- package/eigen/Eigen/src/Core/util/Meta.h +581 -633
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
- package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
- package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
- package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
- package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
- package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
- package/eigen/Eigen/src/Geometry/Transform.h +858 -936
- package/eigen/Eigen/src/Geometry/Translation.h +94 -92
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
- package/eigen/Eigen/src/Householder/Householder.h +102 -124
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
- package/eigen/Eigen/src/LU/Determinant.h +50 -69
- package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
- package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
- package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
- package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/package.json +1 -1
- package/eigen/COPYING.APACHE +0 -203
- package/eigen/COPYING.BSD +0 -26
- package/eigen/COPYING.GPL +0 -674
- package/eigen/COPYING.LGPL +0 -502
- package/eigen/COPYING.MINPACK +0 -51
- package/eigen/COPYING.MPL2 +0 -373
- package/eigen/COPYING.README +0 -18
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
- package/eigen/README.md +0 -5
|
@@ -10,67 +10,65 @@
|
|
|
10
10
|
#ifndef EIGEN_ROTATION2D_H
|
|
11
11
|
#define EIGEN_ROTATION2D_H
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
16
|
+
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
/** \geometry_module \ingroup Geometry_Module
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
*
|
|
20
|
+
* \class Rotation2D
|
|
21
|
+
*
|
|
22
|
+
* \brief Represents a rotation/orientation in a 2 dimensional space.
|
|
23
|
+
*
|
|
24
|
+
* \tparam Scalar_ the scalar type, i.e., the type of the coefficients
|
|
25
|
+
*
|
|
26
|
+
* This class is equivalent to a single scalar representing a counter clock wise rotation
|
|
27
|
+
* as a single angle in radian. It provides some additional features such as the automatic
|
|
28
|
+
* conversion from/to a 2x2 rotation matrix. Moreover this class aims to provide a similar
|
|
29
|
+
* interface to Quaternion in order to facilitate the writing of generic algorithms
|
|
30
|
+
* dealing with rotations.
|
|
31
|
+
*
|
|
32
|
+
* \sa class Quaternion, class Transform
|
|
33
|
+
*/
|
|
31
34
|
|
|
32
35
|
namespace internal {
|
|
33
36
|
|
|
34
|
-
template<typename
|
|
35
|
-
{
|
|
36
|
-
typedef
|
|
37
|
+
template <typename Scalar_>
|
|
38
|
+
struct traits<Rotation2D<Scalar_> > {
|
|
39
|
+
typedef Scalar_ Scalar;
|
|
37
40
|
};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
template<typename _Scalar>
|
|
41
|
-
class Rotation2D : public RotationBase<Rotation2D<_Scalar>,2>
|
|
42
|
-
{
|
|
43
|
-
typedef RotationBase<Rotation2D<_Scalar>,2> Base;
|
|
41
|
+
} // end namespace internal
|
|
44
42
|
|
|
45
|
-
|
|
43
|
+
template <typename Scalar_>
|
|
44
|
+
class Rotation2D : public RotationBase<Rotation2D<Scalar_>, 2> {
|
|
45
|
+
typedef RotationBase<Rotation2D<Scalar_>, 2> Base;
|
|
46
46
|
|
|
47
|
+
public:
|
|
47
48
|
using Base::operator*;
|
|
48
49
|
|
|
49
50
|
enum { Dim = 2 };
|
|
50
51
|
/** the scalar type of the coefficients */
|
|
51
|
-
typedef
|
|
52
|
-
typedef Matrix<Scalar,2,1> Vector2;
|
|
53
|
-
typedef Matrix<Scalar,2,2> Matrix2;
|
|
54
|
-
|
|
55
|
-
protected:
|
|
52
|
+
typedef Scalar_ Scalar;
|
|
53
|
+
typedef Matrix<Scalar, 2, 1> Vector2;
|
|
54
|
+
typedef Matrix<Scalar, 2, 2> Matrix2;
|
|
56
55
|
|
|
56
|
+
protected:
|
|
57
57
|
Scalar m_angle;
|
|
58
58
|
|
|
59
|
-
public:
|
|
60
|
-
|
|
59
|
+
public:
|
|
61
60
|
/** Construct a 2D counter clock wise rotation from the angle \a a in radian. */
|
|
62
61
|
EIGEN_DEVICE_FUNC explicit inline Rotation2D(const Scalar& a) : m_angle(a) {}
|
|
63
|
-
|
|
64
|
-
/** Default constructor
|
|
62
|
+
|
|
63
|
+
/** Default constructor without initialization. The represented rotation is undefined. */
|
|
65
64
|
EIGEN_DEVICE_FUNC Rotation2D() {}
|
|
66
65
|
|
|
67
66
|
/** Construct a 2D rotation from a 2x2 rotation matrix \a mat.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
template<typename Derived>
|
|
72
|
-
EIGEN_DEVICE_FUNC explicit Rotation2D(const MatrixBase<Derived>& m)
|
|
73
|
-
{
|
|
67
|
+
*
|
|
68
|
+
* \sa fromRotationMatrix()
|
|
69
|
+
*/
|
|
70
|
+
template <typename Derived>
|
|
71
|
+
EIGEN_DEVICE_FUNC explicit Rotation2D(const MatrixBase<Derived>& m) {
|
|
74
72
|
fromRotationMatrix(m.derived());
|
|
75
73
|
}
|
|
76
74
|
|
|
@@ -79,18 +77,20 @@ public:
|
|
|
79
77
|
|
|
80
78
|
/** \returns a read-write reference to the rotation angle */
|
|
81
79
|
EIGEN_DEVICE_FUNC inline Scalar& angle() { return m_angle; }
|
|
82
|
-
|
|
80
|
+
|
|
83
81
|
/** \returns the rotation angle in [0,2pi] */
|
|
84
82
|
EIGEN_DEVICE_FUNC inline Scalar smallestPositiveAngle() const {
|
|
85
|
-
Scalar tmp = numext::fmod(m_angle,Scalar(2*EIGEN_PI));
|
|
86
|
-
return tmp<Scalar(0) ? tmp + Scalar(2*EIGEN_PI) : tmp;
|
|
83
|
+
Scalar tmp = numext::fmod(m_angle, Scalar(2 * EIGEN_PI));
|
|
84
|
+
return tmp < Scalar(0) ? tmp + Scalar(2 * EIGEN_PI) : tmp;
|
|
87
85
|
}
|
|
88
|
-
|
|
86
|
+
|
|
89
87
|
/** \returns the rotation angle in [-pi,pi] */
|
|
90
88
|
EIGEN_DEVICE_FUNC inline Scalar smallestAngle() const {
|
|
91
|
-
Scalar tmp = numext::fmod(m_angle,Scalar(2*EIGEN_PI));
|
|
92
|
-
if(tmp>Scalar(EIGEN_PI))
|
|
93
|
-
|
|
89
|
+
Scalar tmp = numext::fmod(m_angle, Scalar(2 * EIGEN_PI));
|
|
90
|
+
if (tmp > Scalar(EIGEN_PI))
|
|
91
|
+
tmp -= Scalar(2 * EIGEN_PI);
|
|
92
|
+
else if (tmp < -Scalar(EIGEN_PI))
|
|
93
|
+
tmp += Scalar(2 * EIGEN_PI);
|
|
94
94
|
return tmp;
|
|
95
95
|
}
|
|
96
96
|
|
|
@@ -98,95 +98,97 @@ public:
|
|
|
98
98
|
EIGEN_DEVICE_FUNC inline Rotation2D inverse() const { return Rotation2D(-m_angle); }
|
|
99
99
|
|
|
100
100
|
/** Concatenates two rotations */
|
|
101
|
-
EIGEN_DEVICE_FUNC inline Rotation2D operator*(const Rotation2D& other) const
|
|
102
|
-
|
|
101
|
+
EIGEN_DEVICE_FUNC inline Rotation2D operator*(const Rotation2D& other) const {
|
|
102
|
+
return Rotation2D(m_angle + other.m_angle);
|
|
103
|
+
}
|
|
103
104
|
|
|
104
105
|
/** Concatenates two rotations */
|
|
105
|
-
EIGEN_DEVICE_FUNC inline Rotation2D& operator*=(const Rotation2D& other)
|
|
106
|
-
|
|
106
|
+
EIGEN_DEVICE_FUNC inline Rotation2D& operator*=(const Rotation2D& other) {
|
|
107
|
+
m_angle += other.m_angle;
|
|
108
|
+
return *this;
|
|
109
|
+
}
|
|
107
110
|
|
|
108
111
|
/** Applies the rotation to a 2D vector */
|
|
109
|
-
EIGEN_DEVICE_FUNC Vector2 operator*
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
template<typename Derived>
|
|
112
|
+
EIGEN_DEVICE_FUNC Vector2 operator*(const Vector2& vec) const { return toRotationMatrix() * vec; }
|
|
113
|
+
|
|
114
|
+
template <typename Derived>
|
|
113
115
|
EIGEN_DEVICE_FUNC Rotation2D& fromRotationMatrix(const MatrixBase<Derived>& m);
|
|
114
116
|
EIGEN_DEVICE_FUNC Matrix2 toRotationMatrix() const;
|
|
115
117
|
|
|
116
118
|
/** Set \c *this from a 2x2 rotation matrix \a mat.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
template<typename Derived>
|
|
124
|
-
EIGEN_DEVICE_FUNC Rotation2D& operator=(const
|
|
125
|
-
|
|
119
|
+
* In other words, this function extract the rotation angle from the rotation matrix.
|
|
120
|
+
*
|
|
121
|
+
* This method is an alias for fromRotationMatrix()
|
|
122
|
+
*
|
|
123
|
+
* \sa fromRotationMatrix()
|
|
124
|
+
*/
|
|
125
|
+
template <typename Derived>
|
|
126
|
+
EIGEN_DEVICE_FUNC Rotation2D& operator=(const MatrixBase<Derived>& m) {
|
|
127
|
+
return fromRotationMatrix(m.derived());
|
|
128
|
+
}
|
|
126
129
|
|
|
127
130
|
/** \returns the spherical interpolation between \c *this and \a other using
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
EIGEN_DEVICE_FUNC inline Rotation2D slerp(const Scalar& t, const Rotation2D& other) const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
return Rotation2D(m_angle + dist*t);
|
|
131
|
+
* parameter \a t. It is in fact equivalent to a linear interpolation.
|
|
132
|
+
*/
|
|
133
|
+
EIGEN_DEVICE_FUNC inline Rotation2D slerp(const Scalar& t, const Rotation2D& other) const {
|
|
134
|
+
Scalar dist = Rotation2D(other.m_angle - m_angle).smallestAngle();
|
|
135
|
+
return Rotation2D(m_angle + dist * t);
|
|
134
136
|
}
|
|
135
137
|
|
|
136
138
|
/** \returns \c *this with scalar type casted to \a NewScalarType
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
template<typename NewScalarType>
|
|
142
|
-
EIGEN_DEVICE_FUNC inline typename internal::cast_return_type<Rotation2D,Rotation2D<NewScalarType> >::type cast()
|
|
143
|
-
|
|
139
|
+
*
|
|
140
|
+
* Note that if \a NewScalarType is equal to the current scalar type of \c *this
|
|
141
|
+
* then this function smartly returns a const reference to \c *this.
|
|
142
|
+
*/
|
|
143
|
+
template <typename NewScalarType>
|
|
144
|
+
EIGEN_DEVICE_FUNC inline typename internal::cast_return_type<Rotation2D, Rotation2D<NewScalarType> >::type cast()
|
|
145
|
+
const {
|
|
146
|
+
return typename internal::cast_return_type<Rotation2D, Rotation2D<NewScalarType> >::type(*this);
|
|
147
|
+
}
|
|
144
148
|
|
|
145
149
|
/** Copy constructor with scalar type conversion */
|
|
146
|
-
template<typename OtherScalarType>
|
|
147
|
-
EIGEN_DEVICE_FUNC inline explicit Rotation2D(const Rotation2D<OtherScalarType>& other)
|
|
148
|
-
{
|
|
150
|
+
template <typename OtherScalarType>
|
|
151
|
+
EIGEN_DEVICE_FUNC inline explicit Rotation2D(const Rotation2D<OtherScalarType>& other) {
|
|
149
152
|
m_angle = Scalar(other.angle());
|
|
150
153
|
}
|
|
151
154
|
|
|
152
155
|
EIGEN_DEVICE_FUNC static inline Rotation2D Identity() { return Rotation2D(0); }
|
|
153
156
|
|
|
154
157
|
/** \returns \c true if \c *this is approximately equal to \a other, within the precision
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
EIGEN_DEVICE_FUNC bool isApprox(const Rotation2D& other, const typename NumTraits<Scalar>::Real& prec =
|
|
159
|
-
|
|
160
|
-
|
|
158
|
+
* determined by \a prec.
|
|
159
|
+
*
|
|
160
|
+
* \sa MatrixBase::isApprox() */
|
|
161
|
+
EIGEN_DEVICE_FUNC bool isApprox(const Rotation2D& other, const typename NumTraits<Scalar>::Real& prec =
|
|
162
|
+
NumTraits<Scalar>::dummy_precision()) const {
|
|
163
|
+
return internal::isApprox(m_angle, other.m_angle, prec);
|
|
164
|
+
}
|
|
161
165
|
};
|
|
162
166
|
|
|
163
167
|
/** \ingroup Geometry_Module
|
|
164
|
-
|
|
168
|
+
* single precision 2D rotation type */
|
|
165
169
|
typedef Rotation2D<float> Rotation2Df;
|
|
166
170
|
/** \ingroup Geometry_Module
|
|
167
|
-
|
|
171
|
+
* double precision 2D rotation type */
|
|
168
172
|
typedef Rotation2D<double> Rotation2Dd;
|
|
169
173
|
|
|
170
174
|
/** Set \c *this from a 2x2 rotation matrix \a mat.
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
template<typename Scalar>
|
|
175
|
-
template<typename Derived>
|
|
176
|
-
EIGEN_DEVICE_FUNC Rotation2D<Scalar>& Rotation2D<Scalar>::fromRotationMatrix(const MatrixBase<Derived>& mat)
|
|
177
|
-
{
|
|
175
|
+
* In other words, this function extract the rotation angle
|
|
176
|
+
* from the rotation matrix.
|
|
177
|
+
*/
|
|
178
|
+
template <typename Scalar>
|
|
179
|
+
template <typename Derived>
|
|
180
|
+
EIGEN_DEVICE_FUNC Rotation2D<Scalar>& Rotation2D<Scalar>::fromRotationMatrix(const MatrixBase<Derived>& mat) {
|
|
178
181
|
EIGEN_USING_STD(atan2)
|
|
179
|
-
EIGEN_STATIC_ASSERT(Derived::RowsAtCompileTime==2 && Derived::ColsAtCompileTime==2,
|
|
180
|
-
|
|
182
|
+
EIGEN_STATIC_ASSERT(Derived::RowsAtCompileTime == 2 && Derived::ColsAtCompileTime == 2,
|
|
183
|
+
YOU_MADE_A_PROGRAMMING_MISTAKE)
|
|
184
|
+
m_angle = atan2(mat.coeff(1, 0), mat.coeff(0, 0));
|
|
181
185
|
return *this;
|
|
182
186
|
}
|
|
183
187
|
|
|
184
188
|
/** Constructs and \returns an equivalent 2x2 rotation matrix.
|
|
185
|
-
|
|
186
|
-
template<typename Scalar>
|
|
187
|
-
typename Rotation2D<Scalar>::Matrix2
|
|
188
|
-
EIGEN_DEVICE_FUNC Rotation2D<Scalar>::toRotationMatrix(void) const
|
|
189
|
-
{
|
|
189
|
+
*/
|
|
190
|
+
template <typename Scalar>
|
|
191
|
+
typename Rotation2D<Scalar>::Matrix2 EIGEN_DEVICE_FUNC Rotation2D<Scalar>::toRotationMatrix(void) const {
|
|
190
192
|
EIGEN_USING_STD(sin)
|
|
191
193
|
EIGEN_USING_STD(cos)
|
|
192
194
|
Scalar sinA = sin(m_angle);
|
|
@@ -194,6 +196,6 @@ EIGEN_DEVICE_FUNC Rotation2D<Scalar>::toRotationMatrix(void) const
|
|
|
194
196
|
return (Matrix2() << cosA, -sinA, sinA, cosA).finished();
|
|
195
197
|
}
|
|
196
198
|
|
|
197
|
-
}
|
|
199
|
+
} // end namespace Eigen
|
|
198
200
|
|
|
199
|
-
#endif
|
|
201
|
+
#endif // EIGEN_ROTATION2D_H
|
|
@@ -10,197 +10,200 @@
|
|
|
10
10
|
#ifndef EIGEN_ROTATIONBASE_H
|
|
11
11
|
#define EIGEN_ROTATIONBASE_H
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
16
|
+
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
// forward declaration
|
|
16
19
|
namespace internal {
|
|
17
|
-
template<typename RotationDerived, typename MatrixType, bool IsVector=MatrixType::IsVectorAtCompileTime>
|
|
20
|
+
template <typename RotationDerived, typename MatrixType, bool IsVector = MatrixType::IsVectorAtCompileTime>
|
|
18
21
|
struct rotation_base_generic_product_selector;
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
/** \class RotationBase
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
template<typename Derived, int
|
|
29
|
-
class RotationBase
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
25
|
+
*
|
|
26
|
+
* \brief Common base class for compact rotation representations
|
|
27
|
+
*
|
|
28
|
+
* \tparam Derived is the derived type, i.e., a rotation type
|
|
29
|
+
* \tparam Dim_ the dimension of the space
|
|
30
|
+
*/
|
|
31
|
+
template <typename Derived, int Dim_>
|
|
32
|
+
class RotationBase {
|
|
33
|
+
public:
|
|
34
|
+
enum { Dim = Dim_ };
|
|
35
|
+
/** the scalar type of the coefficients */
|
|
36
|
+
typedef typename internal::traits<Derived>::Scalar Scalar;
|
|
37
|
+
|
|
38
|
+
/** corresponding linear transformation matrix type */
|
|
39
|
+
typedef Matrix<Scalar, Dim, Dim> RotationMatrixType;
|
|
40
|
+
typedef Matrix<Scalar, Dim, 1> VectorType;
|
|
41
|
+
|
|
42
|
+
public:
|
|
43
|
+
EIGEN_DEVICE_FUNC inline const Derived& derived() const { return *static_cast<const Derived*>(this); }
|
|
44
|
+
EIGEN_DEVICE_FUNC inline Derived& derived() { return *static_cast<Derived*>(this); }
|
|
45
|
+
|
|
46
|
+
/** \returns an equivalent rotation matrix */
|
|
47
|
+
EIGEN_DEVICE_FUNC inline RotationMatrixType toRotationMatrix() const { return derived().toRotationMatrix(); }
|
|
48
|
+
|
|
49
|
+
/** \returns an equivalent rotation matrix
|
|
50
|
+
* This function is added to be conform with the Transform class' naming scheme.
|
|
51
|
+
*/
|
|
52
|
+
EIGEN_DEVICE_FUNC inline RotationMatrixType matrix() const { return derived().toRotationMatrix(); }
|
|
53
|
+
|
|
54
|
+
/** \returns the inverse rotation */
|
|
55
|
+
EIGEN_DEVICE_FUNC inline Derived inverse() const { return derived().inverse(); }
|
|
56
|
+
|
|
57
|
+
/** \returns the concatenation of the rotation \c *this with a translation \a t */
|
|
58
|
+
EIGEN_DEVICE_FUNC inline Transform<Scalar, Dim, Isometry> operator*(const Translation<Scalar, Dim>& t) const {
|
|
59
|
+
return Transform<Scalar, Dim, Isometry>(*this) * t;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** \returns the concatenation of the rotation \c *this with a uniform scaling \a s */
|
|
63
|
+
EIGEN_DEVICE_FUNC inline RotationMatrixType operator*(const UniformScaling<Scalar>& s) const {
|
|
64
|
+
return toRotationMatrix() * s.factor();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** \returns the concatenation of the rotation \c *this with a generic expression \a e
|
|
68
|
+
* \a e can be:
|
|
69
|
+
* - a DimxDim linear transformation matrix
|
|
70
|
+
* - a DimxDim diagonal matrix (axis aligned scaling)
|
|
71
|
+
* - a vector of size Dim
|
|
72
|
+
*/
|
|
73
|
+
template <typename OtherDerived>
|
|
74
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
75
|
+
typename internal::rotation_base_generic_product_selector<Derived, OtherDerived,
|
|
76
|
+
OtherDerived::IsVectorAtCompileTime>::ReturnType
|
|
77
|
+
operator*(const EigenBase<OtherDerived>& e) const {
|
|
78
|
+
return internal::rotation_base_generic_product_selector<Derived, OtherDerived>::run(derived(), e.derived());
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** \returns the concatenation of a linear transformation \a l with the rotation \a r */
|
|
82
|
+
template <typename OtherDerived>
|
|
83
|
+
friend EIGEN_DEVICE_FUNC inline RotationMatrixType operator*(const EigenBase<OtherDerived>& l, const Derived& r) {
|
|
84
|
+
return l.derived() * r.toRotationMatrix();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** \returns the concatenation of a scaling \a l with the rotation \a r */
|
|
88
|
+
EIGEN_DEVICE_FUNC friend inline Transform<Scalar, Dim, Affine> operator*(const DiagonalMatrix<Scalar, Dim>& l,
|
|
89
|
+
const Derived& r) {
|
|
90
|
+
Transform<Scalar, Dim, Affine> res(r);
|
|
91
|
+
res.linear().applyOnTheLeft(l);
|
|
92
|
+
return res;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** \returns the concatenation of the rotation \c *this with a transformation \a t */
|
|
96
|
+
template <int Mode, int Options>
|
|
97
|
+
EIGEN_DEVICE_FUNC inline Transform<Scalar, Dim, Mode> operator*(
|
|
98
|
+
const Transform<Scalar, Dim, Mode, Options>& t) const {
|
|
99
|
+
return toRotationMatrix() * t;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
template <typename OtherVectorType>
|
|
103
|
+
EIGEN_DEVICE_FUNC inline VectorType _transformVector(const OtherVectorType& v) const {
|
|
104
|
+
return toRotationMatrix() * v;
|
|
105
|
+
}
|
|
95
106
|
};
|
|
96
107
|
|
|
97
108
|
namespace internal {
|
|
98
109
|
|
|
99
110
|
// implementation of the generic product rotation * matrix
|
|
100
|
-
template<typename RotationDerived, typename MatrixType>
|
|
101
|
-
struct rotation_base_generic_product_selector<RotationDerived,MatrixType,false>
|
|
102
|
-
{
|
|
111
|
+
template <typename RotationDerived, typename MatrixType>
|
|
112
|
+
struct rotation_base_generic_product_selector<RotationDerived, MatrixType, false> {
|
|
103
113
|
enum { Dim = RotationDerived::Dim };
|
|
104
|
-
typedef Matrix<typename RotationDerived::Scalar,Dim,Dim> ReturnType;
|
|
105
|
-
EIGEN_DEVICE_FUNC static inline ReturnType run(const RotationDerived& r, const MatrixType& m)
|
|
106
|
-
|
|
114
|
+
typedef Matrix<typename RotationDerived::Scalar, Dim, Dim> ReturnType;
|
|
115
|
+
EIGEN_DEVICE_FUNC static inline ReturnType run(const RotationDerived& r, const MatrixType& m) {
|
|
116
|
+
return r.toRotationMatrix() * m;
|
|
117
|
+
}
|
|
107
118
|
};
|
|
108
119
|
|
|
109
|
-
template<typename RotationDerived, typename Scalar, int Dim, int MaxDim>
|
|
110
|
-
struct rotation_base_generic_product_selector<
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
{
|
|
120
|
+
template <typename RotationDerived, typename Scalar, int Dim, int MaxDim>
|
|
121
|
+
struct rotation_base_generic_product_selector<RotationDerived, DiagonalMatrix<Scalar, Dim, MaxDim>, false> {
|
|
122
|
+
typedef Transform<Scalar, Dim, Affine> ReturnType;
|
|
123
|
+
EIGEN_DEVICE_FUNC static inline ReturnType run(const RotationDerived& r,
|
|
124
|
+
const DiagonalMatrix<Scalar, Dim, MaxDim>& m) {
|
|
115
125
|
ReturnType res(r);
|
|
116
126
|
res.linear() *= m;
|
|
117
127
|
return res;
|
|
118
128
|
}
|
|
119
129
|
};
|
|
120
130
|
|
|
121
|
-
template<typename RotationDerived,typename OtherVectorType>
|
|
122
|
-
struct rotation_base_generic_product_selector<RotationDerived,OtherVectorType,true>
|
|
123
|
-
{
|
|
131
|
+
template <typename RotationDerived, typename OtherVectorType>
|
|
132
|
+
struct rotation_base_generic_product_selector<RotationDerived, OtherVectorType, true> {
|
|
124
133
|
enum { Dim = RotationDerived::Dim };
|
|
125
|
-
typedef Matrix<typename RotationDerived::Scalar,Dim,1> ReturnType;
|
|
126
|
-
EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE ReturnType run(const RotationDerived& r, const OtherVectorType& v)
|
|
127
|
-
{
|
|
134
|
+
typedef Matrix<typename RotationDerived::Scalar, Dim, 1> ReturnType;
|
|
135
|
+
EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE ReturnType run(const RotationDerived& r, const OtherVectorType& v) {
|
|
128
136
|
return r._transformVector(v);
|
|
129
137
|
}
|
|
130
138
|
};
|
|
131
139
|
|
|
132
|
-
}
|
|
140
|
+
} // end namespace internal
|
|
133
141
|
|
|
134
142
|
/** \geometry_module
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
template<typename
|
|
139
|
-
template<typename OtherDerived>
|
|
140
|
-
EIGEN_DEVICE_FUNC Matrix<
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Matrix,int(OtherDerived::Dim),int(OtherDerived::Dim))
|
|
143
|
+
*
|
|
144
|
+
* \brief Constructs a Dim x Dim rotation matrix from the rotation \a r
|
|
145
|
+
*/
|
|
146
|
+
template <typename Scalar_, int Rows_, int Cols_, int Storage_, int MaxRows_, int MaxCols_>
|
|
147
|
+
template <typename OtherDerived>
|
|
148
|
+
EIGEN_DEVICE_FUNC Matrix<Scalar_, Rows_, Cols_, Storage_, MaxRows_, MaxCols_>::Matrix(
|
|
149
|
+
const RotationBase<OtherDerived, ColsAtCompileTime>& r) {
|
|
150
|
+
EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Matrix, int(OtherDerived::Dim), int(OtherDerived::Dim))
|
|
144
151
|
*this = r.toRotationMatrix();
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
/** \geometry_module
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
template<typename
|
|
152
|
-
template<typename OtherDerived>
|
|
153
|
-
EIGEN_DEVICE_FUNC Matrix<
|
|
154
|
-
Matrix<
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Matrix,int(OtherDerived::Dim),int(OtherDerived::Dim))
|
|
155
|
+
*
|
|
156
|
+
* \brief Set a Dim x Dim rotation matrix from the rotation \a r
|
|
157
|
+
*/
|
|
158
|
+
template <typename Scalar_, int Rows_, int Cols_, int Storage_, int MaxRows_, int MaxCols_>
|
|
159
|
+
template <typename OtherDerived>
|
|
160
|
+
EIGEN_DEVICE_FUNC Matrix<Scalar_, Rows_, Cols_, Storage_, MaxRows_, MaxCols_>&
|
|
161
|
+
Matrix<Scalar_, Rows_, Cols_, Storage_, MaxRows_, MaxCols_>::operator=(
|
|
162
|
+
const RotationBase<OtherDerived, ColsAtCompileTime>& r) {
|
|
163
|
+
EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Matrix, int(OtherDerived::Dim), int(OtherDerived::Dim))
|
|
158
164
|
return *this = r.toRotationMatrix();
|
|
159
165
|
}
|
|
160
166
|
|
|
161
167
|
namespace internal {
|
|
162
168
|
|
|
163
169
|
/** \internal
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
template<typename Scalar, int Dim>
|
|
182
|
-
EIGEN_DEVICE_FUNC static inline Matrix<Scalar,2,2> toRotationMatrix(const Scalar& s)
|
|
183
|
-
|
|
184
|
-
EIGEN_STATIC_ASSERT(Dim==2,YOU_MADE_A_PROGRAMMING_MISTAKE)
|
|
170
|
+
*
|
|
171
|
+
* Helper function to return an arbitrary rotation object to a rotation matrix.
|
|
172
|
+
*
|
|
173
|
+
* \tparam Scalar the numeric type of the matrix coefficients
|
|
174
|
+
* \tparam Dim the dimension of the current space
|
|
175
|
+
*
|
|
176
|
+
* It returns a Dim x Dim fixed size matrix.
|
|
177
|
+
*
|
|
178
|
+
* Default specializations are provided for:
|
|
179
|
+
* - any scalar type (2D),
|
|
180
|
+
* - any matrix expression,
|
|
181
|
+
* - any type based on RotationBase (e.g., Quaternion, AngleAxis, Rotation2D)
|
|
182
|
+
*
|
|
183
|
+
* Currently toRotationMatrix is only used by Transform.
|
|
184
|
+
*
|
|
185
|
+
* \sa class Transform, class Rotation2D, class Quaternion, class AngleAxis
|
|
186
|
+
*/
|
|
187
|
+
template <typename Scalar, int Dim>
|
|
188
|
+
EIGEN_DEVICE_FUNC static inline Matrix<Scalar, 2, 2> toRotationMatrix(const Scalar& s) {
|
|
189
|
+
EIGEN_STATIC_ASSERT(Dim == 2, YOU_MADE_A_PROGRAMMING_MISTAKE)
|
|
185
190
|
return Rotation2D<Scalar>(s).toRotationMatrix();
|
|
186
191
|
}
|
|
187
192
|
|
|
188
|
-
template<typename Scalar, int Dim, typename OtherDerived>
|
|
189
|
-
EIGEN_DEVICE_FUNC static inline Matrix<Scalar,Dim,Dim> toRotationMatrix(const RotationBase<OtherDerived,Dim>& r)
|
|
190
|
-
{
|
|
193
|
+
template <typename Scalar, int Dim, typename OtherDerived>
|
|
194
|
+
EIGEN_DEVICE_FUNC static inline Matrix<Scalar, Dim, Dim> toRotationMatrix(const RotationBase<OtherDerived, Dim>& r) {
|
|
191
195
|
return r.toRotationMatrix();
|
|
192
196
|
}
|
|
193
197
|
|
|
194
|
-
template<typename Scalar, int Dim, typename OtherDerived>
|
|
195
|
-
EIGEN_DEVICE_FUNC static inline const MatrixBase<OtherDerived>& toRotationMatrix(const MatrixBase<OtherDerived>& mat)
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
YOU_MADE_A_PROGRAMMING_MISTAKE)
|
|
198
|
+
template <typename Scalar, int Dim, typename OtherDerived>
|
|
199
|
+
EIGEN_DEVICE_FUNC static inline const MatrixBase<OtherDerived>& toRotationMatrix(const MatrixBase<OtherDerived>& mat) {
|
|
200
|
+
EIGEN_STATIC_ASSERT(OtherDerived::RowsAtCompileTime == Dim && OtherDerived::ColsAtCompileTime == Dim,
|
|
201
|
+
YOU_MADE_A_PROGRAMMING_MISTAKE)
|
|
199
202
|
return mat;
|
|
200
203
|
}
|
|
201
204
|
|
|
202
|
-
}
|
|
205
|
+
} // end namespace internal
|
|
203
206
|
|
|
204
|
-
}
|
|
207
|
+
} // end namespace Eigen
|
|
205
208
|
|
|
206
|
-
#endif
|
|
209
|
+
#endif // EIGEN_ROTATIONBASE_H
|