tomoto 0.2.2 → 0.3.0

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 (369) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +8 -10
  4. data/ext/tomoto/ct.cpp +11 -11
  5. data/ext/tomoto/dmr.cpp +14 -13
  6. data/ext/tomoto/dt.cpp +14 -14
  7. data/ext/tomoto/extconf.rb +7 -5
  8. data/ext/tomoto/gdmr.cpp +7 -7
  9. data/ext/tomoto/hdp.cpp +9 -9
  10. data/ext/tomoto/hlda.cpp +13 -13
  11. data/ext/tomoto/hpa.cpp +5 -5
  12. data/ext/tomoto/lda.cpp +42 -39
  13. data/ext/tomoto/llda.cpp +6 -6
  14. data/ext/tomoto/mglda.cpp +15 -15
  15. data/ext/tomoto/pa.cpp +6 -6
  16. data/ext/tomoto/plda.cpp +6 -6
  17. data/ext/tomoto/slda.cpp +8 -8
  18. data/ext/tomoto/{ext.cpp → tomoto.cpp} +8 -8
  19. data/ext/tomoto/utils.h +16 -70
  20. data/lib/tomoto/version.rb +1 -1
  21. data/lib/tomoto.rb +5 -1
  22. data/vendor/EigenRand/EigenRand/Core.h +10 -10
  23. data/vendor/EigenRand/EigenRand/Dists/Basic.h +208 -9
  24. data/vendor/EigenRand/EigenRand/Dists/Discrete.h +52 -31
  25. data/vendor/EigenRand/EigenRand/Dists/GammaPoisson.h +9 -8
  26. data/vendor/EigenRand/EigenRand/Dists/NormalExp.h +28 -21
  27. data/vendor/EigenRand/EigenRand/EigenRand +11 -6
  28. data/vendor/EigenRand/EigenRand/Macro.h +13 -7
  29. data/vendor/EigenRand/EigenRand/MorePacketMath.h +348 -740
  30. data/vendor/EigenRand/EigenRand/MvDists/Multinomial.h +5 -3
  31. data/vendor/EigenRand/EigenRand/MvDists/MvNormal.h +9 -3
  32. data/vendor/EigenRand/EigenRand/PacketFilter.h +11 -253
  33. data/vendor/EigenRand/EigenRand/PacketRandomEngine.h +21 -47
  34. data/vendor/EigenRand/EigenRand/RandUtils.h +50 -344
  35. data/vendor/EigenRand/EigenRand/arch/AVX/MorePacketMath.h +619 -0
  36. data/vendor/EigenRand/EigenRand/arch/AVX/PacketFilter.h +149 -0
  37. data/vendor/EigenRand/EigenRand/arch/AVX/RandUtils.h +228 -0
  38. data/vendor/EigenRand/EigenRand/arch/NEON/MorePacketMath.h +473 -0
  39. data/vendor/EigenRand/EigenRand/arch/NEON/PacketFilter.h +142 -0
  40. data/vendor/EigenRand/EigenRand/arch/NEON/RandUtils.h +126 -0
  41. data/vendor/EigenRand/EigenRand/arch/SSE/MorePacketMath.h +501 -0
  42. data/vendor/EigenRand/EigenRand/arch/SSE/PacketFilter.h +133 -0
  43. data/vendor/EigenRand/EigenRand/arch/SSE/RandUtils.h +120 -0
  44. data/vendor/EigenRand/EigenRand/doc.h +24 -12
  45. data/vendor/EigenRand/README.md +57 -4
  46. data/vendor/eigen/COPYING.APACHE +203 -0
  47. data/vendor/eigen/COPYING.BSD +1 -1
  48. data/vendor/eigen/COPYING.MINPACK +51 -52
  49. data/vendor/eigen/Eigen/Cholesky +0 -1
  50. data/vendor/eigen/Eigen/Core +112 -265
  51. data/vendor/eigen/Eigen/Eigenvalues +2 -3
  52. data/vendor/eigen/Eigen/Geometry +5 -8
  53. data/vendor/eigen/Eigen/Householder +0 -1
  54. data/vendor/eigen/Eigen/Jacobi +0 -1
  55. data/vendor/eigen/Eigen/KLUSupport +41 -0
  56. data/vendor/eigen/Eigen/LU +2 -5
  57. data/vendor/eigen/Eigen/OrderingMethods +0 -3
  58. data/vendor/eigen/Eigen/PaStiXSupport +1 -0
  59. data/vendor/eigen/Eigen/PardisoSupport +0 -0
  60. data/vendor/eigen/Eigen/QR +2 -3
  61. data/vendor/eigen/Eigen/QtAlignedMalloc +0 -1
  62. data/vendor/eigen/Eigen/SVD +0 -1
  63. data/vendor/eigen/Eigen/Sparse +0 -2
  64. data/vendor/eigen/Eigen/SparseCholesky +0 -8
  65. data/vendor/eigen/Eigen/SparseLU +4 -0
  66. data/vendor/eigen/Eigen/SparseQR +0 -1
  67. data/vendor/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
  68. data/vendor/eigen/Eigen/src/Cholesky/LLT.h +39 -23
  69. data/vendor/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
  70. data/vendor/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
  71. data/vendor/eigen/Eigen/src/Core/Array.h +99 -11
  72. data/vendor/eigen/Eigen/src/Core/ArrayBase.h +3 -3
  73. data/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
  74. data/vendor/eigen/Eigen/src/Core/Assign.h +1 -1
  75. data/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
  76. data/vendor/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
  77. data/vendor/eigen/Eigen/src/Core/BandMatrix.h +16 -16
  78. data/vendor/eigen/Eigen/src/Core/Block.h +56 -60
  79. data/vendor/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
  80. data/vendor/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
  81. data/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
  82. data/vendor/eigen/Eigen/src/Core/CoreIterators.h +5 -0
  83. data/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
  84. data/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
  85. data/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
  86. data/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +14 -10
  87. data/vendor/eigen/Eigen/src/Core/DenseBase.h +132 -42
  88. data/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
  89. data/vendor/eigen/Eigen/src/Core/DenseStorage.h +153 -71
  90. data/vendor/eigen/Eigen/src/Core/Diagonal.h +21 -23
  91. data/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
  92. data/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
  93. data/vendor/eigen/Eigen/src/Core/Dot.h +10 -10
  94. data/vendor/eigen/Eigen/src/Core/EigenBase.h +10 -9
  95. data/vendor/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
  96. data/vendor/eigen/Eigen/src/Core/Fuzzy.h +3 -3
  97. data/vendor/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
  98. data/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +599 -152
  99. data/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
  100. data/vendor/eigen/Eigen/src/Core/IO.h +40 -7
  101. data/vendor/eigen/Eigen/src/Core/IndexedView.h +237 -0
  102. data/vendor/eigen/Eigen/src/Core/Inverse.h +9 -10
  103. data/vendor/eigen/Eigen/src/Core/Map.h +7 -7
  104. data/vendor/eigen/Eigen/src/Core/MapBase.h +10 -3
  105. data/vendor/eigen/Eigen/src/Core/MathFunctions.h +767 -125
  106. data/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
  107. data/vendor/eigen/Eigen/src/Core/Matrix.h +131 -25
  108. data/vendor/eigen/Eigen/src/Core/MatrixBase.h +21 -3
  109. data/vendor/eigen/Eigen/src/Core/NestByValue.h +25 -50
  110. data/vendor/eigen/Eigen/src/Core/NoAlias.h +4 -3
  111. data/vendor/eigen/Eigen/src/Core/NumTraits.h +107 -20
  112. data/vendor/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  113. data/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +3 -31
  114. data/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +152 -59
  115. data/vendor/eigen/Eigen/src/Core/Product.h +30 -25
  116. data/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +192 -125
  117. data/vendor/eigen/Eigen/src/Core/Random.h +37 -1
  118. data/vendor/eigen/Eigen/src/Core/Redux.h +180 -170
  119. data/vendor/eigen/Eigen/src/Core/Ref.h +121 -23
  120. data/vendor/eigen/Eigen/src/Core/Replicate.h +8 -8
  121. data/vendor/eigen/Eigen/src/Core/Reshaped.h +454 -0
  122. data/vendor/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
  123. data/vendor/eigen/Eigen/src/Core/Reverse.h +18 -12
  124. data/vendor/eigen/Eigen/src/Core/Select.h +8 -6
  125. data/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
  126. data/vendor/eigen/Eigen/src/Core/Solve.h +14 -14
  127. data/vendor/eigen/Eigen/src/Core/SolveTriangular.h +16 -16
  128. data/vendor/eigen/Eigen/src/Core/SolverBase.h +41 -3
  129. data/vendor/eigen/Eigen/src/Core/StableNorm.h +100 -70
  130. data/vendor/eigen/Eigen/src/Core/StlIterators.h +463 -0
  131. data/vendor/eigen/Eigen/src/Core/Stride.h +9 -4
  132. data/vendor/eigen/Eigen/src/Core/Swap.h +5 -4
  133. data/vendor/eigen/Eigen/src/Core/Transpose.h +88 -27
  134. data/vendor/eigen/Eigen/src/Core/Transpositions.h +26 -47
  135. data/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +93 -75
  136. data/vendor/eigen/Eigen/src/Core/VectorBlock.h +5 -5
  137. data/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
  138. data/vendor/eigen/Eigen/src/Core/Visitor.h +137 -29
  139. data/vendor/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
  140. data/vendor/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
  141. data/vendor/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
  142. data/vendor/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
  143. data/vendor/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  144. data/vendor/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +207 -236
  145. data/vendor/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1482 -495
  146. data/vendor/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  147. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
  148. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
  149. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  150. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  151. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  152. data/vendor/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
  153. data/vendor/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
  154. data/vendor/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  155. data/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
  156. data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  157. data/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  158. data/vendor/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
  159. data/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
  160. data/vendor/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  161. data/vendor/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
  162. data/vendor/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  163. data/vendor/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  164. data/vendor/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  165. data/vendor/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  166. data/vendor/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  167. data/vendor/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  168. data/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
  169. data/vendor/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  170. data/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
  171. data/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
  172. data/vendor/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  173. data/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
  174. data/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
  175. data/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
  176. data/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
  177. data/vendor/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  178. data/vendor/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  179. data/vendor/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  180. data/vendor/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  181. data/vendor/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  182. data/vendor/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  183. data/vendor/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  184. data/vendor/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  185. data/vendor/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
  186. data/vendor/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
  187. data/vendor/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
  188. data/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
  189. data/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
  190. data/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
  191. data/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
  192. data/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +355 -16
  193. data/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1075 -586
  194. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +49 -24
  195. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +41 -35
  196. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +6 -6
  197. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +4 -2
  198. data/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
  199. data/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +22 -5
  200. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +53 -30
  201. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +16 -8
  202. data/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
  203. data/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +4 -4
  204. data/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
  205. data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +33 -27
  206. data/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +14 -12
  207. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +36 -34
  208. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +8 -4
  209. data/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
  210. data/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +304 -119
  211. data/vendor/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  212. data/vendor/eigen/Eigen/src/Core/util/Constants.h +25 -9
  213. data/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +26 -3
  214. data/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +29 -9
  215. data/vendor/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  216. data/vendor/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
  217. data/vendor/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
  218. data/vendor/eigen/Eigen/src/Core/util/Macros.h +709 -246
  219. data/vendor/eigen/Eigen/src/Core/util/Memory.h +222 -52
  220. data/vendor/eigen/Eigen/src/Core/util/Meta.h +355 -77
  221. data/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +5 -1
  222. data/vendor/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  223. data/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
  224. data/vendor/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  225. data/vendor/eigen/Eigen/src/Core/util/XprHelper.h +65 -30
  226. data/vendor/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
  227. data/vendor/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +7 -4
  228. data/vendor/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
  229. data/vendor/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
  230. data/vendor/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
  231. data/vendor/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
  232. data/vendor/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
  233. data/vendor/eigen/Eigen/src/Eigenvalues/RealSchur.h +21 -9
  234. data/vendor/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +77 -43
  235. data/vendor/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
  236. data/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
  237. data/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
  238. data/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
  239. data/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
  240. data/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
  241. data/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
  242. data/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
  243. data/vendor/eigen/Eigen/src/Geometry/Quaternion.h +70 -14
  244. data/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
  245. data/vendor/eigen/Eigen/src/Geometry/Scaling.h +23 -5
  246. data/vendor/eigen/Eigen/src/Geometry/Transform.h +88 -67
  247. data/vendor/eigen/Eigen/src/Geometry/Translation.h +6 -12
  248. data/vendor/eigen/Eigen/src/Geometry/Umeyama.h +1 -1
  249. data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  250. data/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
  251. data/vendor/eigen/Eigen/src/Householder/Householder.h +8 -4
  252. data/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
  253. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
  254. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
  255. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
  256. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
  257. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
  258. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
  259. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
  260. data/vendor/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
  261. data/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
  262. data/vendor/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  263. data/vendor/eigen/Eigen/src/LU/Determinant.h +35 -19
  264. data/vendor/eigen/Eigen/src/LU/FullPivLU.h +29 -43
  265. data/vendor/eigen/Eigen/src/LU/InverseImpl.h +25 -8
  266. data/vendor/eigen/Eigen/src/LU/PartialPivLU.h +71 -58
  267. data/vendor/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
  268. data/vendor/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
  269. data/vendor/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
  270. data/vendor/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
  271. data/vendor/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
  272. data/vendor/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +9 -7
  273. data/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
  274. data/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
  275. data/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
  276. data/vendor/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
  277. data/vendor/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
  278. data/vendor/eigen/Eigen/src/SVD/BDCSVD.h +183 -63
  279. data/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
  280. data/vendor/eigen/Eigen/src/SVD/SVDBase.h +83 -22
  281. data/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
  282. data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +17 -9
  283. data/vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +12 -37
  284. data/vendor/eigen/Eigen/src/SparseCore/AmbiVector.h +3 -2
  285. data/vendor/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
  286. data/vendor/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
  287. data/vendor/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
  288. data/vendor/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
  289. data/vendor/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
  290. data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
  291. data/vendor/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +4 -2
  292. data/vendor/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
  293. data/vendor/eigen/Eigen/src/SparseCore/SparseMatrix.h +126 -11
  294. data/vendor/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
  295. data/vendor/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
  296. data/vendor/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
  297. data/vendor/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +5 -2
  298. data/vendor/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
  299. data/vendor/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
  300. data/vendor/eigen/Eigen/src/SparseCore/SparseView.h +1 -0
  301. data/vendor/eigen/Eigen/src/SparseLU/SparseLU.h +162 -12
  302. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
  303. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
  304. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
  305. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
  306. data/vendor/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
  307. data/vendor/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
  308. data/vendor/eigen/Eigen/src/StlSupport/StdDeque.h +2 -12
  309. data/vendor/eigen/Eigen/src/StlSupport/StdList.h +2 -2
  310. data/vendor/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
  311. data/vendor/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
  312. data/vendor/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
  313. data/vendor/eigen/Eigen/src/misc/lapacke.h +5 -4
  314. data/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +28 -2
  315. data/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
  316. data/vendor/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
  317. data/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
  318. data/vendor/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  319. data/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
  320. data/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
  321. data/vendor/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
  322. data/vendor/eigen/README.md +2 -0
  323. data/vendor/eigen/bench/btl/README +1 -1
  324. data/vendor/eigen/bench/tensors/README +6 -7
  325. data/vendor/eigen/ci/README.md +56 -0
  326. data/vendor/eigen/demos/mix_eigen_and_c/README +1 -1
  327. data/vendor/eigen/unsupported/Eigen/CXX11/src/Tensor/README.md +213 -158
  328. data/vendor/eigen/unsupported/README.txt +1 -1
  329. data/vendor/tomotopy/README.kr.rst +78 -0
  330. data/vendor/tomotopy/README.rst +75 -0
  331. data/vendor/tomotopy/src/Labeling/FoRelevance.cpp +2 -2
  332. data/vendor/tomotopy/src/Labeling/Phraser.hpp +4 -4
  333. data/vendor/tomotopy/src/TopicModel/CTModel.hpp +7 -3
  334. data/vendor/tomotopy/src/TopicModel/DMRModel.hpp +7 -3
  335. data/vendor/tomotopy/src/TopicModel/DTModel.hpp +6 -3
  336. data/vendor/tomotopy/src/TopicModel/GDMRModel.hpp +2 -2
  337. data/vendor/tomotopy/src/TopicModel/HDP.h +1 -0
  338. data/vendor/tomotopy/src/TopicModel/HDPModel.hpp +57 -6
  339. data/vendor/tomotopy/src/TopicModel/HLDAModel.hpp +6 -3
  340. data/vendor/tomotopy/src/TopicModel/HPAModel.hpp +3 -2
  341. data/vendor/tomotopy/src/TopicModel/LDA.h +3 -3
  342. data/vendor/tomotopy/src/TopicModel/LDACVB0Model.hpp +5 -5
  343. data/vendor/tomotopy/src/TopicModel/LDAModel.hpp +50 -19
  344. data/vendor/tomotopy/src/TopicModel/LLDAModel.hpp +6 -2
  345. data/vendor/tomotopy/src/TopicModel/MGLDAModel.hpp +3 -2
  346. data/vendor/tomotopy/src/TopicModel/PAModel.hpp +1 -1
  347. data/vendor/tomotopy/src/TopicModel/PLDAModel.hpp +6 -2
  348. data/vendor/tomotopy/src/TopicModel/PT.h +3 -1
  349. data/vendor/tomotopy/src/TopicModel/PTModel.hpp +36 -3
  350. data/vendor/tomotopy/src/TopicModel/SLDAModel.hpp +6 -3
  351. data/vendor/tomotopy/src/TopicModel/TopicModel.hpp +55 -26
  352. data/vendor/tomotopy/src/Utils/AliasMethod.hpp +5 -4
  353. data/vendor/tomotopy/src/Utils/Dictionary.h +2 -2
  354. data/vendor/tomotopy/src/Utils/EigenAddonOps.hpp +36 -1
  355. data/vendor/tomotopy/src/Utils/MultiNormalDistribution.hpp +1 -1
  356. data/vendor/tomotopy/src/Utils/TruncMultiNormal.hpp +1 -1
  357. data/vendor/tomotopy/src/Utils/exception.h +6 -0
  358. data/vendor/tomotopy/src/Utils/math.h +2 -2
  359. data/vendor/tomotopy/src/Utils/sample.hpp +14 -12
  360. data/vendor/tomotopy/src/Utils/serializer.hpp +30 -5
  361. data/vendor/tomotopy/src/Utils/sse_gamma.h +0 -3
  362. metadata +64 -18
  363. data/vendor/eigen/Eigen/CMakeLists.txt +0 -19
  364. data/vendor/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -674
  365. data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  366. data/vendor/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  367. data/vendor/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  368. data/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  369. data/vendor/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
@@ -13,10 +13,10 @@
13
13
 
14
14
  #if defined(EIGEN_INITIALIZE_MATRICES_BY_ZERO)
15
15
  # define EIGEN_INITIALIZE_COEFFS
16
- # define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(int i=0;i<base().size();++i) coeffRef(i)=Scalar(0);
16
+ # define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(Index i=0;i<base().size();++i) coeffRef(i)=Scalar(0);
17
17
  #elif defined(EIGEN_INITIALIZE_MATRICES_BY_NAN)
18
18
  # define EIGEN_INITIALIZE_COEFFS
19
- # define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(int i=0;i<base().size();++i) coeffRef(i)=std::numeric_limits<Scalar>::quiet_NaN();
19
+ # define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(Index i=0;i<base().size();++i) coeffRef(i)=std::numeric_limits<Scalar>::quiet_NaN();
20
20
  #else
21
21
  # undef EIGEN_INITIALIZE_COEFFS
22
22
  # define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
@@ -104,7 +104,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
104
104
 
105
105
  typedef typename internal::traits<Derived>::StorageKind StorageKind;
106
106
  typedef typename internal::traits<Derived>::Scalar Scalar;
107
-
107
+
108
108
  typedef typename internal::packet_traits<Scalar>::type PacketScalar;
109
109
  typedef typename NumTraits<Scalar>::Real RealScalar;
110
110
  typedef Derived DenseType;
@@ -118,16 +118,8 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
118
118
  using Base::IsVectorAtCompileTime;
119
119
  using Base::Flags;
120
120
 
121
- template<typename PlainObjectType, int MapOptions, typename StrideType> friend class Eigen::Map;
122
- friend class Eigen::Map<Derived, Unaligned>;
123
121
  typedef Eigen::Map<Derived, Unaligned> MapType;
124
- friend class Eigen::Map<const Derived, Unaligned>;
125
122
  typedef const Eigen::Map<const Derived, Unaligned> ConstMapType;
126
- #if EIGEN_MAX_ALIGN_BYTES>0
127
- // for EIGEN_MAX_ALIGN_BYTES==0, AlignedMax==Unaligned, and many compilers generate warnings for friend-ing a class twice.
128
- friend class Eigen::Map<Derived, AlignedMax>;
129
- friend class Eigen::Map<const Derived, AlignedMax>;
130
- #endif
131
123
  typedef Eigen::Map<Derived, AlignedMax> AlignedMapType;
132
124
  typedef const Eigen::Map<const Derived, AlignedMax> ConstAlignedMapType;
133
125
  template<typename StrideType> struct StridedMapType { typedef Eigen::Map<Derived, Unaligned, StrideType> type; };
@@ -147,10 +139,10 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
147
139
  EIGEN_DEVICE_FUNC
148
140
  const Base& base() const { return *static_cast<const Base*>(this); }
149
141
 
150
- EIGEN_DEVICE_FUNC
151
- EIGEN_STRONG_INLINE Index rows() const { return m_storage.rows(); }
152
- EIGEN_DEVICE_FUNC
153
- EIGEN_STRONG_INLINE Index cols() const { return m_storage.cols(); }
142
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
143
+ Index rows() const EIGEN_NOEXCEPT { return m_storage.rows(); }
144
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
145
+ Index cols() const EIGEN_NOEXCEPT { return m_storage.cols(); }
154
146
 
155
147
  /** This is an overloaded version of DenseCoeffsBase<Derived,ReadOnlyAccessors>::coeff(Index,Index) const
156
148
  * provided to by-pass the creation of an evaluator of the expression, thus saving compilation efforts.
@@ -358,7 +350,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
358
350
  * remain row-vectors and vectors remain vectors.
359
351
  */
360
352
  template<typename OtherDerived>
361
- EIGEN_DEVICE_FUNC
353
+ EIGEN_DEVICE_FUNC
362
354
  EIGEN_STRONG_INLINE void resizeLike(const EigenBase<OtherDerived>& _other)
363
355
  {
364
356
  const OtherDerived& other = _other.derived();
@@ -383,7 +375,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
383
375
  * of rows and/or of columns, you can use conservativeResize(NoChange_t, Index) or
384
376
  * conservativeResize(Index, NoChange_t).
385
377
  *
386
- * Matrices are resized relative to the top-left element. In case values need to be
378
+ * Matrices are resized relative to the top-left element. In case values need to be
387
379
  * appended to the matrix they will be uninitialized.
388
380
  */
389
381
  EIGEN_DEVICE_FUNC
@@ -440,7 +432,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
440
432
  * of rows and/or of columns, you can use conservativeResize(NoChange_t, Index) or
441
433
  * conservativeResize(Index, NoChange_t).
442
434
  *
443
- * Matrices are resized relative to the top-left element. In case values need to be
435
+ * Matrices are resized relative to the top-left element. In case values need to be
444
436
  * appended to the matrix they will copied from \c other.
445
437
  */
446
438
  template<typename OtherDerived>
@@ -508,8 +500,8 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
508
500
  EIGEN_DEVICE_FUNC
509
501
  PlainObjectBase& operator=(PlainObjectBase&& other) EIGEN_NOEXCEPT
510
502
  {
511
- using std::swap;
512
- swap(m_storage, other.m_storage);
503
+ _check_template_params();
504
+ m_storage = std::move(other.m_storage);
513
505
  return *this;
514
506
  }
515
507
  #endif
@@ -526,6 +518,71 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
526
518
  // EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
527
519
  }
528
520
 
521
+ #if EIGEN_HAS_CXX11
522
+ /** \brief Construct a row of column vector with fixed size from an arbitrary number of coefficients. \cpp11
523
+ *
524
+ * \only_for_vectors
525
+ *
526
+ * This constructor is for 1D array or vectors with more than 4 coefficients.
527
+ * There exists C++98 analogue constructors for fixed-size array/vector having 1, 2, 3, or 4 coefficients.
528
+ *
529
+ * \warning To construct a column (resp. row) vector of fixed length, the number of values passed to this
530
+ * constructor must match the the fixed number of rows (resp. columns) of \c *this.
531
+ */
532
+ template <typename... ArgTypes>
533
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
534
+ PlainObjectBase(const Scalar& a0, const Scalar& a1, const Scalar& a2, const Scalar& a3, const ArgTypes&... args)
535
+ : m_storage()
536
+ {
537
+ _check_template_params();
538
+ EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(PlainObjectBase, sizeof...(args) + 4);
539
+ m_storage.data()[0] = a0;
540
+ m_storage.data()[1] = a1;
541
+ m_storage.data()[2] = a2;
542
+ m_storage.data()[3] = a3;
543
+ Index i = 4;
544
+ auto x = {(m_storage.data()[i++] = args, 0)...};
545
+ static_cast<void>(x);
546
+ }
547
+
548
+ /** \brief Constructs a Matrix or Array and initializes it by elements given by an initializer list of initializer
549
+ * lists \cpp11
550
+ */
551
+ EIGEN_DEVICE_FUNC
552
+ explicit EIGEN_STRONG_INLINE PlainObjectBase(const std::initializer_list<std::initializer_list<Scalar>>& list)
553
+ : m_storage()
554
+ {
555
+ _check_template_params();
556
+
557
+ size_t list_size = 0;
558
+ if (list.begin() != list.end()) {
559
+ list_size = list.begin()->size();
560
+ }
561
+
562
+ // This is to allow syntax like VectorXi {{1, 2, 3, 4}}
563
+ if (ColsAtCompileTime == 1 && list.size() == 1) {
564
+ eigen_assert(list_size == static_cast<size_t>(RowsAtCompileTime) || RowsAtCompileTime == Dynamic);
565
+ resize(list_size, ColsAtCompileTime);
566
+ std::copy(list.begin()->begin(), list.begin()->end(), m_storage.data());
567
+ } else {
568
+ eigen_assert(list.size() == static_cast<size_t>(RowsAtCompileTime) || RowsAtCompileTime == Dynamic);
569
+ eigen_assert(list_size == static_cast<size_t>(ColsAtCompileTime) || ColsAtCompileTime == Dynamic);
570
+ resize(list.size(), list_size);
571
+
572
+ Index row_index = 0;
573
+ for (const std::initializer_list<Scalar>& row : list) {
574
+ eigen_assert(list_size == row.size());
575
+ Index col_index = 0;
576
+ for (const Scalar& e : row) {
577
+ coeffRef(row_index, col_index) = e;
578
+ ++col_index;
579
+ }
580
+ ++row_index;
581
+ }
582
+ }
583
+ }
584
+ #endif // end EIGEN_HAS_CXX11
585
+
529
586
  /** \sa PlainObjectBase::operator=(const EigenBase<OtherDerived>&) */
530
587
  template<typename OtherDerived>
531
588
  EIGEN_DEVICE_FUNC
@@ -564,7 +621,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
564
621
  * \copydetails DenseBase::operator=(const EigenBase<OtherDerived> &other)
565
622
  */
566
623
  template<typename OtherDerived>
567
- EIGEN_DEVICE_FUNC
624
+ EIGEN_DEVICE_FUNC
568
625
  EIGEN_STRONG_INLINE Derived& operator=(const EigenBase<OtherDerived> &other)
569
626
  {
570
627
  _resize_to_match(other);
@@ -652,18 +709,26 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
652
709
  using Base::setConstant;
653
710
  EIGEN_DEVICE_FUNC Derived& setConstant(Index size, const Scalar& val);
654
711
  EIGEN_DEVICE_FUNC Derived& setConstant(Index rows, Index cols, const Scalar& val);
712
+ EIGEN_DEVICE_FUNC Derived& setConstant(NoChange_t, Index cols, const Scalar& val);
713
+ EIGEN_DEVICE_FUNC Derived& setConstant(Index rows, NoChange_t, const Scalar& val);
655
714
 
656
715
  using Base::setZero;
657
716
  EIGEN_DEVICE_FUNC Derived& setZero(Index size);
658
717
  EIGEN_DEVICE_FUNC Derived& setZero(Index rows, Index cols);
718
+ EIGEN_DEVICE_FUNC Derived& setZero(NoChange_t, Index cols);
719
+ EIGEN_DEVICE_FUNC Derived& setZero(Index rows, NoChange_t);
659
720
 
660
721
  using Base::setOnes;
661
722
  EIGEN_DEVICE_FUNC Derived& setOnes(Index size);
662
723
  EIGEN_DEVICE_FUNC Derived& setOnes(Index rows, Index cols);
724
+ EIGEN_DEVICE_FUNC Derived& setOnes(NoChange_t, Index cols);
725
+ EIGEN_DEVICE_FUNC Derived& setOnes(Index rows, NoChange_t);
663
726
 
664
727
  using Base::setRandom;
665
728
  Derived& setRandom(Index size);
666
729
  Derived& setRandom(Index rows, Index cols);
730
+ Derived& setRandom(NoChange_t, Index cols);
731
+ Derived& setRandom(Index rows, NoChange_t);
667
732
 
668
733
  #ifdef EIGEN_PLAINOBJECTBASE_PLUGIN
669
734
  #include EIGEN_PLAINOBJECTBASE_PLUGIN
@@ -678,7 +743,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
678
743
  * remain row-vectors and vectors remain vectors.
679
744
  */
680
745
  template<typename OtherDerived>
681
- EIGEN_DEVICE_FUNC
746
+ EIGEN_DEVICE_FUNC
682
747
  EIGEN_STRONG_INLINE void _resize_to_match(const EigenBase<OtherDerived>& other)
683
748
  {
684
749
  #ifdef EIGEN_NO_AUTOMATIC_RESIZING
@@ -705,10 +770,10 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
705
770
  *
706
771
  * \internal
707
772
  */
708
- // aliasing is dealt once in internall::call_assignment
773
+ // aliasing is dealt once in internal::call_assignment
709
774
  // so at this stage we have to assume aliasing... and resising has to be done later.
710
775
  template<typename OtherDerived>
711
- EIGEN_DEVICE_FUNC
776
+ EIGEN_DEVICE_FUNC
712
777
  EIGEN_STRONG_INLINE Derived& _set(const DenseBase<OtherDerived>& other)
713
778
  {
714
779
  internal::call_assignment(this->derived(), other.derived());
@@ -721,7 +786,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
721
786
  * \sa operator=(const MatrixBase<OtherDerived>&), _set()
722
787
  */
723
788
  template<typename OtherDerived>
724
- EIGEN_DEVICE_FUNC
789
+ EIGEN_DEVICE_FUNC
725
790
  EIGEN_STRONG_INLINE Derived& _set_noalias(const DenseBase<OtherDerived>& other)
726
791
  {
727
792
  // I don't think we need this resize call since the lazyAssign will anyways resize
@@ -737,23 +802,25 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
737
802
  EIGEN_DEVICE_FUNC
738
803
  EIGEN_STRONG_INLINE void _init2(Index rows, Index cols, typename internal::enable_if<Base::SizeAtCompileTime!=2,T0>::type* = 0)
739
804
  {
740
- EIGEN_STATIC_ASSERT(bool(NumTraits<T0>::IsInteger) &&
741
- bool(NumTraits<T1>::IsInteger),
805
+ const bool t0_is_integer_alike = internal::is_valid_index_type<T0>::value;
806
+ const bool t1_is_integer_alike = internal::is_valid_index_type<T1>::value;
807
+ EIGEN_STATIC_ASSERT(t0_is_integer_alike &&
808
+ t1_is_integer_alike,
742
809
  FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED)
743
810
  resize(rows,cols);
744
811
  }
745
-
812
+
746
813
  template<typename T0, typename T1>
747
- EIGEN_DEVICE_FUNC
814
+ EIGEN_DEVICE_FUNC
748
815
  EIGEN_STRONG_INLINE void _init2(const T0& val0, const T1& val1, typename internal::enable_if<Base::SizeAtCompileTime==2,T0>::type* = 0)
749
816
  {
750
817
  EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(PlainObjectBase, 2)
751
818
  m_storage.data()[0] = Scalar(val0);
752
819
  m_storage.data()[1] = Scalar(val1);
753
820
  }
754
-
821
+
755
822
  template<typename T0, typename T1>
756
- EIGEN_DEVICE_FUNC
823
+ EIGEN_DEVICE_FUNC
757
824
  EIGEN_STRONG_INLINE void _init2(const Index& val0, const Index& val1,
758
825
  typename internal::enable_if< (!internal::is_same<Index,Scalar>::value)
759
826
  && (internal::is_same<T0,Index>::value)
@@ -773,14 +840,14 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
773
840
  && ((!internal::is_same<typename internal::traits<Derived>::XprKind,ArrayXpr>::value || Base::SizeAtCompileTime==Dynamic)),T>::type* = 0)
774
841
  {
775
842
  // NOTE MSVC 2008 complains if we directly put bool(NumTraits<T>::IsInteger) as the EIGEN_STATIC_ASSERT argument.
776
- const bool is_integer = NumTraits<T>::IsInteger;
777
- EIGEN_UNUSED_VARIABLE(is_integer);
778
- EIGEN_STATIC_ASSERT(is_integer,
843
+ const bool is_integer_alike = internal::is_valid_index_type<T>::value;
844
+ EIGEN_UNUSED_VARIABLE(is_integer_alike);
845
+ EIGEN_STATIC_ASSERT(is_integer_alike,
779
846
  FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED)
780
847
  resize(size);
781
848
  }
782
-
783
- // We have a 1x1 matrix/array => the argument is interpreted as the value of the unique coefficient (case where scalar type can be implicitely converted)
849
+
850
+ // We have a 1x1 matrix/array => the argument is interpreted as the value of the unique coefficient (case where scalar type can be implicitly converted)
784
851
  template<typename T>
785
852
  EIGEN_DEVICE_FUNC
786
853
  EIGEN_STRONG_INLINE void _init1(const Scalar& val0, typename internal::enable_if<Base::SizeAtCompileTime==1 && internal::is_convertible<T, Scalar>::value,T>::type* = 0)
@@ -788,7 +855,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
788
855
  EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(PlainObjectBase, 1)
789
856
  m_storage.data()[0] = val0;
790
857
  }
791
-
858
+
792
859
  // We have a 1x1 matrix/array => the argument is interpreted as the value of the unique coefficient (case where scalar type match the index type)
793
860
  template<typename T>
794
861
  EIGEN_DEVICE_FUNC
@@ -844,7 +911,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
844
911
  {
845
912
  this->derived() = r;
846
913
  }
847
-
914
+
848
915
  // For fixed-size Array<Scalar,...>
849
916
  template<typename T>
850
917
  EIGEN_DEVICE_FUNC
@@ -856,7 +923,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
856
923
  {
857
924
  Base::setConstant(val0);
858
925
  }
859
-
926
+
860
927
  // For fixed-size Array<Index,...>
861
928
  template<typename T>
862
929
  EIGEN_DEVICE_FUNC
@@ -870,38 +937,38 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
870
937
  {
871
938
  Base::setConstant(val0);
872
939
  }
873
-
940
+
874
941
  template<typename MatrixTypeA, typename MatrixTypeB, bool SwapPointers>
875
942
  friend struct internal::matrix_swap_impl;
876
943
 
877
944
  public:
878
-
945
+
879
946
  #ifndef EIGEN_PARSED_BY_DOXYGEN
880
947
  /** \internal
881
948
  * \brief Override DenseBase::swap() since for dynamic-sized matrices
882
949
  * of same type it is enough to swap the data pointers.
883
950
  */
884
951
  template<typename OtherDerived>
885
- EIGEN_DEVICE_FUNC
952
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
886
953
  void swap(DenseBase<OtherDerived> & other)
887
954
  {
888
955
  enum { SwapPointers = internal::is_same<Derived, OtherDerived>::value && Base::SizeAtCompileTime==Dynamic };
889
956
  internal::matrix_swap_impl<Derived, OtherDerived, bool(SwapPointers)>::run(this->derived(), other.derived());
890
957
  }
891
-
958
+
892
959
  /** \internal
893
960
  * \brief const version forwarded to DenseBase::swap
894
961
  */
895
962
  template<typename OtherDerived>
896
- EIGEN_DEVICE_FUNC
963
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
897
964
  void swap(DenseBase<OtherDerived> const & other)
898
965
  { Base::swap(other.derived()); }
899
-
900
- EIGEN_DEVICE_FUNC
966
+
967
+ EIGEN_DEVICE_FUNC
901
968
  static EIGEN_STRONG_INLINE void _check_template_params()
902
969
  {
903
- EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1, (Options&RowMajor)==RowMajor)
904
- && EIGEN_IMPLIES(MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1, (Options&RowMajor)==0)
970
+ EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1, (int(Options)&RowMajor)==RowMajor)
971
+ && EIGEN_IMPLIES(MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1, (int(Options)&RowMajor)==0)
905
972
  && ((RowsAtCompileTime == Dynamic) || (RowsAtCompileTime >= 0))
906
973
  && ((ColsAtCompileTime == Dynamic) || (ColsAtCompileTime >= 0))
907
974
  && ((MaxRowsAtCompileTime == Dynamic) || (MaxRowsAtCompileTime >= 0))
@@ -913,6 +980,17 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
913
980
  }
914
981
 
915
982
  enum { IsPlainObjectBase = 1 };
983
+ #endif
984
+ public:
985
+ // These apparently need to be down here for nvcc+icc to prevent duplicate
986
+ // Map symbol.
987
+ template<typename PlainObjectType, int MapOptions, typename StrideType> friend class Eigen::Map;
988
+ friend class Eigen::Map<Derived, Unaligned>;
989
+ friend class Eigen::Map<const Derived, Unaligned>;
990
+ #if EIGEN_MAX_ALIGN_BYTES>0
991
+ // for EIGEN_MAX_ALIGN_BYTES==0, AlignedMax==Unaligned, and many compilers generate warnings for friend-ing a class twice.
992
+ friend class Eigen::Map<Derived, AlignedMax>;
993
+ friend class Eigen::Map<const Derived, AlignedMax>;
916
994
  #endif
917
995
  };
918
996
 
@@ -921,13 +999,19 @@ namespace internal {
921
999
  template <typename Derived, typename OtherDerived, bool IsVector>
922
1000
  struct conservative_resize_like_impl
923
1001
  {
1002
+ #if EIGEN_HAS_TYPE_TRAITS
1003
+ static const bool IsRelocatable = std::is_trivially_copyable<typename Derived::Scalar>::value;
1004
+ #else
1005
+ static const bool IsRelocatable = !NumTraits<typename Derived::Scalar>::RequireInitialization;
1006
+ #endif
924
1007
  static void run(DenseBase<Derived>& _this, Index rows, Index cols)
925
1008
  {
926
1009
  if (_this.rows() == rows && _this.cols() == cols) return;
927
1010
  EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(Derived)
928
1011
 
929
- if ( ( Derived::IsRowMajor && _this.cols() == cols) || // row-major and we change only the number of rows
930
- (!Derived::IsRowMajor && _this.rows() == rows) ) // column-major and we change only the number of columns
1012
+ if ( IsRelocatable
1013
+ && (( Derived::IsRowMajor && _this.cols() == cols) || // row-major and we change only the number of rows
1014
+ (!Derived::IsRowMajor && _this.rows() == rows) )) // column-major and we change only the number of columns
931
1015
  {
932
1016
  internal::check_rows_cols_for_overflow<Derived::MaxSizeAtCompileTime>::run(rows, cols);
933
1017
  _this.derived().m_storage.conservativeResize(rows*cols,rows,cols);
@@ -935,7 +1019,7 @@ struct conservative_resize_like_impl
935
1019
  else
936
1020
  {
937
1021
  // The storage order does not allow us to use reallocation.
938
- typename Derived::PlainObject tmp(rows,cols);
1022
+ Derived tmp(rows,cols);
939
1023
  const Index common_rows = numext::mini(rows, _this.rows());
940
1024
  const Index common_cols = numext::mini(cols, _this.cols());
941
1025
  tmp.block(0,0,common_rows,common_cols) = _this.block(0,0,common_rows,common_cols);
@@ -955,8 +1039,9 @@ struct conservative_resize_like_impl
955
1039
  EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(Derived)
956
1040
  EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(OtherDerived)
957
1041
 
958
- if ( ( Derived::IsRowMajor && _this.cols() == other.cols()) || // row-major and we change only the number of rows
959
- (!Derived::IsRowMajor && _this.rows() == other.rows()) ) // column-major and we change only the number of columns
1042
+ if ( IsRelocatable &&
1043
+ (( Derived::IsRowMajor && _this.cols() == other.cols()) || // row-major and we change only the number of rows
1044
+ (!Derived::IsRowMajor && _this.rows() == other.rows()) )) // column-major and we change only the number of columns
960
1045
  {
961
1046
  const Index new_rows = other.rows() - _this.rows();
962
1047
  const Index new_cols = other.cols() - _this.cols();
@@ -969,7 +1054,7 @@ struct conservative_resize_like_impl
969
1054
  else
970
1055
  {
971
1056
  // The storage order does not allow us to use reallocation.
972
- typename Derived::PlainObject tmp(other);
1057
+ Derived tmp(other);
973
1058
  const Index common_rows = numext::mini(tmp.rows(), _this.rows());
974
1059
  const Index common_cols = numext::mini(tmp.cols(), _this.cols());
975
1060
  tmp.block(0,0,common_rows,common_cols) = _this.block(0,0,common_rows,common_cols);
@@ -984,13 +1069,18 @@ template <typename Derived, typename OtherDerived>
984
1069
  struct conservative_resize_like_impl<Derived,OtherDerived,true>
985
1070
  : conservative_resize_like_impl<Derived,OtherDerived,false>
986
1071
  {
987
- using conservative_resize_like_impl<Derived,OtherDerived,false>::run;
988
-
1072
+ typedef conservative_resize_like_impl<Derived,OtherDerived,false> Base;
1073
+ using Base::run;
1074
+ using Base::IsRelocatable;
1075
+
989
1076
  static void run(DenseBase<Derived>& _this, Index size)
990
1077
  {
991
1078
  const Index new_rows = Derived::RowsAtCompileTime==1 ? 1 : size;
992
1079
  const Index new_cols = Derived::RowsAtCompileTime==1 ? size : 1;
993
- _this.derived().m_storage.conservativeResize(size,new_rows,new_cols);
1080
+ if(IsRelocatable)
1081
+ _this.derived().m_storage.conservativeResize(size,new_rows,new_cols);
1082
+ else
1083
+ Base::run(_this.derived(), new_rows, new_cols);
994
1084
  }
995
1085
 
996
1086
  static void run(DenseBase<Derived>& _this, const DenseBase<OtherDerived>& other)
@@ -1001,7 +1091,10 @@ struct conservative_resize_like_impl<Derived,OtherDerived,true>
1001
1091
 
1002
1092
  const Index new_rows = Derived::RowsAtCompileTime==1 ? 1 : other.rows();
1003
1093
  const Index new_cols = Derived::RowsAtCompileTime==1 ? other.cols() : 1;
1004
- _this.derived().m_storage.conservativeResize(other.size(),new_rows,new_cols);
1094
+ if(IsRelocatable)
1095
+ _this.derived().m_storage.conservativeResize(other.size(),new_rows,new_cols);
1096
+ else
1097
+ Base::run(_this.derived(), new_rows, new_cols);
1005
1098
 
1006
1099
  if (num_new_elements > 0)
1007
1100
  _this.tail(num_new_elements) = other.tail(num_new_elements);
@@ -1012,7 +1105,7 @@ template<typename MatrixTypeA, typename MatrixTypeB, bool SwapPointers>
1012
1105
  struct matrix_swap_impl
1013
1106
  {
1014
1107
  EIGEN_DEVICE_FUNC
1015
- static inline void run(MatrixTypeA& a, MatrixTypeB& b)
1108
+ static EIGEN_STRONG_INLINE void run(MatrixTypeA& a, MatrixTypeB& b)
1016
1109
  {
1017
1110
  a.base().swap(b);
1018
1111
  }
@@ -23,25 +23,25 @@ struct traits<Product<Lhs, Rhs, Option> >
23
23
  typedef typename remove_all<Rhs>::type RhsCleaned;
24
24
  typedef traits<LhsCleaned> LhsTraits;
25
25
  typedef traits<RhsCleaned> RhsTraits;
26
-
26
+
27
27
  typedef MatrixXpr XprKind;
28
-
28
+
29
29
  typedef typename ScalarBinaryOpTraits<typename traits<LhsCleaned>::Scalar, typename traits<RhsCleaned>::Scalar>::ReturnType Scalar;
30
30
  typedef typename product_promote_storage_type<typename LhsTraits::StorageKind,
31
31
  typename RhsTraits::StorageKind,
32
32
  internal::product_type<Lhs,Rhs>::ret>::ret StorageKind;
33
33
  typedef typename promote_index_type<typename LhsTraits::StorageIndex,
34
34
  typename RhsTraits::StorageIndex>::type StorageIndex;
35
-
35
+
36
36
  enum {
37
37
  RowsAtCompileTime = LhsTraits::RowsAtCompileTime,
38
38
  ColsAtCompileTime = RhsTraits::ColsAtCompileTime,
39
39
  MaxRowsAtCompileTime = LhsTraits::MaxRowsAtCompileTime,
40
40
  MaxColsAtCompileTime = RhsTraits::MaxColsAtCompileTime,
41
-
41
+
42
42
  // FIXME: only needed by GeneralMatrixMatrixTriangular
43
43
  InnerSize = EIGEN_SIZE_MIN_PREFER_FIXED(LhsTraits::ColsAtCompileTime, RhsTraits::RowsAtCompileTime),
44
-
44
+
45
45
  // The storage order is somewhat arbitrary here. The correct one will be determined through the evaluator.
46
46
  Flags = (MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1) ? RowMajorBit
47
47
  : (MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1) ? 0
@@ -74,10 +74,10 @@ class Product : public ProductImpl<_Lhs,_Rhs,Option,
74
74
  internal::product_type<_Lhs,_Rhs>::ret>::ret>
75
75
  {
76
76
  public:
77
-
77
+
78
78
  typedef _Lhs Lhs;
79
79
  typedef _Rhs Rhs;
80
-
80
+
81
81
  typedef typename ProductImpl<
82
82
  Lhs, Rhs, Option,
83
83
  typename internal::product_promote_storage_type<typename internal::traits<Lhs>::StorageKind,
@@ -90,18 +90,23 @@ class Product : public ProductImpl<_Lhs,_Rhs,Option,
90
90
  typedef typename internal::remove_all<LhsNested>::type LhsNestedCleaned;
91
91
  typedef typename internal::remove_all<RhsNested>::type RhsNestedCleaned;
92
92
 
93
- EIGEN_DEVICE_FUNC Product(const Lhs& lhs, const Rhs& rhs) : m_lhs(lhs), m_rhs(rhs)
93
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
94
+ Product(const Lhs& lhs, const Rhs& rhs) : m_lhs(lhs), m_rhs(rhs)
94
95
  {
95
96
  eigen_assert(lhs.cols() == rhs.rows()
96
97
  && "invalid matrix product"
97
98
  && "if you wanted a coeff-wise or a dot product use the respective explicit functions");
98
99
  }
99
100
 
100
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rows() const { return m_lhs.rows(); }
101
- EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index cols() const { return m_rhs.cols(); }
101
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
102
+ Index rows() const EIGEN_NOEXCEPT { return m_lhs.rows(); }
103
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
104
+ Index cols() const EIGEN_NOEXCEPT { return m_rhs.cols(); }
102
105
 
103
- EIGEN_DEVICE_FUNC const LhsNestedCleaned& lhs() const { return m_lhs; }
104
- EIGEN_DEVICE_FUNC const RhsNestedCleaned& rhs() const { return m_rhs; }
106
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
107
+ const LhsNestedCleaned& lhs() const { return m_lhs; }
108
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
109
+ const RhsNestedCleaned& rhs() const { return m_rhs; }
105
110
 
106
111
  protected:
107
112
 
@@ -110,13 +115,13 @@ class Product : public ProductImpl<_Lhs,_Rhs,Option,
110
115
  };
111
116
 
112
117
  namespace internal {
113
-
118
+
114
119
  template<typename Lhs, typename Rhs, int Option, int ProductTag = internal::product_type<Lhs,Rhs>::ret>
115
120
  class dense_product_base
116
121
  : public internal::dense_xpr_base<Product<Lhs,Rhs,Option> >::type
117
122
  {};
118
123
 
119
- /** Convertion to scalar for inner-products */
124
+ /** Conversion to scalar for inner-products */
120
125
  template<typename Lhs, typename Rhs, int Option>
121
126
  class dense_product_base<Lhs, Rhs, Option, InnerProduct>
122
127
  : public internal::dense_xpr_base<Product<Lhs,Rhs,Option> >::type
@@ -126,8 +131,8 @@ class dense_product_base<Lhs, Rhs, Option, InnerProduct>
126
131
  public:
127
132
  using Base::derived;
128
133
  typedef typename Base::Scalar Scalar;
129
-
130
- EIGEN_STRONG_INLINE operator const Scalar() const
134
+
135
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE operator const Scalar() const
131
136
  {
132
137
  return internal::evaluator<ProductXpr>(derived()).coeff(0,0);
133
138
  }
@@ -148,25 +153,25 @@ class ProductImpl<Lhs,Rhs,Option,Dense>
148
153
  : public internal::dense_product_base<Lhs,Rhs,Option>
149
154
  {
150
155
  typedef Product<Lhs, Rhs, Option> Derived;
151
-
156
+
152
157
  public:
153
-
158
+
154
159
  typedef typename internal::dense_product_base<Lhs, Rhs, Option> Base;
155
160
  EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
156
161
  protected:
157
162
  enum {
158
- IsOneByOne = (RowsAtCompileTime == 1 || RowsAtCompileTime == Dynamic) &&
163
+ IsOneByOne = (RowsAtCompileTime == 1 || RowsAtCompileTime == Dynamic) &&
159
164
  (ColsAtCompileTime == 1 || ColsAtCompileTime == Dynamic),
160
165
  EnableCoeff = IsOneByOne || Option==LazyProduct
161
166
  };
162
-
167
+
163
168
  public:
164
-
169
+
165
170
  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar coeff(Index row, Index col) const
166
171
  {
167
172
  EIGEN_STATIC_ASSERT(EnableCoeff, THIS_METHOD_IS_ONLY_FOR_INNER_OR_LAZY_PRODUCTS);
168
173
  eigen_assert( (Option==LazyProduct) || (this->rows() == 1 && this->cols() == 1) );
169
-
174
+
170
175
  return internal::evaluator<Derived>(derived()).coeff(row,col);
171
176
  }
172
177
 
@@ -174,11 +179,11 @@ class ProductImpl<Lhs,Rhs,Option,Dense>
174
179
  {
175
180
  EIGEN_STATIC_ASSERT(EnableCoeff, THIS_METHOD_IS_ONLY_FOR_INNER_OR_LAZY_PRODUCTS);
176
181
  eigen_assert( (Option==LazyProduct) || (this->rows() == 1 && this->cols() == 1) );
177
-
182
+
178
183
  return internal::evaluator<Derived>(derived()).coeff(i);
179
184
  }
180
-
181
-
185
+
186
+
182
187
  };
183
188
 
184
189
  } // end namespace Eigen