tomoto 0.2.2 → 0.3.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +8 -10
- data/ext/tomoto/ct.cpp +11 -11
- data/ext/tomoto/dmr.cpp +14 -13
- data/ext/tomoto/dt.cpp +14 -14
- data/ext/tomoto/extconf.rb +7 -5
- data/ext/tomoto/gdmr.cpp +7 -7
- data/ext/tomoto/hdp.cpp +9 -9
- data/ext/tomoto/hlda.cpp +13 -13
- data/ext/tomoto/hpa.cpp +5 -5
- data/ext/tomoto/lda.cpp +42 -39
- data/ext/tomoto/llda.cpp +6 -6
- data/ext/tomoto/mglda.cpp +15 -15
- data/ext/tomoto/pa.cpp +6 -6
- data/ext/tomoto/plda.cpp +6 -6
- data/ext/tomoto/slda.cpp +8 -8
- data/ext/tomoto/{ext.cpp → tomoto.cpp} +8 -8
- data/ext/tomoto/utils.h +16 -70
- data/lib/tomoto/version.rb +1 -1
- data/lib/tomoto.rb +5 -1
- data/vendor/EigenRand/EigenRand/Core.h +10 -10
- data/vendor/EigenRand/EigenRand/Dists/Basic.h +208 -9
- data/vendor/EigenRand/EigenRand/Dists/Discrete.h +52 -31
- data/vendor/EigenRand/EigenRand/Dists/GammaPoisson.h +9 -8
- data/vendor/EigenRand/EigenRand/Dists/NormalExp.h +28 -21
- data/vendor/EigenRand/EigenRand/EigenRand +11 -6
- data/vendor/EigenRand/EigenRand/Macro.h +13 -7
- data/vendor/EigenRand/EigenRand/MorePacketMath.h +348 -740
- data/vendor/EigenRand/EigenRand/MvDists/Multinomial.h +5 -3
- data/vendor/EigenRand/EigenRand/MvDists/MvNormal.h +9 -3
- data/vendor/EigenRand/EigenRand/PacketFilter.h +11 -253
- data/vendor/EigenRand/EigenRand/PacketRandomEngine.h +21 -47
- data/vendor/EigenRand/EigenRand/RandUtils.h +50 -344
- data/vendor/EigenRand/EigenRand/arch/AVX/MorePacketMath.h +619 -0
- data/vendor/EigenRand/EigenRand/arch/AVX/PacketFilter.h +149 -0
- data/vendor/EigenRand/EigenRand/arch/AVX/RandUtils.h +228 -0
- data/vendor/EigenRand/EigenRand/arch/NEON/MorePacketMath.h +473 -0
- data/vendor/EigenRand/EigenRand/arch/NEON/PacketFilter.h +142 -0
- data/vendor/EigenRand/EigenRand/arch/NEON/RandUtils.h +126 -0
- data/vendor/EigenRand/EigenRand/arch/SSE/MorePacketMath.h +501 -0
- data/vendor/EigenRand/EigenRand/arch/SSE/PacketFilter.h +133 -0
- data/vendor/EigenRand/EigenRand/arch/SSE/RandUtils.h +120 -0
- data/vendor/EigenRand/EigenRand/doc.h +24 -12
- data/vendor/EigenRand/README.md +57 -4
- data/vendor/eigen/COPYING.APACHE +203 -0
- data/vendor/eigen/COPYING.BSD +1 -1
- data/vendor/eigen/COPYING.MINPACK +51 -52
- data/vendor/eigen/Eigen/Cholesky +0 -1
- data/vendor/eigen/Eigen/Core +112 -265
- data/vendor/eigen/Eigen/Eigenvalues +2 -3
- data/vendor/eigen/Eigen/Geometry +5 -8
- data/vendor/eigen/Eigen/Householder +0 -1
- data/vendor/eigen/Eigen/Jacobi +0 -1
- data/vendor/eigen/Eigen/KLUSupport +41 -0
- data/vendor/eigen/Eigen/LU +2 -5
- data/vendor/eigen/Eigen/OrderingMethods +0 -3
- data/vendor/eigen/Eigen/PaStiXSupport +1 -0
- data/vendor/eigen/Eigen/PardisoSupport +0 -0
- data/vendor/eigen/Eigen/QR +2 -3
- data/vendor/eigen/Eigen/QtAlignedMalloc +0 -1
- data/vendor/eigen/Eigen/SVD +0 -1
- data/vendor/eigen/Eigen/Sparse +0 -2
- data/vendor/eigen/Eigen/SparseCholesky +0 -8
- data/vendor/eigen/Eigen/SparseLU +4 -0
- data/vendor/eigen/Eigen/SparseQR +0 -1
- data/vendor/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
- data/vendor/eigen/Eigen/src/Cholesky/LLT.h +39 -23
- data/vendor/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
- data/vendor/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
- data/vendor/eigen/Eigen/src/Core/Array.h +99 -11
- data/vendor/eigen/Eigen/src/Core/ArrayBase.h +3 -3
- data/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
- data/vendor/eigen/Eigen/src/Core/Assign.h +1 -1
- data/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
- data/vendor/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
- data/vendor/eigen/Eigen/src/Core/BandMatrix.h +16 -16
- data/vendor/eigen/Eigen/src/Core/Block.h +56 -60
- data/vendor/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
- data/vendor/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
- data/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
- data/vendor/eigen/Eigen/src/Core/CoreIterators.h +5 -0
- data/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
- data/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
- data/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
- data/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +14 -10
- data/vendor/eigen/Eigen/src/Core/DenseBase.h +132 -42
- data/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
- data/vendor/eigen/Eigen/src/Core/DenseStorage.h +153 -71
- data/vendor/eigen/Eigen/src/Core/Diagonal.h +21 -23
- data/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
- data/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
- data/vendor/eigen/Eigen/src/Core/Dot.h +10 -10
- data/vendor/eigen/Eigen/src/Core/EigenBase.h +10 -9
- data/vendor/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
- data/vendor/eigen/Eigen/src/Core/Fuzzy.h +3 -3
- data/vendor/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
- data/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +599 -152
- data/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
- data/vendor/eigen/Eigen/src/Core/IO.h +40 -7
- data/vendor/eigen/Eigen/src/Core/IndexedView.h +237 -0
- data/vendor/eigen/Eigen/src/Core/Inverse.h +9 -10
- data/vendor/eigen/Eigen/src/Core/Map.h +7 -7
- data/vendor/eigen/Eigen/src/Core/MapBase.h +10 -3
- data/vendor/eigen/Eigen/src/Core/MathFunctions.h +767 -125
- data/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
- data/vendor/eigen/Eigen/src/Core/Matrix.h +131 -25
- data/vendor/eigen/Eigen/src/Core/MatrixBase.h +21 -3
- data/vendor/eigen/Eigen/src/Core/NestByValue.h +25 -50
- data/vendor/eigen/Eigen/src/Core/NoAlias.h +4 -3
- data/vendor/eigen/Eigen/src/Core/NumTraits.h +107 -20
- data/vendor/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- data/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +3 -31
- data/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +152 -59
- data/vendor/eigen/Eigen/src/Core/Product.h +30 -25
- data/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +192 -125
- data/vendor/eigen/Eigen/src/Core/Random.h +37 -1
- data/vendor/eigen/Eigen/src/Core/Redux.h +180 -170
- data/vendor/eigen/Eigen/src/Core/Ref.h +121 -23
- data/vendor/eigen/Eigen/src/Core/Replicate.h +8 -8
- data/vendor/eigen/Eigen/src/Core/Reshaped.h +454 -0
- data/vendor/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
- data/vendor/eigen/Eigen/src/Core/Reverse.h +18 -12
- data/vendor/eigen/Eigen/src/Core/Select.h +8 -6
- data/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
- data/vendor/eigen/Eigen/src/Core/Solve.h +14 -14
- data/vendor/eigen/Eigen/src/Core/SolveTriangular.h +16 -16
- data/vendor/eigen/Eigen/src/Core/SolverBase.h +41 -3
- data/vendor/eigen/Eigen/src/Core/StableNorm.h +100 -70
- data/vendor/eigen/Eigen/src/Core/StlIterators.h +463 -0
- data/vendor/eigen/Eigen/src/Core/Stride.h +9 -4
- data/vendor/eigen/Eigen/src/Core/Swap.h +5 -4
- data/vendor/eigen/Eigen/src/Core/Transpose.h +88 -27
- data/vendor/eigen/Eigen/src/Core/Transpositions.h +26 -47
- data/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +93 -75
- data/vendor/eigen/Eigen/src/Core/VectorBlock.h +5 -5
- data/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
- data/vendor/eigen/Eigen/src/Core/Visitor.h +137 -29
- data/vendor/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
- data/vendor/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
- data/vendor/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
- data/vendor/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +207 -236
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1482 -495
- data/vendor/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- data/vendor/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
- data/vendor/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
- data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
- data/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
- data/vendor/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- data/vendor/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
- data/vendor/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- data/vendor/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- data/vendor/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- data/vendor/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- data/vendor/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- data/vendor/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- data/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
- data/vendor/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- data/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
- data/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
- data/vendor/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- data/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
- data/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
- data/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
- data/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
- data/vendor/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- data/vendor/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- data/vendor/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- data/vendor/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- data/vendor/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
- data/vendor/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
- data/vendor/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
- data/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
- data/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
- data/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
- data/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
- data/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +355 -16
- data/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1075 -586
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +49 -24
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +41 -35
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +6 -6
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +4 -2
- data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
- data/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +22 -5
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +53 -30
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +16 -8
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +4 -4
- data/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
- data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +33 -27
- data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +14 -12
- data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +36 -34
- data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +8 -4
- data/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
- data/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +304 -119
- data/vendor/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- data/vendor/eigen/Eigen/src/Core/util/Constants.h +25 -9
- data/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +26 -3
- data/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +29 -9
- data/vendor/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- data/vendor/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
- data/vendor/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
- data/vendor/eigen/Eigen/src/Core/util/Macros.h +709 -246
- data/vendor/eigen/Eigen/src/Core/util/Memory.h +222 -52
- data/vendor/eigen/Eigen/src/Core/util/Meta.h +355 -77
- data/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +5 -1
- data/vendor/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- data/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
- data/vendor/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- data/vendor/eigen/Eigen/src/Core/util/XprHelper.h +65 -30
- data/vendor/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
- data/vendor/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +7 -4
- data/vendor/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
- data/vendor/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
- data/vendor/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
- data/vendor/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
- data/vendor/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
- data/vendor/eigen/Eigen/src/Eigenvalues/RealSchur.h +21 -9
- data/vendor/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +77 -43
- data/vendor/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
- data/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
- data/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
- data/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
- data/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
- data/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
- data/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
- data/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
- data/vendor/eigen/Eigen/src/Geometry/Quaternion.h +70 -14
- data/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
- data/vendor/eigen/Eigen/src/Geometry/Scaling.h +23 -5
- data/vendor/eigen/Eigen/src/Geometry/Transform.h +88 -67
- data/vendor/eigen/Eigen/src/Geometry/Translation.h +6 -12
- data/vendor/eigen/Eigen/src/Geometry/Umeyama.h +1 -1
- data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- data/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
- data/vendor/eigen/Eigen/src/Householder/Householder.h +8 -4
- data/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
- data/vendor/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
- data/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
- data/vendor/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- data/vendor/eigen/Eigen/src/LU/Determinant.h +35 -19
- data/vendor/eigen/Eigen/src/LU/FullPivLU.h +29 -43
- data/vendor/eigen/Eigen/src/LU/InverseImpl.h +25 -8
- data/vendor/eigen/Eigen/src/LU/PartialPivLU.h +71 -58
- data/vendor/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
- data/vendor/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
- data/vendor/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
- data/vendor/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
- data/vendor/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
- data/vendor/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +9 -7
- data/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
- data/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
- data/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
- data/vendor/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
- data/vendor/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
- data/vendor/eigen/Eigen/src/SVD/BDCSVD.h +183 -63
- data/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
- data/vendor/eigen/Eigen/src/SVD/SVDBase.h +83 -22
- data/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
- data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +17 -9
- data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +12 -37
- data/vendor/eigen/Eigen/src/SparseCore/AmbiVector.h +3 -2
- data/vendor/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
- data/vendor/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
- data/vendor/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
- data/vendor/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
- data/vendor/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
- data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
- data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +4 -2
- data/vendor/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
- data/vendor/eigen/Eigen/src/SparseCore/SparseMatrix.h +126 -11
- data/vendor/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
- data/vendor/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
- data/vendor/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
- data/vendor/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +5 -2
- data/vendor/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
- data/vendor/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
- data/vendor/eigen/Eigen/src/SparseCore/SparseView.h +1 -0
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU.h +162 -12
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
- data/vendor/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
- data/vendor/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
- data/vendor/eigen/Eigen/src/StlSupport/StdDeque.h +2 -12
- data/vendor/eigen/Eigen/src/StlSupport/StdList.h +2 -2
- data/vendor/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
- data/vendor/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
- data/vendor/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
- data/vendor/eigen/Eigen/src/misc/lapacke.h +5 -4
- data/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +28 -2
- data/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
- data/vendor/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
- data/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
- data/vendor/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- data/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
- data/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
- data/vendor/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
- data/vendor/eigen/README.md +2 -0
- data/vendor/eigen/bench/btl/README +1 -1
- data/vendor/eigen/bench/tensors/README +6 -7
- data/vendor/eigen/ci/README.md +56 -0
- data/vendor/eigen/demos/mix_eigen_and_c/README +1 -1
- data/vendor/eigen/unsupported/Eigen/CXX11/src/Tensor/README.md +213 -158
- data/vendor/eigen/unsupported/README.txt +1 -1
- data/vendor/tomotopy/README.kr.rst +78 -0
- data/vendor/tomotopy/README.rst +75 -0
- data/vendor/tomotopy/src/Labeling/FoRelevance.cpp +2 -2
- data/vendor/tomotopy/src/Labeling/Phraser.hpp +4 -4
- data/vendor/tomotopy/src/TopicModel/CTModel.hpp +7 -3
- data/vendor/tomotopy/src/TopicModel/DMRModel.hpp +7 -3
- data/vendor/tomotopy/src/TopicModel/DTModel.hpp +6 -3
- data/vendor/tomotopy/src/TopicModel/GDMRModel.hpp +2 -2
- data/vendor/tomotopy/src/TopicModel/HDP.h +1 -0
- data/vendor/tomotopy/src/TopicModel/HDPModel.hpp +57 -6
- data/vendor/tomotopy/src/TopicModel/HLDAModel.hpp +6 -3
- data/vendor/tomotopy/src/TopicModel/HPAModel.hpp +3 -2
- data/vendor/tomotopy/src/TopicModel/LDA.h +3 -3
- data/vendor/tomotopy/src/TopicModel/LDACVB0Model.hpp +5 -5
- data/vendor/tomotopy/src/TopicModel/LDAModel.hpp +50 -19
- data/vendor/tomotopy/src/TopicModel/LLDAModel.hpp +6 -2
- data/vendor/tomotopy/src/TopicModel/MGLDAModel.hpp +3 -2
- data/vendor/tomotopy/src/TopicModel/PAModel.hpp +1 -1
- data/vendor/tomotopy/src/TopicModel/PLDAModel.hpp +6 -2
- data/vendor/tomotopy/src/TopicModel/PT.h +3 -1
- data/vendor/tomotopy/src/TopicModel/PTModel.hpp +36 -3
- data/vendor/tomotopy/src/TopicModel/SLDAModel.hpp +6 -3
- data/vendor/tomotopy/src/TopicModel/TopicModel.hpp +55 -26
- data/vendor/tomotopy/src/Utils/AliasMethod.hpp +5 -4
- data/vendor/tomotopy/src/Utils/Dictionary.h +2 -2
- data/vendor/tomotopy/src/Utils/EigenAddonOps.hpp +36 -1
- data/vendor/tomotopy/src/Utils/MultiNormalDistribution.hpp +1 -1
- data/vendor/tomotopy/src/Utils/TruncMultiNormal.hpp +1 -1
- data/vendor/tomotopy/src/Utils/exception.h +6 -0
- data/vendor/tomotopy/src/Utils/math.h +2 -2
- data/vendor/tomotopy/src/Utils/sample.hpp +14 -12
- data/vendor/tomotopy/src/Utils/serializer.hpp +30 -5
- data/vendor/tomotopy/src/Utils/sse_gamma.h +0 -3
- metadata +64 -18
- data/vendor/eigen/Eigen/CMakeLists.txt +0 -19
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -674
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
- data/vendor/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
- data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
- data/vendor/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
@@ -7,10 +7,46 @@
|
|
7
7
|
// Public License v. 2.0. If a copy of the MPL was not distributed
|
8
8
|
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
9
9
|
|
10
|
+
// Function void Eigen::AlignedBox::transform(const Transform& transform)
|
11
|
+
// is provided under the following license agreement:
|
12
|
+
//
|
13
|
+
// Software License Agreement (BSD License)
|
14
|
+
//
|
15
|
+
// Copyright (c) 2011-2014, Willow Garage, Inc.
|
16
|
+
// Copyright (c) 2014-2015, Open Source Robotics Foundation
|
17
|
+
// All rights reserved.
|
18
|
+
//
|
19
|
+
// Redistribution and use in source and binary forms, with or without
|
20
|
+
// modification, are permitted provided that the following conditions
|
21
|
+
// are met:
|
22
|
+
//
|
23
|
+
// * Redistributions of source code must retain the above copyright
|
24
|
+
// notice, this list of conditions and the following disclaimer.
|
25
|
+
// * Redistributions in binary form must reproduce the above
|
26
|
+
// copyright notice, this list of conditions and the following
|
27
|
+
// disclaimer in the documentation and/or other materials provided
|
28
|
+
// with the distribution.
|
29
|
+
// * Neither the name of Open Source Robotics Foundation nor the names of its
|
30
|
+
// contributors may be used to endorse or promote products derived
|
31
|
+
// from this software without specific prior written permission.
|
32
|
+
//
|
33
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
34
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
35
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
36
|
+
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
37
|
+
// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
38
|
+
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
39
|
+
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
40
|
+
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
41
|
+
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
42
|
+
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
43
|
+
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
44
|
+
// POSSIBILITY OF SUCH DAMAGE.
|
45
|
+
|
10
46
|
#ifndef EIGEN_ALIGNEDBOX_H
|
11
47
|
#define EIGEN_ALIGNEDBOX_H
|
12
48
|
|
13
|
-
namespace Eigen {
|
49
|
+
namespace Eigen {
|
14
50
|
|
15
51
|
/** \geometry_module \ingroup Geometry_Module
|
16
52
|
*
|
@@ -63,7 +99,7 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
63
99
|
|
64
100
|
/** Default constructor initializing a null box. */
|
65
101
|
EIGEN_DEVICE_FUNC inline AlignedBox()
|
66
|
-
{ if (AmbientDimAtCompileTime!=Dynamic) setEmpty(); }
|
102
|
+
{ if (EIGEN_CONST_CONDITIONAL(AmbientDimAtCompileTime!=Dynamic)) setEmpty(); }
|
67
103
|
|
68
104
|
/** Constructs a null box with \a _dim the dimension of the ambient space. */
|
69
105
|
EIGEN_DEVICE_FUNC inline explicit AlignedBox(Index _dim) : m_min(_dim), m_max(_dim)
|
@@ -231,7 +267,7 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
231
267
|
{return AlignedBox(m_min.cwiseMax(b.m_min), m_max.cwiseMin(b.m_max)); }
|
232
268
|
|
233
269
|
/** Returns an AlignedBox that is the union of \a b and \c *this.
|
234
|
-
* \note Merging with an empty box may result in a box bigger than \c *this.
|
270
|
+
* \note Merging with an empty box may result in a box bigger than \c *this.
|
235
271
|
* \sa extend(const AlignedBox&) */
|
236
272
|
EIGEN_DEVICE_FUNC inline AlignedBox merged(const AlignedBox& b) const
|
237
273
|
{ return AlignedBox(m_min.cwiseMin(b.m_min), m_max.cwiseMax(b.m_max)); }
|
@@ -246,6 +282,15 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
246
282
|
return *this;
|
247
283
|
}
|
248
284
|
|
285
|
+
/** \returns a copy of \c *this translated by the vector \a t. */
|
286
|
+
template<typename Derived>
|
287
|
+
EIGEN_DEVICE_FUNC inline AlignedBox translated(const MatrixBase<Derived>& a_t) const
|
288
|
+
{
|
289
|
+
AlignedBox result(m_min, m_max);
|
290
|
+
result.translate(a_t);
|
291
|
+
return result;
|
292
|
+
}
|
293
|
+
|
249
294
|
/** \returns the squared distance between the point \a p and the box \c *this,
|
250
295
|
* and zero if \a p is inside the box.
|
251
296
|
* \sa exteriorDistance(const MatrixBase&), squaredExteriorDistance(const AlignedBox&)
|
@@ -265,14 +310,63 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
|
|
265
310
|
*/
|
266
311
|
template<typename Derived>
|
267
312
|
EIGEN_DEVICE_FUNC inline NonInteger exteriorDistance(const MatrixBase<Derived>& p) const
|
268
|
-
{
|
313
|
+
{ EIGEN_USING_STD(sqrt) return sqrt(NonInteger(squaredExteriorDistance(p))); }
|
269
314
|
|
270
315
|
/** \returns the distance between the boxes \a b and \c *this,
|
271
316
|
* and zero if the boxes intersect.
|
272
317
|
* \sa squaredExteriorDistance(const AlignedBox&), exteriorDistance(const MatrixBase&)
|
273
318
|
*/
|
274
319
|
EIGEN_DEVICE_FUNC inline NonInteger exteriorDistance(const AlignedBox& b) const
|
275
|
-
{
|
320
|
+
{ EIGEN_USING_STD(sqrt) return sqrt(NonInteger(squaredExteriorDistance(b))); }
|
321
|
+
|
322
|
+
/**
|
323
|
+
* Specialization of transform for pure translation.
|
324
|
+
*/
|
325
|
+
template<int Mode, int Options>
|
326
|
+
EIGEN_DEVICE_FUNC inline void transform(
|
327
|
+
const typename Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>::TranslationType& translation)
|
328
|
+
{
|
329
|
+
this->translate(translation);
|
330
|
+
}
|
331
|
+
|
332
|
+
/**
|
333
|
+
* Transforms this box by \a transform and recomputes it to
|
334
|
+
* still be an axis-aligned box.
|
335
|
+
*
|
336
|
+
* \note This method is provided under BSD license (see the top of this file).
|
337
|
+
*/
|
338
|
+
template<int Mode, int Options>
|
339
|
+
EIGEN_DEVICE_FUNC inline void transform(const Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>& transform)
|
340
|
+
{
|
341
|
+
// Only Affine and Isometry transforms are currently supported.
|
342
|
+
EIGEN_STATIC_ASSERT(Mode == Affine || Mode == AffineCompact || Mode == Isometry, THIS_METHOD_IS_ONLY_FOR_SPECIFIC_TRANSFORMATIONS);
|
343
|
+
|
344
|
+
// Method adapted from FCL src/shape/geometric_shapes_utility.cpp#computeBV<AABB, Box>(...)
|
345
|
+
// https://github.com/flexible-collision-library/fcl/blob/fcl-0.4/src/shape/geometric_shapes_utility.cpp#L292
|
346
|
+
//
|
347
|
+
// Here's a nice explanation why it works: https://zeuxcg.org/2010/10/17/aabb-from-obb-with-component-wise-abs/
|
348
|
+
|
349
|
+
// two times rotated extent
|
350
|
+
const VectorType rotated_extent_2 = transform.linear().cwiseAbs() * sizes();
|
351
|
+
// two times new center
|
352
|
+
const VectorType rotated_center_2 = transform.linear() * (this->m_max + this->m_min) +
|
353
|
+
Scalar(2) * transform.translation();
|
354
|
+
|
355
|
+
this->m_max = (rotated_center_2 + rotated_extent_2) / Scalar(2);
|
356
|
+
this->m_min = (rotated_center_2 - rotated_extent_2) / Scalar(2);
|
357
|
+
}
|
358
|
+
|
359
|
+
/**
|
360
|
+
* \returns a copy of \c *this transformed by \a transform and recomputed to
|
361
|
+
* still be an axis-aligned box.
|
362
|
+
*/
|
363
|
+
template<int Mode, int Options>
|
364
|
+
EIGEN_DEVICE_FUNC AlignedBox transformed(const Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>& transform) const
|
365
|
+
{
|
366
|
+
AlignedBox result(m_min, m_max);
|
367
|
+
result.transform(transform);
|
368
|
+
return result;
|
369
|
+
}
|
276
370
|
|
277
371
|
/** \returns \c *this with scalar type casted to \a NewScalarType
|
278
372
|
*
|
@@ -169,8 +169,8 @@ template<typename Scalar>
|
|
169
169
|
template<typename QuatDerived>
|
170
170
|
EIGEN_DEVICE_FUNC AngleAxis<Scalar>& AngleAxis<Scalar>::operator=(const QuaternionBase<QuatDerived>& q)
|
171
171
|
{
|
172
|
-
|
173
|
-
|
172
|
+
EIGEN_USING_STD(atan2)
|
173
|
+
EIGEN_USING_STD(abs)
|
174
174
|
Scalar n = q.vec().norm();
|
175
175
|
if(n<NumTraits<Scalar>::epsilon())
|
176
176
|
n = q.vec().stableNorm();
|
@@ -217,8 +217,8 @@ template<typename Scalar>
|
|
217
217
|
typename AngleAxis<Scalar>::Matrix3
|
218
218
|
EIGEN_DEVICE_FUNC AngleAxis<Scalar>::toRotationMatrix(void) const
|
219
219
|
{
|
220
|
-
|
221
|
-
|
220
|
+
EIGEN_USING_STD(sin)
|
221
|
+
EIGEN_USING_STD(cos)
|
222
222
|
Matrix3 res;
|
223
223
|
Vector3 sin_axis = sin(m_angle) * m_axis;
|
224
224
|
Scalar c = cos(m_angle);
|
@@ -36,9 +36,9 @@ template<typename Derived>
|
|
36
36
|
EIGEN_DEVICE_FUNC inline Matrix<typename MatrixBase<Derived>::Scalar,3,1>
|
37
37
|
MatrixBase<Derived>::eulerAngles(Index a0, Index a1, Index a2) const
|
38
38
|
{
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
EIGEN_USING_STD(atan2)
|
40
|
+
EIGEN_USING_STD(sin)
|
41
|
+
EIGEN_USING_STD(cos)
|
42
42
|
/* Implemented from Graphics Gems IV */
|
43
43
|
EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived,3,3)
|
44
44
|
|
@@ -10,7 +10,7 @@
|
|
10
10
|
#ifndef EIGEN_HOMOGENEOUS_H
|
11
11
|
#define EIGEN_HOMOGENEOUS_H
|
12
12
|
|
13
|
-
namespace Eigen {
|
13
|
+
namespace Eigen {
|
14
14
|
|
15
15
|
/** \geometry_module \ingroup Geometry_Module
|
16
16
|
*
|
@@ -72,9 +72,11 @@ template<typename MatrixType,int _Direction> class Homogeneous
|
|
72
72
|
: m_matrix(matrix)
|
73
73
|
{}
|
74
74
|
|
75
|
-
EIGEN_DEVICE_FUNC
|
76
|
-
|
77
|
-
|
75
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
76
|
+
inline Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows() + (int(Direction)==Vertical ? 1 : 0); }
|
77
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
78
|
+
inline Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols() + (int(Direction)==Horizontal ? 1 : 0); }
|
79
|
+
|
78
80
|
EIGEN_DEVICE_FUNC const NestedExpression& nestedExpression() const { return m_matrix; }
|
79
81
|
|
80
82
|
template<typename Rhs>
|
@@ -262,8 +264,10 @@ struct homogeneous_left_product_impl<Homogeneous<MatrixType,Vertical>,Lhs>
|
|
262
264
|
m_rhs(rhs)
|
263
265
|
{}
|
264
266
|
|
265
|
-
EIGEN_DEVICE_FUNC
|
266
|
-
|
267
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
268
|
+
inline Index rows() const EIGEN_NOEXCEPT { return m_lhs.rows(); }
|
269
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
270
|
+
inline Index cols() const EIGEN_NOEXCEPT { return m_rhs.cols(); }
|
267
271
|
|
268
272
|
template<typename Dest> EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const
|
269
273
|
{
|
@@ -300,8 +304,8 @@ struct homogeneous_right_product_impl<Homogeneous<MatrixType,Horizontal>,Rhs>
|
|
300
304
|
: m_lhs(lhs), m_rhs(rhs)
|
301
305
|
{}
|
302
306
|
|
303
|
-
EIGEN_DEVICE_FUNC inline Index rows() const { return m_lhs.rows(); }
|
304
|
-
EIGEN_DEVICE_FUNC inline Index cols() const { return m_rhs.cols(); }
|
307
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index rows() const EIGEN_NOEXCEPT { return m_lhs.rows(); }
|
308
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index cols() const EIGEN_NOEXCEPT { return m_rhs.cols(); }
|
305
309
|
|
306
310
|
template<typename Dest> EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const
|
307
311
|
{
|
@@ -322,7 +326,7 @@ template<typename ArgType,int Direction>
|
|
322
326
|
struct evaluator_traits<Homogeneous<ArgType,Direction> >
|
323
327
|
{
|
324
328
|
typedef typename storage_kind_to_evaluator_kind<typename ArgType::StorageKind>::Kind Kind;
|
325
|
-
typedef HomogeneousShape Shape;
|
329
|
+
typedef HomogeneousShape Shape;
|
326
330
|
};
|
327
331
|
|
328
332
|
template<> struct AssignmentKind<DenseShape,HomogeneousShape> { typedef Dense2Dense Kind; };
|
@@ -414,7 +418,7 @@ struct product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, Homogeneous
|
|
414
418
|
typedef typename helper::ConstantBlock ConstantBlock;
|
415
419
|
typedef typename helper::Xpr RefactoredXpr;
|
416
420
|
typedef evaluator<RefactoredXpr> Base;
|
417
|
-
|
421
|
+
|
418
422
|
EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
|
419
423
|
: Base( xpr.lhs().nestedExpression() .lazyProduct( xpr.rhs().template topRows<helper::Dim>(xpr.lhs().nestedExpression().cols()) )
|
420
424
|
+ ConstantBlock(xpr.rhs().row(xpr.rhs().rows()-1),xpr.lhs().rows(), 1) )
|
@@ -467,7 +471,7 @@ struct product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, DenseShape,
|
|
467
471
|
typedef typename helper::ConstantBlock ConstantBlock;
|
468
472
|
typedef typename helper::Xpr RefactoredXpr;
|
469
473
|
typedef evaluator<RefactoredXpr> Base;
|
470
|
-
|
474
|
+
|
471
475
|
EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
|
472
476
|
: Base( xpr.lhs().template leftCols<helper::Dim>(xpr.rhs().nestedExpression().rows()) .lazyProduct( xpr.rhs().nestedExpression() )
|
473
477
|
+ ConstantBlock(xpr.lhs().col(xpr.lhs().cols()-1),1,xpr.rhs().cols()) )
|
@@ -119,7 +119,7 @@ public:
|
|
119
119
|
* If the dimension of the ambient space is greater than 2, then there isn't uniqueness,
|
120
120
|
* so an arbitrary choice is made.
|
121
121
|
*/
|
122
|
-
// FIXME to be
|
122
|
+
// FIXME to be consistent with the rest this could be implemented as a static Through function ??
|
123
123
|
EIGEN_DEVICE_FUNC explicit Hyperplane(const ParametrizedLine<Scalar, AmbientDimAtCompileTime>& parametrized)
|
124
124
|
{
|
125
125
|
normal() = parametrized.direction().unitOrthogonal();
|
@@ -27,9 +27,10 @@ namespace Eigen {
|
|
27
27
|
template<typename Derived>
|
28
28
|
template<typename OtherDerived>
|
29
29
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
30
|
-
EIGEN_DEVICE_FUNC
|
30
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
31
|
+
typename MatrixBase<Derived>::template cross_product_return_type<OtherDerived>::type
|
31
32
|
#else
|
32
|
-
|
33
|
+
typename MatrixBase<Derived>::PlainObject
|
33
34
|
#endif
|
34
35
|
MatrixBase<Derived>::cross(const MatrixBase<OtherDerived>& other) const
|
35
36
|
{
|
@@ -87,7 +87,7 @@ public:
|
|
87
87
|
/** \returns the distance of a point \a p to its projection onto the line \c *this.
|
88
88
|
* \sa squaredDistance()
|
89
89
|
*/
|
90
|
-
EIGEN_DEVICE_FUNC RealScalar distance(const VectorType& p) const {
|
90
|
+
EIGEN_DEVICE_FUNC RealScalar distance(const VectorType& p) const { EIGEN_USING_STD(sqrt) return sqrt(squaredDistance(p)); }
|
91
91
|
|
92
92
|
/** \returns the projection of a point \a p onto the line \c *this. */
|
93
93
|
EIGEN_DEVICE_FUNC VectorType projection(const VectorType& p) const
|
@@ -104,7 +104,44 @@ public:
|
|
104
104
|
template <int OtherOptions>
|
105
105
|
EIGEN_DEVICE_FUNC VectorType intersectionPoint(const Hyperplane<_Scalar, _AmbientDim, OtherOptions>& hyperplane) const;
|
106
106
|
|
107
|
-
/** \
|
107
|
+
/** Applies the transformation matrix \a mat to \c *this and returns a reference to \c *this.
|
108
|
+
*
|
109
|
+
* \param mat the Dim x Dim transformation matrix
|
110
|
+
* \param traits specifies whether the matrix \a mat represents an #Isometry
|
111
|
+
* or a more generic #Affine transformation. The default is #Affine.
|
112
|
+
*/
|
113
|
+
template<typename XprType>
|
114
|
+
EIGEN_DEVICE_FUNC inline ParametrizedLine& transform(const MatrixBase<XprType>& mat, TransformTraits traits = Affine)
|
115
|
+
{
|
116
|
+
if (traits==Affine)
|
117
|
+
direction() = (mat * direction()).normalized();
|
118
|
+
else if (traits==Isometry)
|
119
|
+
direction() = mat * direction();
|
120
|
+
else
|
121
|
+
{
|
122
|
+
eigen_assert(0 && "invalid traits value in ParametrizedLine::transform()");
|
123
|
+
}
|
124
|
+
origin() = mat * origin();
|
125
|
+
return *this;
|
126
|
+
}
|
127
|
+
|
128
|
+
/** Applies the transformation \a t to \c *this and returns a reference to \c *this.
|
129
|
+
*
|
130
|
+
* \param t the transformation of dimension Dim
|
131
|
+
* \param traits specifies whether the transformation \a t represents an #Isometry
|
132
|
+
* or a more generic #Affine transformation. The default is #Affine.
|
133
|
+
* Other kind of transformations are not supported.
|
134
|
+
*/
|
135
|
+
template<int TrOptions>
|
136
|
+
EIGEN_DEVICE_FUNC inline ParametrizedLine& transform(const Transform<Scalar,AmbientDimAtCompileTime,Affine,TrOptions>& t,
|
137
|
+
TransformTraits traits = Affine)
|
138
|
+
{
|
139
|
+
transform(t.linear(), traits);
|
140
|
+
origin() += t.translation();
|
141
|
+
return *this;
|
142
|
+
}
|
143
|
+
|
144
|
+
/** \returns \c *this with scalar type casted to \a NewScalarType
|
108
145
|
*
|
109
146
|
* Note that if \a NewScalarType is equal to the current scalar type of \c *this
|
110
147
|
* then this function smartly returns a const reference to \c *this.
|
@@ -141,7 +141,7 @@ class QuaternionBase : public RotationBase<Derived, 3>
|
|
141
141
|
template<class OtherDerived> EIGEN_DEVICE_FUNC Scalar angularDistance(const QuaternionBase<OtherDerived>& other) const;
|
142
142
|
|
143
143
|
/** \returns an equivalent 3x3 rotation matrix */
|
144
|
-
EIGEN_DEVICE_FUNC Matrix3 toRotationMatrix() const;
|
144
|
+
EIGEN_DEVICE_FUNC inline Matrix3 toRotationMatrix() const;
|
145
145
|
|
146
146
|
/** \returns the quaternion which transform \a a into \a b through a rotation */
|
147
147
|
template<typename Derived1, typename Derived2>
|
@@ -158,6 +158,22 @@ class QuaternionBase : public RotationBase<Derived, 3>
|
|
158
158
|
|
159
159
|
template<class OtherDerived> EIGEN_DEVICE_FUNC Quaternion<Scalar> slerp(const Scalar& t, const QuaternionBase<OtherDerived>& other) const;
|
160
160
|
|
161
|
+
/** \returns true if each coefficients of \c *this and \a other are all exactly equal.
|
162
|
+
* \warning When using floating point scalar values you probably should rather use a
|
163
|
+
* fuzzy comparison such as isApprox()
|
164
|
+
* \sa isApprox(), operator!= */
|
165
|
+
template<class OtherDerived>
|
166
|
+
EIGEN_DEVICE_FUNC inline bool operator==(const QuaternionBase<OtherDerived>& other) const
|
167
|
+
{ return coeffs() == other.coeffs(); }
|
168
|
+
|
169
|
+
/** \returns true if at least one pair of coefficients of \c *this and \a other are not exactly equal to each other.
|
170
|
+
* \warning When using floating point scalar values you probably should rather use a
|
171
|
+
* fuzzy comparison such as isApprox()
|
172
|
+
* \sa isApprox(), operator== */
|
173
|
+
template<class OtherDerived>
|
174
|
+
EIGEN_DEVICE_FUNC inline bool operator!=(const QuaternionBase<OtherDerived>& other) const
|
175
|
+
{ return coeffs() != other.coeffs(); }
|
176
|
+
|
161
177
|
/** \returns \c true if \c *this is approximately equal to \a other, within the precision
|
162
178
|
* determined by \a prec.
|
163
179
|
*
|
@@ -169,20 +185,45 @@ class QuaternionBase : public RotationBase<Derived, 3>
|
|
169
185
|
/** return the result vector of \a v through the rotation*/
|
170
186
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Vector3 _transformVector(const Vector3& v) const;
|
171
187
|
|
188
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
172
189
|
/** \returns \c *this with scalar type casted to \a NewScalarType
|
173
190
|
*
|
174
191
|
* Note that if \a NewScalarType is equal to the current scalar type of \c *this
|
175
192
|
* then this function smartly returns a const reference to \c *this.
|
176
193
|
*/
|
177
194
|
template<typename NewScalarType>
|
178
|
-
EIGEN_DEVICE_FUNC inline typename internal::cast_return_type<Derived,Quaternion<NewScalarType> >::type cast() const
|
195
|
+
EIGEN_DEVICE_FUNC inline typename internal::cast_return_type<Derived,Quaternion<NewScalarType> >::type cast() const;
|
196
|
+
|
197
|
+
#else
|
198
|
+
|
199
|
+
template<typename NewScalarType>
|
200
|
+
EIGEN_DEVICE_FUNC inline
|
201
|
+
typename internal::enable_if<internal::is_same<Scalar,NewScalarType>::value,const Derived&>::type cast() const
|
179
202
|
{
|
180
|
-
return
|
203
|
+
return derived();
|
181
204
|
}
|
182
205
|
|
206
|
+
template<typename NewScalarType>
|
207
|
+
EIGEN_DEVICE_FUNC inline
|
208
|
+
typename internal::enable_if<!internal::is_same<Scalar,NewScalarType>::value,Quaternion<NewScalarType> >::type cast() const
|
209
|
+
{
|
210
|
+
return Quaternion<NewScalarType>(coeffs().template cast<NewScalarType>());
|
211
|
+
}
|
212
|
+
#endif
|
213
|
+
|
214
|
+
#ifndef EIGEN_NO_IO
|
215
|
+
friend std::ostream& operator<<(std::ostream& s, const QuaternionBase<Derived>& q) {
|
216
|
+
s << q.x() << "i + " << q.y() << "j + " << q.z() << "k" << " + " << q.w();
|
217
|
+
return s;
|
218
|
+
}
|
219
|
+
#endif
|
220
|
+
|
183
221
|
#ifdef EIGEN_QUATERNIONBASE_PLUGIN
|
184
222
|
# include EIGEN_QUATERNIONBASE_PLUGIN
|
185
223
|
#endif
|
224
|
+
protected:
|
225
|
+
EIGEN_DEFAULT_COPY_CONSTRUCTOR(QuaternionBase)
|
226
|
+
EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(QuaternionBase)
|
186
227
|
};
|
187
228
|
|
188
229
|
/***************************************************************************
|
@@ -276,6 +317,21 @@ public:
|
|
276
317
|
EIGEN_DEVICE_FUNC explicit inline Quaternion(const Quaternion<OtherScalar, OtherOptions>& other)
|
277
318
|
{ m_coeffs = other.coeffs().template cast<Scalar>(); }
|
278
319
|
|
320
|
+
#if EIGEN_HAS_RVALUE_REFERENCES
|
321
|
+
// We define a copy constructor, which means we don't get an implicit move constructor or assignment operator.
|
322
|
+
/** Default move constructor */
|
323
|
+
EIGEN_DEVICE_FUNC inline Quaternion(Quaternion&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_constructible<Scalar>::value)
|
324
|
+
: m_coeffs(std::move(other.coeffs()))
|
325
|
+
{}
|
326
|
+
|
327
|
+
/** Default move assignment operator */
|
328
|
+
EIGEN_DEVICE_FUNC Quaternion& operator=(Quaternion&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_assignable<Scalar>::value)
|
329
|
+
{
|
330
|
+
m_coeffs = std::move(other.coeffs());
|
331
|
+
return *this;
|
332
|
+
}
|
333
|
+
#endif
|
334
|
+
|
279
335
|
EIGEN_DEVICE_FUNC static Quaternion UnitRandom();
|
280
336
|
|
281
337
|
template<typename Derived1, typename Derived2>
|
@@ -504,8 +560,8 @@ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& QuaternionBase<Derived>::operator
|
|
504
560
|
template<class Derived>
|
505
561
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& QuaternionBase<Derived>::operator=(const AngleAxisType& aa)
|
506
562
|
{
|
507
|
-
|
508
|
-
|
563
|
+
EIGEN_USING_STD(cos)
|
564
|
+
EIGEN_USING_STD(sin)
|
509
565
|
Scalar ha = Scalar(0.5)*aa.angle(); // Scalar(0.5) to suppress precision loss warnings
|
510
566
|
this->w() = cos(ha);
|
511
567
|
this->vec() = sin(ha) * aa.axis();
|
@@ -581,7 +637,7 @@ template<class Derived>
|
|
581
637
|
template<typename Derived1, typename Derived2>
|
582
638
|
EIGEN_DEVICE_FUNC inline Derived& QuaternionBase<Derived>::setFromTwoVectors(const MatrixBase<Derived1>& a, const MatrixBase<Derived2>& b)
|
583
639
|
{
|
584
|
-
|
640
|
+
EIGEN_USING_STD(sqrt)
|
585
641
|
Vector3 v0 = a.normalized();
|
586
642
|
Vector3 v1 = b.normalized();
|
587
643
|
Scalar c = v1.dot(v0);
|
@@ -622,13 +678,13 @@ EIGEN_DEVICE_FUNC inline Derived& QuaternionBase<Derived>::setFromTwoVectors(con
|
|
622
678
|
template<typename Scalar, int Options>
|
623
679
|
EIGEN_DEVICE_FUNC Quaternion<Scalar,Options> Quaternion<Scalar,Options>::UnitRandom()
|
624
680
|
{
|
625
|
-
|
626
|
-
|
627
|
-
|
681
|
+
EIGEN_USING_STD(sqrt)
|
682
|
+
EIGEN_USING_STD(sin)
|
683
|
+
EIGEN_USING_STD(cos)
|
628
684
|
const Scalar u1 = internal::random<Scalar>(0, 1),
|
629
685
|
u2 = internal::random<Scalar>(0, 2*EIGEN_PI),
|
630
686
|
u3 = internal::random<Scalar>(0, 2*EIGEN_PI);
|
631
|
-
const Scalar a = sqrt(1 - u1),
|
687
|
+
const Scalar a = sqrt(Scalar(1) - u1),
|
632
688
|
b = sqrt(u1);
|
633
689
|
return Quaternion (a * sin(u2), a * cos(u2), b * sin(u3), b * cos(u3));
|
634
690
|
}
|
@@ -707,7 +763,7 @@ template <class OtherDerived>
|
|
707
763
|
EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar
|
708
764
|
QuaternionBase<Derived>::angularDistance(const QuaternionBase<OtherDerived>& other) const
|
709
765
|
{
|
710
|
-
|
766
|
+
EIGEN_USING_STD(atan2)
|
711
767
|
Quaternion<Scalar> d = (*this) * other.conjugate();
|
712
768
|
return Scalar(2) * atan2( d.vec().norm(), numext::abs(d.w()) );
|
713
769
|
}
|
@@ -725,8 +781,8 @@ template <class OtherDerived>
|
|
725
781
|
EIGEN_DEVICE_FUNC Quaternion<typename internal::traits<Derived>::Scalar>
|
726
782
|
QuaternionBase<Derived>::slerp(const Scalar& t, const QuaternionBase<OtherDerived>& other) const
|
727
783
|
{
|
728
|
-
|
729
|
-
|
784
|
+
EIGEN_USING_STD(acos)
|
785
|
+
EIGEN_USING_STD(sin)
|
730
786
|
const Scalar one = Scalar(1) - NumTraits<Scalar>::epsilon();
|
731
787
|
Scalar d = this->dot(other);
|
732
788
|
Scalar absD = numext::abs(d);
|
@@ -763,7 +819,7 @@ struct quaternionbase_assign_impl<Other,3,3>
|
|
763
819
|
template<class Derived> EIGEN_DEVICE_FUNC static inline void run(QuaternionBase<Derived>& q, const Other& a_mat)
|
764
820
|
{
|
765
821
|
const typename internal::nested_eval<Other,2>::type mat(a_mat);
|
766
|
-
|
822
|
+
EIGEN_USING_STD(sqrt)
|
767
823
|
// This algorithm comes from "Quaternion Calculus and Fast Animation",
|
768
824
|
// Ken Shoemake, 1987 SIGGRAPH course notes
|
769
825
|
Scalar t = mat.trace();
|
@@ -175,7 +175,7 @@ template<typename Scalar>
|
|
175
175
|
template<typename Derived>
|
176
176
|
EIGEN_DEVICE_FUNC Rotation2D<Scalar>& Rotation2D<Scalar>::fromRotationMatrix(const MatrixBase<Derived>& mat)
|
177
177
|
{
|
178
|
-
|
178
|
+
EIGEN_USING_STD(atan2)
|
179
179
|
EIGEN_STATIC_ASSERT(Derived::RowsAtCompileTime==2 && Derived::ColsAtCompileTime==2,YOU_MADE_A_PROGRAMMING_MISTAKE)
|
180
180
|
m_angle = atan2(mat.coeff(1,0), mat.coeff(0,0));
|
181
181
|
return *this;
|
@@ -187,8 +187,8 @@ template<typename Scalar>
|
|
187
187
|
typename Rotation2D<Scalar>::Matrix2
|
188
188
|
EIGEN_DEVICE_FUNC Rotation2D<Scalar>::toRotationMatrix(void) const
|
189
189
|
{
|
190
|
-
|
191
|
-
|
190
|
+
EIGEN_USING_STD(sin)
|
191
|
+
EIGEN_USING_STD(cos)
|
192
192
|
Scalar sinA = sin(m_angle);
|
193
193
|
Scalar cosA = cos(m_angle);
|
194
194
|
return (Matrix2() << cosA, -sinA, sinA, cosA).finished();
|
@@ -14,7 +14,7 @@ namespace Eigen {
|
|
14
14
|
|
15
15
|
/** \geometry_module \ingroup Geometry_Module
|
16
16
|
*
|
17
|
-
* \class
|
17
|
+
* \class UniformScaling
|
18
18
|
*
|
19
19
|
* \brief Represents a generic uniform scaling transformation
|
20
20
|
*
|
@@ -29,6 +29,22 @@ namespace Eigen {
|
|
29
29
|
*
|
30
30
|
* \sa Scaling(), class DiagonalMatrix, MatrixBase::asDiagonal(), class Translation, class Transform
|
31
31
|
*/
|
32
|
+
|
33
|
+
namespace internal
|
34
|
+
{
|
35
|
+
// This helper helps nvcc+MSVC to properly parse this file.
|
36
|
+
// See bug 1412.
|
37
|
+
template <typename Scalar, int Dim, int Mode>
|
38
|
+
struct uniformscaling_times_affine_returntype
|
39
|
+
{
|
40
|
+
enum
|
41
|
+
{
|
42
|
+
NewMode = int(Mode) == int(Isometry) ? Affine : Mode
|
43
|
+
};
|
44
|
+
typedef Transform <Scalar, Dim, NewMode> type;
|
45
|
+
};
|
46
|
+
}
|
47
|
+
|
32
48
|
template<typename _Scalar>
|
33
49
|
class UniformScaling
|
34
50
|
{
|
@@ -60,9 +76,11 @@ public:
|
|
60
76
|
|
61
77
|
/** Concatenates a uniform scaling and an affine transformation */
|
62
78
|
template<int Dim, int Mode, int Options>
|
63
|
-
inline
|
79
|
+
inline typename
|
80
|
+
internal::uniformscaling_times_affine_returntype<Scalar,Dim,Mode>::type
|
81
|
+
operator* (const Transform<Scalar, Dim, Mode, Options>& t) const
|
64
82
|
{
|
65
|
-
|
83
|
+
typename internal::uniformscaling_times_affine_returntype<Scalar,Dim,Mode>::type res = t;
|
66
84
|
res.prescale(factor());
|
67
85
|
return res;
|
68
86
|
}
|
@@ -70,7 +88,7 @@ public:
|
|
70
88
|
/** Concatenates a uniform scaling and a linear transformation matrix */
|
71
89
|
// TODO returns an expression
|
72
90
|
template<typename Derived>
|
73
|
-
inline typename internal::plain_matrix_type<Derived>::type operator* (const MatrixBase<Derived>& other) const
|
91
|
+
inline typename Eigen::internal::plain_matrix_type<Derived>::type operator* (const MatrixBase<Derived>& other) const
|
74
92
|
{ return other * m_factor; }
|
75
93
|
|
76
94
|
template<typename Derived,int Dim>
|
@@ -110,7 +128,7 @@ public:
|
|
110
128
|
/** Concatenates a linear transformation matrix and a uniform scaling
|
111
129
|
* \relates UniformScaling
|
112
130
|
*/
|
113
|
-
// NOTE this operator is
|
131
|
+
// NOTE this operator is defined in MatrixBase and not as a friend function
|
114
132
|
// of UniformScaling to fix an internal crash of Intel's ICC
|
115
133
|
template<typename Derived,typename Scalar>
|
116
134
|
EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,Scalar,product)
|