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,99 @@
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
+ // Copyright (C) 2009-2010 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_RETURNBYVALUE_H
12
+ #define EIGEN_RETURNBYVALUE_H
13
+
14
+ namespace Eigen {
15
+
16
+ /** \class ReturnByValue
17
+ * \ingroup Core_Module
18
+ *
19
+ */
20
+
21
+ namespace internal {
22
+
23
+ template<typename Derived>
24
+ struct traits<ReturnByValue<Derived> >
25
+ : public traits<typename traits<Derived>::ReturnType>
26
+ {
27
+ enum {
28
+ // We're disabling the DirectAccess because e.g. the constructor of
29
+ // the Block-with-DirectAccess expression requires to have a coeffRef method.
30
+ // Also, we don't want to have to implement the stride stuff.
31
+ Flags = (traits<typename traits<Derived>::ReturnType>::Flags
32
+ | EvalBeforeNestingBit) & ~DirectAccessBit
33
+ };
34
+ };
35
+
36
+ /* The ReturnByValue object doesn't even have a coeff() method.
37
+ * So the only way that nesting it in an expression can work, is by evaluating it into a plain matrix.
38
+ * So internal::nested always gives the plain return matrix type.
39
+ *
40
+ * FIXME: I don't understand why we need this specialization: isn't this taken care of by the EvalBeforeNestingBit ??
41
+ */
42
+ template<typename Derived,int n,typename PlainObject>
43
+ struct nested<ReturnByValue<Derived>, n, PlainObject>
44
+ {
45
+ typedef typename traits<Derived>::ReturnType type;
46
+ };
47
+
48
+ } // end namespace internal
49
+
50
+ template<typename Derived> class ReturnByValue
51
+ : internal::no_assignment_operator, public internal::dense_xpr_base< ReturnByValue<Derived> >::type
52
+ {
53
+ public:
54
+ typedef typename internal::traits<Derived>::ReturnType ReturnType;
55
+
56
+ typedef typename internal::dense_xpr_base<ReturnByValue>::type Base;
57
+ EIGEN_DENSE_PUBLIC_INTERFACE(ReturnByValue)
58
+
59
+ template<typename Dest>
60
+ inline void evalTo(Dest& dst) const
61
+ { static_cast<const Derived*>(this)->evalTo(dst); }
62
+ inline Index rows() const { return static_cast<const Derived*>(this)->rows(); }
63
+ inline Index cols() const { return static_cast<const Derived*>(this)->cols(); }
64
+
65
+ #ifndef EIGEN_PARSED_BY_DOXYGEN
66
+ #define Unusable YOU_ARE_TRYING_TO_ACCESS_A_SINGLE_COEFFICIENT_IN_A_SPECIAL_EXPRESSION_WHERE_THAT_IS_NOT_ALLOWED_BECAUSE_THAT_WOULD_BE_INEFFICIENT
67
+ class Unusable{
68
+ Unusable(const Unusable&) {}
69
+ Unusable& operator=(const Unusable&) {return *this;}
70
+ };
71
+ const Unusable& coeff(Index) const { return *reinterpret_cast<const Unusable*>(this); }
72
+ const Unusable& coeff(Index,Index) const { return *reinterpret_cast<const Unusable*>(this); }
73
+ Unusable& coeffRef(Index) { return *reinterpret_cast<Unusable*>(this); }
74
+ Unusable& coeffRef(Index,Index) { return *reinterpret_cast<Unusable*>(this); }
75
+ template<int LoadMode> Unusable& packet(Index) const;
76
+ template<int LoadMode> Unusable& packet(Index, Index) const;
77
+ #endif
78
+ };
79
+
80
+ template<typename Derived>
81
+ template<typename OtherDerived>
82
+ Derived& DenseBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other)
83
+ {
84
+ other.evalTo(derived());
85
+ return derived();
86
+ }
87
+
88
+ template<typename Derived>
89
+ template<typename OtherDerived>
90
+ Derived& DenseBase<Derived>::lazyAssign(const ReturnByValue<OtherDerived>& other)
91
+ {
92
+ other.evalTo(derived());
93
+ return derived();
94
+ }
95
+
96
+
97
+ } // end namespace Eigen
98
+
99
+ #endif // EIGEN_RETURNBYVALUE_H
@@ -0,0 +1,224 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
5
+ // Copyright (C) 2009 Ricard Marxer <email@ricardmarxer.com>
6
+ // Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
7
+ //
8
+ // This Source Code Form is subject to the terms of the Mozilla
9
+ // Public License v. 2.0. If a copy of the MPL was not distributed
10
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
11
+
12
+ #ifndef EIGEN_REVERSE_H
13
+ #define EIGEN_REVERSE_H
14
+
15
+ namespace Eigen {
16
+
17
+ /** \class Reverse
18
+ * \ingroup Core_Module
19
+ *
20
+ * \brief Expression of the reverse of a vector or matrix
21
+ *
22
+ * \param MatrixType the type of the object of which we are taking the reverse
23
+ *
24
+ * This class represents an expression of the reverse of a vector.
25
+ * It is the return type of MatrixBase::reverse() and VectorwiseOp::reverse()
26
+ * and most of the time this is the only way it is used.
27
+ *
28
+ * \sa MatrixBase::reverse(), VectorwiseOp::reverse()
29
+ */
30
+
31
+ namespace internal {
32
+
33
+ template<typename MatrixType, int Direction>
34
+ struct traits<Reverse<MatrixType, Direction> >
35
+ : traits<MatrixType>
36
+ {
37
+ typedef typename MatrixType::Scalar Scalar;
38
+ typedef typename traits<MatrixType>::StorageKind StorageKind;
39
+ typedef typename traits<MatrixType>::XprKind XprKind;
40
+ typedef typename nested<MatrixType>::type MatrixTypeNested;
41
+ typedef typename remove_reference<MatrixTypeNested>::type _MatrixTypeNested;
42
+ enum {
43
+ RowsAtCompileTime = MatrixType::RowsAtCompileTime,
44
+ ColsAtCompileTime = MatrixType::ColsAtCompileTime,
45
+ MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
46
+ MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
47
+
48
+ // let's enable LinearAccess only with vectorization because of the product overhead
49
+ LinearAccess = ( (Direction==BothDirections) && (int(_MatrixTypeNested::Flags)&PacketAccessBit) )
50
+ ? LinearAccessBit : 0,
51
+
52
+ Flags = int(_MatrixTypeNested::Flags) & (HereditaryBits | LvalueBit | PacketAccessBit | LinearAccess),
53
+
54
+ CoeffReadCost = _MatrixTypeNested::CoeffReadCost
55
+ };
56
+ };
57
+
58
+ template<typename PacketScalar, bool ReversePacket> struct reverse_packet_cond
59
+ {
60
+ static inline PacketScalar run(const PacketScalar& x) { return preverse(x); }
61
+ };
62
+
63
+ template<typename PacketScalar> struct reverse_packet_cond<PacketScalar,false>
64
+ {
65
+ static inline PacketScalar run(const PacketScalar& x) { return x; }
66
+ };
67
+
68
+ } // end namespace internal
69
+
70
+ template<typename MatrixType, int Direction> class Reverse
71
+ : public internal::dense_xpr_base< Reverse<MatrixType, Direction> >::type
72
+ {
73
+ public:
74
+
75
+ typedef typename internal::dense_xpr_base<Reverse>::type Base;
76
+ EIGEN_DENSE_PUBLIC_INTERFACE(Reverse)
77
+ using Base::IsRowMajor;
78
+
79
+ // next line is necessary because otherwise const version of operator()
80
+ // is hidden by non-const version defined in this file
81
+ using Base::operator();
82
+
83
+ protected:
84
+ enum {
85
+ PacketSize = internal::packet_traits<Scalar>::size,
86
+ IsColMajor = !IsRowMajor,
87
+ ReverseRow = (Direction == Vertical) || (Direction == BothDirections),
88
+ ReverseCol = (Direction == Horizontal) || (Direction == BothDirections),
89
+ OffsetRow = ReverseRow && IsColMajor ? PacketSize : 1,
90
+ OffsetCol = ReverseCol && IsRowMajor ? PacketSize : 1,
91
+ ReversePacket = (Direction == BothDirections)
92
+ || ((Direction == Vertical) && IsColMajor)
93
+ || ((Direction == Horizontal) && IsRowMajor)
94
+ };
95
+ typedef internal::reverse_packet_cond<PacketScalar,ReversePacket> reverse_packet;
96
+ public:
97
+
98
+ inline Reverse(const MatrixType& matrix) : m_matrix(matrix) { }
99
+
100
+ EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Reverse)
101
+
102
+ inline Index rows() const { return m_matrix.rows(); }
103
+ inline Index cols() const { return m_matrix.cols(); }
104
+
105
+ inline Index innerStride() const
106
+ {
107
+ return -m_matrix.innerStride();
108
+ }
109
+
110
+ inline Scalar& operator()(Index row, Index col)
111
+ {
112
+ eigen_assert(row >= 0 && row < rows() && col >= 0 && col < cols());
113
+ return coeffRef(row, col);
114
+ }
115
+
116
+ inline Scalar& coeffRef(Index row, Index col)
117
+ {
118
+ return m_matrix.const_cast_derived().coeffRef(ReverseRow ? m_matrix.rows() - row - 1 : row,
119
+ ReverseCol ? m_matrix.cols() - col - 1 : col);
120
+ }
121
+
122
+ inline CoeffReturnType coeff(Index row, Index col) const
123
+ {
124
+ return m_matrix.coeff(ReverseRow ? m_matrix.rows() - row - 1 : row,
125
+ ReverseCol ? m_matrix.cols() - col - 1 : col);
126
+ }
127
+
128
+ inline CoeffReturnType coeff(Index index) const
129
+ {
130
+ return m_matrix.coeff(m_matrix.size() - index - 1);
131
+ }
132
+
133
+ inline Scalar& coeffRef(Index index)
134
+ {
135
+ return m_matrix.const_cast_derived().coeffRef(m_matrix.size() - index - 1);
136
+ }
137
+
138
+ inline Scalar& operator()(Index index)
139
+ {
140
+ eigen_assert(index >= 0 && index < m_matrix.size());
141
+ return coeffRef(index);
142
+ }
143
+
144
+ template<int LoadMode>
145
+ inline const PacketScalar packet(Index row, Index col) const
146
+ {
147
+ return reverse_packet::run(m_matrix.template packet<LoadMode>(
148
+ ReverseRow ? m_matrix.rows() - row - OffsetRow : row,
149
+ ReverseCol ? m_matrix.cols() - col - OffsetCol : col));
150
+ }
151
+
152
+ template<int LoadMode>
153
+ inline void writePacket(Index row, Index col, const PacketScalar& x)
154
+ {
155
+ m_matrix.const_cast_derived().template writePacket<LoadMode>(
156
+ ReverseRow ? m_matrix.rows() - row - OffsetRow : row,
157
+ ReverseCol ? m_matrix.cols() - col - OffsetCol : col,
158
+ reverse_packet::run(x));
159
+ }
160
+
161
+ template<int LoadMode>
162
+ inline const PacketScalar packet(Index index) const
163
+ {
164
+ return internal::preverse(m_matrix.template packet<LoadMode>( m_matrix.size() - index - PacketSize ));
165
+ }
166
+
167
+ template<int LoadMode>
168
+ inline void writePacket(Index index, const PacketScalar& x)
169
+ {
170
+ m_matrix.const_cast_derived().template writePacket<LoadMode>(m_matrix.size() - index - PacketSize, internal::preverse(x));
171
+ }
172
+
173
+ const typename internal::remove_all<typename MatrixType::Nested>::type&
174
+ nestedExpression() const
175
+ {
176
+ return m_matrix;
177
+ }
178
+
179
+ protected:
180
+ typename MatrixType::Nested m_matrix;
181
+ };
182
+
183
+ /** \returns an expression of the reverse of *this.
184
+ *
185
+ * Example: \include MatrixBase_reverse.cpp
186
+ * Output: \verbinclude MatrixBase_reverse.out
187
+ *
188
+ */
189
+ template<typename Derived>
190
+ inline typename DenseBase<Derived>::ReverseReturnType
191
+ DenseBase<Derived>::reverse()
192
+ {
193
+ return derived();
194
+ }
195
+
196
+ /** This is the const version of reverse(). */
197
+ template<typename Derived>
198
+ inline const typename DenseBase<Derived>::ConstReverseReturnType
199
+ DenseBase<Derived>::reverse() const
200
+ {
201
+ return derived();
202
+ }
203
+
204
+ /** This is the "in place" version of reverse: it reverses \c *this.
205
+ *
206
+ * In most cases it is probably better to simply use the reversed expression
207
+ * of a matrix. However, when reversing the matrix data itself is really needed,
208
+ * then this "in-place" version is probably the right choice because it provides
209
+ * the following additional features:
210
+ * - less error prone: doing the same operation with .reverse() requires special care:
211
+ * \code m = m.reverse().eval(); \endcode
212
+ * - this API allows to avoid creating a temporary (the current implementation creates a temporary, but that could be avoided using swap)
213
+ * - it allows future optimizations (cache friendliness, etc.)
214
+ *
215
+ * \sa reverse() */
216
+ template<typename Derived>
217
+ inline void DenseBase<Derived>::reverseInPlace()
218
+ {
219
+ derived() = derived().reverse().eval();
220
+ }
221
+
222
+ } // end namespace Eigen
223
+
224
+ #endif // EIGEN_REVERSE_H
@@ -0,0 +1,162 @@
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
+ //
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_SELECT_H
11
+ #define EIGEN_SELECT_H
12
+
13
+ namespace Eigen {
14
+
15
+ /** \class Select
16
+ * \ingroup Core_Module
17
+ *
18
+ * \brief Expression of a coefficient wise version of the C++ ternary operator ?:
19
+ *
20
+ * \param ConditionMatrixType the type of the \em condition expression which must be a boolean matrix
21
+ * \param ThenMatrixType the type of the \em then expression
22
+ * \param ElseMatrixType the type of the \em else expression
23
+ *
24
+ * This class represents an expression of a coefficient wise version of the C++ ternary operator ?:.
25
+ * It is the return type of DenseBase::select() and most of the time this is the only way it is used.
26
+ *
27
+ * \sa DenseBase::select(const DenseBase<ThenDerived>&, const DenseBase<ElseDerived>&) const
28
+ */
29
+
30
+ namespace internal {
31
+ template<typename ConditionMatrixType, typename ThenMatrixType, typename ElseMatrixType>
32
+ struct traits<Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >
33
+ : traits<ThenMatrixType>
34
+ {
35
+ typedef typename traits<ThenMatrixType>::Scalar Scalar;
36
+ typedef Dense StorageKind;
37
+ typedef typename traits<ThenMatrixType>::XprKind XprKind;
38
+ typedef typename ConditionMatrixType::Nested ConditionMatrixNested;
39
+ typedef typename ThenMatrixType::Nested ThenMatrixNested;
40
+ typedef typename ElseMatrixType::Nested ElseMatrixNested;
41
+ enum {
42
+ RowsAtCompileTime = ConditionMatrixType::RowsAtCompileTime,
43
+ ColsAtCompileTime = ConditionMatrixType::ColsAtCompileTime,
44
+ MaxRowsAtCompileTime = ConditionMatrixType::MaxRowsAtCompileTime,
45
+ MaxColsAtCompileTime = ConditionMatrixType::MaxColsAtCompileTime,
46
+ Flags = (unsigned int)ThenMatrixType::Flags & ElseMatrixType::Flags & HereditaryBits,
47
+ CoeffReadCost = traits<typename remove_all<ConditionMatrixNested>::type>::CoeffReadCost
48
+ + EIGEN_SIZE_MAX(traits<typename remove_all<ThenMatrixNested>::type>::CoeffReadCost,
49
+ traits<typename remove_all<ElseMatrixNested>::type>::CoeffReadCost)
50
+ };
51
+ };
52
+ }
53
+
54
+ template<typename ConditionMatrixType, typename ThenMatrixType, typename ElseMatrixType>
55
+ class Select : internal::no_assignment_operator,
56
+ public internal::dense_xpr_base< Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >::type
57
+ {
58
+ public:
59
+
60
+ typedef typename internal::dense_xpr_base<Select>::type Base;
61
+ EIGEN_DENSE_PUBLIC_INTERFACE(Select)
62
+
63
+ Select(const ConditionMatrixType& a_conditionMatrix,
64
+ const ThenMatrixType& a_thenMatrix,
65
+ const ElseMatrixType& a_elseMatrix)
66
+ : m_condition(a_conditionMatrix), m_then(a_thenMatrix), m_else(a_elseMatrix)
67
+ {
68
+ eigen_assert(m_condition.rows() == m_then.rows() && m_condition.rows() == m_else.rows());
69
+ eigen_assert(m_condition.cols() == m_then.cols() && m_condition.cols() == m_else.cols());
70
+ }
71
+
72
+ Index rows() const { return m_condition.rows(); }
73
+ Index cols() const { return m_condition.cols(); }
74
+
75
+ const Scalar coeff(Index i, Index j) const
76
+ {
77
+ if (m_condition.coeff(i,j))
78
+ return m_then.coeff(i,j);
79
+ else
80
+ return m_else.coeff(i,j);
81
+ }
82
+
83
+ const Scalar coeff(Index i) const
84
+ {
85
+ if (m_condition.coeff(i))
86
+ return m_then.coeff(i);
87
+ else
88
+ return m_else.coeff(i);
89
+ }
90
+
91
+ const ConditionMatrixType& conditionMatrix() const
92
+ {
93
+ return m_condition;
94
+ }
95
+
96
+ const ThenMatrixType& thenMatrix() const
97
+ {
98
+ return m_then;
99
+ }
100
+
101
+ const ElseMatrixType& elseMatrix() const
102
+ {
103
+ return m_else;
104
+ }
105
+
106
+ protected:
107
+ typename ConditionMatrixType::Nested m_condition;
108
+ typename ThenMatrixType::Nested m_then;
109
+ typename ElseMatrixType::Nested m_else;
110
+ };
111
+
112
+
113
+ /** \returns a matrix where each coefficient (i,j) is equal to \a thenMatrix(i,j)
114
+ * if \c *this(i,j), and \a elseMatrix(i,j) otherwise.
115
+ *
116
+ * Example: \include MatrixBase_select.cpp
117
+ * Output: \verbinclude MatrixBase_select.out
118
+ *
119
+ * \sa class Select
120
+ */
121
+ template<typename Derived>
122
+ template<typename ThenDerived,typename ElseDerived>
123
+ inline const Select<Derived,ThenDerived,ElseDerived>
124
+ DenseBase<Derived>::select(const DenseBase<ThenDerived>& thenMatrix,
125
+ const DenseBase<ElseDerived>& elseMatrix) const
126
+ {
127
+ return Select<Derived,ThenDerived,ElseDerived>(derived(), thenMatrix.derived(), elseMatrix.derived());
128
+ }
129
+
130
+ /** Version of DenseBase::select(const DenseBase&, const DenseBase&) with
131
+ * the \em else expression being a scalar value.
132
+ *
133
+ * \sa DenseBase::select(const DenseBase<ThenDerived>&, const DenseBase<ElseDerived>&) const, class Select
134
+ */
135
+ template<typename Derived>
136
+ template<typename ThenDerived>
137
+ inline const Select<Derived,ThenDerived, typename ThenDerived::ConstantReturnType>
138
+ DenseBase<Derived>::select(const DenseBase<ThenDerived>& thenMatrix,
139
+ const typename ThenDerived::Scalar& elseScalar) const
140
+ {
141
+ return Select<Derived,ThenDerived,typename ThenDerived::ConstantReturnType>(
142
+ derived(), thenMatrix.derived(), ThenDerived::Constant(rows(),cols(),elseScalar));
143
+ }
144
+
145
+ /** Version of DenseBase::select(const DenseBase&, const DenseBase&) with
146
+ * the \em then expression being a scalar value.
147
+ *
148
+ * \sa DenseBase::select(const DenseBase<ThenDerived>&, const DenseBase<ElseDerived>&) const, class Select
149
+ */
150
+ template<typename Derived>
151
+ template<typename ElseDerived>
152
+ inline const Select<Derived, typename ElseDerived::ConstantReturnType, ElseDerived >
153
+ DenseBase<Derived>::select(const typename ElseDerived::Scalar& thenScalar,
154
+ const DenseBase<ElseDerived>& elseMatrix) const
155
+ {
156
+ return Select<Derived,typename ElseDerived::ConstantReturnType,ElseDerived>(
157
+ derived(), ElseDerived::Constant(rows(),cols(),thenScalar), elseMatrix.derived());
158
+ }
159
+
160
+ } // end namespace Eigen
161
+
162
+ #endif // EIGEN_SELECT_H