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
@@ -7,10 +7,46 @@
7
7
  // Public License v. 2.0. If a copy of the MPL was not distributed
8
8
  // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
9
 
10
+ // Function void Eigen::AlignedBox::transform(const Transform& transform)
11
+ // is provided under the following license agreement:
12
+ //
13
+ // Software License Agreement (BSD License)
14
+ //
15
+ // Copyright (c) 2011-2014, Willow Garage, Inc.
16
+ // Copyright (c) 2014-2015, Open Source Robotics Foundation
17
+ // All rights reserved.
18
+ //
19
+ // Redistribution and use in source and binary forms, with or without
20
+ // modification, are permitted provided that the following conditions
21
+ // are met:
22
+ //
23
+ // * Redistributions of source code must retain the above copyright
24
+ // notice, this list of conditions and the following disclaimer.
25
+ // * Redistributions in binary form must reproduce the above
26
+ // copyright notice, this list of conditions and the following
27
+ // disclaimer in the documentation and/or other materials provided
28
+ // with the distribution.
29
+ // * Neither the name of Open Source Robotics Foundation nor the names of its
30
+ // contributors may be used to endorse or promote products derived
31
+ // from this software without specific prior written permission.
32
+ //
33
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
34
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
35
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
36
+ // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
37
+ // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
38
+ // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
39
+ // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
40
+ // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
41
+ // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
42
+ // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
43
+ // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
44
+ // POSSIBILITY OF SUCH DAMAGE.
45
+
10
46
  #ifndef EIGEN_ALIGNEDBOX_H
11
47
  #define EIGEN_ALIGNEDBOX_H
12
48
 
13
- namespace Eigen {
49
+ namespace Eigen {
14
50
 
15
51
  /** \geometry_module \ingroup Geometry_Module
16
52
  *
@@ -63,7 +99,7 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
63
99
 
64
100
  /** Default constructor initializing a null box. */
65
101
  EIGEN_DEVICE_FUNC inline AlignedBox()
66
- { if (AmbientDimAtCompileTime!=Dynamic) setEmpty(); }
102
+ { if (EIGEN_CONST_CONDITIONAL(AmbientDimAtCompileTime!=Dynamic)) setEmpty(); }
67
103
 
68
104
  /** Constructs a null box with \a _dim the dimension of the ambient space. */
69
105
  EIGEN_DEVICE_FUNC inline explicit AlignedBox(Index _dim) : m_min(_dim), m_max(_dim)
@@ -231,7 +267,7 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
231
267
  {return AlignedBox(m_min.cwiseMax(b.m_min), m_max.cwiseMin(b.m_max)); }
232
268
 
233
269
  /** Returns an AlignedBox that is the union of \a b and \c *this.
234
- * \note Merging with an empty box may result in a box bigger than \c *this.
270
+ * \note Merging with an empty box may result in a box bigger than \c *this.
235
271
  * \sa extend(const AlignedBox&) */
236
272
  EIGEN_DEVICE_FUNC inline AlignedBox merged(const AlignedBox& b) const
237
273
  { return AlignedBox(m_min.cwiseMin(b.m_min), m_max.cwiseMax(b.m_max)); }
@@ -246,6 +282,15 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
246
282
  return *this;
247
283
  }
248
284
 
285
+ /** \returns a copy of \c *this translated by the vector \a t. */
286
+ template<typename Derived>
287
+ EIGEN_DEVICE_FUNC inline AlignedBox translated(const MatrixBase<Derived>& a_t) const
288
+ {
289
+ AlignedBox result(m_min, m_max);
290
+ result.translate(a_t);
291
+ return result;
292
+ }
293
+
249
294
  /** \returns the squared distance between the point \a p and the box \c *this,
250
295
  * and zero if \a p is inside the box.
251
296
  * \sa exteriorDistance(const MatrixBase&), squaredExteriorDistance(const AlignedBox&)
@@ -265,14 +310,63 @@ EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_AmbientDim)
265
310
  */
266
311
  template<typename Derived>
267
312
  EIGEN_DEVICE_FUNC inline NonInteger exteriorDistance(const MatrixBase<Derived>& p) const
268
- { EIGEN_USING_STD_MATH(sqrt) return sqrt(NonInteger(squaredExteriorDistance(p))); }
313
+ { EIGEN_USING_STD(sqrt) return sqrt(NonInteger(squaredExteriorDistance(p))); }
269
314
 
270
315
  /** \returns the distance between the boxes \a b and \c *this,
271
316
  * and zero if the boxes intersect.
272
317
  * \sa squaredExteriorDistance(const AlignedBox&), exteriorDistance(const MatrixBase&)
273
318
  */
274
319
  EIGEN_DEVICE_FUNC inline NonInteger exteriorDistance(const AlignedBox& b) const
275
- { EIGEN_USING_STD_MATH(sqrt) return sqrt(NonInteger(squaredExteriorDistance(b))); }
320
+ { EIGEN_USING_STD(sqrt) return sqrt(NonInteger(squaredExteriorDistance(b))); }
321
+
322
+ /**
323
+ * Specialization of transform for pure translation.
324
+ */
325
+ template<int Mode, int Options>
326
+ EIGEN_DEVICE_FUNC inline void transform(
327
+ const typename Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>::TranslationType& translation)
328
+ {
329
+ this->translate(translation);
330
+ }
331
+
332
+ /**
333
+ * Transforms this box by \a transform and recomputes it to
334
+ * still be an axis-aligned box.
335
+ *
336
+ * \note This method is provided under BSD license (see the top of this file).
337
+ */
338
+ template<int Mode, int Options>
339
+ EIGEN_DEVICE_FUNC inline void transform(const Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>& transform)
340
+ {
341
+ // Only Affine and Isometry transforms are currently supported.
342
+ EIGEN_STATIC_ASSERT(Mode == Affine || Mode == AffineCompact || Mode == Isometry, THIS_METHOD_IS_ONLY_FOR_SPECIFIC_TRANSFORMATIONS);
343
+
344
+ // Method adapted from FCL src/shape/geometric_shapes_utility.cpp#computeBV<AABB, Box>(...)
345
+ // https://github.com/flexible-collision-library/fcl/blob/fcl-0.4/src/shape/geometric_shapes_utility.cpp#L292
346
+ //
347
+ // Here's a nice explanation why it works: https://zeuxcg.org/2010/10/17/aabb-from-obb-with-component-wise-abs/
348
+
349
+ // two times rotated extent
350
+ const VectorType rotated_extent_2 = transform.linear().cwiseAbs() * sizes();
351
+ // two times new center
352
+ const VectorType rotated_center_2 = transform.linear() * (this->m_max + this->m_min) +
353
+ Scalar(2) * transform.translation();
354
+
355
+ this->m_max = (rotated_center_2 + rotated_extent_2) / Scalar(2);
356
+ this->m_min = (rotated_center_2 - rotated_extent_2) / Scalar(2);
357
+ }
358
+
359
+ /**
360
+ * \returns a copy of \c *this transformed by \a transform and recomputed to
361
+ * still be an axis-aligned box.
362
+ */
363
+ template<int Mode, int Options>
364
+ EIGEN_DEVICE_FUNC AlignedBox transformed(const Transform<Scalar, AmbientDimAtCompileTime, Mode, Options>& transform) const
365
+ {
366
+ AlignedBox result(m_min, m_max);
367
+ result.transform(transform);
368
+ return result;
369
+ }
276
370
 
277
371
  /** \returns \c *this with scalar type casted to \a NewScalarType
278
372
  *
@@ -169,8 +169,8 @@ template<typename Scalar>
169
169
  template<typename QuatDerived>
170
170
  EIGEN_DEVICE_FUNC AngleAxis<Scalar>& AngleAxis<Scalar>::operator=(const QuaternionBase<QuatDerived>& q)
171
171
  {
172
- EIGEN_USING_STD_MATH(atan2)
173
- EIGEN_USING_STD_MATH(abs)
172
+ EIGEN_USING_STD(atan2)
173
+ EIGEN_USING_STD(abs)
174
174
  Scalar n = q.vec().norm();
175
175
  if(n<NumTraits<Scalar>::epsilon())
176
176
  n = q.vec().stableNorm();
@@ -217,8 +217,8 @@ template<typename Scalar>
217
217
  typename AngleAxis<Scalar>::Matrix3
218
218
  EIGEN_DEVICE_FUNC AngleAxis<Scalar>::toRotationMatrix(void) const
219
219
  {
220
- EIGEN_USING_STD_MATH(sin)
221
- EIGEN_USING_STD_MATH(cos)
220
+ EIGEN_USING_STD(sin)
221
+ EIGEN_USING_STD(cos)
222
222
  Matrix3 res;
223
223
  Vector3 sin_axis = sin(m_angle) * m_axis;
224
224
  Scalar c = cos(m_angle);
@@ -36,9 +36,9 @@ template<typename Derived>
36
36
  EIGEN_DEVICE_FUNC inline Matrix<typename MatrixBase<Derived>::Scalar,3,1>
37
37
  MatrixBase<Derived>::eulerAngles(Index a0, Index a1, Index a2) const
38
38
  {
39
- EIGEN_USING_STD_MATH(atan2)
40
- EIGEN_USING_STD_MATH(sin)
41
- EIGEN_USING_STD_MATH(cos)
39
+ EIGEN_USING_STD(atan2)
40
+ EIGEN_USING_STD(sin)
41
+ EIGEN_USING_STD(cos)
42
42
  /* Implemented from Graphics Gems IV */
43
43
  EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived,3,3)
44
44
 
@@ -10,7 +10,7 @@
10
10
  #ifndef EIGEN_HOMOGENEOUS_H
11
11
  #define EIGEN_HOMOGENEOUS_H
12
12
 
13
- namespace Eigen {
13
+ namespace Eigen {
14
14
 
15
15
  /** \geometry_module \ingroup Geometry_Module
16
16
  *
@@ -72,9 +72,11 @@ template<typename MatrixType,int _Direction> class Homogeneous
72
72
  : m_matrix(matrix)
73
73
  {}
74
74
 
75
- EIGEN_DEVICE_FUNC inline Index rows() const { return m_matrix.rows() + (int(Direction)==Vertical ? 1 : 0); }
76
- EIGEN_DEVICE_FUNC inline Index cols() const { return m_matrix.cols() + (int(Direction)==Horizontal ? 1 : 0); }
77
-
75
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
76
+ inline Index rows() const EIGEN_NOEXCEPT { return m_matrix.rows() + (int(Direction)==Vertical ? 1 : 0); }
77
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
78
+ inline Index cols() const EIGEN_NOEXCEPT { return m_matrix.cols() + (int(Direction)==Horizontal ? 1 : 0); }
79
+
78
80
  EIGEN_DEVICE_FUNC const NestedExpression& nestedExpression() const { return m_matrix; }
79
81
 
80
82
  template<typename Rhs>
@@ -262,8 +264,10 @@ struct homogeneous_left_product_impl<Homogeneous<MatrixType,Vertical>,Lhs>
262
264
  m_rhs(rhs)
263
265
  {}
264
266
 
265
- EIGEN_DEVICE_FUNC inline Index rows() const { return m_lhs.rows(); }
266
- EIGEN_DEVICE_FUNC inline Index cols() const { return m_rhs.cols(); }
267
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
268
+ inline Index rows() const EIGEN_NOEXCEPT { return m_lhs.rows(); }
269
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
270
+ inline Index cols() const EIGEN_NOEXCEPT { return m_rhs.cols(); }
267
271
 
268
272
  template<typename Dest> EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const
269
273
  {
@@ -300,8 +304,8 @@ struct homogeneous_right_product_impl<Homogeneous<MatrixType,Horizontal>,Rhs>
300
304
  : m_lhs(lhs), m_rhs(rhs)
301
305
  {}
302
306
 
303
- EIGEN_DEVICE_FUNC inline Index rows() const { return m_lhs.rows(); }
304
- EIGEN_DEVICE_FUNC inline Index cols() const { return m_rhs.cols(); }
307
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index rows() const EIGEN_NOEXCEPT { return m_lhs.rows(); }
308
+ EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR inline Index cols() const EIGEN_NOEXCEPT { return m_rhs.cols(); }
305
309
 
306
310
  template<typename Dest> EIGEN_DEVICE_FUNC void evalTo(Dest& dst) const
307
311
  {
@@ -322,7 +326,7 @@ template<typename ArgType,int Direction>
322
326
  struct evaluator_traits<Homogeneous<ArgType,Direction> >
323
327
  {
324
328
  typedef typename storage_kind_to_evaluator_kind<typename ArgType::StorageKind>::Kind Kind;
325
- typedef HomogeneousShape Shape;
329
+ typedef HomogeneousShape Shape;
326
330
  };
327
331
 
328
332
  template<> struct AssignmentKind<DenseShape,HomogeneousShape> { typedef Dense2Dense Kind; };
@@ -414,7 +418,7 @@ struct product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, Homogeneous
414
418
  typedef typename helper::ConstantBlock ConstantBlock;
415
419
  typedef typename helper::Xpr RefactoredXpr;
416
420
  typedef evaluator<RefactoredXpr> Base;
417
-
421
+
418
422
  EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
419
423
  : Base( xpr.lhs().nestedExpression() .lazyProduct( xpr.rhs().template topRows<helper::Dim>(xpr.lhs().nestedExpression().cols()) )
420
424
  + ConstantBlock(xpr.rhs().row(xpr.rhs().rows()-1),xpr.lhs().rows(), 1) )
@@ -467,7 +471,7 @@ struct product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, DenseShape,
467
471
  typedef typename helper::ConstantBlock ConstantBlock;
468
472
  typedef typename helper::Xpr RefactoredXpr;
469
473
  typedef evaluator<RefactoredXpr> Base;
470
-
474
+
471
475
  EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
472
476
  : Base( xpr.lhs().template leftCols<helper::Dim>(xpr.rhs().nestedExpression().rows()) .lazyProduct( xpr.rhs().nestedExpression() )
473
477
  + ConstantBlock(xpr.lhs().col(xpr.lhs().cols()-1),1,xpr.rhs().cols()) )
@@ -119,7 +119,7 @@ public:
119
119
  * If the dimension of the ambient space is greater than 2, then there isn't uniqueness,
120
120
  * so an arbitrary choice is made.
121
121
  */
122
- // FIXME to be consitent with the rest this could be implemented as a static Through function ??
122
+ // FIXME to be consistent with the rest this could be implemented as a static Through function ??
123
123
  EIGEN_DEVICE_FUNC explicit Hyperplane(const ParametrizedLine<Scalar, AmbientDimAtCompileTime>& parametrized)
124
124
  {
125
125
  normal() = parametrized.direction().unitOrthogonal();
@@ -27,9 +27,10 @@ namespace Eigen {
27
27
  template<typename Derived>
28
28
  template<typename OtherDerived>
29
29
  #ifndef EIGEN_PARSED_BY_DOXYGEN
30
- EIGEN_DEVICE_FUNC inline typename MatrixBase<Derived>::template cross_product_return_type<OtherDerived>::type
30
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
31
+ typename MatrixBase<Derived>::template cross_product_return_type<OtherDerived>::type
31
32
  #else
32
- inline typename MatrixBase<Derived>::PlainObject
33
+ typename MatrixBase<Derived>::PlainObject
33
34
  #endif
34
35
  MatrixBase<Derived>::cross(const MatrixBase<OtherDerived>& other) const
35
36
  {
@@ -87,7 +87,7 @@ public:
87
87
  /** \returns the distance of a point \a p to its projection onto the line \c *this.
88
88
  * \sa squaredDistance()
89
89
  */
90
- EIGEN_DEVICE_FUNC RealScalar distance(const VectorType& p) const { EIGEN_USING_STD_MATH(sqrt) return sqrt(squaredDistance(p)); }
90
+ EIGEN_DEVICE_FUNC RealScalar distance(const VectorType& p) const { EIGEN_USING_STD(sqrt) return sqrt(squaredDistance(p)); }
91
91
 
92
92
  /** \returns the projection of a point \a p onto the line \c *this. */
93
93
  EIGEN_DEVICE_FUNC VectorType projection(const VectorType& p) const
@@ -104,7 +104,44 @@ public:
104
104
  template <int OtherOptions>
105
105
  EIGEN_DEVICE_FUNC VectorType intersectionPoint(const Hyperplane<_Scalar, _AmbientDim, OtherOptions>& hyperplane) const;
106
106
 
107
- /** \returns \c *this with scalar type casted to \a NewScalarType
107
+ /** Applies the transformation matrix \a mat to \c *this and returns a reference to \c *this.
108
+ *
109
+ * \param mat the Dim x Dim transformation matrix
110
+ * \param traits specifies whether the matrix \a mat represents an #Isometry
111
+ * or a more generic #Affine transformation. The default is #Affine.
112
+ */
113
+ template<typename XprType>
114
+ EIGEN_DEVICE_FUNC inline ParametrizedLine& transform(const MatrixBase<XprType>& mat, TransformTraits traits = Affine)
115
+ {
116
+ if (traits==Affine)
117
+ direction() = (mat * direction()).normalized();
118
+ else if (traits==Isometry)
119
+ direction() = mat * direction();
120
+ else
121
+ {
122
+ eigen_assert(0 && "invalid traits value in ParametrizedLine::transform()");
123
+ }
124
+ origin() = mat * origin();
125
+ return *this;
126
+ }
127
+
128
+ /** Applies the transformation \a t to \c *this and returns a reference to \c *this.
129
+ *
130
+ * \param t the transformation of dimension Dim
131
+ * \param traits specifies whether the transformation \a t represents an #Isometry
132
+ * or a more generic #Affine transformation. The default is #Affine.
133
+ * Other kind of transformations are not supported.
134
+ */
135
+ template<int TrOptions>
136
+ EIGEN_DEVICE_FUNC inline ParametrizedLine& transform(const Transform<Scalar,AmbientDimAtCompileTime,Affine,TrOptions>& t,
137
+ TransformTraits traits = Affine)
138
+ {
139
+ transform(t.linear(), traits);
140
+ origin() += t.translation();
141
+ return *this;
142
+ }
143
+
144
+ /** \returns \c *this with scalar type casted to \a NewScalarType
108
145
  *
109
146
  * Note that if \a NewScalarType is equal to the current scalar type of \c *this
110
147
  * then this function smartly returns a const reference to \c *this.
@@ -141,7 +141,7 @@ class QuaternionBase : public RotationBase<Derived, 3>
141
141
  template<class OtherDerived> EIGEN_DEVICE_FUNC Scalar angularDistance(const QuaternionBase<OtherDerived>& other) const;
142
142
 
143
143
  /** \returns an equivalent 3x3 rotation matrix */
144
- EIGEN_DEVICE_FUNC Matrix3 toRotationMatrix() const;
144
+ EIGEN_DEVICE_FUNC inline Matrix3 toRotationMatrix() const;
145
145
 
146
146
  /** \returns the quaternion which transform \a a into \a b through a rotation */
147
147
  template<typename Derived1, typename Derived2>
@@ -158,6 +158,22 @@ class QuaternionBase : public RotationBase<Derived, 3>
158
158
 
159
159
  template<class OtherDerived> EIGEN_DEVICE_FUNC Quaternion<Scalar> slerp(const Scalar& t, const QuaternionBase<OtherDerived>& other) const;
160
160
 
161
+ /** \returns true if each coefficients of \c *this and \a other are all exactly equal.
162
+ * \warning When using floating point scalar values you probably should rather use a
163
+ * fuzzy comparison such as isApprox()
164
+ * \sa isApprox(), operator!= */
165
+ template<class OtherDerived>
166
+ EIGEN_DEVICE_FUNC inline bool operator==(const QuaternionBase<OtherDerived>& other) const
167
+ { return coeffs() == other.coeffs(); }
168
+
169
+ /** \returns true if at least one pair of coefficients of \c *this and \a other are not exactly equal to each other.
170
+ * \warning When using floating point scalar values you probably should rather use a
171
+ * fuzzy comparison such as isApprox()
172
+ * \sa isApprox(), operator== */
173
+ template<class OtherDerived>
174
+ EIGEN_DEVICE_FUNC inline bool operator!=(const QuaternionBase<OtherDerived>& other) const
175
+ { return coeffs() != other.coeffs(); }
176
+
161
177
  /** \returns \c true if \c *this is approximately equal to \a other, within the precision
162
178
  * determined by \a prec.
163
179
  *
@@ -169,20 +185,45 @@ class QuaternionBase : public RotationBase<Derived, 3>
169
185
  /** return the result vector of \a v through the rotation*/
170
186
  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Vector3 _transformVector(const Vector3& v) const;
171
187
 
188
+ #ifdef EIGEN_PARSED_BY_DOXYGEN
172
189
  /** \returns \c *this with scalar type casted to \a NewScalarType
173
190
  *
174
191
  * Note that if \a NewScalarType is equal to the current scalar type of \c *this
175
192
  * then this function smartly returns a const reference to \c *this.
176
193
  */
177
194
  template<typename NewScalarType>
178
- EIGEN_DEVICE_FUNC inline typename internal::cast_return_type<Derived,Quaternion<NewScalarType> >::type cast() const
195
+ EIGEN_DEVICE_FUNC inline typename internal::cast_return_type<Derived,Quaternion<NewScalarType> >::type cast() const;
196
+
197
+ #else
198
+
199
+ template<typename NewScalarType>
200
+ EIGEN_DEVICE_FUNC inline
201
+ typename internal::enable_if<internal::is_same<Scalar,NewScalarType>::value,const Derived&>::type cast() const
179
202
  {
180
- return typename internal::cast_return_type<Derived,Quaternion<NewScalarType> >::type(derived());
203
+ return derived();
181
204
  }
182
205
 
206
+ template<typename NewScalarType>
207
+ EIGEN_DEVICE_FUNC inline
208
+ typename internal::enable_if<!internal::is_same<Scalar,NewScalarType>::value,Quaternion<NewScalarType> >::type cast() const
209
+ {
210
+ return Quaternion<NewScalarType>(coeffs().template cast<NewScalarType>());
211
+ }
212
+ #endif
213
+
214
+ #ifndef EIGEN_NO_IO
215
+ friend std::ostream& operator<<(std::ostream& s, const QuaternionBase<Derived>& q) {
216
+ s << q.x() << "i + " << q.y() << "j + " << q.z() << "k" << " + " << q.w();
217
+ return s;
218
+ }
219
+ #endif
220
+
183
221
  #ifdef EIGEN_QUATERNIONBASE_PLUGIN
184
222
  # include EIGEN_QUATERNIONBASE_PLUGIN
185
223
  #endif
224
+ protected:
225
+ EIGEN_DEFAULT_COPY_CONSTRUCTOR(QuaternionBase)
226
+ EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(QuaternionBase)
186
227
  };
187
228
 
188
229
  /***************************************************************************
@@ -276,6 +317,21 @@ public:
276
317
  EIGEN_DEVICE_FUNC explicit inline Quaternion(const Quaternion<OtherScalar, OtherOptions>& other)
277
318
  { m_coeffs = other.coeffs().template cast<Scalar>(); }
278
319
 
320
+ #if EIGEN_HAS_RVALUE_REFERENCES
321
+ // We define a copy constructor, which means we don't get an implicit move constructor or assignment operator.
322
+ /** Default move constructor */
323
+ EIGEN_DEVICE_FUNC inline Quaternion(Quaternion&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_constructible<Scalar>::value)
324
+ : m_coeffs(std::move(other.coeffs()))
325
+ {}
326
+
327
+ /** Default move assignment operator */
328
+ EIGEN_DEVICE_FUNC Quaternion& operator=(Quaternion&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_assignable<Scalar>::value)
329
+ {
330
+ m_coeffs = std::move(other.coeffs());
331
+ return *this;
332
+ }
333
+ #endif
334
+
279
335
  EIGEN_DEVICE_FUNC static Quaternion UnitRandom();
280
336
 
281
337
  template<typename Derived1, typename Derived2>
@@ -504,8 +560,8 @@ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& QuaternionBase<Derived>::operator
504
560
  template<class Derived>
505
561
  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& QuaternionBase<Derived>::operator=(const AngleAxisType& aa)
506
562
  {
507
- EIGEN_USING_STD_MATH(cos)
508
- EIGEN_USING_STD_MATH(sin)
563
+ EIGEN_USING_STD(cos)
564
+ EIGEN_USING_STD(sin)
509
565
  Scalar ha = Scalar(0.5)*aa.angle(); // Scalar(0.5) to suppress precision loss warnings
510
566
  this->w() = cos(ha);
511
567
  this->vec() = sin(ha) * aa.axis();
@@ -581,7 +637,7 @@ template<class Derived>
581
637
  template<typename Derived1, typename Derived2>
582
638
  EIGEN_DEVICE_FUNC inline Derived& QuaternionBase<Derived>::setFromTwoVectors(const MatrixBase<Derived1>& a, const MatrixBase<Derived2>& b)
583
639
  {
584
- EIGEN_USING_STD_MATH(sqrt)
640
+ EIGEN_USING_STD(sqrt)
585
641
  Vector3 v0 = a.normalized();
586
642
  Vector3 v1 = b.normalized();
587
643
  Scalar c = v1.dot(v0);
@@ -622,13 +678,13 @@ EIGEN_DEVICE_FUNC inline Derived& QuaternionBase<Derived>::setFromTwoVectors(con
622
678
  template<typename Scalar, int Options>
623
679
  EIGEN_DEVICE_FUNC Quaternion<Scalar,Options> Quaternion<Scalar,Options>::UnitRandom()
624
680
  {
625
- EIGEN_USING_STD_MATH(sqrt)
626
- EIGEN_USING_STD_MATH(sin)
627
- EIGEN_USING_STD_MATH(cos)
681
+ EIGEN_USING_STD(sqrt)
682
+ EIGEN_USING_STD(sin)
683
+ EIGEN_USING_STD(cos)
628
684
  const Scalar u1 = internal::random<Scalar>(0, 1),
629
685
  u2 = internal::random<Scalar>(0, 2*EIGEN_PI),
630
686
  u3 = internal::random<Scalar>(0, 2*EIGEN_PI);
631
- const Scalar a = sqrt(1 - u1),
687
+ const Scalar a = sqrt(Scalar(1) - u1),
632
688
  b = sqrt(u1);
633
689
  return Quaternion (a * sin(u2), a * cos(u2), b * sin(u3), b * cos(u3));
634
690
  }
@@ -707,7 +763,7 @@ template <class OtherDerived>
707
763
  EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar
708
764
  QuaternionBase<Derived>::angularDistance(const QuaternionBase<OtherDerived>& other) const
709
765
  {
710
- EIGEN_USING_STD_MATH(atan2)
766
+ EIGEN_USING_STD(atan2)
711
767
  Quaternion<Scalar> d = (*this) * other.conjugate();
712
768
  return Scalar(2) * atan2( d.vec().norm(), numext::abs(d.w()) );
713
769
  }
@@ -725,8 +781,8 @@ template <class OtherDerived>
725
781
  EIGEN_DEVICE_FUNC Quaternion<typename internal::traits<Derived>::Scalar>
726
782
  QuaternionBase<Derived>::slerp(const Scalar& t, const QuaternionBase<OtherDerived>& other) const
727
783
  {
728
- EIGEN_USING_STD_MATH(acos)
729
- EIGEN_USING_STD_MATH(sin)
784
+ EIGEN_USING_STD(acos)
785
+ EIGEN_USING_STD(sin)
730
786
  const Scalar one = Scalar(1) - NumTraits<Scalar>::epsilon();
731
787
  Scalar d = this->dot(other);
732
788
  Scalar absD = numext::abs(d);
@@ -763,7 +819,7 @@ struct quaternionbase_assign_impl<Other,3,3>
763
819
  template<class Derived> EIGEN_DEVICE_FUNC static inline void run(QuaternionBase<Derived>& q, const Other& a_mat)
764
820
  {
765
821
  const typename internal::nested_eval<Other,2>::type mat(a_mat);
766
- EIGEN_USING_STD_MATH(sqrt)
822
+ EIGEN_USING_STD(sqrt)
767
823
  // This algorithm comes from "Quaternion Calculus and Fast Animation",
768
824
  // Ken Shoemake, 1987 SIGGRAPH course notes
769
825
  Scalar t = mat.trace();
@@ -175,7 +175,7 @@ template<typename Scalar>
175
175
  template<typename Derived>
176
176
  EIGEN_DEVICE_FUNC Rotation2D<Scalar>& Rotation2D<Scalar>::fromRotationMatrix(const MatrixBase<Derived>& mat)
177
177
  {
178
- EIGEN_USING_STD_MATH(atan2)
178
+ EIGEN_USING_STD(atan2)
179
179
  EIGEN_STATIC_ASSERT(Derived::RowsAtCompileTime==2 && Derived::ColsAtCompileTime==2,YOU_MADE_A_PROGRAMMING_MISTAKE)
180
180
  m_angle = atan2(mat.coeff(1,0), mat.coeff(0,0));
181
181
  return *this;
@@ -187,8 +187,8 @@ template<typename Scalar>
187
187
  typename Rotation2D<Scalar>::Matrix2
188
188
  EIGEN_DEVICE_FUNC Rotation2D<Scalar>::toRotationMatrix(void) const
189
189
  {
190
- EIGEN_USING_STD_MATH(sin)
191
- EIGEN_USING_STD_MATH(cos)
190
+ EIGEN_USING_STD(sin)
191
+ EIGEN_USING_STD(cos)
192
192
  Scalar sinA = sin(m_angle);
193
193
  Scalar cosA = cos(m_angle);
194
194
  return (Matrix2() << cosA, -sinA, sinA, cosA).finished();
@@ -14,7 +14,7 @@ namespace Eigen {
14
14
 
15
15
  /** \geometry_module \ingroup Geometry_Module
16
16
  *
17
- * \class Scaling
17
+ * \class UniformScaling
18
18
  *
19
19
  * \brief Represents a generic uniform scaling transformation
20
20
  *
@@ -29,6 +29,22 @@ namespace Eigen {
29
29
  *
30
30
  * \sa Scaling(), class DiagonalMatrix, MatrixBase::asDiagonal(), class Translation, class Transform
31
31
  */
32
+
33
+ namespace internal
34
+ {
35
+ // This helper helps nvcc+MSVC to properly parse this file.
36
+ // See bug 1412.
37
+ template <typename Scalar, int Dim, int Mode>
38
+ struct uniformscaling_times_affine_returntype
39
+ {
40
+ enum
41
+ {
42
+ NewMode = int(Mode) == int(Isometry) ? Affine : Mode
43
+ };
44
+ typedef Transform <Scalar, Dim, NewMode> type;
45
+ };
46
+ }
47
+
32
48
  template<typename _Scalar>
33
49
  class UniformScaling
34
50
  {
@@ -60,9 +76,11 @@ public:
60
76
 
61
77
  /** Concatenates a uniform scaling and an affine transformation */
62
78
  template<int Dim, int Mode, int Options>
63
- inline Transform<Scalar,Dim,(int(Mode)==int(Isometry)?Affine:Mode)> operator* (const Transform<Scalar,Dim, Mode, Options>& t) const
79
+ inline typename
80
+ internal::uniformscaling_times_affine_returntype<Scalar,Dim,Mode>::type
81
+ operator* (const Transform<Scalar, Dim, Mode, Options>& t) const
64
82
  {
65
- Transform<Scalar,Dim,(int(Mode)==int(Isometry)?Affine:Mode)> res = t;
83
+ typename internal::uniformscaling_times_affine_returntype<Scalar,Dim,Mode>::type res = t;
66
84
  res.prescale(factor());
67
85
  return res;
68
86
  }
@@ -70,7 +88,7 @@ public:
70
88
  /** Concatenates a uniform scaling and a linear transformation matrix */
71
89
  // TODO returns an expression
72
90
  template<typename Derived>
73
- inline typename internal::plain_matrix_type<Derived>::type operator* (const MatrixBase<Derived>& other) const
91
+ inline typename Eigen::internal::plain_matrix_type<Derived>::type operator* (const MatrixBase<Derived>& other) const
74
92
  { return other * m_factor; }
75
93
 
76
94
  template<typename Derived,int Dim>
@@ -110,7 +128,7 @@ public:
110
128
  /** Concatenates a linear transformation matrix and a uniform scaling
111
129
  * \relates UniformScaling
112
130
  */
113
- // NOTE this operator is defiend in MatrixBase and not as a friend function
131
+ // NOTE this operator is defined in MatrixBase and not as a friend function
114
132
  // of UniformScaling to fix an internal crash of Intel's ICC
115
133
  template<typename Derived,typename Scalar>
116
134
  EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,Scalar,product)