@smake/eigen 1.0.2 → 1.1.1

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 (435) hide show
  1. package/README.md +1 -1
  2. package/eigen/Eigen/AccelerateSupport +52 -0
  3. package/eigen/Eigen/Cholesky +18 -21
  4. package/eigen/Eigen/CholmodSupport +28 -28
  5. package/eigen/Eigen/Core +235 -326
  6. package/eigen/Eigen/Eigenvalues +16 -14
  7. package/eigen/Eigen/Geometry +21 -24
  8. package/eigen/Eigen/Householder +9 -8
  9. package/eigen/Eigen/IterativeLinearSolvers +8 -4
  10. package/eigen/Eigen/Jacobi +14 -14
  11. package/eigen/Eigen/KLUSupport +43 -0
  12. package/eigen/Eigen/LU +16 -20
  13. package/eigen/Eigen/MetisSupport +12 -12
  14. package/eigen/Eigen/OrderingMethods +54 -54
  15. package/eigen/Eigen/PaStiXSupport +23 -20
  16. package/eigen/Eigen/PardisoSupport +17 -14
  17. package/eigen/Eigen/QR +18 -21
  18. package/eigen/Eigen/QtAlignedMalloc +5 -13
  19. package/eigen/Eigen/SPQRSupport +21 -14
  20. package/eigen/Eigen/SVD +23 -18
  21. package/eigen/Eigen/Sparse +1 -4
  22. package/eigen/Eigen/SparseCholesky +18 -23
  23. package/eigen/Eigen/SparseCore +18 -17
  24. package/eigen/Eigen/SparseLU +12 -8
  25. package/eigen/Eigen/SparseQR +16 -14
  26. package/eigen/Eigen/StdDeque +5 -2
  27. package/eigen/Eigen/StdList +5 -2
  28. package/eigen/Eigen/StdVector +5 -2
  29. package/eigen/Eigen/SuperLUSupport +30 -24
  30. package/eigen/Eigen/ThreadPool +80 -0
  31. package/eigen/Eigen/UmfPackSupport +19 -17
  32. package/eigen/Eigen/Version +14 -0
  33. package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
  34. package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
  35. package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
  36. package/eigen/Eigen/src/Cholesky/LDLT.h +377 -401
  37. package/eigen/Eigen/src/Cholesky/LLT.h +332 -360
  38. package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
  39. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +620 -521
  40. package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
  41. package/eigen/Eigen/src/Core/ArithmeticSequence.h +239 -0
  42. package/eigen/Eigen/src/Core/Array.h +341 -294
  43. package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
  44. package/eigen/Eigen/src/Core/ArrayWrapper.h +127 -171
  45. package/eigen/Eigen/src/Core/Assign.h +30 -40
  46. package/eigen/Eigen/src/Core/AssignEvaluator.h +711 -589
  47. package/eigen/Eigen/src/Core/Assign_MKL.h +130 -125
  48. package/eigen/Eigen/src/Core/BandMatrix.h +268 -283
  49. package/eigen/Eigen/src/Core/Block.h +375 -398
  50. package/eigen/Eigen/src/Core/CommaInitializer.h +86 -97
  51. package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
  52. package/eigen/Eigen/src/Core/CoreEvaluators.h +1356 -1026
  53. package/eigen/Eigen/src/Core/CoreIterators.h +73 -59
  54. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +114 -132
  55. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +726 -617
  56. package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
  57. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +56 -68
  58. package/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -95
  59. package/eigen/Eigen/src/Core/DenseBase.h +632 -571
  60. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -624
  61. package/eigen/Eigen/src/Core/DenseStorage.h +512 -509
  62. package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
  63. package/eigen/Eigen/src/Core/Diagonal.h +169 -210
  64. package/eigen/Eigen/src/Core/DiagonalMatrix.h +351 -274
  65. package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
  66. package/eigen/Eigen/src/Core/Dot.h +172 -222
  67. package/eigen/Eigen/src/Core/EigenBase.h +75 -85
  68. package/eigen/Eigen/src/Core/Fill.h +138 -0
  69. package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
  70. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -109
  71. package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
  72. package/eigen/Eigen/src/Core/GeneralProduct.h +327 -263
  73. package/eigen/Eigen/src/Core/GenericPacketMath.h +1472 -360
  74. package/eigen/Eigen/src/Core/GlobalFunctions.h +194 -151
  75. package/eigen/Eigen/src/Core/IO.h +147 -139
  76. package/eigen/Eigen/src/Core/IndexedView.h +321 -0
  77. package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
  78. package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
  79. package/eigen/Eigen/src/Core/Inverse.h +56 -66
  80. package/eigen/Eigen/src/Core/Map.h +124 -142
  81. package/eigen/Eigen/src/Core/MapBase.h +256 -281
  82. package/eigen/Eigen/src/Core/MathFunctions.h +1620 -938
  83. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +233 -71
  84. package/eigen/Eigen/src/Core/Matrix.h +491 -416
  85. package/eigen/Eigen/src/Core/MatrixBase.h +468 -453
  86. package/eigen/Eigen/src/Core/NestByValue.h +66 -85
  87. package/eigen/Eigen/src/Core/NoAlias.h +79 -85
  88. package/eigen/Eigen/src/Core/NumTraits.h +235 -148
  89. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +253 -0
  90. package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
  91. package/eigen/Eigen/src/Core/PlainObjectBase.h +871 -894
  92. package/eigen/Eigen/src/Core/Product.h +260 -139
  93. package/eigen/Eigen/src/Core/ProductEvaluators.h +863 -714
  94. package/eigen/Eigen/src/Core/Random.h +161 -136
  95. package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
  96. package/eigen/Eigen/src/Core/RealView.h +250 -0
  97. package/eigen/Eigen/src/Core/Redux.h +366 -336
  98. package/eigen/Eigen/src/Core/Ref.h +308 -209
  99. package/eigen/Eigen/src/Core/Replicate.h +94 -106
  100. package/eigen/Eigen/src/Core/Reshaped.h +398 -0
  101. package/eigen/Eigen/src/Core/ReturnByValue.h +49 -55
  102. package/eigen/Eigen/src/Core/Reverse.h +136 -145
  103. package/eigen/Eigen/src/Core/Select.h +70 -140
  104. package/eigen/Eigen/src/Core/SelfAdjointView.h +262 -285
  105. package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
  106. package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
  107. package/eigen/Eigen/src/Core/Solve.h +97 -111
  108. package/eigen/Eigen/src/Core/SolveTriangular.h +131 -129
  109. package/eigen/Eigen/src/Core/SolverBase.h +138 -101
  110. package/eigen/Eigen/src/Core/StableNorm.h +156 -160
  111. package/eigen/Eigen/src/Core/StlIterators.h +619 -0
  112. package/eigen/Eigen/src/Core/Stride.h +91 -88
  113. package/eigen/Eigen/src/Core/Swap.h +70 -38
  114. package/eigen/Eigen/src/Core/Transpose.h +295 -273
  115. package/eigen/Eigen/src/Core/Transpositions.h +272 -317
  116. package/eigen/Eigen/src/Core/TriangularMatrix.h +670 -755
  117. package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
  118. package/eigen/Eigen/src/Core/VectorwiseOp.h +668 -630
  119. package/eigen/Eigen/src/Core/Visitor.h +480 -216
  120. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +407 -293
  121. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +79 -388
  122. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2935 -491
  123. package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
  124. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +279 -22
  125. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +472 -0
  126. package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
  127. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +85 -333
  128. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
  129. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2490 -649
  130. package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
  131. package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
  132. package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
  133. package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
  134. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +277 -0
  135. package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
  136. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +521 -298
  137. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +39 -280
  138. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +3686 -0
  139. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +205 -0
  140. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +901 -0
  141. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
  142. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
  143. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +3391 -723
  144. package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
  145. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +866 -0
  146. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +113 -14
  147. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +2634 -0
  148. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +227 -0
  149. package/eigen/Eigen/src/Core/arch/Default/Half.h +1091 -0
  150. package/eigen/Eigen/src/Core/arch/Default/Settings.h +11 -13
  151. package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
  152. package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +104 -0
  153. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1712 -0
  154. package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
  155. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +77 -0
  156. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  157. package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
  158. package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
  159. package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
  160. package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
  161. package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
  162. package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
  163. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +620 -0
  164. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +379 -0
  165. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1237 -0
  166. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +531 -289
  167. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +243 -0
  168. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -73
  169. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +5915 -579
  170. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1642 -0
  171. package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
  172. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +366 -334
  173. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +40 -514
  174. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2164 -675
  175. package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
  176. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +188 -35
  177. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +48 -0
  178. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +674 -0
  179. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +52 -0
  180. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +227 -0
  181. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +303 -0
  182. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +576 -0
  183. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +83 -0
  184. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +434 -261
  185. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +160 -53
  186. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1073 -605
  187. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +123 -117
  188. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +594 -322
  189. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +204 -118
  190. package/eigen/Eigen/src/Core/functors/StlFunctors.h +110 -97
  191. package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
  192. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1158 -530
  193. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2329 -1333
  194. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +328 -364
  195. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +191 -178
  196. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +85 -82
  197. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
  198. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +396 -542
  199. package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
  200. package/eigen/Eigen/src/Core/products/Parallelizer.h +208 -92
  201. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +331 -375
  202. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
  203. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +139 -146
  204. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
  205. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
  206. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -46
  207. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
  208. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
  209. package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
  210. package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
  211. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -275
  212. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
  213. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +70 -93
  214. package/eigen/Eigen/src/Core/util/Assert.h +158 -0
  215. package/eigen/Eigen/src/Core/util/BlasUtil.h +413 -290
  216. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +543 -0
  217. package/eigen/Eigen/src/Core/util/Constants.h +314 -263
  218. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -78
  219. package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
  220. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +450 -224
  221. package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
  222. package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
  223. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +487 -0
  224. package/eigen/Eigen/src/Core/util/IntegralConstant.h +279 -0
  225. package/eigen/Eigen/src/Core/util/MKL_support.h +39 -30
  226. package/eigen/Eigen/src/Core/util/Macros.h +939 -646
  227. package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
  228. package/eigen/Eigen/src/Core/util/Memory.h +1042 -650
  229. package/eigen/Eigen/src/Core/util/Meta.h +618 -426
  230. package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
  231. package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
  232. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  233. package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
  234. package/eigen/Eigen/src/Core/util/StaticAssert.h +51 -164
  235. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +445 -0
  236. package/eigen/Eigen/src/Core/util/XprHelper.h +793 -538
  237. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
  238. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
  239. package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
  240. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
  241. package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
  242. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
  243. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
  244. package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
  245. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +91 -107
  246. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +539 -606
  247. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +348 -382
  248. package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
  249. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +579 -600
  250. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
  251. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +434 -461
  252. package/eigen/Eigen/src/Geometry/AlignedBox.h +307 -214
  253. package/eigen/Eigen/src/Geometry/AngleAxis.h +135 -137
  254. package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
  255. package/eigen/Eigen/src/Geometry/Homogeneous.h +289 -333
  256. package/eigen/Eigen/src/Geometry/Hyperplane.h +152 -161
  257. package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
  258. package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -145
  259. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +141 -104
  260. package/eigen/Eigen/src/Geometry/Quaternion.h +595 -497
  261. package/eigen/Eigen/src/Geometry/Rotation2D.h +110 -108
  262. package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
  263. package/eigen/Eigen/src/Geometry/Scaling.h +115 -90
  264. package/eigen/Eigen/src/Geometry/Transform.h +896 -953
  265. package/eigen/Eigen/src/Geometry/Translation.h +100 -98
  266. package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
  267. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +154 -0
  268. package/eigen/Eigen/src/Householder/BlockHouseholder.h +54 -42
  269. package/eigen/Eigen/src/Householder/Householder.h +104 -122
  270. package/eigen/Eigen/src/Householder/HouseholderSequence.h +416 -382
  271. package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
  272. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +153 -166
  273. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +127 -138
  274. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +95 -124
  275. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +269 -267
  276. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +246 -259
  277. package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
  278. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +218 -217
  279. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +80 -103
  280. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +59 -63
  281. package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
  282. package/eigen/Eigen/src/Jacobi/Jacobi.h +256 -291
  283. package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
  284. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +339 -0
  285. package/eigen/Eigen/src/LU/Determinant.h +60 -63
  286. package/eigen/Eigen/src/LU/FullPivLU.h +561 -626
  287. package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
  288. package/eigen/Eigen/src/LU/InverseImpl.h +213 -275
  289. package/eigen/Eigen/src/LU/PartialPivLU.h +407 -435
  290. package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
  291. package/eigen/Eigen/src/LU/arch/InverseSize4.h +353 -0
  292. package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
  293. package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
  294. package/eigen/Eigen/src/OrderingMethods/Amd.h +250 -282
  295. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +950 -1103
  296. package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
  297. package/eigen/Eigen/src/OrderingMethods/Ordering.h +111 -122
  298. package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
  299. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
  300. package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
  301. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -429
  302. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +494 -473
  303. package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
  304. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +223 -137
  305. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +517 -460
  306. package/eigen/Eigen/src/QR/HouseholderQR.h +412 -278
  307. package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
  308. package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
  309. package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
  310. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +263 -261
  311. package/eigen/Eigen/src/SVD/BDCSVD.h +872 -679
  312. package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
  313. package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
  314. package/eigen/Eigen/src/SVD/JacobiSVD.h +585 -543
  315. package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
  316. package/eigen/Eigen/src/SVD/SVDBase.h +281 -160
  317. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +202 -237
  318. package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
  319. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +769 -590
  320. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +318 -129
  321. package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
  322. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -236
  323. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +140 -184
  324. package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
  325. package/eigen/Eigen/src/SparseCore/SparseAssign.h +174 -111
  326. package/eigen/Eigen/src/SparseCore/SparseBlock.h +408 -477
  327. package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
  328. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +531 -280
  329. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +559 -347
  330. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
  331. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +185 -191
  332. package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
  333. package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
  334. package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
  335. package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
  336. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1614 -1142
  337. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -357
  338. package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
  339. package/eigen/Eigen/src/SparseCore/SparseProduct.h +100 -91
  340. package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
  341. package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
  342. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +371 -414
  343. package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
  344. package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
  345. package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
  346. package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
  347. package/eigen/Eigen/src/SparseCore/SparseUtil.h +146 -115
  348. package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
  349. package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
  350. package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
  351. package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
  352. package/eigen/Eigen/src/SparseLU/SparseLU.h +814 -618
  353. package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
  354. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
  355. package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
  356. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +273 -255
  357. package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
  358. package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
  359. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +90 -101
  360. package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
  361. package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
  362. package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
  363. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +125 -133
  364. package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
  365. package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
  366. package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
  367. package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
  368. package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
  369. package/eigen/Eigen/src/SparseQR/SparseQR.h +451 -490
  370. package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -105
  371. package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
  372. package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
  373. package/eigen/Eigen/src/StlSupport/details.h +48 -50
  374. package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
  375. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -732
  376. package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
  377. package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
  378. package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
  379. package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
  380. package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
  381. package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
  382. package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
  383. package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
  384. package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
  385. package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
  386. package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
  387. package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
  388. package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
  389. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +480 -380
  390. package/eigen/Eigen/src/misc/Image.h +41 -43
  391. package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
  392. package/eigen/Eigen/src/misc/Kernel.h +39 -41
  393. package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
  394. package/eigen/Eigen/src/misc/blas.h +83 -426
  395. package/eigen/Eigen/src/misc/lapacke.h +9976 -16182
  396. package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
  397. package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
  398. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
  399. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
  400. package/eigen/Eigen/src/plugins/BlockMethods.inc +1370 -0
  401. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
  402. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +167 -0
  403. package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
  404. package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
  405. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
  406. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
  407. package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
  408. package/lib/LibEigen.d.ts +4 -0
  409. package/lib/LibEigen.js +14 -0
  410. package/lib/index.d.ts +1 -1
  411. package/lib/index.js +7 -3
  412. package/package.json +2 -10
  413. package/eigen/Eigen/CMakeLists.txt +0 -19
  414. package/eigen/Eigen/src/Core/BooleanRedux.h +0 -164
  415. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -103
  416. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  417. package/eigen/Eigen/src/Core/arch/CUDA/MathFunctions.h +0 -91
  418. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  419. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  420. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  421. package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
  422. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  423. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  424. package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
  425. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
  426. package/eigen/Eigen/src/misc/lapack.h +0 -152
  427. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -332
  428. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -552
  429. package/eigen/Eigen/src/plugins/BlockMethods.h +0 -1058
  430. package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
  431. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +0 -163
  432. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
  433. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -85
  434. package/lib/eigen.d.ts +0 -2
  435. package/lib/eigen.js +0 -15
@@ -0,0 +1,543 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2008-2018 Gael Guennebaud <gael.guennebaud@inria.fr>
5
+ // Copyright (C) 2020, Arm Limited and Contributors
6
+ //
7
+ // This Source Code Form is subject to the terms of the Mozilla
8
+ // Public License v. 2.0. If a copy of the MPL was not distributed
9
+ // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
10
+
11
+ #ifndef EIGEN_CONFIGURE_VECTORIZATION_H
12
+ #define EIGEN_CONFIGURE_VECTORIZATION_H
13
+
14
+ //------------------------------------------------------------------------------------------
15
+ // Static and dynamic alignment control
16
+ //
17
+ // The main purpose of this section is to define EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES
18
+ // as the maximal boundary in bytes on which dynamically and statically allocated data may be alignment respectively.
19
+ // The values of EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES can be specified by the user. If not,
20
+ // a default value is automatically computed based on architecture, compiler, and OS.
21
+ //
22
+ // This section also defines macros EIGEN_ALIGN_TO_BOUNDARY(N) and the shortcuts EIGEN_ALIGN{8,16,32,_MAX}
23
+ // to be used to declare statically aligned buffers.
24
+ //------------------------------------------------------------------------------------------
25
+
26
+ /* EIGEN_ALIGN_TO_BOUNDARY(n) forces data to be n-byte aligned. This is used to satisfy SIMD requirements.
27
+ * However, we do that EVEN if vectorization (EIGEN_VECTORIZE) is disabled,
28
+ * so that vectorization doesn't affect binary compatibility.
29
+ *
30
+ * If we made alignment depend on whether or not EIGEN_VECTORIZE is defined, it would be impossible to link
31
+ * vectorized and non-vectorized code.
32
+ */
33
+ #if (defined EIGEN_CUDACC)
34
+ #define EIGEN_ALIGN_TO_BOUNDARY(n) __align__(n)
35
+ #define EIGEN_ALIGNOF(x) __alignof(x)
36
+ #else
37
+ #define EIGEN_ALIGN_TO_BOUNDARY(n) alignas(n)
38
+ #define EIGEN_ALIGNOF(x) alignof(x)
39
+ #endif
40
+
41
+ // Align to the boundary that avoids false sharing.
42
+ // https://en.cppreference.com/w/cpp/thread/hardware_destructive_interference_size
43
+ // There is a bug in android NDK < r26 where the macro is defined but std::hardware_destructive_interference_size
44
+ // still does not exist.
45
+ #if defined(__cpp_lib_hardware_interference_size) && __cpp_lib_hardware_interference_size >= 201603 && \
46
+ (!EIGEN_OS_ANDROID || __NDK_MAJOR__ + 0 >= 26)
47
+ #include <new>
48
+ #define EIGEN_ALIGN_TO_AVOID_FALSE_SHARING EIGEN_ALIGN_TO_BOUNDARY(std::hardware_destructive_interference_size)
49
+ #else
50
+ // Overalign for the cache line size of 128 bytes (Apple M1)
51
+ #define EIGEN_ALIGN_TO_AVOID_FALSE_SHARING EIGEN_ALIGN_TO_BOUNDARY(128)
52
+ #endif
53
+
54
+ // If the user explicitly disable vectorization, then we also disable alignment
55
+ #if defined(EIGEN_DONT_VECTORIZE)
56
+ #if defined(EIGEN_GPUCC)
57
+ // GPU code is always vectorized and requires memory alignment for
58
+ // statically allocated buffers.
59
+ #define EIGEN_IDEAL_MAX_ALIGN_BYTES 16
60
+ #else
61
+ #define EIGEN_IDEAL_MAX_ALIGN_BYTES 0
62
+ #endif
63
+ #elif defined(__AVX512F__)
64
+ // 64 bytes static alignment is preferred only if really required
65
+ #define EIGEN_IDEAL_MAX_ALIGN_BYTES 64
66
+ #elif defined(__AVX__)
67
+ // 32 bytes static alignment is preferred only if really required
68
+ #define EIGEN_IDEAL_MAX_ALIGN_BYTES 32
69
+ #elif defined __HVX__ && (__HVX_LENGTH__ == 128)
70
+ #define EIGEN_IDEAL_MAX_ALIGN_BYTES 128
71
+ #else
72
+ #define EIGEN_IDEAL_MAX_ALIGN_BYTES 16
73
+ #endif
74
+
75
+ // EIGEN_MIN_ALIGN_BYTES defines the minimal value for which the notion of explicit alignment makes sense
76
+ #define EIGEN_MIN_ALIGN_BYTES 16
77
+
78
+ // Defined the boundary (in bytes) on which the data needs to be aligned. Note
79
+ // that unless EIGEN_ALIGN is defined and not equal to 0, the data may not be
80
+ // aligned at all regardless of the value of this #define.
81
+
82
+ #if (defined(EIGEN_DONT_ALIGN_STATICALLY) || defined(EIGEN_DONT_ALIGN)) && defined(EIGEN_MAX_STATIC_ALIGN_BYTES) && \
83
+ EIGEN_MAX_STATIC_ALIGN_BYTES > 0
84
+ #error EIGEN_MAX_STATIC_ALIGN_BYTES and EIGEN_DONT_ALIGN[_STATICALLY] are both defined with EIGEN_MAX_STATIC_ALIGN_BYTES!=0. Use EIGEN_MAX_STATIC_ALIGN_BYTES=0 as a synonym of EIGEN_DONT_ALIGN_STATICALLY.
85
+ #endif
86
+
87
+ // EIGEN_DONT_ALIGN_STATICALLY and EIGEN_DONT_ALIGN are deprecated
88
+ // They imply EIGEN_MAX_STATIC_ALIGN_BYTES=0
89
+ #if defined(EIGEN_DONT_ALIGN_STATICALLY) || defined(EIGEN_DONT_ALIGN)
90
+ #ifdef EIGEN_MAX_STATIC_ALIGN_BYTES
91
+ #undef EIGEN_MAX_STATIC_ALIGN_BYTES
92
+ #endif
93
+ #define EIGEN_MAX_STATIC_ALIGN_BYTES 0
94
+ #endif
95
+
96
+ #ifndef EIGEN_MAX_STATIC_ALIGN_BYTES
97
+
98
+ // Try to automatically guess what is the best default value for EIGEN_MAX_STATIC_ALIGN_BYTES
99
+
100
+ // 16 byte alignment is only useful for vectorization. Since it affects the ABI, we need to enable
101
+ // 16 byte alignment on all platforms where vectorization might be enabled. In theory we could always
102
+ // enable alignment, but it can be a cause of problems on some platforms, so we just disable it in
103
+ // certain common platform (compiler+architecture combinations) to avoid these problems.
104
+ // Only static alignment is really problematic (relies on nonstandard compiler extensions),
105
+ // try to keep heap alignment even when we have to disable static alignment.
106
+ #if EIGEN_COMP_GNUC && !(EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64 || EIGEN_ARCH_PPC || EIGEN_ARCH_IA64 || \
107
+ EIGEN_ARCH_MIPS || EIGEN_ARCH_LOONGARCH64)
108
+ #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 1
109
+ #else
110
+ #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 0
111
+ #endif
112
+
113
+ // static alignment is completely disabled with GCC 3, Sun Studio, and QCC/QNX
114
+ #if !EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT && !EIGEN_COMP_SUNCC && !EIGEN_OS_QNX
115
+ #define EIGEN_ARCH_WANTS_STACK_ALIGNMENT 1
116
+ #else
117
+ #define EIGEN_ARCH_WANTS_STACK_ALIGNMENT 0
118
+ #endif
119
+
120
+ #if EIGEN_ARCH_WANTS_STACK_ALIGNMENT
121
+ #define EIGEN_MAX_STATIC_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES
122
+ #else
123
+ #define EIGEN_MAX_STATIC_ALIGN_BYTES 0
124
+ #endif
125
+
126
+ #endif
127
+
128
+ // If EIGEN_MAX_ALIGN_BYTES is defined, then it is considered as an upper bound for EIGEN_MAX_STATIC_ALIGN_BYTES
129
+ #if defined(EIGEN_MAX_ALIGN_BYTES) && EIGEN_MAX_ALIGN_BYTES < EIGEN_MAX_STATIC_ALIGN_BYTES
130
+ #undef EIGEN_MAX_STATIC_ALIGN_BYTES
131
+ #define EIGEN_MAX_STATIC_ALIGN_BYTES EIGEN_MAX_ALIGN_BYTES
132
+ #endif
133
+
134
+ #if EIGEN_MAX_STATIC_ALIGN_BYTES == 0 && !defined(EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT)
135
+ #define EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT
136
+ #endif
137
+
138
+ // At this stage, EIGEN_MAX_STATIC_ALIGN_BYTES>0 is the true test whether we want to align arrays on the stack or not.
139
+ // It takes into account both the user choice to explicitly enable/disable alignment (by setting
140
+ // EIGEN_MAX_STATIC_ALIGN_BYTES) and the architecture config (EIGEN_ARCH_WANTS_STACK_ALIGNMENT). Henceforth, only
141
+ // EIGEN_MAX_STATIC_ALIGN_BYTES should be used.
142
+
143
+ // Shortcuts to EIGEN_ALIGN_TO_BOUNDARY
144
+ #define EIGEN_ALIGN8 EIGEN_ALIGN_TO_BOUNDARY(8)
145
+ #define EIGEN_ALIGN16 EIGEN_ALIGN_TO_BOUNDARY(16)
146
+ #define EIGEN_ALIGN32 EIGEN_ALIGN_TO_BOUNDARY(32)
147
+ #define EIGEN_ALIGN64 EIGEN_ALIGN_TO_BOUNDARY(64)
148
+ #if EIGEN_MAX_STATIC_ALIGN_BYTES > 0
149
+ #define EIGEN_ALIGN_MAX EIGEN_ALIGN_TO_BOUNDARY(EIGEN_MAX_STATIC_ALIGN_BYTES)
150
+ #else
151
+ #define EIGEN_ALIGN_MAX
152
+ #endif
153
+
154
+ // Dynamic alignment control
155
+
156
+ #if defined(EIGEN_DONT_ALIGN) && defined(EIGEN_MAX_ALIGN_BYTES) && EIGEN_MAX_ALIGN_BYTES > 0
157
+ #error EIGEN_MAX_ALIGN_BYTES and EIGEN_DONT_ALIGN are both defined with EIGEN_MAX_ALIGN_BYTES!=0. Use EIGEN_MAX_ALIGN_BYTES=0 as a synonym of EIGEN_DONT_ALIGN.
158
+ #endif
159
+
160
+ #ifdef EIGEN_DONT_ALIGN
161
+ #ifdef EIGEN_MAX_ALIGN_BYTES
162
+ #undef EIGEN_MAX_ALIGN_BYTES
163
+ #endif
164
+ #define EIGEN_MAX_ALIGN_BYTES 0
165
+ #elif !defined(EIGEN_MAX_ALIGN_BYTES)
166
+ #define EIGEN_MAX_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES
167
+ #endif
168
+
169
+ #if EIGEN_IDEAL_MAX_ALIGN_BYTES > EIGEN_MAX_ALIGN_BYTES
170
+ #define EIGEN_DEFAULT_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES
171
+ #else
172
+ #define EIGEN_DEFAULT_ALIGN_BYTES EIGEN_MAX_ALIGN_BYTES
173
+ #endif
174
+
175
+ #ifndef EIGEN_UNALIGNED_VECTORIZE
176
+ #define EIGEN_UNALIGNED_VECTORIZE 1
177
+ #endif
178
+
179
+ //----------------------------------------------------------------------
180
+
181
+ // if alignment is disabled, then disable vectorization. Note: EIGEN_MAX_ALIGN_BYTES is the proper check, it takes into
182
+ // account both the user's will (EIGEN_MAX_ALIGN_BYTES,EIGEN_DONT_ALIGN) and our own platform checks
183
+ #if EIGEN_MAX_ALIGN_BYTES == 0
184
+ #ifndef EIGEN_DONT_VECTORIZE
185
+ #define EIGEN_DONT_VECTORIZE
186
+ #endif
187
+ #endif
188
+
189
+ // The following (except #include <malloc.h> and _M_IX86_FP ??) can likely be
190
+ // removed as gcc 4.1 and msvc 2008 are not supported anyways.
191
+ #if EIGEN_COMP_MSVC
192
+ #include <malloc.h> // for _aligned_malloc -- need it regardless of whether vectorization is enabled
193
+ // a user reported that in 64-bit mode, MSVC doesn't care to define _M_IX86_FP.
194
+ #if (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || EIGEN_ARCH_x86_64
195
+ #define EIGEN_SSE2_ON_MSVC_2008_OR_LATER
196
+ #endif
197
+ #else
198
+ #if defined(__SSE2__)
199
+ #define EIGEN_SSE2_ON_NON_MSVC
200
+ #endif
201
+ #endif
202
+
203
+ #if !(defined(EIGEN_DONT_VECTORIZE) || defined(EIGEN_GPUCC))
204
+
205
+ #if defined(EIGEN_SSE2_ON_NON_MSVC) || defined(EIGEN_SSE2_ON_MSVC_2008_OR_LATER)
206
+
207
+ // Defines symbols for compile-time detection of which instructions are
208
+ // used.
209
+ // EIGEN_VECTORIZE_YY is defined if and only if the instruction set YY is used
210
+ #define EIGEN_VECTORIZE
211
+ #define EIGEN_VECTORIZE_SSE
212
+ #define EIGEN_VECTORIZE_SSE2
213
+
214
+ // Detect sse3/ssse3/sse4:
215
+ // gcc and icc defines __SSE3__, ...
216
+ // there is no way to know about this on msvc. You can define EIGEN_VECTORIZE_SSE* if you
217
+ // want to force the use of those instructions with msvc.
218
+ #ifdef __SSE3__
219
+ #define EIGEN_VECTORIZE_SSE3
220
+ #endif
221
+ #ifdef __SSSE3__
222
+ #define EIGEN_VECTORIZE_SSSE3
223
+ #endif
224
+ #ifdef __SSE4_1__
225
+ #define EIGEN_VECTORIZE_SSE4_1
226
+ #endif
227
+ #ifdef __SSE4_2__
228
+ #define EIGEN_VECTORIZE_SSE4_2
229
+ #endif
230
+ #ifdef __AVX__
231
+ #if !defined(EIGEN_USE_SYCL) && !EIGEN_COMP_EMSCRIPTEN
232
+ #define EIGEN_VECTORIZE_AVX
233
+ #endif
234
+ #define EIGEN_VECTORIZE_SSE3
235
+ #define EIGEN_VECTORIZE_SSSE3
236
+ #define EIGEN_VECTORIZE_SSE4_1
237
+ #define EIGEN_VECTORIZE_SSE4_2
238
+ #endif
239
+ #ifdef __AVX2__
240
+ #ifndef EIGEN_USE_SYCL
241
+ #define EIGEN_VECTORIZE_AVX2
242
+ #define EIGEN_VECTORIZE_AVX
243
+ #endif
244
+ #define EIGEN_VECTORIZE_SSE3
245
+ #define EIGEN_VECTORIZE_SSSE3
246
+ #define EIGEN_VECTORIZE_SSE4_1
247
+ #define EIGEN_VECTORIZE_SSE4_2
248
+ #endif
249
+ #if defined(__FMA__) || (EIGEN_COMP_MSVC && defined(__AVX2__))
250
+ // MSVC does not expose a switch dedicated for FMA
251
+ // For MSVC, AVX2 => FMA
252
+ #define EIGEN_VECTORIZE_FMA
253
+ #endif
254
+ #if defined(__AVX512F__)
255
+ #ifndef EIGEN_VECTORIZE_FMA
256
+ #if EIGEN_COMP_GNUC
257
+ #error Please add -mfma to your compiler flags: compiling with -mavx512f alone without SSE/AVX FMA is not supported (bug 1638).
258
+ #else
259
+ #error Please enable FMA in your compiler flags (e.g. -mfma): compiling with AVX512 alone without SSE/AVX FMA is not supported (bug 1638).
260
+ #endif
261
+ #endif
262
+ #ifndef EIGEN_USE_SYCL
263
+ #define EIGEN_VECTORIZE_AVX512
264
+ #define EIGEN_VECTORIZE_AVX2
265
+ #define EIGEN_VECTORIZE_AVX
266
+ #endif
267
+ #define EIGEN_VECTORIZE_FMA
268
+ #define EIGEN_VECTORIZE_SSE3
269
+ #define EIGEN_VECTORIZE_SSSE3
270
+ #define EIGEN_VECTORIZE_SSE4_1
271
+ #define EIGEN_VECTORIZE_SSE4_2
272
+ #ifndef EIGEN_USE_SYCL
273
+ #ifdef __AVX512DQ__
274
+ #define EIGEN_VECTORIZE_AVX512DQ
275
+ #endif
276
+ #ifdef __AVX512ER__
277
+ #define EIGEN_VECTORIZE_AVX512ER
278
+ #endif
279
+ #ifdef __AVX512BF16__
280
+ #define EIGEN_VECTORIZE_AVX512BF16
281
+ #endif
282
+ #ifdef __AVX512VL__
283
+ #define EIGEN_VECTORIZE_AVX512VL
284
+ #endif
285
+ #ifdef __AVX512FP16__
286
+ #ifdef __AVX512VL__
287
+ #define EIGEN_VECTORIZE_AVX512FP16
288
+ // Built-in _Float16.
289
+ #define EIGEN_HAS_BUILTIN_FLOAT16 1
290
+ #else
291
+ #if EIGEN_COMP_GNUC
292
+ #error Please add -mavx512vl to your compiler flags: compiling with -mavx512fp16 alone without AVX512-VL is not supported.
293
+ #else
294
+ #error Please enable AVX512-VL in your compiler flags (e.g. -mavx512vl): compiling with AVX512-FP16 alone without AVX512-VL is not supported.
295
+ #endif
296
+ #endif
297
+ #endif
298
+ #endif
299
+ #endif
300
+
301
+ // Disable AVX support on broken xcode versions
302
+ #if (EIGEN_COMP_CLANGAPPLE == 11000033) && (__MAC_OS_X_VERSION_MIN_REQUIRED == 101500)
303
+ // A nasty bug in the clang compiler shipped with xcode in a common compilation situation
304
+ // when XCode 11.0 and Mac deployment target macOS 10.15 is https://trac.macports.org/ticket/58776#no1
305
+ #ifdef EIGEN_VECTORIZE_AVX
306
+ #undef EIGEN_VECTORIZE_AVX
307
+ #warning \
308
+ "Disabling AVX support: clang compiler shipped with XCode 11.[012] generates broken assembly with -macosx-version-min=10.15 and AVX enabled. "
309
+ #ifdef EIGEN_VECTORIZE_AVX2
310
+ #undef EIGEN_VECTORIZE_AVX2
311
+ #endif
312
+ #ifdef EIGEN_VECTORIZE_FMA
313
+ #undef EIGEN_VECTORIZE_FMA
314
+ #endif
315
+ #ifdef EIGEN_VECTORIZE_AVX512
316
+ #undef EIGEN_VECTORIZE_AVX512
317
+ #endif
318
+ #ifdef EIGEN_VECTORIZE_AVX512DQ
319
+ #undef EIGEN_VECTORIZE_AVX512DQ
320
+ #endif
321
+ #ifdef EIGEN_VECTORIZE_AVX512ER
322
+ #undef EIGEN_VECTORIZE_AVX512ER
323
+ #endif
324
+ #endif
325
+ // NOTE: Confirmed test failures in XCode 11.0, and XCode 11.2 with -macosx-version-min=10.15 and AVX
326
+ // NOTE using -macosx-version-min=10.15 with Xcode 11.0 results in runtime segmentation faults in many tests, 11.2
327
+ // produce core dumps in 3 tests NOTE using -macosx-version-min=10.14 produces functioning and passing tests in all
328
+ // cases NOTE __clang_version__ "11.0.0 (clang-1100.0.33.8)" XCode 11.0 <- Produces many segfault and core dumping
329
+ // tests
330
+ // with -macosx-version-min=10.15 and AVX
331
+ // NOTE __clang_version__ "11.0.0 (clang-1100.0.33.12)" XCode 11.2 <- Produces 3 core dumping tests with
332
+ // -macosx-version-min=10.15 and AVX
333
+ #endif
334
+
335
+ // include files
336
+
337
+ // This extern "C" works around a MINGW-w64 compilation issue
338
+ // https://sourceforge.net/tracker/index.php?func=detail&aid=3018394&group_id=202880&atid=983354
339
+ // In essence, intrin.h is included by windows.h and also declares intrinsics (just as emmintrin.h etc. below do).
340
+ // However, intrin.h uses an extern "C" declaration, and g++ thus complains of duplicate declarations
341
+ // with conflicting linkage. The linkage for intrinsics doesn't matter, but at that stage the compiler doesn't know;
342
+ // so, to avoid compile errors when windows.h is included after Eigen/Core, ensure intrinsics are extern "C" here too.
343
+ // notice that since these are C headers, the extern "C" is theoretically needed anyways.
344
+ extern "C" {
345
+ // In theory we should only include immintrin.h and not the other *mmintrin.h header files directly.
346
+ // Doing so triggers some issues with ICC. However old gcc versions seems to not have this file, thus:
347
+ #if EIGEN_COMP_ICC >= 1110 || EIGEN_COMP_EMSCRIPTEN
348
+ #include <immintrin.h>
349
+ #else
350
+ #include <mmintrin.h>
351
+ #include <emmintrin.h>
352
+ #include <xmmintrin.h>
353
+ #ifdef EIGEN_VECTORIZE_SSE3
354
+ #include <pmmintrin.h>
355
+ #endif
356
+ #ifdef EIGEN_VECTORIZE_SSSE3
357
+ #include <tmmintrin.h>
358
+ #endif
359
+ #ifdef EIGEN_VECTORIZE_SSE4_1
360
+ #include <smmintrin.h>
361
+ #endif
362
+ #ifdef EIGEN_VECTORIZE_SSE4_2
363
+ #include <nmmintrin.h>
364
+ #endif
365
+ #if defined(EIGEN_VECTORIZE_AVX) || defined(EIGEN_VECTORIZE_AVX512)
366
+ #include <immintrin.h>
367
+ #endif
368
+ #endif
369
+ } // end extern "C"
370
+
371
+ #elif defined(__VSX__) && !defined(__APPLE__)
372
+
373
+ #define EIGEN_VECTORIZE
374
+ #define EIGEN_VECTORIZE_VSX 1
375
+ #define EIGEN_VECTORIZE_FMA
376
+ #include <altivec.h>
377
+ // We need to #undef all these ugly tokens defined in <altivec.h>
378
+ // => use __vector instead of vector
379
+ #undef bool
380
+ #undef vector
381
+ #undef pixel
382
+
383
+ #elif defined __ALTIVEC__
384
+
385
+ #define EIGEN_VECTORIZE
386
+ #define EIGEN_VECTORIZE_ALTIVEC
387
+ #define EIGEN_VECTORIZE_FMA
388
+ #include <altivec.h>
389
+ // We need to #undef all these ugly tokens defined in <altivec.h>
390
+ // => use __vector instead of vector
391
+ #undef bool
392
+ #undef vector
393
+ #undef pixel
394
+
395
+ #elif ((defined __ARM_NEON) || (defined __ARM_NEON__)) && !(defined EIGEN_ARM64_USE_SVE)
396
+
397
+ #define EIGEN_VECTORIZE
398
+ #define EIGEN_VECTORIZE_NEON
399
+ #include <arm_neon.h>
400
+
401
+ // We currently require SVE to be enabled explicitly via EIGEN_ARM64_USE_SVE and
402
+ // will not select the backend automatically
403
+ #elif (defined __ARM_FEATURE_SVE) && (defined EIGEN_ARM64_USE_SVE)
404
+
405
+ #define EIGEN_VECTORIZE
406
+ #define EIGEN_VECTORIZE_SVE
407
+ #include <arm_sve.h>
408
+
409
+ // Since we depend on knowing SVE vector lengths at compile-time, we need
410
+ // to ensure a fixed lengths is set
411
+ #if defined __ARM_FEATURE_SVE_BITS
412
+ #define EIGEN_ARM64_SVE_VL __ARM_FEATURE_SVE_BITS
413
+ #else
414
+ #error "Eigen requires a fixed SVE lector length but EIGEN_ARM64_SVE_VL is not set."
415
+ #endif
416
+
417
+ #elif (defined __s390x__ && defined __VEC__)
418
+
419
+ #define EIGEN_VECTORIZE
420
+ #define EIGEN_VECTORIZE_ZVECTOR
421
+ #include <vecintrin.h>
422
+
423
+ #elif defined __mips_msa
424
+
425
+ // Limit MSA optimizations to little-endian CPUs for now.
426
+ // TODO: Perhaps, eventually support MSA optimizations on big-endian CPUs?
427
+ #if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
428
+ #if defined(__LP64__)
429
+ #define EIGEN_MIPS_64
430
+ #else
431
+ #define EIGEN_MIPS_32
432
+ #endif
433
+ #define EIGEN_VECTORIZE
434
+ #define EIGEN_VECTORIZE_MSA
435
+ #include <msa.h>
436
+ #endif
437
+
438
+ #elif (defined __loongarch64 && defined __loongarch_sx)
439
+
440
+ #define EIGEN_VECTORIZE
441
+ #define EIGEN_VECTORIZE_LSX
442
+ #include <lsxintrin.h>
443
+
444
+ #elif defined __HVX__ && (__HVX_LENGTH__ == 128)
445
+
446
+ #define EIGEN_VECTORIZE
447
+ #define EIGEN_VECTORIZE_HVX
448
+ #include <hexagon_types.h>
449
+
450
+ #endif
451
+ #endif
452
+
453
+ // Following the Arm ACLE arm_neon.h should also include arm_fp16.h but not all
454
+ // compilers seem to follow this. We therefore include it explicitly.
455
+ // See also: https://bugs.llvm.org/show_bug.cgi?id=47955
456
+ #if defined(EIGEN_HAS_ARM64_FP16_SCALAR_ARITHMETIC)
457
+ #include <arm_fp16.h>
458
+ #endif
459
+
460
+ // Enable FMA for ARM.
461
+ #if defined(__ARM_FEATURE_FMA)
462
+ #define EIGEN_VECTORIZE_FMA
463
+ #endif
464
+
465
+ #if defined(__F16C__) && !defined(EIGEN_GPUCC) && (!EIGEN_COMP_CLANG_STRICT || EIGEN_CLANG_STRICT_AT_LEAST(3, 8, 0))
466
+ // We can use the optimized fp16 to float and float to fp16 conversion routines
467
+ #define EIGEN_HAS_FP16_C
468
+
469
+ #if EIGEN_COMP_GNUC
470
+ // Make sure immintrin.h is included, even if e.g. vectorization is
471
+ // explicitly disabled (see also issue #2395).
472
+ // Note that FP16C intrinsics for gcc and clang are included by immintrin.h,
473
+ // as opposed to emmintrin.h as suggested by Intel:
474
+ // https://software.intel.com/sites/landingpage/IntrinsicsGuide/#othertechs=FP16C&expand=1711
475
+ #include <immintrin.h>
476
+ #endif
477
+ #endif
478
+
479
+ #if defined EIGEN_CUDACC
480
+ #define EIGEN_VECTORIZE_GPU
481
+ #include <vector_types.h>
482
+ #if EIGEN_CUDA_SDK_VER >= 70500
483
+ #define EIGEN_HAS_CUDA_FP16
484
+ #endif
485
+ #endif
486
+
487
+ #if defined(EIGEN_HAS_CUDA_FP16)
488
+ #include <cuda_runtime_api.h>
489
+ #include <cuda_fp16.h>
490
+ #endif
491
+
492
+ #if defined(EIGEN_HIPCC)
493
+ #define EIGEN_VECTORIZE_GPU
494
+ #include <hip/hip_vector_types.h>
495
+ #define EIGEN_HAS_HIP_FP16
496
+ #include <hip/hip_fp16.h>
497
+ #define EIGEN_HAS_HIP_BF16
498
+ #include <hip/hip_bfloat16.h>
499
+ #endif
500
+
501
+ /** \brief Namespace containing all symbols from the %Eigen library. */
502
+ // IWYU pragma: private
503
+ #include "../InternalHeaderCheck.h"
504
+
505
+ namespace Eigen {
506
+
507
+ inline static const char *SimdInstructionSetsInUse(void) {
508
+ #if defined(EIGEN_VECTORIZE_AVX512)
509
+ return "AVX512, FMA, AVX2, AVX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
510
+ #elif defined(EIGEN_VECTORIZE_AVX)
511
+ return "AVX SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
512
+ #elif defined(EIGEN_VECTORIZE_SSE4_2)
513
+ return "SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
514
+ #elif defined(EIGEN_VECTORIZE_SSE4_1)
515
+ return "SSE, SSE2, SSE3, SSSE3, SSE4.1";
516
+ #elif defined(EIGEN_VECTORIZE_SSSE3)
517
+ return "SSE, SSE2, SSE3, SSSE3";
518
+ #elif defined(EIGEN_VECTORIZE_SSE3)
519
+ return "SSE, SSE2, SSE3";
520
+ #elif defined(EIGEN_VECTORIZE_SSE2)
521
+ return "SSE, SSE2";
522
+ #elif defined(EIGEN_VECTORIZE_ALTIVEC)
523
+ return "AltiVec";
524
+ #elif defined(EIGEN_VECTORIZE_VSX)
525
+ return "VSX";
526
+ #elif defined(EIGEN_VECTORIZE_NEON)
527
+ return "ARM NEON";
528
+ #elif defined(EIGEN_VECTORIZE_SVE)
529
+ return "ARM SVE";
530
+ #elif defined(EIGEN_VECTORIZE_ZVECTOR)
531
+ return "S390X ZVECTOR";
532
+ #elif defined(EIGEN_VECTORIZE_MSA)
533
+ return "MIPS MSA";
534
+ #elif defined(EIGEN_VECTORIZE_LSX)
535
+ return "LOONGARCH64 LSX";
536
+ #else
537
+ return "None";
538
+ #endif
539
+ }
540
+
541
+ } // end namespace Eigen
542
+
543
+ #endif // EIGEN_CONFIGURE_VECTORIZATION_H