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,134 @@
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
+ // Copyright (C) 2009 Hauke Heibel <hauke.heibel@googlemail.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_STDDEQUE_H
12
+ #define EIGEN_STDDEQUE_H
13
+
14
+ #include "details.h"
15
+
16
+ // Define the explicit instantiation (e.g. necessary for the Intel compiler)
17
+ #if defined(__INTEL_COMPILER) || defined(__GNUC__)
18
+ #define EIGEN_EXPLICIT_STL_DEQUE_INSTANTIATION(...) template class std::deque<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> >;
19
+ #else
20
+ #define EIGEN_EXPLICIT_STL_DEQUE_INSTANTIATION(...)
21
+ #endif
22
+
23
+ /**
24
+ * This section contains a convenience MACRO which allows an easy specialization of
25
+ * std::deque such that for data types with alignment issues the correct allocator
26
+ * is used automatically.
27
+ */
28
+ #define EIGEN_DEFINE_STL_DEQUE_SPECIALIZATION(...) \
29
+ EIGEN_EXPLICIT_STL_DEQUE_INSTANTIATION(__VA_ARGS__) \
30
+ namespace std \
31
+ { \
32
+ template<typename _Ay> \
33
+ class deque<__VA_ARGS__, _Ay> \
34
+ : public deque<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > \
35
+ { \
36
+ typedef deque<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > deque_base; \
37
+ public: \
38
+ typedef __VA_ARGS__ value_type; \
39
+ typedef typename deque_base::allocator_type allocator_type; \
40
+ typedef typename deque_base::size_type size_type; \
41
+ typedef typename deque_base::iterator iterator; \
42
+ explicit deque(const allocator_type& a = allocator_type()) : deque_base(a) {} \
43
+ template<typename InputIterator> \
44
+ deque(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : deque_base(first, last, a) {} \
45
+ deque(const deque& c) : deque_base(c) {} \
46
+ explicit deque(size_type num, const value_type& val = value_type()) : deque_base(num, val) {} \
47
+ deque(iterator start, iterator end) : deque_base(start, end) {} \
48
+ deque& operator=(const deque& x) { \
49
+ deque_base::operator=(x); \
50
+ return *this; \
51
+ } \
52
+ }; \
53
+ }
54
+
55
+ // check whether we really need the std::deque specialization
56
+ #if !(defined(_GLIBCXX_DEQUE) && (!EIGEN_GNUC_AT_LEAST(4,1))) /* Note that before gcc-4.1 we already have: std::deque::resize(size_type,const T&). */
57
+
58
+ namespace std {
59
+
60
+ #define EIGEN_STD_DEQUE_SPECIALIZATION_BODY \
61
+ public: \
62
+ typedef T value_type; \
63
+ typedef typename deque_base::allocator_type allocator_type; \
64
+ typedef typename deque_base::size_type size_type; \
65
+ typedef typename deque_base::iterator iterator; \
66
+ typedef typename deque_base::const_iterator const_iterator; \
67
+ explicit deque(const allocator_type& a = allocator_type()) : deque_base(a) {} \
68
+ template<typename InputIterator> \
69
+ deque(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) \
70
+ : deque_base(first, last, a) {} \
71
+ deque(const deque& c) : deque_base(c) {} \
72
+ explicit deque(size_type num, const value_type& val = value_type()) : deque_base(num, val) {} \
73
+ deque(iterator start, iterator end) : deque_base(start, end) {} \
74
+ deque& operator=(const deque& x) { \
75
+ deque_base::operator=(x); \
76
+ return *this; \
77
+ }
78
+
79
+ template<typename T>
80
+ class deque<T,EIGEN_ALIGNED_ALLOCATOR<T> >
81
+ : public deque<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T),
82
+ Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> >
83
+ {
84
+ typedef deque<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T),
85
+ Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> > deque_base;
86
+ EIGEN_STD_DEQUE_SPECIALIZATION_BODY
87
+
88
+ void resize(size_type new_size)
89
+ { resize(new_size, T()); }
90
+
91
+ #if defined(_DEQUE_)
92
+ // workaround MSVC std::deque implementation
93
+ void resize(size_type new_size, const value_type& x)
94
+ {
95
+ if (deque_base::size() < new_size)
96
+ deque_base::_Insert_n(deque_base::end(), new_size - deque_base::size(), x);
97
+ else if (new_size < deque_base::size())
98
+ deque_base::erase(deque_base::begin() + new_size, deque_base::end());
99
+ }
100
+ void push_back(const value_type& x)
101
+ { deque_base::push_back(x); }
102
+ void push_front(const value_type& x)
103
+ { deque_base::push_front(x); }
104
+ using deque_base::insert;
105
+ iterator insert(const_iterator position, const value_type& x)
106
+ { return deque_base::insert(position,x); }
107
+ void insert(const_iterator position, size_type new_size, const value_type& x)
108
+ { deque_base::insert(position, new_size, x); }
109
+ #elif defined(_GLIBCXX_DEQUE) && EIGEN_GNUC_AT_LEAST(4,2)
110
+ // workaround GCC std::deque implementation
111
+ void resize(size_type new_size, const value_type& x)
112
+ {
113
+ if (new_size < deque_base::size())
114
+ deque_base::_M_erase_at_end(this->_M_impl._M_start + new_size);
115
+ else
116
+ deque_base::insert(deque_base::end(), new_size - deque_base::size(), x);
117
+ }
118
+ #else
119
+ // either GCC 4.1 or non-GCC
120
+ // default implementation which should always work.
121
+ void resize(size_type new_size, const value_type& x)
122
+ {
123
+ if (new_size < deque_base::size())
124
+ deque_base::erase(deque_base::begin() + new_size, deque_base::end());
125
+ else if (new_size > deque_base::size())
126
+ deque_base::insert(deque_base::end(), new_size - deque_base::size(), x);
127
+ }
128
+ #endif
129
+ };
130
+ }
131
+
132
+ #endif // check whether specialization is actually required
133
+
134
+ #endif // EIGEN_STDDEQUE_H
@@ -0,0 +1,114 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2009 Hauke Heibel <hauke.heibel@googlemail.com>
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_STDLIST_H
11
+ #define EIGEN_STDLIST_H
12
+
13
+ #include "details.h"
14
+
15
+ // Define the explicit instantiation (e.g. necessary for the Intel compiler)
16
+ #if defined(__INTEL_COMPILER) || defined(__GNUC__)
17
+ #define EIGEN_EXPLICIT_STL_LIST_INSTANTIATION(...) template class std::list<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> >;
18
+ #else
19
+ #define EIGEN_EXPLICIT_STL_LIST_INSTANTIATION(...)
20
+ #endif
21
+
22
+ /**
23
+ * This section contains a convenience MACRO which allows an easy specialization of
24
+ * std::list such that for data types with alignment issues the correct allocator
25
+ * is used automatically.
26
+ */
27
+ #define EIGEN_DEFINE_STL_LIST_SPECIALIZATION(...) \
28
+ EIGEN_EXPLICIT_STL_LIST_INSTANTIATION(__VA_ARGS__) \
29
+ namespace std \
30
+ { \
31
+ template<typename _Ay> \
32
+ class list<__VA_ARGS__, _Ay> \
33
+ : public list<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > \
34
+ { \
35
+ typedef list<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > list_base; \
36
+ public: \
37
+ typedef __VA_ARGS__ value_type; \
38
+ typedef typename list_base::allocator_type allocator_type; \
39
+ typedef typename list_base::size_type size_type; \
40
+ typedef typename list_base::iterator iterator; \
41
+ explicit list(const allocator_type& a = allocator_type()) : list_base(a) {} \
42
+ template<typename InputIterator> \
43
+ list(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : list_base(first, last, a) {} \
44
+ list(const list& c) : list_base(c) {} \
45
+ explicit list(size_type num, const value_type& val = value_type()) : list_base(num, val) {} \
46
+ list(iterator start, iterator end) : list_base(start, end) {} \
47
+ list& operator=(const list& x) { \
48
+ list_base::operator=(x); \
49
+ return *this; \
50
+ } \
51
+ }; \
52
+ }
53
+
54
+ // check whether we really need the std::vector specialization
55
+ #if !(defined(_GLIBCXX_VECTOR) && (!EIGEN_GNUC_AT_LEAST(4,1))) /* Note that before gcc-4.1 we already have: std::list::resize(size_type,const T&). */
56
+
57
+ namespace std
58
+ {
59
+
60
+ #define EIGEN_STD_LIST_SPECIALIZATION_BODY \
61
+ public: \
62
+ typedef T value_type; \
63
+ typedef typename list_base::allocator_type allocator_type; \
64
+ typedef typename list_base::size_type size_type; \
65
+ typedef typename list_base::iterator iterator; \
66
+ typedef typename list_base::const_iterator const_iterator; \
67
+ explicit list(const allocator_type& a = allocator_type()) : list_base(a) {} \
68
+ template<typename InputIterator> \
69
+ list(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) \
70
+ : list_base(first, last, a) {} \
71
+ list(const list& c) : list_base(c) {} \
72
+ explicit list(size_type num, const value_type& val = value_type()) : list_base(num, val) {} \
73
+ list(iterator start, iterator end) : list_base(start, end) {} \
74
+ list& operator=(const list& x) { \
75
+ list_base::operator=(x); \
76
+ return *this; \
77
+ }
78
+
79
+ template<typename T>
80
+ class list<T,EIGEN_ALIGNED_ALLOCATOR<T> >
81
+ : public list<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T),
82
+ Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> >
83
+ {
84
+ typedef list<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T),
85
+ Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> > list_base;
86
+ EIGEN_STD_LIST_SPECIALIZATION_BODY
87
+
88
+ void resize(size_type new_size)
89
+ { resize(new_size, T()); }
90
+
91
+ void resize(size_type new_size, const value_type& x)
92
+ {
93
+ if (list_base::size() < new_size)
94
+ list_base::insert(list_base::end(), new_size - list_base::size(), x);
95
+ else
96
+ while (new_size < list_base::size()) list_base::pop_back();
97
+ }
98
+
99
+ #if defined(_LIST_)
100
+ // workaround MSVC std::list implementation
101
+ void push_back(const value_type& x)
102
+ { list_base::push_back(x); }
103
+ using list_base::insert;
104
+ iterator insert(const_iterator position, const value_type& x)
105
+ { return list_base::insert(position,x); }
106
+ void insert(const_iterator position, size_type new_size, const value_type& x)
107
+ { list_base::insert(position, new_size, x); }
108
+ #endif
109
+ };
110
+ }
111
+
112
+ #endif // check whether specialization is actually required
113
+
114
+ #endif // EIGEN_STDLIST_H
@@ -0,0 +1,126 @@
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
+ // Copyright (C) 2009 Hauke Heibel <hauke.heibel@googlemail.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_STDVECTOR_H
12
+ #define EIGEN_STDVECTOR_H
13
+
14
+ #include "details.h"
15
+
16
+ /**
17
+ * This section contains a convenience MACRO which allows an easy specialization of
18
+ * std::vector such that for data types with alignment issues the correct allocator
19
+ * is used automatically.
20
+ */
21
+ #define EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(...) \
22
+ namespace std \
23
+ { \
24
+ template<> \
25
+ class vector<__VA_ARGS__, std::allocator<__VA_ARGS__> > \
26
+ : public vector<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > \
27
+ { \
28
+ typedef vector<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > vector_base; \
29
+ public: \
30
+ typedef __VA_ARGS__ value_type; \
31
+ typedef vector_base::allocator_type allocator_type; \
32
+ typedef vector_base::size_type size_type; \
33
+ typedef vector_base::iterator iterator; \
34
+ explicit vector(const allocator_type& a = allocator_type()) : vector_base(a) {} \
35
+ template<typename InputIterator> \
36
+ vector(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : vector_base(first, last, a) {} \
37
+ vector(const vector& c) : vector_base(c) {} \
38
+ explicit vector(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
39
+ vector(iterator start, iterator end) : vector_base(start, end) {} \
40
+ vector& operator=(const vector& x) { \
41
+ vector_base::operator=(x); \
42
+ return *this; \
43
+ } \
44
+ }; \
45
+ }
46
+
47
+ namespace std {
48
+
49
+ #define EIGEN_STD_VECTOR_SPECIALIZATION_BODY \
50
+ public: \
51
+ typedef T value_type; \
52
+ typedef typename vector_base::allocator_type allocator_type; \
53
+ typedef typename vector_base::size_type size_type; \
54
+ typedef typename vector_base::iterator iterator; \
55
+ typedef typename vector_base::const_iterator const_iterator; \
56
+ explicit vector(const allocator_type& a = allocator_type()) : vector_base(a) {} \
57
+ template<typename InputIterator> \
58
+ vector(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) \
59
+ : vector_base(first, last, a) {} \
60
+ vector(const vector& c) : vector_base(c) {} \
61
+ explicit vector(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
62
+ vector(iterator start, iterator end) : vector_base(start, end) {} \
63
+ vector& operator=(const vector& x) { \
64
+ vector_base::operator=(x); \
65
+ return *this; \
66
+ }
67
+
68
+ template<typename T>
69
+ class vector<T,EIGEN_ALIGNED_ALLOCATOR<T> >
70
+ : public vector<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T),
71
+ Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> >
72
+ {
73
+ typedef vector<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T),
74
+ Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> > vector_base;
75
+ EIGEN_STD_VECTOR_SPECIALIZATION_BODY
76
+
77
+ void resize(size_type new_size)
78
+ { resize(new_size, T()); }
79
+
80
+ #if defined(_VECTOR_)
81
+ // workaround MSVC std::vector implementation
82
+ void resize(size_type new_size, const value_type& x)
83
+ {
84
+ if (vector_base::size() < new_size)
85
+ vector_base::_Insert_n(vector_base::end(), new_size - vector_base::size(), x);
86
+ else if (new_size < vector_base::size())
87
+ vector_base::erase(vector_base::begin() + new_size, vector_base::end());
88
+ }
89
+ void push_back(const value_type& x)
90
+ { vector_base::push_back(x); }
91
+ using vector_base::insert;
92
+ iterator insert(const_iterator position, const value_type& x)
93
+ { return vector_base::insert(position,x); }
94
+ void insert(const_iterator position, size_type new_size, const value_type& x)
95
+ { vector_base::insert(position, new_size, x); }
96
+ #elif defined(_GLIBCXX_VECTOR) && (!(EIGEN_GNUC_AT_LEAST(4,1)))
97
+ /* Note that before gcc-4.1 we already have: std::vector::resize(size_type,const T&).
98
+ * However, this specialization is still needed to make the above EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION trick to work. */
99
+ void resize(size_type new_size, const value_type& x)
100
+ {
101
+ vector_base::resize(new_size,x);
102
+ }
103
+ #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,2)
104
+ // workaround GCC std::vector implementation
105
+ void resize(size_type new_size, const value_type& x)
106
+ {
107
+ if (new_size < vector_base::size())
108
+ vector_base::_M_erase_at_end(this->_M_impl._M_start + new_size);
109
+ else
110
+ vector_base::insert(vector_base::end(), new_size - vector_base::size(), x);
111
+ }
112
+ #else
113
+ // either GCC 4.1 or non-GCC
114
+ // default implementation which should always work.
115
+ void resize(size_type new_size, const value_type& x)
116
+ {
117
+ if (new_size < vector_base::size())
118
+ vector_base::erase(vector_base::begin() + new_size, vector_base::end());
119
+ else if (new_size > vector_base::size())
120
+ vector_base::insert(vector_base::end(), new_size - vector_base::size(), x);
121
+ }
122
+ #endif
123
+ };
124
+ }
125
+
126
+ #endif // EIGEN_STDVECTOR_H
@@ -0,0 +1,84 @@
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
+ // Copyright (C) 2009 Hauke Heibel <hauke.heibel@googlemail.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_STL_DETAILS_H
12
+ #define EIGEN_STL_DETAILS_H
13
+
14
+ #ifndef EIGEN_ALIGNED_ALLOCATOR
15
+ #define EIGEN_ALIGNED_ALLOCATOR Eigen::aligned_allocator
16
+ #endif
17
+
18
+ namespace Eigen {
19
+
20
+ // This one is needed to prevent reimplementing the whole std::vector.
21
+ template <class T>
22
+ class aligned_allocator_indirection : public EIGEN_ALIGNED_ALLOCATOR<T>
23
+ {
24
+ public:
25
+ typedef size_t size_type;
26
+ typedef ptrdiff_t difference_type;
27
+ typedef T* pointer;
28
+ typedef const T* const_pointer;
29
+ typedef T& reference;
30
+ typedef const T& const_reference;
31
+ typedef T value_type;
32
+
33
+ template<class U>
34
+ struct rebind
35
+ {
36
+ typedef aligned_allocator_indirection<U> other;
37
+ };
38
+
39
+ aligned_allocator_indirection() {}
40
+ aligned_allocator_indirection(const aligned_allocator_indirection& ) : EIGEN_ALIGNED_ALLOCATOR<T>() {}
41
+ aligned_allocator_indirection(const EIGEN_ALIGNED_ALLOCATOR<T>& ) {}
42
+ template<class U>
43
+ aligned_allocator_indirection(const aligned_allocator_indirection<U>& ) {}
44
+ template<class U>
45
+ aligned_allocator_indirection(const EIGEN_ALIGNED_ALLOCATOR<U>& ) {}
46
+ ~aligned_allocator_indirection() {}
47
+ };
48
+
49
+ #ifdef _MSC_VER
50
+
51
+ // sometimes, MSVC detects, at compile time, that the argument x
52
+ // in std::vector::resize(size_t s,T x) won't be aligned and generate an error
53
+ // even if this function is never called. Whence this little wrapper.
54
+ #define EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T) \
55
+ typename Eigen::internal::conditional< \
56
+ Eigen::internal::is_arithmetic<T>::value, \
57
+ T, \
58
+ Eigen::internal::workaround_msvc_stl_support<T> \
59
+ >::type
60
+
61
+ namespace internal {
62
+ template<typename T> struct workaround_msvc_stl_support : public T
63
+ {
64
+ inline workaround_msvc_stl_support() : T() {}
65
+ inline workaround_msvc_stl_support(const T& other) : T(other) {}
66
+ inline operator T& () { return *static_cast<T*>(this); }
67
+ inline operator const T& () const { return *static_cast<const T*>(this); }
68
+ template<typename OtherT>
69
+ inline T& operator=(const OtherT& other)
70
+ { T::operator=(other); return *this; }
71
+ inline workaround_msvc_stl_support& operator=(const workaround_msvc_stl_support& other)
72
+ { T::operator=(other); return *this; }
73
+ };
74
+ }
75
+
76
+ #else
77
+
78
+ #define EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T) T
79
+
80
+ #endif
81
+
82
+ }
83
+
84
+ #endif // EIGEN_STL_DETAILS_H