ruby-eigen 0.0.9 → 0.0.10.pre1
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/LICENSE +22 -0
- data/README.md +21 -0
- data/ext/eigen/eigen3/COPYING.BSD +26 -0
- data/ext/eigen/eigen3/COPYING.MPL2 +373 -0
- data/ext/eigen/eigen3/COPYING.README +18 -0
- data/ext/eigen/eigen3/Eigen/Array +11 -0
- data/ext/eigen/eigen3/Eigen/Cholesky +32 -0
- data/ext/eigen/eigen3/Eigen/CholmodSupport +45 -0
- data/ext/eigen/eigen3/Eigen/Core +376 -0
- data/ext/eigen/eigen3/Eigen/Dense +7 -0
- data/ext/eigen/eigen3/Eigen/Eigen +2 -0
- data/ext/eigen/eigen3/Eigen/Eigen2Support +95 -0
- data/ext/eigen/eigen3/Eigen/Eigenvalues +48 -0
- data/ext/eigen/eigen3/Eigen/Geometry +63 -0
- data/ext/eigen/eigen3/Eigen/Householder +23 -0
- data/ext/eigen/eigen3/Eigen/IterativeLinearSolvers +40 -0
- data/ext/eigen/eigen3/Eigen/Jacobi +26 -0
- data/ext/eigen/eigen3/Eigen/LU +41 -0
- data/ext/eigen/eigen3/Eigen/LeastSquares +32 -0
- data/ext/eigen/eigen3/Eigen/MetisSupport +28 -0
- data/ext/eigen/eigen3/Eigen/PaStiXSupport +46 -0
- data/ext/eigen/eigen3/Eigen/PardisoSupport +30 -0
- data/ext/eigen/eigen3/Eigen/QR +45 -0
- data/ext/eigen/eigen3/Eigen/QtAlignedMalloc +34 -0
- data/ext/eigen/eigen3/Eigen/SPQRSupport +29 -0
- data/ext/eigen/eigen3/Eigen/SVD +37 -0
- data/ext/eigen/eigen3/Eigen/Sparse +27 -0
- data/ext/eigen/eigen3/Eigen/SparseCore +64 -0
- data/ext/eigen/eigen3/Eigen/SparseLU +49 -0
- data/ext/eigen/eigen3/Eigen/SparseQR +33 -0
- data/ext/eigen/eigen3/Eigen/StdDeque +27 -0
- data/ext/eigen/eigen3/Eigen/StdList +26 -0
- data/ext/eigen/eigen3/Eigen/StdVector +27 -0
- data/ext/eigen/eigen3/Eigen/SuperLUSupport +59 -0
- data/ext/eigen/eigen3/Eigen/UmfPackSupport +36 -0
- data/ext/eigen/eigen3/Eigen/src/Cholesky/LDLT.h +611 -0
- data/ext/eigen/eigen3/Eigen/src/Cholesky/LLT.h +498 -0
- data/ext/eigen/eigen3/Eigen/src/Cholesky/LLT_MKL.h +102 -0
- data/ext/eigen/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +607 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Array.h +323 -0
- data/ext/eigen/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
- data/ext/eigen/eigen3/Eigen/src/Core/ArrayWrapper.h +264 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Assign.h +590 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Assign_MKL.h +224 -0
- data/ext/eigen/eigen3/Eigen/src/Core/BandMatrix.h +334 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Block.h +406 -0
- data/ext/eigen/eigen3/Eigen/src/Core/BooleanRedux.h +154 -0
- data/ext/eigen/eigen3/Eigen/src/Core/CommaInitializer.h +154 -0
- data/ext/eigen/eigen3/Eigen/src/Core/CoreIterators.h +61 -0
- data/ext/eigen/eigen3/Eigen/src/Core/CwiseBinaryOp.h +230 -0
- data/ext/eigen/eigen3/Eigen/src/Core/CwiseNullaryOp.h +864 -0
- data/ext/eigen/eigen3/Eigen/src/Core/CwiseUnaryOp.h +126 -0
- data/ext/eigen/eigen3/Eigen/src/Core/CwiseUnaryView.h +139 -0
- data/ext/eigen/eigen3/Eigen/src/Core/DenseBase.h +521 -0
- data/ext/eigen/eigen3/Eigen/src/Core/DenseCoeffsBase.h +754 -0
- data/ext/eigen/eigen3/Eigen/src/Core/DenseStorage.h +434 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Diagonal.h +237 -0
- data/ext/eigen/eigen3/Eigen/src/Core/DiagonalMatrix.h +313 -0
- data/ext/eigen/eigen3/Eigen/src/Core/DiagonalProduct.h +131 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Dot.h +263 -0
- data/ext/eigen/eigen3/Eigen/src/Core/EigenBase.h +131 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Flagged.h +140 -0
- data/ext/eigen/eigen3/Eigen/src/Core/ForceAlignedAccess.h +146 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Functors.h +1026 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Fuzzy.h +150 -0
- data/ext/eigen/eigen3/Eigen/src/Core/GeneralProduct.h +635 -0
- data/ext/eigen/eigen3/Eigen/src/Core/GenericPacketMath.h +350 -0
- data/ext/eigen/eigen3/Eigen/src/Core/GlobalFunctions.h +92 -0
- data/ext/eigen/eigen3/Eigen/src/Core/IO.h +250 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Map.h +192 -0
- data/ext/eigen/eigen3/Eigen/src/Core/MapBase.h +247 -0
- data/ext/eigen/eigen3/Eigen/src/Core/MathFunctions.h +768 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Matrix.h +420 -0
- data/ext/eigen/eigen3/Eigen/src/Core/MatrixBase.h +563 -0
- data/ext/eigen/eigen3/Eigen/src/Core/NestByValue.h +111 -0
- data/ext/eigen/eigen3/Eigen/src/Core/NoAlias.h +134 -0
- data/ext/eigen/eigen3/Eigen/src/Core/NumTraits.h +150 -0
- data/ext/eigen/eigen3/Eigen/src/Core/PermutationMatrix.h +721 -0
- data/ext/eigen/eigen3/Eigen/src/Core/PlainObjectBase.h +822 -0
- data/ext/eigen/eigen3/Eigen/src/Core/ProductBase.h +290 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Random.h +152 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Redux.h +409 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Ref.h +278 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Replicate.h +177 -0
- data/ext/eigen/eigen3/Eigen/src/Core/ReturnByValue.h +99 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Reverse.h +224 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Select.h +162 -0
- data/ext/eigen/eigen3/Eigen/src/Core/SelfAdjointView.h +314 -0
- data/ext/eigen/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +191 -0
- data/ext/eigen/eigen3/Eigen/src/Core/SolveTriangular.h +260 -0
- data/ext/eigen/eigen3/Eigen/src/Core/StableNorm.h +203 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Stride.h +108 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Swap.h +126 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Transpose.h +419 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Transpositions.h +436 -0
- data/ext/eigen/eigen3/Eigen/src/Core/TriangularMatrix.h +839 -0
- data/ext/eigen/eigen3/Eigen/src/Core/VectorBlock.h +95 -0
- data/ext/eigen/eigen3/Eigen/src/Core/VectorwiseOp.h +642 -0
- data/ext/eigen/eigen3/Eigen/src/Core/Visitor.h +237 -0
- data/ext/eigen/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +217 -0
- data/ext/eigen/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +501 -0
- data/ext/eigen/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
- data/ext/eigen/eigen3/Eigen/src/Core/arch/NEON/Complex.h +253 -0
- data/ext/eigen/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +420 -0
- data/ext/eigen/eigen3/Eigen/src/Core/arch/SSE/Complex.h +442 -0
- data/ext/eigen/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +475 -0
- data/ext/eigen/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +649 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/CoeffBasedProduct.h +476 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1341 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +427 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +278 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h +146 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h +118 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +566 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixVector_MKL.h +131 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/Parallelizer.h +162 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +436 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h +295 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +281 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h +114 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +123 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +93 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +427 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h +309 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +348 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularMatrixVector_MKL.h +247 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +332 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_MKL.h +155 -0
- data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +139 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/BlasUtil.h +264 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/Constants.h +451 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +40 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +302 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/MKL_support.h +158 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/Macros.h +451 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/Memory.h +977 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/Meta.h +243 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +14 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/StaticAssert.h +208 -0
- data/ext/eigen/eigen3/Eigen/src/Core/util/XprHelper.h +469 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Block.h +126 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Cwise.h +192 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/CwiseOperators.h +298 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/AlignedBox.h +159 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/All.h +115 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/AngleAxis.h +214 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Hyperplane.h +254 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h +141 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Quaternion.h +495 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Rotation2D.h +145 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/RotationBase.h +123 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Scaling.h +167 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Transform.h +786 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Translation.h +184 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/LU.h +120 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Lazy.h +71 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/LeastSquares.h +169 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Macros.h +20 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/MathFunctions.h +57 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Memory.h +45 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Meta.h +75 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Minor.h +117 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/QR.h +67 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/SVD.h +637 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/TriangularSolver.h +42 -0
- data/ext/eigen/eigen3/Eigen/src/Eigen2Support/VectorBlock.h +94 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +341 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +456 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/ComplexSchur_MKL.h +94 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +607 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +350 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +227 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +373 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +160 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/RealQZ.h +624 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/RealSchur.h +525 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/RealSchur_MKL.h +83 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +801 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h +92 -0
- data/ext/eigen/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +557 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/AlignedBox.h +392 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/AngleAxis.h +233 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/EulerAngles.h +104 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/Homogeneous.h +307 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/Hyperplane.h +280 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/OrthoMethods.h +218 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/ParametrizedLine.h +195 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/Quaternion.h +776 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/Rotation2D.h +160 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/Scaling.h +166 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/Transform.h +1455 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/Translation.h +206 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/Umeyama.h +177 -0
- data/ext/eigen/eigen3/Eigen/src/Geometry/arch/Geometry_SSE.h +115 -0
- data/ext/eigen/eigen3/Eigen/src/Householder/BlockHouseholder.h +68 -0
- data/ext/eigen/eigen3/Eigen/src/Householder/Householder.h +171 -0
- data/ext/eigen/eigen3/Eigen/src/Householder/HouseholderSequence.h +441 -0
- data/ext/eigen/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -0
- data/ext/eigen/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +263 -0
- data/ext/eigen/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +256 -0
- data/ext/eigen/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +282 -0
- data/ext/eigen/eigen3/Eigen/src/Jacobi/Jacobi.h +433 -0
- data/ext/eigen/eigen3/Eigen/src/LU/Determinant.h +101 -0
- data/ext/eigen/eigen3/Eigen/src/LU/FullPivLU.h +751 -0
- data/ext/eigen/eigen3/Eigen/src/LU/Inverse.h +400 -0
- data/ext/eigen/eigen3/Eigen/src/LU/PartialPivLU.h +509 -0
- data/ext/eigen/eigen3/Eigen/src/LU/PartialPivLU_MKL.h +85 -0
- data/ext/eigen/eigen3/Eigen/src/LU/arch/Inverse_SSE.h +329 -0
- data/ext/eigen/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
- data/ext/eigen/eigen3/Eigen/src/OrderingMethods/Amd.h +444 -0
- data/ext/eigen/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1850 -0
- data/ext/eigen/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +721 -0
- data/ext/eigen/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +592 -0
- data/ext/eigen/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +580 -0
- data/ext/eigen/eigen3/Eigen/src/QR/ColPivHouseholderQR_MKL.h +99 -0
- data/ext/eigen/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +622 -0
- data/ext/eigen/eigen3/Eigen/src/QR/HouseholderQR.h +388 -0
- data/ext/eigen/eigen3/Eigen/src/QR/HouseholderQR_MKL.h +71 -0
- data/ext/eigen/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +338 -0
- data/ext/eigen/eigen3/Eigen/src/SVD/JacobiSVD.h +976 -0
- data/ext/eigen/eigen3/Eigen/src/SVD/JacobiSVD_MKL.h +92 -0
- data/ext/eigen/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +148 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +671 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +199 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/AmbiVector.h +373 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/CompressedStorage.h +233 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +245 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +181 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseBlock.h +537 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +325 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +163 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +311 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +196 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseDot.h +101 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +26 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1262 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +461 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparsePermutation.h +148 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseProduct.h +188 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseRedux.h +45 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +507 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +150 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseTranspose.h +63 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +179 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseUtil.h +172 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseVector.h +448 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseView.h +99 -0
- data/ext/eigen/eigen3/Eigen/src/SparseCore/TriangularSolver.h +334 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU.h +806 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +227 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +111 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +298 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +180 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +177 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +106 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +279 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +127 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +135 -0
- data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
- data/ext/eigen/eigen3/Eigen/src/SparseQR/SparseQR.h +714 -0
- data/ext/eigen/eigen3/Eigen/src/StlSupport/StdDeque.h +134 -0
- data/ext/eigen/eigen3/Eigen/src/StlSupport/StdList.h +114 -0
- data/ext/eigen/eigen3/Eigen/src/StlSupport/StdVector.h +126 -0
- data/ext/eigen/eigen3/Eigen/src/StlSupport/details.h +84 -0
- data/ext/eigen/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1026 -0
- data/ext/eigen/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +474 -0
- data/ext/eigen/eigen3/Eigen/src/misc/Image.h +84 -0
- data/ext/eigen/eigen3/Eigen/src/misc/Kernel.h +81 -0
- data/ext/eigen/eigen3/Eigen/src/misc/Solve.h +76 -0
- data/ext/eigen/eigen3/Eigen/src/misc/SparseSolve.h +128 -0
- data/ext/eigen/eigen3/Eigen/src/misc/blas.h +658 -0
- data/ext/eigen/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +253 -0
- data/ext/eigen/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +187 -0
- data/ext/eigen/eigen3/Eigen/src/plugins/BlockMethods.h +935 -0
- data/ext/eigen/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +46 -0
- data/ext/eigen/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +172 -0
- data/ext/eigen/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +143 -0
- data/ext/eigen/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +52 -0
- data/ext/eigen/eigen3/signature_of_eigen3_matrix_library +1 -0
- data/ext/eigen/eigen_wrap.cxx +19420 -10396
- data/ext/eigen/extconf.rb +37 -2
- data/lib/eigen.rb +146 -3
- metadata +294 -7
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
|
|
5
|
+
// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
|
|
6
|
+
//
|
|
7
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
8
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
9
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
10
|
+
|
|
11
|
+
#ifndef EIGEN_META_H
|
|
12
|
+
#define EIGEN_META_H
|
|
13
|
+
|
|
14
|
+
namespace Eigen {
|
|
15
|
+
|
|
16
|
+
namespace internal {
|
|
17
|
+
|
|
18
|
+
/** \internal
|
|
19
|
+
* \file Meta.h
|
|
20
|
+
* This file contains generic metaprogramming classes which are not specifically related to Eigen.
|
|
21
|
+
* \note In case you wonder, yes we're aware that Boost already provides all these features,
|
|
22
|
+
* we however don't want to add a dependency to Boost.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
struct true_type { enum { value = 1 }; };
|
|
26
|
+
struct false_type { enum { value = 0 }; };
|
|
27
|
+
|
|
28
|
+
template<bool Condition, typename Then, typename Else>
|
|
29
|
+
struct conditional { typedef Then type; };
|
|
30
|
+
|
|
31
|
+
template<typename Then, typename Else>
|
|
32
|
+
struct conditional <false, Then, Else> { typedef Else type; };
|
|
33
|
+
|
|
34
|
+
template<typename T, typename U> struct is_same { enum { value = 0 }; };
|
|
35
|
+
template<typename T> struct is_same<T,T> { enum { value = 1 }; };
|
|
36
|
+
|
|
37
|
+
template<typename T> struct remove_reference { typedef T type; };
|
|
38
|
+
template<typename T> struct remove_reference<T&> { typedef T type; };
|
|
39
|
+
|
|
40
|
+
template<typename T> struct remove_pointer { typedef T type; };
|
|
41
|
+
template<typename T> struct remove_pointer<T*> { typedef T type; };
|
|
42
|
+
template<typename T> struct remove_pointer<T*const> { typedef T type; };
|
|
43
|
+
|
|
44
|
+
template <class T> struct remove_const { typedef T type; };
|
|
45
|
+
template <class T> struct remove_const<const T> { typedef T type; };
|
|
46
|
+
template <class T> struct remove_const<const T[]> { typedef T type[]; };
|
|
47
|
+
template <class T, unsigned int Size> struct remove_const<const T[Size]> { typedef T type[Size]; };
|
|
48
|
+
|
|
49
|
+
template<typename T> struct remove_all { typedef T type; };
|
|
50
|
+
template<typename T> struct remove_all<const T> { typedef typename remove_all<T>::type type; };
|
|
51
|
+
template<typename T> struct remove_all<T const&> { typedef typename remove_all<T>::type type; };
|
|
52
|
+
template<typename T> struct remove_all<T&> { typedef typename remove_all<T>::type type; };
|
|
53
|
+
template<typename T> struct remove_all<T const*> { typedef typename remove_all<T>::type type; };
|
|
54
|
+
template<typename T> struct remove_all<T*> { typedef typename remove_all<T>::type type; };
|
|
55
|
+
|
|
56
|
+
template<typename T> struct is_arithmetic { enum { value = false }; };
|
|
57
|
+
template<> struct is_arithmetic<float> { enum { value = true }; };
|
|
58
|
+
template<> struct is_arithmetic<double> { enum { value = true }; };
|
|
59
|
+
template<> struct is_arithmetic<long double> { enum { value = true }; };
|
|
60
|
+
template<> struct is_arithmetic<bool> { enum { value = true }; };
|
|
61
|
+
template<> struct is_arithmetic<char> { enum { value = true }; };
|
|
62
|
+
template<> struct is_arithmetic<signed char> { enum { value = true }; };
|
|
63
|
+
template<> struct is_arithmetic<unsigned char> { enum { value = true }; };
|
|
64
|
+
template<> struct is_arithmetic<signed short> { enum { value = true }; };
|
|
65
|
+
template<> struct is_arithmetic<unsigned short>{ enum { value = true }; };
|
|
66
|
+
template<> struct is_arithmetic<signed int> { enum { value = true }; };
|
|
67
|
+
template<> struct is_arithmetic<unsigned int> { enum { value = true }; };
|
|
68
|
+
template<> struct is_arithmetic<signed long> { enum { value = true }; };
|
|
69
|
+
template<> struct is_arithmetic<unsigned long> { enum { value = true }; };
|
|
70
|
+
|
|
71
|
+
template <typename T> struct add_const { typedef const T type; };
|
|
72
|
+
template <typename T> struct add_const<T&> { typedef T& type; };
|
|
73
|
+
|
|
74
|
+
template <typename T> struct is_const { enum { value = 0 }; };
|
|
75
|
+
template <typename T> struct is_const<T const> { enum { value = 1 }; };
|
|
76
|
+
|
|
77
|
+
template<typename T> struct add_const_on_value_type { typedef const T type; };
|
|
78
|
+
template<typename T> struct add_const_on_value_type<T&> { typedef T const& type; };
|
|
79
|
+
template<typename T> struct add_const_on_value_type<T*> { typedef T const* type; };
|
|
80
|
+
template<typename T> struct add_const_on_value_type<T* const> { typedef T const* const type; };
|
|
81
|
+
template<typename T> struct add_const_on_value_type<T const* const> { typedef T const* const type; };
|
|
82
|
+
|
|
83
|
+
/** \internal Allows to enable/disable an overload
|
|
84
|
+
* according to a compile time condition.
|
|
85
|
+
*/
|
|
86
|
+
template<bool Condition, typename T> struct enable_if;
|
|
87
|
+
|
|
88
|
+
template<typename T> struct enable_if<true,T>
|
|
89
|
+
{ typedef T type; };
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
/** \internal
|
|
94
|
+
* A base class do disable default copy ctor and copy assignement operator.
|
|
95
|
+
*/
|
|
96
|
+
class noncopyable
|
|
97
|
+
{
|
|
98
|
+
noncopyable(const noncopyable&);
|
|
99
|
+
const noncopyable& operator=(const noncopyable&);
|
|
100
|
+
protected:
|
|
101
|
+
noncopyable() {}
|
|
102
|
+
~noncopyable() {}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
/** \internal
|
|
107
|
+
* Convenient struct to get the result type of a unary or binary functor.
|
|
108
|
+
*
|
|
109
|
+
* It supports both the current STL mechanism (using the result_type member) as well as
|
|
110
|
+
* upcoming next STL generation (using a templated result member).
|
|
111
|
+
* If none of these members is provided, then the type of the first argument is returned. FIXME, that behavior is a pretty bad hack.
|
|
112
|
+
*/
|
|
113
|
+
template<typename T> struct result_of {};
|
|
114
|
+
|
|
115
|
+
struct has_none {int a[1];};
|
|
116
|
+
struct has_std_result_type {int a[2];};
|
|
117
|
+
struct has_tr1_result {int a[3];};
|
|
118
|
+
|
|
119
|
+
template<typename Func, typename ArgType, int SizeOf=sizeof(has_none)>
|
|
120
|
+
struct unary_result_of_select {typedef ArgType type;};
|
|
121
|
+
|
|
122
|
+
template<typename Func, typename ArgType>
|
|
123
|
+
struct unary_result_of_select<Func, ArgType, sizeof(has_std_result_type)> {typedef typename Func::result_type type;};
|
|
124
|
+
|
|
125
|
+
template<typename Func, typename ArgType>
|
|
126
|
+
struct unary_result_of_select<Func, ArgType, sizeof(has_tr1_result)> {typedef typename Func::template result<Func(ArgType)>::type type;};
|
|
127
|
+
|
|
128
|
+
template<typename Func, typename ArgType>
|
|
129
|
+
struct result_of<Func(ArgType)> {
|
|
130
|
+
template<typename T>
|
|
131
|
+
static has_std_result_type testFunctor(T const *, typename T::result_type const * = 0);
|
|
132
|
+
template<typename T>
|
|
133
|
+
static has_tr1_result testFunctor(T const *, typename T::template result<T(ArgType)>::type const * = 0);
|
|
134
|
+
static has_none testFunctor(...);
|
|
135
|
+
|
|
136
|
+
// note that the following indirection is needed for gcc-3.3
|
|
137
|
+
enum {FunctorType = sizeof(testFunctor(static_cast<Func*>(0)))};
|
|
138
|
+
typedef typename unary_result_of_select<Func, ArgType, FunctorType>::type type;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
template<typename Func, typename ArgType0, typename ArgType1, int SizeOf=sizeof(has_none)>
|
|
142
|
+
struct binary_result_of_select {typedef ArgType0 type;};
|
|
143
|
+
|
|
144
|
+
template<typename Func, typename ArgType0, typename ArgType1>
|
|
145
|
+
struct binary_result_of_select<Func, ArgType0, ArgType1, sizeof(has_std_result_type)>
|
|
146
|
+
{typedef typename Func::result_type type;};
|
|
147
|
+
|
|
148
|
+
template<typename Func, typename ArgType0, typename ArgType1>
|
|
149
|
+
struct binary_result_of_select<Func, ArgType0, ArgType1, sizeof(has_tr1_result)>
|
|
150
|
+
{typedef typename Func::template result<Func(ArgType0,ArgType1)>::type type;};
|
|
151
|
+
|
|
152
|
+
template<typename Func, typename ArgType0, typename ArgType1>
|
|
153
|
+
struct result_of<Func(ArgType0,ArgType1)> {
|
|
154
|
+
template<typename T>
|
|
155
|
+
static has_std_result_type testFunctor(T const *, typename T::result_type const * = 0);
|
|
156
|
+
template<typename T>
|
|
157
|
+
static has_tr1_result testFunctor(T const *, typename T::template result<T(ArgType0,ArgType1)>::type const * = 0);
|
|
158
|
+
static has_none testFunctor(...);
|
|
159
|
+
|
|
160
|
+
// note that the following indirection is needed for gcc-3.3
|
|
161
|
+
enum {FunctorType = sizeof(testFunctor(static_cast<Func*>(0)))};
|
|
162
|
+
typedef typename binary_result_of_select<Func, ArgType0, ArgType1, FunctorType>::type type;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
/** \internal In short, it computes int(sqrt(\a Y)) with \a Y an integer.
|
|
166
|
+
* Usage example: \code meta_sqrt<1023>::ret \endcode
|
|
167
|
+
*/
|
|
168
|
+
template<int Y,
|
|
169
|
+
int InfX = 0,
|
|
170
|
+
int SupX = ((Y==1) ? 1 : Y/2),
|
|
171
|
+
bool Done = ((SupX-InfX)<=1 ? true : ((SupX*SupX <= Y) && ((SupX+1)*(SupX+1) > Y))) >
|
|
172
|
+
// use ?: instead of || just to shut up a stupid gcc 4.3 warning
|
|
173
|
+
class meta_sqrt
|
|
174
|
+
{
|
|
175
|
+
enum {
|
|
176
|
+
MidX = (InfX+SupX)/2,
|
|
177
|
+
TakeInf = MidX*MidX > Y ? 1 : 0,
|
|
178
|
+
NewInf = int(TakeInf) ? InfX : int(MidX),
|
|
179
|
+
NewSup = int(TakeInf) ? int(MidX) : SupX
|
|
180
|
+
};
|
|
181
|
+
public:
|
|
182
|
+
enum { ret = meta_sqrt<Y,NewInf,NewSup>::ret };
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
template<int Y, int InfX, int SupX>
|
|
186
|
+
class meta_sqrt<Y, InfX, SupX, true> { public: enum { ret = (SupX*SupX <= Y) ? SupX : InfX }; };
|
|
187
|
+
|
|
188
|
+
/** \internal determines whether the product of two numeric types is allowed and what the return type is */
|
|
189
|
+
template<typename T, typename U> struct scalar_product_traits
|
|
190
|
+
{
|
|
191
|
+
enum { Defined = 0 };
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
template<typename T> struct scalar_product_traits<T,T>
|
|
195
|
+
{
|
|
196
|
+
enum {
|
|
197
|
+
// Cost = NumTraits<T>::MulCost,
|
|
198
|
+
Defined = 1
|
|
199
|
+
};
|
|
200
|
+
typedef T ReturnType;
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
template<typename T> struct scalar_product_traits<T,std::complex<T> >
|
|
204
|
+
{
|
|
205
|
+
enum {
|
|
206
|
+
// Cost = 2*NumTraits<T>::MulCost,
|
|
207
|
+
Defined = 1
|
|
208
|
+
};
|
|
209
|
+
typedef std::complex<T> ReturnType;
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
template<typename T> struct scalar_product_traits<std::complex<T>, T>
|
|
213
|
+
{
|
|
214
|
+
enum {
|
|
215
|
+
// Cost = 2*NumTraits<T>::MulCost,
|
|
216
|
+
Defined = 1
|
|
217
|
+
};
|
|
218
|
+
typedef std::complex<T> ReturnType;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
// FIXME quick workaround around current limitation of result_of
|
|
222
|
+
// template<typename Scalar, typename ArgType0, typename ArgType1>
|
|
223
|
+
// struct result_of<scalar_product_op<Scalar>(ArgType0,ArgType1)> {
|
|
224
|
+
// typedef typename scalar_product_traits<typename remove_all<ArgType0>::type, typename remove_all<ArgType1>::type>::ReturnType type;
|
|
225
|
+
// };
|
|
226
|
+
|
|
227
|
+
template<typename T> struct is_diagonal
|
|
228
|
+
{ enum { ret = false }; };
|
|
229
|
+
|
|
230
|
+
template<typename T> struct is_diagonal<DiagonalBase<T> >
|
|
231
|
+
{ enum { ret = true }; };
|
|
232
|
+
|
|
233
|
+
template<typename T> struct is_diagonal<DiagonalWrapper<T> >
|
|
234
|
+
{ enum { ret = true }; };
|
|
235
|
+
|
|
236
|
+
template<typename T, int S> struct is_diagonal<DiagonalMatrix<T,S> >
|
|
237
|
+
{ enum { ret = true }; };
|
|
238
|
+
|
|
239
|
+
} // end namespace internal
|
|
240
|
+
|
|
241
|
+
} // end namespace Eigen
|
|
242
|
+
|
|
243
|
+
#endif // EIGEN_META_H
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#ifdef EIGEN_WARNINGS_DISABLED
|
|
2
|
+
#undef EIGEN_WARNINGS_DISABLED
|
|
3
|
+
|
|
4
|
+
#ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS
|
|
5
|
+
#ifdef _MSC_VER
|
|
6
|
+
#pragma warning( pop )
|
|
7
|
+
#elif defined __INTEL_COMPILER
|
|
8
|
+
#pragma warning pop
|
|
9
|
+
#elif defined __clang__
|
|
10
|
+
#pragma clang diagnostic pop
|
|
11
|
+
#endif
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#endif // EIGEN_WARNINGS_DISABLED
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
// This file is part of Eigen, a lightweight C++ template library
|
|
2
|
+
// for linear algebra.
|
|
3
|
+
//
|
|
4
|
+
// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
|
|
5
|
+
// Copyright (C) 2008 Benoit Jacob <jacob.benoit.1@gmail.com>
|
|
6
|
+
//
|
|
7
|
+
// This Source Code Form is subject to the terms of the Mozilla
|
|
8
|
+
// Public License v. 2.0. If a copy of the MPL was not distributed
|
|
9
|
+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
10
|
+
|
|
11
|
+
#ifndef EIGEN_STATIC_ASSERT_H
|
|
12
|
+
#define EIGEN_STATIC_ASSERT_H
|
|
13
|
+
|
|
14
|
+
/* Some notes on Eigen's static assertion mechanism:
|
|
15
|
+
*
|
|
16
|
+
* - in EIGEN_STATIC_ASSERT(CONDITION,MSG) the parameter CONDITION must be a compile time boolean
|
|
17
|
+
* expression, and MSG an enum listed in struct internal::static_assertion<true>
|
|
18
|
+
*
|
|
19
|
+
* - define EIGEN_NO_STATIC_ASSERT to disable them (and save compilation time)
|
|
20
|
+
* in that case, the static assertion is converted to the following runtime assert:
|
|
21
|
+
* eigen_assert(CONDITION && "MSG")
|
|
22
|
+
*
|
|
23
|
+
* - currently EIGEN_STATIC_ASSERT can only be used in function scope
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
#ifndef EIGEN_NO_STATIC_ASSERT
|
|
28
|
+
|
|
29
|
+
#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (defined(_MSC_VER) && (_MSC_VER >= 1600))
|
|
30
|
+
|
|
31
|
+
// if native static_assert is enabled, let's use it
|
|
32
|
+
#define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);
|
|
33
|
+
|
|
34
|
+
#else // not CXX0X
|
|
35
|
+
|
|
36
|
+
namespace Eigen {
|
|
37
|
+
|
|
38
|
+
namespace internal {
|
|
39
|
+
|
|
40
|
+
template<bool condition>
|
|
41
|
+
struct static_assertion {};
|
|
42
|
+
|
|
43
|
+
template<>
|
|
44
|
+
struct static_assertion<true>
|
|
45
|
+
{
|
|
46
|
+
enum {
|
|
47
|
+
YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX,
|
|
48
|
+
YOU_MIXED_VECTORS_OF_DIFFERENT_SIZES,
|
|
49
|
+
YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES,
|
|
50
|
+
THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE,
|
|
51
|
+
THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE,
|
|
52
|
+
THIS_METHOD_IS_ONLY_FOR_OBJECTS_OF_A_SPECIFIC_SIZE,
|
|
53
|
+
YOU_MADE_A_PROGRAMMING_MISTAKE,
|
|
54
|
+
EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT,
|
|
55
|
+
EIGEN_INTERNAL_COMPILATION_ERROR_OR_YOU_MADE_A_PROGRAMMING_MISTAKE,
|
|
56
|
+
YOU_CALLED_A_FIXED_SIZE_METHOD_ON_A_DYNAMIC_SIZE_MATRIX_OR_VECTOR,
|
|
57
|
+
YOU_CALLED_A_DYNAMIC_SIZE_METHOD_ON_A_FIXED_SIZE_MATRIX_OR_VECTOR,
|
|
58
|
+
UNALIGNED_LOAD_AND_STORE_OPERATIONS_UNIMPLEMENTED_ON_ALTIVEC,
|
|
59
|
+
THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES,
|
|
60
|
+
FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED,
|
|
61
|
+
NUMERIC_TYPE_MUST_BE_REAL,
|
|
62
|
+
COEFFICIENT_WRITE_ACCESS_TO_SELFADJOINT_NOT_SUPPORTED,
|
|
63
|
+
WRITING_TO_TRIANGULAR_PART_WITH_UNIT_DIAGONAL_IS_NOT_SUPPORTED,
|
|
64
|
+
THIS_METHOD_IS_ONLY_FOR_FIXED_SIZE,
|
|
65
|
+
INVALID_MATRIX_PRODUCT,
|
|
66
|
+
INVALID_VECTOR_VECTOR_PRODUCT__IF_YOU_WANTED_A_DOT_OR_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTIONS,
|
|
67
|
+
INVALID_MATRIX_PRODUCT__IF_YOU_WANTED_A_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTION,
|
|
68
|
+
YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY,
|
|
69
|
+
THIS_METHOD_IS_ONLY_FOR_COLUMN_MAJOR_MATRICES,
|
|
70
|
+
THIS_METHOD_IS_ONLY_FOR_ROW_MAJOR_MATRICES,
|
|
71
|
+
INVALID_MATRIX_TEMPLATE_PARAMETERS,
|
|
72
|
+
INVALID_MATRIXBASE_TEMPLATE_PARAMETERS,
|
|
73
|
+
BOTH_MATRICES_MUST_HAVE_THE_SAME_STORAGE_ORDER,
|
|
74
|
+
THIS_METHOD_IS_ONLY_FOR_DIAGONAL_MATRIX,
|
|
75
|
+
THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE,
|
|
76
|
+
THIS_METHOD_IS_ONLY_FOR_EXPRESSIONS_WITH_DIRECT_MEMORY_ACCESS_SUCH_AS_MAP_OR_PLAIN_MATRICES,
|
|
77
|
+
YOU_ALREADY_SPECIFIED_THIS_STRIDE,
|
|
78
|
+
INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION,
|
|
79
|
+
THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD,
|
|
80
|
+
PACKET_ACCESS_REQUIRES_TO_HAVE_INNER_STRIDE_FIXED_TO_1,
|
|
81
|
+
THIS_METHOD_IS_ONLY_FOR_SPECIFIC_TRANSFORMATIONS,
|
|
82
|
+
YOU_CANNOT_MIX_ARRAYS_AND_MATRICES,
|
|
83
|
+
YOU_PERFORMED_AN_INVALID_TRANSFORMATION_CONVERSION,
|
|
84
|
+
THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY,
|
|
85
|
+
YOU_ARE_TRYING_TO_USE_AN_INDEX_BASED_ACCESSOR_ON_AN_EXPRESSION_THAT_DOES_NOT_SUPPORT_THAT,
|
|
86
|
+
THIS_METHOD_IS_ONLY_FOR_1x1_EXPRESSIONS,
|
|
87
|
+
THIS_METHOD_IS_ONLY_FOR_EXPRESSIONS_OF_BOOL,
|
|
88
|
+
THIS_METHOD_IS_ONLY_FOR_ARRAYS_NOT_MATRICES,
|
|
89
|
+
YOU_PASSED_A_ROW_VECTOR_BUT_A_COLUMN_VECTOR_WAS_EXPECTED,
|
|
90
|
+
YOU_PASSED_A_COLUMN_VECTOR_BUT_A_ROW_VECTOR_WAS_EXPECTED,
|
|
91
|
+
THE_INDEX_TYPE_MUST_BE_A_SIGNED_TYPE,
|
|
92
|
+
THE_STORAGE_ORDER_OF_BOTH_SIDES_MUST_MATCH,
|
|
93
|
+
OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG,
|
|
94
|
+
IMPLICIT_CONVERSION_TO_SCALAR_IS_FOR_INNER_PRODUCT_ONLY,
|
|
95
|
+
STORAGE_LAYOUT_DOES_NOT_MATCH
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
} // end namespace internal
|
|
100
|
+
|
|
101
|
+
} // end namespace Eigen
|
|
102
|
+
|
|
103
|
+
// Specialized implementation for MSVC to avoid "conditional
|
|
104
|
+
// expression is constant" warnings. This implementation doesn't
|
|
105
|
+
// appear to work under GCC, hence the multiple implementations.
|
|
106
|
+
#ifdef _MSC_VER
|
|
107
|
+
|
|
108
|
+
#define EIGEN_STATIC_ASSERT(CONDITION,MSG) \
|
|
109
|
+
{Eigen::internal::static_assertion<bool(CONDITION)>::MSG;}
|
|
110
|
+
|
|
111
|
+
#else
|
|
112
|
+
|
|
113
|
+
#define EIGEN_STATIC_ASSERT(CONDITION,MSG) \
|
|
114
|
+
if (Eigen::internal::static_assertion<bool(CONDITION)>::MSG) {}
|
|
115
|
+
|
|
116
|
+
#endif
|
|
117
|
+
|
|
118
|
+
#endif // not CXX0X
|
|
119
|
+
|
|
120
|
+
#else // EIGEN_NO_STATIC_ASSERT
|
|
121
|
+
|
|
122
|
+
#define EIGEN_STATIC_ASSERT(CONDITION,MSG) eigen_assert((CONDITION) && #MSG);
|
|
123
|
+
|
|
124
|
+
#endif // EIGEN_NO_STATIC_ASSERT
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
// static assertion failing if the type \a TYPE is not a vector type
|
|
128
|
+
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE) \
|
|
129
|
+
EIGEN_STATIC_ASSERT(TYPE::IsVectorAtCompileTime, \
|
|
130
|
+
YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX)
|
|
131
|
+
|
|
132
|
+
// static assertion failing if the type \a TYPE is not fixed-size
|
|
133
|
+
#define EIGEN_STATIC_ASSERT_FIXED_SIZE(TYPE) \
|
|
134
|
+
EIGEN_STATIC_ASSERT(TYPE::SizeAtCompileTime!=Eigen::Dynamic, \
|
|
135
|
+
YOU_CALLED_A_FIXED_SIZE_METHOD_ON_A_DYNAMIC_SIZE_MATRIX_OR_VECTOR)
|
|
136
|
+
|
|
137
|
+
// static assertion failing if the type \a TYPE is not dynamic-size
|
|
138
|
+
#define EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(TYPE) \
|
|
139
|
+
EIGEN_STATIC_ASSERT(TYPE::SizeAtCompileTime==Eigen::Dynamic, \
|
|
140
|
+
YOU_CALLED_A_DYNAMIC_SIZE_METHOD_ON_A_FIXED_SIZE_MATRIX_OR_VECTOR)
|
|
141
|
+
|
|
142
|
+
// static assertion failing if the type \a TYPE is not a vector type of the given size
|
|
143
|
+
#define EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(TYPE, SIZE) \
|
|
144
|
+
EIGEN_STATIC_ASSERT(TYPE::IsVectorAtCompileTime && TYPE::SizeAtCompileTime==SIZE, \
|
|
145
|
+
THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE)
|
|
146
|
+
|
|
147
|
+
// static assertion failing if the type \a TYPE is not a vector type of the given size
|
|
148
|
+
#define EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(TYPE, ROWS, COLS) \
|
|
149
|
+
EIGEN_STATIC_ASSERT(TYPE::RowsAtCompileTime==ROWS && TYPE::ColsAtCompileTime==COLS, \
|
|
150
|
+
THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE)
|
|
151
|
+
|
|
152
|
+
// static assertion failing if the two vector expression types are not compatible (same fixed-size or dynamic size)
|
|
153
|
+
#define EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(TYPE0,TYPE1) \
|
|
154
|
+
EIGEN_STATIC_ASSERT( \
|
|
155
|
+
(int(TYPE0::SizeAtCompileTime)==Eigen::Dynamic \
|
|
156
|
+
|| int(TYPE1::SizeAtCompileTime)==Eigen::Dynamic \
|
|
157
|
+
|| int(TYPE0::SizeAtCompileTime)==int(TYPE1::SizeAtCompileTime)),\
|
|
158
|
+
YOU_MIXED_VECTORS_OF_DIFFERENT_SIZES)
|
|
159
|
+
|
|
160
|
+
#define EIGEN_PREDICATE_SAME_MATRIX_SIZE(TYPE0,TYPE1) \
|
|
161
|
+
( \
|
|
162
|
+
(int(TYPE0::SizeAtCompileTime)==0 && int(TYPE1::SizeAtCompileTime)==0) \
|
|
163
|
+
|| (\
|
|
164
|
+
(int(TYPE0::RowsAtCompileTime)==Eigen::Dynamic \
|
|
165
|
+
|| int(TYPE1::RowsAtCompileTime)==Eigen::Dynamic \
|
|
166
|
+
|| int(TYPE0::RowsAtCompileTime)==int(TYPE1::RowsAtCompileTime)) \
|
|
167
|
+
&& (int(TYPE0::ColsAtCompileTime)==Eigen::Dynamic \
|
|
168
|
+
|| int(TYPE1::ColsAtCompileTime)==Eigen::Dynamic \
|
|
169
|
+
|| int(TYPE0::ColsAtCompileTime)==int(TYPE1::ColsAtCompileTime))\
|
|
170
|
+
) \
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
#ifdef EIGEN2_SUPPORT
|
|
174
|
+
#define EIGEN_STATIC_ASSERT_NON_INTEGER(TYPE) \
|
|
175
|
+
eigen_assert(!NumTraits<Scalar>::IsInteger);
|
|
176
|
+
#else
|
|
177
|
+
#define EIGEN_STATIC_ASSERT_NON_INTEGER(TYPE) \
|
|
178
|
+
EIGEN_STATIC_ASSERT(!NumTraits<TYPE>::IsInteger, THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES)
|
|
179
|
+
#endif
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
// static assertion failing if it is guaranteed at compile-time that the two matrix expression types have different sizes
|
|
183
|
+
#define EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(TYPE0,TYPE1) \
|
|
184
|
+
EIGEN_STATIC_ASSERT( \
|
|
185
|
+
EIGEN_PREDICATE_SAME_MATRIX_SIZE(TYPE0,TYPE1),\
|
|
186
|
+
YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES)
|
|
187
|
+
|
|
188
|
+
#define EIGEN_STATIC_ASSERT_SIZE_1x1(TYPE) \
|
|
189
|
+
EIGEN_STATIC_ASSERT((TYPE::RowsAtCompileTime == 1 || TYPE::RowsAtCompileTime == Dynamic) && \
|
|
190
|
+
(TYPE::ColsAtCompileTime == 1 || TYPE::ColsAtCompileTime == Dynamic), \
|
|
191
|
+
THIS_METHOD_IS_ONLY_FOR_1x1_EXPRESSIONS)
|
|
192
|
+
|
|
193
|
+
#define EIGEN_STATIC_ASSERT_LVALUE(Derived) \
|
|
194
|
+
EIGEN_STATIC_ASSERT(internal::is_lvalue<Derived>::value, \
|
|
195
|
+
THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY)
|
|
196
|
+
|
|
197
|
+
#define EIGEN_STATIC_ASSERT_ARRAYXPR(Derived) \
|
|
198
|
+
EIGEN_STATIC_ASSERT((internal::is_same<typename internal::traits<Derived>::XprKind, ArrayXpr>::value), \
|
|
199
|
+
THIS_METHOD_IS_ONLY_FOR_ARRAYS_NOT_MATRICES)
|
|
200
|
+
|
|
201
|
+
#define EIGEN_STATIC_ASSERT_SAME_XPR_KIND(Derived1, Derived2) \
|
|
202
|
+
EIGEN_STATIC_ASSERT((internal::is_same<typename internal::traits<Derived1>::XprKind, \
|
|
203
|
+
typename internal::traits<Derived2>::XprKind \
|
|
204
|
+
>::value), \
|
|
205
|
+
YOU_CANNOT_MIX_ARRAYS_AND_MATRICES)
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
#endif // EIGEN_STATIC_ASSERT_H
|