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
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
#if defined(EIGEN_INITIALIZE_MATRICES_BY_ZERO)
|
|
15
15
|
# define EIGEN_INITIALIZE_COEFFS
|
|
16
|
-
# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(
|
|
16
|
+
# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(Index i=0;i<base().size();++i) coeffRef(i)=Scalar(0);
|
|
17
17
|
#elif defined(EIGEN_INITIALIZE_MATRICES_BY_NAN)
|
|
18
18
|
# define EIGEN_INITIALIZE_COEFFS
|
|
19
|
-
# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(
|
|
19
|
+
# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(Index i=0;i<base().size();++i) coeffRef(i)=std::numeric_limits<Scalar>::quiet_NaN();
|
|
20
20
|
#else
|
|
21
21
|
# undef EIGEN_INITIALIZE_COEFFS
|
|
22
22
|
# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
|
@@ -104,7 +104,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
104
104
|
|
|
105
105
|
typedef typename internal::traits<Derived>::StorageKind StorageKind;
|
|
106
106
|
typedef typename internal::traits<Derived>::Scalar Scalar;
|
|
107
|
-
|
|
107
|
+
|
|
108
108
|
typedef typename internal::packet_traits<Scalar>::type PacketScalar;
|
|
109
109
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
|
110
110
|
typedef Derived DenseType;
|
|
@@ -118,16 +118,8 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
118
118
|
using Base::IsVectorAtCompileTime;
|
|
119
119
|
using Base::Flags;
|
|
120
120
|
|
|
121
|
-
template<typename PlainObjectType, int MapOptions, typename StrideType> friend class Eigen::Map;
|
|
122
|
-
friend class Eigen::Map<Derived, Unaligned>;
|
|
123
121
|
typedef Eigen::Map<Derived, Unaligned> MapType;
|
|
124
|
-
friend class Eigen::Map<const Derived, Unaligned>;
|
|
125
122
|
typedef const Eigen::Map<const Derived, Unaligned> ConstMapType;
|
|
126
|
-
#if EIGEN_MAX_ALIGN_BYTES>0
|
|
127
|
-
// for EIGEN_MAX_ALIGN_BYTES==0, AlignedMax==Unaligned, and many compilers generate warnings for friend-ing a class twice.
|
|
128
|
-
friend class Eigen::Map<Derived, AlignedMax>;
|
|
129
|
-
friend class Eigen::Map<const Derived, AlignedMax>;
|
|
130
|
-
#endif
|
|
131
123
|
typedef Eigen::Map<Derived, AlignedMax> AlignedMapType;
|
|
132
124
|
typedef const Eigen::Map<const Derived, AlignedMax> ConstAlignedMapType;
|
|
133
125
|
template<typename StrideType> struct StridedMapType { typedef Eigen::Map<Derived, Unaligned, StrideType> type; };
|
|
@@ -147,10 +139,10 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
147
139
|
EIGEN_DEVICE_FUNC
|
|
148
140
|
const Base& base() const { return *static_cast<const Base*>(this); }
|
|
149
141
|
|
|
150
|
-
EIGEN_DEVICE_FUNC
|
|
151
|
-
|
|
152
|
-
EIGEN_DEVICE_FUNC
|
|
153
|
-
|
|
142
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
143
|
+
Index rows() const EIGEN_NOEXCEPT { return m_storage.rows(); }
|
|
144
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
145
|
+
Index cols() const EIGEN_NOEXCEPT { return m_storage.cols(); }
|
|
154
146
|
|
|
155
147
|
/** This is an overloaded version of DenseCoeffsBase<Derived,ReadOnlyAccessors>::coeff(Index,Index) const
|
|
156
148
|
* provided to by-pass the creation of an evaluator of the expression, thus saving compilation efforts.
|
|
@@ -358,7 +350,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
358
350
|
* remain row-vectors and vectors remain vectors.
|
|
359
351
|
*/
|
|
360
352
|
template<typename OtherDerived>
|
|
361
|
-
EIGEN_DEVICE_FUNC
|
|
353
|
+
EIGEN_DEVICE_FUNC
|
|
362
354
|
EIGEN_STRONG_INLINE void resizeLike(const EigenBase<OtherDerived>& _other)
|
|
363
355
|
{
|
|
364
356
|
const OtherDerived& other = _other.derived();
|
|
@@ -383,7 +375,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
383
375
|
* of rows and/or of columns, you can use conservativeResize(NoChange_t, Index) or
|
|
384
376
|
* conservativeResize(Index, NoChange_t).
|
|
385
377
|
*
|
|
386
|
-
* Matrices are resized relative to the top-left element. In case values need to be
|
|
378
|
+
* Matrices are resized relative to the top-left element. In case values need to be
|
|
387
379
|
* appended to the matrix they will be uninitialized.
|
|
388
380
|
*/
|
|
389
381
|
EIGEN_DEVICE_FUNC
|
|
@@ -440,7 +432,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
440
432
|
* of rows and/or of columns, you can use conservativeResize(NoChange_t, Index) or
|
|
441
433
|
* conservativeResize(Index, NoChange_t).
|
|
442
434
|
*
|
|
443
|
-
* Matrices are resized relative to the top-left element. In case values need to be
|
|
435
|
+
* Matrices are resized relative to the top-left element. In case values need to be
|
|
444
436
|
* appended to the matrix they will copied from \c other.
|
|
445
437
|
*/
|
|
446
438
|
template<typename OtherDerived>
|
|
@@ -508,8 +500,8 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
508
500
|
EIGEN_DEVICE_FUNC
|
|
509
501
|
PlainObjectBase& operator=(PlainObjectBase&& other) EIGEN_NOEXCEPT
|
|
510
502
|
{
|
|
511
|
-
|
|
512
|
-
|
|
503
|
+
_check_template_params();
|
|
504
|
+
m_storage = std::move(other.m_storage);
|
|
513
505
|
return *this;
|
|
514
506
|
}
|
|
515
507
|
#endif
|
|
@@ -526,6 +518,71 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
526
518
|
// EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
|
|
527
519
|
}
|
|
528
520
|
|
|
521
|
+
#if EIGEN_HAS_CXX11
|
|
522
|
+
/** \brief Construct a row of column vector with fixed size from an arbitrary number of coefficients. \cpp11
|
|
523
|
+
*
|
|
524
|
+
* \only_for_vectors
|
|
525
|
+
*
|
|
526
|
+
* This constructor is for 1D array or vectors with more than 4 coefficients.
|
|
527
|
+
* There exists C++98 analogue constructors for fixed-size array/vector having 1, 2, 3, or 4 coefficients.
|
|
528
|
+
*
|
|
529
|
+
* \warning To construct a column (resp. row) vector of fixed length, the number of values passed to this
|
|
530
|
+
* constructor must match the the fixed number of rows (resp. columns) of \c *this.
|
|
531
|
+
*/
|
|
532
|
+
template <typename... ArgTypes>
|
|
533
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
534
|
+
PlainObjectBase(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3, const ArgTypes&... args)
|
|
535
|
+
: m_storage()
|
|
536
|
+
{
|
|
537
|
+
_check_template_params();
|
|
538
|
+
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(PlainObjectBase, sizeof...(args) + 4);
|
|
539
|
+
m_storage.data()[0] = a0;
|
|
540
|
+
m_storage.data()[1] = a1;
|
|
541
|
+
m_storage.data()[2] = a2;
|
|
542
|
+
m_storage.data()[3] = a3;
|
|
543
|
+
Index i = 4;
|
|
544
|
+
auto x = {(m_storage.data()[i++] = args, 0)...};
|
|
545
|
+
static_cast<void>(x);
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
/** \brief Constructs a Matrix or Array and initializes it by elements given by an initializer list of initializer
|
|
549
|
+
* lists \cpp11
|
|
550
|
+
*/
|
|
551
|
+
EIGEN_DEVICE_FUNC
|
|
552
|
+
explicit EIGEN_STRONG_INLINE PlainObjectBase(const std::initializer_list<std::initializer_list<Scalar>>& list)
|
|
553
|
+
: m_storage()
|
|
554
|
+
{
|
|
555
|
+
_check_template_params();
|
|
556
|
+
|
|
557
|
+
size_t list_size = 0;
|
|
558
|
+
if (list.begin() != list.end()) {
|
|
559
|
+
list_size = list.begin()->size();
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
// This is to allow syntax like VectorXi {{1, 2, 3, 4}}
|
|
563
|
+
if (ColsAtCompileTime == 1 && list.size() == 1) {
|
|
564
|
+
eigen_assert(list_size == static_cast<size_t>(RowsAtCompileTime) || RowsAtCompileTime == Dynamic);
|
|
565
|
+
resize(list_size, ColsAtCompileTime);
|
|
566
|
+
std::copy(list.begin()->begin(), list.begin()->end(), m_storage.data());
|
|
567
|
+
} else {
|
|
568
|
+
eigen_assert(list.size() == static_cast<size_t>(RowsAtCompileTime) || RowsAtCompileTime == Dynamic);
|
|
569
|
+
eigen_assert(list_size == static_cast<size_t>(ColsAtCompileTime) || ColsAtCompileTime == Dynamic);
|
|
570
|
+
resize(list.size(), list_size);
|
|
571
|
+
|
|
572
|
+
Index row_index = 0;
|
|
573
|
+
for (const std::initializer_list<Scalar>& row : list) {
|
|
574
|
+
eigen_assert(list_size == row.size());
|
|
575
|
+
Index col_index = 0;
|
|
576
|
+
for (const Scalar& e : row) {
|
|
577
|
+
coeffRef(row_index, col_index) = e;
|
|
578
|
+
++col_index;
|
|
579
|
+
}
|
|
580
|
+
++row_index;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
#endif // end EIGEN_HAS_CXX11
|
|
585
|
+
|
|
529
586
|
/** \sa PlainObjectBase::operator=(const EigenBase<OtherDerived>&) */
|
|
530
587
|
template<typename OtherDerived>
|
|
531
588
|
EIGEN_DEVICE_FUNC
|
|
@@ -564,7 +621,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
564
621
|
* \copydetails DenseBase::operator=(const EigenBase<OtherDerived> &other)
|
|
565
622
|
*/
|
|
566
623
|
template<typename OtherDerived>
|
|
567
|
-
EIGEN_DEVICE_FUNC
|
|
624
|
+
EIGEN_DEVICE_FUNC
|
|
568
625
|
EIGEN_STRONG_INLINE Derived& operator=(const EigenBase<OtherDerived> &other)
|
|
569
626
|
{
|
|
570
627
|
_resize_to_match(other);
|
|
@@ -652,18 +709,26 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
652
709
|
using Base::setConstant;
|
|
653
710
|
EIGEN_DEVICE_FUNC Derived& setConstant(Index size, const Scalar& val);
|
|
654
711
|
EIGEN_DEVICE_FUNC Derived& setConstant(Index rows, Index cols, const Scalar& val);
|
|
712
|
+
EIGEN_DEVICE_FUNC Derived& setConstant(NoChange_t, Index cols, const Scalar& val);
|
|
713
|
+
EIGEN_DEVICE_FUNC Derived& setConstant(Index rows, NoChange_t, const Scalar& val);
|
|
655
714
|
|
|
656
715
|
using Base::setZero;
|
|
657
716
|
EIGEN_DEVICE_FUNC Derived& setZero(Index size);
|
|
658
717
|
EIGEN_DEVICE_FUNC Derived& setZero(Index rows, Index cols);
|
|
718
|
+
EIGEN_DEVICE_FUNC Derived& setZero(NoChange_t, Index cols);
|
|
719
|
+
EIGEN_DEVICE_FUNC Derived& setZero(Index rows, NoChange_t);
|
|
659
720
|
|
|
660
721
|
using Base::setOnes;
|
|
661
722
|
EIGEN_DEVICE_FUNC Derived& setOnes(Index size);
|
|
662
723
|
EIGEN_DEVICE_FUNC Derived& setOnes(Index rows, Index cols);
|
|
724
|
+
EIGEN_DEVICE_FUNC Derived& setOnes(NoChange_t, Index cols);
|
|
725
|
+
EIGEN_DEVICE_FUNC Derived& setOnes(Index rows, NoChange_t);
|
|
663
726
|
|
|
664
727
|
using Base::setRandom;
|
|
665
728
|
Derived& setRandom(Index size);
|
|
666
729
|
Derived& setRandom(Index rows, Index cols);
|
|
730
|
+
Derived& setRandom(NoChange_t, Index cols);
|
|
731
|
+
Derived& setRandom(Index rows, NoChange_t);
|
|
667
732
|
|
|
668
733
|
#ifdef EIGEN_PLAINOBJECTBASE_PLUGIN
|
|
669
734
|
#include EIGEN_PLAINOBJECTBASE_PLUGIN
|
|
@@ -678,7 +743,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
678
743
|
* remain row-vectors and vectors remain vectors.
|
|
679
744
|
*/
|
|
680
745
|
template<typename OtherDerived>
|
|
681
|
-
EIGEN_DEVICE_FUNC
|
|
746
|
+
EIGEN_DEVICE_FUNC
|
|
682
747
|
EIGEN_STRONG_INLINE void _resize_to_match(const EigenBase<OtherDerived>& other)
|
|
683
748
|
{
|
|
684
749
|
#ifdef EIGEN_NO_AUTOMATIC_RESIZING
|
|
@@ -705,10 +770,10 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
705
770
|
*
|
|
706
771
|
* \internal
|
|
707
772
|
*/
|
|
708
|
-
// aliasing is dealt once in
|
|
773
|
+
// aliasing is dealt once in internal::call_assignment
|
|
709
774
|
// so at this stage we have to assume aliasing... and resising has to be done later.
|
|
710
775
|
template<typename OtherDerived>
|
|
711
|
-
EIGEN_DEVICE_FUNC
|
|
776
|
+
EIGEN_DEVICE_FUNC
|
|
712
777
|
EIGEN_STRONG_INLINE Derived& _set(const DenseBase<OtherDerived>& other)
|
|
713
778
|
{
|
|
714
779
|
internal::call_assignment(this->derived(), other.derived());
|
|
@@ -721,7 +786,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
721
786
|
* \sa operator=(const MatrixBase<OtherDerived>&), _set()
|
|
722
787
|
*/
|
|
723
788
|
template<typename OtherDerived>
|
|
724
|
-
EIGEN_DEVICE_FUNC
|
|
789
|
+
EIGEN_DEVICE_FUNC
|
|
725
790
|
EIGEN_STRONG_INLINE Derived& _set_noalias(const DenseBase<OtherDerived>& other)
|
|
726
791
|
{
|
|
727
792
|
// I don't think we need this resize call since the lazyAssign will anyways resize
|
|
@@ -737,23 +802,25 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
737
802
|
EIGEN_DEVICE_FUNC
|
|
738
803
|
EIGEN_STRONG_INLINE void _init2(Index rows, Index cols, typename internal::enable_if<Base::SizeAtCompileTime!=2,T0>::type* = 0)
|
|
739
804
|
{
|
|
740
|
-
|
|
741
|
-
|
|
805
|
+
const bool t0_is_integer_alike = internal::is_valid_index_type<T0>::value;
|
|
806
|
+
const bool t1_is_integer_alike = internal::is_valid_index_type<T1>::value;
|
|
807
|
+
EIGEN_STATIC_ASSERT(t0_is_integer_alike &&
|
|
808
|
+
t1_is_integer_alike,
|
|
742
809
|
FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED)
|
|
743
810
|
resize(rows,cols);
|
|
744
811
|
}
|
|
745
|
-
|
|
812
|
+
|
|
746
813
|
template<typename T0, typename T1>
|
|
747
|
-
EIGEN_DEVICE_FUNC
|
|
814
|
+
EIGEN_DEVICE_FUNC
|
|
748
815
|
EIGEN_STRONG_INLINE void _init2(const T0& val0, const T1& val1, typename internal::enable_if<Base::SizeAtCompileTime==2,T0>::type* = 0)
|
|
749
816
|
{
|
|
750
817
|
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(PlainObjectBase, 2)
|
|
751
818
|
m_storage.data()[0] = Scalar(val0);
|
|
752
819
|
m_storage.data()[1] = Scalar(val1);
|
|
753
820
|
}
|
|
754
|
-
|
|
821
|
+
|
|
755
822
|
template<typename T0, typename T1>
|
|
756
|
-
EIGEN_DEVICE_FUNC
|
|
823
|
+
EIGEN_DEVICE_FUNC
|
|
757
824
|
EIGEN_STRONG_INLINE void _init2(const Index& val0, const Index& val1,
|
|
758
825
|
typename internal::enable_if< (!internal::is_same<Index,Scalar>::value)
|
|
759
826
|
&& (internal::is_same<T0,Index>::value)
|
|
@@ -773,14 +840,14 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
773
840
|
&& ((!internal::is_same<typename internal::traits<Derived>::XprKind,ArrayXpr>::value || Base::SizeAtCompileTime==Dynamic)),T>::type* = 0)
|
|
774
841
|
{
|
|
775
842
|
// NOTE MSVC 2008 complains if we directly put bool(NumTraits<T>::IsInteger) as the EIGEN_STATIC_ASSERT argument.
|
|
776
|
-
const bool
|
|
777
|
-
EIGEN_UNUSED_VARIABLE(
|
|
778
|
-
EIGEN_STATIC_ASSERT(
|
|
843
|
+
const bool is_integer_alike = internal::is_valid_index_type<T>::value;
|
|
844
|
+
EIGEN_UNUSED_VARIABLE(is_integer_alike);
|
|
845
|
+
EIGEN_STATIC_ASSERT(is_integer_alike,
|
|
779
846
|
FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED)
|
|
780
847
|
resize(size);
|
|
781
848
|
}
|
|
782
|
-
|
|
783
|
-
// We have a 1x1 matrix/array => the argument is interpreted as the value of the unique coefficient (case where scalar type can be
|
|
849
|
+
|
|
850
|
+
// We have a 1x1 matrix/array => the argument is interpreted as the value of the unique coefficient (case where scalar type can be implicitly converted)
|
|
784
851
|
template<typename T>
|
|
785
852
|
EIGEN_DEVICE_FUNC
|
|
786
853
|
EIGEN_STRONG_INLINE void _init1(const Scalar& val0, typename internal::enable_if<Base::SizeAtCompileTime==1 && internal::is_convertible<T, Scalar>::value,T>::type* = 0)
|
|
@@ -788,7 +855,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
788
855
|
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(PlainObjectBase, 1)
|
|
789
856
|
m_storage.data()[0] = val0;
|
|
790
857
|
}
|
|
791
|
-
|
|
858
|
+
|
|
792
859
|
// We have a 1x1 matrix/array => the argument is interpreted as the value of the unique coefficient (case where scalar type match the index type)
|
|
793
860
|
template<typename T>
|
|
794
861
|
EIGEN_DEVICE_FUNC
|
|
@@ -844,7 +911,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
844
911
|
{
|
|
845
912
|
this->derived() = r;
|
|
846
913
|
}
|
|
847
|
-
|
|
914
|
+
|
|
848
915
|
// For fixed-size Array<Scalar,...>
|
|
849
916
|
template<typename T>
|
|
850
917
|
EIGEN_DEVICE_FUNC
|
|
@@ -856,7 +923,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
856
923
|
{
|
|
857
924
|
Base::setConstant(val0);
|
|
858
925
|
}
|
|
859
|
-
|
|
926
|
+
|
|
860
927
|
// For fixed-size Array<Index,...>
|
|
861
928
|
template<typename T>
|
|
862
929
|
EIGEN_DEVICE_FUNC
|
|
@@ -870,38 +937,38 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
870
937
|
{
|
|
871
938
|
Base::setConstant(val0);
|
|
872
939
|
}
|
|
873
|
-
|
|
940
|
+
|
|
874
941
|
template<typename MatrixTypeA, typename MatrixTypeB, bool SwapPointers>
|
|
875
942
|
friend struct internal::matrix_swap_impl;
|
|
876
943
|
|
|
877
944
|
public:
|
|
878
|
-
|
|
945
|
+
|
|
879
946
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
|
880
947
|
/** \internal
|
|
881
948
|
* \brief Override DenseBase::swap() since for dynamic-sized matrices
|
|
882
949
|
* of same type it is enough to swap the data pointers.
|
|
883
950
|
*/
|
|
884
951
|
template<typename OtherDerived>
|
|
885
|
-
EIGEN_DEVICE_FUNC
|
|
952
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
886
953
|
void swap(DenseBase<OtherDerived> & other)
|
|
887
954
|
{
|
|
888
955
|
enum { SwapPointers = internal::is_same<Derived, OtherDerived>::value && Base::SizeAtCompileTime==Dynamic };
|
|
889
956
|
internal::matrix_swap_impl<Derived, OtherDerived, bool(SwapPointers)>::run(this->derived(), other.derived());
|
|
890
957
|
}
|
|
891
|
-
|
|
958
|
+
|
|
892
959
|
/** \internal
|
|
893
960
|
* \brief const version forwarded to DenseBase::swap
|
|
894
961
|
*/
|
|
895
962
|
template<typename OtherDerived>
|
|
896
|
-
EIGEN_DEVICE_FUNC
|
|
963
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
897
964
|
void swap(DenseBase<OtherDerived> const & other)
|
|
898
965
|
{ Base::swap(other.derived()); }
|
|
899
|
-
|
|
900
|
-
EIGEN_DEVICE_FUNC
|
|
966
|
+
|
|
967
|
+
EIGEN_DEVICE_FUNC
|
|
901
968
|
static EIGEN_STRONG_INLINE void _check_template_params()
|
|
902
969
|
{
|
|
903
|
-
EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1, (Options&RowMajor)==RowMajor)
|
|
904
|
-
&& EIGEN_IMPLIES(MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1, (Options&RowMajor)==0)
|
|
970
|
+
EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1, (int(Options)&RowMajor)==RowMajor)
|
|
971
|
+
&& EIGEN_IMPLIES(MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1, (int(Options)&RowMajor)==0)
|
|
905
972
|
&& ((RowsAtCompileTime == Dynamic) || (RowsAtCompileTime >= 0))
|
|
906
973
|
&& ((ColsAtCompileTime == Dynamic) || (ColsAtCompileTime >= 0))
|
|
907
974
|
&& ((MaxRowsAtCompileTime == Dynamic) || (MaxRowsAtCompileTime >= 0))
|
|
@@ -913,6 +980,17 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|
|
913
980
|
}
|
|
914
981
|
|
|
915
982
|
enum { IsPlainObjectBase = 1 };
|
|
983
|
+
#endif
|
|
984
|
+
public:
|
|
985
|
+
// These apparently need to be down here for nvcc+icc to prevent duplicate
|
|
986
|
+
// Map symbol.
|
|
987
|
+
template<typename PlainObjectType, int MapOptions, typename StrideType> friend class Eigen::Map;
|
|
988
|
+
friend class Eigen::Map<Derived, Unaligned>;
|
|
989
|
+
friend class Eigen::Map<const Derived, Unaligned>;
|
|
990
|
+
#if EIGEN_MAX_ALIGN_BYTES>0
|
|
991
|
+
// for EIGEN_MAX_ALIGN_BYTES==0, AlignedMax==Unaligned, and many compilers generate warnings for friend-ing a class twice.
|
|
992
|
+
friend class Eigen::Map<Derived, AlignedMax>;
|
|
993
|
+
friend class Eigen::Map<const Derived, AlignedMax>;
|
|
916
994
|
#endif
|
|
917
995
|
};
|
|
918
996
|
|
|
@@ -921,13 +999,19 @@ namespace internal {
|
|
|
921
999
|
template <typename Derived, typename OtherDerived, bool IsVector>
|
|
922
1000
|
struct conservative_resize_like_impl
|
|
923
1001
|
{
|
|
1002
|
+
#if EIGEN_HAS_TYPE_TRAITS
|
|
1003
|
+
static const bool IsRelocatable = std::is_trivially_copyable<typename Derived::Scalar>::value;
|
|
1004
|
+
#else
|
|
1005
|
+
static const bool IsRelocatable = !NumTraits<typename Derived::Scalar>::RequireInitialization;
|
|
1006
|
+
#endif
|
|
924
1007
|
static void run(DenseBase<Derived>& _this, Index rows, Index cols)
|
|
925
1008
|
{
|
|
926
1009
|
if (_this.rows() == rows && _this.cols() == cols) return;
|
|
927
1010
|
EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(Derived)
|
|
928
1011
|
|
|
929
|
-
if (
|
|
930
|
-
|
|
1012
|
+
if ( IsRelocatable
|
|
1013
|
+
&& (( Derived::IsRowMajor && _this.cols() == cols) || // row-major and we change only the number of rows
|
|
1014
|
+
(!Derived::IsRowMajor && _this.rows() == rows) )) // column-major and we change only the number of columns
|
|
931
1015
|
{
|
|
932
1016
|
internal::check_rows_cols_for_overflow<Derived::MaxSizeAtCompileTime>::run(rows, cols);
|
|
933
1017
|
_this.derived().m_storage.conservativeResize(rows*cols,rows,cols);
|
|
@@ -935,7 +1019,7 @@ struct conservative_resize_like_impl
|
|
|
935
1019
|
else
|
|
936
1020
|
{
|
|
937
1021
|
// The storage order does not allow us to use reallocation.
|
|
938
|
-
|
|
1022
|
+
Derived tmp(rows,cols);
|
|
939
1023
|
const Index common_rows = numext::mini(rows, _this.rows());
|
|
940
1024
|
const Index common_cols = numext::mini(cols, _this.cols());
|
|
941
1025
|
tmp.block(0,0,common_rows,common_cols) = _this.block(0,0,common_rows,common_cols);
|
|
@@ -955,8 +1039,9 @@ struct conservative_resize_like_impl
|
|
|
955
1039
|
EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(Derived)
|
|
956
1040
|
EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(OtherDerived)
|
|
957
1041
|
|
|
958
|
-
if (
|
|
959
|
-
|
|
1042
|
+
if ( IsRelocatable &&
|
|
1043
|
+
(( Derived::IsRowMajor && _this.cols() == other.cols()) || // row-major and we change only the number of rows
|
|
1044
|
+
(!Derived::IsRowMajor && _this.rows() == other.rows()) )) // column-major and we change only the number of columns
|
|
960
1045
|
{
|
|
961
1046
|
const Index new_rows = other.rows() - _this.rows();
|
|
962
1047
|
const Index new_cols = other.cols() - _this.cols();
|
|
@@ -969,7 +1054,7 @@ struct conservative_resize_like_impl
|
|
|
969
1054
|
else
|
|
970
1055
|
{
|
|
971
1056
|
// The storage order does not allow us to use reallocation.
|
|
972
|
-
|
|
1057
|
+
Derived tmp(other);
|
|
973
1058
|
const Index common_rows = numext::mini(tmp.rows(), _this.rows());
|
|
974
1059
|
const Index common_cols = numext::mini(tmp.cols(), _this.cols());
|
|
975
1060
|
tmp.block(0,0,common_rows,common_cols) = _this.block(0,0,common_rows,common_cols);
|
|
@@ -984,13 +1069,18 @@ template <typename Derived, typename OtherDerived>
|
|
|
984
1069
|
struct conservative_resize_like_impl<Derived,OtherDerived,true>
|
|
985
1070
|
: conservative_resize_like_impl<Derived,OtherDerived,false>
|
|
986
1071
|
{
|
|
987
|
-
|
|
988
|
-
|
|
1072
|
+
typedef conservative_resize_like_impl<Derived,OtherDerived,false> Base;
|
|
1073
|
+
using Base::run;
|
|
1074
|
+
using Base::IsRelocatable;
|
|
1075
|
+
|
|
989
1076
|
static void run(DenseBase<Derived>& _this, Index size)
|
|
990
1077
|
{
|
|
991
1078
|
const Index new_rows = Derived::RowsAtCompileTime==1 ? 1 : size;
|
|
992
1079
|
const Index new_cols = Derived::RowsAtCompileTime==1 ? size : 1;
|
|
993
|
-
|
|
1080
|
+
if(IsRelocatable)
|
|
1081
|
+
_this.derived().m_storage.conservativeResize(size,new_rows,new_cols);
|
|
1082
|
+
else
|
|
1083
|
+
Base::run(_this.derived(), new_rows, new_cols);
|
|
994
1084
|
}
|
|
995
1085
|
|
|
996
1086
|
static void run(DenseBase<Derived>& _this, const DenseBase<OtherDerived>& other)
|
|
@@ -1001,7 +1091,10 @@ struct conservative_resize_like_impl<Derived,OtherDerived,true>
|
|
|
1001
1091
|
|
|
1002
1092
|
const Index new_rows = Derived::RowsAtCompileTime==1 ? 1 : other.rows();
|
|
1003
1093
|
const Index new_cols = Derived::RowsAtCompileTime==1 ? other.cols() : 1;
|
|
1004
|
-
|
|
1094
|
+
if(IsRelocatable)
|
|
1095
|
+
_this.derived().m_storage.conservativeResize(other.size(),new_rows,new_cols);
|
|
1096
|
+
else
|
|
1097
|
+
Base::run(_this.derived(), new_rows, new_cols);
|
|
1005
1098
|
|
|
1006
1099
|
if (num_new_elements > 0)
|
|
1007
1100
|
_this.tail(num_new_elements) = other.tail(num_new_elements);
|
|
@@ -1012,7 +1105,7 @@ template<typename MatrixTypeA, typename MatrixTypeB, bool SwapPointers>
|
|
|
1012
1105
|
struct matrix_swap_impl
|
|
1013
1106
|
{
|
|
1014
1107
|
EIGEN_DEVICE_FUNC
|
|
1015
|
-
static
|
|
1108
|
+
static EIGEN_STRONG_INLINE void run(MatrixTypeA& a, MatrixTypeB& b)
|
|
1016
1109
|
{
|
|
1017
1110
|
a.base().swap(b);
|
|
1018
1111
|
}
|
|
@@ -23,25 +23,25 @@ struct traits<Product<Lhs, Rhs, Option> >
|
|
|
23
23
|
typedef typename remove_all<Rhs>::type RhsCleaned;
|
|
24
24
|
typedef traits<LhsCleaned> LhsTraits;
|
|
25
25
|
typedef traits<RhsCleaned> RhsTraits;
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
typedef MatrixXpr XprKind;
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
typedef typename ScalarBinaryOpTraits<typename traits<LhsCleaned>::Scalar, typename traits<RhsCleaned>::Scalar>::ReturnType Scalar;
|
|
30
30
|
typedef typename product_promote_storage_type<typename LhsTraits::StorageKind,
|
|
31
31
|
typename RhsTraits::StorageKind,
|
|
32
32
|
internal::product_type<Lhs,Rhs>::ret>::ret StorageKind;
|
|
33
33
|
typedef typename promote_index_type<typename LhsTraits::StorageIndex,
|
|
34
34
|
typename RhsTraits::StorageIndex>::type StorageIndex;
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
enum {
|
|
37
37
|
RowsAtCompileTime = LhsTraits::RowsAtCompileTime,
|
|
38
38
|
ColsAtCompileTime = RhsTraits::ColsAtCompileTime,
|
|
39
39
|
MaxRowsAtCompileTime = LhsTraits::MaxRowsAtCompileTime,
|
|
40
40
|
MaxColsAtCompileTime = RhsTraits::MaxColsAtCompileTime,
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
// FIXME: only needed by GeneralMatrixMatrixTriangular
|
|
43
43
|
InnerSize = EIGEN_SIZE_MIN_PREFER_FIXED(LhsTraits::ColsAtCompileTime, RhsTraits::RowsAtCompileTime),
|
|
44
|
-
|
|
44
|
+
|
|
45
45
|
// The storage order is somewhat arbitrary here. The correct one will be determined through the evaluator.
|
|
46
46
|
Flags = (MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1) ? RowMajorBit
|
|
47
47
|
: (MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1) ? 0
|
|
@@ -74,10 +74,10 @@ class Product : public ProductImpl<_Lhs,_Rhs,Option,
|
|
|
74
74
|
internal::product_type<_Lhs,_Rhs>::ret>::ret>
|
|
75
75
|
{
|
|
76
76
|
public:
|
|
77
|
-
|
|
77
|
+
|
|
78
78
|
typedef _Lhs Lhs;
|
|
79
79
|
typedef _Rhs Rhs;
|
|
80
|
-
|
|
80
|
+
|
|
81
81
|
typedef typename ProductImpl<
|
|
82
82
|
Lhs, Rhs, Option,
|
|
83
83
|
typename internal::product_promote_storage_type<typename internal::traits<Lhs>::StorageKind,
|
|
@@ -90,18 +90,23 @@ class Product : public ProductImpl<_Lhs,_Rhs,Option,
|
|
|
90
90
|
typedef typename internal::remove_all<LhsNested>::type LhsNestedCleaned;
|
|
91
91
|
typedef typename internal::remove_all<RhsNested>::type RhsNestedCleaned;
|
|
92
92
|
|
|
93
|
-
EIGEN_DEVICE_FUNC
|
|
93
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
94
|
+
Product(const Lhs& lhs, const Rhs& rhs) : m_lhs(lhs), m_rhs(rhs)
|
|
94
95
|
{
|
|
95
96
|
eigen_assert(lhs.cols() == rhs.rows()
|
|
96
97
|
&& "invalid matrix product"
|
|
97
98
|
&& "if you wanted a coeff-wise or a dot product use the respective explicit functions");
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
101
|
-
|
|
101
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
102
|
+
Index rows() const EIGEN_NOEXCEPT { return m_lhs.rows(); }
|
|
103
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
|
|
104
|
+
Index cols() const EIGEN_NOEXCEPT { return m_rhs.cols(); }
|
|
102
105
|
|
|
103
|
-
EIGEN_DEVICE_FUNC
|
|
104
|
-
|
|
106
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
107
|
+
const LhsNestedCleaned& lhs() const { return m_lhs; }
|
|
108
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
|
109
|
+
const RhsNestedCleaned& rhs() const { return m_rhs; }
|
|
105
110
|
|
|
106
111
|
protected:
|
|
107
112
|
|
|
@@ -110,13 +115,13 @@ class Product : public ProductImpl<_Lhs,_Rhs,Option,
|
|
|
110
115
|
};
|
|
111
116
|
|
|
112
117
|
namespace internal {
|
|
113
|
-
|
|
118
|
+
|
|
114
119
|
template<typename Lhs, typename Rhs, int Option, int ProductTag = internal::product_type<Lhs,Rhs>::ret>
|
|
115
120
|
class dense_product_base
|
|
116
121
|
: public internal::dense_xpr_base<Product<Lhs,Rhs,Option> >::type
|
|
117
122
|
{};
|
|
118
123
|
|
|
119
|
-
/**
|
|
124
|
+
/** Conversion to scalar for inner-products */
|
|
120
125
|
template<typename Lhs, typename Rhs, int Option>
|
|
121
126
|
class dense_product_base<Lhs, Rhs, Option, InnerProduct>
|
|
122
127
|
: public internal::dense_xpr_base<Product<Lhs,Rhs,Option> >::type
|
|
@@ -126,8 +131,8 @@ class dense_product_base<Lhs, Rhs, Option, InnerProduct>
|
|
|
126
131
|
public:
|
|
127
132
|
using Base::derived;
|
|
128
133
|
typedef typename Base::Scalar Scalar;
|
|
129
|
-
|
|
130
|
-
EIGEN_STRONG_INLINE operator const Scalar() const
|
|
134
|
+
|
|
135
|
+
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE operator const Scalar() const
|
|
131
136
|
{
|
|
132
137
|
return internal::evaluator<ProductXpr>(derived()).coeff(0,0);
|
|
133
138
|
}
|
|
@@ -148,25 +153,25 @@ class ProductImpl<Lhs,Rhs,Option,Dense>
|
|
|
148
153
|
: public internal::dense_product_base<Lhs,Rhs,Option>
|
|
149
154
|
{
|
|
150
155
|
typedef Product<Lhs, Rhs, Option> Derived;
|
|
151
|
-
|
|
156
|
+
|
|
152
157
|
public:
|
|
153
|
-
|
|
158
|
+
|
|
154
159
|
typedef typename internal::dense_product_base<Lhs, Rhs, Option> Base;
|
|
155
160
|
EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
|
|
156
161
|
protected:
|
|
157
162
|
enum {
|
|
158
|
-
IsOneByOne = (RowsAtCompileTime == 1 || RowsAtCompileTime == Dynamic) &&
|
|
163
|
+
IsOneByOne = (RowsAtCompileTime == 1 || RowsAtCompileTime == Dynamic) &&
|
|
159
164
|
(ColsAtCompileTime == 1 || ColsAtCompileTime == Dynamic),
|
|
160
165
|
EnableCoeff = IsOneByOne || Option==LazyProduct
|
|
161
166
|
};
|
|
162
|
-
|
|
167
|
+
|
|
163
168
|
public:
|
|
164
|
-
|
|
169
|
+
|
|
165
170
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar coeff(Index row, Index col) const
|
|
166
171
|
{
|
|
167
172
|
EIGEN_STATIC_ASSERT(EnableCoeff, THIS_METHOD_IS_ONLY_FOR_INNER_OR_LAZY_PRODUCTS);
|
|
168
173
|
eigen_assert( (Option==LazyProduct) || (this->rows() == 1 && this->cols() == 1) );
|
|
169
|
-
|
|
174
|
+
|
|
170
175
|
return internal::evaluator<Derived>(derived()).coeff(row,col);
|
|
171
176
|
}
|
|
172
177
|
|
|
@@ -174,11 +179,11 @@ class ProductImpl<Lhs,Rhs,Option,Dense>
|
|
|
174
179
|
{
|
|
175
180
|
EIGEN_STATIC_ASSERT(EnableCoeff, THIS_METHOD_IS_ONLY_FOR_INNER_OR_LAZY_PRODUCTS);
|
|
176
181
|
eigen_assert( (Option==LazyProduct) || (this->rows() == 1 && this->cols() == 1) );
|
|
177
|
-
|
|
182
|
+
|
|
178
183
|
return internal::evaluator<Derived>(derived()).coeff(i);
|
|
179
184
|
}
|
|
180
|
-
|
|
181
|
-
|
|
185
|
+
|
|
186
|
+
|
|
182
187
|
};
|
|
183
188
|
|
|
184
189
|
} // end namespace Eigen
|