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,323 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2009 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_ARRAY_H
11
+ #define EIGEN_ARRAY_H
12
+
13
+ namespace Eigen {
14
+
15
+ /** \class Array
16
+ * \ingroup Core_Module
17
+ *
18
+ * \brief General-purpose arrays with easy API for coefficient-wise operations
19
+ *
20
+ * The %Array class is very similar to the Matrix class. It provides
21
+ * general-purpose one- and two-dimensional arrays. The difference between the
22
+ * %Array and the %Matrix class is primarily in the API: the API for the
23
+ * %Array class provides easy access to coefficient-wise operations, while the
24
+ * API for the %Matrix class provides easy access to linear-algebra
25
+ * operations.
26
+ *
27
+ * This class can be extended with the help of the plugin mechanism described on the page
28
+ * \ref TopicCustomizingEigen by defining the preprocessor symbol \c EIGEN_ARRAY_PLUGIN.
29
+ *
30
+ * \sa \ref TutorialArrayClass, \ref TopicClassHierarchy
31
+ */
32
+ namespace internal {
33
+ template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
34
+ struct traits<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> > : traits<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
35
+ {
36
+ typedef ArrayXpr XprKind;
37
+ typedef ArrayBase<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> > XprBase;
38
+ };
39
+ }
40
+
41
+ template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
42
+ class Array
43
+ : public PlainObjectBase<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
44
+ {
45
+ public:
46
+
47
+ typedef PlainObjectBase<Array> Base;
48
+ EIGEN_DENSE_PUBLIC_INTERFACE(Array)
49
+
50
+ enum { Options = _Options };
51
+ typedef typename Base::PlainObject PlainObject;
52
+
53
+ protected:
54
+ template <typename Derived, typename OtherDerived, bool IsVector>
55
+ friend struct internal::conservative_resize_like_impl;
56
+
57
+ using Base::m_storage;
58
+
59
+ public:
60
+
61
+ using Base::base;
62
+ using Base::coeff;
63
+ using Base::coeffRef;
64
+
65
+ /**
66
+ * The usage of
67
+ * using Base::operator=;
68
+ * fails on MSVC. Since the code below is working with GCC and MSVC, we skipped
69
+ * the usage of 'using'. This should be done only for operator=.
70
+ */
71
+ template<typename OtherDerived>
72
+ EIGEN_STRONG_INLINE Array& operator=(const EigenBase<OtherDerived> &other)
73
+ {
74
+ return Base::operator=(other);
75
+ }
76
+
77
+ /** Copies the value of the expression \a other into \c *this with automatic resizing.
78
+ *
79
+ * *this might be resized to match the dimensions of \a other. If *this was a null matrix (not already initialized),
80
+ * it will be initialized.
81
+ *
82
+ * Note that copying a row-vector into a vector (and conversely) is allowed.
83
+ * The resizing, if any, is then done in the appropriate way so that row-vectors
84
+ * remain row-vectors and vectors remain vectors.
85
+ */
86
+ template<typename OtherDerived>
87
+ EIGEN_STRONG_INLINE Array& operator=(const ArrayBase<OtherDerived>& other)
88
+ {
89
+ return Base::_set(other);
90
+ }
91
+
92
+ /** This is a special case of the templated operator=. Its purpose is to
93
+ * prevent a default operator= from hiding the templated operator=.
94
+ */
95
+ EIGEN_STRONG_INLINE Array& operator=(const Array& other)
96
+ {
97
+ return Base::_set(other);
98
+ }
99
+
100
+ /** Default constructor.
101
+ *
102
+ * For fixed-size matrices, does nothing.
103
+ *
104
+ * For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix
105
+ * is called a null matrix. This constructor is the unique way to create null matrices: resizing
106
+ * a matrix to 0 is not supported.
107
+ *
108
+ * \sa resize(Index,Index)
109
+ */
110
+ EIGEN_STRONG_INLINE Array() : Base()
111
+ {
112
+ Base::_check_template_params();
113
+ EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
114
+ }
115
+
116
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
117
+ // FIXME is it still needed ??
118
+ /** \internal */
119
+ Array(internal::constructor_without_unaligned_array_assert)
120
+ : Base(internal::constructor_without_unaligned_array_assert())
121
+ {
122
+ Base::_check_template_params();
123
+ EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
124
+ }
125
+ #endif
126
+
127
+ #ifdef EIGEN_HAVE_RVALUE_REFERENCES
128
+ Array(Array&& other)
129
+ : Base(std::move(other))
130
+ {
131
+ Base::_check_template_params();
132
+ if (RowsAtCompileTime!=Dynamic && ColsAtCompileTime!=Dynamic)
133
+ Base::_set_noalias(other);
134
+ }
135
+ Array& operator=(Array&& other)
136
+ {
137
+ other.swap(*this);
138
+ return *this;
139
+ }
140
+ #endif
141
+
142
+ /** Constructs a vector or row-vector with given dimension. \only_for_vectors
143
+ *
144
+ * Note that this is only useful for dynamic-size vectors. For fixed-size vectors,
145
+ * it is redundant to pass the dimension here, so it makes more sense to use the default
146
+ * constructor Matrix() instead.
147
+ */
148
+ EIGEN_STRONG_INLINE explicit Array(Index dim)
149
+ : Base(dim, RowsAtCompileTime == 1 ? 1 : dim, ColsAtCompileTime == 1 ? 1 : dim)
150
+ {
151
+ Base::_check_template_params();
152
+ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Array)
153
+ eigen_assert(dim >= 0);
154
+ eigen_assert(SizeAtCompileTime == Dynamic || SizeAtCompileTime == dim);
155
+ EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
156
+ }
157
+
158
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
159
+ template<typename T0, typename T1>
160
+ EIGEN_STRONG_INLINE Array(const T0& val0, const T1& val1)
161
+ {
162
+ Base::_check_template_params();
163
+ this->template _init2<T0,T1>(val0, val1);
164
+ }
165
+ #else
166
+ /** constructs an uninitialized matrix with \a rows rows and \a cols columns.
167
+ *
168
+ * This is useful for dynamic-size matrices. For fixed-size matrices,
169
+ * it is redundant to pass these parameters, so one should use the default constructor
170
+ * Matrix() instead. */
171
+ Array(Index rows, Index cols);
172
+ /** constructs an initialized 2D vector with given coefficients */
173
+ Array(const Scalar& val0, const Scalar& val1);
174
+ #endif
175
+
176
+ /** constructs an initialized 3D vector with given coefficients */
177
+ EIGEN_STRONG_INLINE Array(const Scalar& val0, const Scalar& val1, const Scalar& val2)
178
+ {
179
+ Base::_check_template_params();
180
+ EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 3)
181
+ m_storage.data()[0] = val0;
182
+ m_storage.data()[1] = val1;
183
+ m_storage.data()[2] = val2;
184
+ }
185
+ /** constructs an initialized 4D vector with given coefficients */
186
+ EIGEN_STRONG_INLINE Array(const Scalar& val0, const Scalar& val1, const Scalar& val2, const Scalar& val3)
187
+ {
188
+ Base::_check_template_params();
189
+ EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 4)
190
+ m_storage.data()[0] = val0;
191
+ m_storage.data()[1] = val1;
192
+ m_storage.data()[2] = val2;
193
+ m_storage.data()[3] = val3;
194
+ }
195
+
196
+ explicit Array(const Scalar *data);
197
+
198
+ /** Constructor copying the value of the expression \a other */
199
+ template<typename OtherDerived>
200
+ EIGEN_STRONG_INLINE Array(const ArrayBase<OtherDerived>& other)
201
+ : Base(other.rows() * other.cols(), other.rows(), other.cols())
202
+ {
203
+ Base::_check_template_params();
204
+ Base::_set_noalias(other);
205
+ }
206
+ /** Copy constructor */
207
+ EIGEN_STRONG_INLINE Array(const Array& other)
208
+ : Base(other.rows() * other.cols(), other.rows(), other.cols())
209
+ {
210
+ Base::_check_template_params();
211
+ Base::_set_noalias(other);
212
+ }
213
+ /** Copy constructor with in-place evaluation */
214
+ template<typename OtherDerived>
215
+ EIGEN_STRONG_INLINE Array(const ReturnByValue<OtherDerived>& other)
216
+ {
217
+ Base::_check_template_params();
218
+ Base::resize(other.rows(), other.cols());
219
+ other.evalTo(*this);
220
+ }
221
+
222
+ /** \sa MatrixBase::operator=(const EigenBase<OtherDerived>&) */
223
+ template<typename OtherDerived>
224
+ EIGEN_STRONG_INLINE Array(const EigenBase<OtherDerived> &other)
225
+ : Base(other.derived().rows() * other.derived().cols(), other.derived().rows(), other.derived().cols())
226
+ {
227
+ Base::_check_template_params();
228
+ Base::_resize_to_match(other);
229
+ *this = other;
230
+ }
231
+
232
+ /** Override MatrixBase::swap() since for dynamic-sized matrices of same type it is enough to swap the
233
+ * data pointers.
234
+ */
235
+ template<typename OtherDerived>
236
+ void swap(ArrayBase<OtherDerived> const & other)
237
+ { this->_swap(other.derived()); }
238
+
239
+ inline Index innerStride() const { return 1; }
240
+ inline Index outerStride() const { return this->innerSize(); }
241
+
242
+ #ifdef EIGEN_ARRAY_PLUGIN
243
+ #include EIGEN_ARRAY_PLUGIN
244
+ #endif
245
+
246
+ private:
247
+
248
+ template<typename MatrixType, typename OtherDerived, bool SwapPointers>
249
+ friend struct internal::matrix_swap_impl;
250
+ };
251
+
252
+ /** \defgroup arraytypedefs Global array typedefs
253
+ * \ingroup Core_Module
254
+ *
255
+ * Eigen defines several typedef shortcuts for most common 1D and 2D array types.
256
+ *
257
+ * The general patterns are the following:
258
+ *
259
+ * \c ArrayRowsColsType where \c Rows and \c Cols can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for dynamic size,
260
+ * and where \c Type can be \c i for integer, \c f for float, \c d for double, \c cf for complex float, \c cd
261
+ * for complex double.
262
+ *
263
+ * For example, \c Array33d is a fixed-size 3x3 array type of doubles, and \c ArrayXXf is a dynamic-size matrix of floats.
264
+ *
265
+ * There are also \c ArraySizeType which are self-explanatory. For example, \c Array4cf is
266
+ * a fixed-size 1D array of 4 complex floats.
267
+ *
268
+ * \sa class Array
269
+ */
270
+
271
+ #define EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
272
+ /** \ingroup arraytypedefs */ \
273
+ typedef Array<Type, Size, Size> Array##SizeSuffix##SizeSuffix##TypeSuffix; \
274
+ /** \ingroup arraytypedefs */ \
275
+ typedef Array<Type, Size, 1> Array##SizeSuffix##TypeSuffix;
276
+
277
+ #define EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, Size) \
278
+ /** \ingroup arraytypedefs */ \
279
+ typedef Array<Type, Size, Dynamic> Array##Size##X##TypeSuffix; \
280
+ /** \ingroup arraytypedefs */ \
281
+ typedef Array<Type, Dynamic, Size> Array##X##Size##TypeSuffix;
282
+
283
+ #define EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
284
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 2, 2) \
285
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 3, 3) \
286
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 4, 4) \
287
+ EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
288
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
289
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
290
+ EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
291
+
292
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(int, i)
293
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(float, f)
294
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(double, d)
295
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex<float>, cf)
296
+ EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex<double>, cd)
297
+
298
+ #undef EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES
299
+ #undef EIGEN_MAKE_ARRAY_TYPEDEFS
300
+
301
+ #undef EIGEN_MAKE_ARRAY_TYPEDEFS_LARGE
302
+
303
+ #define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \
304
+ using Eigen::Matrix##SizeSuffix##TypeSuffix; \
305
+ using Eigen::Vector##SizeSuffix##TypeSuffix; \
306
+ using Eigen::RowVector##SizeSuffix##TypeSuffix;
307
+
308
+ #define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(TypeSuffix) \
309
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 2) \
310
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 3) \
311
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 4) \
312
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, X) \
313
+
314
+ #define EIGEN_USING_ARRAY_TYPEDEFS \
315
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(i) \
316
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(f) \
317
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(d) \
318
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(cf) \
319
+ EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(cd)
320
+
321
+ } // end namespace Eigen
322
+
323
+ #endif // EIGEN_ARRAY_H
@@ -0,0 +1,226 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2009 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_ARRAYBASE_H
11
+ #define EIGEN_ARRAYBASE_H
12
+
13
+ namespace Eigen {
14
+
15
+ template<typename ExpressionType> class MatrixWrapper;
16
+
17
+ /** \class ArrayBase
18
+ * \ingroup Core_Module
19
+ *
20
+ * \brief Base class for all 1D and 2D array, and related expressions
21
+ *
22
+ * An array is similar to a dense vector or matrix. While matrices are mathematical
23
+ * objects with well defined linear algebra operators, an array is just a collection
24
+ * of scalar values arranged in a one or two dimensionnal fashion. As the main consequence,
25
+ * all operations applied to an array are performed coefficient wise. Furthermore,
26
+ * arrays support scalar math functions of the c++ standard library (e.g., std::sin(x)), and convenient
27
+ * constructors allowing to easily write generic code working for both scalar values
28
+ * and arrays.
29
+ *
30
+ * This class is the base that is inherited by all array expression types.
31
+ *
32
+ * \tparam Derived is the derived type, e.g., an array or an expression type.
33
+ *
34
+ * This class can be extended with the help of the plugin mechanism described on the page
35
+ * \ref TopicCustomizingEigen by defining the preprocessor symbol \c EIGEN_ARRAYBASE_PLUGIN.
36
+ *
37
+ * \sa class MatrixBase, \ref TopicClassHierarchy
38
+ */
39
+ template<typename Derived> class ArrayBase
40
+ : public DenseBase<Derived>
41
+ {
42
+ public:
43
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
44
+ /** The base class for a given storage type. */
45
+ typedef ArrayBase StorageBaseType;
46
+
47
+ typedef ArrayBase Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl;
48
+
49
+ typedef typename internal::traits<Derived>::StorageKind StorageKind;
50
+ typedef typename internal::traits<Derived>::Index Index;
51
+ typedef typename internal::traits<Derived>::Scalar Scalar;
52
+ typedef typename internal::packet_traits<Scalar>::type PacketScalar;
53
+ typedef typename NumTraits<Scalar>::Real RealScalar;
54
+
55
+ typedef DenseBase<Derived> Base;
56
+ using Base::operator*;
57
+ using Base::RowsAtCompileTime;
58
+ using Base::ColsAtCompileTime;
59
+ using Base::SizeAtCompileTime;
60
+ using Base::MaxRowsAtCompileTime;
61
+ using Base::MaxColsAtCompileTime;
62
+ using Base::MaxSizeAtCompileTime;
63
+ using Base::IsVectorAtCompileTime;
64
+ using Base::Flags;
65
+ using Base::CoeffReadCost;
66
+
67
+ using Base::derived;
68
+ using Base::const_cast_derived;
69
+ using Base::rows;
70
+ using Base::cols;
71
+ using Base::size;
72
+ using Base::coeff;
73
+ using Base::coeffRef;
74
+ using Base::lazyAssign;
75
+ using Base::operator=;
76
+ using Base::operator+=;
77
+ using Base::operator-=;
78
+ using Base::operator*=;
79
+ using Base::operator/=;
80
+
81
+ typedef typename Base::CoeffReturnType CoeffReturnType;
82
+
83
+ #endif // not EIGEN_PARSED_BY_DOXYGEN
84
+
85
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
86
+ /** \internal the plain matrix type corresponding to this expression. Note that is not necessarily
87
+ * exactly the return type of eval(): in the case of plain matrices, the return type of eval() is a const
88
+ * reference to a matrix, not a matrix! It is however guaranteed that the return type of eval() is either
89
+ * PlainObject or const PlainObject&.
90
+ */
91
+ typedef Array<typename internal::traits<Derived>::Scalar,
92
+ internal::traits<Derived>::RowsAtCompileTime,
93
+ internal::traits<Derived>::ColsAtCompileTime,
94
+ AutoAlign | (internal::traits<Derived>::Flags&RowMajorBit ? RowMajor : ColMajor),
95
+ internal::traits<Derived>::MaxRowsAtCompileTime,
96
+ internal::traits<Derived>::MaxColsAtCompileTime
97
+ > PlainObject;
98
+
99
+
100
+ /** \internal Represents a matrix with all coefficients equal to one another*/
101
+ typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,Derived> ConstantReturnType;
102
+ #endif // not EIGEN_PARSED_BY_DOXYGEN
103
+
104
+ #define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::ArrayBase
105
+ # include "../plugins/CommonCwiseUnaryOps.h"
106
+ # include "../plugins/MatrixCwiseUnaryOps.h"
107
+ # include "../plugins/ArrayCwiseUnaryOps.h"
108
+ # include "../plugins/CommonCwiseBinaryOps.h"
109
+ # include "../plugins/MatrixCwiseBinaryOps.h"
110
+ # include "../plugins/ArrayCwiseBinaryOps.h"
111
+ # ifdef EIGEN_ARRAYBASE_PLUGIN
112
+ # include EIGEN_ARRAYBASE_PLUGIN
113
+ # endif
114
+ #undef EIGEN_CURRENT_STORAGE_BASE_CLASS
115
+
116
+ /** Special case of the template operator=, in order to prevent the compiler
117
+ * from generating a default operator= (issue hit with g++ 4.1)
118
+ */
119
+ Derived& operator=(const ArrayBase& other)
120
+ {
121
+ return internal::assign_selector<Derived,Derived>::run(derived(), other.derived());
122
+ }
123
+
124
+ Derived& operator+=(const Scalar& scalar)
125
+ { return *this = derived() + scalar; }
126
+ Derived& operator-=(const Scalar& scalar)
127
+ { return *this = derived() - scalar; }
128
+
129
+ template<typename OtherDerived>
130
+ Derived& operator+=(const ArrayBase<OtherDerived>& other);
131
+ template<typename OtherDerived>
132
+ Derived& operator-=(const ArrayBase<OtherDerived>& other);
133
+
134
+ template<typename OtherDerived>
135
+ Derived& operator*=(const ArrayBase<OtherDerived>& other);
136
+
137
+ template<typename OtherDerived>
138
+ Derived& operator/=(const ArrayBase<OtherDerived>& other);
139
+
140
+ public:
141
+ ArrayBase<Derived>& array() { return *this; }
142
+ const ArrayBase<Derived>& array() const { return *this; }
143
+
144
+ /** \returns an \link Eigen::MatrixBase Matrix \endlink expression of this array
145
+ * \sa MatrixBase::array() */
146
+ MatrixWrapper<Derived> matrix() { return derived(); }
147
+ const MatrixWrapper<const Derived> matrix() const { return derived(); }
148
+
149
+ // template<typename Dest>
150
+ // inline void evalTo(Dest& dst) const { dst = matrix(); }
151
+
152
+ protected:
153
+ ArrayBase() : Base() {}
154
+
155
+ private:
156
+ explicit ArrayBase(Index);
157
+ ArrayBase(Index,Index);
158
+ template<typename OtherDerived> explicit ArrayBase(const ArrayBase<OtherDerived>&);
159
+ protected:
160
+ // mixing arrays and matrices is not legal
161
+ template<typename OtherDerived> Derived& operator+=(const MatrixBase<OtherDerived>& )
162
+ {EIGEN_STATIC_ASSERT(std::ptrdiff_t(sizeof(typename OtherDerived::Scalar))==-1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES); return *this;}
163
+ // mixing arrays and matrices is not legal
164
+ template<typename OtherDerived> Derived& operator-=(const MatrixBase<OtherDerived>& )
165
+ {EIGEN_STATIC_ASSERT(std::ptrdiff_t(sizeof(typename OtherDerived::Scalar))==-1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES); return *this;}
166
+ };
167
+
168
+ /** replaces \c *this by \c *this - \a other.
169
+ *
170
+ * \returns a reference to \c *this
171
+ */
172
+ template<typename Derived>
173
+ template<typename OtherDerived>
174
+ EIGEN_STRONG_INLINE Derived &
175
+ ArrayBase<Derived>::operator-=(const ArrayBase<OtherDerived> &other)
176
+ {
177
+ SelfCwiseBinaryOp<internal::scalar_difference_op<Scalar>, Derived, OtherDerived> tmp(derived());
178
+ tmp = other.derived();
179
+ return derived();
180
+ }
181
+
182
+ /** replaces \c *this by \c *this + \a other.
183
+ *
184
+ * \returns a reference to \c *this
185
+ */
186
+ template<typename Derived>
187
+ template<typename OtherDerived>
188
+ EIGEN_STRONG_INLINE Derived &
189
+ ArrayBase<Derived>::operator+=(const ArrayBase<OtherDerived>& other)
190
+ {
191
+ SelfCwiseBinaryOp<internal::scalar_sum_op<Scalar>, Derived, OtherDerived> tmp(derived());
192
+ tmp = other.derived();
193
+ return derived();
194
+ }
195
+
196
+ /** replaces \c *this by \c *this * \a other coefficient wise.
197
+ *
198
+ * \returns a reference to \c *this
199
+ */
200
+ template<typename Derived>
201
+ template<typename OtherDerived>
202
+ EIGEN_STRONG_INLINE Derived &
203
+ ArrayBase<Derived>::operator*=(const ArrayBase<OtherDerived>& other)
204
+ {
205
+ SelfCwiseBinaryOp<internal::scalar_product_op<Scalar>, Derived, OtherDerived> tmp(derived());
206
+ tmp = other.derived();
207
+ return derived();
208
+ }
209
+
210
+ /** replaces \c *this by \c *this / \a other coefficient wise.
211
+ *
212
+ * \returns a reference to \c *this
213
+ */
214
+ template<typename Derived>
215
+ template<typename OtherDerived>
216
+ EIGEN_STRONG_INLINE Derived &
217
+ ArrayBase<Derived>::operator/=(const ArrayBase<OtherDerived>& other)
218
+ {
219
+ SelfCwiseBinaryOp<internal::scalar_quotient_op<Scalar>, Derived, OtherDerived> tmp(derived());
220
+ tmp = other.derived();
221
+ return derived();
222
+ }
223
+
224
+ } // end namespace Eigen
225
+
226
+ #endif // EIGEN_ARRAYBASE_H