umappp 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (395) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +25 -0
  3. data/README.md +110 -0
  4. data/ext/umappp/extconf.rb +25 -0
  5. data/ext/umappp/numo.hpp +867 -0
  6. data/ext/umappp/umappp.cpp +225 -0
  7. data/lib/umappp/version.rb +5 -0
  8. data/lib/umappp.rb +41 -0
  9. data/vendor/Eigen/Cholesky +45 -0
  10. data/vendor/Eigen/CholmodSupport +48 -0
  11. data/vendor/Eigen/Core +384 -0
  12. data/vendor/Eigen/Dense +7 -0
  13. data/vendor/Eigen/Eigen +2 -0
  14. data/vendor/Eigen/Eigenvalues +60 -0
  15. data/vendor/Eigen/Geometry +59 -0
  16. data/vendor/Eigen/Householder +29 -0
  17. data/vendor/Eigen/IterativeLinearSolvers +48 -0
  18. data/vendor/Eigen/Jacobi +32 -0
  19. data/vendor/Eigen/KLUSupport +41 -0
  20. data/vendor/Eigen/LU +47 -0
  21. data/vendor/Eigen/MetisSupport +35 -0
  22. data/vendor/Eigen/OrderingMethods +70 -0
  23. data/vendor/Eigen/PaStiXSupport +49 -0
  24. data/vendor/Eigen/PardisoSupport +35 -0
  25. data/vendor/Eigen/QR +50 -0
  26. data/vendor/Eigen/QtAlignedMalloc +39 -0
  27. data/vendor/Eigen/SPQRSupport +34 -0
  28. data/vendor/Eigen/SVD +50 -0
  29. data/vendor/Eigen/Sparse +34 -0
  30. data/vendor/Eigen/SparseCholesky +37 -0
  31. data/vendor/Eigen/SparseCore +69 -0
  32. data/vendor/Eigen/SparseLU +50 -0
  33. data/vendor/Eigen/SparseQR +36 -0
  34. data/vendor/Eigen/StdDeque +27 -0
  35. data/vendor/Eigen/StdList +26 -0
  36. data/vendor/Eigen/StdVector +27 -0
  37. data/vendor/Eigen/SuperLUSupport +64 -0
  38. data/vendor/Eigen/UmfPackSupport +40 -0
  39. data/vendor/Eigen/src/Cholesky/LDLT.h +688 -0
  40. data/vendor/Eigen/src/Cholesky/LLT.h +558 -0
  41. data/vendor/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  42. data/vendor/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  43. data/vendor/Eigen/src/Core/ArithmeticSequence.h +413 -0
  44. data/vendor/Eigen/src/Core/Array.h +417 -0
  45. data/vendor/Eigen/src/Core/ArrayBase.h +226 -0
  46. data/vendor/Eigen/src/Core/ArrayWrapper.h +209 -0
  47. data/vendor/Eigen/src/Core/Assign.h +90 -0
  48. data/vendor/Eigen/src/Core/AssignEvaluator.h +1010 -0
  49. data/vendor/Eigen/src/Core/Assign_MKL.h +178 -0
  50. data/vendor/Eigen/src/Core/BandMatrix.h +353 -0
  51. data/vendor/Eigen/src/Core/Block.h +448 -0
  52. data/vendor/Eigen/src/Core/BooleanRedux.h +162 -0
  53. data/vendor/Eigen/src/Core/CommaInitializer.h +164 -0
  54. data/vendor/Eigen/src/Core/ConditionEstimator.h +175 -0
  55. data/vendor/Eigen/src/Core/CoreEvaluators.h +1741 -0
  56. data/vendor/Eigen/src/Core/CoreIterators.h +132 -0
  57. data/vendor/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  58. data/vendor/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  59. data/vendor/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  60. data/vendor/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  61. data/vendor/Eigen/src/Core/CwiseUnaryView.h +132 -0
  62. data/vendor/Eigen/src/Core/DenseBase.h +701 -0
  63. data/vendor/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  64. data/vendor/Eigen/src/Core/DenseStorage.h +652 -0
  65. data/vendor/Eigen/src/Core/Diagonal.h +258 -0
  66. data/vendor/Eigen/src/Core/DiagonalMatrix.h +391 -0
  67. data/vendor/Eigen/src/Core/DiagonalProduct.h +28 -0
  68. data/vendor/Eigen/src/Core/Dot.h +318 -0
  69. data/vendor/Eigen/src/Core/EigenBase.h +160 -0
  70. data/vendor/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  71. data/vendor/Eigen/src/Core/Fuzzy.h +155 -0
  72. data/vendor/Eigen/src/Core/GeneralProduct.h +465 -0
  73. data/vendor/Eigen/src/Core/GenericPacketMath.h +1040 -0
  74. data/vendor/Eigen/src/Core/GlobalFunctions.h +194 -0
  75. data/vendor/Eigen/src/Core/IO.h +258 -0
  76. data/vendor/Eigen/src/Core/IndexedView.h +237 -0
  77. data/vendor/Eigen/src/Core/Inverse.h +117 -0
  78. data/vendor/Eigen/src/Core/Map.h +171 -0
  79. data/vendor/Eigen/src/Core/MapBase.h +310 -0
  80. data/vendor/Eigen/src/Core/MathFunctions.h +2057 -0
  81. data/vendor/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  82. data/vendor/Eigen/src/Core/Matrix.h +565 -0
  83. data/vendor/Eigen/src/Core/MatrixBase.h +547 -0
  84. data/vendor/Eigen/src/Core/NestByValue.h +85 -0
  85. data/vendor/Eigen/src/Core/NoAlias.h +109 -0
  86. data/vendor/Eigen/src/Core/NumTraits.h +335 -0
  87. data/vendor/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  88. data/vendor/Eigen/src/Core/PermutationMatrix.h +605 -0
  89. data/vendor/Eigen/src/Core/PlainObjectBase.h +1128 -0
  90. data/vendor/Eigen/src/Core/Product.h +191 -0
  91. data/vendor/Eigen/src/Core/ProductEvaluators.h +1179 -0
  92. data/vendor/Eigen/src/Core/Random.h +218 -0
  93. data/vendor/Eigen/src/Core/Redux.h +515 -0
  94. data/vendor/Eigen/src/Core/Ref.h +381 -0
  95. data/vendor/Eigen/src/Core/Replicate.h +142 -0
  96. data/vendor/Eigen/src/Core/Reshaped.h +454 -0
  97. data/vendor/Eigen/src/Core/ReturnByValue.h +119 -0
  98. data/vendor/Eigen/src/Core/Reverse.h +217 -0
  99. data/vendor/Eigen/src/Core/Select.h +164 -0
  100. data/vendor/Eigen/src/Core/SelfAdjointView.h +365 -0
  101. data/vendor/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  102. data/vendor/Eigen/src/Core/Solve.h +188 -0
  103. data/vendor/Eigen/src/Core/SolveTriangular.h +235 -0
  104. data/vendor/Eigen/src/Core/SolverBase.h +168 -0
  105. data/vendor/Eigen/src/Core/StableNorm.h +251 -0
  106. data/vendor/Eigen/src/Core/StlIterators.h +463 -0
  107. data/vendor/Eigen/src/Core/Stride.h +116 -0
  108. data/vendor/Eigen/src/Core/Swap.h +68 -0
  109. data/vendor/Eigen/src/Core/Transpose.h +464 -0
  110. data/vendor/Eigen/src/Core/Transpositions.h +386 -0
  111. data/vendor/Eigen/src/Core/TriangularMatrix.h +1001 -0
  112. data/vendor/Eigen/src/Core/VectorBlock.h +96 -0
  113. data/vendor/Eigen/src/Core/VectorwiseOp.h +784 -0
  114. data/vendor/Eigen/src/Core/Visitor.h +381 -0
  115. data/vendor/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  116. data/vendor/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  117. data/vendor/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  118. data/vendor/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  119. data/vendor/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  120. data/vendor/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  121. data/vendor/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  122. data/vendor/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  123. data/vendor/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  124. data/vendor/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  125. data/vendor/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  126. data/vendor/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  127. data/vendor/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  128. data/vendor/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  129. data/vendor/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  130. data/vendor/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  131. data/vendor/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  132. data/vendor/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  133. data/vendor/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  134. data/vendor/Eigen/src/Core/arch/Default/Half.h +942 -0
  135. data/vendor/Eigen/src/Core/arch/Default/Settings.h +49 -0
  136. data/vendor/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  137. data/vendor/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  138. data/vendor/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  139. data/vendor/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  140. data/vendor/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  141. data/vendor/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  142. data/vendor/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  143. data/vendor/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  144. data/vendor/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  145. data/vendor/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  146. data/vendor/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  147. data/vendor/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  148. data/vendor/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  149. data/vendor/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  150. data/vendor/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  151. data/vendor/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  152. data/vendor/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  153. data/vendor/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  154. data/vendor/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  155. data/vendor/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  156. data/vendor/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  157. data/vendor/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  158. data/vendor/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  159. data/vendor/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  160. data/vendor/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  161. data/vendor/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  162. data/vendor/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  163. data/vendor/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  164. data/vendor/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  165. data/vendor/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  166. data/vendor/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  167. data/vendor/Eigen/src/Core/functors/StlFunctors.h +166 -0
  168. data/vendor/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  169. data/vendor/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  170. data/vendor/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  171. data/vendor/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  172. data/vendor/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  173. data/vendor/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  174. data/vendor/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  175. data/vendor/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  176. data/vendor/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  177. data/vendor/Eigen/src/Core/products/Parallelizer.h +180 -0
  178. data/vendor/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  179. data/vendor/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  180. data/vendor/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  181. data/vendor/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  182. data/vendor/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  183. data/vendor/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  184. data/vendor/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  185. data/vendor/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  186. data/vendor/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  187. data/vendor/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  188. data/vendor/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  189. data/vendor/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  190. data/vendor/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  191. data/vendor/Eigen/src/Core/util/BlasUtil.h +583 -0
  192. data/vendor/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  193. data/vendor/Eigen/src/Core/util/Constants.h +563 -0
  194. data/vendor/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  195. data/vendor/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  196. data/vendor/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  197. data/vendor/Eigen/src/Core/util/IntegralConstant.h +272 -0
  198. data/vendor/Eigen/src/Core/util/MKL_support.h +137 -0
  199. data/vendor/Eigen/src/Core/util/Macros.h +1464 -0
  200. data/vendor/Eigen/src/Core/util/Memory.h +1163 -0
  201. data/vendor/Eigen/src/Core/util/Meta.h +812 -0
  202. data/vendor/Eigen/src/Core/util/NonMPL2.h +3 -0
  203. data/vendor/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  204. data/vendor/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  205. data/vendor/Eigen/src/Core/util/StaticAssert.h +221 -0
  206. data/vendor/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  207. data/vendor/Eigen/src/Core/util/XprHelper.h +856 -0
  208. data/vendor/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  209. data/vendor/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  210. data/vendor/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  211. data/vendor/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  212. data/vendor/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  213. data/vendor/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  214. data/vendor/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  215. data/vendor/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  216. data/vendor/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  217. data/vendor/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  218. data/vendor/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  219. data/vendor/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  220. data/vendor/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  221. data/vendor/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  222. data/vendor/Eigen/src/Geometry/AlignedBox.h +486 -0
  223. data/vendor/Eigen/src/Geometry/AngleAxis.h +247 -0
  224. data/vendor/Eigen/src/Geometry/EulerAngles.h +114 -0
  225. data/vendor/Eigen/src/Geometry/Homogeneous.h +501 -0
  226. data/vendor/Eigen/src/Geometry/Hyperplane.h +282 -0
  227. data/vendor/Eigen/src/Geometry/OrthoMethods.h +235 -0
  228. data/vendor/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  229. data/vendor/Eigen/src/Geometry/Quaternion.h +870 -0
  230. data/vendor/Eigen/src/Geometry/Rotation2D.h +199 -0
  231. data/vendor/Eigen/src/Geometry/RotationBase.h +206 -0
  232. data/vendor/Eigen/src/Geometry/Scaling.h +188 -0
  233. data/vendor/Eigen/src/Geometry/Transform.h +1563 -0
  234. data/vendor/Eigen/src/Geometry/Translation.h +202 -0
  235. data/vendor/Eigen/src/Geometry/Umeyama.h +166 -0
  236. data/vendor/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  237. data/vendor/Eigen/src/Householder/BlockHouseholder.h +110 -0
  238. data/vendor/Eigen/src/Householder/Householder.h +176 -0
  239. data/vendor/Eigen/src/Householder/HouseholderSequence.h +545 -0
  240. data/vendor/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  241. data/vendor/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  242. data/vendor/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
  243. data/vendor/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  244. data/vendor/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  245. data/vendor/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  246. data/vendor/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  247. data/vendor/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  248. data/vendor/Eigen/src/Jacobi/Jacobi.h +483 -0
  249. data/vendor/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  250. data/vendor/Eigen/src/LU/Determinant.h +117 -0
  251. data/vendor/Eigen/src/LU/FullPivLU.h +877 -0
  252. data/vendor/Eigen/src/LU/InverseImpl.h +432 -0
  253. data/vendor/Eigen/src/LU/PartialPivLU.h +624 -0
  254. data/vendor/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  255. data/vendor/Eigen/src/LU/arch/InverseSize4.h +351 -0
  256. data/vendor/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  257. data/vendor/Eigen/src/OrderingMethods/Amd.h +435 -0
  258. data/vendor/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  259. data/vendor/Eigen/src/OrderingMethods/Ordering.h +153 -0
  260. data/vendor/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  261. data/vendor/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  262. data/vendor/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  263. data/vendor/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  264. data/vendor/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  265. data/vendor/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  266. data/vendor/Eigen/src/QR/HouseholderQR.h +434 -0
  267. data/vendor/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  268. data/vendor/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  269. data/vendor/Eigen/src/SVD/BDCSVD.h +1366 -0
  270. data/vendor/Eigen/src/SVD/JacobiSVD.h +812 -0
  271. data/vendor/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  272. data/vendor/Eigen/src/SVD/SVDBase.h +376 -0
  273. data/vendor/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  274. data/vendor/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  275. data/vendor/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  276. data/vendor/Eigen/src/SparseCore/AmbiVector.h +378 -0
  277. data/vendor/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  278. data/vendor/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  279. data/vendor/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  280. data/vendor/Eigen/src/SparseCore/SparseAssign.h +270 -0
  281. data/vendor/Eigen/src/SparseCore/SparseBlock.h +571 -0
  282. data/vendor/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  283. data/vendor/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  284. data/vendor/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  285. data/vendor/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  286. data/vendor/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  287. data/vendor/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  288. data/vendor/Eigen/src/SparseCore/SparseDot.h +98 -0
  289. data/vendor/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  290. data/vendor/Eigen/src/SparseCore/SparseMap.h +305 -0
  291. data/vendor/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  292. data/vendor/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
  293. data/vendor/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  294. data/vendor/Eigen/src/SparseCore/SparseProduct.h +181 -0
  295. data/vendor/Eigen/src/SparseCore/SparseRedux.h +49 -0
  296. data/vendor/Eigen/src/SparseCore/SparseRef.h +397 -0
  297. data/vendor/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  298. data/vendor/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  299. data/vendor/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  300. data/vendor/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  301. data/vendor/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  302. data/vendor/Eigen/src/SparseCore/SparseUtil.h +186 -0
  303. data/vendor/Eigen/src/SparseCore/SparseVector.h +478 -0
  304. data/vendor/Eigen/src/SparseCore/SparseView.h +254 -0
  305. data/vendor/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  306. data/vendor/Eigen/src/SparseLU/SparseLU.h +923 -0
  307. data/vendor/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  308. data/vendor/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  309. data/vendor/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  310. data/vendor/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
  311. data/vendor/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  312. data/vendor/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  313. data/vendor/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  314. data/vendor/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  315. data/vendor/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  316. data/vendor/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  317. data/vendor/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  318. data/vendor/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  319. data/vendor/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  320. data/vendor/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  321. data/vendor/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  322. data/vendor/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  323. data/vendor/Eigen/src/SparseQR/SparseQR.h +758 -0
  324. data/vendor/Eigen/src/StlSupport/StdDeque.h +116 -0
  325. data/vendor/Eigen/src/StlSupport/StdList.h +106 -0
  326. data/vendor/Eigen/src/StlSupport/StdVector.h +131 -0
  327. data/vendor/Eigen/src/StlSupport/details.h +84 -0
  328. data/vendor/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  329. data/vendor/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  330. data/vendor/Eigen/src/misc/Image.h +82 -0
  331. data/vendor/Eigen/src/misc/Kernel.h +79 -0
  332. data/vendor/Eigen/src/misc/RealSvd2x2.h +55 -0
  333. data/vendor/Eigen/src/misc/blas.h +440 -0
  334. data/vendor/Eigen/src/misc/lapack.h +152 -0
  335. data/vendor/Eigen/src/misc/lapacke.h +16292 -0
  336. data/vendor/Eigen/src/misc/lapacke_mangling.h +17 -0
  337. data/vendor/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  338. data/vendor/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  339. data/vendor/Eigen/src/plugins/BlockMethods.h +1442 -0
  340. data/vendor/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  341. data/vendor/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  342. data/vendor/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  343. data/vendor/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  344. data/vendor/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  345. data/vendor/Eigen/src/plugins/ReshapedMethods.h +149 -0
  346. data/vendor/aarand/aarand.hpp +114 -0
  347. data/vendor/annoy/annoylib.h +1495 -0
  348. data/vendor/annoy/kissrandom.h +120 -0
  349. data/vendor/annoy/mman.h +242 -0
  350. data/vendor/hnswlib/bruteforce.h +152 -0
  351. data/vendor/hnswlib/hnswalg.h +1192 -0
  352. data/vendor/hnswlib/hnswlib.h +108 -0
  353. data/vendor/hnswlib/space_ip.h +282 -0
  354. data/vendor/hnswlib/space_l2.h +281 -0
  355. data/vendor/hnswlib/visited_list_pool.h +79 -0
  356. data/vendor/irlba/irlba.hpp +575 -0
  357. data/vendor/irlba/lanczos.hpp +212 -0
  358. data/vendor/irlba/parallel.hpp +474 -0
  359. data/vendor/irlba/utils.hpp +224 -0
  360. data/vendor/irlba/wrappers.hpp +228 -0
  361. data/vendor/kmeans/Base.hpp +75 -0
  362. data/vendor/kmeans/Details.hpp +79 -0
  363. data/vendor/kmeans/HartiganWong.hpp +492 -0
  364. data/vendor/kmeans/InitializeKmeansPP.hpp +144 -0
  365. data/vendor/kmeans/InitializeNone.hpp +44 -0
  366. data/vendor/kmeans/InitializePCAPartition.hpp +309 -0
  367. data/vendor/kmeans/InitializeRandom.hpp +91 -0
  368. data/vendor/kmeans/Kmeans.hpp +161 -0
  369. data/vendor/kmeans/Lloyd.hpp +134 -0
  370. data/vendor/kmeans/MiniBatch.hpp +269 -0
  371. data/vendor/kmeans/QuickSearch.hpp +179 -0
  372. data/vendor/kmeans/compute_centroids.hpp +32 -0
  373. data/vendor/kmeans/compute_wcss.hpp +27 -0
  374. data/vendor/kmeans/is_edge_case.hpp +42 -0
  375. data/vendor/kmeans/random.hpp +55 -0
  376. data/vendor/knncolle/Annoy/Annoy.hpp +193 -0
  377. data/vendor/knncolle/BruteForce/BruteForce.hpp +120 -0
  378. data/vendor/knncolle/Hnsw/Hnsw.hpp +225 -0
  379. data/vendor/knncolle/Kmknn/Kmknn.hpp +286 -0
  380. data/vendor/knncolle/VpTree/VpTree.hpp +256 -0
  381. data/vendor/knncolle/knncolle.hpp +34 -0
  382. data/vendor/knncolle/utils/Base.hpp +100 -0
  383. data/vendor/knncolle/utils/NeighborQueue.hpp +94 -0
  384. data/vendor/knncolle/utils/distances.hpp +98 -0
  385. data/vendor/knncolle/utils/find_nearest_neighbors.hpp +112 -0
  386. data/vendor/powerit/PowerIterations.hpp +157 -0
  387. data/vendor/umappp/NeighborList.hpp +37 -0
  388. data/vendor/umappp/Umap.hpp +662 -0
  389. data/vendor/umappp/combine_neighbor_sets.hpp +95 -0
  390. data/vendor/umappp/find_ab.hpp +157 -0
  391. data/vendor/umappp/neighbor_similarities.hpp +136 -0
  392. data/vendor/umappp/optimize_layout.hpp +285 -0
  393. data/vendor/umappp/spectral_init.hpp +181 -0
  394. data/vendor/umappp/umappp.hpp +13 -0
  395. metadata +465 -0
@@ -0,0 +1,563 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2008-2015 Gael Guennebaud <gael.guennebaud@inria.fr>
5
+ // Copyright (C) 2007-2009 Benoit Jacob <jacob.benoit.1@gmail.com>
6
+ // Copyright (C) 2020, Arm Limited and Contributors
7
+ //
8
+ // This Source Code Form is subject to the terms of the Mozilla
9
+ // Public License v. 2.0. If a copy of the MPL was not distributed
10
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
11
+
12
+ #ifndef EIGEN_CONSTANTS_H
13
+ #define EIGEN_CONSTANTS_H
14
+
15
+ namespace Eigen {
16
+
17
+ /** This value means that a positive quantity (e.g., a size) is not known at compile-time, and that instead the value is
18
+ * stored in some runtime variable.
19
+ *
20
+ * Changing the value of Dynamic breaks the ABI, as Dynamic is often used as a template parameter for Matrix.
21
+ */
22
+ const int Dynamic = -1;
23
+
24
+ /** This value means that a signed quantity (e.g., a signed index) is not known at compile-time, and that instead its value
25
+ * has to be specified at runtime.
26
+ */
27
+ const int DynamicIndex = 0xffffff;
28
+
29
+ /** This value means that the increment to go from one value to another in a sequence is not constant for each step.
30
+ */
31
+ const int UndefinedIncr = 0xfffffe;
32
+
33
+ /** This value means +Infinity; it is currently used only as the p parameter to MatrixBase::lpNorm<int>().
34
+ * The value Infinity there means the L-infinity norm.
35
+ */
36
+ const int Infinity = -1;
37
+
38
+ /** This value means that the cost to evaluate an expression coefficient is either very expensive or
39
+ * cannot be known at compile time.
40
+ *
41
+ * This value has to be positive to (1) simplify cost computation, and (2) allow to distinguish between a very expensive and very very expensive expressions.
42
+ * It thus must also be large enough to make sure unrolling won't happen and that sub expressions will be evaluated, but not too large to avoid overflow.
43
+ */
44
+ const int HugeCost = 10000;
45
+
46
+ /** \defgroup flags Flags
47
+ * \ingroup Core_Module
48
+ *
49
+ * These are the possible bits which can be OR'ed to constitute the flags of a matrix or
50
+ * expression.
51
+ *
52
+ * It is important to note that these flags are a purely compile-time notion. They are a compile-time property of
53
+ * an expression type, implemented as enum's. They are not stored in memory at runtime, and they do not incur any
54
+ * runtime overhead.
55
+ *
56
+ * \sa MatrixBase::Flags
57
+ */
58
+
59
+ /** \ingroup flags
60
+ *
61
+ * for a matrix, this means that the storage order is row-major.
62
+ * If this bit is not set, the storage order is column-major.
63
+ * For an expression, this determines the storage order of
64
+ * the matrix created by evaluation of that expression.
65
+ * \sa \blank \ref TopicStorageOrders */
66
+ const unsigned int RowMajorBit = 0x1;
67
+
68
+ /** \ingroup flags
69
+ * means the expression should be evaluated by the calling expression */
70
+ const unsigned int EvalBeforeNestingBit = 0x2;
71
+
72
+ /** \ingroup flags
73
+ * \deprecated
74
+ * means the expression should be evaluated before any assignment */
75
+ EIGEN_DEPRECATED
76
+ const unsigned int EvalBeforeAssigningBit = 0x4; // FIXME deprecated
77
+
78
+ /** \ingroup flags
79
+ *
80
+ * Short version: means the expression might be vectorized
81
+ *
82
+ * Long version: means that the coefficients can be handled by packets
83
+ * and start at a memory location whose alignment meets the requirements
84
+ * of the present CPU architecture for optimized packet access. In the fixed-size
85
+ * case, there is the additional condition that it be possible to access all the
86
+ * coefficients by packets (this implies the requirement that the size be a multiple of 16 bytes,
87
+ * and that any nontrivial strides don't break the alignment). In the dynamic-size case,
88
+ * there is no such condition on the total size and strides, so it might not be possible to access
89
+ * all coeffs by packets.
90
+ *
91
+ * \note This bit can be set regardless of whether vectorization is actually enabled.
92
+ * To check for actual vectorizability, see \a ActualPacketAccessBit.
93
+ */
94
+ const unsigned int PacketAccessBit = 0x8;
95
+
96
+ #ifdef EIGEN_VECTORIZE
97
+ /** \ingroup flags
98
+ *
99
+ * If vectorization is enabled (EIGEN_VECTORIZE is defined) this constant
100
+ * is set to the value \a PacketAccessBit.
101
+ *
102
+ * If vectorization is not enabled (EIGEN_VECTORIZE is not defined) this constant
103
+ * is set to the value 0.
104
+ */
105
+ const unsigned int ActualPacketAccessBit = PacketAccessBit;
106
+ #else
107
+ const unsigned int ActualPacketAccessBit = 0x0;
108
+ #endif
109
+
110
+ /** \ingroup flags
111
+ *
112
+ * Short version: means the expression can be seen as 1D vector.
113
+ *
114
+ * Long version: means that one can access the coefficients
115
+ * of this expression by coeff(int), and coeffRef(int) in the case of a lvalue expression. These
116
+ * index-based access methods are guaranteed
117
+ * to not have to do any runtime computation of a (row, col)-pair from the index, so that it
118
+ * is guaranteed that whenever it is available, index-based access is at least as fast as
119
+ * (row,col)-based access. Expressions for which that isn't possible don't have the LinearAccessBit.
120
+ *
121
+ * If both PacketAccessBit and LinearAccessBit are set, then the
122
+ * packets of this expression can be accessed by packet(int), and writePacket(int) in the case of a
123
+ * lvalue expression.
124
+ *
125
+ * Typically, all vector expressions have the LinearAccessBit, but there is one exception:
126
+ * Product expressions don't have it, because it would be troublesome for vectorization, even when the
127
+ * Product is a vector expression. Thus, vector Product expressions allow index-based coefficient access but
128
+ * not index-based packet access, so they don't have the LinearAccessBit.
129
+ */
130
+ const unsigned int LinearAccessBit = 0x10;
131
+
132
+ /** \ingroup flags
133
+ *
134
+ * Means the expression has a coeffRef() method, i.e. is writable as its individual coefficients are directly addressable.
135
+ * This rules out read-only expressions.
136
+ *
137
+ * Note that DirectAccessBit and LvalueBit are mutually orthogonal, as there are examples of expression having one but note
138
+ * the other:
139
+ * \li writable expressions that don't have a very simple memory layout as a strided array, have LvalueBit but not DirectAccessBit
140
+ * \li Map-to-const expressions, for example Map<const Matrix>, have DirectAccessBit but not LvalueBit
141
+ *
142
+ * Expressions having LvalueBit also have their coeff() method returning a const reference instead of returning a new value.
143
+ */
144
+ const unsigned int LvalueBit = 0x20;
145
+
146
+ /** \ingroup flags
147
+ *
148
+ * Means that the underlying array of coefficients can be directly accessed as a plain strided array. The memory layout
149
+ * of the array of coefficients must be exactly the natural one suggested by rows(), cols(),
150
+ * outerStride(), innerStride(), and the RowMajorBit. This rules out expressions such as Diagonal, whose coefficients,
151
+ * though referencable, do not have such a regular memory layout.
152
+ *
153
+ * See the comment on LvalueBit for an explanation of how LvalueBit and DirectAccessBit are mutually orthogonal.
154
+ */
155
+ const unsigned int DirectAccessBit = 0x40;
156
+
157
+ /** \deprecated \ingroup flags
158
+ *
159
+ * means the first coefficient packet is guaranteed to be aligned.
160
+ * An expression cannot have the AlignedBit without the PacketAccessBit flag.
161
+ * In other words, this means we are allow to perform an aligned packet access to the first element regardless
162
+ * of the expression kind:
163
+ * \code
164
+ * expression.packet<Aligned>(0);
165
+ * \endcode
166
+ */
167
+ EIGEN_DEPRECATED const unsigned int AlignedBit = 0x80;
168
+
169
+ const unsigned int NestByRefBit = 0x100;
170
+
171
+ /** \ingroup flags
172
+ *
173
+ * for an expression, this means that the storage order
174
+ * can be either row-major or column-major.
175
+ * The precise choice will be decided at evaluation time or when
176
+ * combined with other expressions.
177
+ * \sa \blank \ref RowMajorBit, \ref TopicStorageOrders */
178
+ const unsigned int NoPreferredStorageOrderBit = 0x200;
179
+
180
+ /** \ingroup flags
181
+ *
182
+ * Means that the underlying coefficients can be accessed through pointers to the sparse (un)compressed storage format,
183
+ * that is, the expression provides:
184
+ * \code
185
+ inline const Scalar* valuePtr() const;
186
+ inline const Index* innerIndexPtr() const;
187
+ inline const Index* outerIndexPtr() const;
188
+ inline const Index* innerNonZeroPtr() const;
189
+ \endcode
190
+ */
191
+ const unsigned int CompressedAccessBit = 0x400;
192
+
193
+
194
+ // list of flags that are inherited by default
195
+ const unsigned int HereditaryBits = RowMajorBit
196
+ | EvalBeforeNestingBit;
197
+
198
+ /** \defgroup enums Enumerations
199
+ * \ingroup Core_Module
200
+ *
201
+ * Various enumerations used in %Eigen. Many of these are used as template parameters.
202
+ */
203
+
204
+ /** \ingroup enums
205
+ * Enum containing possible values for the \c Mode or \c UpLo parameter of
206
+ * MatrixBase::selfadjointView() and MatrixBase::triangularView(), and selfadjoint solvers. */
207
+ enum UpLoType {
208
+ /** View matrix as a lower triangular matrix. */
209
+ Lower=0x1,
210
+ /** View matrix as an upper triangular matrix. */
211
+ Upper=0x2,
212
+ /** %Matrix has ones on the diagonal; to be used in combination with #Lower or #Upper. */
213
+ UnitDiag=0x4,
214
+ /** %Matrix has zeros on the diagonal; to be used in combination with #Lower or #Upper. */
215
+ ZeroDiag=0x8,
216
+ /** View matrix as a lower triangular matrix with ones on the diagonal. */
217
+ UnitLower=UnitDiag|Lower,
218
+ /** View matrix as an upper triangular matrix with ones on the diagonal. */
219
+ UnitUpper=UnitDiag|Upper,
220
+ /** View matrix as a lower triangular matrix with zeros on the diagonal. */
221
+ StrictlyLower=ZeroDiag|Lower,
222
+ /** View matrix as an upper triangular matrix with zeros on the diagonal. */
223
+ StrictlyUpper=ZeroDiag|Upper,
224
+ /** Used in BandMatrix and SelfAdjointView to indicate that the matrix is self-adjoint. */
225
+ SelfAdjoint=0x10,
226
+ /** Used to support symmetric, non-selfadjoint, complex matrices. */
227
+ Symmetric=0x20
228
+ };
229
+
230
+ /** \ingroup enums
231
+ * Enum for indicating whether a buffer is aligned or not. */
232
+ enum AlignmentType {
233
+ Unaligned=0, /**< Data pointer has no specific alignment. */
234
+ Aligned8=8, /**< Data pointer is aligned on a 8 bytes boundary. */
235
+ Aligned16=16, /**< Data pointer is aligned on a 16 bytes boundary. */
236
+ Aligned32=32, /**< Data pointer is aligned on a 32 bytes boundary. */
237
+ Aligned64=64, /**< Data pointer is aligned on a 64 bytes boundary. */
238
+ Aligned128=128, /**< Data pointer is aligned on a 128 bytes boundary. */
239
+ AlignedMask=255,
240
+ Aligned=16, /**< \deprecated Synonym for Aligned16. */
241
+ #if EIGEN_MAX_ALIGN_BYTES==128
242
+ AlignedMax = Aligned128
243
+ #elif EIGEN_MAX_ALIGN_BYTES==64
244
+ AlignedMax = Aligned64
245
+ #elif EIGEN_MAX_ALIGN_BYTES==32
246
+ AlignedMax = Aligned32
247
+ #elif EIGEN_MAX_ALIGN_BYTES==16
248
+ AlignedMax = Aligned16
249
+ #elif EIGEN_MAX_ALIGN_BYTES==8
250
+ AlignedMax = Aligned8
251
+ #elif EIGEN_MAX_ALIGN_BYTES==0
252
+ AlignedMax = Unaligned
253
+ #else
254
+ #error Invalid value for EIGEN_MAX_ALIGN_BYTES
255
+ #endif
256
+ };
257
+
258
+ /** \ingroup enums
259
+ * Enum containing possible values for the \p Direction parameter of
260
+ * Reverse, PartialReduxExpr and VectorwiseOp. */
261
+ enum DirectionType {
262
+ /** For Reverse, all columns are reversed;
263
+ * for PartialReduxExpr and VectorwiseOp, act on columns. */
264
+ Vertical,
265
+ /** For Reverse, all rows are reversed;
266
+ * for PartialReduxExpr and VectorwiseOp, act on rows. */
267
+ Horizontal,
268
+ /** For Reverse, both rows and columns are reversed;
269
+ * not used for PartialReduxExpr and VectorwiseOp. */
270
+ BothDirections
271
+ };
272
+
273
+ /** \internal \ingroup enums
274
+ * Enum to specify how to traverse the entries of a matrix. */
275
+ enum TraversalType {
276
+ /** \internal Default traversal, no vectorization, no index-based access */
277
+ DefaultTraversal,
278
+ /** \internal No vectorization, use index-based access to have only one for loop instead of 2 nested loops */
279
+ LinearTraversal,
280
+ /** \internal Equivalent to a slice vectorization for fixed-size matrices having good alignment
281
+ * and good size */
282
+ InnerVectorizedTraversal,
283
+ /** \internal Vectorization path using a single loop plus scalar loops for the
284
+ * unaligned boundaries */
285
+ LinearVectorizedTraversal,
286
+ /** \internal Generic vectorization path using one vectorized loop per row/column with some
287
+ * scalar loops to handle the unaligned boundaries */
288
+ SliceVectorizedTraversal,
289
+ /** \internal Special case to properly handle incompatible scalar types or other defecting cases*/
290
+ InvalidTraversal,
291
+ /** \internal Evaluate all entries at once */
292
+ AllAtOnceTraversal
293
+ };
294
+
295
+ /** \internal \ingroup enums
296
+ * Enum to specify whether to unroll loops when traversing over the entries of a matrix. */
297
+ enum UnrollingType {
298
+ /** \internal Do not unroll loops. */
299
+ NoUnrolling,
300
+ /** \internal Unroll only the inner loop, but not the outer loop. */
301
+ InnerUnrolling,
302
+ /** \internal Unroll both the inner and the outer loop. If there is only one loop,
303
+ * because linear traversal is used, then unroll that loop. */
304
+ CompleteUnrolling
305
+ };
306
+
307
+ /** \internal \ingroup enums
308
+ * Enum to specify whether to use the default (built-in) implementation or the specialization. */
309
+ enum SpecializedType {
310
+ Specialized,
311
+ BuiltIn
312
+ };
313
+
314
+ /** \ingroup enums
315
+ * Enum containing possible values for the \p _Options template parameter of
316
+ * Matrix, Array and BandMatrix. */
317
+ enum StorageOptions {
318
+ /** Storage order is column major (see \ref TopicStorageOrders). */
319
+ ColMajor = 0,
320
+ /** Storage order is row major (see \ref TopicStorageOrders). */
321
+ RowMajor = 0x1, // it is only a coincidence that this is equal to RowMajorBit -- don't rely on that
322
+ /** Align the matrix itself if it is vectorizable fixed-size */
323
+ AutoAlign = 0,
324
+ /** Don't require alignment for the matrix itself (the array of coefficients, if dynamically allocated, may still be requested to be aligned) */ // FIXME --- clarify the situation
325
+ DontAlign = 0x2
326
+ };
327
+
328
+ /** \ingroup enums
329
+ * Enum for specifying whether to apply or solve on the left or right. */
330
+ enum SideType {
331
+ /** Apply transformation on the left. */
332
+ OnTheLeft = 1,
333
+ /** Apply transformation on the right. */
334
+ OnTheRight = 2
335
+ };
336
+
337
+ /** \ingroup enums
338
+ * Enum for specifying NaN-propagation behavior, e.g. for coeff-wise min/max. */
339
+ enum NaNPropagationOptions {
340
+ /** Implementation defined behavior if NaNs are present. */
341
+ PropagateFast = 0,
342
+ /** Always propagate NaNs. */
343
+ PropagateNaN,
344
+ /** Always propagate not-NaNs. */
345
+ PropagateNumbers
346
+ };
347
+
348
+ /* the following used to be written as:
349
+ *
350
+ * struct NoChange_t {};
351
+ * namespace {
352
+ * EIGEN_UNUSED NoChange_t NoChange;
353
+ * }
354
+ *
355
+ * on the ground that it feels dangerous to disambiguate overloaded functions on enum/integer types.
356
+ * However, this leads to "variable declared but never referenced" warnings on Intel Composer XE,
357
+ * and we do not know how to get rid of them (bug 450).
358
+ */
359
+
360
+ enum NoChange_t { NoChange };
361
+ enum Sequential_t { Sequential };
362
+ enum Default_t { Default };
363
+
364
+ /** \internal \ingroup enums
365
+ * Used in AmbiVector. */
366
+ enum AmbiVectorMode {
367
+ IsDense = 0,
368
+ IsSparse
369
+ };
370
+
371
+ /** \ingroup enums
372
+ * Used as template parameter in DenseCoeffBase and MapBase to indicate
373
+ * which accessors should be provided. */
374
+ enum AccessorLevels {
375
+ /** Read-only access via a member function. */
376
+ ReadOnlyAccessors,
377
+ /** Read/write access via member functions. */
378
+ WriteAccessors,
379
+ /** Direct read-only access to the coefficients. */
380
+ DirectAccessors,
381
+ /** Direct read/write access to the coefficients. */
382
+ DirectWriteAccessors
383
+ };
384
+
385
+ /** \ingroup enums
386
+ * Enum with options to give to various decompositions. */
387
+ enum DecompositionOptions {
388
+ /** \internal Not used (meant for LDLT?). */
389
+ Pivoting = 0x01,
390
+ /** \internal Not used (meant for LDLT?). */
391
+ NoPivoting = 0x02,
392
+ /** Used in JacobiSVD to indicate that the square matrix U is to be computed. */
393
+ ComputeFullU = 0x04,
394
+ /** Used in JacobiSVD to indicate that the thin matrix U is to be computed. */
395
+ ComputeThinU = 0x08,
396
+ /** Used in JacobiSVD to indicate that the square matrix V is to be computed. */
397
+ ComputeFullV = 0x10,
398
+ /** Used in JacobiSVD to indicate that the thin matrix V is to be computed. */
399
+ ComputeThinV = 0x20,
400
+ /** Used in SelfAdjointEigenSolver and GeneralizedSelfAdjointEigenSolver to specify
401
+ * that only the eigenvalues are to be computed and not the eigenvectors. */
402
+ EigenvaluesOnly = 0x40,
403
+ /** Used in SelfAdjointEigenSolver and GeneralizedSelfAdjointEigenSolver to specify
404
+ * that both the eigenvalues and the eigenvectors are to be computed. */
405
+ ComputeEigenvectors = 0x80,
406
+ /** \internal */
407
+ EigVecMask = EigenvaluesOnly | ComputeEigenvectors,
408
+ /** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
409
+ * solve the generalized eigenproblem \f$ Ax = \lambda B x \f$. */
410
+ Ax_lBx = 0x100,
411
+ /** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
412
+ * solve the generalized eigenproblem \f$ ABx = \lambda x \f$. */
413
+ ABx_lx = 0x200,
414
+ /** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
415
+ * solve the generalized eigenproblem \f$ BAx = \lambda x \f$. */
416
+ BAx_lx = 0x400,
417
+ /** \internal */
418
+ GenEigMask = Ax_lBx | ABx_lx | BAx_lx
419
+ };
420
+
421
+ /** \ingroup enums
422
+ * Possible values for the \p QRPreconditioner template parameter of JacobiSVD. */
423
+ enum QRPreconditioners {
424
+ /** Do not specify what is to be done if the SVD of a non-square matrix is asked for. */
425
+ NoQRPreconditioner,
426
+ /** Use a QR decomposition without pivoting as the first step. */
427
+ HouseholderQRPreconditioner,
428
+ /** Use a QR decomposition with column pivoting as the first step. */
429
+ ColPivHouseholderQRPreconditioner,
430
+ /** Use a QR decomposition with full pivoting as the first step. */
431
+ FullPivHouseholderQRPreconditioner
432
+ };
433
+
434
+ #ifdef Success
435
+ #error The preprocessor symbol 'Success' is defined, possibly by the X11 header file X.h
436
+ #endif
437
+
438
+ /** \ingroup enums
439
+ * Enum for reporting the status of a computation. */
440
+ enum ComputationInfo {
441
+ /** Computation was successful. */
442
+ Success = 0,
443
+ /** The provided data did not satisfy the prerequisites. */
444
+ NumericalIssue = 1,
445
+ /** Iterative procedure did not converge. */
446
+ NoConvergence = 2,
447
+ /** The inputs are invalid, or the algorithm has been improperly called.
448
+ * When assertions are enabled, such errors trigger an assert. */
449
+ InvalidInput = 3
450
+ };
451
+
452
+ /** \ingroup enums
453
+ * Enum used to specify how a particular transformation is stored in a matrix.
454
+ * \sa Transform, Hyperplane::transform(). */
455
+ enum TransformTraits {
456
+ /** Transformation is an isometry. */
457
+ Isometry = 0x1,
458
+ /** Transformation is an affine transformation stored as a (Dim+1)^2 matrix whose last row is
459
+ * assumed to be [0 ... 0 1]. */
460
+ Affine = 0x2,
461
+ /** Transformation is an affine transformation stored as a (Dim) x (Dim+1) matrix. */
462
+ AffineCompact = 0x10 | Affine,
463
+ /** Transformation is a general projective transformation stored as a (Dim+1)^2 matrix. */
464
+ Projective = 0x20
465
+ };
466
+
467
+ /** \internal \ingroup enums
468
+ * Enum used to choose between implementation depending on the computer architecture. */
469
+ namespace Architecture
470
+ {
471
+ enum Type {
472
+ Generic = 0x0,
473
+ SSE = 0x1,
474
+ AltiVec = 0x2,
475
+ VSX = 0x3,
476
+ NEON = 0x4,
477
+ MSA = 0x5,
478
+ SVE = 0x6,
479
+ #if defined EIGEN_VECTORIZE_SSE
480
+ Target = SSE
481
+ #elif defined EIGEN_VECTORIZE_ALTIVEC
482
+ Target = AltiVec
483
+ #elif defined EIGEN_VECTORIZE_VSX
484
+ Target = VSX
485
+ #elif defined EIGEN_VECTORIZE_NEON
486
+ Target = NEON
487
+ #elif defined EIGEN_VECTORIZE_SVE
488
+ Target = SVE
489
+ #elif defined EIGEN_VECTORIZE_MSA
490
+ Target = MSA
491
+ #else
492
+ Target = Generic
493
+ #endif
494
+ };
495
+ }
496
+
497
+ /** \internal \ingroup enums
498
+ * Enum used as template parameter in Product and product evaluators. */
499
+ enum ProductImplType
500
+ { DefaultProduct=0, LazyProduct, AliasFreeProduct, CoeffBasedProductMode, LazyCoeffBasedProductMode, OuterProduct, InnerProduct, GemvProduct, GemmProduct };
501
+
502
+ /** \internal \ingroup enums
503
+ * Enum used in experimental parallel implementation. */
504
+ enum Action {GetAction, SetAction};
505
+
506
+ /** The type used to identify a dense storage. */
507
+ struct Dense {};
508
+
509
+ /** The type used to identify a general sparse storage. */
510
+ struct Sparse {};
511
+
512
+ /** The type used to identify a general solver (factored) storage. */
513
+ struct SolverStorage {};
514
+
515
+ /** The type used to identify a permutation storage. */
516
+ struct PermutationStorage {};
517
+
518
+ /** The type used to identify a permutation storage. */
519
+ struct TranspositionsStorage {};
520
+
521
+ /** The type used to identify a matrix expression */
522
+ struct MatrixXpr {};
523
+
524
+ /** The type used to identify an array expression */
525
+ struct ArrayXpr {};
526
+
527
+ // An evaluator must define its shape. By default, it can be one of the following:
528
+ struct DenseShape { static std::string debugName() { return "DenseShape"; } };
529
+ struct SolverShape { static std::string debugName() { return "SolverShape"; } };
530
+ struct HomogeneousShape { static std::string debugName() { return "HomogeneousShape"; } };
531
+ struct DiagonalShape { static std::string debugName() { return "DiagonalShape"; } };
532
+ struct BandShape { static std::string debugName() { return "BandShape"; } };
533
+ struct TriangularShape { static std::string debugName() { return "TriangularShape"; } };
534
+ struct SelfAdjointShape { static std::string debugName() { return "SelfAdjointShape"; } };
535
+ struct PermutationShape { static std::string debugName() { return "PermutationShape"; } };
536
+ struct TranspositionsShape { static std::string debugName() { return "TranspositionsShape"; } };
537
+ struct SparseShape { static std::string debugName() { return "SparseShape"; } };
538
+
539
+ namespace internal {
540
+
541
+ // random access iterators based on coeff*() accessors.
542
+ struct IndexBased {};
543
+
544
+ // evaluator based on iterators to access coefficients.
545
+ struct IteratorBased {};
546
+
547
+ /** \internal
548
+ * Constants for comparison functors
549
+ */
550
+ enum ComparisonName {
551
+ cmp_EQ = 0,
552
+ cmp_LT = 1,
553
+ cmp_LE = 2,
554
+ cmp_UNORD = 3,
555
+ cmp_NEQ = 4,
556
+ cmp_GT = 5,
557
+ cmp_GE = 6
558
+ };
559
+ } // end namespace internal
560
+
561
+ } // end namespace Eigen
562
+
563
+ #endif // EIGEN_CONSTANTS_H
@@ -0,0 +1,106 @@
1
+ #ifndef EIGEN_WARNINGS_DISABLED
2
+ #define EIGEN_WARNINGS_DISABLED
3
+
4
+ #ifdef _MSC_VER
5
+ // 4100 - unreferenced formal parameter (occurred e.g. in aligned_allocator::destroy(pointer p))
6
+ // 4101 - unreferenced local variable
7
+ // 4181 - qualifier applied to reference type ignored
8
+ // 4211 - nonstandard extension used : redefined extern to static
9
+ // 4244 - 'argument' : conversion from 'type1' to 'type2', possible loss of data
10
+ // 4273 - QtAlignedMalloc, inconsistent DLL linkage
11
+ // 4324 - structure was padded due to declspec(align())
12
+ // 4503 - decorated name length exceeded, name was truncated
13
+ // 4512 - assignment operator could not be generated
14
+ // 4522 - 'class' : multiple assignment operators specified
15
+ // 4700 - uninitialized local variable 'xyz' used
16
+ // 4714 - function marked as __forceinline not inlined
17
+ // 4717 - 'function' : recursive on all control paths, function will cause runtime stack overflow
18
+ // 4800 - 'type' : forcing value to bool 'true' or 'false' (performance warning)
19
+ #ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS
20
+ #pragma warning( push )
21
+ #endif
22
+ #pragma warning( disable : 4100 4101 4181 4211 4244 4273 4324 4503 4512 4522 4700 4714 4717 4800)
23
+
24
+ #elif defined __INTEL_COMPILER
25
+ // 2196 - routine is both "inline" and "noinline" ("noinline" assumed)
26
+ // ICC 12 generates this warning even without any inline keyword, when defining class methods 'inline' i.e. inside of class body
27
+ // typedef that may be a reference type.
28
+ // 279 - controlling expression is constant
29
+ // ICC 12 generates this warning on assert(constant_expression_depending_on_template_params) and frankly this is a legitimate use case.
30
+ // 1684 - conversion from pointer to same-sized integral type (potential portability problem)
31
+ // 2259 - non-pointer conversion from "Eigen::Index={ptrdiff_t={long}}" to "int" may lose significant bits
32
+ #ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS
33
+ #pragma warning push
34
+ #endif
35
+ #pragma warning disable 2196 279 1684 2259
36
+
37
+ #elif defined __clang__
38
+ // -Wconstant-logical-operand - warning: use of logical && with constant operand; switch to bitwise & or remove constant
39
+ // this is really a stupid warning as it warns on compile-time expressions involving enums
40
+ #ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS
41
+ #pragma clang diagnostic push
42
+ #endif
43
+ #pragma clang diagnostic ignored "-Wconstant-logical-operand"
44
+ #if __clang_major__ >= 3 && __clang_minor__ >= 5
45
+ #pragma clang diagnostic ignored "-Wabsolute-value"
46
+ #endif
47
+ #if __clang_major__ >= 10
48
+ #pragma clang diagnostic ignored "-Wimplicit-int-float-conversion"
49
+ #endif
50
+ #if ( defined(__ALTIVEC__) || defined(__VSX__) ) && __cplusplus < 201103L
51
+ // warning: generic selections are a C11-specific feature
52
+ // ignoring warnings thrown at vec_ctf in Altivec/PacketMath.h
53
+ #pragma clang diagnostic ignored "-Wc11-extensions"
54
+ #endif
55
+
56
+ #elif defined __GNUC__
57
+
58
+ #if (!defined(EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS)) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
59
+ #pragma GCC diagnostic push
60
+ #endif
61
+ // g++ warns about local variables shadowing member functions, which is too strict
62
+ #pragma GCC diagnostic ignored "-Wshadow"
63
+ #if __GNUC__ == 4 && __GNUC_MINOR__ < 8
64
+ // Until g++-4.7 there are warnings when comparing unsigned int vs 0, even in templated functions:
65
+ #pragma GCC diagnostic ignored "-Wtype-limits"
66
+ #endif
67
+ #if __GNUC__>=6
68
+ #pragma GCC diagnostic ignored "-Wignored-attributes"
69
+ #endif
70
+ #if __GNUC__==7
71
+ // See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89325
72
+ #pragma GCC diagnostic ignored "-Wattributes"
73
+ #endif
74
+ #endif
75
+
76
+ #if defined __NVCC__
77
+ #pragma diag_suppress boolean_controlling_expr_is_constant
78
+ // Disable the "statement is unreachable" message
79
+ #pragma diag_suppress code_is_unreachable
80
+ // Disable the "dynamic initialization in unreachable code" message
81
+ #pragma diag_suppress initialization_not_reachable
82
+ // Disable the "invalid error number" message that we get with older versions of nvcc
83
+ #pragma diag_suppress 1222
84
+ // Disable the "calling a __host__ function from a __host__ __device__ function is not allowed" messages (yes, there are many of them and they seem to change with every version of the compiler)
85
+ #pragma diag_suppress 2527
86
+ #pragma diag_suppress 2529
87
+ #pragma diag_suppress 2651
88
+ #pragma diag_suppress 2653
89
+ #pragma diag_suppress 2668
90
+ #pragma diag_suppress 2669
91
+ #pragma diag_suppress 2670
92
+ #pragma diag_suppress 2671
93
+ #pragma diag_suppress 2735
94
+ #pragma diag_suppress 2737
95
+ #pragma diag_suppress 2739
96
+ #endif
97
+
98
+ #else
99
+ // warnings already disabled:
100
+ # ifndef EIGEN_WARNINGS_DISABLED_2
101
+ # define EIGEN_WARNINGS_DISABLED_2
102
+ # elif defined(EIGEN_INTERNAL_DEBUGGING)
103
+ # error "Do not include \"DisableStupidWarnings.h\" recursively more than twice!"
104
+ # endif
105
+
106
+ #endif // not EIGEN_WARNINGS_DISABLED