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.
Files changed (293) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +22 -0
  3. data/README.md +21 -0
  4. data/ext/eigen/eigen3/COPYING.BSD +26 -0
  5. data/ext/eigen/eigen3/COPYING.MPL2 +373 -0
  6. data/ext/eigen/eigen3/COPYING.README +18 -0
  7. data/ext/eigen/eigen3/Eigen/Array +11 -0
  8. data/ext/eigen/eigen3/Eigen/Cholesky +32 -0
  9. data/ext/eigen/eigen3/Eigen/CholmodSupport +45 -0
  10. data/ext/eigen/eigen3/Eigen/Core +376 -0
  11. data/ext/eigen/eigen3/Eigen/Dense +7 -0
  12. data/ext/eigen/eigen3/Eigen/Eigen +2 -0
  13. data/ext/eigen/eigen3/Eigen/Eigen2Support +95 -0
  14. data/ext/eigen/eigen3/Eigen/Eigenvalues +48 -0
  15. data/ext/eigen/eigen3/Eigen/Geometry +63 -0
  16. data/ext/eigen/eigen3/Eigen/Householder +23 -0
  17. data/ext/eigen/eigen3/Eigen/IterativeLinearSolvers +40 -0
  18. data/ext/eigen/eigen3/Eigen/Jacobi +26 -0
  19. data/ext/eigen/eigen3/Eigen/LU +41 -0
  20. data/ext/eigen/eigen3/Eigen/LeastSquares +32 -0
  21. data/ext/eigen/eigen3/Eigen/MetisSupport +28 -0
  22. data/ext/eigen/eigen3/Eigen/PaStiXSupport +46 -0
  23. data/ext/eigen/eigen3/Eigen/PardisoSupport +30 -0
  24. data/ext/eigen/eigen3/Eigen/QR +45 -0
  25. data/ext/eigen/eigen3/Eigen/QtAlignedMalloc +34 -0
  26. data/ext/eigen/eigen3/Eigen/SPQRSupport +29 -0
  27. data/ext/eigen/eigen3/Eigen/SVD +37 -0
  28. data/ext/eigen/eigen3/Eigen/Sparse +27 -0
  29. data/ext/eigen/eigen3/Eigen/SparseCore +64 -0
  30. data/ext/eigen/eigen3/Eigen/SparseLU +49 -0
  31. data/ext/eigen/eigen3/Eigen/SparseQR +33 -0
  32. data/ext/eigen/eigen3/Eigen/StdDeque +27 -0
  33. data/ext/eigen/eigen3/Eigen/StdList +26 -0
  34. data/ext/eigen/eigen3/Eigen/StdVector +27 -0
  35. data/ext/eigen/eigen3/Eigen/SuperLUSupport +59 -0
  36. data/ext/eigen/eigen3/Eigen/UmfPackSupport +36 -0
  37. data/ext/eigen/eigen3/Eigen/src/Cholesky/LDLT.h +611 -0
  38. data/ext/eigen/eigen3/Eigen/src/Cholesky/LLT.h +498 -0
  39. data/ext/eigen/eigen3/Eigen/src/Cholesky/LLT_MKL.h +102 -0
  40. data/ext/eigen/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +607 -0
  41. data/ext/eigen/eigen3/Eigen/src/Core/Array.h +323 -0
  42. data/ext/eigen/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
  43. data/ext/eigen/eigen3/Eigen/src/Core/ArrayWrapper.h +264 -0
  44. data/ext/eigen/eigen3/Eigen/src/Core/Assign.h +590 -0
  45. data/ext/eigen/eigen3/Eigen/src/Core/Assign_MKL.h +224 -0
  46. data/ext/eigen/eigen3/Eigen/src/Core/BandMatrix.h +334 -0
  47. data/ext/eigen/eigen3/Eigen/src/Core/Block.h +406 -0
  48. data/ext/eigen/eigen3/Eigen/src/Core/BooleanRedux.h +154 -0
  49. data/ext/eigen/eigen3/Eigen/src/Core/CommaInitializer.h +154 -0
  50. data/ext/eigen/eigen3/Eigen/src/Core/CoreIterators.h +61 -0
  51. data/ext/eigen/eigen3/Eigen/src/Core/CwiseBinaryOp.h +230 -0
  52. data/ext/eigen/eigen3/Eigen/src/Core/CwiseNullaryOp.h +864 -0
  53. data/ext/eigen/eigen3/Eigen/src/Core/CwiseUnaryOp.h +126 -0
  54. data/ext/eigen/eigen3/Eigen/src/Core/CwiseUnaryView.h +139 -0
  55. data/ext/eigen/eigen3/Eigen/src/Core/DenseBase.h +521 -0
  56. data/ext/eigen/eigen3/Eigen/src/Core/DenseCoeffsBase.h +754 -0
  57. data/ext/eigen/eigen3/Eigen/src/Core/DenseStorage.h +434 -0
  58. data/ext/eigen/eigen3/Eigen/src/Core/Diagonal.h +237 -0
  59. data/ext/eigen/eigen3/Eigen/src/Core/DiagonalMatrix.h +313 -0
  60. data/ext/eigen/eigen3/Eigen/src/Core/DiagonalProduct.h +131 -0
  61. data/ext/eigen/eigen3/Eigen/src/Core/Dot.h +263 -0
  62. data/ext/eigen/eigen3/Eigen/src/Core/EigenBase.h +131 -0
  63. data/ext/eigen/eigen3/Eigen/src/Core/Flagged.h +140 -0
  64. data/ext/eigen/eigen3/Eigen/src/Core/ForceAlignedAccess.h +146 -0
  65. data/ext/eigen/eigen3/Eigen/src/Core/Functors.h +1026 -0
  66. data/ext/eigen/eigen3/Eigen/src/Core/Fuzzy.h +150 -0
  67. data/ext/eigen/eigen3/Eigen/src/Core/GeneralProduct.h +635 -0
  68. data/ext/eigen/eigen3/Eigen/src/Core/GenericPacketMath.h +350 -0
  69. data/ext/eigen/eigen3/Eigen/src/Core/GlobalFunctions.h +92 -0
  70. data/ext/eigen/eigen3/Eigen/src/Core/IO.h +250 -0
  71. data/ext/eigen/eigen3/Eigen/src/Core/Map.h +192 -0
  72. data/ext/eigen/eigen3/Eigen/src/Core/MapBase.h +247 -0
  73. data/ext/eigen/eigen3/Eigen/src/Core/MathFunctions.h +768 -0
  74. data/ext/eigen/eigen3/Eigen/src/Core/Matrix.h +420 -0
  75. data/ext/eigen/eigen3/Eigen/src/Core/MatrixBase.h +563 -0
  76. data/ext/eigen/eigen3/Eigen/src/Core/NestByValue.h +111 -0
  77. data/ext/eigen/eigen3/Eigen/src/Core/NoAlias.h +134 -0
  78. data/ext/eigen/eigen3/Eigen/src/Core/NumTraits.h +150 -0
  79. data/ext/eigen/eigen3/Eigen/src/Core/PermutationMatrix.h +721 -0
  80. data/ext/eigen/eigen3/Eigen/src/Core/PlainObjectBase.h +822 -0
  81. data/ext/eigen/eigen3/Eigen/src/Core/ProductBase.h +290 -0
  82. data/ext/eigen/eigen3/Eigen/src/Core/Random.h +152 -0
  83. data/ext/eigen/eigen3/Eigen/src/Core/Redux.h +409 -0
  84. data/ext/eigen/eigen3/Eigen/src/Core/Ref.h +278 -0
  85. data/ext/eigen/eigen3/Eigen/src/Core/Replicate.h +177 -0
  86. data/ext/eigen/eigen3/Eigen/src/Core/ReturnByValue.h +99 -0
  87. data/ext/eigen/eigen3/Eigen/src/Core/Reverse.h +224 -0
  88. data/ext/eigen/eigen3/Eigen/src/Core/Select.h +162 -0
  89. data/ext/eigen/eigen3/Eigen/src/Core/SelfAdjointView.h +314 -0
  90. data/ext/eigen/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +191 -0
  91. data/ext/eigen/eigen3/Eigen/src/Core/SolveTriangular.h +260 -0
  92. data/ext/eigen/eigen3/Eigen/src/Core/StableNorm.h +203 -0
  93. data/ext/eigen/eigen3/Eigen/src/Core/Stride.h +108 -0
  94. data/ext/eigen/eigen3/Eigen/src/Core/Swap.h +126 -0
  95. data/ext/eigen/eigen3/Eigen/src/Core/Transpose.h +419 -0
  96. data/ext/eigen/eigen3/Eigen/src/Core/Transpositions.h +436 -0
  97. data/ext/eigen/eigen3/Eigen/src/Core/TriangularMatrix.h +839 -0
  98. data/ext/eigen/eigen3/Eigen/src/Core/VectorBlock.h +95 -0
  99. data/ext/eigen/eigen3/Eigen/src/Core/VectorwiseOp.h +642 -0
  100. data/ext/eigen/eigen3/Eigen/src/Core/Visitor.h +237 -0
  101. data/ext/eigen/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +217 -0
  102. data/ext/eigen/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +501 -0
  103. data/ext/eigen/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
  104. data/ext/eigen/eigen3/Eigen/src/Core/arch/NEON/Complex.h +253 -0
  105. data/ext/eigen/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +420 -0
  106. data/ext/eigen/eigen3/Eigen/src/Core/arch/SSE/Complex.h +442 -0
  107. data/ext/eigen/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +475 -0
  108. data/ext/eigen/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +649 -0
  109. data/ext/eigen/eigen3/Eigen/src/Core/products/CoeffBasedProduct.h +476 -0
  110. data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1341 -0
  111. data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +427 -0
  112. data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +278 -0
  113. data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h +146 -0
  114. data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h +118 -0
  115. data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +566 -0
  116. data/ext/eigen/eigen3/Eigen/src/Core/products/GeneralMatrixVector_MKL.h +131 -0
  117. data/ext/eigen/eigen3/Eigen/src/Core/products/Parallelizer.h +162 -0
  118. data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +436 -0
  119. data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h +295 -0
  120. data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +281 -0
  121. data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h +114 -0
  122. data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +123 -0
  123. data/ext/eigen/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +93 -0
  124. data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +427 -0
  125. data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h +309 -0
  126. data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +348 -0
  127. data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularMatrixVector_MKL.h +247 -0
  128. data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +332 -0
  129. data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_MKL.h +155 -0
  130. data/ext/eigen/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +139 -0
  131. data/ext/eigen/eigen3/Eigen/src/Core/util/BlasUtil.h +264 -0
  132. data/ext/eigen/eigen3/Eigen/src/Core/util/Constants.h +451 -0
  133. data/ext/eigen/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +40 -0
  134. data/ext/eigen/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +302 -0
  135. data/ext/eigen/eigen3/Eigen/src/Core/util/MKL_support.h +158 -0
  136. data/ext/eigen/eigen3/Eigen/src/Core/util/Macros.h +451 -0
  137. data/ext/eigen/eigen3/Eigen/src/Core/util/Memory.h +977 -0
  138. data/ext/eigen/eigen3/Eigen/src/Core/util/Meta.h +243 -0
  139. data/ext/eigen/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
  140. data/ext/eigen/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +14 -0
  141. data/ext/eigen/eigen3/Eigen/src/Core/util/StaticAssert.h +208 -0
  142. data/ext/eigen/eigen3/Eigen/src/Core/util/XprHelper.h +469 -0
  143. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Block.h +126 -0
  144. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Cwise.h +192 -0
  145. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/CwiseOperators.h +298 -0
  146. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/AlignedBox.h +159 -0
  147. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/All.h +115 -0
  148. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/AngleAxis.h +214 -0
  149. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Hyperplane.h +254 -0
  150. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h +141 -0
  151. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Quaternion.h +495 -0
  152. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Rotation2D.h +145 -0
  153. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/RotationBase.h +123 -0
  154. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Scaling.h +167 -0
  155. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Transform.h +786 -0
  156. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Geometry/Translation.h +184 -0
  157. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/LU.h +120 -0
  158. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Lazy.h +71 -0
  159. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/LeastSquares.h +169 -0
  160. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Macros.h +20 -0
  161. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/MathFunctions.h +57 -0
  162. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Memory.h +45 -0
  163. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Meta.h +75 -0
  164. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/Minor.h +117 -0
  165. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/QR.h +67 -0
  166. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/SVD.h +637 -0
  167. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/TriangularSolver.h +42 -0
  168. data/ext/eigen/eigen3/Eigen/src/Eigen2Support/VectorBlock.h +94 -0
  169. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +341 -0
  170. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +456 -0
  171. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/ComplexSchur_MKL.h +94 -0
  172. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +607 -0
  173. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +350 -0
  174. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +227 -0
  175. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +373 -0
  176. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +160 -0
  177. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/RealQZ.h +624 -0
  178. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/RealSchur.h +525 -0
  179. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/RealSchur_MKL.h +83 -0
  180. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +801 -0
  181. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h +92 -0
  182. data/ext/eigen/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +557 -0
  183. data/ext/eigen/eigen3/Eigen/src/Geometry/AlignedBox.h +392 -0
  184. data/ext/eigen/eigen3/Eigen/src/Geometry/AngleAxis.h +233 -0
  185. data/ext/eigen/eigen3/Eigen/src/Geometry/EulerAngles.h +104 -0
  186. data/ext/eigen/eigen3/Eigen/src/Geometry/Homogeneous.h +307 -0
  187. data/ext/eigen/eigen3/Eigen/src/Geometry/Hyperplane.h +280 -0
  188. data/ext/eigen/eigen3/Eigen/src/Geometry/OrthoMethods.h +218 -0
  189. data/ext/eigen/eigen3/Eigen/src/Geometry/ParametrizedLine.h +195 -0
  190. data/ext/eigen/eigen3/Eigen/src/Geometry/Quaternion.h +776 -0
  191. data/ext/eigen/eigen3/Eigen/src/Geometry/Rotation2D.h +160 -0
  192. data/ext/eigen/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
  193. data/ext/eigen/eigen3/Eigen/src/Geometry/Scaling.h +166 -0
  194. data/ext/eigen/eigen3/Eigen/src/Geometry/Transform.h +1455 -0
  195. data/ext/eigen/eigen3/Eigen/src/Geometry/Translation.h +206 -0
  196. data/ext/eigen/eigen3/Eigen/src/Geometry/Umeyama.h +177 -0
  197. data/ext/eigen/eigen3/Eigen/src/Geometry/arch/Geometry_SSE.h +115 -0
  198. data/ext/eigen/eigen3/Eigen/src/Householder/BlockHouseholder.h +68 -0
  199. data/ext/eigen/eigen3/Eigen/src/Householder/Householder.h +171 -0
  200. data/ext/eigen/eigen3/Eigen/src/Householder/HouseholderSequence.h +441 -0
  201. data/ext/eigen/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -0
  202. data/ext/eigen/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +263 -0
  203. data/ext/eigen/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +256 -0
  204. data/ext/eigen/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +282 -0
  205. data/ext/eigen/eigen3/Eigen/src/Jacobi/Jacobi.h +433 -0
  206. data/ext/eigen/eigen3/Eigen/src/LU/Determinant.h +101 -0
  207. data/ext/eigen/eigen3/Eigen/src/LU/FullPivLU.h +751 -0
  208. data/ext/eigen/eigen3/Eigen/src/LU/Inverse.h +400 -0
  209. data/ext/eigen/eigen3/Eigen/src/LU/PartialPivLU.h +509 -0
  210. data/ext/eigen/eigen3/Eigen/src/LU/PartialPivLU_MKL.h +85 -0
  211. data/ext/eigen/eigen3/Eigen/src/LU/arch/Inverse_SSE.h +329 -0
  212. data/ext/eigen/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  213. data/ext/eigen/eigen3/Eigen/src/OrderingMethods/Amd.h +444 -0
  214. data/ext/eigen/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1850 -0
  215. data/ext/eigen/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +721 -0
  216. data/ext/eigen/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +592 -0
  217. data/ext/eigen/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +580 -0
  218. data/ext/eigen/eigen3/Eigen/src/QR/ColPivHouseholderQR_MKL.h +99 -0
  219. data/ext/eigen/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +622 -0
  220. data/ext/eigen/eigen3/Eigen/src/QR/HouseholderQR.h +388 -0
  221. data/ext/eigen/eigen3/Eigen/src/QR/HouseholderQR_MKL.h +71 -0
  222. data/ext/eigen/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +338 -0
  223. data/ext/eigen/eigen3/Eigen/src/SVD/JacobiSVD.h +976 -0
  224. data/ext/eigen/eigen3/Eigen/src/SVD/JacobiSVD_MKL.h +92 -0
  225. data/ext/eigen/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +148 -0
  226. data/ext/eigen/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +671 -0
  227. data/ext/eigen/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +199 -0
  228. data/ext/eigen/eigen3/Eigen/src/SparseCore/AmbiVector.h +373 -0
  229. data/ext/eigen/eigen3/Eigen/src/SparseCore/CompressedStorage.h +233 -0
  230. data/ext/eigen/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +245 -0
  231. data/ext/eigen/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +181 -0
  232. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseBlock.h +537 -0
  233. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  234. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +325 -0
  235. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +163 -0
  236. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +311 -0
  237. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +196 -0
  238. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseDot.h +101 -0
  239. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +26 -0
  240. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1262 -0
  241. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +461 -0
  242. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparsePermutation.h +148 -0
  243. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseProduct.h +188 -0
  244. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseRedux.h +45 -0
  245. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +507 -0
  246. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +150 -0
  247. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseTranspose.h +63 -0
  248. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +179 -0
  249. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseUtil.h +172 -0
  250. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseVector.h +448 -0
  251. data/ext/eigen/eigen3/Eigen/src/SparseCore/SparseView.h +99 -0
  252. data/ext/eigen/eigen3/Eigen/src/SparseCore/TriangularSolver.h +334 -0
  253. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU.h +806 -0
  254. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  255. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +227 -0
  256. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +111 -0
  257. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +298 -0
  258. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  259. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +180 -0
  260. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +177 -0
  261. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +106 -0
  262. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +279 -0
  263. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +127 -0
  264. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  265. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  266. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  267. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  268. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +135 -0
  269. data/ext/eigen/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  270. data/ext/eigen/eigen3/Eigen/src/SparseQR/SparseQR.h +714 -0
  271. data/ext/eigen/eigen3/Eigen/src/StlSupport/StdDeque.h +134 -0
  272. data/ext/eigen/eigen3/Eigen/src/StlSupport/StdList.h +114 -0
  273. data/ext/eigen/eigen3/Eigen/src/StlSupport/StdVector.h +126 -0
  274. data/ext/eigen/eigen3/Eigen/src/StlSupport/details.h +84 -0
  275. data/ext/eigen/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1026 -0
  276. data/ext/eigen/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +474 -0
  277. data/ext/eigen/eigen3/Eigen/src/misc/Image.h +84 -0
  278. data/ext/eigen/eigen3/Eigen/src/misc/Kernel.h +81 -0
  279. data/ext/eigen/eigen3/Eigen/src/misc/Solve.h +76 -0
  280. data/ext/eigen/eigen3/Eigen/src/misc/SparseSolve.h +128 -0
  281. data/ext/eigen/eigen3/Eigen/src/misc/blas.h +658 -0
  282. data/ext/eigen/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +253 -0
  283. data/ext/eigen/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +187 -0
  284. data/ext/eigen/eigen3/Eigen/src/plugins/BlockMethods.h +935 -0
  285. data/ext/eigen/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +46 -0
  286. data/ext/eigen/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +172 -0
  287. data/ext/eigen/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +143 -0
  288. data/ext/eigen/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +52 -0
  289. data/ext/eigen/eigen3/signature_of_eigen3_matrix_library +1 -0
  290. data/ext/eigen/eigen_wrap.cxx +19420 -10396
  291. data/ext/eigen/extconf.rb +37 -2
  292. data/lib/eigen.rb +146 -3
  293. 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,3 @@
1
+ #ifdef EIGEN_MPL2_ONLY
2
+ #error Including non-MPL2 code in EIGEN_MPL2_ONLY mode
3
+ #endif
@@ -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