tomoto 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -27,4 +27,3 @@
27
27
  #include "src/Core/util/ReenableStupidWarnings.h"
28
28
 
29
29
  #endif // EIGEN_HOUSEHOLDER_MODULE_H
30
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -29,5 +29,4 @@
29
29
  #include "src/Core/util/ReenableStupidWarnings.h"
30
30
 
31
31
  #endif // EIGEN_JACOBI_MODULE_H
32
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
33
32
 
@@ -0,0 +1,41 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // This Source Code Form is subject to the terms of the Mozilla
5
+ // Public License v. 2.0. If a copy of the MPL was not distributed
6
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
8
+ #ifndef EIGEN_KLUSUPPORT_MODULE_H
9
+ #define EIGEN_KLUSUPPORT_MODULE_H
10
+
11
+ #include <Eigen/SparseCore>
12
+
13
+ #include <Eigen/src/Core/util/DisableStupidWarnings.h>
14
+
15
+ extern "C" {
16
+ #include <btf.h>
17
+ #include <klu.h>
18
+ }
19
+
20
+ /** \ingroup Support_modules
21
+ * \defgroup KLUSupport_Module KLUSupport module
22
+ *
23
+ * This module provides an interface to the KLU library which is part of the <a href="http://www.suitesparse.com">suitesparse</a> package.
24
+ * It provides the following factorization class:
25
+ * - class KLU: a sparse LU factorization, well-suited for circuit simulation.
26
+ *
27
+ * \code
28
+ * #include <Eigen/KLUSupport>
29
+ * \endcode
30
+ *
31
+ * In order to use this module, the klu and btf headers must be accessible from the include paths, and your binary must be linked to the klu library and its dependencies.
32
+ * The dependencies depend on how umfpack has been compiled.
33
+ * For a cmake based project, you can use our FindKLU.cmake module to help you in this task.
34
+ *
35
+ */
36
+
37
+ #include "src/KLUSupport/KLUSupport.h"
38
+
39
+ #include <Eigen/src/Core/util/ReenableStupidWarnings.h>
40
+
41
+ #endif // EIGEN_KLUSUPPORT_MODULE_H
@@ -38,13 +38,10 @@
38
38
  #include "src/LU/Determinant.h"
39
39
  #include "src/LU/InverseImpl.h"
40
40
 
41
- // Use the SSE optimized version whenever possible. At the moment the
42
- // SSE version doesn't compile when AVX is enabled
43
- #if defined EIGEN_VECTORIZE_SSE && !defined EIGEN_VECTORIZE_AVX
44
- #include "src/LU/arch/Inverse_SSE.h"
41
+ #if defined EIGEN_VECTORIZE_SSE || defined EIGEN_VECTORIZE_NEON
42
+ #include "src/LU/arch/InverseSize4.h"
45
43
  #endif
46
44
 
47
45
  #include "src/Core/util/ReenableStupidWarnings.h"
48
46
 
49
47
  #endif // EIGEN_LU_MODULE_H
50
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -63,10 +63,7 @@
63
63
  * \endcode
64
64
  */
65
65
 
66
- #ifndef EIGEN_MPL2_ONLY
67
66
  #include "src/OrderingMethods/Amd.h"
68
- #endif
69
-
70
67
  #include "src/OrderingMethods/Ordering.h"
71
68
  #include "src/Core/util/ReenableStupidWarnings.h"
72
69
 
@@ -36,6 +36,7 @@ extern "C" {
36
36
  * \endcode
37
37
  *
38
38
  * In order to use this module, the PaSTiX headers must be accessible from the include paths, and your binary must be linked to the PaSTiX library and its dependencies.
39
+ * This wrapper resuires PaStiX version 5.x compiled without MPI support.
39
40
  * The dependencies depend on how PaSTiX has been compiled.
40
41
  * For a cmake based project, you can use our FindPaSTiX.cmake module to help you in this task.
41
42
  *
File without changes
@@ -10,12 +10,12 @@
10
10
 
11
11
  #include "Core"
12
12
 
13
- #include "src/Core/util/DisableStupidWarnings.h"
14
-
15
13
  #include "Cholesky"
16
14
  #include "Jacobi"
17
15
  #include "Householder"
18
16
 
17
+ #include "src/Core/util/DisableStupidWarnings.h"
18
+
19
19
  /** \defgroup QR_Module QR module
20
20
  *
21
21
  *
@@ -48,4 +48,3 @@
48
48
  #include "src/Core/util/ReenableStupidWarnings.h"
49
49
 
50
50
  #endif // EIGEN_QR_MODULE_H
51
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -37,4 +37,3 @@ void *qRealloc(void *ptr, std::size_t size)
37
37
  #endif
38
38
 
39
39
  #endif // EIGEN_QTMALLOC_MODULE_H
40
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -48,4 +48,3 @@
48
48
  #include "src/Core/util/ReenableStupidWarnings.h"
49
49
 
50
50
  #endif // EIGEN_SVD_MODULE_H
51
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -25,9 +25,7 @@
25
25
 
26
26
  #include "SparseCore"
27
27
  #include "OrderingMethods"
28
- #ifndef EIGEN_MPL2_ONLY
29
28
  #include "SparseCholesky"
30
- #endif
31
29
  #include "SparseLU"
32
30
  #include "SparseQR"
33
31
  #include "IterativeLinearSolvers"
@@ -30,16 +30,8 @@
30
30
  * \endcode
31
31
  */
32
32
 
33
- #ifdef EIGEN_MPL2_ONLY
34
- #error The SparseCholesky module has nothing to offer in MPL2 only mode
35
- #endif
36
-
37
33
  #include "src/SparseCholesky/SimplicialCholesky.h"
38
-
39
- #ifndef EIGEN_MPL2_ONLY
40
34
  #include "src/SparseCholesky/SimplicialCholesky_impl.h"
41
- #endif
42
-
43
35
  #include "src/Core/util/ReenableStupidWarnings.h"
44
36
 
45
37
  #endif // EIGEN_SPARSECHOLESKY_MODULE_H
@@ -23,6 +23,8 @@
23
23
  // Ordering interface
24
24
  #include "OrderingMethods"
25
25
 
26
+ #include "src/Core/util/DisableStupidWarnings.h"
27
+
26
28
  #include "src/SparseLU/SparseLU_gemm_kernel.h"
27
29
 
28
30
  #include "src/SparseLU/SparseLU_Structs.h"
@@ -43,4 +45,6 @@
43
45
  #include "src/SparseLU/SparseLU_Utils.h"
44
46
  #include "src/SparseLU/SparseLU.h"
45
47
 
48
+ #include "src/Core/util/ReenableStupidWarnings.h"
49
+
46
50
  #endif // EIGEN_SPARSELU_MODULE_H
@@ -28,7 +28,6 @@
28
28
  *
29
29
  */
30
30
 
31
- #include "OrderingMethods"
32
31
  #include "src/SparseCore/SparseColEtree.h"
33
32
  #include "src/SparseQR/SparseQR.h"
34
33
 
@@ -16,6 +16,15 @@
16
16
  namespace Eigen {
17
17
 
18
18
  namespace internal {
19
+ template<typename _MatrixType, int _UpLo> struct traits<LDLT<_MatrixType, _UpLo> >
20
+ : traits<_MatrixType>
21
+ {
22
+ typedef MatrixXpr XprKind;
23
+ typedef SolverStorage StorageKind;
24
+ typedef int StorageIndex;
25
+ enum { Flags = 0 };
26
+ };
27
+
19
28
  template<typename MatrixType, int UpLo> struct LDLT_Traits;
20
29
 
21
30
  // PositiveSemiDef means positive semi-definite and non-zero; same for NegativeSemiDef
@@ -36,7 +45,7 @@ namespace internal {
36
45
  * matrix \f$ A \f$ such that \f$ A = P^TLDL^*P \f$, where P is a permutation matrix, L
37
46
  * is lower triangular with a unit diagonal and D is a diagonal matrix.
38
47
  *
39
- * The decomposition uses pivoting to ensure stability, so that L will have
48
+ * The decomposition uses pivoting to ensure stability, so that D will have
40
49
  * zeros in the bottom right rank(A) - n submatrix. Avoiding the square root
41
50
  * on D also stabilizes the computation.
42
51
  *
@@ -44,24 +53,23 @@ namespace internal {
44
53
  * decomposition to determine whether a system of equations has a solution.
45
54
  *
46
55
  * This class supports the \link InplaceDecomposition inplace decomposition \endlink mechanism.
47
- *
56
+ *
48
57
  * \sa MatrixBase::ldlt(), SelfAdjointView::ldlt(), class LLT
49
58
  */
50
59
  template<typename _MatrixType, int _UpLo> class LDLT
60
+ : public SolverBase<LDLT<_MatrixType, _UpLo> >
51
61
  {
52
62
  public:
53
63
  typedef _MatrixType MatrixType;
64
+ typedef SolverBase<LDLT> Base;
65
+ friend class SolverBase<LDLT>;
66
+
67
+ EIGEN_GENERIC_PUBLIC_INTERFACE(LDLT)
54
68
  enum {
55
- RowsAtCompileTime = MatrixType::RowsAtCompileTime,
56
- ColsAtCompileTime = MatrixType::ColsAtCompileTime,
57
69
  MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
58
70
  MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
59
71
  UpLo = _UpLo
60
72
  };
61
- typedef typename MatrixType::Scalar Scalar;
62
- typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;
63
- typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
64
- typedef typename MatrixType::StorageIndex StorageIndex;
65
73
  typedef Matrix<Scalar, RowsAtCompileTime, 1, 0, MaxRowsAtCompileTime, 1> TmpMatrixType;
66
74
 
67
75
  typedef Transpositions<RowsAtCompileTime, MaxRowsAtCompileTime> TranspositionType;
@@ -180,6 +188,7 @@ template<typename _MatrixType, int _UpLo> class LDLT
180
188
  return m_sign == internal::NegativeSemiDef || m_sign == internal::ZeroSign;
181
189
  }
182
190
 
191
+ #ifdef EIGEN_PARSED_BY_DOXYGEN
183
192
  /** \returns a solution x of \f$ A x = b \f$ using the current decomposition of A.
184
193
  *
185
194
  * This function also supports in-place solves using the syntax <tt>x = decompositionObject.solve(x)</tt> .
@@ -191,19 +200,14 @@ template<typename _MatrixType, int _UpLo> class LDLT
191
200
  * \f$ L^* y_4 = y_3 \f$ and \f$ P x = y_4 \f$ in succession. If the matrix \f$ A \f$ is singular, then
192
201
  * \f$ D \f$ will also be singular (all the other matrices are invertible). In that case, the
193
202
  * least-square solution of \f$ D y_3 = y_2 \f$ is computed. This does not mean that this function
194
- * computes the least-square solution of \f$ A x = b \f$ is \f$ A \f$ is singular.
203
+ * computes the least-square solution of \f$ A x = b \f$ if \f$ A \f$ is singular.
195
204
  *
196
205
  * \sa MatrixBase::ldlt(), SelfAdjointView::ldlt()
197
206
  */
198
207
  template<typename Rhs>
199
208
  inline const Solve<LDLT, Rhs>
200
- solve(const MatrixBase<Rhs>& b) const
201
- {
202
- eigen_assert(m_isInitialized && "LDLT is not initialized.");
203
- eigen_assert(m_matrix.rows()==b.rows()
204
- && "LDLT::solve(): invalid number of rows of the right hand side matrix b");
205
- return Solve<LDLT, Rhs>(*this, b.derived());
206
- }
209
+ solve(const MatrixBase<Rhs>& b) const;
210
+ #endif
207
211
 
208
212
  template<typename Derived>
209
213
  bool solveInPlace(MatrixBase<Derived> &bAndX) const;
@@ -242,12 +246,12 @@ template<typename _MatrixType, int _UpLo> class LDLT
242
246
  */
243
247
  const LDLT& adjoint() const { return *this; };
244
248
 
245
- inline Index rows() const { return m_matrix.rows(); }
246
- inline Index cols() const { return m_matrix.cols(); }
249
+ EIGEN_DEVICE_FUNC inline EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows(); }
250
+ EIGEN_DEVICE_FUNC inline EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols(); }
247
251
 
248
252
  /** \brief Reports whether previous computation was successful.
249
253
  *
250
- * \returns \c Success if computation was succesful,
254
+ * \returns \c Success if computation was successful,
251
255
  * \c NumericalIssue if the factorization failed because of a zero pivot.
252
256
  */
253
257
  ComputationInfo info() const
@@ -258,8 +262,10 @@ template<typename _MatrixType, int _UpLo> class LDLT
258
262
 
259
263
  #ifndef EIGEN_PARSED_BY_DOXYGEN
260
264
  template<typename RhsType, typename DstType>
261
- EIGEN_DEVICE_FUNC
262
265
  void _solve_impl(const RhsType &rhs, DstType &dst) const;
266
+
267
+ template<bool Conjugate, typename RhsType, typename DstType>
268
+ void _solve_impl_transposed(const RhsType &rhs, DstType &dst) const;
263
269
  #endif
264
270
 
265
271
  protected:
@@ -560,14 +566,22 @@ template<typename _MatrixType, int _UpLo>
560
566
  template<typename RhsType, typename DstType>
561
567
  void LDLT<_MatrixType,_UpLo>::_solve_impl(const RhsType &rhs, DstType &dst) const
562
568
  {
563
- eigen_assert(rhs.rows() == rows());
569
+ _solve_impl_transposed<true>(rhs, dst);
570
+ }
571
+
572
+ template<typename _MatrixType,int _UpLo>
573
+ template<bool Conjugate, typename RhsType, typename DstType>
574
+ void LDLT<_MatrixType,_UpLo>::_solve_impl_transposed(const RhsType &rhs, DstType &dst) const
575
+ {
564
576
  // dst = P b
565
577
  dst = m_transpositions * rhs;
566
578
 
567
579
  // dst = L^-1 (P b)
568
- matrixL().solveInPlace(dst);
580
+ // dst = L^-*T (P b)
581
+ matrixL().template conjugateIf<!Conjugate>().solveInPlace(dst);
569
582
 
570
- // dst = D^-1 (L^-1 P b)
583
+ // dst = D^-* (L^-1 P b)
584
+ // dst = D^-1 (L^-*T P b)
571
585
  // more precisely, use pseudo-inverse of D (see bug 241)
572
586
  using std::abs;
573
587
  const typename Diagonal<const MatrixType>::RealReturnType vecD(vectorD());
@@ -579,7 +593,6 @@ void LDLT<_MatrixType,_UpLo>::_solve_impl(const RhsType &rhs, DstType &dst) cons
579
593
  // Moreover, Lapack's xSYTRS routines use 0 for the tolerance.
580
594
  // Using numeric_limits::min() gives us more robustness to denormals.
581
595
  RealScalar tolerance = (std::numeric_limits<RealScalar>::min)();
582
-
583
596
  for (Index i = 0; i < vecD.size(); ++i)
584
597
  {
585
598
  if(abs(vecD(i)) > tolerance)
@@ -588,10 +601,12 @@ void LDLT<_MatrixType,_UpLo>::_solve_impl(const RhsType &rhs, DstType &dst) cons
588
601
  dst.row(i).setZero();
589
602
  }
590
603
 
591
- // dst = L^-T (D^-1 L^-1 P b)
592
- matrixU().solveInPlace(dst);
604
+ // dst = L^-* (D^-* L^-1 P b)
605
+ // dst = L^-T (D^-1 L^-*T P b)
606
+ matrixL().transpose().template conjugateIf<Conjugate>().solveInPlace(dst);
593
607
 
594
- // dst = P^-1 (L^-T D^-1 L^-1 P b) = A^-1 b
608
+ // dst = P^T (L^-* D^-* L^-1 P b) = A^-1 b
609
+ // dst = P^-T (L^-T D^-1 L^-*T P b) = A^-1 b
595
610
  dst = m_transpositions.transpose() * dst;
596
611
  }
597
612
  #endif
@@ -13,6 +13,16 @@
13
13
  namespace Eigen {
14
14
 
15
15
  namespace internal{
16
+
17
+ template<typename _MatrixType, int _UpLo> struct traits<LLT<_MatrixType, _UpLo> >
18
+ : traits<_MatrixType>
19
+ {
20
+ typedef MatrixXpr XprKind;
21
+ typedef SolverStorage StorageKind;
22
+ typedef int StorageIndex;
23
+ enum { Flags = 0 };
24
+ };
25
+
16
26
  template<typename MatrixType, int UpLo> struct LLT_Traits;
17
27
  }
18
28
 
@@ -54,18 +64,17 @@ template<typename MatrixType, int UpLo> struct LLT_Traits;
54
64
  * \sa MatrixBase::llt(), SelfAdjointView::llt(), class LDLT
55
65
  */
56
66
  template<typename _MatrixType, int _UpLo> class LLT
67
+ : public SolverBase<LLT<_MatrixType, _UpLo> >
57
68
  {
58
69
  public:
59
70
  typedef _MatrixType MatrixType;
71
+ typedef SolverBase<LLT> Base;
72
+ friend class SolverBase<LLT>;
73
+
74
+ EIGEN_GENERIC_PUBLIC_INTERFACE(LLT)
60
75
  enum {
61
- RowsAtCompileTime = MatrixType::RowsAtCompileTime,
62
- ColsAtCompileTime = MatrixType::ColsAtCompileTime,
63
76
  MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
64
77
  };
65
- typedef typename MatrixType::Scalar Scalar;
66
- typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;
67
- typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
68
- typedef typename MatrixType::StorageIndex StorageIndex;
69
78
 
70
79
  enum {
71
80
  PacketSize = internal::packet_traits<Scalar>::size,
@@ -100,7 +109,7 @@ template<typename _MatrixType, int _UpLo> class LLT
100
109
  compute(matrix.derived());
101
110
  }
102
111
 
103
- /** \brief Constructs a LDLT factorization from a given matrix
112
+ /** \brief Constructs a LLT factorization from a given matrix
104
113
  *
105
114
  * This overloaded constructor is provided for \link InplaceDecomposition inplace decomposition \endlink when
106
115
  * \c MatrixType is a Eigen::Ref.
@@ -129,6 +138,7 @@ template<typename _MatrixType, int _UpLo> class LLT
129
138
  return Traits::getL(m_matrix);
130
139
  }
131
140
 
141
+ #ifdef EIGEN_PARSED_BY_DOXYGEN
132
142
  /** \returns the solution x of \f$ A x = b \f$ using the current decomposition of A.
133
143
  *
134
144
  * Since this LLT class assumes anyway that the matrix A is invertible, the solution
@@ -141,13 +151,8 @@ template<typename _MatrixType, int _UpLo> class LLT
141
151
  */
142
152
  template<typename Rhs>
143
153
  inline const Solve<LLT, Rhs>
144
- solve(const MatrixBase<Rhs>& b) const
145
- {
146
- eigen_assert(m_isInitialized && "LLT is not initialized.");
147
- eigen_assert(m_matrix.rows()==b.rows()
148
- && "LLT::solve(): invalid number of rows of the right hand side matrix b");
149
- return Solve<LLT, Rhs>(*this, b.derived());
150
- }
154
+ solve(const MatrixBase<Rhs>& b) const;
155
+ #endif
151
156
 
152
157
  template<typename Derived>
153
158
  void solveInPlace(const MatrixBase<Derived> &bAndX) const;
@@ -180,7 +185,7 @@ template<typename _MatrixType, int _UpLo> class LLT
180
185
 
181
186
  /** \brief Reports whether previous computation was successful.
182
187
  *
183
- * \returns \c Success if computation was succesful,
188
+ * \returns \c Success if computation was successful,
184
189
  * \c NumericalIssue if the matrix.appears not to be positive definite.
185
190
  */
186
191
  ComputationInfo info() const
@@ -194,18 +199,20 @@ template<typename _MatrixType, int _UpLo> class LLT
194
199
  * This method is provided for compatibility with other matrix decompositions, thus enabling generic code such as:
195
200
  * \code x = decomposition.adjoint().solve(b) \endcode
196
201
  */
197
- const LLT& adjoint() const { return *this; };
202
+ const LLT& adjoint() const EIGEN_NOEXCEPT { return *this; };
198
203
 
199
- inline Index rows() const { return m_matrix.rows(); }
200
- inline Index cols() const { return m_matrix.cols(); }
204
+ inline EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows(); }
205
+ inline EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols(); }
201
206
 
202
207
  template<typename VectorType>
203
- LLT rankUpdate(const VectorType& vec, const RealScalar& sigma = 1);
208
+ LLT & rankUpdate(const VectorType& vec, const RealScalar& sigma = 1);
204
209
 
205
210
  #ifndef EIGEN_PARSED_BY_DOXYGEN
206
211
  template<typename RhsType, typename DstType>
207
- EIGEN_DEVICE_FUNC
208
212
  void _solve_impl(const RhsType &rhs, DstType &dst) const;
213
+
214
+ template<bool Conjugate, typename RhsType, typename DstType>
215
+ void _solve_impl_transposed(const RhsType &rhs, DstType &dst) const;
209
216
  #endif
210
217
 
211
218
  protected:
@@ -459,7 +466,7 @@ LLT<MatrixType,_UpLo>& LLT<MatrixType,_UpLo>::compute(const EigenBase<InputType>
459
466
  */
460
467
  template<typename _MatrixType, int _UpLo>
461
468
  template<typename VectorType>
462
- LLT<_MatrixType,_UpLo> LLT<_MatrixType,_UpLo>::rankUpdate(const VectorType& v, const RealScalar& sigma)
469
+ LLT<_MatrixType,_UpLo> & LLT<_MatrixType,_UpLo>::rankUpdate(const VectorType& v, const RealScalar& sigma)
463
470
  {
464
471
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(VectorType);
465
472
  eigen_assert(v.size()==m_matrix.cols());
@@ -477,8 +484,17 @@ template<typename _MatrixType,int _UpLo>
477
484
  template<typename RhsType, typename DstType>
478
485
  void LLT<_MatrixType,_UpLo>::_solve_impl(const RhsType &rhs, DstType &dst) const
479
486
  {
480
- dst = rhs;
481
- solveInPlace(dst);
487
+ _solve_impl_transposed<true>(rhs, dst);
488
+ }
489
+
490
+ template<typename _MatrixType,int _UpLo>
491
+ template<bool Conjugate, typename RhsType, typename DstType>
492
+ void LLT<_MatrixType,_UpLo>::_solve_impl_transposed(const RhsType &rhs, DstType &dst) const
493
+ {
494
+ dst = rhs;
495
+
496
+ matrixL().template conjugateIf<!Conjugate>().solveInPlace(dst);
497
+ matrixU().template conjugateIf<!Conjugate>().solveInPlace(dst);
482
498
  }
483
499
  #endif
484
500