@smake/eigen 1.0.2 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -21
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +235 -326
- package/eigen/Eigen/Eigenvalues +16 -14
- package/eigen/Eigen/Geometry +21 -24
- package/eigen/Eigen/Householder +9 -8
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -14
- package/eigen/Eigen/KLUSupport +43 -0
- package/eigen/Eigen/LU +16 -20
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -54
- package/eigen/Eigen/PaStiXSupport +23 -20
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -21
- package/eigen/Eigen/QtAlignedMalloc +5 -13
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -18
- package/eigen/Eigen/Sparse +1 -4
- package/eigen/Eigen/SparseCholesky +18 -23
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +12 -8
- 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 +377 -401
- package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
- package/eigen/Eigen/src/Core/Array.h +341 -294
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
- package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
- package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
- package/eigen/Eigen/src/Core/Block.h +375 -398
- package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
- package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
- package/eigen/Eigen/src/Core/DenseBase.h +632 -571
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
- package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +169 -210
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +172 -222
- package/eigen/Eigen/src/Core/EigenBase.h +75 -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 -109
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
- package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
- package/eigen/Eigen/src/Core/IO.h +147 -139
- package/eigen/Eigen/src/Core/IndexedView.h +321 -0
- 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 +56 -66
- package/eigen/Eigen/src/Core/Map.h +124 -142
- package/eigen/Eigen/src/Core/MapBase.h +256 -281
- package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
- package/eigen/Eigen/src/Core/Matrix.h +491 -416
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
- package/eigen/Eigen/src/Core/NestByValue.h +66 -85
- package/eigen/Eigen/src/Core/NoAlias.h +79 -85
- package/eigen/Eigen/src/Core/NumTraits.h +235 -148
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
- package/eigen/Eigen/src/Core/Product.h +260 -139
- package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
- package/eigen/Eigen/src/Core/Random.h +161 -136
- 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 +366 -336
- package/eigen/Eigen/src/Core/Ref.h +308 -209
- package/eigen/Eigen/src/Core/Replicate.h +94 -106
- package/eigen/Eigen/src/Core/Reshaped.h +398 -0
- package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
- package/eigen/Eigen/src/Core/Reverse.h +136 -145
- package/eigen/Eigen/src/Core/Select.h +70 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
- 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 +97 -111
- package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
- package/eigen/Eigen/src/Core/SolverBase.h +138 -101
- package/eigen/Eigen/src/Core/StableNorm.h +156 -160
- package/eigen/Eigen/src/Core/StlIterators.h +619 -0
- package/eigen/Eigen/src/Core/Stride.h +91 -88
- package/eigen/Eigen/src/Core/Swap.h +70 -38
- package/eigen/Eigen/src/Core/Transpose.h +295 -273
- package/eigen/Eigen/src/Core/Transpositions.h +272 -317
- package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
- package/eigen/Eigen/src/Core/Visitor.h +480 -216
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
- 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 +277 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
- 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 +3391 -723
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
- package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- 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 +620 -0
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
- 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 -46
- 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 -275
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
- package/eigen/Eigen/src/Core/util/Constants.h +314 -263
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
- 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 +487 -0
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
- package/eigen/Eigen/src/Core/util/Macros.h +939 -646
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
- package/eigen/Eigen/src/Core/util/Meta.h +618 -426
- 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 +51 -0
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
- package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
- 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 +91 -107
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
- package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
- package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
- package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
- package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
- package/eigen/Eigen/src/Geometry/Transform.h +896 -953
- package/eigen/Eigen/src/Geometry/Translation.h +100 -98
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
- package/eigen/Eigen/src/Householder/Householder.h +104 -122
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
- package/eigen/Eigen/src/LU/Determinant.h +60 -63
- package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
- package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
- 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 +250 -282
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
- 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 -429
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
- package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
- 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 +263 -261
- package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
- 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 +585 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
- 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 +1614 -1142
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
- 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 +371 -414
- 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 +146 -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 +814 -618
- 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 +273 -255
- 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 +90 -101
- 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 +125 -133
- 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 +451 -490
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
- 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 -732
- 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 +480 -380
- 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 +9976 -16182
- 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.inc +1370 -0
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
- 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/lib/LibEigen.d.ts +4 -0
- package/lib/LibEigen.js +14 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +7 -3
- package/package.json +2 -10
- package/eigen/Eigen/CMakeLists.txt +0 -19
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
- package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
- package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
- 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 -332
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
- package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
- package/lib/eigen.d.ts +0 -2
- package/lib/eigen.js +0 -15
|
@@ -10,59 +10,57 @@
|
|
|
10
10
|
#ifndef EIGEN_TRANSLATION_H
|
|
11
11
|
#define EIGEN_TRANSLATION_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
|
-
template<typename
|
|
30
|
-
class Translation
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_Dim)
|
|
19
|
+
*
|
|
20
|
+
* \class Translation
|
|
21
|
+
*
|
|
22
|
+
* \brief Represents a translation transformation
|
|
23
|
+
*
|
|
24
|
+
* \tparam Scalar_ the scalar type, i.e., the type of the coefficients.
|
|
25
|
+
* \tparam Dim_ the dimension of the space, can be a compile time value or Dynamic
|
|
26
|
+
*
|
|
27
|
+
* \note This class is not aimed to be used to store a translation transformation,
|
|
28
|
+
* but rather to make easier the constructions and updates of Transform objects.
|
|
29
|
+
*
|
|
30
|
+
* \sa class Scaling, class Transform
|
|
31
|
+
*/
|
|
32
|
+
template <typename Scalar_, int Dim_>
|
|
33
|
+
class Translation {
|
|
34
|
+
public:
|
|
35
|
+
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(Scalar_, Dim_)
|
|
34
36
|
/** dimension of the space */
|
|
35
|
-
enum { Dim =
|
|
37
|
+
enum { Dim = Dim_ };
|
|
36
38
|
/** the scalar type of the coefficients */
|
|
37
|
-
typedef
|
|
39
|
+
typedef Scalar_ Scalar;
|
|
38
40
|
/** corresponding vector type */
|
|
39
|
-
typedef Matrix<Scalar,Dim,1> VectorType;
|
|
41
|
+
typedef Matrix<Scalar, Dim, 1> VectorType;
|
|
40
42
|
/** corresponding linear transformation matrix type */
|
|
41
|
-
typedef Matrix<Scalar,Dim,Dim> LinearMatrixType;
|
|
43
|
+
typedef Matrix<Scalar, Dim, Dim> LinearMatrixType;
|
|
42
44
|
/** corresponding affine transformation type */
|
|
43
|
-
typedef Transform<Scalar,Dim,Affine> AffineTransformType;
|
|
45
|
+
typedef Transform<Scalar, Dim, Affine> AffineTransformType;
|
|
44
46
|
/** corresponding isometric transformation type */
|
|
45
|
-
typedef Transform<Scalar,Dim,Isometry> IsometryTransformType;
|
|
46
|
-
|
|
47
|
-
protected:
|
|
47
|
+
typedef Transform<Scalar, Dim, Isometry> IsometryTransformType;
|
|
48
48
|
|
|
49
|
+
protected:
|
|
49
50
|
VectorType m_coeffs;
|
|
50
51
|
|
|
51
|
-
public:
|
|
52
|
-
|
|
52
|
+
public:
|
|
53
53
|
/** Default constructor without initialization. */
|
|
54
54
|
EIGEN_DEVICE_FUNC Translation() {}
|
|
55
55
|
/** */
|
|
56
|
-
EIGEN_DEVICE_FUNC inline Translation(const Scalar& sx, const Scalar& sy)
|
|
57
|
-
|
|
58
|
-
eigen_assert(Dim==2);
|
|
56
|
+
EIGEN_DEVICE_FUNC inline Translation(const Scalar& sx, const Scalar& sy) {
|
|
57
|
+
eigen_assert(Dim == 2);
|
|
59
58
|
m_coeffs.x() = sx;
|
|
60
59
|
m_coeffs.y() = sy;
|
|
61
60
|
}
|
|
62
61
|
/** */
|
|
63
|
-
EIGEN_DEVICE_FUNC inline Translation(const Scalar& sx, const Scalar& sy, const Scalar& sz)
|
|
64
|
-
|
|
65
|
-
eigen_assert(Dim==3);
|
|
62
|
+
EIGEN_DEVICE_FUNC inline Translation(const Scalar& sx, const Scalar& sy, const Scalar& sz) {
|
|
63
|
+
eigen_assert(Dim == 3);
|
|
66
64
|
m_coeffs.x() = sx;
|
|
67
65
|
m_coeffs.y() = sy;
|
|
68
66
|
m_coeffs.z() = sz;
|
|
@@ -70,19 +68,19 @@ public:
|
|
|
70
68
|
/** Constructs and initialize the translation transformation from a vector of translation coefficients */
|
|
71
69
|
EIGEN_DEVICE_FUNC explicit inline Translation(const VectorType& vector) : m_coeffs(vector) {}
|
|
72
70
|
|
|
73
|
-
/** \brief
|
|
74
|
-
EIGEN_DEVICE_FUNC
|
|
75
|
-
/** \brief
|
|
76
|
-
EIGEN_DEVICE_FUNC
|
|
77
|
-
/** \brief
|
|
78
|
-
EIGEN_DEVICE_FUNC
|
|
71
|
+
/** \brief Returns the x-translation by value. **/
|
|
72
|
+
EIGEN_DEVICE_FUNC constexpr Scalar x() const { return m_coeffs.x(); }
|
|
73
|
+
/** \brief Returns the y-translation by value. **/
|
|
74
|
+
EIGEN_DEVICE_FUNC constexpr Scalar y() const { return m_coeffs.y(); }
|
|
75
|
+
/** \brief Returns the z-translation by value. **/
|
|
76
|
+
EIGEN_DEVICE_FUNC constexpr Scalar z() const { return m_coeffs.z(); }
|
|
79
77
|
|
|
80
|
-
/** \brief
|
|
81
|
-
EIGEN_DEVICE_FUNC
|
|
82
|
-
/** \brief
|
|
83
|
-
EIGEN_DEVICE_FUNC
|
|
84
|
-
/** \brief
|
|
85
|
-
EIGEN_DEVICE_FUNC
|
|
78
|
+
/** \brief Returns the x-translation as a reference. **/
|
|
79
|
+
EIGEN_DEVICE_FUNC constexpr Scalar& x() { return m_coeffs.x(); }
|
|
80
|
+
/** \brief Returns the y-translation as a reference. **/
|
|
81
|
+
EIGEN_DEVICE_FUNC constexpr Scalar& y() { return m_coeffs.y(); }
|
|
82
|
+
/** \brief Returns the z-translation as a reference. **/
|
|
83
|
+
EIGEN_DEVICE_FUNC constexpr Scalar& z() { return m_coeffs.z(); }
|
|
86
84
|
|
|
87
85
|
EIGEN_DEVICE_FUNC const VectorType& vector() const { return m_coeffs; }
|
|
88
86
|
EIGEN_DEVICE_FUNC VectorType& vector() { return m_coeffs; }
|
|
@@ -91,49 +89,51 @@ public:
|
|
|
91
89
|
EIGEN_DEVICE_FUNC VectorType& translation() { return m_coeffs; }
|
|
92
90
|
|
|
93
91
|
/** Concatenates two translation */
|
|
94
|
-
EIGEN_DEVICE_FUNC inline Translation operator*
|
|
95
|
-
|
|
92
|
+
EIGEN_DEVICE_FUNC inline Translation operator*(const Translation& other) const {
|
|
93
|
+
return Translation(m_coeffs + other.m_coeffs);
|
|
94
|
+
}
|
|
96
95
|
|
|
97
96
|
/** Concatenates a translation and a uniform scaling */
|
|
98
|
-
EIGEN_DEVICE_FUNC inline AffineTransformType operator*
|
|
97
|
+
EIGEN_DEVICE_FUNC inline AffineTransformType operator*(const UniformScaling<Scalar>& other) const;
|
|
99
98
|
|
|
100
99
|
/** Concatenates a translation and a linear transformation */
|
|
101
|
-
template<typename OtherDerived>
|
|
102
|
-
EIGEN_DEVICE_FUNC inline AffineTransformType operator*
|
|
100
|
+
template <typename OtherDerived>
|
|
101
|
+
EIGEN_DEVICE_FUNC inline AffineTransformType operator*(const EigenBase<OtherDerived>& linear) const;
|
|
103
102
|
|
|
104
103
|
/** Concatenates a translation and a rotation */
|
|
105
|
-
template<typename Derived>
|
|
106
|
-
EIGEN_DEVICE_FUNC inline IsometryTransformType operator*(const RotationBase<Derived,Dim>& r) const
|
|
107
|
-
|
|
104
|
+
template <typename Derived>
|
|
105
|
+
EIGEN_DEVICE_FUNC inline IsometryTransformType operator*(const RotationBase<Derived, Dim>& r) const {
|
|
106
|
+
return *this * IsometryTransformType(r);
|
|
107
|
+
}
|
|
108
108
|
|
|
109
109
|
/** \returns the concatenation of a linear transformation \a l with the translation \a t */
|
|
110
110
|
// its a nightmare to define a templated friend function outside its declaration
|
|
111
|
-
template<typename OtherDerived>
|
|
112
|
-
EIGEN_DEVICE_FUNC inline AffineTransformType operator*(const EigenBase<OtherDerived>& linear,
|
|
113
|
-
|
|
111
|
+
template <typename OtherDerived>
|
|
112
|
+
friend EIGEN_DEVICE_FUNC inline AffineTransformType operator*(const EigenBase<OtherDerived>& linear,
|
|
113
|
+
const Translation& t) {
|
|
114
114
|
AffineTransformType res;
|
|
115
115
|
res.matrix().setZero();
|
|
116
116
|
res.linear() = linear.derived();
|
|
117
117
|
res.translation() = linear.derived() * t.m_coeffs;
|
|
118
118
|
res.matrix().row(Dim).setZero();
|
|
119
|
-
res(Dim,Dim) = Scalar(1);
|
|
119
|
+
res(Dim, Dim) = Scalar(1);
|
|
120
120
|
return res;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/** Concatenates a translation and a transformation */
|
|
124
|
-
template<int Mode, int Options>
|
|
125
|
-
EIGEN_DEVICE_FUNC inline Transform<Scalar,Dim,Mode> operator*
|
|
126
|
-
|
|
127
|
-
Transform<Scalar,Dim,Mode> res = t;
|
|
124
|
+
template <int Mode, int Options>
|
|
125
|
+
EIGEN_DEVICE_FUNC inline Transform<Scalar, Dim, Mode> operator*(
|
|
126
|
+
const Transform<Scalar, Dim, Mode, Options>& t) const {
|
|
127
|
+
Transform<Scalar, Dim, Mode> res = t;
|
|
128
128
|
res.pretranslate(m_coeffs);
|
|
129
129
|
return res;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
/** Applies translation to vector */
|
|
133
|
-
template<typename Derived>
|
|
134
|
-
inline
|
|
135
|
-
|
|
136
|
-
|
|
133
|
+
template <typename Derived>
|
|
134
|
+
inline std::enable_if_t<Derived::IsVectorAtCompileTime, VectorType> operator*(const MatrixBase<Derived>& vec) const {
|
|
135
|
+
return m_coeffs + vec.derived();
|
|
136
|
+
}
|
|
137
137
|
|
|
138
138
|
/** \returns the inverse translation (opposite) */
|
|
139
139
|
Translation inverse() const { return Translation(-m_coeffs); }
|
|
@@ -141,62 +141,64 @@ public:
|
|
|
141
141
|
static const Translation Identity() { return Translation(VectorType::Zero()); }
|
|
142
142
|
|
|
143
143
|
/** \returns \c *this with scalar type casted to \a NewScalarType
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
template<typename NewScalarType>
|
|
149
|
-
EIGEN_DEVICE_FUNC inline typename internal::cast_return_type<Translation,Translation<NewScalarType,Dim> >::type
|
|
150
|
-
|
|
144
|
+
*
|
|
145
|
+
* Note that if \a NewScalarType is equal to the current scalar type of \c *this
|
|
146
|
+
* then this function smartly returns a const reference to \c *this.
|
|
147
|
+
*/
|
|
148
|
+
template <typename NewScalarType>
|
|
149
|
+
EIGEN_DEVICE_FUNC inline typename internal::cast_return_type<Translation, Translation<NewScalarType, Dim> >::type
|
|
150
|
+
cast() const {
|
|
151
|
+
return typename internal::cast_return_type<Translation, Translation<NewScalarType, Dim> >::type(*this);
|
|
152
|
+
}
|
|
151
153
|
|
|
152
154
|
/** Copy constructor with scalar type conversion */
|
|
153
|
-
template<typename OtherScalarType>
|
|
154
|
-
EIGEN_DEVICE_FUNC inline explicit Translation(const Translation<OtherScalarType,Dim>& other)
|
|
155
|
-
|
|
155
|
+
template <typename OtherScalarType>
|
|
156
|
+
EIGEN_DEVICE_FUNC inline explicit Translation(const Translation<OtherScalarType, Dim>& other) {
|
|
157
|
+
m_coeffs = other.vector().template cast<Scalar>();
|
|
158
|
+
}
|
|
156
159
|
|
|
157
160
|
/** \returns \c true if \c *this is approximately equal to \a other, within the precision
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
EIGEN_DEVICE_FUNC bool isApprox(const Translation& other, const typename NumTraits<Scalar>::Real& prec =
|
|
162
|
-
|
|
163
|
-
|
|
161
|
+
* determined by \a prec.
|
|
162
|
+
*
|
|
163
|
+
* \sa MatrixBase::isApprox() */
|
|
164
|
+
EIGEN_DEVICE_FUNC bool isApprox(const Translation& other, const typename NumTraits<Scalar>::Real& prec =
|
|
165
|
+
NumTraits<Scalar>::dummy_precision()) const {
|
|
166
|
+
return m_coeffs.isApprox(other.m_coeffs, prec);
|
|
167
|
+
}
|
|
164
168
|
};
|
|
165
169
|
|
|
166
170
|
/** \addtogroup Geometry_Module */
|
|
167
171
|
//@{
|
|
168
172
|
typedef Translation<float, 2> Translation2f;
|
|
169
|
-
typedef Translation<double,2> Translation2d;
|
|
173
|
+
typedef Translation<double, 2> Translation2d;
|
|
170
174
|
typedef Translation<float, 3> Translation3f;
|
|
171
|
-
typedef Translation<double,3> Translation3d;
|
|
175
|
+
typedef Translation<double, 3> Translation3d;
|
|
172
176
|
//@}
|
|
173
177
|
|
|
174
|
-
template<typename Scalar, int Dim>
|
|
175
|
-
EIGEN_DEVICE_FUNC inline typename Translation<Scalar,Dim>::AffineTransformType
|
|
176
|
-
|
|
177
|
-
{
|
|
178
|
+
template <typename Scalar, int Dim>
|
|
179
|
+
EIGEN_DEVICE_FUNC inline typename Translation<Scalar, Dim>::AffineTransformType Translation<Scalar, Dim>::operator*(
|
|
180
|
+
const UniformScaling<Scalar>& other) const {
|
|
178
181
|
AffineTransformType res;
|
|
179
182
|
res.matrix().setZero();
|
|
180
183
|
res.linear().diagonal().fill(other.factor());
|
|
181
184
|
res.translation() = m_coeffs;
|
|
182
|
-
res(Dim,Dim) = Scalar(1);
|
|
185
|
+
res(Dim, Dim) = Scalar(1);
|
|
183
186
|
return res;
|
|
184
187
|
}
|
|
185
188
|
|
|
186
|
-
template<typename Scalar, int Dim>
|
|
187
|
-
template<typename OtherDerived>
|
|
188
|
-
EIGEN_DEVICE_FUNC inline typename Translation<Scalar,Dim>::AffineTransformType
|
|
189
|
-
|
|
190
|
-
{
|
|
189
|
+
template <typename Scalar, int Dim>
|
|
190
|
+
template <typename OtherDerived>
|
|
191
|
+
EIGEN_DEVICE_FUNC inline typename Translation<Scalar, Dim>::AffineTransformType Translation<Scalar, Dim>::operator*(
|
|
192
|
+
const EigenBase<OtherDerived>& linear) const {
|
|
191
193
|
AffineTransformType res;
|
|
192
194
|
res.matrix().setZero();
|
|
193
195
|
res.linear() = linear.derived();
|
|
194
196
|
res.translation() = m_coeffs;
|
|
195
197
|
res.matrix().row(Dim).setZero();
|
|
196
|
-
res(Dim,Dim) = Scalar(1);
|
|
198
|
+
res(Dim, Dim) = Scalar(1);
|
|
197
199
|
return res;
|
|
198
200
|
}
|
|
199
201
|
|
|
200
|
-
}
|
|
202
|
+
} // end namespace Eigen
|
|
201
203
|
|
|
202
|
-
#endif
|
|
204
|
+
#endif // EIGEN_TRANSLATION_H
|
|
@@ -10,15 +10,16 @@
|
|
|
10
10
|
#ifndef EIGEN_UMEYAMA_H
|
|
11
11
|
#define EIGEN_UMEYAMA_H
|
|
12
12
|
|
|
13
|
-
// This file requires the user to include
|
|
13
|
+
// This file requires the user to include
|
|
14
14
|
// * Eigen/Core
|
|
15
|
-
// * Eigen/LU
|
|
15
|
+
// * Eigen/LU
|
|
16
16
|
// * Eigen/SVD
|
|
17
17
|
// * Eigen/Array
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
// IWYU pragma: private
|
|
20
|
+
#include "./InternalHeaderCheck.h"
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
namespace Eigen {
|
|
22
23
|
|
|
23
24
|
// These helpers are required since it allows to use mixed types as parameters
|
|
24
25
|
// for the Umeyama. The problem with mixed parameters is that the return type
|
|
@@ -28,88 +29,83 @@ namespace internal {
|
|
|
28
29
|
// Compile time return type deduction for different MatrixBase types.
|
|
29
30
|
// Different means here different alignment and parameters but the same underlying
|
|
30
31
|
// real scalar type.
|
|
31
|
-
template<typename MatrixType, typename OtherMatrixType>
|
|
32
|
-
struct umeyama_transform_matrix_type
|
|
33
|
-
{
|
|
32
|
+
template <typename MatrixType, typename OtherMatrixType>
|
|
33
|
+
struct umeyama_transform_matrix_type {
|
|
34
34
|
enum {
|
|
35
|
-
MinRowsAtCompileTime =
|
|
35
|
+
MinRowsAtCompileTime =
|
|
36
|
+
internal::min_size_prefer_dynamic(MatrixType::RowsAtCompileTime, OtherMatrixType::RowsAtCompileTime),
|
|
36
37
|
|
|
37
38
|
// When possible we want to choose some small fixed size value since the result
|
|
38
|
-
// is likely to fit on the stack. So here,
|
|
39
|
-
HomogeneousDimension = int(MinRowsAtCompileTime) == Dynamic ? Dynamic : int(MinRowsAtCompileTime)+1
|
|
39
|
+
// is likely to fit on the stack. So here, min_size_prefer_dynamic is not what we want.
|
|
40
|
+
HomogeneousDimension = int(MinRowsAtCompileTime) == Dynamic ? Dynamic : int(MinRowsAtCompileTime) + 1
|
|
40
41
|
};
|
|
41
42
|
|
|
42
|
-
typedef Matrix<typename traits<MatrixType>::Scalar,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
HomogeneousDimension,
|
|
47
|
-
HomogeneousDimension
|
|
48
|
-
> type;
|
|
43
|
+
typedef Matrix<typename traits<MatrixType>::Scalar, HomogeneousDimension, HomogeneousDimension,
|
|
44
|
+
AutoAlign | (traits<MatrixType>::Flags & RowMajorBit ? RowMajor : ColMajor), HomogeneousDimension,
|
|
45
|
+
HomogeneousDimension>
|
|
46
|
+
type;
|
|
49
47
|
};
|
|
50
48
|
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
#endif
|
|
49
|
+
} // namespace internal
|
|
54
50
|
|
|
55
51
|
/**
|
|
56
|
-
* \geometry_module \ingroup Geometry_Module
|
|
57
|
-
*
|
|
58
|
-
* \brief Returns the transformation between two point sets.
|
|
59
|
-
*
|
|
60
|
-
* The algorithm is based on:
|
|
61
|
-
* "Least-squares estimation of transformation parameters between two point patterns",
|
|
62
|
-
* Shinji Umeyama, PAMI 1991, DOI: 10.1109/34.88573
|
|
63
|
-
*
|
|
64
|
-
* It estimates parameters \f$ c, \mathbf{R}, \f$ and \f$ \mathbf{t} \f$ such that
|
|
65
|
-
* \f{align*}
|
|
66
|
-
* \frac{1}{n} \sum_{i=1}^n \vert\vert y_i - (c\mathbf{R}x_i + \mathbf{t}) \vert\vert_2^2
|
|
67
|
-
* \f}
|
|
68
|
-
* is minimized.
|
|
69
|
-
*
|
|
70
|
-
* The algorithm is based on the analysis of the covariance matrix
|
|
71
|
-
* \f$ \Sigma_{\mathbf{x}\mathbf{y}} \in \mathbb{R}^{d \times d} \f$
|
|
72
|
-
* of the input point sets \f$ \mathbf{x} \f$ and \f$ \mathbf{y} \f$ where
|
|
73
|
-
* \f$d\f$ is corresponding to the dimension (which is typically small).
|
|
74
|
-
* The analysis is involving the SVD having a complexity of \f$O(d^3)\f$
|
|
75
|
-
* though the actual computational effort lies in the covariance
|
|
76
|
-
* matrix computation which has an asymptotic lower bound of \f$O(dm)\f$ when
|
|
77
|
-
* the input point sets have dimension \f$d \times m\f$.
|
|
78
|
-
*
|
|
79
|
-
* Currently the method is working only for floating point matrices.
|
|
80
|
-
*
|
|
81
|
-
* \todo Should the return type of umeyama() become a Transform?
|
|
82
|
-
*
|
|
83
|
-
* \param src Source points \f$ \mathbf{x} = \left( x_1, \hdots, x_n \right) \f$.
|
|
84
|
-
* \param dst Destination points \f$ \mathbf{y} = \left( y_1, \hdots, y_n \right) \f$.
|
|
85
|
-
* \param with_scaling Sets \f$ c=1 \f$ when <code>false</code> is passed.
|
|
86
|
-
* \return The homogeneous transformation
|
|
87
|
-
* \f{align*}
|
|
88
|
-
* T = \begin{bmatrix} c\mathbf{R} & \mathbf{t} \\ \mathbf{0} & 1 \end{bmatrix}
|
|
89
|
-
* \f}
|
|
90
|
-
* minimizing the residual above. This transformation is always returned as an
|
|
91
|
-
* Eigen::Matrix.
|
|
92
|
-
*/
|
|
52
|
+
* \geometry_module \ingroup Geometry_Module
|
|
53
|
+
*
|
|
54
|
+
* \brief Returns the transformation between two point sets.
|
|
55
|
+
*
|
|
56
|
+
* The algorithm is based on:
|
|
57
|
+
* "Least-squares estimation of transformation parameters between two point patterns",
|
|
58
|
+
* Shinji Umeyama, PAMI 1991, DOI: 10.1109/34.88573
|
|
59
|
+
*
|
|
60
|
+
* It estimates parameters \f$ c, \mathbf{R}, \f$ and \f$ \mathbf{t} \f$ such that
|
|
61
|
+
* \f{align*}
|
|
62
|
+
* \frac{1}{n} \sum_{i=1}^n \vert\vert y_i - (c\mathbf{R}x_i + \mathbf{t}) \vert\vert_2^2
|
|
63
|
+
* \f}
|
|
64
|
+
* is minimized.
|
|
65
|
+
*
|
|
66
|
+
* The algorithm is based on the analysis of the covariance matrix
|
|
67
|
+
* \f$ \Sigma_{\mathbf{x}\mathbf{y}} \in \mathbb{R}^{d \times d} \f$
|
|
68
|
+
* of the input point sets \f$ \mathbf{x} \f$ and \f$ \mathbf{y} \f$ where
|
|
69
|
+
* \f$d\f$ is corresponding to the dimension (which is typically small).
|
|
70
|
+
* The analysis is involving the SVD having a complexity of \f$O(d^3)\f$
|
|
71
|
+
* though the actual computational effort lies in the covariance
|
|
72
|
+
* matrix computation which has an asymptotic lower bound of \f$O(dm)\f$ when
|
|
73
|
+
* the input point sets have dimension \f$d \times m\f$.
|
|
74
|
+
*
|
|
75
|
+
* Currently the method is working only for floating point matrices.
|
|
76
|
+
*
|
|
77
|
+
* \todo Should the return type of umeyama() become a Transform?
|
|
78
|
+
*
|
|
79
|
+
* \param src Source points \f$ \mathbf{x} = \left( x_1, \hdots, x_n \right) \f$.
|
|
80
|
+
* \param dst Destination points \f$ \mathbf{y} = \left( y_1, \hdots, y_n \right) \f$.
|
|
81
|
+
* \param with_scaling Sets \f$ c=1 \f$ when <code>false</code> is passed.
|
|
82
|
+
* \return The homogeneous transformation
|
|
83
|
+
* \f{align*}
|
|
84
|
+
* T = \begin{bmatrix} c\mathbf{R} & \mathbf{t} \\ \mathbf{0} & 1 \end{bmatrix}
|
|
85
|
+
* \f}
|
|
86
|
+
* minimizing the residual above. This transformation is always returned as an
|
|
87
|
+
* Eigen::Matrix.
|
|
88
|
+
*/
|
|
93
89
|
template <typename Derived, typename OtherDerived>
|
|
94
|
-
typename internal::umeyama_transform_matrix_type<Derived, OtherDerived>::type
|
|
95
|
-
|
|
96
|
-
{
|
|
90
|
+
typename internal::umeyama_transform_matrix_type<Derived, OtherDerived>::type umeyama(
|
|
91
|
+
const MatrixBase<Derived>& src, const MatrixBase<OtherDerived>& dst, bool with_scaling = true) {
|
|
97
92
|
typedef typename internal::umeyama_transform_matrix_type<Derived, OtherDerived>::type TransformationMatrixType;
|
|
98
93
|
typedef typename internal::traits<TransformationMatrixType>::Scalar Scalar;
|
|
99
94
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
|
100
95
|
|
|
101
96
|
EIGEN_STATIC_ASSERT(!NumTraits<Scalar>::IsComplex, NUMERIC_TYPE_MUST_BE_REAL)
|
|
102
|
-
EIGEN_STATIC_ASSERT(
|
|
103
|
-
|
|
97
|
+
EIGEN_STATIC_ASSERT(
|
|
98
|
+
(internal::is_same<Scalar, typename internal::traits<OtherDerived>::Scalar>::value),
|
|
99
|
+
YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
|
|
104
100
|
|
|
105
|
-
enum { Dimension =
|
|
101
|
+
enum { Dimension = internal::min_size_prefer_dynamic(Derived::RowsAtCompileTime, OtherDerived::RowsAtCompileTime) };
|
|
106
102
|
|
|
107
103
|
typedef Matrix<Scalar, Dimension, 1> VectorType;
|
|
108
104
|
typedef Matrix<Scalar, Dimension, Dimension> MatrixType;
|
|
109
105
|
typedef typename internal::plain_matrix_type_row_major<Derived>::type RowMajorMatrixType;
|
|
110
106
|
|
|
111
|
-
const Index m = src.rows();
|
|
112
|
-
const Index n = src.cols();
|
|
107
|
+
const Index m = src.rows(); // dimension
|
|
108
|
+
const Index n = src.cols(); // number of measurements
|
|
113
109
|
|
|
114
110
|
// required for demeaning ...
|
|
115
111
|
const RealScalar one_over_n = RealScalar(1) / static_cast<RealScalar>(n);
|
|
@@ -122,45 +118,44 @@ umeyama(const MatrixBase<Derived>& src, const MatrixBase<OtherDerived>& dst, boo
|
|
|
122
118
|
const RowMajorMatrixType src_demean = src.colwise() - src_mean;
|
|
123
119
|
const RowMajorMatrixType dst_demean = dst.colwise() - dst_mean;
|
|
124
120
|
|
|
125
|
-
// Eq. (36)-(37)
|
|
126
|
-
const Scalar src_var = src_demean.rowwise().squaredNorm().sum() * one_over_n;
|
|
127
|
-
|
|
128
121
|
// Eq. (38)
|
|
129
122
|
const MatrixType sigma = one_over_n * dst_demean * src_demean.transpose();
|
|
130
123
|
|
|
131
|
-
JacobiSVD<MatrixType
|
|
124
|
+
JacobiSVD<MatrixType, ComputeFullU | ComputeFullV> svd(sigma);
|
|
132
125
|
|
|
133
126
|
// Initialize the resulting transformation with an identity matrix...
|
|
134
|
-
TransformationMatrixType Rt = TransformationMatrixType::Identity(m+1,m+1);
|
|
127
|
+
TransformationMatrixType Rt = TransformationMatrixType::Identity(m + 1, m + 1);
|
|
135
128
|
|
|
136
129
|
// Eq. (39)
|
|
137
130
|
VectorType S = VectorType::Ones(m);
|
|
138
131
|
|
|
139
|
-
if
|
|
140
|
-
|
|
132
|
+
if (svd.matrixU().determinant() * svd.matrixV().determinant() < 0) {
|
|
133
|
+
Index tmp = m - 1;
|
|
134
|
+
S(tmp) = -1;
|
|
135
|
+
}
|
|
141
136
|
|
|
142
137
|
// Eq. (40) and (43)
|
|
143
|
-
Rt.block(0,0,m,m).noalias() = svd.matrixU() * S.asDiagonal() * svd.matrixV().transpose();
|
|
138
|
+
Rt.block(0, 0, m, m).noalias() = svd.matrixU() * S.asDiagonal() * svd.matrixV().transpose();
|
|
139
|
+
|
|
140
|
+
if (with_scaling) {
|
|
141
|
+
// Eq. (36)-(37)
|
|
142
|
+
const Scalar src_var = src_demean.rowwise().squaredNorm().sum() * one_over_n;
|
|
144
143
|
|
|
145
|
-
if (with_scaling)
|
|
146
|
-
{
|
|
147
144
|
// Eq. (42)
|
|
148
|
-
const Scalar c = Scalar(1)/src_var * svd.singularValues().dot(S);
|
|
145
|
+
const Scalar c = Scalar(1) / src_var * svd.singularValues().dot(S);
|
|
149
146
|
|
|
150
147
|
// Eq. (41)
|
|
151
148
|
Rt.col(m).head(m) = dst_mean;
|
|
152
|
-
Rt.col(m).head(m).noalias() -= c*Rt.topLeftCorner(m,m)*src_mean;
|
|
153
|
-
Rt.block(0,0,m,m) *= c;
|
|
154
|
-
}
|
|
155
|
-
else
|
|
156
|
-
{
|
|
149
|
+
Rt.col(m).head(m).noalias() -= c * Rt.topLeftCorner(m, m) * src_mean;
|
|
150
|
+
Rt.block(0, 0, m, m) *= c;
|
|
151
|
+
} else {
|
|
157
152
|
Rt.col(m).head(m) = dst_mean;
|
|
158
|
-
Rt.col(m).head(m).noalias() -= Rt.topLeftCorner(m,m)*src_mean;
|
|
153
|
+
Rt.col(m).head(m).noalias() -= Rt.topLeftCorner(m, m) * src_mean;
|
|
159
154
|
}
|
|
160
155
|
|
|
161
156
|
return Rt;
|
|
162
157
|
}
|
|
163
158
|
|
|
164
|
-
}
|
|
159
|
+
} // end namespace Eigen
|
|
165
160
|
|
|
166
|
-
#endif
|
|
161
|
+
#endif // EIGEN_UMEYAMA_H
|