ruby-eigen 0.0.9 → 0.0.10.pre1

Sign up to get free protection for your applications and to get access to all the features.
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,126 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2008-2010 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_CWISE_UNARY_OP_H
12
+ #define EIGEN_CWISE_UNARY_OP_H
13
+
14
+ namespace Eigen {
15
+
16
+ /** \class CwiseUnaryOp
17
+ * \ingroup Core_Module
18
+ *
19
+ * \brief Generic expression where a coefficient-wise unary operator is applied to an expression
20
+ *
21
+ * \param UnaryOp template functor implementing the operator
22
+ * \param XprType the type of the expression to which we are applying the unary operator
23
+ *
24
+ * This class represents an expression where a unary operator is applied to an expression.
25
+ * It is the return type of all operations taking exactly 1 input expression, regardless of the
26
+ * presence of other inputs such as scalars. For example, the operator* in the expression 3*matrix
27
+ * is considered unary, because only the right-hand side is an expression, and its
28
+ * return type is a specialization of CwiseUnaryOp.
29
+ *
30
+ * Most of the time, this is the only way that it is used, so you typically don't have to name
31
+ * CwiseUnaryOp types explicitly.
32
+ *
33
+ * \sa MatrixBase::unaryExpr(const CustomUnaryOp &) const, class CwiseBinaryOp, class CwiseNullaryOp
34
+ */
35
+
36
+ namespace internal {
37
+ template<typename UnaryOp, typename XprType>
38
+ struct traits<CwiseUnaryOp<UnaryOp, XprType> >
39
+ : traits<XprType>
40
+ {
41
+ typedef typename result_of<
42
+ UnaryOp(typename XprType::Scalar)
43
+ >::type Scalar;
44
+ typedef typename XprType::Nested XprTypeNested;
45
+ typedef typename remove_reference<XprTypeNested>::type _XprTypeNested;
46
+ enum {
47
+ Flags = _XprTypeNested::Flags & (
48
+ HereditaryBits | LinearAccessBit | AlignedBit
49
+ | (functor_traits<UnaryOp>::PacketAccess ? PacketAccessBit : 0)),
50
+ CoeffReadCost = EIGEN_ADD_COST(_XprTypeNested::CoeffReadCost, functor_traits<UnaryOp>::Cost)
51
+ };
52
+ };
53
+ }
54
+
55
+ template<typename UnaryOp, typename XprType, typename StorageKind>
56
+ class CwiseUnaryOpImpl;
57
+
58
+ template<typename UnaryOp, typename XprType>
59
+ class CwiseUnaryOp : internal::no_assignment_operator,
60
+ public CwiseUnaryOpImpl<UnaryOp, XprType, typename internal::traits<XprType>::StorageKind>
61
+ {
62
+ public:
63
+
64
+ typedef typename CwiseUnaryOpImpl<UnaryOp, XprType,typename internal::traits<XprType>::StorageKind>::Base Base;
65
+ EIGEN_GENERIC_PUBLIC_INTERFACE(CwiseUnaryOp)
66
+
67
+ inline CwiseUnaryOp(const XprType& xpr, const UnaryOp& func = UnaryOp())
68
+ : m_xpr(xpr), m_functor(func) {}
69
+
70
+ EIGEN_STRONG_INLINE Index rows() const { return m_xpr.rows(); }
71
+ EIGEN_STRONG_INLINE Index cols() const { return m_xpr.cols(); }
72
+
73
+ /** \returns the functor representing the unary operation */
74
+ const UnaryOp& functor() const { return m_functor; }
75
+
76
+ /** \returns the nested expression */
77
+ const typename internal::remove_all<typename XprType::Nested>::type&
78
+ nestedExpression() const { return m_xpr; }
79
+
80
+ /** \returns the nested expression */
81
+ typename internal::remove_all<typename XprType::Nested>::type&
82
+ nestedExpression() { return m_xpr.const_cast_derived(); }
83
+
84
+ protected:
85
+ typename XprType::Nested m_xpr;
86
+ const UnaryOp m_functor;
87
+ };
88
+
89
+ // This is the generic implementation for dense storage.
90
+ // It can be used for any expression types implementing the dense concept.
91
+ template<typename UnaryOp, typename XprType>
92
+ class CwiseUnaryOpImpl<UnaryOp,XprType,Dense>
93
+ : public internal::dense_xpr_base<CwiseUnaryOp<UnaryOp, XprType> >::type
94
+ {
95
+ public:
96
+
97
+ typedef CwiseUnaryOp<UnaryOp, XprType> Derived;
98
+ typedef typename internal::dense_xpr_base<CwiseUnaryOp<UnaryOp, XprType> >::type Base;
99
+ EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
100
+
101
+ EIGEN_STRONG_INLINE const Scalar coeff(Index rowId, Index colId) const
102
+ {
103
+ return derived().functor()(derived().nestedExpression().coeff(rowId, colId));
104
+ }
105
+
106
+ template<int LoadMode>
107
+ EIGEN_STRONG_INLINE PacketScalar packet(Index rowId, Index colId) const
108
+ {
109
+ return derived().functor().packetOp(derived().nestedExpression().template packet<LoadMode>(rowId, colId));
110
+ }
111
+
112
+ EIGEN_STRONG_INLINE const Scalar coeff(Index index) const
113
+ {
114
+ return derived().functor()(derived().nestedExpression().coeff(index));
115
+ }
116
+
117
+ template<int LoadMode>
118
+ EIGEN_STRONG_INLINE PacketScalar packet(Index index) const
119
+ {
120
+ return derived().functor().packetOp(derived().nestedExpression().template packet<LoadMode>(index));
121
+ }
122
+ };
123
+
124
+ } // end namespace Eigen
125
+
126
+ #endif // EIGEN_CWISE_UNARY_OP_H
@@ -0,0 +1,139 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
5
+ //
6
+ // This Source Code Form is subject to the terms of the Mozilla
7
+ // Public License v. 2.0. If a copy of the MPL was not distributed
8
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
+
10
+ #ifndef EIGEN_CWISE_UNARY_VIEW_H
11
+ #define EIGEN_CWISE_UNARY_VIEW_H
12
+
13
+ namespace Eigen {
14
+
15
+ /** \class CwiseUnaryView
16
+ * \ingroup Core_Module
17
+ *
18
+ * \brief Generic lvalue expression of a coefficient-wise unary operator of a matrix or a vector
19
+ *
20
+ * \param ViewOp template functor implementing the view
21
+ * \param MatrixType the type of the matrix we are applying the unary operator
22
+ *
23
+ * This class represents a lvalue expression of a generic unary view operator of a matrix or a vector.
24
+ * It is the return type of real() and imag(), and most of the time this is the only way it is used.
25
+ *
26
+ * \sa MatrixBase::unaryViewExpr(const CustomUnaryOp &) const, class CwiseUnaryOp
27
+ */
28
+
29
+ namespace internal {
30
+ template<typename ViewOp, typename MatrixType>
31
+ struct traits<CwiseUnaryView<ViewOp, MatrixType> >
32
+ : traits<MatrixType>
33
+ {
34
+ typedef typename result_of<
35
+ ViewOp(typename traits<MatrixType>::Scalar)
36
+ >::type Scalar;
37
+ typedef typename MatrixType::Nested MatrixTypeNested;
38
+ typedef typename remove_all<MatrixTypeNested>::type _MatrixTypeNested;
39
+ enum {
40
+ Flags = (traits<_MatrixTypeNested>::Flags & (HereditaryBits | LvalueBit | LinearAccessBit | DirectAccessBit)),
41
+ CoeffReadCost = traits<_MatrixTypeNested>::CoeffReadCost + functor_traits<ViewOp>::Cost,
42
+ MatrixTypeInnerStride = inner_stride_at_compile_time<MatrixType>::ret,
43
+ // need to cast the sizeof's from size_t to int explicitly, otherwise:
44
+ // "error: no integral type can represent all of the enumerator values
45
+ InnerStrideAtCompileTime = MatrixTypeInnerStride == Dynamic
46
+ ? int(Dynamic)
47
+ : int(MatrixTypeInnerStride) * int(sizeof(typename traits<MatrixType>::Scalar) / sizeof(Scalar)),
48
+ OuterStrideAtCompileTime = outer_stride_at_compile_time<MatrixType>::ret == Dynamic
49
+ ? int(Dynamic)
50
+ : outer_stride_at_compile_time<MatrixType>::ret * int(sizeof(typename traits<MatrixType>::Scalar) / sizeof(Scalar))
51
+ };
52
+ };
53
+ }
54
+
55
+ template<typename ViewOp, typename MatrixType, typename StorageKind>
56
+ class CwiseUnaryViewImpl;
57
+
58
+ template<typename ViewOp, typename MatrixType>
59
+ class CwiseUnaryView : public CwiseUnaryViewImpl<ViewOp, MatrixType, typename internal::traits<MatrixType>::StorageKind>
60
+ {
61
+ public:
62
+
63
+ typedef typename CwiseUnaryViewImpl<ViewOp, MatrixType,typename internal::traits<MatrixType>::StorageKind>::Base Base;
64
+ EIGEN_GENERIC_PUBLIC_INTERFACE(CwiseUnaryView)
65
+
66
+ inline CwiseUnaryView(const MatrixType& mat, const ViewOp& func = ViewOp())
67
+ : m_matrix(mat), m_functor(func) {}
68
+
69
+ EIGEN_INHERIT_ASSIGNMENT_OPERATORS(CwiseUnaryView)
70
+
71
+ EIGEN_STRONG_INLINE Index rows() const { return m_matrix.rows(); }
72
+ EIGEN_STRONG_INLINE Index cols() const { return m_matrix.cols(); }
73
+
74
+ /** \returns the functor representing unary operation */
75
+ const ViewOp& functor() const { return m_functor; }
76
+
77
+ /** \returns the nested expression */
78
+ const typename internal::remove_all<typename MatrixType::Nested>::type&
79
+ nestedExpression() const { return m_matrix; }
80
+
81
+ /** \returns the nested expression */
82
+ typename internal::remove_all<typename MatrixType::Nested>::type&
83
+ nestedExpression() { return m_matrix.const_cast_derived(); }
84
+
85
+ protected:
86
+ // FIXME changed from MatrixType::Nested because of a weird compilation error with sun CC
87
+ typename internal::nested<MatrixType>::type m_matrix;
88
+ ViewOp m_functor;
89
+ };
90
+
91
+ template<typename ViewOp, typename MatrixType>
92
+ class CwiseUnaryViewImpl<ViewOp,MatrixType,Dense>
93
+ : public internal::dense_xpr_base< CwiseUnaryView<ViewOp, MatrixType> >::type
94
+ {
95
+ public:
96
+
97
+ typedef CwiseUnaryView<ViewOp, MatrixType> Derived;
98
+ typedef typename internal::dense_xpr_base< CwiseUnaryView<ViewOp, MatrixType> >::type Base;
99
+
100
+ EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
101
+ EIGEN_INHERIT_ASSIGNMENT_OPERATORS(CwiseUnaryViewImpl)
102
+
103
+ inline Scalar* data() { return &coeffRef(0); }
104
+ inline const Scalar* data() const { return &coeff(0); }
105
+
106
+ inline Index innerStride() const
107
+ {
108
+ return derived().nestedExpression().innerStride() * sizeof(typename internal::traits<MatrixType>::Scalar) / sizeof(Scalar);
109
+ }
110
+
111
+ inline Index outerStride() const
112
+ {
113
+ return derived().nestedExpression().outerStride() * sizeof(typename internal::traits<MatrixType>::Scalar) / sizeof(Scalar);
114
+ }
115
+
116
+ EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const
117
+ {
118
+ return derived().functor()(derived().nestedExpression().coeff(row, col));
119
+ }
120
+
121
+ EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
122
+ {
123
+ return derived().functor()(derived().nestedExpression().coeff(index));
124
+ }
125
+
126
+ EIGEN_STRONG_INLINE Scalar& coeffRef(Index row, Index col)
127
+ {
128
+ return derived().functor()(const_cast_derived().nestedExpression().coeffRef(row, col));
129
+ }
130
+
131
+ EIGEN_STRONG_INLINE Scalar& coeffRef(Index index)
132
+ {
133
+ return derived().functor()(const_cast_derived().nestedExpression().coeffRef(index));
134
+ }
135
+ };
136
+
137
+ } // end namespace Eigen
138
+
139
+ #endif // EIGEN_CWISE_UNARY_VIEW_H
@@ -0,0 +1,521 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2007-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
5
+ // Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
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_DENSEBASE_H
12
+ #define EIGEN_DENSEBASE_H
13
+
14
+ namespace Eigen {
15
+
16
+ namespace internal {
17
+
18
+ // The index type defined by EIGEN_DEFAULT_DENSE_INDEX_TYPE must be a signed type.
19
+ // This dummy function simply aims at checking that at compile time.
20
+ static inline void check_DenseIndex_is_signed() {
21
+ EIGEN_STATIC_ASSERT(NumTraits<DenseIndex>::IsSigned,THE_INDEX_TYPE_MUST_BE_A_SIGNED_TYPE);
22
+ }
23
+
24
+ } // end namespace internal
25
+
26
+ /** \class DenseBase
27
+ * \ingroup Core_Module
28
+ *
29
+ * \brief Base class for all dense matrices, vectors, and arrays
30
+ *
31
+ * This class is the base that is inherited by all dense objects (matrix, vector, arrays,
32
+ * and related expression types). The common Eigen API for dense objects is contained in this class.
33
+ *
34
+ * \tparam Derived is the derived type, e.g., a matrix type or an expression.
35
+ *
36
+ * This class can be extended with the help of the plugin mechanism described on the page
37
+ * \ref TopicCustomizingEigen by defining the preprocessor symbol \c EIGEN_DENSEBASE_PLUGIN.
38
+ *
39
+ * \sa \ref TopicClassHierarchy
40
+ */
41
+ template<typename Derived> class DenseBase
42
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
43
+ : public internal::special_scalar_op_base<Derived, typename internal::traits<Derived>::Scalar,
44
+ typename NumTraits<typename internal::traits<Derived>::Scalar>::Real,
45
+ DenseCoeffsBase<Derived> >
46
+ #else
47
+ : public DenseCoeffsBase<Derived>
48
+ #endif // not EIGEN_PARSED_BY_DOXYGEN
49
+ {
50
+ public:
51
+
52
+ class InnerIterator;
53
+
54
+ typedef typename internal::traits<Derived>::StorageKind StorageKind;
55
+
56
+ /** \brief The type of indices
57
+ * \details To change this, \c \#define the preprocessor symbol \c EIGEN_DEFAULT_DENSE_INDEX_TYPE.
58
+ * \sa \ref TopicPreprocessorDirectives.
59
+ */
60
+ typedef typename internal::traits<Derived>::Index Index;
61
+
62
+ typedef typename internal::traits<Derived>::Scalar Scalar;
63
+ typedef typename internal::packet_traits<Scalar>::type PacketScalar;
64
+ typedef typename NumTraits<Scalar>::Real RealScalar;
65
+ typedef internal::special_scalar_op_base<Derived,Scalar,RealScalar, DenseCoeffsBase<Derived> > Base;
66
+
67
+ using Base::operator*;
68
+ using Base::derived;
69
+ using Base::const_cast_derived;
70
+ using Base::rows;
71
+ using Base::cols;
72
+ using Base::size;
73
+ using Base::rowIndexByOuterInner;
74
+ using Base::colIndexByOuterInner;
75
+ using Base::coeff;
76
+ using Base::coeffByOuterInner;
77
+ using Base::packet;
78
+ using Base::packetByOuterInner;
79
+ using Base::writePacket;
80
+ using Base::writePacketByOuterInner;
81
+ using Base::coeffRef;
82
+ using Base::coeffRefByOuterInner;
83
+ using Base::copyCoeff;
84
+ using Base::copyCoeffByOuterInner;
85
+ using Base::copyPacket;
86
+ using Base::copyPacketByOuterInner;
87
+ using Base::operator();
88
+ using Base::operator[];
89
+ using Base::x;
90
+ using Base::y;
91
+ using Base::z;
92
+ using Base::w;
93
+ using Base::stride;
94
+ using Base::innerStride;
95
+ using Base::outerStride;
96
+ using Base::rowStride;
97
+ using Base::colStride;
98
+ typedef typename Base::CoeffReturnType CoeffReturnType;
99
+
100
+ enum {
101
+
102
+ RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
103
+ /**< The number of rows at compile-time. This is just a copy of the value provided
104
+ * by the \a Derived type. If a value is not known at compile-time,
105
+ * it is set to the \a Dynamic constant.
106
+ * \sa MatrixBase::rows(), MatrixBase::cols(), ColsAtCompileTime, SizeAtCompileTime */
107
+
108
+ ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
109
+ /**< The number of columns at compile-time. This is just a copy of the value provided
110
+ * by the \a Derived type. If a value is not known at compile-time,
111
+ * it is set to the \a Dynamic constant.
112
+ * \sa MatrixBase::rows(), MatrixBase::cols(), RowsAtCompileTime, SizeAtCompileTime */
113
+
114
+
115
+ SizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::RowsAtCompileTime,
116
+ internal::traits<Derived>::ColsAtCompileTime>::ret),
117
+ /**< This is equal to the number of coefficients, i.e. the number of
118
+ * rows times the number of columns, or to \a Dynamic if this is not
119
+ * known at compile-time. \sa RowsAtCompileTime, ColsAtCompileTime */
120
+
121
+ MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
122
+ /**< This value is equal to the maximum possible number of rows that this expression
123
+ * might have. If this expression might have an arbitrarily high number of rows,
124
+ * this value is set to \a Dynamic.
125
+ *
126
+ * This value is useful to know when evaluating an expression, in order to determine
127
+ * whether it is possible to avoid doing a dynamic memory allocation.
128
+ *
129
+ * \sa RowsAtCompileTime, MaxColsAtCompileTime, MaxSizeAtCompileTime
130
+ */
131
+
132
+ MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
133
+ /**< This value is equal to the maximum possible number of columns that this expression
134
+ * might have. If this expression might have an arbitrarily high number of columns,
135
+ * this value is set to \a Dynamic.
136
+ *
137
+ * This value is useful to know when evaluating an expression, in order to determine
138
+ * whether it is possible to avoid doing a dynamic memory allocation.
139
+ *
140
+ * \sa ColsAtCompileTime, MaxRowsAtCompileTime, MaxSizeAtCompileTime
141
+ */
142
+
143
+ MaxSizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::MaxRowsAtCompileTime,
144
+ internal::traits<Derived>::MaxColsAtCompileTime>::ret),
145
+ /**< This value is equal to the maximum possible number of coefficients that this expression
146
+ * might have. If this expression might have an arbitrarily high number of coefficients,
147
+ * this value is set to \a Dynamic.
148
+ *
149
+ * This value is useful to know when evaluating an expression, in order to determine
150
+ * whether it is possible to avoid doing a dynamic memory allocation.
151
+ *
152
+ * \sa SizeAtCompileTime, MaxRowsAtCompileTime, MaxColsAtCompileTime
153
+ */
154
+
155
+ IsVectorAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime == 1
156
+ || internal::traits<Derived>::MaxColsAtCompileTime == 1,
157
+ /**< This is set to true if either the number of rows or the number of
158
+ * columns is known at compile-time to be equal to 1. Indeed, in that case,
159
+ * we are dealing with a column-vector (if there is only one column) or with
160
+ * a row-vector (if there is only one row). */
161
+
162
+ Flags = internal::traits<Derived>::Flags,
163
+ /**< This stores expression \ref flags flags which may or may not be inherited by new expressions
164
+ * constructed from this one. See the \ref flags "list of flags".
165
+ */
166
+
167
+ IsRowMajor = int(Flags) & RowMajorBit, /**< True if this expression has row-major storage order. */
168
+
169
+ InnerSizeAtCompileTime = int(IsVectorAtCompileTime) ? int(SizeAtCompileTime)
170
+ : int(IsRowMajor) ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
171
+
172
+ CoeffReadCost = internal::traits<Derived>::CoeffReadCost,
173
+ /**< This is a rough measure of how expensive it is to read one coefficient from
174
+ * this expression.
175
+ */
176
+
177
+ InnerStrideAtCompileTime = internal::inner_stride_at_compile_time<Derived>::ret,
178
+ OuterStrideAtCompileTime = internal::outer_stride_at_compile_time<Derived>::ret
179
+ };
180
+
181
+ enum { ThisConstantIsPrivateInPlainObjectBase };
182
+
183
+ /** \returns the number of nonzero coefficients which is in practice the number
184
+ * of stored coefficients. */
185
+ inline Index nonZeros() const { return size(); }
186
+
187
+ /** \returns the outer size.
188
+ *
189
+ * \note For a vector, this returns just 1. For a matrix (non-vector), this is the major dimension
190
+ * with respect to the \ref TopicStorageOrders "storage order", i.e., the number of columns for a
191
+ * column-major matrix, and the number of rows for a row-major matrix. */
192
+ Index outerSize() const
193
+ {
194
+ return IsVectorAtCompileTime ? 1
195
+ : int(IsRowMajor) ? this->rows() : this->cols();
196
+ }
197
+
198
+ /** \returns the inner size.
199
+ *
200
+ * \note For a vector, this is just the size. For a matrix (non-vector), this is the minor dimension
201
+ * with respect to the \ref TopicStorageOrders "storage order", i.e., the number of rows for a
202
+ * column-major matrix, and the number of columns for a row-major matrix. */
203
+ Index innerSize() const
204
+ {
205
+ return IsVectorAtCompileTime ? this->size()
206
+ : int(IsRowMajor) ? this->cols() : this->rows();
207
+ }
208
+
209
+ /** Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are
210
+ * Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and does
211
+ * nothing else.
212
+ */
213
+ void resize(Index newSize)
214
+ {
215
+ EIGEN_ONLY_USED_FOR_DEBUG(newSize);
216
+ eigen_assert(newSize == this->size()
217
+ && "DenseBase::resize() does not actually allow to resize.");
218
+ }
219
+ /** Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are
220
+ * Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and does
221
+ * nothing else.
222
+ */
223
+ void resize(Index nbRows, Index nbCols)
224
+ {
225
+ EIGEN_ONLY_USED_FOR_DEBUG(nbRows);
226
+ EIGEN_ONLY_USED_FOR_DEBUG(nbCols);
227
+ eigen_assert(nbRows == this->rows() && nbCols == this->cols()
228
+ && "DenseBase::resize() does not actually allow to resize.");
229
+ }
230
+
231
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
232
+
233
+ /** \internal Represents a matrix with all coefficients equal to one another*/
234
+ typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,Derived> ConstantReturnType;
235
+ /** \internal Represents a vector with linearly spaced coefficients that allows sequential access only. */
236
+ typedef CwiseNullaryOp<internal::linspaced_op<Scalar,false>,Derived> SequentialLinSpacedReturnType;
237
+ /** \internal Represents a vector with linearly spaced coefficients that allows random access. */
238
+ typedef CwiseNullaryOp<internal::linspaced_op<Scalar,true>,Derived> RandomAccessLinSpacedReturnType;
239
+ /** \internal the return type of MatrixBase::eigenvalues() */
240
+ typedef Matrix<typename NumTraits<typename internal::traits<Derived>::Scalar>::Real, internal::traits<Derived>::ColsAtCompileTime, 1> EigenvaluesReturnType;
241
+
242
+ #endif // not EIGEN_PARSED_BY_DOXYGEN
243
+
244
+ /** Copies \a other into *this. \returns a reference to *this. */
245
+ template<typename OtherDerived>
246
+ Derived& operator=(const DenseBase<OtherDerived>& other);
247
+
248
+ /** Special case of the template operator=, in order to prevent the compiler
249
+ * from generating a default operator= (issue hit with g++ 4.1)
250
+ */
251
+ Derived& operator=(const DenseBase& other);
252
+
253
+ template<typename OtherDerived>
254
+ Derived& operator=(const EigenBase<OtherDerived> &other);
255
+
256
+ template<typename OtherDerived>
257
+ Derived& operator+=(const EigenBase<OtherDerived> &other);
258
+
259
+ template<typename OtherDerived>
260
+ Derived& operator-=(const EigenBase<OtherDerived> &other);
261
+
262
+ template<typename OtherDerived>
263
+ Derived& operator=(const ReturnByValue<OtherDerived>& func);
264
+
265
+ /** \internal Copies \a other into *this without evaluating other. \returns a reference to *this. */
266
+ template<typename OtherDerived>
267
+ Derived& lazyAssign(const DenseBase<OtherDerived>& other);
268
+
269
+ /** \internal Evaluates \a other into *this. \returns a reference to *this. */
270
+ template<typename OtherDerived>
271
+ Derived& lazyAssign(const ReturnByValue<OtherDerived>& other);
272
+
273
+ CommaInitializer<Derived> operator<< (const Scalar& s);
274
+
275
+ template<unsigned int Added,unsigned int Removed>
276
+ const Flagged<Derived, Added, Removed> flagged() const;
277
+
278
+ template<typename OtherDerived>
279
+ CommaInitializer<Derived> operator<< (const DenseBase<OtherDerived>& other);
280
+
281
+ Eigen::Transpose<Derived> transpose();
282
+ typedef typename internal::add_const<Transpose<const Derived> >::type ConstTransposeReturnType;
283
+ ConstTransposeReturnType transpose() const;
284
+ void transposeInPlace();
285
+ #ifndef EIGEN_NO_DEBUG
286
+ protected:
287
+ template<typename OtherDerived>
288
+ void checkTransposeAliasing(const OtherDerived& other) const;
289
+ public:
290
+ #endif
291
+
292
+
293
+ static const ConstantReturnType
294
+ Constant(Index rows, Index cols, const Scalar& value);
295
+ static const ConstantReturnType
296
+ Constant(Index size, const Scalar& value);
297
+ static const ConstantReturnType
298
+ Constant(const Scalar& value);
299
+
300
+ static const SequentialLinSpacedReturnType
301
+ LinSpaced(Sequential_t, Index size, const Scalar& low, const Scalar& high);
302
+ static const RandomAccessLinSpacedReturnType
303
+ LinSpaced(Index size, const Scalar& low, const Scalar& high);
304
+ static const SequentialLinSpacedReturnType
305
+ LinSpaced(Sequential_t, const Scalar& low, const Scalar& high);
306
+ static const RandomAccessLinSpacedReturnType
307
+ LinSpaced(const Scalar& low, const Scalar& high);
308
+
309
+ template<typename CustomNullaryOp>
310
+ static const CwiseNullaryOp<CustomNullaryOp, Derived>
311
+ NullaryExpr(Index rows, Index cols, const CustomNullaryOp& func);
312
+ template<typename CustomNullaryOp>
313
+ static const CwiseNullaryOp<CustomNullaryOp, Derived>
314
+ NullaryExpr(Index size, const CustomNullaryOp& func);
315
+ template<typename CustomNullaryOp>
316
+ static const CwiseNullaryOp<CustomNullaryOp, Derived>
317
+ NullaryExpr(const CustomNullaryOp& func);
318
+
319
+ static const ConstantReturnType Zero(Index rows, Index cols);
320
+ static const ConstantReturnType Zero(Index size);
321
+ static const ConstantReturnType Zero();
322
+ static const ConstantReturnType Ones(Index rows, Index cols);
323
+ static const ConstantReturnType Ones(Index size);
324
+ static const ConstantReturnType Ones();
325
+
326
+ void fill(const Scalar& value);
327
+ Derived& setConstant(const Scalar& value);
328
+ Derived& setLinSpaced(Index size, const Scalar& low, const Scalar& high);
329
+ Derived& setLinSpaced(const Scalar& low, const Scalar& high);
330
+ Derived& setZero();
331
+ Derived& setOnes();
332
+ Derived& setRandom();
333
+
334
+ template<typename OtherDerived>
335
+ bool isApprox(const DenseBase<OtherDerived>& other,
336
+ const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
337
+ bool isMuchSmallerThan(const RealScalar& other,
338
+ const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
339
+ template<typename OtherDerived>
340
+ bool isMuchSmallerThan(const DenseBase<OtherDerived>& other,
341
+ const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
342
+
343
+ bool isApproxToConstant(const Scalar& value, const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
344
+ bool isConstant(const Scalar& value, const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
345
+ bool isZero(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
346
+ bool isOnes(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
347
+
348
+ inline bool hasNaN() const;
349
+ inline bool allFinite() const;
350
+
351
+ inline Derived& operator*=(const Scalar& other);
352
+ inline Derived& operator/=(const Scalar& other);
353
+
354
+ typedef typename internal::add_const_on_value_type<typename internal::eval<Derived>::type>::type EvalReturnType;
355
+ /** \returns the matrix or vector obtained by evaluating this expression.
356
+ *
357
+ * Notice that in the case of a plain matrix or vector (not an expression) this function just returns
358
+ * a const reference, in order to avoid a useless copy.
359
+ */
360
+ EIGEN_STRONG_INLINE EvalReturnType eval() const
361
+ {
362
+ // Even though MSVC does not honor strong inlining when the return type
363
+ // is a dynamic matrix, we desperately need strong inlining for fixed
364
+ // size types on MSVC.
365
+ return typename internal::eval<Derived>::type(derived());
366
+ }
367
+
368
+ /** swaps *this with the expression \a other.
369
+ *
370
+ */
371
+ template<typename OtherDerived>
372
+ void swap(const DenseBase<OtherDerived>& other,
373
+ int = OtherDerived::ThisConstantIsPrivateInPlainObjectBase)
374
+ {
375
+ SwapWrapper<Derived>(derived()).lazyAssign(other.derived());
376
+ }
377
+
378
+ /** swaps *this with the matrix or array \a other.
379
+ *
380
+ */
381
+ template<typename OtherDerived>
382
+ void swap(PlainObjectBase<OtherDerived>& other)
383
+ {
384
+ SwapWrapper<Derived>(derived()).lazyAssign(other.derived());
385
+ }
386
+
387
+
388
+ inline const NestByValue<Derived> nestByValue() const;
389
+ inline const ForceAlignedAccess<Derived> forceAlignedAccess() const;
390
+ inline ForceAlignedAccess<Derived> forceAlignedAccess();
391
+ template<bool Enable> inline const typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type forceAlignedAccessIf() const;
392
+ template<bool Enable> inline typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type forceAlignedAccessIf();
393
+
394
+ Scalar sum() const;
395
+ Scalar mean() const;
396
+ Scalar trace() const;
397
+
398
+ Scalar prod() const;
399
+
400
+ typename internal::traits<Derived>::Scalar minCoeff() const;
401
+ typename internal::traits<Derived>::Scalar maxCoeff() const;
402
+
403
+ template<typename IndexType>
404
+ typename internal::traits<Derived>::Scalar minCoeff(IndexType* row, IndexType* col) const;
405
+ template<typename IndexType>
406
+ typename internal::traits<Derived>::Scalar maxCoeff(IndexType* row, IndexType* col) const;
407
+ template<typename IndexType>
408
+ typename internal::traits<Derived>::Scalar minCoeff(IndexType* index) const;
409
+ template<typename IndexType>
410
+ typename internal::traits<Derived>::Scalar maxCoeff(IndexType* index) const;
411
+
412
+ template<typename BinaryOp>
413
+ typename internal::result_of<BinaryOp(typename internal::traits<Derived>::Scalar)>::type
414
+ redux(const BinaryOp& func) const;
415
+
416
+ template<typename Visitor>
417
+ void visit(Visitor& func) const;
418
+
419
+ inline const WithFormat<Derived> format(const IOFormat& fmt) const;
420
+
421
+ /** \returns the unique coefficient of a 1x1 expression */
422
+ CoeffReturnType value() const
423
+ {
424
+ EIGEN_STATIC_ASSERT_SIZE_1x1(Derived)
425
+ eigen_assert(this->rows() == 1 && this->cols() == 1);
426
+ return derived().coeff(0,0);
427
+ }
428
+
429
+ bool all(void) const;
430
+ bool any(void) const;
431
+ Index count() const;
432
+
433
+ typedef VectorwiseOp<Derived, Horizontal> RowwiseReturnType;
434
+ typedef const VectorwiseOp<const Derived, Horizontal> ConstRowwiseReturnType;
435
+ typedef VectorwiseOp<Derived, Vertical> ColwiseReturnType;
436
+ typedef const VectorwiseOp<const Derived, Vertical> ConstColwiseReturnType;
437
+
438
+ ConstRowwiseReturnType rowwise() const;
439
+ RowwiseReturnType rowwise();
440
+ ConstColwiseReturnType colwise() const;
441
+ ColwiseReturnType colwise();
442
+
443
+ static const CwiseNullaryOp<internal::scalar_random_op<Scalar>,Derived> Random(Index rows, Index cols);
444
+ static const CwiseNullaryOp<internal::scalar_random_op<Scalar>,Derived> Random(Index size);
445
+ static const CwiseNullaryOp<internal::scalar_random_op<Scalar>,Derived> Random();
446
+
447
+ template<typename ThenDerived,typename ElseDerived>
448
+ const Select<Derived,ThenDerived,ElseDerived>
449
+ select(const DenseBase<ThenDerived>& thenMatrix,
450
+ const DenseBase<ElseDerived>& elseMatrix) const;
451
+
452
+ template<typename ThenDerived>
453
+ inline const Select<Derived,ThenDerived, typename ThenDerived::ConstantReturnType>
454
+ select(const DenseBase<ThenDerived>& thenMatrix, const typename ThenDerived::Scalar& elseScalar) const;
455
+
456
+ template<typename ElseDerived>
457
+ inline const Select<Derived, typename ElseDerived::ConstantReturnType, ElseDerived >
458
+ select(const typename ElseDerived::Scalar& thenScalar, const DenseBase<ElseDerived>& elseMatrix) const;
459
+
460
+ template<int p> RealScalar lpNorm() const;
461
+
462
+ template<int RowFactor, int ColFactor>
463
+ inline const Replicate<Derived,RowFactor,ColFactor> replicate() const;
464
+
465
+ typedef Replicate<Derived,Dynamic,Dynamic> ReplicateReturnType;
466
+ inline const ReplicateReturnType replicate(Index rowFacor,Index colFactor) const;
467
+
468
+ typedef Reverse<Derived, BothDirections> ReverseReturnType;
469
+ typedef const Reverse<const Derived, BothDirections> ConstReverseReturnType;
470
+ ReverseReturnType reverse();
471
+ ConstReverseReturnType reverse() const;
472
+ void reverseInPlace();
473
+
474
+ #define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::DenseBase
475
+ # include "../plugins/BlockMethods.h"
476
+ # ifdef EIGEN_DENSEBASE_PLUGIN
477
+ # include EIGEN_DENSEBASE_PLUGIN
478
+ # endif
479
+ #undef EIGEN_CURRENT_STORAGE_BASE_CLASS
480
+
481
+ #ifdef EIGEN2_SUPPORT
482
+
483
+ Block<Derived> corner(CornerType type, Index cRows, Index cCols);
484
+ const Block<Derived> corner(CornerType type, Index cRows, Index cCols) const;
485
+ template<int CRows, int CCols>
486
+ Block<Derived, CRows, CCols> corner(CornerType type);
487
+ template<int CRows, int CCols>
488
+ const Block<Derived, CRows, CCols> corner(CornerType type) const;
489
+
490
+ #endif // EIGEN2_SUPPORT
491
+
492
+
493
+ // disable the use of evalTo for dense objects with a nice compilation error
494
+ template<typename Dest> inline void evalTo(Dest& ) const
495
+ {
496
+ EIGEN_STATIC_ASSERT((internal::is_same<Dest,void>::value),THE_EVAL_EVALTO_FUNCTION_SHOULD_NEVER_BE_CALLED_FOR_DENSE_OBJECTS);
497
+ }
498
+
499
+ protected:
500
+ /** Default constructor. Do nothing. */
501
+ DenseBase()
502
+ {
503
+ /* Just checks for self-consistency of the flags.
504
+ * Only do it when debugging Eigen, as this borders on paranoiac and could slow compilation down
505
+ */
506
+ #ifdef EIGEN_INTERNAL_DEBUGGING
507
+ EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1, int(IsRowMajor))
508
+ && EIGEN_IMPLIES(MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1, int(!IsRowMajor))),
509
+ INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION)
510
+ #endif
511
+ }
512
+
513
+ private:
514
+ explicit DenseBase(int);
515
+ DenseBase(int,int);
516
+ template<typename OtherDerived> explicit DenseBase(const DenseBase<OtherDerived>&);
517
+ };
518
+
519
+ } // end namespace Eigen
520
+
521
+ #endif // EIGEN_DENSEBASE_H