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
data/vendor/eigen/Eigen/Jacobi
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
5
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
6
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
7
|
+
|
|
8
|
+
#ifndef EIGEN_KLUSUPPORT_MODULE_H
|
|
9
|
+
#define EIGEN_KLUSUPPORT_MODULE_H
|
|
10
|
+
|
|
11
|
+
#include <Eigen/SparseCore>
|
|
12
|
+
|
|
13
|
+
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
|
14
|
+
|
|
15
|
+
extern "C" {
|
|
16
|
+
#include <btf.h>
|
|
17
|
+
#include <klu.h>
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** \ingroup Support_modules
|
|
21
|
+
* \defgroup KLUSupport_Module KLUSupport module
|
|
22
|
+
*
|
|
23
|
+
* This module provides an interface to the KLU library which is part of the <a href="http://www.suitesparse.com">suitesparse</a> package.
|
|
24
|
+
* It provides the following factorization class:
|
|
25
|
+
* - class KLU: a sparse LU factorization, well-suited for circuit simulation.
|
|
26
|
+
*
|
|
27
|
+
* \code
|
|
28
|
+
* #include <Eigen/KLUSupport>
|
|
29
|
+
* \endcode
|
|
30
|
+
*
|
|
31
|
+
* In order to use this module, the klu and btf headers must be accessible from the include paths, and your binary must be linked to the klu library and its dependencies.
|
|
32
|
+
* The dependencies depend on how umfpack has been compiled.
|
|
33
|
+
* For a cmake based project, you can use our FindKLU.cmake module to help you in this task.
|
|
34
|
+
*
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
#include "src/KLUSupport/KLUSupport.h"
|
|
38
|
+
|
|
39
|
+
#include <Eigen/src/Core/util/ReenableStupidWarnings.h>
|
|
40
|
+
|
|
41
|
+
#endif // EIGEN_KLUSUPPORT_MODULE_H
|
data/vendor/eigen/Eigen/LU
CHANGED
|
@@ -38,13 +38,10 @@
|
|
|
38
38
|
#include "src/LU/Determinant.h"
|
|
39
39
|
#include "src/LU/InverseImpl.h"
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
#if defined EIGEN_VECTORIZE_SSE && !defined EIGEN_VECTORIZE_AVX
|
|
44
|
-
#include "src/LU/arch/Inverse_SSE.h"
|
|
41
|
+
#if defined EIGEN_VECTORIZE_SSE || defined EIGEN_VECTORIZE_NEON
|
|
42
|
+
#include "src/LU/arch/InverseSize4.h"
|
|
45
43
|
#endif
|
|
46
44
|
|
|
47
45
|
#include "src/Core/util/ReenableStupidWarnings.h"
|
|
48
46
|
|
|
49
47
|
#endif // EIGEN_LU_MODULE_H
|
|
50
|
-
/* vim: set filetype=cpp et sw=2 ts=2 ai: */
|
|
@@ -36,6 +36,7 @@ extern "C" {
|
|
|
36
36
|
* \endcode
|
|
37
37
|
*
|
|
38
38
|
* In order to use this module, the PaSTiX headers must be accessible from the include paths, and your binary must be linked to the PaSTiX library and its dependencies.
|
|
39
|
+
* This wrapper resuires PaStiX version 5.x compiled without MPI support.
|
|
39
40
|
* The dependencies depend on how PaSTiX has been compiled.
|
|
40
41
|
* For a cmake based project, you can use our FindPaSTiX.cmake module to help you in this task.
|
|
41
42
|
*
|
|
File without changes
|
data/vendor/eigen/Eigen/QR
CHANGED
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
|
|
11
11
|
#include "Core"
|
|
12
12
|
|
|
13
|
-
#include "src/Core/util/DisableStupidWarnings.h"
|
|
14
|
-
|
|
15
13
|
#include "Cholesky"
|
|
16
14
|
#include "Jacobi"
|
|
17
15
|
#include "Householder"
|
|
18
16
|
|
|
17
|
+
#include "src/Core/util/DisableStupidWarnings.h"
|
|
18
|
+
|
|
19
19
|
/** \defgroup QR_Module QR module
|
|
20
20
|
*
|
|
21
21
|
*
|
|
@@ -48,4 +48,3 @@
|
|
|
48
48
|
#include "src/Core/util/ReenableStupidWarnings.h"
|
|
49
49
|
|
|
50
50
|
#endif // EIGEN_QR_MODULE_H
|
|
51
|
-
/* vim: set filetype=cpp et sw=2 ts=2 ai: */
|
data/vendor/eigen/Eigen/SVD
CHANGED
data/vendor/eigen/Eigen/Sparse
CHANGED
|
@@ -30,16 +30,8 @@
|
|
|
30
30
|
* \endcode
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
|
-
#ifdef EIGEN_MPL2_ONLY
|
|
34
|
-
#error The SparseCholesky module has nothing to offer in MPL2 only mode
|
|
35
|
-
#endif
|
|
36
|
-
|
|
37
33
|
#include "src/SparseCholesky/SimplicialCholesky.h"
|
|
38
|
-
|
|
39
|
-
#ifndef EIGEN_MPL2_ONLY
|
|
40
34
|
#include "src/SparseCholesky/SimplicialCholesky_impl.h"
|
|
41
|
-
#endif
|
|
42
|
-
|
|
43
35
|
#include "src/Core/util/ReenableStupidWarnings.h"
|
|
44
36
|
|
|
45
37
|
#endif // EIGEN_SPARSECHOLESKY_MODULE_H
|
data/vendor/eigen/Eigen/SparseLU
CHANGED
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
// Ordering interface
|
|
24
24
|
#include "OrderingMethods"
|
|
25
25
|
|
|
26
|
+
#include "src/Core/util/DisableStupidWarnings.h"
|
|
27
|
+
|
|
26
28
|
#include "src/SparseLU/SparseLU_gemm_kernel.h"
|
|
27
29
|
|
|
28
30
|
#include "src/SparseLU/SparseLU_Structs.h"
|
|
@@ -43,4 +45,6 @@
|
|
|
43
45
|
#include "src/SparseLU/SparseLU_Utils.h"
|
|
44
46
|
#include "src/SparseLU/SparseLU.h"
|
|
45
47
|
|
|
48
|
+
#include "src/Core/util/ReenableStupidWarnings.h"
|
|
49
|
+
|
|
46
50
|
#endif // EIGEN_SPARSELU_MODULE_H
|
data/vendor/eigen/Eigen/SparseQR
CHANGED
|
@@ -16,6 +16,15 @@
|
|
|
16
16
|
namespace Eigen {
|
|
17
17
|
|
|
18
18
|
namespace internal {
|
|
19
|
+
template<typename _MatrixType, int _UpLo> struct traits<LDLT<_MatrixType, _UpLo> >
|
|
20
|
+
: traits<_MatrixType>
|
|
21
|
+
{
|
|
22
|
+
typedef MatrixXpr XprKind;
|
|
23
|
+
typedef SolverStorage StorageKind;
|
|
24
|
+
typedef int StorageIndex;
|
|
25
|
+
enum { Flags = 0 };
|
|
26
|
+
};
|
|
27
|
+
|
|
19
28
|
template<typename MatrixType, int UpLo> struct LDLT_Traits;
|
|
20
29
|
|
|
21
30
|
// PositiveSemiDef means positive semi-definite and non-zero; same for NegativeSemiDef
|
|
@@ -36,7 +45,7 @@ namespace internal {
|
|
|
36
45
|
* matrix \f$ A \f$ such that \f$ A = P^TLDL^*P \f$, where P is a permutation matrix, L
|
|
37
46
|
* is lower triangular with a unit diagonal and D is a diagonal matrix.
|
|
38
47
|
*
|
|
39
|
-
* The decomposition uses pivoting to ensure stability, so that
|
|
48
|
+
* The decomposition uses pivoting to ensure stability, so that D will have
|
|
40
49
|
* zeros in the bottom right rank(A) - n submatrix. Avoiding the square root
|
|
41
50
|
* on D also stabilizes the computation.
|
|
42
51
|
*
|
|
@@ -44,24 +53,23 @@ namespace internal {
|
|
|
44
53
|
* decomposition to determine whether a system of equations has a solution.
|
|
45
54
|
*
|
|
46
55
|
* This class supports the \link InplaceDecomposition inplace decomposition \endlink mechanism.
|
|
47
|
-
*
|
|
56
|
+
*
|
|
48
57
|
* \sa MatrixBase::ldlt(), SelfAdjointView::ldlt(), class LLT
|
|
49
58
|
*/
|
|
50
59
|
template<typename _MatrixType, int _UpLo> class LDLT
|
|
60
|
+
: public SolverBase<LDLT<_MatrixType, _UpLo> >
|
|
51
61
|
{
|
|
52
62
|
public:
|
|
53
63
|
typedef _MatrixType MatrixType;
|
|
64
|
+
typedef SolverBase<LDLT> Base;
|
|
65
|
+
friend class SolverBase<LDLT>;
|
|
66
|
+
|
|
67
|
+
EIGEN_GENERIC_PUBLIC_INTERFACE(LDLT)
|
|
54
68
|
enum {
|
|
55
|
-
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
|
56
|
-
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
|
57
69
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
|
58
70
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
|
59
71
|
UpLo = _UpLo
|
|
60
72
|
};
|
|
61
|
-
typedef typename MatrixType::Scalar Scalar;
|
|
62
|
-
typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;
|
|
63
|
-
typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
|
|
64
|
-
typedef typename MatrixType::StorageIndex StorageIndex;
|
|
65
73
|
typedef Matrix<Scalar, RowsAtCompileTime, 1, 0, MaxRowsAtCompileTime, 1> TmpMatrixType;
|
|
66
74
|
|
|
67
75
|
typedef Transpositions<RowsAtCompileTime, MaxRowsAtCompileTime> TranspositionType;
|
|
@@ -180,6 +188,7 @@ template<typename _MatrixType, int _UpLo> class LDLT
|
|
|
180
188
|
return m_sign == internal::NegativeSemiDef || m_sign == internal::ZeroSign;
|
|
181
189
|
}
|
|
182
190
|
|
|
191
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
183
192
|
/** \returns a solution x of \f$ A x = b \f$ using the current decomposition of A.
|
|
184
193
|
*
|
|
185
194
|
* This function also supports in-place solves using the syntax <tt>x = decompositionObject.solve(x)</tt> .
|
|
@@ -191,19 +200,14 @@ template<typename _MatrixType, int _UpLo> class LDLT
|
|
|
191
200
|
* \f$ L^* y_4 = y_3 \f$ and \f$ P x = y_4 \f$ in succession. If the matrix \f$ A \f$ is singular, then
|
|
192
201
|
* \f$ D \f$ will also be singular (all the other matrices are invertible). In that case, the
|
|
193
202
|
* least-square solution of \f$ D y_3 = y_2 \f$ is computed. This does not mean that this function
|
|
194
|
-
* computes the least-square solution of \f$ A x = b \f$
|
|
203
|
+
* computes the least-square solution of \f$ A x = b \f$ if \f$ A \f$ is singular.
|
|
195
204
|
*
|
|
196
205
|
* \sa MatrixBase::ldlt(), SelfAdjointView::ldlt()
|
|
197
206
|
*/
|
|
198
207
|
template<typename Rhs>
|
|
199
208
|
inline const Solve<LDLT, Rhs>
|
|
200
|
-
solve(const MatrixBase<Rhs>& b) const
|
|
201
|
-
|
|
202
|
-
eigen_assert(m_isInitialized && "LDLT is not initialized.");
|
|
203
|
-
eigen_assert(m_matrix.rows()==b.rows()
|
|
204
|
-
&& "LDLT::solve(): invalid number of rows of the right hand side matrix b");
|
|
205
|
-
return Solve<LDLT, Rhs>(*this, b.derived());
|
|
206
|
-
}
|
|
209
|
+
solve(const MatrixBase<Rhs>& b) const;
|
|
210
|
+
#endif
|
|
207
211
|
|
|
208
212
|
template<typename Derived>
|
|
209
213
|
bool solveInPlace(MatrixBase<Derived> &bAndX) const;
|
|
@@ -242,12 +246,12 @@ template<typename _MatrixType, int _UpLo> class LDLT
|
|
|
242
246
|
*/
|
|
243
247
|
const LDLT& adjoint() const { return *this; };
|
|
244
248
|
|
|
245
|
-
inline Index rows() const { return m_matrix.rows(); }
|
|
246
|
-
inline Index cols() const { return m_matrix.cols(); }
|
|
249
|
+
EIGEN_DEVICE_FUNC inline EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows(); }
|
|
250
|
+
EIGEN_DEVICE_FUNC inline EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols(); }
|
|
247
251
|
|
|
248
252
|
/** \brief Reports whether previous computation was successful.
|
|
249
253
|
*
|
|
250
|
-
* \returns \c Success if computation was
|
|
254
|
+
* \returns \c Success if computation was successful,
|
|
251
255
|
* \c NumericalIssue if the factorization failed because of a zero pivot.
|
|
252
256
|
*/
|
|
253
257
|
ComputationInfo info() const
|
|
@@ -258,8 +262,10 @@ template<typename _MatrixType, int _UpLo> class LDLT
|
|
|
258
262
|
|
|
259
263
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
260
264
|
template<typename RhsType, typename DstType>
|
|
261
|
-
EIGEN_DEVICE_FUNC
|
|
262
265
|
void _solve_impl(const RhsType &rhs, DstType &dst) const;
|
|
266
|
+
|
|
267
|
+
template<bool Conjugate, typename RhsType, typename DstType>
|
|
268
|
+
void _solve_impl_transposed(const RhsType &rhs, DstType &dst) const;
|
|
263
269
|
#endif
|
|
264
270
|
|
|
265
271
|
protected:
|
|
@@ -560,14 +566,22 @@ template<typename _MatrixType, int _UpLo>
|
|
|
560
566
|
template<typename RhsType, typename DstType>
|
|
561
567
|
void LDLT<_MatrixType,_UpLo>::_solve_impl(const RhsType &rhs, DstType &dst) const
|
|
562
568
|
{
|
|
563
|
-
|
|
569
|
+
_solve_impl_transposed<true>(rhs, dst);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
template<typename _MatrixType,int _UpLo>
|
|
573
|
+
template<bool Conjugate, typename RhsType, typename DstType>
|
|
574
|
+
void LDLT<_MatrixType,_UpLo>::_solve_impl_transposed(const RhsType &rhs, DstType &dst) const
|
|
575
|
+
{
|
|
564
576
|
// dst = P b
|
|
565
577
|
dst = m_transpositions * rhs;
|
|
566
578
|
|
|
567
579
|
// dst = L^-1 (P b)
|
|
568
|
-
|
|
580
|
+
// dst = L^-*T (P b)
|
|
581
|
+
matrixL().template conjugateIf<!Conjugate>().solveInPlace(dst);
|
|
569
582
|
|
|
570
|
-
// dst = D
|
|
583
|
+
// dst = D^-* (L^-1 P b)
|
|
584
|
+
// dst = D^-1 (L^-*T P b)
|
|
571
585
|
// more precisely, use pseudo-inverse of D (see bug 241)
|
|
572
586
|
using std::abs;
|
|
573
587
|
const typename Diagonal<const MatrixType>::RealReturnType vecD(vectorD());
|
|
@@ -579,7 +593,6 @@ void LDLT<_MatrixType,_UpLo>::_solve_impl(const RhsType &rhs, DstType &dst) cons
|
|
|
579
593
|
// Moreover, Lapack's xSYTRS routines use 0 for the tolerance.
|
|
580
594
|
// Using numeric_limits::min() gives us more robustness to denormals.
|
|
581
595
|
RealScalar tolerance = (std::numeric_limits<RealScalar>::min)();
|
|
582
|
-
|
|
583
596
|
for (Index i = 0; i < vecD.size(); ++i)
|
|
584
597
|
{
|
|
585
598
|
if(abs(vecD(i)) > tolerance)
|
|
@@ -588,10 +601,12 @@ void LDLT<_MatrixType,_UpLo>::_solve_impl(const RhsType &rhs, DstType &dst) cons
|
|
|
588
601
|
dst.row(i).setZero();
|
|
589
602
|
}
|
|
590
603
|
|
|
591
|
-
// dst = L
|
|
592
|
-
|
|
604
|
+
// dst = L^-* (D^-* L^-1 P b)
|
|
605
|
+
// dst = L^-T (D^-1 L^-*T P b)
|
|
606
|
+
matrixL().transpose().template conjugateIf<Conjugate>().solveInPlace(dst);
|
|
593
607
|
|
|
594
|
-
// dst = P
|
|
608
|
+
// dst = P^T (L^-* D^-* L^-1 P b) = A^-1 b
|
|
609
|
+
// dst = P^-T (L^-T D^-1 L^-*T P b) = A^-1 b
|
|
595
610
|
dst = m_transpositions.transpose() * dst;
|
|
596
611
|
}
|
|
597
612
|
#endif
|
|
@@ -13,6 +13,16 @@
|
|
|
13
13
|
namespace Eigen {
|
|
14
14
|
|
|
15
15
|
namespace internal{
|
|
16
|
+
|
|
17
|
+
template<typename _MatrixType, int _UpLo> struct traits<LLT<_MatrixType, _UpLo> >
|
|
18
|
+
: traits<_MatrixType>
|
|
19
|
+
{
|
|
20
|
+
typedef MatrixXpr XprKind;
|
|
21
|
+
typedef SolverStorage StorageKind;
|
|
22
|
+
typedef int StorageIndex;
|
|
23
|
+
enum { Flags = 0 };
|
|
24
|
+
};
|
|
25
|
+
|
|
16
26
|
template<typename MatrixType, int UpLo> struct LLT_Traits;
|
|
17
27
|
}
|
|
18
28
|
|
|
@@ -54,18 +64,17 @@ template<typename MatrixType, int UpLo> struct LLT_Traits;
|
|
|
54
64
|
* \sa MatrixBase::llt(), SelfAdjointView::llt(), class LDLT
|
|
55
65
|
*/
|
|
56
66
|
template<typename _MatrixType, int _UpLo> class LLT
|
|
67
|
+
: public SolverBase<LLT<_MatrixType, _UpLo> >
|
|
57
68
|
{
|
|
58
69
|
public:
|
|
59
70
|
typedef _MatrixType MatrixType;
|
|
71
|
+
typedef SolverBase<LLT> Base;
|
|
72
|
+
friend class SolverBase<LLT>;
|
|
73
|
+
|
|
74
|
+
EIGEN_GENERIC_PUBLIC_INTERFACE(LLT)
|
|
60
75
|
enum {
|
|
61
|
-
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
|
62
|
-
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
|
63
76
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
|
64
77
|
};
|
|
65
|
-
typedef typename MatrixType::Scalar Scalar;
|
|
66
|
-
typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;
|
|
67
|
-
typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
|
|
68
|
-
typedef typename MatrixType::StorageIndex StorageIndex;
|
|
69
78
|
|
|
70
79
|
enum {
|
|
71
80
|
PacketSize = internal::packet_traits<Scalar>::size,
|
|
@@ -100,7 +109,7 @@ template<typename _MatrixType, int _UpLo> class LLT
|
|
|
100
109
|
compute(matrix.derived());
|
|
101
110
|
}
|
|
102
111
|
|
|
103
|
-
/** \brief Constructs a
|
|
112
|
+
/** \brief Constructs a LLT factorization from a given matrix
|
|
104
113
|
*
|
|
105
114
|
* This overloaded constructor is provided for \link InplaceDecomposition inplace decomposition \endlink when
|
|
106
115
|
* \c MatrixType is a Eigen::Ref.
|
|
@@ -129,6 +138,7 @@ template<typename _MatrixType, int _UpLo> class LLT
|
|
|
129
138
|
return Traits::getL(m_matrix);
|
|
130
139
|
}
|
|
131
140
|
|
|
141
|
+
#ifdef EIGEN_PARSED_BY_DOXYGEN
|
|
132
142
|
/** \returns the solution x of \f$ A x = b \f$ using the current decomposition of A.
|
|
133
143
|
*
|
|
134
144
|
* Since this LLT class assumes anyway that the matrix A is invertible, the solution
|
|
@@ -141,13 +151,8 @@ template<typename _MatrixType, int _UpLo> class LLT
|
|
|
141
151
|
*/
|
|
142
152
|
template<typename Rhs>
|
|
143
153
|
inline const Solve<LLT, Rhs>
|
|
144
|
-
solve(const MatrixBase<Rhs>& b) const
|
|
145
|
-
|
|
146
|
-
eigen_assert(m_isInitialized && "LLT is not initialized.");
|
|
147
|
-
eigen_assert(m_matrix.rows()==b.rows()
|
|
148
|
-
&& "LLT::solve(): invalid number of rows of the right hand side matrix b");
|
|
149
|
-
return Solve<LLT, Rhs>(*this, b.derived());
|
|
150
|
-
}
|
|
154
|
+
solve(const MatrixBase<Rhs>& b) const;
|
|
155
|
+
#endif
|
|
151
156
|
|
|
152
157
|
template<typename Derived>
|
|
153
158
|
void solveInPlace(const MatrixBase<Derived> &bAndX) const;
|
|
@@ -180,7 +185,7 @@ template<typename _MatrixType, int _UpLo> class LLT
|
|
|
180
185
|
|
|
181
186
|
/** \brief Reports whether previous computation was successful.
|
|
182
187
|
*
|
|
183
|
-
* \returns \c Success if computation was
|
|
188
|
+
* \returns \c Success if computation was successful,
|
|
184
189
|
* \c NumericalIssue if the matrix.appears not to be positive definite.
|
|
185
190
|
*/
|
|
186
191
|
ComputationInfo info() const
|
|
@@ -194,18 +199,20 @@ template<typename _MatrixType, int _UpLo> class LLT
|
|
|
194
199
|
* This method is provided for compatibility with other matrix decompositions, thus enabling generic code such as:
|
|
195
200
|
* \code x = decomposition.adjoint().solve(b) \endcode
|
|
196
201
|
*/
|
|
197
|
-
const LLT& adjoint() const { return *this; };
|
|
202
|
+
const LLT& adjoint() const EIGEN_NOEXCEPT { return *this; };
|
|
198
203
|
|
|
199
|
-
inline Index rows() const { return m_matrix.rows(); }
|
|
200
|
-
inline Index cols() const { return m_matrix.cols(); }
|
|
204
|
+
inline EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows(); }
|
|
205
|
+
inline EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols(); }
|
|
201
206
|
|
|
202
207
|
template<typename VectorType>
|
|
203
|
-
LLT rankUpdate(const VectorType& vec, const RealScalar& sigma = 1);
|
|
208
|
+
LLT & rankUpdate(const VectorType& vec, const RealScalar& sigma = 1);
|
|
204
209
|
|
|
205
210
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
206
211
|
template<typename RhsType, typename DstType>
|
|
207
|
-
EIGEN_DEVICE_FUNC
|
|
208
212
|
void _solve_impl(const RhsType &rhs, DstType &dst) const;
|
|
213
|
+
|
|
214
|
+
template<bool Conjugate, typename RhsType, typename DstType>
|
|
215
|
+
void _solve_impl_transposed(const RhsType &rhs, DstType &dst) const;
|
|
209
216
|
#endif
|
|
210
217
|
|
|
211
218
|
protected:
|
|
@@ -459,7 +466,7 @@ LLT<MatrixType,_UpLo>& LLT<MatrixType,_UpLo>::compute(const EigenBase<InputType>
|
|
|
459
466
|
*/
|
|
460
467
|
template<typename _MatrixType, int _UpLo>
|
|
461
468
|
template<typename VectorType>
|
|
462
|
-
LLT<_MatrixType,_UpLo> LLT<_MatrixType,_UpLo>::rankUpdate(const VectorType& v, const RealScalar& sigma)
|
|
469
|
+
LLT<_MatrixType,_UpLo> & LLT<_MatrixType,_UpLo>::rankUpdate(const VectorType& v, const RealScalar& sigma)
|
|
463
470
|
{
|
|
464
471
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(VectorType);
|
|
465
472
|
eigen_assert(v.size()==m_matrix.cols());
|
|
@@ -477,8 +484,17 @@ template<typename _MatrixType,int _UpLo>
|
|
|
477
484
|
template<typename RhsType, typename DstType>
|
|
478
485
|
void LLT<_MatrixType,_UpLo>::_solve_impl(const RhsType &rhs, DstType &dst) const
|
|
479
486
|
{
|
|
480
|
-
dst
|
|
481
|
-
|
|
487
|
+
_solve_impl_transposed<true>(rhs, dst);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
template<typename _MatrixType,int _UpLo>
|
|
491
|
+
template<bool Conjugate, typename RhsType, typename DstType>
|
|
492
|
+
void LLT<_MatrixType,_UpLo>::_solve_impl_transposed(const RhsType &rhs, DstType &dst) const
|
|
493
|
+
{
|
|
494
|
+
dst = rhs;
|
|
495
|
+
|
|
496
|
+
matrixL().template conjugateIf<!Conjugate>().solveInPlace(dst);
|
|
497
|
+
matrixU().template conjugateIf<!Conjugate>().solveInPlace(dst);
|
|
482
498
|
}
|
|
483
499
|
#endif
|
|
484
500
|
|