forgeo-gmlib 0.6.2__cp39-cp39-musllinux_1_2_x86_64.whl

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 (554) hide show
  1. forgeo/gmlib/GeologicalModel3D.py +758 -0
  2. forgeo/gmlib/__init__.py +9 -0
  3. forgeo/gmlib/_version.py +34 -0
  4. forgeo/gmlib/architecture/__init__.py +1 -0
  5. forgeo/gmlib/architecture/core.py +130 -0
  6. forgeo/gmlib/common.cpython-39-x86_64-linux-gnu.so +0 -0
  7. forgeo/gmlib/fault_network.py +171 -0
  8. forgeo/gmlib/geomodeller_data.py +101 -0
  9. forgeo/gmlib/geomodeller_project.py +396 -0
  10. forgeo/gmlib/myxmltools.py +30 -0
  11. forgeo/gmlib/pypotential2D.cpython-39-x86_64-linux-gnu.so +0 -0
  12. forgeo/gmlib/pypotential3D.cpython-39-x86_64-linux-gnu.so +0 -0
  13. forgeo/gmlib/tesselate.py +236 -0
  14. forgeo/gmlib/tesselate_deprecated.py +249 -0
  15. forgeo/gmlib/topography_reader.py +198 -0
  16. forgeo/gmlib/utils/__init__.py +0 -0
  17. forgeo/gmlib/utils/append_data.py +508 -0
  18. forgeo/gmlib/utils/export.py +45 -0
  19. forgeo/gmlib/utils/normalized_gradient.py +40 -0
  20. forgeo/gmlib/utils/tools.py +35 -0
  21. forgeo_gmlib-0.6.2.dist-info/METADATA +23 -0
  22. forgeo_gmlib-0.6.2.dist-info/RECORD +554 -0
  23. forgeo_gmlib-0.6.2.dist-info/WHEEL +5 -0
  24. forgeo_gmlib-0.6.2.dist-info/licenses/LICENSE +661 -0
  25. include/eigen3/Eigen/Cholesky +45 -0
  26. include/eigen3/Eigen/CholmodSupport +48 -0
  27. include/eigen3/Eigen/Core +385 -0
  28. include/eigen3/Eigen/Dense +7 -0
  29. include/eigen3/Eigen/Eigen +2 -0
  30. include/eigen3/Eigen/Eigenvalues +60 -0
  31. include/eigen3/Eigen/Geometry +59 -0
  32. include/eigen3/Eigen/Householder +29 -0
  33. include/eigen3/Eigen/IterativeLinearSolvers +48 -0
  34. include/eigen3/Eigen/Jacobi +32 -0
  35. include/eigen3/Eigen/KLUSupport +41 -0
  36. include/eigen3/Eigen/LU +47 -0
  37. include/eigen3/Eigen/MetisSupport +35 -0
  38. include/eigen3/Eigen/OrderingMethods +70 -0
  39. include/eigen3/Eigen/PaStiXSupport +49 -0
  40. include/eigen3/Eigen/PardisoSupport +35 -0
  41. include/eigen3/Eigen/QR +50 -0
  42. include/eigen3/Eigen/QtAlignedMalloc +39 -0
  43. include/eigen3/Eigen/SPQRSupport +34 -0
  44. include/eigen3/Eigen/SVD +50 -0
  45. include/eigen3/Eigen/Sparse +34 -0
  46. include/eigen3/Eigen/SparseCholesky +37 -0
  47. include/eigen3/Eigen/SparseCore +69 -0
  48. include/eigen3/Eigen/SparseLU +48 -0
  49. include/eigen3/Eigen/SparseQR +36 -0
  50. include/eigen3/Eigen/StdDeque +27 -0
  51. include/eigen3/Eigen/StdList +26 -0
  52. include/eigen3/Eigen/StdVector +27 -0
  53. include/eigen3/Eigen/SuperLUSupport +64 -0
  54. include/eigen3/Eigen/UmfPackSupport +40 -0
  55. include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
  56. include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
  57. include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  58. include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  59. include/eigen3/Eigen/src/Core/ArithmeticSequence.h +406 -0
  60. include/eigen3/Eigen/src/Core/Array.h +425 -0
  61. include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
  62. include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
  63. include/eigen3/Eigen/src/Core/Assign.h +90 -0
  64. include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
  65. include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
  66. include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
  67. include/eigen3/Eigen/src/Core/Block.h +463 -0
  68. include/eigen3/Eigen/src/Core/BooleanRedux.h +164 -0
  69. include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
  70. include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
  71. include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
  72. include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
  73. include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  74. include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  75. include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  76. include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  77. include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
  78. include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
  79. include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  80. include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
  81. include/eigen3/Eigen/src/Core/Diagonal.h +259 -0
  82. include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
  83. include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
  84. include/eigen3/Eigen/src/Core/Dot.h +313 -0
  85. include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
  86. include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  87. include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
  88. include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
  89. include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
  90. include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
  91. include/eigen3/Eigen/src/Core/IO.h +258 -0
  92. include/eigen3/Eigen/src/Core/IndexedView.h +247 -0
  93. include/eigen3/Eigen/src/Core/Inverse.h +117 -0
  94. include/eigen3/Eigen/src/Core/Map.h +171 -0
  95. include/eigen3/Eigen/src/Core/MapBase.h +310 -0
  96. include/eigen3/Eigen/src/Core/MathFunctions.h +2212 -0
  97. include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  98. include/eigen3/Eigen/src/Core/Matrix.h +578 -0
  99. include/eigen3/Eigen/src/Core/MatrixBase.h +541 -0
  100. include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
  101. include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
  102. include/eigen3/Eigen/src/Core/NumTraits.h +351 -0
  103. include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +237 -0
  104. include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
  105. include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
  106. include/eigen3/Eigen/src/Core/Product.h +191 -0
  107. include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
  108. include/eigen3/Eigen/src/Core/Random.h +218 -0
  109. include/eigen3/Eigen/src/Core/Redux.h +515 -0
  110. include/eigen3/Eigen/src/Core/Ref.h +381 -0
  111. include/eigen3/Eigen/src/Core/Replicate.h +142 -0
  112. include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
  113. include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
  114. include/eigen3/Eigen/src/Core/Reverse.h +217 -0
  115. include/eigen3/Eigen/src/Core/Select.h +164 -0
  116. include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
  117. include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  118. include/eigen3/Eigen/src/Core/Solve.h +188 -0
  119. include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
  120. include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
  121. include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
  122. include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
  123. include/eigen3/Eigen/src/Core/Stride.h +120 -0
  124. include/eigen3/Eigen/src/Core/Swap.h +68 -0
  125. include/eigen3/Eigen/src/Core/Transpose.h +464 -0
  126. include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
  127. include/eigen3/Eigen/src/Core/TriangularMatrix.h +994 -0
  128. include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
  129. include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
  130. include/eigen3/Eigen/src/Core/Visitor.h +381 -0
  131. include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +368 -0
  132. include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  133. include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1588 -0
  134. include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  135. include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +384 -0
  136. include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +361 -0
  137. include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2270 -0
  138. include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  139. include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +415 -0
  140. include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +119 -0
  141. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2776 -0
  142. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +159 -0
  143. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +627 -0
  144. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.h +2400 -0
  145. include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2743 -0
  146. include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +269 -0
  147. include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +688 -0
  148. include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  149. include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1662 -0
  150. include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +116 -0
  151. include/eigen3/Eigen/src/Core/arch/Default/Half.h +950 -0
  152. include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
  153. include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  154. include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  155. include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1646 -0
  156. include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +79 -0
  157. include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  158. include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +645 -0
  159. include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  160. include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  161. include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +560 -0
  162. include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  163. include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  164. include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4653 -0
  165. include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1424 -0
  166. include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +338 -0
  167. include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  168. include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  169. include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  170. include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  171. include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  172. include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  173. include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  174. include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  175. include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  176. include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  177. include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  178. include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +428 -0
  179. include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  180. include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  181. include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  182. include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  183. include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  184. include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
  185. include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  186. include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  187. include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  188. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  189. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +322 -0
  190. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  191. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  192. include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +523 -0
  193. include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  194. include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
  195. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  196. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  197. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  198. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  199. include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  200. include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  201. include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  202. include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  203. include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  204. include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  205. include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  206. include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  207. include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  208. include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
  209. include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +521 -0
  210. include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
  211. include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +138 -0
  212. include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  213. include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  214. include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
  215. include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
  216. include/eigen3/Eigen/src/Core/util/Macros.h +1511 -0
  217. include/eigen3/Eigen/src/Core/util/Memory.h +1202 -0
  218. include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
  219. include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
  220. include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  221. include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  222. include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
  223. include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  224. include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
  225. include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +345 -0
  226. include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  227. include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  228. include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  229. include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +417 -0
  230. include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  231. include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  232. include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  233. include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  234. include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +557 -0
  235. include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  236. include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  237. include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  238. include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +560 -0
  239. include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
  240. include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
  241. include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
  242. include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
  243. include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
  244. include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
  245. include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  246. include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
  247. include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
  248. include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
  249. include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
  250. include/eigen3/Eigen/src/Geometry/Transform.h +1566 -0
  251. include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
  252. include/eigen3/Eigen/src/Geometry/Umeyama.h +168 -0
  253. include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  254. include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
  255. include/eigen3/Eigen/src/Householder/Householder.h +176 -0
  256. include/eigen3/Eigen/src/Householder/HouseholderSequence.h +553 -0
  257. include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  258. include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  259. include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +227 -0
  260. include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  261. include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  262. include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  263. include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  264. include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  265. include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
  266. include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  267. include/eigen3/Eigen/src/LU/Determinant.h +117 -0
  268. include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
  269. include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
  270. include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
  271. include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  272. include/eigen3/Eigen/src/LU/arch/InverseSize4.h +363 -0
  273. include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  274. include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
  275. include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  276. include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
  277. include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  278. include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  279. include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  280. include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  281. include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  282. include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  283. include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
  284. include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  285. include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  286. include/eigen3/Eigen/src/SVD/BDCSVD.h +1377 -0
  287. include/eigen3/Eigen/src/SVD/JacobiSVD.h +813 -0
  288. include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  289. include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
  290. include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +415 -0
  291. include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  292. include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  293. include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
  294. include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  295. include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  296. include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  297. include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
  298. include/eigen3/Eigen/src/SparseCore/SparseBlock.h +566 -0
  299. include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  300. include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  301. include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  302. include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  303. include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  304. include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  305. include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
  306. include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  307. include/eigen3/Eigen/src/SparseCore/SparseMap.h +306 -0
  308. include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  309. include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +399 -0
  310. include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  311. include/eigen3/Eigen/src/SparseCore/SparseProduct.h +182 -0
  312. include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
  313. include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
  314. include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  315. include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  316. include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  317. include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  318. include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  319. include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
  320. include/eigen3/Eigen/src/SparseCore/SparseVector.h +480 -0
  321. include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
  322. include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  323. include/eigen3/Eigen/src/SparseLU/SparseLU.h +925 -0
  324. include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  325. include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  326. include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  327. include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +374 -0
  328. include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  329. include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  330. include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  331. include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  332. include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +121 -0
  333. include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +129 -0
  334. include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +222 -0
  335. include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  336. include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  337. include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  338. include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  339. include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
  340. include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
  341. include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
  342. include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
  343. include/eigen3/Eigen/src/StlSupport/details.h +84 -0
  344. include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  345. include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  346. include/eigen3/Eigen/src/misc/Image.h +82 -0
  347. include/eigen3/Eigen/src/misc/Kernel.h +79 -0
  348. include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
  349. include/eigen3/Eigen/src/misc/blas.h +440 -0
  350. include/eigen3/Eigen/src/misc/lapack.h +152 -0
  351. include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
  352. include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
  353. include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +431 -0
  354. include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  355. include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
  356. include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  357. include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  358. include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  359. include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +184 -0
  360. include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  361. include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
  362. include/eigen3/signature_of_eigen3_matrix_library +1 -0
  363. include/eigen3/unsupported/Eigen/AdolcForward +159 -0
  364. include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
  365. include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
  366. include/eigen3/unsupported/Eigen/AutoDiff +48 -0
  367. include/eigen3/unsupported/Eigen/BVH +95 -0
  368. include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
  369. include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
  370. include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
  371. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
  372. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +327 -0
  373. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +242 -0
  374. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
  375. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
  376. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1083 -0
  377. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +510 -0
  378. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +373 -0
  379. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1019 -0
  380. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
  381. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
  382. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
  383. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
  384. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
  385. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
  386. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +455 -0
  387. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1126 -0
  388. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +536 -0
  389. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +213 -0
  390. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +342 -0
  391. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
  392. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
  393. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
  394. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
  395. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
  396. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
  397. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +234 -0
  398. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +493 -0
  399. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +229 -0
  400. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +980 -0
  401. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +701 -0
  402. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +389 -0
  403. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
  404. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +377 -0
  405. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +232 -0
  406. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
  407. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
  408. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +297 -0
  409. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
  410. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
  411. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
  412. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
  413. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +602 -0
  414. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +735 -0
  415. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +244 -0
  416. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
  417. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +257 -0
  418. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +213 -0
  419. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
  420. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
  421. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
  422. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1098 -0
  423. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +705 -0
  424. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +286 -0
  425. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +317 -0
  426. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +1000 -0
  427. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
  428. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +973 -0
  429. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
  430. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
  431. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +462 -0
  432. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
  433. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
  434. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +466 -0
  435. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +157 -0
  436. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +341 -0
  437. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +299 -0
  438. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
  439. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
  440. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +628 -0
  441. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
  442. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
  443. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
  444. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
  445. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
  446. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
  447. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
  448. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
  449. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
  450. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
  451. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
  452. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
  453. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
  454. include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +538 -0
  455. include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
  456. include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
  457. include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
  458. include/eigen3/unsupported/Eigen/EulerAngles +43 -0
  459. include/eigen3/unsupported/Eigen/FFT +420 -0
  460. include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
  461. include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
  462. include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
  463. include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
  464. include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
  465. include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
  466. include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
  467. include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
  468. include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
  469. include/eigen3/unsupported/Eigen/Polynomials +137 -0
  470. include/eigen3/unsupported/Eigen/Skyline +39 -0
  471. include/eigen3/unsupported/Eigen/SparseExtra +54 -0
  472. include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
  473. include/eigen3/unsupported/Eigen/Splines +35 -0
  474. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
  475. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
  476. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
  477. include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
  478. include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
  479. include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
  480. include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +356 -0
  481. include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +306 -0
  482. include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
  483. include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
  484. include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
  485. include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
  486. include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
  487. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
  488. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
  489. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
  490. include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
  491. include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
  492. include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
  493. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
  494. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
  495. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
  496. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
  497. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
  498. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
  499. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
  500. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
  501. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
  502. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
  503. include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
  504. include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
  505. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
  506. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
  507. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
  508. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
  509. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
  510. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
  511. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
  512. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
  513. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
  514. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
  515. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
  516. include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
  517. include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
  518. include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +429 -0
  519. include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
  520. include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
  521. include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
  522. include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
  523. include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
  524. include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
  525. include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
  526. include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
  527. include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
  528. include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
  529. include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
  530. include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
  531. include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
  532. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
  533. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
  534. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
  535. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
  536. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
  537. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
  538. include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
  539. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
  540. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
  541. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
  542. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
  543. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2051 -0
  544. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
  545. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
  546. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
  547. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +51 -0
  548. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
  549. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
  550. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
  551. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
  552. include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
  553. include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
  554. include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
@@ -0,0 +1,1511 @@
1
+ // This file is part of Eigen, a lightweight C++ template library
2
+ // for linear algebra.
3
+ //
4
+ // Copyright (C) 2008-2015 Gael Guennebaud <gael.guennebaud@inria.fr>
5
+ // Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
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_MACROS_H
12
+ #define EIGEN_MACROS_H
13
+
14
+ //------------------------------------------------------------------------------------------
15
+ // Eigen version and basic defaults
16
+ //------------------------------------------------------------------------------------------
17
+
18
+ #define EIGEN_WORLD_VERSION 3
19
+ #define EIGEN_MAJOR_VERSION 4
20
+ #define EIGEN_MINOR_VERSION 1
21
+
22
+ #define EIGEN_VERSION_AT_LEAST(x,y,z) (EIGEN_WORLD_VERSION>x || (EIGEN_WORLD_VERSION>=x && \
23
+ (EIGEN_MAJOR_VERSION>y || (EIGEN_MAJOR_VERSION>=y && \
24
+ EIGEN_MINOR_VERSION>=z))))
25
+
26
+ #ifdef EIGEN_DEFAULT_TO_ROW_MAJOR
27
+ #define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION Eigen::RowMajor
28
+ #else
29
+ #define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION Eigen::ColMajor
30
+ #endif
31
+
32
+ #ifndef EIGEN_DEFAULT_DENSE_INDEX_TYPE
33
+ #define EIGEN_DEFAULT_DENSE_INDEX_TYPE std::ptrdiff_t
34
+ #endif
35
+
36
+ // Upperbound on the C++ version to use.
37
+ // Expected values are 03, 11, 14, 17, etc.
38
+ // By default, let's use an arbitrarily large C++ version.
39
+ #ifndef EIGEN_MAX_CPP_VER
40
+ #define EIGEN_MAX_CPP_VER 99
41
+ #endif
42
+
43
+ /** Allows to disable some optimizations which might affect the accuracy of the result.
44
+ * Such optimization are enabled by default, and set EIGEN_FAST_MATH to 0 to disable them.
45
+ * They currently include:
46
+ * - single precision ArrayBase::sin() and ArrayBase::cos() for SSE and AVX vectorization.
47
+ */
48
+ #ifndef EIGEN_FAST_MATH
49
+ #define EIGEN_FAST_MATH 1
50
+ #endif
51
+
52
+ #ifndef EIGEN_STACK_ALLOCATION_LIMIT
53
+ // 131072 == 128 KB
54
+ #define EIGEN_STACK_ALLOCATION_LIMIT 131072
55
+ #endif
56
+
57
+ //------------------------------------------------------------------------------------------
58
+ // Compiler identification, EIGEN_COMP_*
59
+ //------------------------------------------------------------------------------------------
60
+
61
+ /// \internal EIGEN_COMP_GNUC set to 1 for all compilers compatible with GCC
62
+ #ifdef __GNUC__
63
+ #define EIGEN_COMP_GNUC (__GNUC__*10+__GNUC_MINOR__)
64
+ #else
65
+ #define EIGEN_COMP_GNUC 0
66
+ #endif
67
+
68
+ /// \internal EIGEN_COMP_CLANG set to major+minor version (e.g., 307 for clang 3.7) if the compiler is clang
69
+ #if defined(__clang__)
70
+ #define EIGEN_COMP_CLANG (__clang_major__*100+__clang_minor__)
71
+ #else
72
+ #define EIGEN_COMP_CLANG 0
73
+ #endif
74
+
75
+ /// \internal EIGEN_COMP_CASTXML set to 1 if being preprocessed by CastXML
76
+ #if defined(__castxml__)
77
+ #define EIGEN_COMP_CASTXML 1
78
+ #else
79
+ #define EIGEN_COMP_CASTXML 0
80
+ #endif
81
+
82
+ /// \internal EIGEN_COMP_LLVM set to 1 if the compiler backend is llvm
83
+ #if defined(__llvm__)
84
+ #define EIGEN_COMP_LLVM 1
85
+ #else
86
+ #define EIGEN_COMP_LLVM 0
87
+ #endif
88
+
89
+ /// \internal EIGEN_COMP_ICC set to __INTEL_COMPILER if the compiler is Intel compiler, 0 otherwise
90
+ #if defined(__INTEL_COMPILER)
91
+ #define EIGEN_COMP_ICC __INTEL_COMPILER
92
+ #else
93
+ #define EIGEN_COMP_ICC 0
94
+ #endif
95
+
96
+ /// \internal EIGEN_COMP_MINGW set to 1 if the compiler is mingw
97
+ #if defined(__MINGW32__)
98
+ #define EIGEN_COMP_MINGW 1
99
+ #else
100
+ #define EIGEN_COMP_MINGW 0
101
+ #endif
102
+
103
+ /// \internal EIGEN_COMP_SUNCC set to 1 if the compiler is Solaris Studio
104
+ #if defined(__SUNPRO_CC)
105
+ #define EIGEN_COMP_SUNCC 1
106
+ #else
107
+ #define EIGEN_COMP_SUNCC 0
108
+ #endif
109
+
110
+ /// \internal EIGEN_COMP_MSVC set to _MSC_VER if the compiler is Microsoft Visual C++, 0 otherwise.
111
+ #if defined(_MSC_VER)
112
+ #define EIGEN_COMP_MSVC _MSC_VER
113
+ #else
114
+ #define EIGEN_COMP_MSVC 0
115
+ #endif
116
+
117
+ #if defined(__NVCC__)
118
+ #if defined(__CUDACC_VER_MAJOR__) && (__CUDACC_VER_MAJOR__ >= 9)
119
+ #define EIGEN_COMP_NVCC ((__CUDACC_VER_MAJOR__ * 10000) + (__CUDACC_VER_MINOR__ * 100))
120
+ #elif defined(__CUDACC_VER__)
121
+ #define EIGEN_COMP_NVCC __CUDACC_VER__
122
+ #else
123
+ #error "NVCC did not define compiler version."
124
+ #endif
125
+ #else
126
+ #define EIGEN_COMP_NVCC 0
127
+ #endif
128
+
129
+ // For the record, here is a table summarizing the possible values for EIGEN_COMP_MSVC:
130
+ // name ver MSC_VER
131
+ // 2008 9 1500
132
+ // 2010 10 1600
133
+ // 2012 11 1700
134
+ // 2013 12 1800
135
+ // 2015 14 1900
136
+ // "15" 15 1900
137
+ // 2017-14.1 15.0 1910
138
+ // 2017-14.11 15.3 1911
139
+ // 2017-14.12 15.5 1912
140
+ // 2017-14.13 15.6 1913
141
+ // 2017-14.14 15.7 1914
142
+
143
+ /// \internal EIGEN_COMP_MSVC_LANG set to _MSVC_LANG if the compiler is Microsoft Visual C++, 0 otherwise.
144
+ #if defined(_MSVC_LANG)
145
+ #define EIGEN_COMP_MSVC_LANG _MSVC_LANG
146
+ #else
147
+ #define EIGEN_COMP_MSVC_LANG 0
148
+ #endif
149
+
150
+ // For the record, here is a table summarizing the possible values for EIGEN_COMP_MSVC_LANG:
151
+ // MSVC option Standard MSVC_LANG
152
+ // /std:c++14 (default as of VS 2019) C++14 201402L
153
+ // /std:c++17 C++17 201703L
154
+ // /std:c++latest >C++17 >201703L
155
+
156
+ /// \internal EIGEN_COMP_MSVC_STRICT set to 1 if the compiler is really Microsoft Visual C++ and not ,e.g., ICC or clang-cl
157
+ #if EIGEN_COMP_MSVC && !(EIGEN_COMP_ICC || EIGEN_COMP_LLVM || EIGEN_COMP_CLANG)
158
+ #define EIGEN_COMP_MSVC_STRICT _MSC_VER
159
+ #else
160
+ #define EIGEN_COMP_MSVC_STRICT 0
161
+ #endif
162
+
163
+ /// \internal EIGEN_COMP_IBM set to xlc version if the compiler is IBM XL C++
164
+ // XLC version
165
+ // 3.1 0x0301
166
+ // 4.5 0x0405
167
+ // 5.0 0x0500
168
+ // 12.1 0x0C01
169
+ #if defined(__IBMCPP__) || defined(__xlc__) || defined(__ibmxl__)
170
+ #define EIGEN_COMP_IBM __xlC__
171
+ #else
172
+ #define EIGEN_COMP_IBM 0
173
+ #endif
174
+
175
+ /// \internal EIGEN_COMP_PGI set to PGI version if the compiler is Portland Group Compiler
176
+ #if defined(__PGI)
177
+ #define EIGEN_COMP_PGI (__PGIC__*100+__PGIC_MINOR__)
178
+ #else
179
+ #define EIGEN_COMP_PGI 0
180
+ #endif
181
+
182
+ /// \internal EIGEN_COMP_NVHPC set to NVHPC version if the compiler is nvc++
183
+ #if defined(__NVCOMPILER)
184
+ #define EIGEN_COMP_NVHPC (__NVCOMPILER_MAJOR__ * 100 + __NVCOMPILER_MINOR__)
185
+ #else
186
+ #define EIGEN_COMP_NVHPC 0
187
+ #endif
188
+
189
+ /// \internal EIGEN_COMP_ARM set to 1 if the compiler is ARM Compiler
190
+ #if defined(__CC_ARM) || defined(__ARMCC_VERSION)
191
+ #define EIGEN_COMP_ARM 1
192
+ #else
193
+ #define EIGEN_COMP_ARM 0
194
+ #endif
195
+
196
+ /// \internal EIGEN_COMP_EMSCRIPTEN set to 1 if the compiler is Emscripten Compiler
197
+ #if defined(__EMSCRIPTEN__)
198
+ #define EIGEN_COMP_EMSCRIPTEN 1
199
+ #else
200
+ #define EIGEN_COMP_EMSCRIPTEN 0
201
+ #endif
202
+
203
+
204
+ /// \internal EIGEN_GNUC_STRICT set to 1 if the compiler is really GCC and not a compatible compiler (e.g., ICC, clang, mingw, etc.)
205
+ #if EIGEN_COMP_GNUC && !(EIGEN_COMP_CLANG || EIGEN_COMP_ICC || EIGEN_COMP_MINGW || EIGEN_COMP_PGI || EIGEN_COMP_IBM || EIGEN_COMP_ARM || EIGEN_COMP_EMSCRIPTEN)
206
+ #define EIGEN_COMP_GNUC_STRICT 1
207
+ #else
208
+ #define EIGEN_COMP_GNUC_STRICT 0
209
+ #endif
210
+
211
+
212
+ #if EIGEN_COMP_GNUC
213
+ #define EIGEN_GNUC_AT_LEAST(x,y) ((__GNUC__==x && __GNUC_MINOR__>=y) || __GNUC__>x)
214
+ #define EIGEN_GNUC_AT_MOST(x,y) ((__GNUC__==x && __GNUC_MINOR__<=y) || __GNUC__<x)
215
+ #define EIGEN_GNUC_AT(x,y) ( __GNUC__==x && __GNUC_MINOR__==y )
216
+ #else
217
+ #define EIGEN_GNUC_AT_LEAST(x,y) 0
218
+ #define EIGEN_GNUC_AT_MOST(x,y) 0
219
+ #define EIGEN_GNUC_AT(x,y) 0
220
+ #endif
221
+
222
+ // FIXME: could probably be removed as we do not support gcc 3.x anymore
223
+ #if EIGEN_COMP_GNUC && (__GNUC__ <= 3)
224
+ #define EIGEN_GCC3_OR_OLDER 1
225
+ #else
226
+ #define EIGEN_GCC3_OR_OLDER 0
227
+ #endif
228
+
229
+
230
+
231
+ //------------------------------------------------------------------------------------------
232
+ // Architecture identification, EIGEN_ARCH_*
233
+ //------------------------------------------------------------------------------------------
234
+
235
+
236
+ #if defined(__x86_64__) || (defined(_M_X64) && !defined(_M_ARM64EC)) || defined(__amd64)
237
+ #define EIGEN_ARCH_x86_64 1
238
+ #else
239
+ #define EIGEN_ARCH_x86_64 0
240
+ #endif
241
+
242
+ #if defined(__i386__) || defined(_M_IX86) || defined(_X86_) || defined(__i386)
243
+ #define EIGEN_ARCH_i386 1
244
+ #else
245
+ #define EIGEN_ARCH_i386 0
246
+ #endif
247
+
248
+ #if EIGEN_ARCH_x86_64 || EIGEN_ARCH_i386
249
+ #define EIGEN_ARCH_i386_OR_x86_64 1
250
+ #else
251
+ #define EIGEN_ARCH_i386_OR_x86_64 0
252
+ #endif
253
+
254
+ /// \internal EIGEN_ARCH_ARM set to 1 if the architecture is ARM
255
+ #if defined(__arm__)
256
+ #define EIGEN_ARCH_ARM 1
257
+ #else
258
+ #define EIGEN_ARCH_ARM 0
259
+ #endif
260
+
261
+ /// \internal EIGEN_ARCH_ARM64 set to 1 if the architecture is ARM64
262
+ #if defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)
263
+ #define EIGEN_ARCH_ARM64 1
264
+ #else
265
+ #define EIGEN_ARCH_ARM64 0
266
+ #endif
267
+
268
+ /// \internal EIGEN_ARCH_ARM_OR_ARM64 set to 1 if the architecture is ARM or ARM64
269
+ #if EIGEN_ARCH_ARM || EIGEN_ARCH_ARM64
270
+ #define EIGEN_ARCH_ARM_OR_ARM64 1
271
+ #else
272
+ #define EIGEN_ARCH_ARM_OR_ARM64 0
273
+ #endif
274
+
275
+ /// \internal EIGEN_ARCH_ARMV8 set to 1 if the architecture is armv8 or greater.
276
+ #if EIGEN_ARCH_ARM_OR_ARM64 && defined(__ARM_ARCH) && __ARM_ARCH >= 8
277
+ #define EIGEN_ARCH_ARMV8 1
278
+ #else
279
+ #define EIGEN_ARCH_ARMV8 0
280
+ #endif
281
+
282
+
283
+ /// \internal EIGEN_HAS_ARM64_FP16 set to 1 if the architecture provides an IEEE
284
+ /// compliant Arm fp16 type
285
+ #if EIGEN_ARCH_ARM_OR_ARM64
286
+ #ifndef EIGEN_HAS_ARM64_FP16
287
+ #if defined(__ARM_FP16_FORMAT_IEEE)
288
+ #define EIGEN_HAS_ARM64_FP16 1
289
+ #else
290
+ #define EIGEN_HAS_ARM64_FP16 0
291
+ #endif
292
+ #endif
293
+ #endif
294
+
295
+ /// \internal EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC set to 1 if the architecture
296
+ /// supports Neon vector intrinsics for fp16.
297
+ #if EIGEN_ARCH_ARM_OR_ARM64
298
+ #ifndef EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC
299
+ #if defined(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC)
300
+ #define EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC 1
301
+ #else
302
+ #define EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC 0
303
+ #endif
304
+ #endif
305
+ #endif
306
+
307
+ /// \internal EIGEN_HAS_ARM64_FP16_SCALAR_ARITHMETIC set to 1 if the architecture
308
+ /// supports Neon scalar intrinsics for fp16.
309
+ #if EIGEN_ARCH_ARM_OR_ARM64
310
+ #ifndef EIGEN_HAS_ARM64_FP16_SCALAR_ARITHMETIC
311
+ #if defined(__ARM_FEATURE_FP16_SCALAR_ARITHMETIC)
312
+ #define EIGEN_HAS_ARM64_FP16_SCALAR_ARITHMETIC 1
313
+ #endif
314
+ #endif
315
+ #endif
316
+
317
+ /// \internal EIGEN_ARCH_MIPS set to 1 if the architecture is MIPS
318
+ #if defined(__mips__) || defined(__mips)
319
+ #define EIGEN_ARCH_MIPS 1
320
+ #else
321
+ #define EIGEN_ARCH_MIPS 0
322
+ #endif
323
+
324
+ /// \internal EIGEN_ARCH_SPARC set to 1 if the architecture is SPARC
325
+ #if defined(__sparc__) || defined(__sparc)
326
+ #define EIGEN_ARCH_SPARC 1
327
+ #else
328
+ #define EIGEN_ARCH_SPARC 0
329
+ #endif
330
+
331
+ /// \internal EIGEN_ARCH_IA64 set to 1 if the architecture is Intel Itanium
332
+ #if defined(__ia64__)
333
+ #define EIGEN_ARCH_IA64 1
334
+ #else
335
+ #define EIGEN_ARCH_IA64 0
336
+ #endif
337
+
338
+ /// \internal EIGEN_ARCH_PPC set to 1 if the architecture is PowerPC
339
+ #if defined(__powerpc__) || defined(__ppc__) || defined(_M_PPC) || defined(__POWERPC__)
340
+ #define EIGEN_ARCH_PPC 1
341
+ #else
342
+ #define EIGEN_ARCH_PPC 0
343
+ #endif
344
+
345
+
346
+
347
+ //------------------------------------------------------------------------------------------
348
+ // Operating system identification, EIGEN_OS_*
349
+ //------------------------------------------------------------------------------------------
350
+
351
+ /// \internal EIGEN_OS_UNIX set to 1 if the OS is a unix variant
352
+ #if defined(__unix__) || defined(__unix)
353
+ #define EIGEN_OS_UNIX 1
354
+ #else
355
+ #define EIGEN_OS_UNIX 0
356
+ #endif
357
+
358
+ /// \internal EIGEN_OS_LINUX set to 1 if the OS is based on Linux kernel
359
+ #if defined(__linux__)
360
+ #define EIGEN_OS_LINUX 1
361
+ #else
362
+ #define EIGEN_OS_LINUX 0
363
+ #endif
364
+
365
+ /// \internal EIGEN_OS_ANDROID set to 1 if the OS is Android
366
+ // note: ANDROID is defined when using ndk_build, __ANDROID__ is defined when using a standalone toolchain.
367
+ #if defined(__ANDROID__) || defined(ANDROID)
368
+ #define EIGEN_OS_ANDROID 1
369
+ #else
370
+ #define EIGEN_OS_ANDROID 0
371
+ #endif
372
+
373
+ /// \internal EIGEN_OS_GNULINUX set to 1 if the OS is GNU Linux and not Linux-based OS (e.g., not android)
374
+ #if defined(__gnu_linux__) && !(EIGEN_OS_ANDROID)
375
+ #define EIGEN_OS_GNULINUX 1
376
+ #else
377
+ #define EIGEN_OS_GNULINUX 0
378
+ #endif
379
+
380
+ /// \internal EIGEN_OS_BSD set to 1 if the OS is a BSD variant
381
+ #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__DragonFly__)
382
+ #define EIGEN_OS_BSD 1
383
+ #else
384
+ #define EIGEN_OS_BSD 0
385
+ #endif
386
+
387
+ /// \internal EIGEN_OS_MAC set to 1 if the OS is MacOS
388
+ #if defined(__APPLE__)
389
+ #define EIGEN_OS_MAC 1
390
+ #else
391
+ #define EIGEN_OS_MAC 0
392
+ #endif
393
+
394
+ /// \internal EIGEN_OS_QNX set to 1 if the OS is QNX
395
+ #if defined(__QNX__)
396
+ #define EIGEN_OS_QNX 1
397
+ #else
398
+ #define EIGEN_OS_QNX 0
399
+ #endif
400
+
401
+ /// \internal EIGEN_OS_WIN set to 1 if the OS is Windows based
402
+ #if defined(_WIN32)
403
+ #define EIGEN_OS_WIN 1
404
+ #else
405
+ #define EIGEN_OS_WIN 0
406
+ #endif
407
+
408
+ /// \internal EIGEN_OS_WIN64 set to 1 if the OS is Windows 64bits
409
+ #if defined(_WIN64)
410
+ #define EIGEN_OS_WIN64 1
411
+ #else
412
+ #define EIGEN_OS_WIN64 0
413
+ #endif
414
+
415
+ /// \internal EIGEN_OS_WINCE set to 1 if the OS is Windows CE
416
+ #if defined(_WIN32_WCE)
417
+ #define EIGEN_OS_WINCE 1
418
+ #else
419
+ #define EIGEN_OS_WINCE 0
420
+ #endif
421
+
422
+ /// \internal EIGEN_OS_CYGWIN set to 1 if the OS is Windows/Cygwin
423
+ #if defined(__CYGWIN__)
424
+ #define EIGEN_OS_CYGWIN 1
425
+ #else
426
+ #define EIGEN_OS_CYGWIN 0
427
+ #endif
428
+
429
+ /// \internal EIGEN_OS_WIN_STRICT set to 1 if the OS is really Windows and not some variants
430
+ #if EIGEN_OS_WIN && !( EIGEN_OS_WINCE || EIGEN_OS_CYGWIN )
431
+ #define EIGEN_OS_WIN_STRICT 1
432
+ #else
433
+ #define EIGEN_OS_WIN_STRICT 0
434
+ #endif
435
+
436
+ /// \internal EIGEN_OS_SUN set to __SUNPRO_C if the OS is SUN
437
+ // compiler solaris __SUNPRO_C
438
+ // version studio
439
+ // 5.7 10 0x570
440
+ // 5.8 11 0x580
441
+ // 5.9 12 0x590
442
+ // 5.10 12.1 0x5100
443
+ // 5.11 12.2 0x5110
444
+ // 5.12 12.3 0x5120
445
+ #if (defined(sun) || defined(__sun)) && !(defined(__SVR4) || defined(__svr4__))
446
+ #define EIGEN_OS_SUN __SUNPRO_C
447
+ #else
448
+ #define EIGEN_OS_SUN 0
449
+ #endif
450
+
451
+ /// \internal EIGEN_OS_SOLARIS set to 1 if the OS is Solaris
452
+ #if (defined(sun) || defined(__sun)) && (defined(__SVR4) || defined(__svr4__))
453
+ #define EIGEN_OS_SOLARIS 1
454
+ #else
455
+ #define EIGEN_OS_SOLARIS 0
456
+ #endif
457
+
458
+
459
+ //------------------------------------------------------------------------------------------
460
+ // Detect GPU compilers and architectures
461
+ //------------------------------------------------------------------------------------------
462
+
463
+ // NVCC is not supported as the target platform for HIPCC
464
+ // Note that this also makes EIGEN_CUDACC and EIGEN_HIPCC mutually exclusive
465
+ #if defined(__NVCC__) && defined(__HIPCC__)
466
+ #error "NVCC as the target platform for HIPCC is currently not supported."
467
+ #endif
468
+
469
+ #if defined(__CUDACC__) && !defined(EIGEN_NO_CUDA)
470
+ // Means the compiler is either nvcc or clang with CUDA enabled
471
+ #define EIGEN_CUDACC __CUDACC__
472
+ #endif
473
+
474
+ #if defined(__CUDA_ARCH__) && !defined(EIGEN_NO_CUDA)
475
+ // Means we are generating code for the device
476
+ #define EIGEN_CUDA_ARCH __CUDA_ARCH__
477
+ #endif
478
+
479
+ #if defined(EIGEN_CUDACC)
480
+ #include <cuda.h>
481
+ #define EIGEN_CUDA_SDK_VER (CUDA_VERSION * 10)
482
+ #else
483
+ #define EIGEN_CUDA_SDK_VER 0
484
+ #endif
485
+
486
+ #if defined(__HIPCC__) && !defined(EIGEN_NO_HIP)
487
+ // Means the compiler is HIPCC (analogous to EIGEN_CUDACC, but for HIP)
488
+ #define EIGEN_HIPCC __HIPCC__
489
+
490
+ // We need to include hip_runtime.h here because it pulls in
491
+ // ++ hip_common.h which contains the define for __HIP_DEVICE_COMPILE__
492
+ // ++ host_defines.h which contains the defines for the __host__ and __device__ macros
493
+ #include <hip/hip_runtime.h>
494
+
495
+ #if defined(__HIP_DEVICE_COMPILE__)
496
+ // analogous to EIGEN_CUDA_ARCH, but for HIP
497
+ #define EIGEN_HIP_DEVICE_COMPILE __HIP_DEVICE_COMPILE__
498
+ #endif
499
+
500
+ // For HIP (ROCm 3.5 and higher), we need to explicitly set the launch_bounds attribute
501
+ // value to 1024. The compiler assigns a default value of 256 when the attribute is not
502
+ // specified. This results in failures on the HIP platform, for cases when a GPU kernel
503
+ // without an explicit launch_bounds attribute is called with a threads_per_block value
504
+ // greater than 256.
505
+ //
506
+ // This is a regression in functioanlity and is expected to be fixed within the next
507
+ // couple of ROCm releases (compiler will go back to using 1024 value as the default)
508
+ //
509
+ // In the meantime, we will use a "only enabled for HIP" macro to set the launch_bounds
510
+ // attribute.
511
+
512
+ #define EIGEN_HIP_LAUNCH_BOUNDS_1024 __launch_bounds__(1024)
513
+
514
+ #endif
515
+
516
+ #if !defined(EIGEN_HIP_LAUNCH_BOUNDS_1024)
517
+ #define EIGEN_HIP_LAUNCH_BOUNDS_1024
518
+ #endif // !defined(EIGEN_HIP_LAUNCH_BOUNDS_1024)
519
+
520
+ // Unify CUDA/HIPCC
521
+
522
+ #if defined(EIGEN_CUDACC) || defined(EIGEN_HIPCC)
523
+ //
524
+ // If either EIGEN_CUDACC or EIGEN_HIPCC is defined, then define EIGEN_GPUCC
525
+ //
526
+ #define EIGEN_GPUCC
527
+ //
528
+ // EIGEN_HIPCC implies the HIP compiler and is used to tweak Eigen code for use in HIP kernels
529
+ // EIGEN_CUDACC implies the CUDA compiler and is used to tweak Eigen code for use in CUDA kernels
530
+ //
531
+ // In most cases the same tweaks are required to the Eigen code to enable in both the HIP and CUDA kernels.
532
+ // For those cases, the corresponding code should be guarded with
533
+ // #if defined(EIGEN_GPUCC)
534
+ // instead of
535
+ // #if defined(EIGEN_CUDACC) || defined(EIGEN_HIPCC)
536
+ //
537
+ // For cases where the tweak is specific to HIP, the code should be guarded with
538
+ // #if defined(EIGEN_HIPCC)
539
+ //
540
+ // For cases where the tweak is specific to CUDA, the code should be guarded with
541
+ // #if defined(EIGEN_CUDACC)
542
+ //
543
+ #endif
544
+
545
+ #if defined(EIGEN_CUDA_ARCH) || defined(EIGEN_HIP_DEVICE_COMPILE)
546
+ //
547
+ // If either EIGEN_CUDA_ARCH or EIGEN_HIP_DEVICE_COMPILE is defined, then define EIGEN_GPU_COMPILE_PHASE
548
+ //
549
+ #define EIGEN_GPU_COMPILE_PHASE
550
+ //
551
+ // GPU compilers (HIPCC, NVCC) typically do two passes over the source code,
552
+ // + one to compile the source for the "host" (ie CPU)
553
+ // + another to compile the source for the "device" (ie. GPU)
554
+ //
555
+ // Code that needs to enabled only during the either the "host" or "device" compilation phase
556
+ // needs to be guarded with a macro that indicates the current compilation phase
557
+ //
558
+ // EIGEN_HIP_DEVICE_COMPILE implies the device compilation phase in HIP
559
+ // EIGEN_CUDA_ARCH implies the device compilation phase in CUDA
560
+ //
561
+ // In most cases, the "host" / "device" specific code is the same for both HIP and CUDA
562
+ // For those cases, the code should be guarded with
563
+ // #if defined(EIGEN_GPU_COMPILE_PHASE)
564
+ // instead of
565
+ // #if defined(EIGEN_CUDA_ARCH) || defined(EIGEN_HIP_DEVICE_COMPILE)
566
+ //
567
+ // For cases where the tweak is specific to HIP, the code should be guarded with
568
+ // #if defined(EIGEN_HIP_DEVICE_COMPILE)
569
+ //
570
+ // For cases where the tweak is specific to CUDA, the code should be guarded with
571
+ // #if defined(EIGEN_CUDA_ARCH)
572
+ //
573
+ #endif
574
+
575
+ /// \internal EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC set to 1 if the architecture
576
+ /// supports Neon vector intrinsics for fp16.
577
+ #if EIGEN_ARCH_ARM64
578
+ #ifndef EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC
579
+ // Clang only supports FP16 on aarch64, and not all intrinsics are available
580
+ // on A32 anyways even in GCC (e.g. vdiv_f16, vsqrt_f16).
581
+ #if EIGEN_ARCH_ARM64 && defined(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) && !defined(EIGEN_GPU_COMPILE_PHASE)
582
+ #define EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC 1
583
+ #else
584
+ #define EIGEN_HAS_ARM64_FP16_VECTOR_ARITHMETIC 0
585
+ #endif
586
+ #endif
587
+ #endif
588
+
589
+ /// \internal EIGEN_HAS_ARM64_FP16_SCALAR_ARITHMETIC set to 1 if the architecture
590
+ /// supports Neon scalar intrinsics for fp16.
591
+ #if EIGEN_ARCH_ARM64
592
+ #ifndef EIGEN_HAS_ARM64_FP16_SCALAR_ARITHMETIC
593
+ // Clang only supports FP16 on aarch64, and not all intrinsics are available
594
+ // on A32 anyways, even in GCC (e.g. vceqh_f16).
595
+ #if EIGEN_ARCH_ARM64 && defined(__ARM_FEATURE_FP16_SCALAR_ARITHMETIC) && !defined(EIGEN_GPU_COMPILE_PHASE)
596
+ #define EIGEN_HAS_ARM64_FP16_SCALAR_ARITHMETIC 1
597
+ #endif
598
+ #endif
599
+ #endif
600
+
601
+ #if defined(EIGEN_USE_SYCL) && defined(__SYCL_DEVICE_ONLY__)
602
+ // EIGEN_USE_SYCL is a user-defined macro while __SYCL_DEVICE_ONLY__ is a compiler-defined macro.
603
+ // In most cases we want to check if both macros are defined which can be done using the define below.
604
+ #define SYCL_DEVICE_ONLY
605
+ #endif
606
+
607
+ //------------------------------------------------------------------------------------------
608
+ // Detect Compiler/Architecture/OS specific features
609
+ //------------------------------------------------------------------------------------------
610
+
611
+ #if EIGEN_GNUC_AT_MOST(4,3) && !EIGEN_COMP_CLANG
612
+ // see bug 89
613
+ #define EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 0
614
+ #else
615
+ #define EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 1
616
+ #endif
617
+
618
+ // Cross compiler wrapper around LLVM's __has_builtin
619
+ #ifdef __has_builtin
620
+ # define EIGEN_HAS_BUILTIN(x) __has_builtin(x)
621
+ #else
622
+ # define EIGEN_HAS_BUILTIN(x) 0
623
+ #endif
624
+
625
+ // A Clang feature extension to determine compiler features.
626
+ // We use it to determine 'cxx_rvalue_references'
627
+ #ifndef __has_feature
628
+ # define __has_feature(x) 0
629
+ #endif
630
+
631
+ // Some old compilers do not support template specializations like:
632
+ // template<typename T,int N> void foo(const T x[N]);
633
+ #if !( EIGEN_COMP_CLANG && ( (EIGEN_COMP_CLANG<309) \
634
+ || (defined(__apple_build_version__) && (__apple_build_version__ < 9000000))) \
635
+ || EIGEN_COMP_GNUC_STRICT && EIGEN_COMP_GNUC<49)
636
+ #define EIGEN_HAS_STATIC_ARRAY_TEMPLATE 1
637
+ #else
638
+ #define EIGEN_HAS_STATIC_ARRAY_TEMPLATE 0
639
+ #endif
640
+
641
+ // The macro EIGEN_CPLUSPLUS is a replacement for __cplusplus/_MSVC_LANG that
642
+ // works for both platforms, indicating the C++ standard version number.
643
+ //
644
+ // With MSVC, without defining /Zc:__cplusplus, the __cplusplus macro will
645
+ // report 199711L regardless of the language standard specified via /std.
646
+ // We need to rely on _MSVC_LANG instead, which is only available after
647
+ // VS2015.3.
648
+ #if EIGEN_COMP_MSVC_LANG > 0
649
+ #define EIGEN_CPLUSPLUS EIGEN_COMP_MSVC_LANG
650
+ #elif EIGEN_COMP_MSVC >= 1900
651
+ #define EIGEN_CPLUSPLUS 201103L
652
+ #elif defined(__cplusplus)
653
+ #define EIGEN_CPLUSPLUS __cplusplus
654
+ #else
655
+ #define EIGEN_CPLUSPLUS 0
656
+ #endif
657
+
658
+ // The macro EIGEN_COMP_CXXVER defines the c++ verson expected by the compiler.
659
+ // For instance, if compiling with gcc and -std=c++17, then EIGEN_COMP_CXXVER
660
+ // is defined to 17.
661
+ #if EIGEN_CPLUSPLUS > 201703L
662
+ #define EIGEN_COMP_CXXVER 20
663
+ #elif EIGEN_CPLUSPLUS > 201402L
664
+ #define EIGEN_COMP_CXXVER 17
665
+ #elif EIGEN_CPLUSPLUS > 201103L
666
+ #define EIGEN_COMP_CXXVER 14
667
+ #elif EIGEN_CPLUSPLUS >= 201103L
668
+ #define EIGEN_COMP_CXXVER 11
669
+ #else
670
+ #define EIGEN_COMP_CXXVER 03
671
+ #endif
672
+
673
+ #ifndef EIGEN_HAS_CXX14_VARIABLE_TEMPLATES
674
+ #if defined(__cpp_variable_templates) && __cpp_variable_templates >= 201304 && EIGEN_MAX_CPP_VER>=14
675
+ #define EIGEN_HAS_CXX14_VARIABLE_TEMPLATES 1
676
+ #else
677
+ #define EIGEN_HAS_CXX14_VARIABLE_TEMPLATES 0
678
+ #endif
679
+ #endif
680
+
681
+
682
+ // The macros EIGEN_HAS_CXX?? defines a rough estimate of available c++ features
683
+ // but in practice we should not rely on them but rather on the availabilty of
684
+ // individual features as defined later.
685
+ // This is why there is no EIGEN_HAS_CXX17.
686
+ // FIXME: get rid of EIGEN_HAS_CXX14 and maybe even EIGEN_HAS_CXX11.
687
+ #if EIGEN_MAX_CPP_VER>=11 && EIGEN_COMP_CXXVER>=11
688
+ #define EIGEN_HAS_CXX11 1
689
+ #else
690
+ #define EIGEN_HAS_CXX11 0
691
+ #endif
692
+
693
+ #if EIGEN_MAX_CPP_VER>=14 && EIGEN_COMP_CXXVER>=14
694
+ #define EIGEN_HAS_CXX14 1
695
+ #else
696
+ #define EIGEN_HAS_CXX14 0
697
+ #endif
698
+
699
+ // Do we support r-value references?
700
+ #ifndef EIGEN_HAS_RVALUE_REFERENCES
701
+ #if EIGEN_MAX_CPP_VER>=11 && \
702
+ (__has_feature(cxx_rvalue_references) || \
703
+ (EIGEN_COMP_CXXVER >= 11) || (EIGEN_COMP_MSVC >= 1600))
704
+ #define EIGEN_HAS_RVALUE_REFERENCES 1
705
+ #else
706
+ #define EIGEN_HAS_RVALUE_REFERENCES 0
707
+ #endif
708
+ #endif
709
+
710
+ // Does the compiler support C99?
711
+ // Need to include <cmath> to make sure _GLIBCXX_USE_C99 gets defined
712
+ #include <cmath>
713
+ #ifndef EIGEN_HAS_C99_MATH
714
+ #if EIGEN_MAX_CPP_VER>=11 && \
715
+ ((defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)) \
716
+ || (defined(__GNUC__) && defined(_GLIBCXX_USE_C99)) \
717
+ || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER)) \
718
+ || (EIGEN_COMP_MSVC >= 1900) || defined(SYCL_DEVICE_ONLY))
719
+ #define EIGEN_HAS_C99_MATH 1
720
+ #else
721
+ #define EIGEN_HAS_C99_MATH 0
722
+ #endif
723
+ #endif
724
+
725
+ // Does the compiler support result_of?
726
+ // result_of was deprecated in c++17 and removed in c++ 20
727
+ #ifndef EIGEN_HAS_STD_RESULT_OF
728
+ #if EIGEN_HAS_CXX11 && EIGEN_COMP_CXXVER < 17
729
+ #define EIGEN_HAS_STD_RESULT_OF 1
730
+ #else
731
+ #define EIGEN_HAS_STD_RESULT_OF 0
732
+ #endif
733
+ #endif
734
+
735
+ // Does the compiler support std::hash?
736
+ #ifndef EIGEN_HAS_STD_HASH
737
+ // The std::hash struct is defined in C++11 but is not labelled as a __device__
738
+ // function and is not constexpr, so cannot be used on device.
739
+ #if EIGEN_HAS_CXX11 && !defined(EIGEN_GPU_COMPILE_PHASE)
740
+ #define EIGEN_HAS_STD_HASH 1
741
+ #else
742
+ #define EIGEN_HAS_STD_HASH 0
743
+ #endif
744
+ #endif // EIGEN_HAS_STD_HASH
745
+
746
+ #ifndef EIGEN_HAS_STD_INVOKE_RESULT
747
+ #if EIGEN_MAX_CPP_VER >= 17 && EIGEN_COMP_CXXVER >= 17
748
+ #define EIGEN_HAS_STD_INVOKE_RESULT 1
749
+ #else
750
+ #define EIGEN_HAS_STD_INVOKE_RESULT 0
751
+ #endif
752
+ #endif
753
+
754
+ #ifndef EIGEN_HAS_ALIGNAS
755
+ #if EIGEN_MAX_CPP_VER>=11 && EIGEN_HAS_CXX11 && \
756
+ ( __has_feature(cxx_alignas) \
757
+ || EIGEN_HAS_CXX14 \
758
+ || (EIGEN_COMP_MSVC >= 1800) \
759
+ || (EIGEN_GNUC_AT_LEAST(4,8)) \
760
+ || (EIGEN_COMP_CLANG>=305) \
761
+ || (EIGEN_COMP_ICC>=1500) \
762
+ || (EIGEN_COMP_PGI>=1500) \
763
+ || (EIGEN_COMP_SUNCC>=0x5130))
764
+ #define EIGEN_HAS_ALIGNAS 1
765
+ #else
766
+ #define EIGEN_HAS_ALIGNAS 0
767
+ #endif
768
+ #endif
769
+
770
+ // Does the compiler support type_traits?
771
+ // - full support of type traits was added only to GCC 5.1.0.
772
+ // - 20150626 corresponds to the last release of 4.x libstdc++
773
+ #ifndef EIGEN_HAS_TYPE_TRAITS
774
+ #if EIGEN_MAX_CPP_VER>=11 && (EIGEN_HAS_CXX11 || EIGEN_COMP_MSVC >= 1700) \
775
+ && ((!EIGEN_COMP_GNUC_STRICT) || EIGEN_GNUC_AT_LEAST(5, 1)) \
776
+ && ((!defined(__GLIBCXX__)) || __GLIBCXX__ > 20150626)
777
+ #define EIGEN_HAS_TYPE_TRAITS 1
778
+ #define EIGEN_INCLUDE_TYPE_TRAITS
779
+ #else
780
+ #define EIGEN_HAS_TYPE_TRAITS 0
781
+ #endif
782
+ #endif
783
+
784
+ // Does the compiler support variadic templates?
785
+ #ifndef EIGEN_HAS_VARIADIC_TEMPLATES
786
+ #if EIGEN_MAX_CPP_VER>=11 && (EIGEN_COMP_CXXVER >= 11) \
787
+ && (!defined(__NVCC__) || !EIGEN_ARCH_ARM_OR_ARM64 || (EIGEN_COMP_NVCC >= 80000) )
788
+ // ^^ Disable the use of variadic templates when compiling with versions of nvcc older than 8.0 on ARM devices:
789
+ // this prevents nvcc from crashing when compiling Eigen on Tegra X1
790
+ #define EIGEN_HAS_VARIADIC_TEMPLATES 1
791
+ #elif EIGEN_MAX_CPP_VER>=11 && (EIGEN_COMP_CXXVER >= 11) && defined(SYCL_DEVICE_ONLY)
792
+ #define EIGEN_HAS_VARIADIC_TEMPLATES 1
793
+ #else
794
+ #define EIGEN_HAS_VARIADIC_TEMPLATES 0
795
+ #endif
796
+ #endif
797
+
798
+ // Does the compiler fully support const expressions? (as in c++14)
799
+ #ifndef EIGEN_HAS_CONSTEXPR
800
+ #if defined(EIGEN_CUDACC)
801
+ // Const expressions are supported provided that c++11 is enabled and we're using either clang or nvcc 7.5 or above
802
+ #if EIGEN_MAX_CPP_VER>=14 && (EIGEN_COMP_CXXVER >= 11 && (EIGEN_COMP_CLANG || EIGEN_COMP_NVCC >= 70500))
803
+ #define EIGEN_HAS_CONSTEXPR 1
804
+ #endif
805
+ #elif EIGEN_MAX_CPP_VER>=14 && (__has_feature(cxx_relaxed_constexpr) || (EIGEN_COMP_CXXVER >= 14) || \
806
+ (EIGEN_GNUC_AT_LEAST(4,8) && (EIGEN_COMP_CXXVER >= 11)) || \
807
+ (EIGEN_COMP_CLANG >= 306 && (EIGEN_COMP_CXXVER >= 11)))
808
+ #define EIGEN_HAS_CONSTEXPR 1
809
+ #endif
810
+
811
+ #ifndef EIGEN_HAS_CONSTEXPR
812
+ #define EIGEN_HAS_CONSTEXPR 0
813
+ #endif
814
+
815
+ #endif // EIGEN_HAS_CONSTEXPR
816
+
817
+ #if EIGEN_HAS_CONSTEXPR
818
+ #define EIGEN_CONSTEXPR constexpr
819
+ #else
820
+ #define EIGEN_CONSTEXPR
821
+ #endif
822
+
823
+ // Does the compiler support C++11 math?
824
+ // Let's be conservative and enable the default C++11 implementation only if we are sure it exists
825
+ #ifndef EIGEN_HAS_CXX11_MATH
826
+ #if EIGEN_MAX_CPP_VER>=11 && ((EIGEN_COMP_CXXVER > 11) || (EIGEN_COMP_CXXVER == 11) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_MSVC || EIGEN_COMP_ICC) \
827
+ && (EIGEN_ARCH_i386_OR_x86_64) && (EIGEN_OS_GNULINUX || EIGEN_OS_WIN_STRICT || EIGEN_OS_MAC))
828
+ #define EIGEN_HAS_CXX11_MATH 1
829
+ #else
830
+ #define EIGEN_HAS_CXX11_MATH 0
831
+ #endif
832
+ #endif
833
+
834
+ // Does the compiler support proper C++11 containers?
835
+ #ifndef EIGEN_HAS_CXX11_CONTAINERS
836
+ #if EIGEN_MAX_CPP_VER>=11 && \
837
+ ((EIGEN_COMP_CXXVER > 11) \
838
+ || ((EIGEN_COMP_CXXVER == 11) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_MSVC || EIGEN_COMP_ICC>=1400)))
839
+ #define EIGEN_HAS_CXX11_CONTAINERS 1
840
+ #else
841
+ #define EIGEN_HAS_CXX11_CONTAINERS 0
842
+ #endif
843
+ #endif
844
+
845
+ // Does the compiler support C++11 noexcept?
846
+ #ifndef EIGEN_HAS_CXX11_NOEXCEPT
847
+ #if EIGEN_MAX_CPP_VER>=11 && \
848
+ (__has_feature(cxx_noexcept) \
849
+ || (EIGEN_COMP_CXXVER > 11) \
850
+ || ((EIGEN_COMP_CXXVER == 11) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_MSVC || EIGEN_COMP_ICC>=1400)))
851
+ #define EIGEN_HAS_CXX11_NOEXCEPT 1
852
+ #else
853
+ #define EIGEN_HAS_CXX11_NOEXCEPT 0
854
+ #endif
855
+ #endif
856
+
857
+ #ifndef EIGEN_HAS_CXX11_ATOMIC
858
+ #if EIGEN_MAX_CPP_VER>=11 && \
859
+ (__has_feature(cxx_atomic) \
860
+ || (EIGEN_COMP_CXXVER > 11) \
861
+ || ((EIGEN_COMP_CXXVER == 11) && (EIGEN_COMP_MSVC==0 || EIGEN_COMP_MSVC >= 1700)))
862
+ #define EIGEN_HAS_CXX11_ATOMIC 1
863
+ #else
864
+ #define EIGEN_HAS_CXX11_ATOMIC 0
865
+ #endif
866
+ #endif
867
+
868
+ #ifndef EIGEN_HAS_CXX11_OVERRIDE_FINAL
869
+ #if EIGEN_MAX_CPP_VER>=11 && \
870
+ (EIGEN_COMP_CXXVER >= 11 || EIGEN_COMP_MSVC >= 1700)
871
+ #define EIGEN_HAS_CXX11_OVERRIDE_FINAL 1
872
+ #else
873
+ #define EIGEN_HAS_CXX11_OVERRIDE_FINAL 0
874
+ #endif
875
+ #endif
876
+
877
+ // NOTE: the required Apple's clang version is very conservative
878
+ // and it could be that XCode 9 works just fine.
879
+ // NOTE: the MSVC version is based on https://en.cppreference.com/w/cpp/compiler_support
880
+ // and not tested.
881
+ #ifndef EIGEN_HAS_CXX17_OVERALIGN
882
+ #if EIGEN_MAX_CPP_VER>=17 && EIGEN_COMP_CXXVER>=17 && ( \
883
+ (EIGEN_COMP_MSVC >= 1912) \
884
+ || (EIGEN_GNUC_AT_LEAST(7,0)) \
885
+ || ((!defined(__apple_build_version__)) && (EIGEN_COMP_CLANG>=500)) \
886
+ || (( defined(__apple_build_version__)) && (__apple_build_version__>=10000000)) \
887
+ )
888
+ #define EIGEN_HAS_CXX17_OVERALIGN 1
889
+ #else
890
+ #define EIGEN_HAS_CXX17_OVERALIGN 0
891
+ #endif
892
+ #endif
893
+
894
+ #if defined(EIGEN_CUDACC) && EIGEN_HAS_CONSTEXPR
895
+ // While available already with c++11, this is useful mostly starting with c++14 and relaxed constexpr rules
896
+ #if defined(__NVCC__)
897
+ // nvcc considers constexpr functions as __host__ __device__ with the option --expt-relaxed-constexpr
898
+ #ifdef __CUDACC_RELAXED_CONSTEXPR__
899
+ #define EIGEN_CONSTEXPR_ARE_DEVICE_FUNC
900
+ #endif
901
+ #elif defined(__clang__) && defined(__CUDA__) && __has_feature(cxx_relaxed_constexpr)
902
+ // clang++ always considers constexpr functions as implicitly __host__ __device__
903
+ #define EIGEN_CONSTEXPR_ARE_DEVICE_FUNC
904
+ #endif
905
+ #endif
906
+
907
+ // Does the compiler support the __int128 and __uint128_t extensions for 128-bit
908
+ // integer arithmetic?
909
+ //
910
+ // Clang and GCC define __SIZEOF_INT128__ when these extensions are supported,
911
+ // but we avoid using them in certain cases:
912
+ //
913
+ // * Building using Clang for Windows, where the Clang runtime library has
914
+ // 128-bit support only on LP64 architectures, but Windows is LLP64.
915
+ #ifndef EIGEN_HAS_BUILTIN_INT128
916
+ #if defined(__SIZEOF_INT128__) && !(EIGEN_OS_WIN && EIGEN_COMP_CLANG)
917
+ #define EIGEN_HAS_BUILTIN_INT128 1
918
+ #else
919
+ #define EIGEN_HAS_BUILTIN_INT128 0
920
+ #endif
921
+ #endif
922
+
923
+ //------------------------------------------------------------------------------------------
924
+ // Preprocessor programming helpers
925
+ //------------------------------------------------------------------------------------------
926
+
927
+ // This macro can be used to prevent from macro expansion, e.g.:
928
+ // std::max EIGEN_NOT_A_MACRO(a,b)
929
+ #define EIGEN_NOT_A_MACRO
930
+
931
+ #define EIGEN_DEBUG_VAR(x) std::cerr << #x << " = " << x << std::endl;
932
+
933
+ // concatenate two tokens
934
+ #define EIGEN_CAT2(a,b) a ## b
935
+ #define EIGEN_CAT(a,b) EIGEN_CAT2(a,b)
936
+
937
+ #define EIGEN_COMMA ,
938
+
939
+ // convert a token to a string
940
+ #define EIGEN_MAKESTRING2(a) #a
941
+ #define EIGEN_MAKESTRING(a) EIGEN_MAKESTRING2(a)
942
+
943
+ // EIGEN_STRONG_INLINE is a stronger version of the inline, using __forceinline on MSVC,
944
+ // but it still doesn't use GCC's always_inline. This is useful in (common) situations where MSVC needs forceinline
945
+ // but GCC is still doing fine with just inline.
946
+ #ifndef EIGEN_STRONG_INLINE
947
+ #if (EIGEN_COMP_MSVC || EIGEN_COMP_ICC) && !defined(EIGEN_GPUCC)
948
+ #define EIGEN_STRONG_INLINE __forceinline
949
+ #else
950
+ #define EIGEN_STRONG_INLINE inline
951
+ #endif
952
+ #endif
953
+
954
+ // EIGEN_ALWAYS_INLINE is the stronget, it has the effect of making the function inline and adding every possible
955
+ // attribute to maximize inlining. This should only be used when really necessary: in particular,
956
+ // it uses __attribute__((always_inline)) on GCC, which most of the time is useless and can severely harm compile times.
957
+ // FIXME with the always_inline attribute,
958
+ // gcc 3.4.x and 4.1 reports the following compilation error:
959
+ // Eval.h:91: sorry, unimplemented: inlining failed in call to 'const Eigen::Eval<Derived> Eigen::MatrixBase<Scalar, Derived>::eval() const'
960
+ // : function body not available
961
+ // See also bug 1367
962
+ #if EIGEN_GNUC_AT_LEAST(4,2) && !defined(SYCL_DEVICE_ONLY)
963
+ #define EIGEN_ALWAYS_INLINE __attribute__((always_inline)) inline
964
+ #else
965
+ #define EIGEN_ALWAYS_INLINE EIGEN_STRONG_INLINE
966
+ #endif
967
+
968
+ #if EIGEN_COMP_GNUC
969
+ #define EIGEN_DONT_INLINE __attribute__((noinline))
970
+ #elif EIGEN_COMP_MSVC
971
+ #define EIGEN_DONT_INLINE __declspec(noinline)
972
+ #else
973
+ #define EIGEN_DONT_INLINE
974
+ #endif
975
+
976
+ #if EIGEN_COMP_GNUC
977
+ #define EIGEN_PERMISSIVE_EXPR __extension__
978
+ #else
979
+ #define EIGEN_PERMISSIVE_EXPR
980
+ #endif
981
+
982
+ // GPU stuff
983
+
984
+ // Disable some features when compiling with GPU compilers (NVCC/clang-cuda/SYCL/HIPCC)
985
+ #if defined(EIGEN_CUDACC) || defined(SYCL_DEVICE_ONLY) || defined(EIGEN_HIPCC)
986
+ // Do not try asserts on device code
987
+ #ifndef EIGEN_NO_DEBUG
988
+ #define EIGEN_NO_DEBUG
989
+ #endif
990
+
991
+ #ifdef EIGEN_INTERNAL_DEBUGGING
992
+ #undef EIGEN_INTERNAL_DEBUGGING
993
+ #endif
994
+
995
+ #ifdef EIGEN_EXCEPTIONS
996
+ #undef EIGEN_EXCEPTIONS
997
+ #endif
998
+ #endif
999
+
1000
+ #if defined(SYCL_DEVICE_ONLY)
1001
+ #ifndef EIGEN_DONT_VECTORIZE
1002
+ #define EIGEN_DONT_VECTORIZE
1003
+ #endif
1004
+ #define EIGEN_DEVICE_FUNC __attribute__((flatten)) __attribute__((always_inline))
1005
+ // All functions callable from CUDA/HIP code must be qualified with __device__
1006
+ #elif defined(EIGEN_GPUCC)
1007
+ #define EIGEN_DEVICE_FUNC __host__ __device__
1008
+ #else
1009
+ #define EIGEN_DEVICE_FUNC
1010
+ #endif
1011
+
1012
+
1013
+ // this macro allows to get rid of linking errors about multiply defined functions.
1014
+ // - static is not very good because it prevents definitions from different object files to be merged.
1015
+ // So static causes the resulting linked executable to be bloated with multiple copies of the same function.
1016
+ // - inline is not perfect either as it unwantedly hints the compiler toward inlining the function.
1017
+ #define EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_DEVICE_FUNC
1018
+ #define EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_DEVICE_FUNC inline
1019
+
1020
+ #ifdef NDEBUG
1021
+ # ifndef EIGEN_NO_DEBUG
1022
+ # define EIGEN_NO_DEBUG
1023
+ # endif
1024
+ #endif
1025
+
1026
+ // eigen_plain_assert is where we implement the workaround for the assert() bug in GCC <= 4.3, see bug 89
1027
+ #ifdef EIGEN_NO_DEBUG
1028
+ #ifdef SYCL_DEVICE_ONLY // used to silence the warning on SYCL device
1029
+ #define eigen_plain_assert(x) EIGEN_UNUSED_VARIABLE(x)
1030
+ #else
1031
+ #define eigen_plain_assert(x)
1032
+ #endif
1033
+ #else
1034
+ #if EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO
1035
+ namespace Eigen {
1036
+ namespace internal {
1037
+ inline bool copy_bool(bool b) { return b; }
1038
+ }
1039
+ }
1040
+ #define eigen_plain_assert(x) assert(x)
1041
+ #else
1042
+ // work around bug 89
1043
+ #include <cstdlib> // for abort
1044
+ #include <iostream> // for std::cerr
1045
+
1046
+ namespace Eigen {
1047
+ namespace internal {
1048
+ // trivial function copying a bool. Must be EIGEN_DONT_INLINE, so we implement it after including Eigen headers.
1049
+ // see bug 89.
1050
+ namespace {
1051
+ EIGEN_DONT_INLINE bool copy_bool(bool b) { return b; }
1052
+ }
1053
+ inline void assert_fail(const char *condition, const char *function, const char *file, int line)
1054
+ {
1055
+ std::cerr << "assertion failed: " << condition << " in function " << function << " at " << file << ":" << line << std::endl;
1056
+ abort();
1057
+ }
1058
+ }
1059
+ }
1060
+ #define eigen_plain_assert(x) \
1061
+ do { \
1062
+ if(!Eigen::internal::copy_bool(x)) \
1063
+ Eigen::internal::assert_fail(EIGEN_MAKESTRING(x), __PRETTY_FUNCTION__, __FILE__, __LINE__); \
1064
+ } while(false)
1065
+ #endif
1066
+ #endif
1067
+
1068
+ // eigen_assert can be overridden
1069
+ #ifndef eigen_assert
1070
+ #define eigen_assert(x) eigen_plain_assert(x)
1071
+ #endif
1072
+
1073
+ #ifdef EIGEN_INTERNAL_DEBUGGING
1074
+ #define eigen_internal_assert(x) eigen_assert(x)
1075
+ #else
1076
+ #define eigen_internal_assert(x)
1077
+ #endif
1078
+
1079
+ #ifdef EIGEN_NO_DEBUG
1080
+ #define EIGEN_ONLY_USED_FOR_DEBUG(x) EIGEN_UNUSED_VARIABLE(x)
1081
+ #else
1082
+ #define EIGEN_ONLY_USED_FOR_DEBUG(x)
1083
+ #endif
1084
+
1085
+ #ifndef EIGEN_NO_DEPRECATED_WARNING
1086
+ #if EIGEN_COMP_GNUC
1087
+ #define EIGEN_DEPRECATED __attribute__((deprecated))
1088
+ #elif EIGEN_COMP_MSVC
1089
+ #define EIGEN_DEPRECATED __declspec(deprecated)
1090
+ #else
1091
+ #define EIGEN_DEPRECATED
1092
+ #endif
1093
+ #else
1094
+ #define EIGEN_DEPRECATED
1095
+ #endif
1096
+
1097
+ #if EIGEN_COMP_GNUC
1098
+ #define EIGEN_UNUSED __attribute__((unused))
1099
+ #else
1100
+ #define EIGEN_UNUSED
1101
+ #endif
1102
+
1103
+ // Suppresses 'unused variable' warnings.
1104
+ namespace Eigen {
1105
+ namespace internal {
1106
+ template<typename T> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void ignore_unused_variable(const T&) {}
1107
+ }
1108
+ }
1109
+ #define EIGEN_UNUSED_VARIABLE(var) Eigen::internal::ignore_unused_variable(var);
1110
+
1111
+ #if !defined(EIGEN_ASM_COMMENT)
1112
+ #if EIGEN_COMP_GNUC && (EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64)
1113
+ #define EIGEN_ASM_COMMENT(X) __asm__("#" X)
1114
+ #else
1115
+ #define EIGEN_ASM_COMMENT(X)
1116
+ #endif
1117
+ #endif
1118
+
1119
+
1120
+ // Acts as a barrier preventing operations involving `X` from crossing. This
1121
+ // occurs, for example, in the fast rounding trick where a magic constant is
1122
+ // added then subtracted, which is otherwise compiled away with -ffast-math.
1123
+ //
1124
+ // See bug 1674
1125
+ #if !defined(EIGEN_OPTIMIZATION_BARRIER)
1126
+ #if EIGEN_COMP_GNUC
1127
+ // According to https://gcc.gnu.org/onlinedocs/gcc/Constraints.html:
1128
+ // X: Any operand whatsoever.
1129
+ // r: A register operand is allowed provided that it is in a general
1130
+ // register.
1131
+ // g: Any register, memory or immediate integer operand is allowed, except
1132
+ // for registers that are not general registers.
1133
+ // w: (AArch32/AArch64) Floating point register, Advanced SIMD vector
1134
+ // register or SVE vector register.
1135
+ // x: (SSE) Any SSE register.
1136
+ // (AArch64) Like w, but restricted to registers 0 to 15 inclusive.
1137
+ // v: (PowerPC) An Altivec vector register.
1138
+ // wa:(PowerPC) A VSX register.
1139
+ //
1140
+ // "X" (uppercase) should work for all cases, though this seems to fail for
1141
+ // some versions of GCC for arm/aarch64 with
1142
+ // "error: inconsistent operand constraints in an 'asm'"
1143
+ // Clang x86_64/arm/aarch64 seems to require "g" to support both scalars and
1144
+ // vectors, otherwise
1145
+ // "error: non-trivial scalar-to-vector conversion, possible invalid
1146
+ // constraint for vector type"
1147
+ //
1148
+ // GCC for ppc64le generates an internal compiler error with x/X/g.
1149
+ // GCC for AVX generates an internal compiler error with X.
1150
+ //
1151
+ // Tested on icc/gcc/clang for sse, avx, avx2, avx512dq
1152
+ // gcc for arm, aarch64,
1153
+ // gcc for ppc64le,
1154
+ // both vectors and scalars.
1155
+ //
1156
+ // Note that this is restricted to plain types - this will not work
1157
+ // directly for std::complex<T>, Eigen::half, Eigen::bfloat16. For these,
1158
+ // you will need to apply to the underlying POD type.
1159
+ #if EIGEN_ARCH_PPC && EIGEN_COMP_GNUC_STRICT
1160
+ // This seems to be broken on clang. Packet4f is loaded into a single
1161
+ // register rather than a vector, zeroing out some entries. Integer
1162
+ // types also generate a compile error.
1163
+ #if EIGEN_OS_MAC
1164
+ // General, Altivec for Apple (VSX were added in ISA v2.06):
1165
+ #define EIGEN_OPTIMIZATION_BARRIER(X) __asm__ ("" : "+r,v" (X));
1166
+ #else
1167
+ // General, Altivec, VSX otherwise:
1168
+ #define EIGEN_OPTIMIZATION_BARRIER(X) __asm__ ("" : "+r,v,wa" (X));
1169
+ #endif
1170
+ #elif EIGEN_ARCH_ARM_OR_ARM64
1171
+ // General, NEON.
1172
+ // Clang doesn't like "r",
1173
+ // error: non-trivial scalar-to-vector conversion, possible invalid
1174
+ // constraint for vector type
1175
+ // GCC < 5 doesn't like "g",
1176
+ // error: 'asm' operand requires impossible reload
1177
+ #if EIGEN_COMP_GNUC_STRICT && EIGEN_GNUC_AT_MOST(5, 0)
1178
+ #define EIGEN_OPTIMIZATION_BARRIER(X) __asm__ ("" : "+r,w" (X));
1179
+ #else
1180
+ #define EIGEN_OPTIMIZATION_BARRIER(X) __asm__ ("" : "+g,w" (X));
1181
+ #endif
1182
+ #elif EIGEN_ARCH_i386_OR_x86_64
1183
+ // General, SSE.
1184
+ #define EIGEN_OPTIMIZATION_BARRIER(X) __asm__ ("" : "+g,x" (X));
1185
+ #else
1186
+ // Not implemented for other architectures.
1187
+ #define EIGEN_OPTIMIZATION_BARRIER(X)
1188
+ #endif
1189
+ #else
1190
+ // Not implemented for other compilers.
1191
+ #define EIGEN_OPTIMIZATION_BARRIER(X)
1192
+ #endif
1193
+ #endif
1194
+
1195
+ #if EIGEN_COMP_MSVC
1196
+ // NOTE MSVC often gives C4127 warnings with compiletime if statements. See bug 1362.
1197
+ // This workaround is ugly, but it does the job.
1198
+ # define EIGEN_CONST_CONDITIONAL(cond) (void)0, cond
1199
+ #else
1200
+ # define EIGEN_CONST_CONDITIONAL(cond) cond
1201
+ #endif
1202
+
1203
+ #ifdef EIGEN_DONT_USE_RESTRICT_KEYWORD
1204
+ #define EIGEN_RESTRICT
1205
+ #endif
1206
+ #ifndef EIGEN_RESTRICT
1207
+ #define EIGEN_RESTRICT __restrict
1208
+ #endif
1209
+
1210
+
1211
+ #ifndef EIGEN_DEFAULT_IO_FORMAT
1212
+ #ifdef EIGEN_MAKING_DOCS
1213
+ // format used in Eigen's documentation
1214
+ // needed to define it here as escaping characters in CMake add_definition's argument seems very problematic.
1215
+ #define EIGEN_DEFAULT_IO_FORMAT Eigen::IOFormat(3, 0, " ", "\n", "", "")
1216
+ #else
1217
+ #define EIGEN_DEFAULT_IO_FORMAT Eigen::IOFormat()
1218
+ #endif
1219
+ #endif
1220
+
1221
+ // just an empty macro !
1222
+ #define EIGEN_EMPTY
1223
+
1224
+
1225
+ // When compiling CUDA/HIP device code with NVCC or HIPCC
1226
+ // pull in math functions from the global namespace.
1227
+ // In host mode, and when device code is compiled with clang,
1228
+ // use the std versions.
1229
+ #if (defined(EIGEN_CUDA_ARCH) && defined(__NVCC__)) || defined(EIGEN_HIP_DEVICE_COMPILE)
1230
+ #define EIGEN_USING_STD(FUNC) using ::FUNC;
1231
+ #else
1232
+ #define EIGEN_USING_STD(FUNC) using std::FUNC;
1233
+ #endif
1234
+
1235
+ #if EIGEN_COMP_MSVC_STRICT && (EIGEN_COMP_MSVC < 1916 || (EIGEN_COMP_MSVC == 1916 && EIGEN_COMP_NVCC))
1236
+ // For older MSVC versions, as well as 1900 && CUDA 8, using the base operator is necessary,
1237
+ // otherwise we get duplicate definition errors
1238
+ // For later MSVC versions, we require explicit operator= definition, otherwise we get
1239
+ // use of implicitly deleted operator errors.
1240
+ // (cf Bugs 920, 1000, 1324, 2291)
1241
+ #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
1242
+ using Base::operator =;
1243
+ #elif EIGEN_COMP_CLANG // workaround clang bug (see http://forum.kde.org/viewtopic.php?f=74&t=102653)
1244
+ #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
1245
+ using Base::operator =; \
1246
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const Derived& other) { Base::operator=(other); return *this; } \
1247
+ template <typename OtherDerived> \
1248
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const DenseBase<OtherDerived>& other) { Base::operator=(other.derived()); return *this; }
1249
+ #else
1250
+ #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
1251
+ using Base::operator =; \
1252
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const Derived& other) \
1253
+ { \
1254
+ Base::operator=(other); \
1255
+ return *this; \
1256
+ }
1257
+ #endif
1258
+
1259
+
1260
+ /**
1261
+ * \internal
1262
+ * \brief Macro to explicitly define the default copy constructor.
1263
+ * This is necessary, because the implicit definition is deprecated if the copy-assignment is overridden.
1264
+ */
1265
+ #if EIGEN_HAS_CXX11
1266
+ #define EIGEN_DEFAULT_COPY_CONSTRUCTOR(CLASS) EIGEN_DEVICE_FUNC CLASS(const CLASS&) = default;
1267
+ #else
1268
+ #define EIGEN_DEFAULT_COPY_CONSTRUCTOR(CLASS)
1269
+ #endif
1270
+
1271
+
1272
+
1273
+ /** \internal
1274
+ * \brief Macro to manually inherit assignment operators.
1275
+ * This is necessary, because the implicitly defined assignment operator gets deleted when a custom operator= is defined.
1276
+ * With C++11 or later this also default-implements the copy-constructor
1277
+ */
1278
+ #define EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Derived) \
1279
+ EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
1280
+ EIGEN_DEFAULT_COPY_CONSTRUCTOR(Derived)
1281
+
1282
+ /** \internal
1283
+ * \brief Macro to manually define default constructors and destructors.
1284
+ * This is necessary when the copy constructor is re-defined.
1285
+ * For empty helper classes this should usually be protected, to avoid accidentally creating empty objects.
1286
+ *
1287
+ * Hiding the default destructor lead to problems in C++03 mode together with boost::multiprecision
1288
+ */
1289
+ #if EIGEN_HAS_CXX11
1290
+ #define EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(Derived) \
1291
+ EIGEN_DEVICE_FUNC Derived() = default; \
1292
+ EIGEN_DEVICE_FUNC ~Derived() = default;
1293
+ #else
1294
+ #define EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(Derived) \
1295
+ EIGEN_DEVICE_FUNC Derived() {}; \
1296
+ /* EIGEN_DEVICE_FUNC ~Derived() {}; */
1297
+ #endif
1298
+
1299
+
1300
+
1301
+
1302
+
1303
+ /**
1304
+ * Just a side note. Commenting within defines works only by documenting
1305
+ * behind the object (via '!<'). Comments cannot be multi-line and thus
1306
+ * we have these extra long lines. What is confusing doxygen over here is
1307
+ * that we use '\' and basically have a bunch of typedefs with their
1308
+ * documentation in a single line.
1309
+ **/
1310
+
1311
+ #define EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \
1312
+ typedef typename Eigen::internal::traits<Derived>::Scalar Scalar; /*!< \brief Numeric type, e.g. float, double, int or std::complex<float>. */ \
1313
+ typedef typename Eigen::NumTraits<Scalar>::Real RealScalar; /*!< \brief The underlying numeric type for composed scalar types. \details In cases where Scalar is e.g. std::complex<T>, T were corresponding to RealScalar. */ \
1314
+ typedef typename Base::CoeffReturnType CoeffReturnType; /*!< \brief The return type for coefficient access. \details Depending on whether the object allows direct coefficient access (e.g. for a MatrixXd), this type is either 'const Scalar&' or simply 'Scalar' for objects that do not allow direct coefficient access. */ \
1315
+ typedef typename Eigen::internal::ref_selector<Derived>::type Nested; \
1316
+ typedef typename Eigen::internal::traits<Derived>::StorageKind StorageKind; \
1317
+ typedef typename Eigen::internal::traits<Derived>::StorageIndex StorageIndex; \
1318
+ enum CompileTimeTraits \
1319
+ { RowsAtCompileTime = Eigen::internal::traits<Derived>::RowsAtCompileTime, \
1320
+ ColsAtCompileTime = Eigen::internal::traits<Derived>::ColsAtCompileTime, \
1321
+ Flags = Eigen::internal::traits<Derived>::Flags, \
1322
+ SizeAtCompileTime = Base::SizeAtCompileTime, \
1323
+ MaxSizeAtCompileTime = Base::MaxSizeAtCompileTime, \
1324
+ IsVectorAtCompileTime = Base::IsVectorAtCompileTime }; \
1325
+ using Base::derived; \
1326
+ using Base::const_cast_derived;
1327
+
1328
+
1329
+ // FIXME Maybe the EIGEN_DENSE_PUBLIC_INTERFACE could be removed as importing PacketScalar is rarely needed
1330
+ #define EIGEN_DENSE_PUBLIC_INTERFACE(Derived) \
1331
+ EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \
1332
+ typedef typename Base::PacketScalar PacketScalar;
1333
+
1334
+
1335
+ #define EIGEN_PLAIN_ENUM_MIN(a,b) (((int)a <= (int)b) ? (int)a : (int)b)
1336
+ #define EIGEN_PLAIN_ENUM_MAX(a,b) (((int)a >= (int)b) ? (int)a : (int)b)
1337
+
1338
+ // EIGEN_SIZE_MIN_PREFER_DYNAMIC gives the min between compile-time sizes. 0 has absolute priority, followed by 1,
1339
+ // followed by Dynamic, followed by other finite values. The reason for giving Dynamic the priority over
1340
+ // finite values is that min(3, Dynamic) should be Dynamic, since that could be anything between 0 and 3.
1341
+ #define EIGEN_SIZE_MIN_PREFER_DYNAMIC(a,b) (((int)a == 0 || (int)b == 0) ? 0 \
1342
+ : ((int)a == 1 || (int)b == 1) ? 1 \
1343
+ : ((int)a == Dynamic || (int)b == Dynamic) ? Dynamic \
1344
+ : ((int)a <= (int)b) ? (int)a : (int)b)
1345
+
1346
+ // EIGEN_SIZE_MIN_PREFER_FIXED is a variant of EIGEN_SIZE_MIN_PREFER_DYNAMIC comparing MaxSizes. The difference is that finite values
1347
+ // now have priority over Dynamic, so that min(3, Dynamic) gives 3. Indeed, whatever the actual value is
1348
+ // (between 0 and 3), it is not more than 3.
1349
+ #define EIGEN_SIZE_MIN_PREFER_FIXED(a,b) (((int)a == 0 || (int)b == 0) ? 0 \
1350
+ : ((int)a == 1 || (int)b == 1) ? 1 \
1351
+ : ((int)a == Dynamic && (int)b == Dynamic) ? Dynamic \
1352
+ : ((int)a == Dynamic) ? (int)b \
1353
+ : ((int)b == Dynamic) ? (int)a \
1354
+ : ((int)a <= (int)b) ? (int)a : (int)b)
1355
+
1356
+ // see EIGEN_SIZE_MIN_PREFER_DYNAMIC. No need for a separate variant for MaxSizes here.
1357
+ #define EIGEN_SIZE_MAX(a,b) (((int)a == Dynamic || (int)b == Dynamic) ? Dynamic \
1358
+ : ((int)a >= (int)b) ? (int)a : (int)b)
1359
+
1360
+ #define EIGEN_LOGICAL_XOR(a,b) (((a) || (b)) && !((a) && (b)))
1361
+
1362
+ #define EIGEN_IMPLIES(a,b) (!(a) || (b))
1363
+
1364
+ #if EIGEN_HAS_BUILTIN(__builtin_expect) || EIGEN_COMP_GNUC
1365
+ #define EIGEN_PREDICT_FALSE(x) (__builtin_expect(x, false))
1366
+ #define EIGEN_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
1367
+ #else
1368
+ #define EIGEN_PREDICT_FALSE(x) (x)
1369
+ #define EIGEN_PREDICT_TRUE(x) (x)
1370
+ #endif
1371
+
1372
+ // the expression type of a standard coefficient wise binary operation
1373
+ #define EIGEN_CWISE_BINARY_RETURN_TYPE(LHS,RHS,OPNAME) \
1374
+ CwiseBinaryOp< \
1375
+ EIGEN_CAT(EIGEN_CAT(internal::scalar_,OPNAME),_op)< \
1376
+ typename internal::traits<LHS>::Scalar, \
1377
+ typename internal::traits<RHS>::Scalar \
1378
+ >, \
1379
+ const LHS, \
1380
+ const RHS \
1381
+ >
1382
+
1383
+ #define EIGEN_MAKE_CWISE_BINARY_OP(METHOD,OPNAME) \
1384
+ template<typename OtherDerived> \
1385
+ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const EIGEN_CWISE_BINARY_RETURN_TYPE(Derived,OtherDerived,OPNAME) \
1386
+ (METHOD)(const EIGEN_CURRENT_STORAGE_BASE_CLASS<OtherDerived> &other) const \
1387
+ { \
1388
+ return EIGEN_CWISE_BINARY_RETURN_TYPE(Derived,OtherDerived,OPNAME)(derived(), other.derived()); \
1389
+ }
1390
+
1391
+ #define EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,TYPEA,TYPEB) \
1392
+ (Eigen::internal::has_ReturnType<Eigen::ScalarBinaryOpTraits<TYPEA,TYPEB,EIGEN_CAT(EIGEN_CAT(Eigen::internal::scalar_,OPNAME),_op)<TYPEA,TYPEB> > >::value)
1393
+
1394
+ #define EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(EXPR,SCALAR,OPNAME) \
1395
+ CwiseBinaryOp<EIGEN_CAT(EIGEN_CAT(internal::scalar_,OPNAME),_op)<typename internal::traits<EXPR>::Scalar,SCALAR>, const EXPR, \
1396
+ const typename internal::plain_constant_type<EXPR,SCALAR>::type>
1397
+
1398
+ #define EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(SCALAR,EXPR,OPNAME) \
1399
+ CwiseBinaryOp<EIGEN_CAT(EIGEN_CAT(internal::scalar_,OPNAME),_op)<SCALAR,typename internal::traits<EXPR>::Scalar>, \
1400
+ const typename internal::plain_constant_type<EXPR,SCALAR>::type, const EXPR>
1401
+
1402
+ // Workaround for MSVC 2010 (see ML thread "patch with compile for for MSVC 2010")
1403
+ #if EIGEN_COMP_MSVC_STRICT && (EIGEN_COMP_MSVC_STRICT<=1600)
1404
+ #define EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(X) typename internal::enable_if<true,X>::type
1405
+ #else
1406
+ #define EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(X) X
1407
+ #endif
1408
+
1409
+ #define EIGEN_MAKE_SCALAR_BINARY_OP_ONTHERIGHT(METHOD,OPNAME) \
1410
+ template <typename T> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE \
1411
+ EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,typename internal::promote_scalar_arg<Scalar EIGEN_COMMA T EIGEN_COMMA EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,Scalar,T)>::type,OPNAME))\
1412
+ (METHOD)(const T& scalar) const { \
1413
+ typedef typename internal::promote_scalar_arg<Scalar,T,EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,Scalar,T)>::type PromotedT; \
1414
+ return EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,PromotedT,OPNAME)(derived(), \
1415
+ typename internal::plain_constant_type<Derived,PromotedT>::type(derived().rows(), derived().cols(), internal::scalar_constant_op<PromotedT>(scalar))); \
1416
+ }
1417
+
1418
+ #define EIGEN_MAKE_SCALAR_BINARY_OP_ONTHELEFT(METHOD,OPNAME) \
1419
+ template <typename T> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE friend \
1420
+ EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(typename internal::promote_scalar_arg<Scalar EIGEN_COMMA T EIGEN_COMMA EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,T,Scalar)>::type,Derived,OPNAME)) \
1421
+ (METHOD)(const T& scalar, const StorageBaseType& matrix) { \
1422
+ typedef typename internal::promote_scalar_arg<Scalar,T,EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,T,Scalar)>::type PromotedT; \
1423
+ return EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(PromotedT,Derived,OPNAME)( \
1424
+ typename internal::plain_constant_type<Derived,PromotedT>::type(matrix.derived().rows(), matrix.derived().cols(), internal::scalar_constant_op<PromotedT>(scalar)), matrix.derived()); \
1425
+ }
1426
+
1427
+ #define EIGEN_MAKE_SCALAR_BINARY_OP(METHOD,OPNAME) \
1428
+ EIGEN_MAKE_SCALAR_BINARY_OP_ONTHELEFT(METHOD,OPNAME) \
1429
+ EIGEN_MAKE_SCALAR_BINARY_OP_ONTHERIGHT(METHOD,OPNAME)
1430
+
1431
+
1432
+ #if (defined(_CPPUNWIND) || defined(__EXCEPTIONS)) && !defined(EIGEN_CUDA_ARCH) && !defined(EIGEN_EXCEPTIONS) && !defined(EIGEN_USE_SYCL) && !defined(EIGEN_HIP_DEVICE_COMPILE)
1433
+ #define EIGEN_EXCEPTIONS
1434
+ #endif
1435
+
1436
+
1437
+ #ifdef EIGEN_EXCEPTIONS
1438
+ # define EIGEN_THROW_X(X) throw X
1439
+ # define EIGEN_THROW throw
1440
+ # define EIGEN_TRY try
1441
+ # define EIGEN_CATCH(X) catch (X)
1442
+ #else
1443
+ # if defined(EIGEN_CUDA_ARCH)
1444
+ # define EIGEN_THROW_X(X) asm("trap;")
1445
+ # define EIGEN_THROW asm("trap;")
1446
+ # elif defined(EIGEN_HIP_DEVICE_COMPILE)
1447
+ # define EIGEN_THROW_X(X) asm("s_trap 0")
1448
+ # define EIGEN_THROW asm("s_trap 0")
1449
+ # else
1450
+ # define EIGEN_THROW_X(X) std::abort()
1451
+ # define EIGEN_THROW std::abort()
1452
+ # endif
1453
+ # define EIGEN_TRY if (true)
1454
+ # define EIGEN_CATCH(X) else
1455
+ #endif
1456
+
1457
+
1458
+ #if EIGEN_HAS_CXX11_NOEXCEPT
1459
+ # define EIGEN_INCLUDE_TYPE_TRAITS
1460
+ # define EIGEN_NOEXCEPT noexcept
1461
+ # define EIGEN_NOEXCEPT_IF(x) noexcept(x)
1462
+ # define EIGEN_NO_THROW noexcept(true)
1463
+ # define EIGEN_EXCEPTION_SPEC(X) noexcept(false)
1464
+ #else
1465
+ # define EIGEN_NOEXCEPT
1466
+ # define EIGEN_NOEXCEPT_IF(x)
1467
+ # define EIGEN_NO_THROW throw()
1468
+ # if EIGEN_COMP_MSVC || EIGEN_COMP_CXXVER>=17
1469
+ // MSVC does not support exception specifications (warning C4290),
1470
+ // and they are deprecated in c++11 anyway. This is even an error in c++17.
1471
+ # define EIGEN_EXCEPTION_SPEC(X) throw()
1472
+ # else
1473
+ # define EIGEN_EXCEPTION_SPEC(X) throw(X)
1474
+ # endif
1475
+ #endif
1476
+
1477
+ #if EIGEN_HAS_VARIADIC_TEMPLATES
1478
+ // The all function is used to enable a variadic version of eigen_assert which can take a parameter pack as its input.
1479
+ namespace Eigen {
1480
+ namespace internal {
1481
+
1482
+ inline bool all(){ return true; }
1483
+
1484
+ template<typename T, typename ...Ts>
1485
+ bool all(T t, Ts ... ts){ return t && all(ts...); }
1486
+
1487
+ }
1488
+ }
1489
+ #endif
1490
+
1491
+ #if EIGEN_HAS_CXX11_OVERRIDE_FINAL
1492
+ // provide override and final specifiers if they are available:
1493
+ # define EIGEN_OVERRIDE override
1494
+ # define EIGEN_FINAL final
1495
+ #else
1496
+ # define EIGEN_OVERRIDE
1497
+ # define EIGEN_FINAL
1498
+ #endif
1499
+
1500
+ // Wrapping #pragma unroll in a macro since it is required for SYCL
1501
+ #if defined(SYCL_DEVICE_ONLY)
1502
+ #if defined(_MSC_VER)
1503
+ #define EIGEN_UNROLL_LOOP __pragma(unroll)
1504
+ #else
1505
+ #define EIGEN_UNROLL_LOOP _Pragma("unroll")
1506
+ #endif
1507
+ #else
1508
+ #define EIGEN_UNROLL_LOOP
1509
+ #endif
1510
+
1511
+ #endif // EIGEN_MACROS_H