@smake/eigen 1.0.1 → 1.1.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 (283) hide show
  1. package/README.md +1 -1
  2. package/eigen/COPYING.APACHE +203 -0
  3. package/eigen/COPYING.BSD +1 -1
  4. package/eigen/COPYING.MINPACK +51 -52
  5. package/eigen/Eigen/Cholesky +0 -1
  6. package/eigen/Eigen/Core +108 -266
  7. package/eigen/Eigen/Eigenvalues +0 -1
  8. package/eigen/Eigen/Geometry +3 -6
  9. package/eigen/Eigen/Householder +0 -1
  10. package/eigen/Eigen/Jacobi +0 -1
  11. package/eigen/Eigen/KLUSupport +41 -0
  12. package/eigen/Eigen/LU +2 -5
  13. package/eigen/Eigen/OrderingMethods +0 -3
  14. package/eigen/Eigen/PaStiXSupport +1 -0
  15. package/eigen/Eigen/PardisoSupport +0 -0
  16. package/eigen/Eigen/QR +0 -1
  17. package/eigen/Eigen/QtAlignedMalloc +0 -1
  18. package/eigen/Eigen/SVD +0 -1
  19. package/eigen/Eigen/Sparse +0 -2
  20. package/eigen/Eigen/SparseCholesky +0 -8
  21. package/eigen/Eigen/SparseLU +4 -0
  22. package/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
  23. package/eigen/Eigen/src/Cholesky/LLT.h +39 -23
  24. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
  25. package/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
  26. package/eigen/Eigen/src/Core/Array.h +99 -11
  27. package/eigen/Eigen/src/Core/ArrayBase.h +1 -1
  28. package/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
  29. package/eigen/Eigen/src/Core/Assign.h +1 -1
  30. package/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
  31. package/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
  32. package/eigen/Eigen/src/Core/BandMatrix.h +16 -16
  33. package/eigen/Eigen/src/Core/Block.h +56 -60
  34. package/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
  35. package/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
  36. package/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
  37. package/eigen/Eigen/src/Core/CoreIterators.h +5 -0
  38. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
  39. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
  40. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
  41. package/eigen/Eigen/src/Core/CwiseUnaryView.h +12 -10
  42. package/eigen/Eigen/src/Core/DenseBase.h +128 -39
  43. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
  44. package/eigen/Eigen/src/Core/DenseStorage.h +150 -68
  45. package/eigen/Eigen/src/Core/Diagonal.h +21 -23
  46. package/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
  47. package/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
  48. package/eigen/Eigen/src/Core/Dot.h +10 -10
  49. package/eigen/Eigen/src/Core/EigenBase.h +10 -9
  50. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
  51. package/eigen/Eigen/src/Core/Fuzzy.h +3 -3
  52. package/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
  53. package/eigen/Eigen/src/Core/GenericPacketMath.h +597 -147
  54. package/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
  55. package/eigen/Eigen/src/Core/IO.h +40 -7
  56. package/eigen/Eigen/src/Core/IndexedView.h +237 -0
  57. package/eigen/Eigen/src/Core/Inverse.h +9 -10
  58. package/eigen/Eigen/src/Core/Map.h +7 -7
  59. package/eigen/Eigen/src/Core/MapBase.h +5 -3
  60. package/eigen/Eigen/src/Core/MathFunctions.h +756 -120
  61. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
  62. package/eigen/Eigen/src/Core/Matrix.h +131 -25
  63. package/eigen/Eigen/src/Core/MatrixBase.h +19 -2
  64. package/eigen/Eigen/src/Core/NestByValue.h +25 -50
  65. package/eigen/Eigen/src/Core/NoAlias.h +4 -3
  66. package/eigen/Eigen/src/Core/NumTraits.h +107 -20
  67. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  68. package/eigen/Eigen/src/Core/PermutationMatrix.h +3 -3
  69. package/eigen/Eigen/src/Core/PlainObjectBase.h +145 -54
  70. package/eigen/Eigen/src/Core/Product.h +30 -25
  71. package/eigen/Eigen/src/Core/ProductEvaluators.h +183 -142
  72. package/eigen/Eigen/src/Core/Random.h +37 -1
  73. package/eigen/Eigen/src/Core/Redux.h +180 -170
  74. package/eigen/Eigen/src/Core/Ref.h +118 -21
  75. package/eigen/Eigen/src/Core/Replicate.h +8 -8
  76. package/eigen/Eigen/src/Core/Reshaped.h +454 -0
  77. package/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
  78. package/eigen/Eigen/src/Core/Reverse.h +18 -12
  79. package/eigen/Eigen/src/Core/Select.h +8 -6
  80. package/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
  81. package/eigen/Eigen/src/Core/Solve.h +14 -14
  82. package/eigen/Eigen/src/Core/SolveTriangular.h +13 -13
  83. package/eigen/Eigen/src/Core/SolverBase.h +41 -3
  84. package/eigen/Eigen/src/Core/StableNorm.h +100 -70
  85. package/eigen/Eigen/src/Core/StlIterators.h +463 -0
  86. package/eigen/Eigen/src/Core/Stride.h +9 -4
  87. package/eigen/Eigen/src/Core/Swap.h +5 -4
  88. package/eigen/Eigen/src/Core/Transpose.h +86 -27
  89. package/eigen/Eigen/src/Core/Transpositions.h +26 -8
  90. package/eigen/Eigen/src/Core/TriangularMatrix.h +88 -72
  91. package/eigen/Eigen/src/Core/VectorBlock.h +5 -5
  92. package/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
  93. package/eigen/Eigen/src/Core/Visitor.h +137 -29
  94. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
  95. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
  96. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
  97. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
  98. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  99. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +186 -213
  100. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1250 -252
  101. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  102. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
  103. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
  104. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  105. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  106. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  107. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
  108. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
  109. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  110. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
  111. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  112. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  113. package/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
  114. package/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
  115. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  116. package/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
  117. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  118. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  119. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  120. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  121. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  122. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  123. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
  124. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  125. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
  126. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
  127. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  128. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
  129. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
  130. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
  131. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
  132. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  133. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  134. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  135. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  136. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  137. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  138. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  139. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  140. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
  141. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
  142. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
  143. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
  144. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
  145. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
  146. package/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
  147. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +354 -15
  148. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1073 -585
  149. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +29 -7
  150. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +4 -4
  151. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +1 -1
  152. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
  153. package/eigen/Eigen/src/Core/products/Parallelizer.h +23 -9
  154. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +23 -6
  155. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
  156. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +2 -2
  157. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
  158. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +3 -3
  159. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +5 -3
  160. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
  161. package/eigen/Eigen/src/Core/util/BlasUtil.h +208 -124
  162. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  163. package/eigen/Eigen/src/Core/util/Constants.h +25 -9
  164. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +14 -2
  165. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +28 -4
  166. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  167. package/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
  168. package/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
  169. package/eigen/Eigen/src/Core/util/Macros.h +661 -250
  170. package/eigen/Eigen/src/Core/util/Memory.h +222 -52
  171. package/eigen/Eigen/src/Core/util/Meta.h +349 -105
  172. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  173. package/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
  174. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  175. package/eigen/Eigen/src/Core/util/XprHelper.h +48 -30
  176. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
  177. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +1 -1
  178. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
  179. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
  180. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
  181. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
  182. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
  183. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +10 -5
  184. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +75 -42
  185. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
  186. package/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
  187. package/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
  188. package/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
  189. package/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
  190. package/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
  191. package/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
  192. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
  193. package/eigen/Eigen/src/Geometry/Quaternion.h +52 -14
  194. package/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
  195. package/eigen/Eigen/src/Geometry/Scaling.h +22 -4
  196. package/eigen/Eigen/src/Geometry/Transform.h +86 -65
  197. package/eigen/Eigen/src/Geometry/Translation.h +6 -6
  198. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  199. package/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
  200. package/eigen/Eigen/src/Householder/Householder.h +8 -4
  201. package/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
  202. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
  203. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
  204. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
  205. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
  206. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
  207. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
  208. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
  209. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
  210. package/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
  211. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  212. package/eigen/Eigen/src/LU/Determinant.h +35 -19
  213. package/eigen/Eigen/src/LU/FullPivLU.h +29 -43
  214. package/eigen/Eigen/src/LU/InverseImpl.h +25 -8
  215. package/eigen/Eigen/src/LU/PartialPivLU.h +67 -57
  216. package/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
  217. package/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
  218. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
  219. package/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
  220. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
  221. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +10 -9
  222. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
  223. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
  224. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
  225. package/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
  226. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
  227. package/eigen/Eigen/src/SVD/BDCSVD.h +137 -48
  228. package/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
  229. package/eigen/Eigen/src/SVD/SVDBase.h +82 -21
  230. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
  231. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +16 -8
  232. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +11 -36
  233. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
  234. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
  235. package/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
  236. package/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
  237. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
  238. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
  239. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +2 -2
  240. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
  241. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +124 -10
  242. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
  243. package/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
  244. package/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
  245. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +3 -0
  246. package/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
  247. package/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
  248. package/eigen/Eigen/src/SparseLU/SparseLU.h +160 -10
  249. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
  250. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
  251. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
  252. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
  253. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
  254. package/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
  255. package/eigen/Eigen/src/StlSupport/StdDeque.h +2 -14
  256. package/eigen/Eigen/src/StlSupport/StdList.h +2 -2
  257. package/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
  258. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
  259. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
  260. package/eigen/Eigen/src/misc/lapacke.h +5 -4
  261. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +27 -1
  262. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
  263. package/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
  264. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
  265. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  266. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
  267. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
  268. package/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
  269. package/eigen/README.md +2 -0
  270. package/lib/LibEigen.d.ts +4 -0
  271. package/lib/LibEigen.js +14 -0
  272. package/lib/index.d.ts +1 -1
  273. package/lib/index.js +7 -3
  274. package/package.json +2 -10
  275. package/eigen/Eigen/CMakeLists.txt +0 -19
  276. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  277. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  278. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  279. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  280. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  281. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  282. package/lib/eigen.d.ts +0 -2
  283. package/lib/eigen.js +0 -15
package/eigen/Eigen/Core CHANGED
@@ -11,251 +11,55 @@
11
11
  #ifndef EIGEN_CORE_H
12
12
  #define EIGEN_CORE_H
13
13
 
14
- // first thing Eigen does: stop the compiler from committing suicide
14
+ // first thing Eigen does: stop the compiler from reporting useless warnings.
15
15
  #include "src/Core/util/DisableStupidWarnings.h"
16
16
 
17
- #if defined(__CUDACC__) && !defined(EIGEN_NO_CUDA)
18
- #define EIGEN_CUDACC __CUDACC__
19
- #endif
20
-
21
- #if defined(__CUDA_ARCH__) && !defined(EIGEN_NO_CUDA)
22
- #define EIGEN_CUDA_ARCH __CUDA_ARCH__
23
- #endif
24
-
25
- #if defined(__CUDACC_VER_MAJOR__) && (__CUDACC_VER_MAJOR__ >= 9)
26
- #define EIGEN_CUDACC_VER ((__CUDACC_VER_MAJOR__ * 10000) + (__CUDACC_VER_MINOR__ * 100))
27
- #elif defined(__CUDACC_VER__)
28
- #define EIGEN_CUDACC_VER __CUDACC_VER__
29
- #else
30
- #define EIGEN_CUDACC_VER 0
31
- #endif
32
-
33
- // Handle NVCC/CUDA/SYCL
34
- #if defined(__CUDACC__) || defined(__SYCL_DEVICE_ONLY__)
35
- // Do not try asserts on CUDA and SYCL!
36
- #ifndef EIGEN_NO_DEBUG
37
- #define EIGEN_NO_DEBUG
38
- #endif
39
-
40
- #ifdef EIGEN_INTERNAL_DEBUGGING
41
- #undef EIGEN_INTERNAL_DEBUGGING
42
- #endif
43
-
44
- #ifdef EIGEN_EXCEPTIONS
45
- #undef EIGEN_EXCEPTIONS
46
- #endif
47
-
48
- // All functions callable from CUDA code must be qualified with __device__
49
- #ifdef __CUDACC__
50
- // Do not try to vectorize on CUDA and SYCL!
51
- #ifndef EIGEN_DONT_VECTORIZE
52
- #define EIGEN_DONT_VECTORIZE
53
- #endif
54
-
55
- #define EIGEN_DEVICE_FUNC __host__ __device__
56
- // We need cuda_runtime.h to ensure that that EIGEN_USING_STD_MATH macro
57
- // works properly on the device side
58
- #include <cuda_runtime.h>
59
- #else
60
- #define EIGEN_DEVICE_FUNC
61
- #endif
62
-
63
- #else
64
- #define EIGEN_DEVICE_FUNC
17
+ // then include this file where all our macros are defined. It's really important to do it first because
18
+ // it's where we do all the compiler/OS/arch detections and define most defaults.
19
+ #include "src/Core/util/Macros.h"
65
20
 
66
- #endif
21
+ // This detects SSE/AVX/NEON/etc. and configure alignment settings
22
+ #include "src/Core/util/ConfigureVectorization.h"
67
23
 
68
- // When compiling CUDA device code with NVCC, pull in math functions from the
69
- // global namespace. In host mode, and when device doee with clang, use the
70
- // std versions.
71
- #if defined(__CUDA_ARCH__) && defined(__NVCC__)
72
- #define EIGEN_USING_STD_MATH(FUNC) using ::FUNC;
73
- #else
74
- #define EIGEN_USING_STD_MATH(FUNC) using std::FUNC;
24
+ // We need cuda_runtime.h/hip_runtime.h to ensure that
25
+ // the EIGEN_USING_STD macro works properly on the device side
26
+ #if defined(EIGEN_CUDACC)
27
+ #include <cuda_runtime.h>
28
+ #elif defined(EIGEN_HIPCC)
29
+ #include <hip/hip_runtime.h>
75
30
  #endif
76
31
 
77
- #if (defined(_CPPUNWIND) || defined(__EXCEPTIONS)) && !defined(__CUDA_ARCH__) && !defined(EIGEN_EXCEPTIONS) && !defined(EIGEN_USE_SYCL)
78
- #define EIGEN_EXCEPTIONS
79
- #endif
80
32
 
81
33
  #ifdef EIGEN_EXCEPTIONS
82
34
  #include <new>
83
35
  #endif
84
36
 
85
- // then include this file where all our macros are defined. It's really important to do it first because
86
- // it's where we do all the alignment settings (platform detection and honoring the user's will if he
87
- // defined e.g. EIGEN_DONT_ALIGN) so it needs to be done before we do anything with vectorization.
88
- #include "src/Core/util/Macros.h"
89
-
90
37
  // Disable the ipa-cp-clone optimization flag with MinGW 6.x or newer (enabled by default with -O3)
91
38
  // See http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556 for details.
92
- #if EIGEN_COMP_MINGW && EIGEN_GNUC_AT_LEAST(4,6)
39
+ #if EIGEN_COMP_MINGW && EIGEN_GNUC_AT_LEAST(4,6) && EIGEN_GNUC_AT_MOST(5,5)
93
40
  #pragma GCC optimize ("-fno-ipa-cp-clone")
94
41
  #endif
95
42
 
43
+ // Prevent ICC from specializing std::complex operators that silently fail
44
+ // on device. This allows us to use our own device-compatible specializations
45
+ // instead.
46
+ #if defined(EIGEN_COMP_ICC) && defined(EIGEN_GPU_COMPILE_PHASE) \
47
+ && !defined(_OVERRIDE_COMPLEX_SPECIALIZATION_)
48
+ #define _OVERRIDE_COMPLEX_SPECIALIZATION_ 1
49
+ #endif
96
50
  #include <complex>
97
51
 
98
52
  // this include file manages BLAS and MKL related macros
99
53
  // and inclusion of their respective header files
100
54
  #include "src/Core/util/MKL_support.h"
101
55
 
102
- // if alignment is disabled, then disable vectorization. Note: EIGEN_MAX_ALIGN_BYTES is the proper check, it takes into
103
- // account both the user's will (EIGEN_MAX_ALIGN_BYTES,EIGEN_DONT_ALIGN) and our own platform checks
104
- #if EIGEN_MAX_ALIGN_BYTES==0
105
- #ifndef EIGEN_DONT_VECTORIZE
106
- #define EIGEN_DONT_VECTORIZE
107
- #endif
108
- #endif
109
56
 
110
- #if EIGEN_COMP_MSVC
111
- #include <malloc.h> // for _aligned_malloc -- need it regardless of whether vectorization is enabled
112
- #if (EIGEN_COMP_MSVC >= 1500) // 2008 or later
113
- // Remember that usage of defined() in a #define is undefined by the standard.
114
- // a user reported that in 64-bit mode, MSVC doesn't care to define _M_IX86_FP.
115
- #if (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || EIGEN_ARCH_x86_64
116
- #define EIGEN_SSE2_ON_MSVC_2008_OR_LATER
117
- #endif
118
- #endif
119
- #else
120
- // Remember that usage of defined() in a #define is undefined by the standard
121
- #if (defined __SSE2__) && ( (!EIGEN_COMP_GNUC) || EIGEN_COMP_ICC || EIGEN_GNUC_AT_LEAST(4,2) )
122
- #define EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC
123
- #endif
124
- #endif
125
-
126
- #ifndef EIGEN_DONT_VECTORIZE
127
-
128
- #if defined (EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC) || defined(EIGEN_SSE2_ON_MSVC_2008_OR_LATER)
129
-
130
- // Defines symbols for compile-time detection of which instructions are
131
- // used.
132
- // EIGEN_VECTORIZE_YY is defined if and only if the instruction set YY is used
133
- #define EIGEN_VECTORIZE
134
- #define EIGEN_VECTORIZE_SSE
135
- #define EIGEN_VECTORIZE_SSE2
136
-
137
- // Detect sse3/ssse3/sse4:
138
- // gcc and icc defines __SSE3__, ...
139
- // there is no way to know about this on msvc. You can define EIGEN_VECTORIZE_SSE* if you
140
- // want to force the use of those instructions with msvc.
141
- #ifdef __SSE3__
142
- #define EIGEN_VECTORIZE_SSE3
143
- #endif
144
- #ifdef __SSSE3__
145
- #define EIGEN_VECTORIZE_SSSE3
146
- #endif
147
- #ifdef __SSE4_1__
148
- #define EIGEN_VECTORIZE_SSE4_1
149
- #endif
150
- #ifdef __SSE4_2__
151
- #define EIGEN_VECTORIZE_SSE4_2
152
- #endif
153
- #ifdef __AVX__
154
- #define EIGEN_VECTORIZE_AVX
155
- #define EIGEN_VECTORIZE_SSE3
156
- #define EIGEN_VECTORIZE_SSSE3
157
- #define EIGEN_VECTORIZE_SSE4_1
158
- #define EIGEN_VECTORIZE_SSE4_2
159
- #endif
160
- #ifdef __AVX2__
161
- #define EIGEN_VECTORIZE_AVX2
162
- #endif
163
- #ifdef __FMA__
164
- #define EIGEN_VECTORIZE_FMA
165
- #endif
166
- #if defined(__AVX512F__) && defined(EIGEN_ENABLE_AVX512)
167
- #define EIGEN_VECTORIZE_AVX512
168
- #define EIGEN_VECTORIZE_AVX2
169
- #define EIGEN_VECTORIZE_AVX
170
- #define EIGEN_VECTORIZE_FMA
171
- #ifdef __AVX512DQ__
172
- #define EIGEN_VECTORIZE_AVX512DQ
173
- #endif
174
- #ifdef __AVX512ER__
175
- #define EIGEN_VECTORIZE_AVX512ER
176
- #endif
177
- #endif
178
-
179
- // include files
180
-
181
- // This extern "C" works around a MINGW-w64 compilation issue
182
- // https://sourceforge.net/tracker/index.php?func=detail&aid=3018394&group_id=202880&atid=983354
183
- // In essence, intrin.h is included by windows.h and also declares intrinsics (just as emmintrin.h etc. below do).
184
- // However, intrin.h uses an extern "C" declaration, and g++ thus complains of duplicate declarations
185
- // with conflicting linkage. The linkage for intrinsics doesn't matter, but at that stage the compiler doesn't know;
186
- // so, to avoid compile errors when windows.h is included after Eigen/Core, ensure intrinsics are extern "C" here too.
187
- // notice that since these are C headers, the extern "C" is theoretically needed anyways.
188
- extern "C" {
189
- // In theory we should only include immintrin.h and not the other *mmintrin.h header files directly.
190
- // Doing so triggers some issues with ICC. However old gcc versions seems to not have this file, thus:
191
- #if EIGEN_COMP_ICC >= 1110
192
- #include <immintrin.h>
193
- #else
194
- #include <mmintrin.h>
195
- #include <emmintrin.h>
196
- #include <xmmintrin.h>
197
- #ifdef EIGEN_VECTORIZE_SSE3
198
- #include <pmmintrin.h>
199
- #endif
200
- #ifdef EIGEN_VECTORIZE_SSSE3
201
- #include <tmmintrin.h>
202
- #endif
203
- #ifdef EIGEN_VECTORIZE_SSE4_1
204
- #include <smmintrin.h>
205
- #endif
206
- #ifdef EIGEN_VECTORIZE_SSE4_2
207
- #include <nmmintrin.h>
208
- #endif
209
- #if defined(EIGEN_VECTORIZE_AVX) || defined(EIGEN_VECTORIZE_AVX512)
210
- #include <immintrin.h>
211
- #endif
212
- #endif
213
- } // end extern "C"
214
- #elif defined __VSX__
215
- #define EIGEN_VECTORIZE
216
- #define EIGEN_VECTORIZE_VSX
217
- #include <altivec.h>
218
- // We need to #undef all these ugly tokens defined in <altivec.h>
219
- // => use __vector instead of vector
220
- #undef bool
221
- #undef vector
222
- #undef pixel
223
- #elif defined __ALTIVEC__
224
- #define EIGEN_VECTORIZE
225
- #define EIGEN_VECTORIZE_ALTIVEC
226
- #include <altivec.h>
227
- // We need to #undef all these ugly tokens defined in <altivec.h>
228
- // => use __vector instead of vector
229
- #undef bool
230
- #undef vector
231
- #undef pixel
232
- #elif (defined __ARM_NEON) || (defined __ARM_NEON__)
233
- #define EIGEN_VECTORIZE
234
- #define EIGEN_VECTORIZE_NEON
235
- #include <arm_neon.h>
236
- #elif (defined __s390x__ && defined __VEC__)
237
- #define EIGEN_VECTORIZE
238
- #define EIGEN_VECTORIZE_ZVECTOR
239
- #include <vecintrin.h>
240
- #endif
241
- #endif
242
-
243
- #if defined(__F16C__) && !defined(EIGEN_COMP_CLANG)
244
- // We can use the optimized fp16 to float and float to fp16 conversion routines
245
- #define EIGEN_HAS_FP16_C
246
- #endif
247
-
248
- #if defined __CUDACC__
249
- #define EIGEN_VECTORIZE_CUDA
250
- #include <vector_types.h>
251
- #if EIGEN_CUDACC_VER >= 70500
252
- #define EIGEN_HAS_CUDA_FP16
253
- #endif
57
+ #if defined(EIGEN_HAS_CUDA_FP16) || defined(EIGEN_HAS_HIP_FP16)
58
+ #define EIGEN_HAS_GPU_FP16
254
59
  #endif
255
60
 
256
- #if defined EIGEN_HAS_CUDA_FP16
257
- #include <host_defines.h>
258
- #include <cuda_fp16.h>
61
+ #if defined(EIGEN_HAS_CUDA_BF16) || defined(EIGEN_HAS_HIP_BF16)
62
+ #define EIGEN_HAS_GPU_BF16
259
63
  #endif
260
64
 
261
65
  #if (defined _OPENMP) && (!defined EIGEN_DONT_PARALLELIZE)
@@ -290,6 +94,10 @@
290
94
  // for min/max:
291
95
  #include <algorithm>
292
96
 
97
+ #if EIGEN_HAS_CXX11
98
+ #include <array>
99
+ #endif
100
+
293
101
  // for std::is_nothrow_move_assignable
294
102
  #ifdef EIGEN_INCLUDE_TYPE_TRAITS
295
103
  #include <type_traits>
@@ -305,38 +113,25 @@
305
113
  #include <intrin.h>
306
114
  #endif
307
115
 
308
- /** \brief Namespace containing all symbols from the %Eigen library. */
309
- namespace Eigen {
310
-
311
- inline static const char *SimdInstructionSetsInUse(void) {
312
- #if defined(EIGEN_VECTORIZE_AVX512)
313
- return "AVX512, FMA, AVX2, AVX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
314
- #elif defined(EIGEN_VECTORIZE_AVX)
315
- return "AVX SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
316
- #elif defined(EIGEN_VECTORIZE_SSE4_2)
317
- return "SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
318
- #elif defined(EIGEN_VECTORIZE_SSE4_1)
319
- return "SSE, SSE2, SSE3, SSSE3, SSE4.1";
320
- #elif defined(EIGEN_VECTORIZE_SSSE3)
321
- return "SSE, SSE2, SSE3, SSSE3";
322
- #elif defined(EIGEN_VECTORIZE_SSE3)
323
- return "SSE, SSE2, SSE3";
324
- #elif defined(EIGEN_VECTORIZE_SSE2)
325
- return "SSE, SSE2";
326
- #elif defined(EIGEN_VECTORIZE_ALTIVEC)
327
- return "AltiVec";
328
- #elif defined(EIGEN_VECTORIZE_VSX)
329
- return "VSX";
330
- #elif defined(EIGEN_VECTORIZE_NEON)
331
- return "ARM NEON";
332
- #elif defined(EIGEN_VECTORIZE_ZVECTOR)
333
- return "S390X ZVECTOR";
334
- #else
335
- return "None";
116
+ #if defined(EIGEN_USE_SYCL)
117
+ #undef min
118
+ #undef max
119
+ #undef isnan
120
+ #undef isinf
121
+ #undef isfinite
122
+ #include <CL/sycl.hpp>
123
+ #include <map>
124
+ #include <memory>
125
+ #include <utility>
126
+ #include <thread>
127
+ #ifndef EIGEN_SYCL_LOCAL_THREAD_DIM0
128
+ #define EIGEN_SYCL_LOCAL_THREAD_DIM0 16
129
+ #endif
130
+ #ifndef EIGEN_SYCL_LOCAL_THREAD_DIM1
131
+ #define EIGEN_SYCL_LOCAL_THREAD_DIM1 16
132
+ #endif
336
133
  #endif
337
- }
338
134
 
339
- } // end namespace Eigen
340
135
 
341
136
  #if defined EIGEN2_SUPPORT_STAGE40_FULL_EIGEN3_STRICTNESS || defined EIGEN2_SUPPORT_STAGE30_FULL_EIGEN3_API || defined EIGEN2_SUPPORT_STAGE20_RESOLVE_API_CONFLICTS || defined EIGEN2_SUPPORT_STAGE10_FULL_EIGEN2_API || defined EIGEN2_SUPPORT
342
137
  // This will generate an error message:
@@ -345,7 +140,7 @@ inline static const char *SimdInstructionSetsInUse(void) {
345
140
 
346
141
  namespace Eigen {
347
142
 
348
- // we use size_t frequently and we'll never remember to prepend it with std:: everytime just to
143
+ // we use size_t frequently and we'll never remember to prepend it with std:: every time just to
349
144
  // ensure QNX/QCC support
350
145
  using std::size_t;
351
146
  // gcc 4.6.0 wants std:: for ptrdiff_t
@@ -369,60 +164,90 @@ using std::ptrdiff_t;
369
164
  #include "src/Core/util/StaticAssert.h"
370
165
  #include "src/Core/util/XprHelper.h"
371
166
  #include "src/Core/util/Memory.h"
167
+ #include "src/Core/util/IntegralConstant.h"
168
+ #include "src/Core/util/SymbolicIndex.h"
372
169
 
373
170
  #include "src/Core/NumTraits.h"
374
171
  #include "src/Core/MathFunctions.h"
375
172
  #include "src/Core/GenericPacketMath.h"
376
173
  #include "src/Core/MathFunctionsImpl.h"
377
174
  #include "src/Core/arch/Default/ConjHelper.h"
175
+ // Generic half float support
176
+ #include "src/Core/arch/Default/Half.h"
177
+ #include "src/Core/arch/Default/BFloat16.h"
178
+ #include "src/Core/arch/Default/TypeCasting.h"
179
+ #include "src/Core/arch/Default/GenericPacketMathFunctionsFwd.h"
378
180
 
379
181
  #if defined EIGEN_VECTORIZE_AVX512
380
182
  #include "src/Core/arch/SSE/PacketMath.h"
381
- #include "src/Core/arch/SSE/MathFunctions.h"
183
+ #include "src/Core/arch/SSE/TypeCasting.h"
184
+ #include "src/Core/arch/SSE/Complex.h"
382
185
  #include "src/Core/arch/AVX/PacketMath.h"
383
- #include "src/Core/arch/AVX/MathFunctions.h"
186
+ #include "src/Core/arch/AVX/TypeCasting.h"
187
+ #include "src/Core/arch/AVX/Complex.h"
384
188
  #include "src/Core/arch/AVX512/PacketMath.h"
189
+ #include "src/Core/arch/AVX512/TypeCasting.h"
190
+ #include "src/Core/arch/AVX512/Complex.h"
191
+ #include "src/Core/arch/SSE/MathFunctions.h"
192
+ #include "src/Core/arch/AVX/MathFunctions.h"
385
193
  #include "src/Core/arch/AVX512/MathFunctions.h"
386
194
  #elif defined EIGEN_VECTORIZE_AVX
387
195
  // Use AVX for floats and doubles, SSE for integers
388
196
  #include "src/Core/arch/SSE/PacketMath.h"
197
+ #include "src/Core/arch/SSE/TypeCasting.h"
389
198
  #include "src/Core/arch/SSE/Complex.h"
390
- #include "src/Core/arch/SSE/MathFunctions.h"
391
199
  #include "src/Core/arch/AVX/PacketMath.h"
392
- #include "src/Core/arch/AVX/MathFunctions.h"
393
- #include "src/Core/arch/AVX/Complex.h"
394
200
  #include "src/Core/arch/AVX/TypeCasting.h"
395
- #include "src/Core/arch/SSE/TypeCasting.h"
201
+ #include "src/Core/arch/AVX/Complex.h"
202
+ #include "src/Core/arch/SSE/MathFunctions.h"
203
+ #include "src/Core/arch/AVX/MathFunctions.h"
396
204
  #elif defined EIGEN_VECTORIZE_SSE
397
205
  #include "src/Core/arch/SSE/PacketMath.h"
206
+ #include "src/Core/arch/SSE/TypeCasting.h"
398
207
  #include "src/Core/arch/SSE/MathFunctions.h"
399
208
  #include "src/Core/arch/SSE/Complex.h"
400
- #include "src/Core/arch/SSE/TypeCasting.h"
401
209
  #elif defined(EIGEN_VECTORIZE_ALTIVEC) || defined(EIGEN_VECTORIZE_VSX)
402
210
  #include "src/Core/arch/AltiVec/PacketMath.h"
403
211
  #include "src/Core/arch/AltiVec/MathFunctions.h"
404
212
  #include "src/Core/arch/AltiVec/Complex.h"
405
213
  #elif defined EIGEN_VECTORIZE_NEON
406
214
  #include "src/Core/arch/NEON/PacketMath.h"
215
+ #include "src/Core/arch/NEON/TypeCasting.h"
407
216
  #include "src/Core/arch/NEON/MathFunctions.h"
408
217
  #include "src/Core/arch/NEON/Complex.h"
218
+ #elif defined EIGEN_VECTORIZE_SVE
219
+ #include "src/Core/arch/SVE/PacketMath.h"
220
+ #include "src/Core/arch/SVE/TypeCasting.h"
221
+ #include "src/Core/arch/SVE/MathFunctions.h"
409
222
  #elif defined EIGEN_VECTORIZE_ZVECTOR
410
223
  #include "src/Core/arch/ZVector/PacketMath.h"
411
224
  #include "src/Core/arch/ZVector/MathFunctions.h"
412
225
  #include "src/Core/arch/ZVector/Complex.h"
226
+ #elif defined EIGEN_VECTORIZE_MSA
227
+ #include "src/Core/arch/MSA/PacketMath.h"
228
+ #include "src/Core/arch/MSA/MathFunctions.h"
229
+ #include "src/Core/arch/MSA/Complex.h"
413
230
  #endif
414
231
 
415
- // Half float support
416
- #include "src/Core/arch/CUDA/Half.h"
417
- #include "src/Core/arch/CUDA/PacketMathHalf.h"
418
- #include "src/Core/arch/CUDA/TypeCasting.h"
232
+ #if defined EIGEN_VECTORIZE_GPU
233
+ #include "src/Core/arch/GPU/PacketMath.h"
234
+ #include "src/Core/arch/GPU/MathFunctions.h"
235
+ #include "src/Core/arch/GPU/TypeCasting.h"
236
+ #endif
419
237
 
420
- #if defined EIGEN_VECTORIZE_CUDA
421
- #include "src/Core/arch/CUDA/PacketMath.h"
422
- #include "src/Core/arch/CUDA/MathFunctions.h"
238
+ #if defined(EIGEN_USE_SYCL)
239
+ #include "src/Core/arch/SYCL/SyclMemoryModel.h"
240
+ #include "src/Core/arch/SYCL/InteropHeaders.h"
241
+ #if !defined(EIGEN_DONT_VECTORIZE_SYCL)
242
+ #include "src/Core/arch/SYCL/PacketMath.h"
243
+ #include "src/Core/arch/SYCL/MathFunctions.h"
244
+ #include "src/Core/arch/SYCL/TypeCasting.h"
245
+ #endif
423
246
  #endif
424
247
 
425
248
  #include "src/Core/arch/Default/Settings.h"
249
+ // This file provides generic implementations valid for scalar as well
250
+ #include "src/Core/arch/Default/GenericPacketMathFunctions.h"
426
251
 
427
252
  #include "src/Core/functors/TernaryFunctors.h"
428
253
  #include "src/Core/functors/BinaryFunctors.h"
@@ -433,9 +258,16 @@ using std::ptrdiff_t;
433
258
 
434
259
  // Specialized functors to enable the processing of complex numbers
435
260
  // on CUDA devices
261
+ #ifdef EIGEN_CUDACC
436
262
  #include "src/Core/arch/CUDA/Complex.h"
263
+ #endif
437
264
 
438
- #include "src/Core/IO.h"
265
+ #include "src/Core/util/IndexedViewHelper.h"
266
+ #include "src/Core/util/ReshapedHelper.h"
267
+ #include "src/Core/ArithmeticSequence.h"
268
+ #ifndef EIGEN_NO_IO
269
+ #include "src/Core/IO.h"
270
+ #endif
439
271
  #include "src/Core/DenseCoeffsBase.h"
440
272
  #include "src/Core/DenseBase.h"
441
273
  #include "src/Core/MatrixBase.h"
@@ -476,6 +308,8 @@ using std::ptrdiff_t;
476
308
  #include "src/Core/Ref.h"
477
309
  #include "src/Core/Block.h"
478
310
  #include "src/Core/VectorBlock.h"
311
+ #include "src/Core/IndexedView.h"
312
+ #include "src/Core/Reshaped.h"
479
313
  #include "src/Core/Transpose.h"
480
314
  #include "src/Core/DiagonalMatrix.h"
481
315
  #include "src/Core/Diagonal.h"
@@ -512,13 +346,21 @@ using std::ptrdiff_t;
512
346
  #include "src/Core/CoreIterators.h"
513
347
  #include "src/Core/ConditionEstimator.h"
514
348
 
349
+ #if defined(EIGEN_VECTORIZE_ALTIVEC) || defined(EIGEN_VECTORIZE_VSX)
350
+ #include "src/Core/arch/AltiVec/MatrixProduct.h"
351
+ #elif defined EIGEN_VECTORIZE_NEON
352
+ #include "src/Core/arch/NEON/GeneralBlockPanelKernel.h"
353
+ #endif
354
+
515
355
  #include "src/Core/BooleanRedux.h"
516
356
  #include "src/Core/Select.h"
517
357
  #include "src/Core/VectorwiseOp.h"
358
+ #include "src/Core/PartialReduxEvaluator.h"
518
359
  #include "src/Core/Random.h"
519
360
  #include "src/Core/Replicate.h"
520
361
  #include "src/Core/Reverse.h"
521
362
  #include "src/Core/ArrayWrapper.h"
363
+ #include "src/Core/StlIterators.h"
522
364
 
523
365
  #ifdef EIGEN_USE_BLAS
524
366
  #include "src/Core/products/GeneralMatrixMatrix_BLAS.h"
@@ -58,4 +58,3 @@
58
58
  #include "src/Core/util/ReenableStupidWarnings.h"
59
59
 
60
60
  #endif // EIGEN_EIGENVALUES_MODULE_H
61
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -49,14 +49,11 @@
49
49
  #include "src/Geometry/AlignedBox.h"
50
50
  #include "src/Geometry/Umeyama.h"
51
51
 
52
- // Use the SSE optimized version whenever possible. At the moment the
53
- // SSE version doesn't compile when AVX is enabled
54
- #if defined EIGEN_VECTORIZE_SSE && !defined EIGEN_VECTORIZE_AVX
55
- #include "src/Geometry/arch/Geometry_SSE.h"
52
+ // Use the SSE optimized version whenever possible.
53
+ #if (defined EIGEN_VECTORIZE_SSE) || (defined EIGEN_VECTORIZE_NEON)
54
+ #include "src/Geometry/arch/Geometry_SIMD.h"
56
55
  #endif
57
56
 
58
57
  #include "src/Core/util/ReenableStupidWarnings.h"
59
58
 
60
59
  #endif // EIGEN_GEOMETRY_MODULE_H
61
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
62
-
@@ -27,4 +27,3 @@
27
27
  #include "src/Core/util/ReenableStupidWarnings.h"
28
28
 
29
29
  #endif // EIGEN_HOUSEHOLDER_MODULE_H
30
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -29,5 +29,4 @@
29
29
  #include "src/Core/util/ReenableStupidWarnings.h"
30
30
 
31
31
  #endif // EIGEN_JACOBI_MODULE_H
32
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
33
32
 
@@ -0,0 +1,41 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // This Source Code Form is subject to the terms of the Mozilla
5
+ // Public License v. 2.0. If a copy of the MPL was not distributed
6
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
8
+ #ifndef EIGEN_KLUSUPPORT_MODULE_H
9
+ #define EIGEN_KLUSUPPORT_MODULE_H
10
+
11
+ #include <Eigen/SparseCore>
12
+
13
+ #include <Eigen/src/Core/util/DisableStupidWarnings.h>
14
+
15
+ extern "C" {
16
+ #include <btf.h>
17
+ #include <klu.h>
18
+ }
19
+
20
+ /** \ingroup Support_modules
21
+ * \defgroup KLUSupport_Module KLUSupport module
22
+ *
23
+ * This module provides an interface to the KLU library which is part of the <a href="http://www.suitesparse.com">suitesparse</a> package.
24
+ * It provides the following factorization class:
25
+ * - class KLU: a sparse LU factorization, well-suited for circuit simulation.
26
+ *
27
+ * \code
28
+ * #include <Eigen/KLUSupport>
29
+ * \endcode
30
+ *
31
+ * In order to use this module, the klu and btf headers must be accessible from the include paths, and your binary must be linked to the klu library and its dependencies.
32
+ * The dependencies depend on how umfpack has been compiled.
33
+ * For a cmake based project, you can use our FindKLU.cmake module to help you in this task.
34
+ *
35
+ */
36
+
37
+ #include "src/KLUSupport/KLUSupport.h"
38
+
39
+ #include <Eigen/src/Core/util/ReenableStupidWarnings.h>
40
+
41
+ #endif // EIGEN_KLUSUPPORT_MODULE_H
package/eigen/Eigen/LU CHANGED
@@ -38,13 +38,10 @@
38
38
  #include "src/LU/Determinant.h"
39
39
  #include "src/LU/InverseImpl.h"
40
40
 
41
- // Use the SSE optimized version whenever possible. At the moment the
42
- // SSE version doesn't compile when AVX is enabled
43
- #if defined EIGEN_VECTORIZE_SSE && !defined EIGEN_VECTORIZE_AVX
44
- #include "src/LU/arch/Inverse_SSE.h"
41
+ #if defined EIGEN_VECTORIZE_SSE || defined EIGEN_VECTORIZE_NEON
42
+ #include "src/LU/arch/InverseSize4.h"
45
43
  #endif
46
44
 
47
45
  #include "src/Core/util/ReenableStupidWarnings.h"
48
46
 
49
47
  #endif // EIGEN_LU_MODULE_H
50
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -63,10 +63,7 @@
63
63
  * \endcode
64
64
  */
65
65
 
66
- #ifndef EIGEN_MPL2_ONLY
67
66
  #include "src/OrderingMethods/Amd.h"
68
- #endif
69
-
70
67
  #include "src/OrderingMethods/Ordering.h"
71
68
  #include "src/Core/util/ReenableStupidWarnings.h"
72
69
 
@@ -36,6 +36,7 @@ extern "C" {
36
36
  * \endcode
37
37
  *
38
38
  * In order to use this module, the PaSTiX headers must be accessible from the include paths, and your binary must be linked to the PaSTiX library and its dependencies.
39
+ * This wrapper resuires PaStiX version 5.x compiled without MPI support.
39
40
  * The dependencies depend on how PaSTiX has been compiled.
40
41
  * For a cmake based project, you can use our FindPaSTiX.cmake module to help you in this task.
41
42
  *
File without changes
package/eigen/Eigen/QR CHANGED
@@ -48,4 +48,3 @@
48
48
  #include "src/Core/util/ReenableStupidWarnings.h"
49
49
 
50
50
  #endif // EIGEN_QR_MODULE_H
51
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -37,4 +37,3 @@ void *qRealloc(void *ptr, std::size_t size)
37
37
  #endif
38
38
 
39
39
  #endif // EIGEN_QTMALLOC_MODULE_H
40
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
package/eigen/Eigen/SVD CHANGED
@@ -48,4 +48,3 @@
48
48
  #include "src/Core/util/ReenableStupidWarnings.h"
49
49
 
50
50
  #endif // EIGEN_SVD_MODULE_H
51
- /* vim: set filetype=cpp et sw=2 ts=2 ai: */
@@ -25,9 +25,7 @@
25
25
 
26
26
  #include "SparseCore"
27
27
  #include "OrderingMethods"
28
- #ifndef EIGEN_MPL2_ONLY
29
28
  #include "SparseCholesky"
30
- #endif
31
29
  #include "SparseLU"
32
30
  #include "SparseQR"
33
31
  #include "IterativeLinearSolvers"
@@ -30,16 +30,8 @@
30
30
  * \endcode
31
31
  */
32
32
 
33
- #ifdef EIGEN_MPL2_ONLY
34
- #error The SparseCholesky module has nothing to offer in MPL2 only mode
35
- #endif
36
-
37
33
  #include "src/SparseCholesky/SimplicialCholesky.h"
38
-
39
- #ifndef EIGEN_MPL2_ONLY
40
34
  #include "src/SparseCholesky/SimplicialCholesky_impl.h"
41
- #endif
42
-
43
35
  #include "src/Core/util/ReenableStupidWarnings.h"
44
36
 
45
37
  #endif // EIGEN_SPARSECHOLESKY_MODULE_H