tomoto 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -1,7 +1,7 @@
|
|
1
1
|
// This file is part of Eigen, a lightweight C++ template library
|
2
2
|
// for linear algebra.
|
3
3
|
//
|
4
|
-
// Copyright (C) 2008-
|
4
|
+
// Copyright (C) 2008-2019 Gael Guennebaud <gael.guennebaud@inria.fr>
|
5
5
|
// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
|
6
6
|
//
|
7
7
|
// This Source Code Form is subject to the terms of the Mozilla
|
@@ -65,10 +65,10 @@ class PartialReduxExpr : public internal::dense_xpr_base< PartialReduxExpr<Matri
|
|
65
65
|
explicit PartialReduxExpr(const MatrixType& mat, const MemberOp& func = MemberOp())
|
66
66
|
: m_matrix(mat), m_functor(func) {}
|
67
67
|
|
68
|
-
EIGEN_DEVICE_FUNC
|
69
|
-
Index rows() const { return (Direction==Vertical ? 1 : m_matrix.rows()); }
|
70
|
-
EIGEN_DEVICE_FUNC
|
71
|
-
Index cols() const { return (Direction==Horizontal ? 1 : m_matrix.cols()); }
|
68
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
69
|
+
Index rows() const EIGEN_NOEXCEPT { return (Direction==Vertical ? 1 : m_matrix.rows()); }
|
70
|
+
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
|
71
|
+
Index cols() const EIGEN_NOEXCEPT { return (Direction==Horizontal ? 1 : m_matrix.cols()); }
|
72
72
|
|
73
73
|
EIGEN_DEVICE_FUNC
|
74
74
|
typename MatrixType::Nested nestedExpression() const { return m_matrix; }
|
@@ -81,39 +81,46 @@ class PartialReduxExpr : public internal::dense_xpr_base< PartialReduxExpr<Matri
|
|
81
81
|
const MemberOp m_functor;
|
82
82
|
};
|
83
83
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
84
|
+
template<typename A,typename B> struct partial_redux_dummy_func;
|
85
|
+
|
86
|
+
#define EIGEN_MAKE_PARTIAL_REDUX_FUNCTOR(MEMBER,COST,VECTORIZABLE,BINARYOP) \
|
87
|
+
template <typename ResultType,typename Scalar> \
|
88
|
+
struct member_##MEMBER { \
|
89
|
+
EIGEN_EMPTY_STRUCT_CTOR(member_##MEMBER) \
|
90
|
+
typedef ResultType result_type; \
|
91
|
+
typedef BINARYOP<Scalar,Scalar> BinaryOp; \
|
92
|
+
template<int Size> struct Cost { enum { value = COST }; }; \
|
93
|
+
enum { Vectorizable = VECTORIZABLE }; \
|
94
|
+
template<typename XprType> \
|
95
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE \
|
96
|
+
ResultType operator()(const XprType& mat) const \
|
97
|
+
{ return mat.MEMBER(); } \
|
98
|
+
BinaryOp binaryFunc() const { return BinaryOp(); } \
|
95
99
|
}
|
96
100
|
|
101
|
+
#define EIGEN_MEMBER_FUNCTOR(MEMBER,COST) \
|
102
|
+
EIGEN_MAKE_PARTIAL_REDUX_FUNCTOR(MEMBER,COST,0,partial_redux_dummy_func)
|
103
|
+
|
97
104
|
namespace internal {
|
98
105
|
|
99
|
-
EIGEN_MEMBER_FUNCTOR(squaredNorm, Size * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
|
100
106
|
EIGEN_MEMBER_FUNCTOR(norm, (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
|
101
107
|
EIGEN_MEMBER_FUNCTOR(stableNorm, (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
|
102
108
|
EIGEN_MEMBER_FUNCTOR(blueNorm, (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
|
103
109
|
EIGEN_MEMBER_FUNCTOR(hypotNorm, (Size-1) * functor_traits<scalar_hypot_op<Scalar> >::Cost );
|
104
|
-
EIGEN_MEMBER_FUNCTOR(sum, (Size-1)*NumTraits<Scalar>::AddCost);
|
105
|
-
EIGEN_MEMBER_FUNCTOR(mean, (Size-1)*NumTraits<Scalar>::AddCost + NumTraits<Scalar>::MulCost);
|
106
|
-
EIGEN_MEMBER_FUNCTOR(minCoeff, (Size-1)*NumTraits<Scalar>::AddCost);
|
107
|
-
EIGEN_MEMBER_FUNCTOR(maxCoeff, (Size-1)*NumTraits<Scalar>::AddCost);
|
108
110
|
EIGEN_MEMBER_FUNCTOR(all, (Size-1)*NumTraits<Scalar>::AddCost);
|
109
111
|
EIGEN_MEMBER_FUNCTOR(any, (Size-1)*NumTraits<Scalar>::AddCost);
|
110
112
|
EIGEN_MEMBER_FUNCTOR(count, (Size-1)*NumTraits<Scalar>::AddCost);
|
111
|
-
EIGEN_MEMBER_FUNCTOR(prod, (Size-1)*NumTraits<Scalar>::MulCost);
|
112
113
|
|
113
|
-
|
114
|
+
EIGEN_MAKE_PARTIAL_REDUX_FUNCTOR(sum, (Size-1)*NumTraits<Scalar>::AddCost, 1, internal::scalar_sum_op);
|
115
|
+
EIGEN_MAKE_PARTIAL_REDUX_FUNCTOR(minCoeff, (Size-1)*NumTraits<Scalar>::AddCost, 1, internal::scalar_min_op);
|
116
|
+
EIGEN_MAKE_PARTIAL_REDUX_FUNCTOR(maxCoeff, (Size-1)*NumTraits<Scalar>::AddCost, 1, internal::scalar_max_op);
|
117
|
+
EIGEN_MAKE_PARTIAL_REDUX_FUNCTOR(prod, (Size-1)*NumTraits<Scalar>::MulCost, 1, internal::scalar_product_op);
|
118
|
+
|
119
|
+
template <int p, typename ResultType,typename Scalar>
|
114
120
|
struct member_lpnorm {
|
115
121
|
typedef ResultType result_type;
|
116
|
-
|
122
|
+
enum { Vectorizable = 0 };
|
123
|
+
template<int Size> struct Cost
|
117
124
|
{ enum { value = (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost }; };
|
118
125
|
EIGEN_DEVICE_FUNC member_lpnorm() {}
|
119
126
|
template<typename XprType>
|
@@ -121,17 +128,20 @@ struct member_lpnorm {
|
|
121
128
|
{ return mat.template lpNorm<p>(); }
|
122
129
|
};
|
123
130
|
|
124
|
-
template <typename
|
131
|
+
template <typename BinaryOpT, typename Scalar>
|
125
132
|
struct member_redux {
|
133
|
+
typedef BinaryOpT BinaryOp;
|
126
134
|
typedef typename result_of<
|
127
135
|
BinaryOp(const Scalar&,const Scalar&)
|
128
136
|
>::type result_type;
|
129
|
-
|
130
|
-
|
137
|
+
|
138
|
+
enum { Vectorizable = functor_traits<BinaryOp>::PacketAccess };
|
139
|
+
template<int Size> struct Cost { enum { value = (Size-1) * functor_traits<BinaryOp>::Cost }; };
|
131
140
|
EIGEN_DEVICE_FUNC explicit member_redux(const BinaryOp func) : m_functor(func) {}
|
132
141
|
template<typename Derived>
|
133
142
|
EIGEN_DEVICE_FUNC inline result_type operator()(const DenseBase<Derived>& mat) const
|
134
143
|
{ return mat.redux(m_functor); }
|
144
|
+
const BinaryOp& binaryFunc() const { return m_functor; }
|
135
145
|
const BinaryOp m_functor;
|
136
146
|
};
|
137
147
|
}
|
@@ -139,18 +149,38 @@ struct member_redux {
|
|
139
149
|
/** \class VectorwiseOp
|
140
150
|
* \ingroup Core_Module
|
141
151
|
*
|
142
|
-
* \brief Pseudo expression providing partial reduction operations
|
152
|
+
* \brief Pseudo expression providing broadcasting and partial reduction operations
|
143
153
|
*
|
144
154
|
* \tparam ExpressionType the type of the object on which to do partial reductions
|
145
|
-
* \tparam Direction indicates
|
155
|
+
* \tparam Direction indicates whether to operate on columns (#Vertical) or rows (#Horizontal)
|
146
156
|
*
|
147
|
-
* This class represents a pseudo expression with partial reduction features.
|
157
|
+
* This class represents a pseudo expression with broadcasting and partial reduction features.
|
148
158
|
* It is the return type of DenseBase::colwise() and DenseBase::rowwise()
|
149
|
-
* and most of the time this is the only way it is used.
|
159
|
+
* and most of the time this is the only way it is explicitly used.
|
160
|
+
*
|
161
|
+
* To understand the logic of rowwise/colwise expression, let's consider a generic case `A.colwise().foo()`
|
162
|
+
* where `foo` is any method of `VectorwiseOp`. This expression is equivalent to applying `foo()` to each
|
163
|
+
* column of `A` and then re-assemble the outputs in a matrix expression:
|
164
|
+
* \code [A.col(0).foo(), A.col(1).foo(), ..., A.col(A.cols()-1).foo()] \endcode
|
150
165
|
*
|
151
166
|
* Example: \include MatrixBase_colwise.cpp
|
152
167
|
* Output: \verbinclude MatrixBase_colwise.out
|
153
168
|
*
|
169
|
+
* The begin() and end() methods are obviously exceptions to the previous rule as they
|
170
|
+
* return STL-compatible begin/end iterators to the rows or columns of the nested expression.
|
171
|
+
* Typical use cases include for-range-loop and calls to STL algorithms:
|
172
|
+
*
|
173
|
+
* Example: \include MatrixBase_colwise_iterator_cxx11.cpp
|
174
|
+
* Output: \verbinclude MatrixBase_colwise_iterator_cxx11.out
|
175
|
+
*
|
176
|
+
* For a partial reduction on an empty input, some rules apply.
|
177
|
+
* For the sake of clarity, let's consider a vertical reduction:
|
178
|
+
* - If the number of columns is zero, then a 1x0 row-major vector expression is returned.
|
179
|
+
* - Otherwise, if the number of rows is zero, then
|
180
|
+
* - a row vector of zeros is returned for sum-like reductions (sum, squaredNorm, norm, etc.)
|
181
|
+
* - a row vector of ones is returned for a product reduction (e.g., <code>MatrixXd(n,0).colwise().prod()</code>)
|
182
|
+
* - an assert is triggered for all other reductions (minCoeff,maxCoeff,redux(bin_op))
|
183
|
+
*
|
154
184
|
* \sa DenseBase::colwise(), DenseBase::rowwise(), class PartialReduxExpr
|
155
185
|
*/
|
156
186
|
template<typename ExpressionType, int Direction> class VectorwiseOp
|
@@ -163,11 +193,11 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
163
193
|
typedef typename internal::ref_selector<ExpressionType>::non_const_type ExpressionTypeNested;
|
164
194
|
typedef typename internal::remove_all<ExpressionTypeNested>::type ExpressionTypeNestedCleaned;
|
165
195
|
|
166
|
-
template<template<typename
|
167
|
-
typename
|
196
|
+
template<template<typename OutScalar,typename InputScalar> class Functor,
|
197
|
+
typename ReturnScalar=Scalar> struct ReturnType
|
168
198
|
{
|
169
199
|
typedef PartialReduxExpr<ExpressionType,
|
170
|
-
Functor<
|
200
|
+
Functor<ReturnScalar,Scalar>,
|
171
201
|
Direction
|
172
202
|
> Type;
|
173
203
|
};
|
@@ -187,23 +217,6 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
187
217
|
|
188
218
|
protected:
|
189
219
|
|
190
|
-
typedef typename internal::conditional<isVertical,
|
191
|
-
typename ExpressionType::ColXpr,
|
192
|
-
typename ExpressionType::RowXpr>::type SubVector;
|
193
|
-
/** \internal
|
194
|
-
* \returns the i-th subvector according to the \c Direction */
|
195
|
-
EIGEN_DEVICE_FUNC
|
196
|
-
SubVector subVector(Index i)
|
197
|
-
{
|
198
|
-
return SubVector(m_matrix.derived(),i);
|
199
|
-
}
|
200
|
-
|
201
|
-
/** \internal
|
202
|
-
* \returns the number of subvectors in the direction \c Direction */
|
203
|
-
EIGEN_DEVICE_FUNC
|
204
|
-
Index subVectors() const
|
205
|
-
{ return isVertical?m_matrix.cols():m_matrix.rows(); }
|
206
|
-
|
207
220
|
template<typename OtherDerived> struct ExtendedType {
|
208
221
|
typedef Replicate<OtherDerived,
|
209
222
|
isVertical ? 1 : ExpressionType::RowsAtCompileTime,
|
@@ -258,42 +271,101 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
258
271
|
EIGEN_DEVICE_FUNC
|
259
272
|
inline const ExpressionType& _expression() const { return m_matrix; }
|
260
273
|
|
274
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
275
|
+
/** STL-like <a href="https://en.cppreference.com/w/cpp/named_req/RandomAccessIterator">RandomAccessIterator</a>
|
276
|
+
* iterator type over the columns or rows as returned by the begin() and end() methods.
|
277
|
+
*/
|
278
|
+
random_access_iterator_type iterator;
|
279
|
+
/** This is the const version of iterator (aka read-only) */
|
280
|
+
random_access_iterator_type const_iterator;
|
281
|
+
#else
|
282
|
+
typedef internal::subvector_stl_iterator<ExpressionType, DirectionType(Direction)> iterator;
|
283
|
+
typedef internal::subvector_stl_iterator<const ExpressionType, DirectionType(Direction)> const_iterator;
|
284
|
+
typedef internal::subvector_stl_reverse_iterator<ExpressionType, DirectionType(Direction)> reverse_iterator;
|
285
|
+
typedef internal::subvector_stl_reverse_iterator<const ExpressionType, DirectionType(Direction)> const_reverse_iterator;
|
286
|
+
#endif
|
287
|
+
|
288
|
+
/** returns an iterator to the first row (rowwise) or column (colwise) of the nested expression.
|
289
|
+
* \sa end(), cbegin()
|
290
|
+
*/
|
291
|
+
iterator begin() { return iterator (m_matrix, 0); }
|
292
|
+
/** const version of begin() */
|
293
|
+
const_iterator begin() const { return const_iterator(m_matrix, 0); }
|
294
|
+
/** const version of begin() */
|
295
|
+
const_iterator cbegin() const { return const_iterator(m_matrix, 0); }
|
296
|
+
|
297
|
+
/** returns a reverse iterator to the last row (rowwise) or column (colwise) of the nested expression.
|
298
|
+
* \sa rend(), crbegin()
|
299
|
+
*/
|
300
|
+
reverse_iterator rbegin() { return reverse_iterator (m_matrix, m_matrix.template subVectors<DirectionType(Direction)>()-1); }
|
301
|
+
/** const version of rbegin() */
|
302
|
+
const_reverse_iterator rbegin() const { return const_reverse_iterator (m_matrix, m_matrix.template subVectors<DirectionType(Direction)>()-1); }
|
303
|
+
/** const version of rbegin() */
|
304
|
+
const_reverse_iterator crbegin() const { return const_reverse_iterator (m_matrix, m_matrix.template subVectors<DirectionType(Direction)>()-1); }
|
305
|
+
|
306
|
+
/** returns an iterator to the row (resp. column) following the last row (resp. column) of the nested expression
|
307
|
+
* \sa begin(), cend()
|
308
|
+
*/
|
309
|
+
iterator end() { return iterator (m_matrix, m_matrix.template subVectors<DirectionType(Direction)>()); }
|
310
|
+
/** const version of end() */
|
311
|
+
const_iterator end() const { return const_iterator(m_matrix, m_matrix.template subVectors<DirectionType(Direction)>()); }
|
312
|
+
/** const version of end() */
|
313
|
+
const_iterator cend() const { return const_iterator(m_matrix, m_matrix.template subVectors<DirectionType(Direction)>()); }
|
314
|
+
|
315
|
+
/** returns a reverse iterator to the row (resp. column) before the first row (resp. column) of the nested expression
|
316
|
+
* \sa begin(), cend()
|
317
|
+
*/
|
318
|
+
reverse_iterator rend() { return reverse_iterator (m_matrix, -1); }
|
319
|
+
/** const version of rend() */
|
320
|
+
const_reverse_iterator rend() const { return const_reverse_iterator (m_matrix, -1); }
|
321
|
+
/** const version of rend() */
|
322
|
+
const_reverse_iterator crend() const { return const_reverse_iterator (m_matrix, -1); }
|
323
|
+
|
261
324
|
/** \returns a row or column vector expression of \c *this reduxed by \a func
|
262
325
|
*
|
263
326
|
* The template parameter \a BinaryOp is the type of the functor
|
264
327
|
* of the custom redux operator. Note that func must be an associative operator.
|
265
328
|
*
|
329
|
+
* \warning the size along the reduction direction must be strictly positive,
|
330
|
+
* otherwise an assertion is triggered.
|
331
|
+
*
|
266
332
|
* \sa class VectorwiseOp, DenseBase::colwise(), DenseBase::rowwise()
|
267
333
|
*/
|
268
334
|
template<typename BinaryOp>
|
269
335
|
EIGEN_DEVICE_FUNC
|
270
336
|
const typename ReduxReturnType<BinaryOp>::Type
|
271
337
|
redux(const BinaryOp& func = BinaryOp()) const
|
272
|
-
{
|
338
|
+
{
|
339
|
+
eigen_assert(redux_length()>0 && "you are using an empty matrix");
|
340
|
+
return typename ReduxReturnType<BinaryOp>::Type(_expression(), internal::member_redux<BinaryOp,Scalar>(func));
|
341
|
+
}
|
273
342
|
|
274
343
|
typedef typename ReturnType<internal::member_minCoeff>::Type MinCoeffReturnType;
|
275
344
|
typedef typename ReturnType<internal::member_maxCoeff>::Type MaxCoeffReturnType;
|
276
|
-
typedef
|
277
|
-
typedef
|
345
|
+
typedef PartialReduxExpr<const CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const ExpressionTypeNestedCleaned>,internal::member_sum<RealScalar,RealScalar>,Direction> SquaredNormReturnType;
|
346
|
+
typedef CwiseUnaryOp<internal::scalar_sqrt_op<RealScalar>, const SquaredNormReturnType> NormReturnType;
|
278
347
|
typedef typename ReturnType<internal::member_blueNorm,RealScalar>::Type BlueNormReturnType;
|
279
348
|
typedef typename ReturnType<internal::member_stableNorm,RealScalar>::Type StableNormReturnType;
|
280
349
|
typedef typename ReturnType<internal::member_hypotNorm,RealScalar>::Type HypotNormReturnType;
|
281
350
|
typedef typename ReturnType<internal::member_sum>::Type SumReturnType;
|
282
|
-
typedef
|
351
|
+
typedef EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(SumReturnType,Scalar,quotient) MeanReturnType;
|
283
352
|
typedef typename ReturnType<internal::member_all>::Type AllReturnType;
|
284
353
|
typedef typename ReturnType<internal::member_any>::Type AnyReturnType;
|
285
|
-
typedef PartialReduxExpr<ExpressionType, internal::member_count<Index>, Direction> CountReturnType;
|
354
|
+
typedef PartialReduxExpr<ExpressionType, internal::member_count<Index,Scalar>, Direction> CountReturnType;
|
286
355
|
typedef typename ReturnType<internal::member_prod>::Type ProdReturnType;
|
287
356
|
typedef Reverse<const ExpressionType, Direction> ConstReverseReturnType;
|
288
357
|
typedef Reverse<ExpressionType, Direction> ReverseReturnType;
|
289
358
|
|
290
359
|
template<int p> struct LpNormReturnType {
|
291
|
-
typedef PartialReduxExpr<ExpressionType, internal::member_lpnorm<p,RealScalar>,Direction> Type;
|
360
|
+
typedef PartialReduxExpr<ExpressionType, internal::member_lpnorm<p,RealScalar,Scalar>,Direction> Type;
|
292
361
|
};
|
293
362
|
|
294
363
|
/** \returns a row (or column) vector expression of the smallest coefficient
|
295
364
|
* of each column (or row) of the referenced expression.
|
296
365
|
*
|
366
|
+
* \warning the size along the reduction direction must be strictly positive,
|
367
|
+
* otherwise an assertion is triggered.
|
368
|
+
*
|
297
369
|
* \warning the result is undefined if \c *this contains NaN.
|
298
370
|
*
|
299
371
|
* Example: \include PartialRedux_minCoeff.cpp
|
@@ -302,11 +374,17 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
302
374
|
* \sa DenseBase::minCoeff() */
|
303
375
|
EIGEN_DEVICE_FUNC
|
304
376
|
const MinCoeffReturnType minCoeff() const
|
305
|
-
{
|
377
|
+
{
|
378
|
+
eigen_assert(redux_length()>0 && "you are using an empty matrix");
|
379
|
+
return MinCoeffReturnType(_expression());
|
380
|
+
}
|
306
381
|
|
307
382
|
/** \returns a row (or column) vector expression of the largest coefficient
|
308
383
|
* of each column (or row) of the referenced expression.
|
309
384
|
*
|
385
|
+
* \warning the size along the reduction direction must be strictly positive,
|
386
|
+
* otherwise an assertion is triggered.
|
387
|
+
*
|
310
388
|
* \warning the result is undefined if \c *this contains NaN.
|
311
389
|
*
|
312
390
|
* Example: \include PartialRedux_maxCoeff.cpp
|
@@ -315,7 +393,10 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
315
393
|
* \sa DenseBase::maxCoeff() */
|
316
394
|
EIGEN_DEVICE_FUNC
|
317
395
|
const MaxCoeffReturnType maxCoeff() const
|
318
|
-
{
|
396
|
+
{
|
397
|
+
eigen_assert(redux_length()>0 && "you are using an empty matrix");
|
398
|
+
return MaxCoeffReturnType(_expression());
|
399
|
+
}
|
319
400
|
|
320
401
|
/** \returns a row (or column) vector expression of the squared norm
|
321
402
|
* of each column (or row) of the referenced expression.
|
@@ -327,7 +408,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
327
408
|
* \sa DenseBase::squaredNorm() */
|
328
409
|
EIGEN_DEVICE_FUNC
|
329
410
|
const SquaredNormReturnType squaredNorm() const
|
330
|
-
{ return SquaredNormReturnType(
|
411
|
+
{ return SquaredNormReturnType(m_matrix.cwiseAbs2()); }
|
331
412
|
|
332
413
|
/** \returns a row (or column) vector expression of the norm
|
333
414
|
* of each column (or row) of the referenced expression.
|
@@ -339,7 +420,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
339
420
|
* \sa DenseBase::norm() */
|
340
421
|
EIGEN_DEVICE_FUNC
|
341
422
|
const NormReturnType norm() const
|
342
|
-
{ return NormReturnType(
|
423
|
+
{ return NormReturnType(squaredNorm()); }
|
343
424
|
|
344
425
|
/** \returns a row (or column) vector expression of the norm
|
345
426
|
* of each column (or row) of the referenced expression.
|
@@ -404,7 +485,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
404
485
|
* \sa DenseBase::mean() */
|
405
486
|
EIGEN_DEVICE_FUNC
|
406
487
|
const MeanReturnType mean() const
|
407
|
-
{ return
|
488
|
+
{ return sum() / Scalar(Direction==Vertical?m_matrix.rows():m_matrix.cols()); }
|
408
489
|
|
409
490
|
/** \returns a row (or column) vector expression representing
|
410
491
|
* whether \b all coefficients of each respective column (or row) are \c true.
|
@@ -500,7 +581,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
500
581
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
|
501
582
|
EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
|
502
583
|
//eigen_assert((m_matrix.isNull()) == (other.isNull())); FIXME
|
503
|
-
return
|
584
|
+
return m_matrix = extendedTo(other.derived());
|
504
585
|
}
|
505
586
|
|
506
587
|
/** Adds the vector \a other to each subvector of \c *this */
|
@@ -510,7 +591,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
510
591
|
{
|
511
592
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
|
512
593
|
EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
|
513
|
-
return
|
594
|
+
return m_matrix += extendedTo(other.derived());
|
514
595
|
}
|
515
596
|
|
516
597
|
/** Substracts the vector \a other to each subvector of \c *this */
|
@@ -520,7 +601,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
520
601
|
{
|
521
602
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
|
522
603
|
EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
|
523
|
-
return
|
604
|
+
return m_matrix -= extendedTo(other.derived());
|
524
605
|
}
|
525
606
|
|
526
607
|
/** Multiples each subvector of \c *this by the vector \a other */
|
@@ -532,7 +613,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
532
613
|
EIGEN_STATIC_ASSERT_ARRAYXPR(ExpressionType)
|
533
614
|
EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
|
534
615
|
m_matrix *= extendedTo(other.derived());
|
535
|
-
return
|
616
|
+
return m_matrix;
|
536
617
|
}
|
537
618
|
|
538
619
|
/** Divides each subvector of \c *this by the vector \a other */
|
@@ -544,7 +625,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
544
625
|
EIGEN_STATIC_ASSERT_ARRAYXPR(ExpressionType)
|
545
626
|
EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
|
546
627
|
m_matrix /= extendedTo(other.derived());
|
547
|
-
return
|
628
|
+
return m_matrix;
|
548
629
|
}
|
549
630
|
|
550
631
|
/** Returns the expression of the sum of the vector \a other to each subvector of \c *this */
|
@@ -609,7 +690,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
609
690
|
EIGEN_DEVICE_FUNC
|
610
691
|
CwiseBinaryOp<internal::scalar_quotient_op<Scalar>,
|
611
692
|
const ExpressionTypeNestedCleaned,
|
612
|
-
const typename OppositeExtendedType<
|
693
|
+
const typename OppositeExtendedType<NormReturnType>::Type>
|
613
694
|
normalized() const { return m_matrix.cwiseQuotient(extendedToOpposite(this->norm())); }
|
614
695
|
|
615
696
|
|
@@ -658,7 +739,15 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
658
739
|
EIGEN_DEVICE_FUNC
|
659
740
|
const HNormalizedReturnType hnormalized() const;
|
660
741
|
|
742
|
+
# ifdef EIGEN_VECTORWISEOP_PLUGIN
|
743
|
+
# include EIGEN_VECTORWISEOP_PLUGIN
|
744
|
+
# endif
|
745
|
+
|
661
746
|
protected:
|
747
|
+
Index redux_length() const
|
748
|
+
{
|
749
|
+
return Direction==Vertical ? m_matrix.rows() : m_matrix.cols();
|
750
|
+
}
|
662
751
|
ExpressionTypeNested m_matrix;
|
663
752
|
};
|
664
753
|
|
@@ -670,7 +759,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|
670
759
|
* \sa rowwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
|
671
760
|
*/
|
672
761
|
template<typename Derived>
|
673
|
-
inline typename DenseBase<Derived>::ColwiseReturnType
|
762
|
+
EIGEN_DEVICE_FUNC inline typename DenseBase<Derived>::ColwiseReturnType
|
674
763
|
DenseBase<Derived>::colwise()
|
675
764
|
{
|
676
765
|
return ColwiseReturnType(derived());
|
@@ -684,7 +773,7 @@ DenseBase<Derived>::colwise()
|
|
684
773
|
* \sa colwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
|
685
774
|
*/
|
686
775
|
template<typename Derived>
|
687
|
-
inline typename DenseBase<Derived>::RowwiseReturnType
|
776
|
+
EIGEN_DEVICE_FUNC inline typename DenseBase<Derived>::RowwiseReturnType
|
688
777
|
DenseBase<Derived>::rowwise()
|
689
778
|
{
|
690
779
|
return RowwiseReturnType(derived());
|