casadi 3.6.4__cp312-none-manylinux2014_i686.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 (1484) hide show
  1. casadi/__init__.py +92 -0
  2. casadi/_casadi.so +0 -0
  3. casadi/casadi-cli +0 -0
  4. casadi/casadi.py +50467 -0
  5. casadi/cbc +0 -0
  6. casadi/clp +0 -0
  7. casadi/cmake/alpaqa/alpaqaConfig.cmake +24 -0
  8. casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +70 -0
  9. casadi/cmake/alpaqa/alpaqaTargets-release.cmake +29 -0
  10. casadi/cmake/alpaqa/alpaqaTargets.cmake +131 -0
  11. casadi/cmake/casadi-config-version.cmake +11 -0
  12. casadi/cmake/casadi-config.cmake +8 -0
  13. casadi/cmake/casadi-targets-release.cmake +19 -0
  14. casadi/cmake/casadi-targets.cmake +107 -0
  15. casadi/cmake/highs/highs-config.cmake +24 -0
  16. casadi/cmake/highs/highs-targets-release.cmake +28 -0
  17. casadi/cmake/highs/highs-targets.cmake +114 -0
  18. casadi/cmake/osqp/osqp-config.cmake +1 -0
  19. casadi/cmake/osqp/osqp-targets-noconfig.cmake +29 -0
  20. casadi/cmake/osqp/osqp-targets.cmake +109 -0
  21. casadi/cmake/proxsuite/find-external/Simde/FindSimde.cmake +39 -0
  22. casadi/cmake/proxsuite/proxsuiteConfig.cmake +177 -0
  23. casadi/cmake/proxsuite/proxsuiteConfigVersion.cmake +70 -0
  24. casadi/cmake/proxsuite/proxsuiteTargets.cmake +115 -0
  25. casadi/cmake/qdldl/qdldl-config.cmake +1 -0
  26. casadi/cmake/qdldl/qdldl-targets-noconfig.cmake +29 -0
  27. casadi/cmake/qdldl/qdldl-targets.cmake +109 -0
  28. casadi/cmake/sleqp/sleqp-config-version.cmake +70 -0
  29. casadi/cmake/sleqp/sleqp-config.cmake +1 -0
  30. casadi/cmake/sleqp/sleqp-targets-release.cmake +20 -0
  31. casadi/cmake/sleqp/sleqp-targets.cmake +102 -0
  32. casadi/cmake/trlib/trlib-config-release.cmake +19 -0
  33. casadi/cmake/trlib/trlib-config-version.cmake +88 -0
  34. casadi/cmake/trlib/trlib-config.cmake +107 -0
  35. casadi/highs +0 -0
  36. casadi/include/casadi/casadi.hpp +31 -0
  37. casadi/include/casadi/casadi.i +4673 -0
  38. casadi/include/casadi/casadi_c.h +136 -0
  39. casadi/include/casadi/casadi_numpy.hpp +97 -0
  40. casadi/include/casadi/config.h +46 -0
  41. casadi/include/casadi/core/calculus.hpp +1750 -0
  42. casadi/include/casadi/core/callback.hpp +226 -0
  43. casadi/include/casadi/core/casadi_common.hpp +317 -0
  44. casadi/include/casadi/core/casadi_enum.hpp +90 -0
  45. casadi/include/casadi/core/casadi_export.h +42 -0
  46. casadi/include/casadi/core/casadi_interrupt.hpp +83 -0
  47. casadi/include/casadi/core/casadi_limits.hpp +104 -0
  48. casadi/include/casadi/core/casadi_logger.hpp +134 -0
  49. casadi/include/casadi/core/casadi_meta.hpp +107 -0
  50. casadi/include/casadi/core/casadi_misc.hpp +949 -0
  51. casadi/include/casadi/core/casadi_types.hpp +65 -0
  52. casadi/include/casadi/core/code_generator.hpp +918 -0
  53. casadi/include/casadi/core/conic.hpp +213 -0
  54. casadi/include/casadi/core/core.hpp +69 -0
  55. casadi/include/casadi/core/dae_builder.hpp +723 -0
  56. casadi/include/casadi/core/dm.hpp +87 -0
  57. casadi/include/casadi/core/dm_fwd.hpp +39 -0
  58. casadi/include/casadi/core/dple.hpp +138 -0
  59. casadi/include/casadi/core/exception.hpp +167 -0
  60. casadi/include/casadi/core/expm.hpp +84 -0
  61. casadi/include/casadi/core/external.hpp +70 -0
  62. casadi/include/casadi/core/fmu.hpp +224 -0
  63. casadi/include/casadi/core/function.hpp +1347 -0
  64. casadi/include/casadi/core/generic_expression.hpp +760 -0
  65. casadi/include/casadi/core/generic_matrix.hpp +1598 -0
  66. casadi/include/casadi/core/generic_type.hpp +287 -0
  67. casadi/include/casadi/core/global_options.hpp +95 -0
  68. casadi/include/casadi/core/im.hpp +52 -0
  69. casadi/include/casadi/core/im_fwd.hpp +35 -0
  70. casadi/include/casadi/core/importer.hpp +221 -0
  71. casadi/include/casadi/core/integration_tools.hpp +292 -0
  72. casadi/include/casadi/core/integrator.hpp +256 -0
  73. casadi/include/casadi/core/interpolant.hpp +163 -0
  74. casadi/include/casadi/core/linsol.hpp +171 -0
  75. casadi/include/casadi/core/matrix_decl.hpp +1337 -0
  76. casadi/include/casadi/core/matrix_fwd.hpp +37 -0
  77. casadi/include/casadi/core/mx.hpp +938 -0
  78. casadi/include/casadi/core/nlp_builder.hpp +162 -0
  79. casadi/include/casadi/core/nlp_tools.hpp +124 -0
  80. casadi/include/casadi/core/nlpsol.hpp +234 -0
  81. casadi/include/casadi/core/nonzeros.hpp +111 -0
  82. casadi/include/casadi/core/options.hpp +119 -0
  83. casadi/include/casadi/core/optistack.hpp +647 -0
  84. casadi/include/casadi/core/polynomial.hpp +126 -0
  85. casadi/include/casadi/core/printable.hpp +73 -0
  86. casadi/include/casadi/core/rootfinder.hpp +176 -0
  87. casadi/include/casadi/core/runtime/casadi_axpy.hpp +8 -0
  88. casadi/include/casadi/core/runtime/casadi_bfgs.hpp +49 -0
  89. casadi/include/casadi/core/runtime/casadi_bilin.hpp +42 -0
  90. casadi/include/casadi/core/runtime/casadi_bound_consistency.hpp +51 -0
  91. casadi/include/casadi/core/runtime/casadi_cache.hpp +59 -0
  92. casadi/include/casadi/core/runtime/casadi_clear.hpp +27 -0
  93. casadi/include/casadi/core/runtime/casadi_clip_max.hpp +33 -0
  94. casadi/include/casadi/core/runtime/casadi_clip_min.hpp +33 -0
  95. casadi/include/casadi/core/runtime/casadi_convexify.hpp +182 -0
  96. casadi/include/casadi/core/runtime/casadi_copy.hpp +31 -0
  97. casadi/include/casadi/core/runtime/casadi_cvx.hpp +463 -0
  98. casadi/include/casadi/core/runtime/casadi_de_boor.hpp +36 -0
  99. casadi/include/casadi/core/runtime/casadi_dense_lsqr.hpp +247 -0
  100. casadi/include/casadi/core/runtime/casadi_densify.hpp +48 -0
  101. casadi/include/casadi/core/runtime/casadi_dot.hpp +27 -0
  102. casadi/include/casadi/core/runtime/casadi_feasiblesqpmethod.hpp +208 -0
  103. casadi/include/casadi/core/runtime/casadi_file_slurp.hpp +32 -0
  104. casadi/include/casadi/core/runtime/casadi_fill.hpp +27 -0
  105. casadi/include/casadi/core/runtime/casadi_finite_diff.hpp +345 -0
  106. casadi/include/casadi/core/runtime/casadi_flip.hpp +33 -0
  107. casadi/include/casadi/core/runtime/casadi_getu.hpp +35 -0
  108. casadi/include/casadi/core/runtime/casadi_iamax.hpp +36 -0
  109. casadi/include/casadi/core/runtime/casadi_interpn.hpp +39 -0
  110. casadi/include/casadi/core/runtime/casadi_interpn_grad.hpp +72 -0
  111. casadi/include/casadi/core/runtime/casadi_interpn_interpolate.hpp +43 -0
  112. casadi/include/casadi/core/runtime/casadi_interpn_weights.hpp +39 -0
  113. casadi/include/casadi/core/runtime/casadi_ipqp.hpp +868 -0
  114. casadi/include/casadi/core/runtime/casadi_jac.hpp +186 -0
  115. casadi/include/casadi/core/runtime/casadi_kkt.hpp +67 -0
  116. casadi/include/casadi/core/runtime/casadi_kron.hpp +50 -0
  117. casadi/include/casadi/core/runtime/casadi_ldl.hpp +109 -0
  118. casadi/include/casadi/core/runtime/casadi_logsumexp.hpp +41 -0
  119. casadi/include/casadi/core/runtime/casadi_low.hpp +65 -0
  120. casadi/include/casadi/core/runtime/casadi_lsqr.hpp +247 -0
  121. casadi/include/casadi/core/runtime/casadi_masked_norm_inf.hpp +33 -0
  122. casadi/include/casadi/core/runtime/casadi_max_viol.hpp +37 -0
  123. casadi/include/casadi/core/runtime/casadi_mmax.hpp +28 -0
  124. casadi/include/casadi/core/runtime/casadi_mmin.hpp +29 -0
  125. casadi/include/casadi/core/runtime/casadi_mtimes.hpp +75 -0
  126. casadi/include/casadi/core/runtime/casadi_mv.hpp +46 -0
  127. casadi/include/casadi/core/runtime/casadi_mv_dense.hpp +39 -0
  128. casadi/include/casadi/core/runtime/casadi_nd_boor_dual_eval.hpp +127 -0
  129. casadi/include/casadi/core/runtime/casadi_nd_boor_eval.hpp +120 -0
  130. casadi/include/casadi/core/runtime/casadi_newton.hpp +66 -0
  131. casadi/include/casadi/core/runtime/casadi_nlp.hpp +149 -0
  132. casadi/include/casadi/core/runtime/casadi_norm_1.hpp +29 -0
  133. casadi/include/casadi/core/runtime/casadi_norm_2.hpp +24 -0
  134. casadi/include/casadi/core/runtime/casadi_norm_inf.hpp +28 -0
  135. casadi/include/casadi/core/runtime/casadi_norm_inf_mul.hpp +105 -0
  136. casadi/include/casadi/core/runtime/casadi_polyval.hpp +29 -0
  137. casadi/include/casadi/core/runtime/casadi_project.hpp +39 -0
  138. casadi/include/casadi/core/runtime/casadi_qp.hpp +86 -0
  139. casadi/include/casadi/core/runtime/casadi_qr.hpp +272 -0
  140. casadi/include/casadi/core/runtime/casadi_qrqp.hpp +1239 -0
  141. casadi/include/casadi/core/runtime/casadi_rank1.hpp +40 -0
  142. casadi/include/casadi/core/runtime/casadi_regularize.hpp +73 -0
  143. casadi/include/casadi/core/runtime/casadi_runtime.hpp +315 -0
  144. casadi/include/casadi/core/runtime/casadi_scal.hpp +26 -0
  145. casadi/include/casadi/core/runtime/casadi_sparsify.hpp +42 -0
  146. casadi/include/casadi/core/runtime/casadi_sparsity.hpp +24 -0
  147. casadi/include/casadi/core/runtime/casadi_sqpmethod.hpp +168 -0
  148. casadi/include/casadi/core/runtime/casadi_sum.hpp +31 -0
  149. casadi/include/casadi/core/runtime/casadi_sum_viol.hpp +37 -0
  150. casadi/include/casadi/core/runtime/casadi_swap.hpp +32 -0
  151. casadi/include/casadi/core/runtime/casadi_trans.hpp +35 -0
  152. casadi/include/casadi/core/runtime/casadi_tri_project.hpp +37 -0
  153. casadi/include/casadi/core/runtime/casadi_trilsolve.hpp +81 -0
  154. casadi/include/casadi/core/runtime/casadi_triusolve.hpp +81 -0
  155. casadi/include/casadi/core/runtime/casadi_vector_fmax.hpp +28 -0
  156. casadi/include/casadi/core/runtime/casadi_vector_fmin.hpp +28 -0
  157. casadi/include/casadi/core/runtime/casadi_vfmax.hpp +28 -0
  158. casadi/include/casadi/core/runtime/casadi_vfmin.hpp +28 -0
  159. casadi/include/casadi/core/runtime/shared.hpp +261 -0
  160. casadi/include/casadi/core/serializer.hpp +256 -0
  161. casadi/include/casadi/core/serializing_stream.hpp +329 -0
  162. casadi/include/casadi/core/shared_object.hpp +270 -0
  163. casadi/include/casadi/core/slice.hpp +149 -0
  164. casadi/include/casadi/core/sparsity.hpp +1486 -0
  165. casadi/include/casadi/core/sparsity_interface.hpp +745 -0
  166. casadi/include/casadi/core/submatrix.hpp +156 -0
  167. casadi/include/casadi/core/sx.hpp +203 -0
  168. casadi/include/casadi/core/sx_elem.hpp +351 -0
  169. casadi/include/casadi/core/sx_fwd.hpp +45 -0
  170. casadi/include/casadi/core/timing.hpp +98 -0
  171. casadi/include/casadi/core/xml_file.hpp +93 -0
  172. casadi/include/casadi/core/xml_node.hpp +207 -0
  173. casadi/include/casadi/doc.i +57768 -0
  174. casadi/include/casadi/doc_merged.i +35612 -0
  175. casadi/include/casadi/mem.h +310 -0
  176. casadi/include/casadi/valgrind-casadi.supp +511 -0
  177. casadi/include/casadi/valgrind-python.supp +1416 -0
  178. casadi/include/eigen3/Eigen/Cholesky +45 -0
  179. casadi/include/eigen3/Eigen/CholmodSupport +48 -0
  180. casadi/include/eigen3/Eigen/Core +384 -0
  181. casadi/include/eigen3/Eigen/Dense +7 -0
  182. casadi/include/eigen3/Eigen/Eigen +2 -0
  183. casadi/include/eigen3/Eigen/Eigenvalues +60 -0
  184. casadi/include/eigen3/Eigen/Geometry +59 -0
  185. casadi/include/eigen3/Eigen/Householder +29 -0
  186. casadi/include/eigen3/Eigen/IterativeLinearSolvers +48 -0
  187. casadi/include/eigen3/Eigen/Jacobi +32 -0
  188. casadi/include/eigen3/Eigen/KLUSupport +41 -0
  189. casadi/include/eigen3/Eigen/LU +47 -0
  190. casadi/include/eigen3/Eigen/MetisSupport +35 -0
  191. casadi/include/eigen3/Eigen/OrderingMethods +70 -0
  192. casadi/include/eigen3/Eigen/PaStiXSupport +49 -0
  193. casadi/include/eigen3/Eigen/PardisoSupport +35 -0
  194. casadi/include/eigen3/Eigen/QR +50 -0
  195. casadi/include/eigen3/Eigen/QtAlignedMalloc +39 -0
  196. casadi/include/eigen3/Eigen/SPQRSupport +34 -0
  197. casadi/include/eigen3/Eigen/SVD +50 -0
  198. casadi/include/eigen3/Eigen/Sparse +34 -0
  199. casadi/include/eigen3/Eigen/SparseCholesky +37 -0
  200. casadi/include/eigen3/Eigen/SparseCore +69 -0
  201. casadi/include/eigen3/Eigen/SparseLU +50 -0
  202. casadi/include/eigen3/Eigen/SparseQR +36 -0
  203. casadi/include/eigen3/Eigen/StdDeque +27 -0
  204. casadi/include/eigen3/Eigen/StdList +26 -0
  205. casadi/include/eigen3/Eigen/StdVector +27 -0
  206. casadi/include/eigen3/Eigen/SuperLUSupport +64 -0
  207. casadi/include/eigen3/Eigen/UmfPackSupport +40 -0
  208. casadi/include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
  209. casadi/include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
  210. casadi/include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  211. casadi/include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  212. casadi/include/eigen3/Eigen/src/Core/ArithmeticSequence.h +413 -0
  213. casadi/include/eigen3/Eigen/src/Core/Array.h +417 -0
  214. casadi/include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
  215. casadi/include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
  216. casadi/include/eigen3/Eigen/src/Core/Assign.h +90 -0
  217. casadi/include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
  218. casadi/include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
  219. casadi/include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
  220. casadi/include/eigen3/Eigen/src/Core/Block.h +448 -0
  221. casadi/include/eigen3/Eigen/src/Core/BooleanRedux.h +162 -0
  222. casadi/include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
  223. casadi/include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
  224. casadi/include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
  225. casadi/include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
  226. casadi/include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  227. casadi/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  228. casadi/include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  229. casadi/include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  230. casadi/include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
  231. casadi/include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
  232. casadi/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  233. casadi/include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
  234. casadi/include/eigen3/Eigen/src/Core/Diagonal.h +258 -0
  235. casadi/include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
  236. casadi/include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
  237. casadi/include/eigen3/Eigen/src/Core/Dot.h +318 -0
  238. casadi/include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
  239. casadi/include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  240. casadi/include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
  241. casadi/include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
  242. casadi/include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
  243. casadi/include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
  244. casadi/include/eigen3/Eigen/src/Core/IO.h +258 -0
  245. casadi/include/eigen3/Eigen/src/Core/IndexedView.h +237 -0
  246. casadi/include/eigen3/Eigen/src/Core/Inverse.h +117 -0
  247. casadi/include/eigen3/Eigen/src/Core/Map.h +171 -0
  248. casadi/include/eigen3/Eigen/src/Core/MapBase.h +310 -0
  249. casadi/include/eigen3/Eigen/src/Core/MathFunctions.h +2057 -0
  250. casadi/include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  251. casadi/include/eigen3/Eigen/src/Core/Matrix.h +565 -0
  252. casadi/include/eigen3/Eigen/src/Core/MatrixBase.h +547 -0
  253. casadi/include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
  254. casadi/include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
  255. casadi/include/eigen3/Eigen/src/Core/NumTraits.h +335 -0
  256. casadi/include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  257. casadi/include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
  258. casadi/include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
  259. casadi/include/eigen3/Eigen/src/Core/Product.h +191 -0
  260. casadi/include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
  261. casadi/include/eigen3/Eigen/src/Core/Random.h +218 -0
  262. casadi/include/eigen3/Eigen/src/Core/Redux.h +515 -0
  263. casadi/include/eigen3/Eigen/src/Core/Ref.h +381 -0
  264. casadi/include/eigen3/Eigen/src/Core/Replicate.h +142 -0
  265. casadi/include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
  266. casadi/include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
  267. casadi/include/eigen3/Eigen/src/Core/Reverse.h +217 -0
  268. casadi/include/eigen3/Eigen/src/Core/Select.h +164 -0
  269. casadi/include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
  270. casadi/include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  271. casadi/include/eigen3/Eigen/src/Core/Solve.h +188 -0
  272. casadi/include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
  273. casadi/include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
  274. casadi/include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
  275. casadi/include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
  276. casadi/include/eigen3/Eigen/src/Core/Stride.h +116 -0
  277. casadi/include/eigen3/Eigen/src/Core/Swap.h +68 -0
  278. casadi/include/eigen3/Eigen/src/Core/Transpose.h +464 -0
  279. casadi/include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
  280. casadi/include/eigen3/Eigen/src/Core/TriangularMatrix.h +1001 -0
  281. casadi/include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
  282. casadi/include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
  283. casadi/include/eigen3/Eigen/src/Core/Visitor.h +381 -0
  284. casadi/include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  285. casadi/include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  286. casadi/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  287. casadi/include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  288. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  289. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  290. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  291. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  292. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  293. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  294. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  295. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  296. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  297. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  298. casadi/include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  299. casadi/include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  300. casadi/include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  301. casadi/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  302. casadi/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  303. casadi/include/eigen3/Eigen/src/Core/arch/Default/Half.h +942 -0
  304. casadi/include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
  305. casadi/include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  306. casadi/include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  307. casadi/include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  308. casadi/include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  309. casadi/include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  310. casadi/include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  311. casadi/include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  312. casadi/include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  313. casadi/include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  314. casadi/include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  315. casadi/include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  316. casadi/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  317. casadi/include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  318. casadi/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  319. casadi/include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  320. casadi/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  321. casadi/include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  322. casadi/include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  323. casadi/include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  324. casadi/include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  325. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  326. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  327. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  328. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  329. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  330. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  331. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  332. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  333. casadi/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  334. casadi/include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  335. casadi/include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  336. casadi/include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
  337. casadi/include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  338. casadi/include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  339. casadi/include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  340. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  341. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  342. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  343. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  344. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  345. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  346. casadi/include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
  347. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  348. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  349. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  350. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  351. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  352. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  353. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  354. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  355. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  356. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  357. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  358. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  359. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  360. casadi/include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
  361. casadi/include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  362. casadi/include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
  363. casadi/include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  364. casadi/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  365. casadi/include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  366. casadi/include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
  367. casadi/include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
  368. casadi/include/eigen3/Eigen/src/Core/util/Macros.h +1464 -0
  369. casadi/include/eigen3/Eigen/src/Core/util/Memory.h +1163 -0
  370. casadi/include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
  371. casadi/include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
  372. casadi/include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  373. casadi/include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  374. casadi/include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
  375. casadi/include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  376. casadi/include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
  377. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  378. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  379. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  380. casadi/include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  381. casadi/include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  382. casadi/include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  383. casadi/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  384. casadi/include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  385. casadi/include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  386. casadi/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  387. casadi/include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  388. casadi/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  389. casadi/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  390. casadi/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  391. casadi/include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
  392. casadi/include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
  393. casadi/include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
  394. casadi/include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
  395. casadi/include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
  396. casadi/include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
  397. casadi/include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  398. casadi/include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
  399. casadi/include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
  400. casadi/include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
  401. casadi/include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
  402. casadi/include/eigen3/Eigen/src/Geometry/Transform.h +1563 -0
  403. casadi/include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
  404. casadi/include/eigen3/Eigen/src/Geometry/Umeyama.h +166 -0
  405. casadi/include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  406. casadi/include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
  407. casadi/include/eigen3/Eigen/src/Householder/Householder.h +176 -0
  408. casadi/include/eigen3/Eigen/src/Householder/HouseholderSequence.h +545 -0
  409. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  410. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  411. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
  412. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  413. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  414. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  415. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  416. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  417. casadi/include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
  418. casadi/include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  419. casadi/include/eigen3/Eigen/src/LU/Determinant.h +117 -0
  420. casadi/include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
  421. casadi/include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
  422. casadi/include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
  423. casadi/include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  424. casadi/include/eigen3/Eigen/src/LU/arch/InverseSize4.h +351 -0
  425. casadi/include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  426. casadi/include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
  427. casadi/include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  428. casadi/include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
  429. casadi/include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  430. casadi/include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  431. casadi/include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  432. casadi/include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  433. casadi/include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  434. casadi/include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  435. casadi/include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
  436. casadi/include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  437. casadi/include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  438. casadi/include/eigen3/Eigen/src/SVD/BDCSVD.h +1366 -0
  439. casadi/include/eigen3/Eigen/src/SVD/JacobiSVD.h +812 -0
  440. casadi/include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  441. casadi/include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
  442. casadi/include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  443. casadi/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  444. casadi/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  445. casadi/include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
  446. casadi/include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  447. casadi/include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  448. casadi/include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  449. casadi/include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
  450. casadi/include/eigen3/Eigen/src/SparseCore/SparseBlock.h +571 -0
  451. casadi/include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  452. casadi/include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  453. casadi/include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  454. casadi/include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  455. casadi/include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  456. casadi/include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  457. casadi/include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
  458. casadi/include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  459. casadi/include/eigen3/Eigen/src/SparseCore/SparseMap.h +305 -0
  460. casadi/include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  461. casadi/include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
  462. casadi/include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  463. casadi/include/eigen3/Eigen/src/SparseCore/SparseProduct.h +181 -0
  464. casadi/include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
  465. casadi/include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
  466. casadi/include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  467. casadi/include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  468. casadi/include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  469. casadi/include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  470. casadi/include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  471. casadi/include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
  472. casadi/include/eigen3/Eigen/src/SparseCore/SparseVector.h +478 -0
  473. casadi/include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
  474. casadi/include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  475. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU.h +923 -0
  476. casadi/include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  477. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  478. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  479. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
  480. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  481. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  482. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  483. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  484. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  485. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  486. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  487. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  488. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  489. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  490. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  491. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  492. casadi/include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
  493. casadi/include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
  494. casadi/include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
  495. casadi/include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
  496. casadi/include/eigen3/Eigen/src/StlSupport/details.h +84 -0
  497. casadi/include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  498. casadi/include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  499. casadi/include/eigen3/Eigen/src/misc/Image.h +82 -0
  500. casadi/include/eigen3/Eigen/src/misc/Kernel.h +79 -0
  501. casadi/include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
  502. casadi/include/eigen3/Eigen/src/misc/blas.h +440 -0
  503. casadi/include/eigen3/Eigen/src/misc/lapack.h +152 -0
  504. casadi/include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
  505. casadi/include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
  506. casadi/include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  507. casadi/include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  508. casadi/include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
  509. casadi/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  510. casadi/include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  511. casadi/include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  512. casadi/include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  513. casadi/include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  514. casadi/include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
  515. casadi/include/eigen3/signature_of_eigen3_matrix_library +1 -0
  516. casadi/include/eigen3/unsupported/Eigen/AdolcForward +159 -0
  517. casadi/include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
  518. casadi/include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
  519. casadi/include/eigen3/unsupported/Eigen/AutoDiff +46 -0
  520. casadi/include/eigen3/unsupported/Eigen/BVH +95 -0
  521. casadi/include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
  522. casadi/include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
  523. casadi/include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
  524. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
  525. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +329 -0
  526. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +247 -0
  527. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
  528. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
  529. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1093 -0
  530. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +518 -0
  531. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +377 -0
  532. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1023 -0
  533. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
  534. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
  535. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
  536. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
  537. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
  538. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
  539. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +456 -0
  540. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1132 -0
  541. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +544 -0
  542. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +214 -0
  543. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +347 -0
  544. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
  545. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
  546. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
  547. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
  548. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
  549. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
  550. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +236 -0
  551. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +490 -0
  552. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +236 -0
  553. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +983 -0
  554. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +703 -0
  555. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +388 -0
  556. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
  557. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +379 -0
  558. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +237 -0
  559. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
  560. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
  561. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +302 -0
  562. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
  563. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
  564. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
  565. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
  566. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +603 -0
  567. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +738 -0
  568. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +247 -0
  569. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
  570. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +263 -0
  571. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +216 -0
  572. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
  573. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
  574. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
  575. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1102 -0
  576. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +708 -0
  577. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +291 -0
  578. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +322 -0
  579. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +998 -0
  580. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
  581. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +966 -0
  582. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
  583. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
  584. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +465 -0
  585. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
  586. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
  587. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +471 -0
  588. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +161 -0
  589. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +346 -0
  590. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +303 -0
  591. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
  592. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
  593. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +629 -0
  594. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
  595. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
  596. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
  597. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
  598. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
  599. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
  600. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
  601. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
  602. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
  603. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
  604. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
  605. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
  606. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
  607. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +537 -0
  608. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
  609. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
  610. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
  611. casadi/include/eigen3/unsupported/Eigen/EulerAngles +43 -0
  612. casadi/include/eigen3/unsupported/Eigen/FFT +419 -0
  613. casadi/include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
  614. casadi/include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
  615. casadi/include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
  616. casadi/include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
  617. casadi/include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
  618. casadi/include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
  619. casadi/include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
  620. casadi/include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
  621. casadi/include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
  622. casadi/include/eigen3/unsupported/Eigen/Polynomials +137 -0
  623. casadi/include/eigen3/unsupported/Eigen/Skyline +39 -0
  624. casadi/include/eigen3/unsupported/Eigen/SparseExtra +54 -0
  625. casadi/include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
  626. casadi/include/eigen3/unsupported/Eigen/Splines +35 -0
  627. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
  628. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
  629. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
  630. casadi/include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
  631. casadi/include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
  632. casadi/include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
  633. casadi/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +355 -0
  634. casadi/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +305 -0
  635. casadi/include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
  636. casadi/include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
  637. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
  638. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
  639. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
  640. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
  641. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
  642. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
  643. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
  644. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
  645. casadi/include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
  646. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
  647. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
  648. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
  649. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
  650. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
  651. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
  652. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
  653. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
  654. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
  655. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
  656. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
  657. casadi/include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
  658. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
  659. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
  660. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
  661. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
  662. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
  663. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
  664. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
  665. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
  666. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
  667. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
  668. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
  669. casadi/include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
  670. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
  671. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +428 -0
  672. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
  673. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
  674. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
  675. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
  676. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
  677. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
  678. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
  679. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
  680. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
  681. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
  682. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
  683. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
  684. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
  685. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
  686. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
  687. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
  688. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
  689. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
  690. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
  691. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
  692. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
  693. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
  694. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
  695. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
  696. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2045 -0
  697. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
  698. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
  699. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
  700. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +46 -0
  701. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
  702. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
  703. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
  704. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
  705. casadi/include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
  706. casadi/include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
  707. casadi/include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
  708. casadi/include/highs/HConfig.h +20 -0
  709. casadi/include/highs/Highs.h +1459 -0
  710. casadi/include/highs/filereaderlp/builder.hpp +25 -0
  711. casadi/include/highs/filereaderlp/model.hpp +68 -0
  712. casadi/include/highs/filereaderlp/reader.hpp +10 -0
  713. casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
  714. casadi/include/highs/interfaces/highs_c_api.h +2107 -0
  715. casadi/include/highs/io/Filereader.h +47 -0
  716. casadi/include/highs/io/FilereaderEms.h +33 -0
  717. casadi/include/highs/io/FilereaderLp.h +54 -0
  718. casadi/include/highs/io/FilereaderMps.h +30 -0
  719. casadi/include/highs/io/HMPSIO.h +81 -0
  720. casadi/include/highs/io/HMpsFF.h +233 -0
  721. casadi/include/highs/io/HighsIO.h +99 -0
  722. casadi/include/highs/io/LoadOptions.h +27 -0
  723. casadi/include/highs/ipm/IpxWrapper.h +73 -0
  724. casadi/include/highs/lp_data/HConst.h +295 -0
  725. casadi/include/highs/lp_data/HStruct.h +124 -0
  726. casadi/include/highs/lp_data/HighsAnalysis.h +26 -0
  727. casadi/include/highs/lp_data/HighsCallback.h +33 -0
  728. casadi/include/highs/lp_data/HighsCallbackStruct.h +36 -0
  729. casadi/include/highs/lp_data/HighsDebug.h +37 -0
  730. casadi/include/highs/lp_data/HighsInfo.h +304 -0
  731. casadi/include/highs/lp_data/HighsInfoDebug.h +30 -0
  732. casadi/include/highs/lp_data/HighsLp.h +85 -0
  733. casadi/include/highs/lp_data/HighsLpSolverObject.h +48 -0
  734. casadi/include/highs/lp_data/HighsLpUtils.h +266 -0
  735. casadi/include/highs/lp_data/HighsModelUtils.h +109 -0
  736. casadi/include/highs/lp_data/HighsOptions.h +1130 -0
  737. casadi/include/highs/lp_data/HighsRanging.h +46 -0
  738. casadi/include/highs/lp_data/HighsRuntimeOptions.h +276 -0
  739. casadi/include/highs/lp_data/HighsSolution.h +137 -0
  740. casadi/include/highs/lp_data/HighsSolutionDebug.h +90 -0
  741. casadi/include/highs/lp_data/HighsSolve.h +24 -0
  742. casadi/include/highs/lp_data/HighsStatus.h +32 -0
  743. casadi/include/highs/mip/HighsCliqueTable.h +318 -0
  744. casadi/include/highs/mip/HighsConflictPool.h +112 -0
  745. casadi/include/highs/mip/HighsCutGeneration.h +96 -0
  746. casadi/include/highs/mip/HighsCutPool.h +171 -0
  747. casadi/include/highs/mip/HighsDebugSol.h +142 -0
  748. casadi/include/highs/mip/HighsDomain.h +633 -0
  749. casadi/include/highs/mip/HighsDomainChange.h +51 -0
  750. casadi/include/highs/mip/HighsDynamicRowMatrix.h +105 -0
  751. casadi/include/highs/mip/HighsGFkSolve.h +441 -0
  752. casadi/include/highs/mip/HighsImplications.h +146 -0
  753. casadi/include/highs/mip/HighsLpAggregator.h +53 -0
  754. casadi/include/highs/mip/HighsLpRelaxation.h +355 -0
  755. casadi/include/highs/mip/HighsMipSolver.h +103 -0
  756. casadi/include/highs/mip/HighsMipSolverData.h +193 -0
  757. casadi/include/highs/mip/HighsModkSeparator.h +63 -0
  758. casadi/include/highs/mip/HighsNodeQueue.h +312 -0
  759. casadi/include/highs/mip/HighsObjectiveFunction.h +74 -0
  760. casadi/include/highs/mip/HighsPathSeparator.h +42 -0
  761. casadi/include/highs/mip/HighsPrimalHeuristics.h +68 -0
  762. casadi/include/highs/mip/HighsPseudocost.h +351 -0
  763. casadi/include/highs/mip/HighsRedcostFixing.h +45 -0
  764. casadi/include/highs/mip/HighsSearch.h +243 -0
  765. casadi/include/highs/mip/HighsSeparation.h +44 -0
  766. casadi/include/highs/mip/HighsSeparator.h +56 -0
  767. casadi/include/highs/mip/HighsTableauSeparator.h +37 -0
  768. casadi/include/highs/mip/HighsTransformedLp.h +66 -0
  769. casadi/include/highs/model/HighsHessian.h +49 -0
  770. casadi/include/highs/model/HighsHessianUtils.h +47 -0
  771. casadi/include/highs/model/HighsModel.h +43 -0
  772. casadi/include/highs/parallel/HighsBinarySemaphore.h +113 -0
  773. casadi/include/highs/parallel/HighsCacheAlign.h +87 -0
  774. casadi/include/highs/parallel/HighsCombinable.h +121 -0
  775. casadi/include/highs/parallel/HighsMutex.h +128 -0
  776. casadi/include/highs/parallel/HighsParallel.h +128 -0
  777. casadi/include/highs/parallel/HighsRaceTimer.h +43 -0
  778. casadi/include/highs/parallel/HighsSchedulerConstants.h +24 -0
  779. casadi/include/highs/parallel/HighsSpinMutex.h +53 -0
  780. casadi/include/highs/parallel/HighsSplitDeque.h +583 -0
  781. casadi/include/highs/parallel/HighsTask.h +176 -0
  782. casadi/include/highs/parallel/HighsTaskExecutor.h +209 -0
  783. casadi/include/highs/presolve/HPresolve.h +352 -0
  784. casadi/include/highs/presolve/HPresolveAnalysis.h +54 -0
  785. casadi/include/highs/presolve/HighsPostsolveStack.h +883 -0
  786. casadi/include/highs/presolve/HighsSymmetry.h +283 -0
  787. casadi/include/highs/presolve/ICrash.h +121 -0
  788. casadi/include/highs/presolve/ICrashUtil.h +65 -0
  789. casadi/include/highs/presolve/ICrashX.h +26 -0
  790. casadi/include/highs/presolve/PresolveComponent.h +93 -0
  791. casadi/include/highs/qpsolver/a_asm.hpp +56 -0
  792. casadi/include/highs/qpsolver/a_quass.hpp +12 -0
  793. casadi/include/highs/qpsolver/perturbation.hpp +8 -0
  794. casadi/include/highs/qpsolver/quass.hpp +20 -0
  795. casadi/include/highs/qpsolver/scaling.hpp +8 -0
  796. casadi/include/highs/qpsolver/vector.hpp +235 -0
  797. casadi/include/highs/simplex/HApp.h +422 -0
  798. casadi/include/highs/simplex/HEkk.h +369 -0
  799. casadi/include/highs/simplex/HEkkDual.h +515 -0
  800. casadi/include/highs/simplex/HEkkDualRHS.h +138 -0
  801. casadi/include/highs/simplex/HEkkDualRow.h +204 -0
  802. casadi/include/highs/simplex/HEkkPrimal.h +190 -0
  803. casadi/include/highs/simplex/HSimplex.h +47 -0
  804. casadi/include/highs/simplex/HSimplexDebug.h +51 -0
  805. casadi/include/highs/simplex/HSimplexNla.h +184 -0
  806. casadi/include/highs/simplex/HSimplexReport.h +24 -0
  807. casadi/include/highs/simplex/HighsSimplexAnalysis.h +375 -0
  808. casadi/include/highs/simplex/SimplexConst.h +274 -0
  809. casadi/include/highs/simplex/SimplexStruct.h +264 -0
  810. casadi/include/highs/simplex/SimplexTimer.h +427 -0
  811. casadi/include/highs/test/DevKkt.h +146 -0
  812. casadi/include/highs/test/KktCh2.h +82 -0
  813. casadi/include/highs/util/FactorTimer.h +224 -0
  814. casadi/include/highs/util/HFactor.h +558 -0
  815. casadi/include/highs/util/HFactorConst.h +84 -0
  816. casadi/include/highs/util/HFactorDebug.h +58 -0
  817. casadi/include/highs/util/HSet.h +92 -0
  818. casadi/include/highs/util/HVector.h +25 -0
  819. casadi/include/highs/util/HVectorBase.h +105 -0
  820. casadi/include/highs/util/HighsCDouble.h +310 -0
  821. casadi/include/highs/util/HighsComponent.h +56 -0
  822. casadi/include/highs/util/HighsDataStack.h +86 -0
  823. casadi/include/highs/util/HighsDisjointSets.h +110 -0
  824. casadi/include/highs/util/HighsHash.h +1270 -0
  825. casadi/include/highs/util/HighsHashTree.h +1443 -0
  826. casadi/include/highs/util/HighsInt.h +39 -0
  827. casadi/include/highs/util/HighsIntegers.h +216 -0
  828. casadi/include/highs/util/HighsLinearSumBounds.h +160 -0
  829. casadi/include/highs/util/HighsMatrixPic.h +40 -0
  830. casadi/include/highs/util/HighsMatrixSlice.h +561 -0
  831. casadi/include/highs/util/HighsMatrixUtils.h +57 -0
  832. casadi/include/highs/util/HighsRandom.h +233 -0
  833. casadi/include/highs/util/HighsRbTree.h +455 -0
  834. casadi/include/highs/util/HighsSort.h +134 -0
  835. casadi/include/highs/util/HighsSparseMatrix.h +144 -0
  836. casadi/include/highs/util/HighsSparseVectorSum.h +98 -0
  837. casadi/include/highs/util/HighsSplay.h +138 -0
  838. casadi/include/highs/util/HighsTimer.h +334 -0
  839. casadi/include/highs/util/HighsUtils.h +203 -0
  840. casadi/include/highs/util/stringutil.h +39 -0
  841. casadi/include/licenses/FMI-Standard-2.0.2/LICENSE.txt +473 -0
  842. casadi/include/licenses/FMI-Standard-3.0/LICENSE.txt +464 -0
  843. casadi/include/licenses/alpaqa-external/LICENSE +165 -0
  844. casadi/include/licenses/bonmin-external/Bonmin/LICENSE +87 -0
  845. casadi/include/licenses/bonmin-external/LICENSE +3 -0
  846. casadi/include/licenses/casadi/LICENSE/LICENSE.txt +165 -0
  847. casadi/include/licenses/casadi-sundials/LICENSE +64 -0
  848. casadi/include/licenses/casadi-sundials/cvodes/LICENSE +60 -0
  849. casadi/include/licenses/casadi-sundials/idas/LICENSE +59 -0
  850. casadi/include/licenses/casadi-sundials/kinsol/LICENSE +59 -0
  851. casadi/include/licenses/casadi-sundials/sundials/LICENSE +67 -0
  852. casadi/include/licenses/cbc-external/Cbc/LICENSE +239 -0
  853. casadi/include/licenses/cbc-external/LICENSE +245 -0
  854. casadi/include/licenses/cgl-external/Cgl/LICENSE +239 -0
  855. casadi/include/licenses/cgl-external/LICENSE +245 -0
  856. casadi/include/licenses/clp-external/Clp/LICENSE +239 -0
  857. casadi/include/licenses/clp-external/LICENSE +245 -0
  858. casadi/include/licenses/coinutils-external/CoinUtils/LICENSE +239 -0
  859. casadi/include/licenses/coinutils-external/LICENSE +245 -0
  860. casadi/include/licenses/highs-external/LICENSE +21 -0
  861. casadi/include/licenses/highs-external/extern/filereaderlp/LICENSE +19 -0
  862. casadi/include/licenses/ipopt-external/LICENSE +260 -0
  863. casadi/include/licenses/metis-external/LICENSE +87 -0
  864. casadi/include/licenses/metis-external/metis-4.0/LICENSE +18 -0
  865. casadi/include/licenses/mockups-external/LICENSE +21 -0
  866. casadi/include/licenses/mumps-external/LICENSE +87 -0
  867. casadi/include/licenses/mumps-external/MUMPS/LICENSE +50 -0
  868. casadi/include/licenses/openblas-external/LICENSE +29 -0
  869. casadi/include/licenses/openblas-external/ctest/LICENSE +23 -0
  870. casadi/include/licenses/openblas-external/lapack-netlib/LAPACKE/LICENSE +26 -0
  871. casadi/include/licenses/openblas-external/lapack-netlib/LICENSE +48 -0
  872. casadi/include/licenses/openblas-external/reference/LICENSE +23 -0
  873. casadi/include/licenses/openblas-external/relapack/LICENSE +22 -0
  874. casadi/include/licenses/openblas-external/test/LICENSE +23 -0
  875. casadi/include/licenses/osi-external/LICENSE +245 -0
  876. casadi/include/licenses/osi-external/Osi/LICENSE +239 -0
  877. casadi/include/licenses/osqp-external/LICENSE +201 -0
  878. casadi/include/licenses/osqp-external/lin_sys/direct/qdldl/amd/LICENSE +36 -0
  879. casadi/include/licenses/osqp-external/lin_sys/direct/qdldl/qdldl_sources/LICENSE +201 -0
  880. casadi/include/licenses/proxqp-external/LICENSE +25 -0
  881. casadi/include/licenses/proxqp-external/bindings/python/external/pybind11/LICENSE +29 -0
  882. casadi/include/licenses/proxqp-external/cmake-module/LICENSE +4 -0
  883. casadi/include/licenses/proxqp-external/cmake-module/doxygen/MathJax/LICENSE +202 -0
  884. casadi/include/licenses/proxqp-external/external/cereal/LICENSE +24 -0
  885. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/LICENSE +21 -0
  886. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/rapidjson/LICENSE +13 -0
  887. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/rapidjson/msinttypes/LICENSE +29 -0
  888. casadi/include/licenses/qpOASES/LICENSE.txt +503 -0
  889. casadi/include/licenses/sleqp-external/LICENSE +165 -0
  890. casadi/include/licenses/superscs-external/LICENSE.txt +24 -0
  891. casadi/include/licenses/tinyxml2-9.0.0/LICENSE.txt +18 -0
  892. casadi/include/licenses/trlib-external/LICENSE +21 -0
  893. casadi/include/osqp/auxil.h +181 -0
  894. casadi/include/osqp/constants.h +129 -0
  895. casadi/include/osqp/cs.h +180 -0
  896. casadi/include/osqp/ctrlc.h +56 -0
  897. casadi/include/osqp/error.h +38 -0
  898. casadi/include/osqp/glob_opts.h +167 -0
  899. casadi/include/osqp/lin_alg.h +216 -0
  900. casadi/include/osqp/lin_sys.h +54 -0
  901. casadi/include/osqp/osqp.h +430 -0
  902. casadi/include/osqp/osqp_configure.h +49 -0
  903. casadi/include/osqp/polish.h +25 -0
  904. casadi/include/osqp/proj.h +37 -0
  905. casadi/include/osqp/scaling.h +44 -0
  906. casadi/include/osqp/types.h +326 -0
  907. casadi/include/osqp/util.h +222 -0
  908. casadi/include/proxsuite/config.hpp +68 -0
  909. casadi/include/proxsuite/deprecated.hpp +56 -0
  910. casadi/include/proxsuite/fwd.hpp +52 -0
  911. casadi/include/proxsuite/helpers/common.hpp +70 -0
  912. casadi/include/proxsuite/helpers/instruction-set.hpp +275 -0
  913. casadi/include/proxsuite/helpers/optional.hpp +46 -0
  914. casadi/include/proxsuite/helpers/tl-optional.hpp +2472 -0
  915. casadi/include/proxsuite/helpers/version.hpp +39 -0
  916. casadi/include/proxsuite/linalg/dense/core.hpp +863 -0
  917. casadi/include/proxsuite/linalg/dense/factorize.hpp +375 -0
  918. casadi/include/proxsuite/linalg/dense/ldlt.hpp +817 -0
  919. casadi/include/proxsuite/linalg/dense/modify.hpp +333 -0
  920. casadi/include/proxsuite/linalg/dense/solve.hpp +38 -0
  921. casadi/include/proxsuite/linalg/dense/update.hpp +330 -0
  922. casadi/include/proxsuite/linalg/sparse/core.hpp +531 -0
  923. casadi/include/proxsuite/linalg/sparse/factorize.hpp +1303 -0
  924. casadi/include/proxsuite/linalg/sparse/rowmod.hpp +443 -0
  925. casadi/include/proxsuite/linalg/sparse/update.hpp +348 -0
  926. casadi/include/proxsuite/linalg/veg/internal/assert_impl.hpp +20 -0
  927. casadi/include/proxsuite/linalg/veg/internal/collection_algo.hpp +93 -0
  928. casadi/include/proxsuite/linalg/veg/internal/dbg.hpp +15 -0
  929. casadi/include/proxsuite/linalg/veg/internal/delete_special_members.hpp +77 -0
  930. casadi/include/proxsuite/linalg/veg/internal/dyn_index.hpp +292 -0
  931. casadi/include/proxsuite/linalg/veg/internal/epilogue.hpp +31 -0
  932. casadi/include/proxsuite/linalg/veg/internal/external/hedley.ext.hpp +2074 -0
  933. casadi/include/proxsuite/linalg/veg/internal/external/unhedley.ext.hpp +148 -0
  934. casadi/include/proxsuite/linalg/veg/internal/fix_index.hpp +339 -0
  935. casadi/include/proxsuite/linalg/veg/internal/has_asan.hpp +17 -0
  936. casadi/include/proxsuite/linalg/veg/internal/integer_seq.hpp +248 -0
  937. casadi/include/proxsuite/linalg/veg/internal/macros.hpp +1312 -0
  938. casadi/include/proxsuite/linalg/veg/internal/narrow.hpp +46 -0
  939. casadi/include/proxsuite/linalg/veg/internal/preprocessor.hpp +434 -0
  940. casadi/include/proxsuite/linalg/veg/internal/prologue.hpp +157 -0
  941. casadi/include/proxsuite/linalg/veg/internal/std.hpp +13 -0
  942. casadi/include/proxsuite/linalg/veg/internal/terminate.hpp +22 -0
  943. casadi/include/proxsuite/linalg/veg/internal/typedefs.hpp +58 -0
  944. casadi/include/proxsuite/linalg/veg/memory/address.hpp +97 -0
  945. casadi/include/proxsuite/linalg/veg/memory/alloc.hpp +352 -0
  946. casadi/include/proxsuite/linalg/veg/memory/dynamic_stack.hpp +504 -0
  947. casadi/include/proxsuite/linalg/veg/memory/placement.hpp +202 -0
  948. casadi/include/proxsuite/linalg/veg/memory/stack_alloc.hpp +239 -0
  949. casadi/include/proxsuite/linalg/veg/ref.hpp +148 -0
  950. casadi/include/proxsuite/linalg/veg/slice.hpp +240 -0
  951. casadi/include/proxsuite/linalg/veg/tuple.hpp +876 -0
  952. casadi/include/proxsuite/linalg/veg/type_traits/alloc.hpp +169 -0
  953. casadi/include/proxsuite/linalg/veg/type_traits/assignable.hpp +53 -0
  954. casadi/include/proxsuite/linalg/veg/type_traits/constructible.hpp +217 -0
  955. casadi/include/proxsuite/linalg/veg/type_traits/core.hpp +298 -0
  956. casadi/include/proxsuite/linalg/veg/type_traits/invocable.hpp +47 -0
  957. casadi/include/proxsuite/linalg/veg/type_traits/primitives.hpp +43 -0
  958. casadi/include/proxsuite/linalg/veg/type_traits/tags.hpp +47 -0
  959. casadi/include/proxsuite/linalg/veg/util/assert.hpp +48 -0
  960. casadi/include/proxsuite/linalg/veg/util/dbg.hpp +6 -0
  961. casadi/include/proxsuite/linalg/veg/util/defer.hpp +57 -0
  962. casadi/include/proxsuite/linalg/veg/util/dynstack_alloc.hpp +19 -0
  963. casadi/include/proxsuite/linalg/veg/util/get.hpp +153 -0
  964. casadi/include/proxsuite/linalg/veg/util/index.hpp +6 -0
  965. casadi/include/proxsuite/linalg/veg/util/unreachable.hpp +41 -0
  966. casadi/include/proxsuite/linalg/veg/vec.hpp +1034 -0
  967. casadi/include/proxsuite/proxqp/dense/dense.hpp +10 -0
  968. casadi/include/proxsuite/proxqp/dense/fwd.hpp +55 -0
  969. casadi/include/proxsuite/proxqp/dense/helpers.hpp +520 -0
  970. casadi/include/proxsuite/proxqp/dense/linesearch.hpp +517 -0
  971. casadi/include/proxsuite/proxqp/dense/model.hpp +147 -0
  972. casadi/include/proxsuite/proxqp/dense/preconditioner/identity.hpp +113 -0
  973. casadi/include/proxsuite/proxqp/dense/preconditioner/ruiz.hpp +571 -0
  974. casadi/include/proxsuite/proxqp/dense/solver.hpp +1330 -0
  975. casadi/include/proxsuite/proxqp/dense/utils.hpp +415 -0
  976. casadi/include/proxsuite/proxqp/dense/views.hpp +1466 -0
  977. casadi/include/proxsuite/proxqp/dense/workspace.hpp +264 -0
  978. casadi/include/proxsuite/proxqp/dense/wrapper.hpp +491 -0
  979. casadi/include/proxsuite/proxqp/results.hpp +212 -0
  980. casadi/include/proxsuite/proxqp/settings.hpp +302 -0
  981. casadi/include/proxsuite/proxqp/sparse/fwd.hpp +58 -0
  982. casadi/include/proxsuite/proxqp/sparse/helpers.hpp +309 -0
  983. casadi/include/proxsuite/proxqp/sparse/model.hpp +228 -0
  984. casadi/include/proxsuite/proxqp/sparse/preconditioner/identity.hpp +64 -0
  985. casadi/include/proxsuite/proxqp/sparse/preconditioner/ruiz.hpp +569 -0
  986. casadi/include/proxsuite/proxqp/sparse/solver.hpp +1441 -0
  987. casadi/include/proxsuite/proxqp/sparse/sparse.hpp +10 -0
  988. casadi/include/proxsuite/proxqp/sparse/utils.hpp +815 -0
  989. casadi/include/proxsuite/proxqp/sparse/views.hpp +63 -0
  990. casadi/include/proxsuite/proxqp/sparse/workspace.hpp +790 -0
  991. casadi/include/proxsuite/proxqp/sparse/wrapper.hpp +772 -0
  992. casadi/include/proxsuite/proxqp/status.hpp +46 -0
  993. casadi/include/proxsuite/proxqp/timings.hpp +101 -0
  994. casadi/include/proxsuite/proxqp/utils/prints.hpp +47 -0
  995. casadi/include/proxsuite/proxqp/utils/random_qp_problems.hpp +669 -0
  996. casadi/include/proxsuite/serialization/archive.hpp +231 -0
  997. casadi/include/proxsuite/serialization/eigen.hpp +107 -0
  998. casadi/include/proxsuite/serialization/model.hpp +34 -0
  999. casadi/include/proxsuite/serialization/results.hpp +74 -0
  1000. casadi/include/proxsuite/serialization/settings.hpp +60 -0
  1001. casadi/include/proxsuite/serialization/wrapper.hpp +24 -0
  1002. casadi/include/proxsuite/warning.hpp +35 -0
  1003. casadi/include/simde/arm/neon/aba.h +208 -0
  1004. casadi/include/simde/arm/neon/abd.h +384 -0
  1005. casadi/include/simde/arm/neon/abdl.h +147 -0
  1006. casadi/include/simde/arm/neon/abs.h +408 -0
  1007. casadi/include/simde/arm/neon/add.h +681 -0
  1008. casadi/include/simde/arm/neon/addl.h +127 -0
  1009. casadi/include/simde/arm/neon/addl_high.h +127 -0
  1010. casadi/include/simde/arm/neon/addlv.h +317 -0
  1011. casadi/include/simde/arm/neon/addv.h +447 -0
  1012. casadi/include/simde/arm/neon/addw.h +222 -0
  1013. casadi/include/simde/arm/neon/addw_high.h +193 -0
  1014. casadi/include/simde/arm/neon/and.h +552 -0
  1015. casadi/include/simde/arm/neon/bic.h +472 -0
  1016. casadi/include/simde/arm/neon/bsl.h +448 -0
  1017. casadi/include/simde/arm/neon/cagt.h +168 -0
  1018. casadi/include/simde/arm/neon/ceq.h +711 -0
  1019. casadi/include/simde/arm/neon/ceqz.h +335 -0
  1020. casadi/include/simde/arm/neon/cge.h +677 -0
  1021. casadi/include/simde/arm/neon/cgez.h +378 -0
  1022. casadi/include/simde/arm/neon/cgt.h +686 -0
  1023. casadi/include/simde/arm/neon/cgtz.h +380 -0
  1024. casadi/include/simde/arm/neon/cle.h +677 -0
  1025. casadi/include/simde/arm/neon/clez.h +378 -0
  1026. casadi/include/simde/arm/neon/cls.h +148 -0
  1027. casadi/include/simde/arm/neon/clt.h +679 -0
  1028. casadi/include/simde/arm/neon/cltz.h +263 -0
  1029. casadi/include/simde/arm/neon/clz.h +423 -0
  1030. casadi/include/simde/arm/neon/cnt.h +145 -0
  1031. casadi/include/simde/arm/neon/combine.h +343 -0
  1032. casadi/include/simde/arm/neon/create.h +186 -0
  1033. casadi/include/simde/arm/neon/cvt.h +492 -0
  1034. casadi/include/simde/arm/neon/dot.h +171 -0
  1035. casadi/include/simde/arm/neon/dot_lane.h +196 -0
  1036. casadi/include/simde/arm/neon/dup_lane.h +702 -0
  1037. casadi/include/simde/arm/neon/dup_n.h +534 -0
  1038. casadi/include/simde/arm/neon/eor.h +552 -0
  1039. casadi/include/simde/arm/neon/ext.h +887 -0
  1040. casadi/include/simde/arm/neon/get_high.h +260 -0
  1041. casadi/include/simde/arm/neon/get_lane.h +499 -0
  1042. casadi/include/simde/arm/neon/get_low.h +276 -0
  1043. casadi/include/simde/arm/neon/hadd.h +287 -0
  1044. casadi/include/simde/arm/neon/hsub.h +287 -0
  1045. casadi/include/simde/arm/neon/ld1.h +399 -0
  1046. casadi/include/simde/arm/neon/ld3.h +609 -0
  1047. casadi/include/simde/arm/neon/ld4.h +448 -0
  1048. casadi/include/simde/arm/neon/max.h +614 -0
  1049. casadi/include/simde/arm/neon/maxnm.h +215 -0
  1050. casadi/include/simde/arm/neon/maxv.h +400 -0
  1051. casadi/include/simde/arm/neon/min.h +660 -0
  1052. casadi/include/simde/arm/neon/minnm.h +215 -0
  1053. casadi/include/simde/arm/neon/minv.h +424 -0
  1054. casadi/include/simde/arm/neon/mla.h +530 -0
  1055. casadi/include/simde/arm/neon/mla_n.h +333 -0
  1056. casadi/include/simde/arm/neon/mlal.h +156 -0
  1057. casadi/include/simde/arm/neon/mlal_high.h +156 -0
  1058. casadi/include/simde/arm/neon/mlal_n.h +128 -0
  1059. casadi/include/simde/arm/neon/mls.h +264 -0
  1060. casadi/include/simde/arm/neon/mlsl.h +124 -0
  1061. casadi/include/simde/arm/neon/mlsl_high.h +124 -0
  1062. casadi/include/simde/arm/neon/mlsl_n.h +96 -0
  1063. casadi/include/simde/arm/neon/movl.h +208 -0
  1064. casadi/include/simde/arm/neon/movl_high.h +126 -0
  1065. casadi/include/simde/arm/neon/movn.h +195 -0
  1066. casadi/include/simde/arm/neon/movn_high.h +125 -0
  1067. casadi/include/simde/arm/neon/mul.h +594 -0
  1068. casadi/include/simde/arm/neon/mul_lane.h +472 -0
  1069. casadi/include/simde/arm/neon/mul_n.h +383 -0
  1070. casadi/include/simde/arm/neon/mull.h +236 -0
  1071. casadi/include/simde/arm/neon/mull_high.h +125 -0
  1072. casadi/include/simde/arm/neon/mull_n.h +158 -0
  1073. casadi/include/simde/arm/neon/mvn.h +426 -0
  1074. casadi/include/simde/arm/neon/neg.h +393 -0
  1075. casadi/include/simde/arm/neon/orn.h +505 -0
  1076. casadi/include/simde/arm/neon/orr.h +552 -0
  1077. casadi/include/simde/arm/neon/padal.h +211 -0
  1078. casadi/include/simde/arm/neon/padd.h +293 -0
  1079. casadi/include/simde/arm/neon/paddl.h +239 -0
  1080. casadi/include/simde/arm/neon/pmax.h +253 -0
  1081. casadi/include/simde/arm/neon/pmin.h +260 -0
  1082. casadi/include/simde/arm/neon/qabs.h +281 -0
  1083. casadi/include/simde/arm/neon/qadd.h +553 -0
  1084. casadi/include/simde/arm/neon/qdmulh.h +125 -0
  1085. casadi/include/simde/arm/neon/qdmull.h +125 -0
  1086. casadi/include/simde/arm/neon/qmovn.h +273 -0
  1087. casadi/include/simde/arm/neon/qmovn_high.h +127 -0
  1088. casadi/include/simde/arm/neon/qmovun.h +159 -0
  1089. casadi/include/simde/arm/neon/qneg.h +301 -0
  1090. casadi/include/simde/arm/neon/qrdmulh.h +165 -0
  1091. casadi/include/simde/arm/neon/qrdmulh_n.h +136 -0
  1092. casadi/include/simde/arm/neon/qshl.h +732 -0
  1093. casadi/include/simde/arm/neon/qsub.h +549 -0
  1094. casadi/include/simde/arm/neon/qtbl.h +455 -0
  1095. casadi/include/simde/arm/neon/qtbx.h +470 -0
  1096. casadi/include/simde/arm/neon/rbit.h +165 -0
  1097. casadi/include/simde/arm/neon/reinterpret.h +3101 -0
  1098. casadi/include/simde/arm/neon/rev16.h +137 -0
  1099. casadi/include/simde/arm/neon/rev32.h +235 -0
  1100. casadi/include/simde/arm/neon/rev64.h +358 -0
  1101. casadi/include/simde/arm/neon/rhadd.h +406 -0
  1102. casadi/include/simde/arm/neon/rnd.h +143 -0
  1103. casadi/include/simde/arm/neon/rndi.h +135 -0
  1104. casadi/include/simde/arm/neon/rndm.h +143 -0
  1105. casadi/include/simde/arm/neon/rndn.h +135 -0
  1106. casadi/include/simde/arm/neon/rndp.h +143 -0
  1107. casadi/include/simde/arm/neon/rshl.h +903 -0
  1108. casadi/include/simde/arm/neon/rshr_n.h +471 -0
  1109. casadi/include/simde/arm/neon/rsra_n.h +209 -0
  1110. casadi/include/simde/arm/neon/set_lane.h +422 -0
  1111. casadi/include/simde/arm/neon/shl.h +805 -0
  1112. casadi/include/simde/arm/neon/shl_n.h +560 -0
  1113. casadi/include/simde/arm/neon/shr_n.h +612 -0
  1114. casadi/include/simde/arm/neon/sra_n.h +202 -0
  1115. casadi/include/simde/arm/neon/st1.h +353 -0
  1116. casadi/include/simde/arm/neon/st1_lane.h +363 -0
  1117. casadi/include/simde/arm/neon/st3.h +426 -0
  1118. casadi/include/simde/arm/neon/st4.h +445 -0
  1119. casadi/include/simde/arm/neon/sub.h +659 -0
  1120. casadi/include/simde/arm/neon/subl.h +127 -0
  1121. casadi/include/simde/arm/neon/subw.h +221 -0
  1122. casadi/include/simde/arm/neon/subw_high.h +222 -0
  1123. casadi/include/simde/arm/neon/tbl.h +224 -0
  1124. casadi/include/simde/arm/neon/tbx.h +247 -0
  1125. casadi/include/simde/arm/neon/trn.h +252 -0
  1126. casadi/include/simde/arm/neon/trn1.h +500 -0
  1127. casadi/include/simde/arm/neon/trn2.h +499 -0
  1128. casadi/include/simde/arm/neon/tst.h +540 -0
  1129. casadi/include/simde/arm/neon/types.h +683 -0
  1130. casadi/include/simde/arm/neon/uqadd.h +325 -0
  1131. casadi/include/simde/arm/neon/uzp.h +252 -0
  1132. casadi/include/simde/arm/neon/uzp1.h +643 -0
  1133. casadi/include/simde/arm/neon/uzp2.h +647 -0
  1134. casadi/include/simde/arm/neon/zip.h +252 -0
  1135. casadi/include/simde/arm/neon/zip1.h +625 -0
  1136. casadi/include/simde/arm/neon/zip2.h +625 -0
  1137. casadi/include/simde/arm/neon.h +166 -0
  1138. casadi/include/simde/check.h +276 -0
  1139. casadi/include/simde/debug-trap.h +85 -0
  1140. casadi/include/simde/hedley.h +1971 -0
  1141. casadi/include/simde/simde-align.h +449 -0
  1142. casadi/include/simde/simde-arch.h +532 -0
  1143. casadi/include/simde/simde-common.h +890 -0
  1144. casadi/include/simde/simde-complex.h +148 -0
  1145. casadi/include/simde/simde-constify.h +397 -0
  1146. casadi/include/simde/simde-detect-clang.h +109 -0
  1147. casadi/include/simde/simde-diagnostic.h +428 -0
  1148. casadi/include/simde/simde-features.h +522 -0
  1149. casadi/include/simde/simde-math.h +1805 -0
  1150. casadi/include/simde/x86/avx.h +6193 -0
  1151. casadi/include/simde/x86/avx2.h +5660 -0
  1152. casadi/include/simde/x86/avx512/2intersect.h +250 -0
  1153. casadi/include/simde/x86/avx512/abs.h +562 -0
  1154. casadi/include/simde/x86/avx512/add.h +641 -0
  1155. casadi/include/simde/x86/avx512/adds.h +390 -0
  1156. casadi/include/simde/x86/avx512/and.h +305 -0
  1157. casadi/include/simde/x86/avx512/andnot.h +193 -0
  1158. casadi/include/simde/x86/avx512/avg.h +258 -0
  1159. casadi/include/simde/x86/avx512/blend.h +293 -0
  1160. casadi/include/simde/x86/avx512/broadcast.h +897 -0
  1161. casadi/include/simde/x86/avx512/cast.h +324 -0
  1162. casadi/include/simde/x86/avx512/cmp.h +587 -0
  1163. casadi/include/simde/x86/avx512/cmpeq.h +179 -0
  1164. casadi/include/simde/x86/avx512/cmpge.h +104 -0
  1165. casadi/include/simde/x86/avx512/cmpgt.h +189 -0
  1166. casadi/include/simde/x86/avx512/cmple.h +103 -0
  1167. casadi/include/simde/x86/avx512/cmplt.h +123 -0
  1168. casadi/include/simde/x86/avx512/copysign.h +86 -0
  1169. casadi/include/simde/x86/avx512/cvt.h +122 -0
  1170. casadi/include/simde/x86/avx512/cvts.h +723 -0
  1171. casadi/include/simde/x86/avx512/div.h +162 -0
  1172. casadi/include/simde/x86/avx512/extract.h +198 -0
  1173. casadi/include/simde/x86/avx512/fmadd.h +136 -0
  1174. casadi/include/simde/x86/avx512/fmsub.h +108 -0
  1175. casadi/include/simde/x86/avx512/fnmadd.h +108 -0
  1176. casadi/include/simde/x86/avx512/fnmsub.h +108 -0
  1177. casadi/include/simde/x86/avx512/insert.h +193 -0
  1178. casadi/include/simde/x86/avx512/kshift.h +152 -0
  1179. casadi/include/simde/x86/avx512/load.h +67 -0
  1180. casadi/include/simde/x86/avx512/loadu.h +113 -0
  1181. casadi/include/simde/x86/avx512/lzcnt.h +209 -0
  1182. casadi/include/simde/x86/avx512/madd.h +155 -0
  1183. casadi/include/simde/x86/avx512/maddubs.h +159 -0
  1184. casadi/include/simde/x86/avx512/max.h +587 -0
  1185. casadi/include/simde/x86/avx512/min.h +587 -0
  1186. casadi/include/simde/x86/avx512/mov.h +859 -0
  1187. casadi/include/simde/x86/avx512/mov_mask.h +372 -0
  1188. casadi/include/simde/x86/avx512/movm.h +460 -0
  1189. casadi/include/simde/x86/avx512/mul.h +279 -0
  1190. casadi/include/simde/x86/avx512/mulhi.h +65 -0
  1191. casadi/include/simde/x86/avx512/mulhrs.h +65 -0
  1192. casadi/include/simde/x86/avx512/mullo.h +117 -0
  1193. casadi/include/simde/x86/avx512/negate.h +88 -0
  1194. casadi/include/simde/x86/avx512/or.h +252 -0
  1195. casadi/include/simde/x86/avx512/packs.h +122 -0
  1196. casadi/include/simde/x86/avx512/packus.h +122 -0
  1197. casadi/include/simde/x86/avx512/permutex2var.h +1645 -0
  1198. casadi/include/simde/x86/avx512/permutexvar.h +1180 -0
  1199. casadi/include/simde/x86/avx512/sad.h +77 -0
  1200. casadi/include/simde/x86/avx512/set.h +477 -0
  1201. casadi/include/simde/x86/avx512/set1.h +331 -0
  1202. casadi/include/simde/x86/avx512/set4.h +140 -0
  1203. casadi/include/simde/x86/avx512/setone.h +66 -0
  1204. casadi/include/simde/x86/avx512/setr.h +144 -0
  1205. casadi/include/simde/x86/avx512/setr4.h +140 -0
  1206. casadi/include/simde/x86/avx512/setzero.h +90 -0
  1207. casadi/include/simde/x86/avx512/shuffle.h +176 -0
  1208. casadi/include/simde/x86/avx512/sll.h +247 -0
  1209. casadi/include/simde/x86/avx512/slli.h +179 -0
  1210. casadi/include/simde/x86/avx512/sllv.h +68 -0
  1211. casadi/include/simde/x86/avx512/sqrt.h +127 -0
  1212. casadi/include/simde/x86/avx512/sra.h +81 -0
  1213. casadi/include/simde/x86/avx512/srai.h +70 -0
  1214. casadi/include/simde/x86/avx512/srav.h +67 -0
  1215. casadi/include/simde/x86/avx512/srl.h +216 -0
  1216. casadi/include/simde/x86/avx512/srli.h +180 -0
  1217. casadi/include/simde/x86/avx512/srlv.h +282 -0
  1218. casadi/include/simde/x86/avx512/store.h +93 -0
  1219. casadi/include/simde/x86/avx512/storeu.h +93 -0
  1220. casadi/include/simde/x86/avx512/sub.h +351 -0
  1221. casadi/include/simde/x86/avx512/subs.h +222 -0
  1222. casadi/include/simde/x86/avx512/test.h +193 -0
  1223. casadi/include/simde/x86/avx512/types.h +380 -0
  1224. casadi/include/simde/x86/avx512/unpackhi.h +380 -0
  1225. casadi/include/simde/x86/avx512/unpacklo.h +104 -0
  1226. casadi/include/simde/x86/avx512/xor.h +263 -0
  1227. casadi/include/simde/x86/avx512/xorsign.h +72 -0
  1228. casadi/include/simde/x86/avx512.h +108 -0
  1229. casadi/include/simde/x86/clmul.h +414 -0
  1230. casadi/include/simde/x86/fma.h +724 -0
  1231. casadi/include/simde/x86/gfni.h +802 -0
  1232. casadi/include/simde/x86/mmx.h +2399 -0
  1233. casadi/include/simde/x86/sse.h +4471 -0
  1234. casadi/include/simde/x86/sse2.h +7389 -0
  1235. casadi/include/simde/x86/sse3.h +499 -0
  1236. casadi/include/simde/x86/sse4.1.h +2216 -0
  1237. casadi/include/simde/x86/sse4.2.h +347 -0
  1238. casadi/include/simde/x86/ssse3.h +1032 -0
  1239. casadi/include/simde/x86/svml.h +12139 -0
  1240. casadi/include/simde/x86/xop.h +3644 -0
  1241. casadi/include/superscs/cones.h +185 -0
  1242. casadi/include/superscs/constants.h +144 -0
  1243. casadi/include/superscs/cs.h +109 -0
  1244. casadi/include/superscs/ctrlc.h +77 -0
  1245. casadi/include/superscs/directions.h +125 -0
  1246. casadi/include/superscs/glbopts.h +240 -0
  1247. casadi/include/superscs/linAlg.h +437 -0
  1248. casadi/include/superscs/linSys.h +205 -0
  1249. casadi/include/superscs/linsys/amatrix.h +77 -0
  1250. casadi/include/superscs/linsys/common.h +49 -0
  1251. casadi/include/superscs/normalize.h +138 -0
  1252. casadi/include/superscs/scs.h +656 -0
  1253. casadi/include/superscs/scs_blas.h +79 -0
  1254. casadi/include/superscs/scs_parser.h +187 -0
  1255. casadi/include/superscs/unit_test_util.h +210 -0
  1256. casadi/include/superscs/util.h +354 -0
  1257. casadi/include/tinyxml2.h +2380 -0
  1258. casadi/include/trlib/trlib_eigen_inverse.h +118 -0
  1259. casadi/include/trlib/trlib_krylov.h +493 -0
  1260. casadi/include/trlib/trlib_leftmost.h +181 -0
  1261. casadi/include/trlib/trlib_private.h +109 -0
  1262. casadi/include/trlib/trlib_quadratic_zero.h +57 -0
  1263. casadi/include/trlib/trlib_tri_factor.h +409 -0
  1264. casadi/include/trlib/trlib_types.h +36 -0
  1265. casadi/lib/cmake/tinyxml2/tinyxml2-config-version.cmake +70 -0
  1266. casadi/lib/cmake/tinyxml2/tinyxml2-config.cmake +57 -0
  1267. casadi/lib/cmake/tinyxml2/tinyxml2-static-targets-release.cmake +19 -0
  1268. casadi/lib/cmake/tinyxml2/tinyxml2-static-targets.cmake +103 -0
  1269. casadi/lib/libtinyxml2.a +0 -0
  1270. casadi/lib/pkgconfig/tinyxml2.pc +10 -0
  1271. casadi/libCbc.la +35 -0
  1272. casadi/libCbc.so +0 -0
  1273. casadi/libCbc.so.3 +0 -0
  1274. casadi/libCbc.so.3.10.11 +0 -0
  1275. casadi/libCbcSolver.la +35 -0
  1276. casadi/libCbcSolver.so +0 -0
  1277. casadi/libCbcSolver.so.3 +0 -0
  1278. casadi/libCbcSolver.so.3.10.11 +0 -0
  1279. casadi/libCgl.la +35 -0
  1280. casadi/libCgl.so +0 -0
  1281. casadi/libCgl.so.1 +0 -0
  1282. casadi/libCgl.so.1.10.8 +0 -0
  1283. casadi/libClp.la +35 -0
  1284. casadi/libClp.so +0 -0
  1285. casadi/libClp.so.1 +0 -0
  1286. casadi/libClp.so.1.14.9 +0 -0
  1287. casadi/libClpSolver.la +35 -0
  1288. casadi/libClpSolver.so +0 -0
  1289. casadi/libClpSolver.so.1 +0 -0
  1290. casadi/libClpSolver.so.1.14.9 +0 -0
  1291. casadi/libCoinUtils.la +35 -0
  1292. casadi/libCoinUtils.so +0 -0
  1293. casadi/libCoinUtils.so.3 +0 -0
  1294. casadi/libCoinUtils.so.3.11.10 +0 -0
  1295. casadi/libFortranHighs.so +0 -0
  1296. casadi/libOsi.la +35 -0
  1297. casadi/libOsi.so +0 -0
  1298. casadi/libOsi.so.1 +0 -0
  1299. casadi/libOsi.so.1.13.9 +0 -0
  1300. casadi/libOsiCbc.la +35 -0
  1301. casadi/libOsiCbc.so +0 -0
  1302. casadi/libOsiCbc.so.3 +0 -0
  1303. casadi/libOsiCbc.so.3.10.11 +0 -0
  1304. casadi/libOsiClp.la +35 -0
  1305. casadi/libOsiClp.so +0 -0
  1306. casadi/libOsiClp.so.1 +0 -0
  1307. casadi/libOsiClp.so.1.14.9 +0 -0
  1308. casadi/libOsiCommonTests.la +35 -0
  1309. casadi/libOsiCommonTests.so +0 -0
  1310. casadi/libOsiCommonTests.so.1 +0 -0
  1311. casadi/libOsiCommonTests.so.1.13.9 +0 -0
  1312. casadi/libalpaqa-dl-loader.so +0 -0
  1313. casadi/libalpaqa-dl-loader.so.1.0.0 +0 -0
  1314. casadi/libalpaqa.so +0 -0
  1315. casadi/libalpaqa.so.1.0.0 +0 -0
  1316. casadi/libbonmin.la +35 -0
  1317. casadi/libbonmin.so +0 -0
  1318. casadi/libbonmin.so.4 +0 -0
  1319. casadi/libbonmin.so.4.8.9 +0 -0
  1320. casadi/libcasadi-tp-openblas.so +0 -0
  1321. casadi/libcasadi-tp-openblas.so.0 +0 -0
  1322. casadi/libcasadi-tp-openblas.so.0.3 +0 -0
  1323. casadi/libcasadi.so +0 -0
  1324. casadi/libcasadi.so.3.7 +0 -0
  1325. casadi/libcasadi_conic_cbc.so +0 -0
  1326. casadi/libcasadi_conic_cbc.so.3.7 +0 -0
  1327. casadi/libcasadi_conic_clp.so +0 -0
  1328. casadi/libcasadi_conic_clp.so.3.7 +0 -0
  1329. casadi/libcasadi_conic_gurobi.so +0 -0
  1330. casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
  1331. casadi/libcasadi_conic_highs.so +0 -0
  1332. casadi/libcasadi_conic_highs.so.3.7 +0 -0
  1333. casadi/libcasadi_conic_ipqp.so +0 -0
  1334. casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
  1335. casadi/libcasadi_conic_nlpsol.so +0 -0
  1336. casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
  1337. casadi/libcasadi_conic_osqp.so +0 -0
  1338. casadi/libcasadi_conic_osqp.so.3.7 +0 -0
  1339. casadi/libcasadi_conic_proxqp.so +0 -0
  1340. casadi/libcasadi_conic_proxqp.so.3.7 +0 -0
  1341. casadi/libcasadi_conic_qpoases.so +0 -0
  1342. casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
  1343. casadi/libcasadi_conic_qrqp.so +0 -0
  1344. casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
  1345. casadi/libcasadi_conic_superscs.so +0 -0
  1346. casadi/libcasadi_conic_superscs.so.3.7 +0 -0
  1347. casadi/libcasadi_importer_shell.so +0 -0
  1348. casadi/libcasadi_importer_shell.so.3.7 +0 -0
  1349. casadi/libcasadi_integrator_collocation.so +0 -0
  1350. casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
  1351. casadi/libcasadi_integrator_cvodes.so +0 -0
  1352. casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
  1353. casadi/libcasadi_integrator_idas.so +0 -0
  1354. casadi/libcasadi_integrator_idas.so.3.7 +0 -0
  1355. casadi/libcasadi_integrator_rk.so +0 -0
  1356. casadi/libcasadi_integrator_rk.so.3.7 +0 -0
  1357. casadi/libcasadi_interpolant_bspline.so +0 -0
  1358. casadi/libcasadi_interpolant_bspline.so.3.7 +0 -0
  1359. casadi/libcasadi_interpolant_linear.so +0 -0
  1360. casadi/libcasadi_interpolant_linear.so.3.7 +0 -0
  1361. casadi/libcasadi_linsol_csparse.so +0 -0
  1362. casadi/libcasadi_linsol_csparse.so.3.7 +0 -0
  1363. casadi/libcasadi_linsol_csparsecholesky.so +0 -0
  1364. casadi/libcasadi_linsol_csparsecholesky.so.3.7 +0 -0
  1365. casadi/libcasadi_linsol_lapacklu.so +0 -0
  1366. casadi/libcasadi_linsol_lapacklu.so.3.7 +0 -0
  1367. casadi/libcasadi_linsol_lapackqr.so +0 -0
  1368. casadi/libcasadi_linsol_lapackqr.so.3.7 +0 -0
  1369. casadi/libcasadi_linsol_ldl.so +0 -0
  1370. casadi/libcasadi_linsol_ldl.so.3.7 +0 -0
  1371. casadi/libcasadi_linsol_lsqr.so +0 -0
  1372. casadi/libcasadi_linsol_lsqr.so.3.7 +0 -0
  1373. casadi/libcasadi_linsol_ma27.so +0 -0
  1374. casadi/libcasadi_linsol_ma27.so.3.7 +0 -0
  1375. casadi/libcasadi_linsol_mumps.so +0 -0
  1376. casadi/libcasadi_linsol_mumps.so.3.7 +0 -0
  1377. casadi/libcasadi_linsol_qr.so +0 -0
  1378. casadi/libcasadi_linsol_qr.so.3.7 +0 -0
  1379. casadi/libcasadi_linsol_symbolicqr.so +0 -0
  1380. casadi/libcasadi_linsol_symbolicqr.so.3.7 +0 -0
  1381. casadi/libcasadi_linsol_tridiag.so +0 -0
  1382. casadi/libcasadi_linsol_tridiag.so.3.7 +0 -0
  1383. casadi/libcasadi_nlpsol_alpaqa.so +0 -0
  1384. casadi/libcasadi_nlpsol_alpaqa.so.3.7 +0 -0
  1385. casadi/libcasadi_nlpsol_ampl.so +0 -0
  1386. casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
  1387. casadi/libcasadi_nlpsol_blocksqp.so +0 -0
  1388. casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
  1389. casadi/libcasadi_nlpsol_bonmin.so +0 -0
  1390. casadi/libcasadi_nlpsol_bonmin.so.3.7 +0 -0
  1391. casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
  1392. casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
  1393. casadi/libcasadi_nlpsol_ipopt.so +0 -0
  1394. casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
  1395. casadi/libcasadi_nlpsol_knitro.so +0 -0
  1396. casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
  1397. casadi/libcasadi_nlpsol_qrsqp.so +0 -0
  1398. casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
  1399. casadi/libcasadi_nlpsol_scpgen.so +0 -0
  1400. casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
  1401. casadi/libcasadi_nlpsol_sleqp.so +0 -0
  1402. casadi/libcasadi_nlpsol_sleqp.so.3.7 +0 -0
  1403. casadi/libcasadi_nlpsol_snopt.so +0 -0
  1404. casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
  1405. casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
  1406. casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
  1407. casadi/libcasadi_nlpsol_worhp.so +0 -0
  1408. casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
  1409. casadi/libcasadi_rootfinder_fast_newton.so +0 -0
  1410. casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
  1411. casadi/libcasadi_rootfinder_kinsol.so +0 -0
  1412. casadi/libcasadi_rootfinder_kinsol.so.3.7 +0 -0
  1413. casadi/libcasadi_rootfinder_newton.so +0 -0
  1414. casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
  1415. casadi/libcasadi_rootfinder_nlpsol.so +0 -0
  1416. casadi/libcasadi_rootfinder_nlpsol.so.3.7 +0 -0
  1417. casadi/libcasadi_sundials_common.so +0 -0
  1418. casadi/libcasadi_sundials_common.so.3.7 +0 -0
  1419. casadi/libcasadi_xmlfile_tinyxml.so +0 -0
  1420. casadi/libcasadi_xmlfile_tinyxml.so.3.7 +0 -0
  1421. casadi/libcoinmetis.la +41 -0
  1422. casadi/libcoinmetis.so +0 -0
  1423. casadi/libcoinmetis.so.2 +0 -0
  1424. casadi/libcoinmetis.so.2.0.0 +0 -0
  1425. casadi/libcoinmumps.la +41 -0
  1426. casadi/libcoinmumps.so +0 -0
  1427. casadi/libcoinmumps.so.3 +0 -0
  1428. casadi/libcoinmumps.so.3.0.1 +0 -0
  1429. casadi/libgfortran-a8535147.so.5.0.0 +0 -0
  1430. casadi/libgurobi_adaptor.so +0 -0
  1431. casadi/libhighs.so +0 -0
  1432. casadi/libhighs.so.1.6 +0 -0
  1433. casadi/libhighs.so.1.6.0 +0 -0
  1434. casadi/libindirect.a +0 -0
  1435. casadi/libipopt.la +41 -0
  1436. casadi/libipopt.so +0 -0
  1437. casadi/libipopt.so.3 +0 -0
  1438. casadi/libipopt.so.3.14.11 +0 -0
  1439. casadi/liblinsys.a +0 -0
  1440. casadi/libosqp.a +0 -0
  1441. casadi/libosqp.so +0 -0
  1442. casadi/libqdldl.a +0 -0
  1443. casadi/libqdldl.so +0 -0
  1444. casadi/libquadmath-e2ac3af2.so.0.0.0 +0 -0
  1445. casadi/libsipopt.la +41 -0
  1446. casadi/libsipopt.so +0 -0
  1447. casadi/libsipopt.so.3 +0 -0
  1448. casadi/libsipopt.so.3.14.11 +0 -0
  1449. casadi/libsleqp.so +0 -0
  1450. casadi/libsleqp.so.1.0.1 +0 -0
  1451. casadi/libspral.a +0 -0
  1452. casadi/libsuperscs.a +0 -0
  1453. casadi/libtrlib.so +0 -0
  1454. casadi/libtrlib.so.0.4 +0 -0
  1455. casadi/pkgconfig/blas.pc +11 -0
  1456. casadi/pkgconfig/bonmin.pc +12 -0
  1457. casadi/pkgconfig/casadi.pc +12 -0
  1458. casadi/pkgconfig/cbc.pc +12 -0
  1459. casadi/pkgconfig/cgl.pc +12 -0
  1460. casadi/pkgconfig/clp.pc +12 -0
  1461. casadi/pkgconfig/coinmetis.pc +13 -0
  1462. casadi/pkgconfig/coinmumps.pc +15 -0
  1463. casadi/pkgconfig/coinutils.pc +12 -0
  1464. casadi/pkgconfig/highs.pc +12 -0
  1465. casadi/pkgconfig/ipopt.pc +15 -0
  1466. casadi/pkgconfig/lapack.pc +11 -0
  1467. casadi/pkgconfig/openblas.pc +11 -0
  1468. casadi/pkgconfig/osi-cbc.pc +12 -0
  1469. casadi/pkgconfig/osi-clp.pc +12 -0
  1470. casadi/pkgconfig/osi-unittests.pc +12 -0
  1471. casadi/pkgconfig/osi.pc +12 -0
  1472. casadi/pkgconfig/proxsuite.pc +22 -0
  1473. casadi/pkgconfig/sleqp.pc +10 -0
  1474. casadi/tools/__init__.py +48 -0
  1475. casadi/tools/bounds.py +107 -0
  1476. casadi/tools/graph/__init__.py +35 -0
  1477. casadi/tools/graph/graph.py +747 -0
  1478. casadi/tools/in_out.py +89 -0
  1479. casadi/tools/structure.py +1446 -0
  1480. casadi/tools/structure3.py +1441 -0
  1481. casadi-3.6.4.dist-info/METADATA +37 -0
  1482. casadi-3.6.4.dist-info/RECORD +1484 -0
  1483. casadi-3.6.4.dist-info/WHEEL +4 -0
  1484. dummy.txt +1 -0
@@ -0,0 +1,1270 @@
1
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2
+ /* */
3
+ /* This file is part of the HiGHS linear optimization suite */
4
+ /* */
5
+ /* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
6
+ /* Leona Gottwald and Michael Feldmeier */
7
+ /* */
8
+ /* Available as open-source under the MIT License */
9
+ /* */
10
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
11
+ #ifndef HIGHS_UTIL_HASH_H_
12
+ #define HIGHS_UTIL_HASH_H_
13
+
14
+ #include <array>
15
+ #include <cassert>
16
+ #include <cmath>
17
+ #include <cstddef>
18
+ #include <cstdint>
19
+ #include <cstring>
20
+ #include <functional>
21
+ #include <iterator>
22
+ #include <memory>
23
+ #include <type_traits>
24
+ #include <utility>
25
+ #include <vector>
26
+
27
+ #include "util/HighsInt.h"
28
+
29
+ #ifdef HIGHS_HAVE_BITSCAN_REVERSE
30
+ #include <intrin.h>
31
+ #pragma intrinsic(_BitScanReverse)
32
+ #ifdef _WIN64
33
+ #pragma intrinsic(_BitScanReverse64)
34
+ #pragma intrinsic(__popcnt64)
35
+ #else
36
+ #pragma intrinsic(__popcnt)
37
+ #endif
38
+ #endif
39
+
40
+ #if __GNUG__ && __GNUC__ < 5 && !defined(__clang__)
41
+ #define IS_TRIVIALLY_COPYABLE(T) __has_trivial_copy(T)
42
+ #else
43
+ #define IS_TRIVIALLY_COPYABLE(T) std::is_trivially_copyable<T>::value
44
+ #endif
45
+
46
+ template <typename T>
47
+ struct HighsHashable : std::integral_constant<bool, IS_TRIVIALLY_COPYABLE(T)> {
48
+ };
49
+
50
+ template <typename U, typename V>
51
+ struct HighsHashable<std::pair<U, V>>
52
+ : public std::integral_constant<bool, HighsHashable<U>::value &&
53
+ HighsHashable<V>::value> {};
54
+
55
+ template <typename U, typename V>
56
+ struct HighsHashable<std::tuple<U, V>> : public HighsHashable<std::pair<U, V>> {
57
+ };
58
+ template <typename U, typename V, typename W, typename... Args>
59
+ struct HighsHashable<std::tuple<U, V, W, Args...>>
60
+ : public std::integral_constant<
61
+ bool, HighsHashable<U>::value &&
62
+ HighsHashable<std::tuple<V, W, Args...>>::value> {};
63
+
64
+ struct HighsHashHelpers {
65
+ using u8 = std::uint8_t;
66
+ using i8 = std::int8_t;
67
+
68
+ using u16 = std::uint16_t;
69
+ using i16 = std::int16_t;
70
+
71
+ using u32 = std::uint32_t;
72
+ using i32 = std::int32_t;
73
+
74
+ using u64 = std::uint64_t;
75
+ using i64 = std::uint64_t;
76
+
77
+ static constexpr u64 c[] = {
78
+ u64{0xc8497d2a400d9551}, u64{0x80c8963be3e4c2f3}, u64{0x042d8680e260ae5b},
79
+ u64{0x8a183895eeac1536}, u64{0xa94e9c75f80ad6de}, u64{0x7e92251dec62835e},
80
+ u64{0x07294165cb671455}, u64{0x89b0f6212b0a4292}, u64{0x31900011b96bf554},
81
+ u64{0xa44540f8eee2094f}, u64{0xce7ffd372e4c64fc}, u64{0x51c9d471bfe6a10f},
82
+ u64{0x758c2a674483826f}, u64{0xf91a20abe63f8b02}, u64{0xc2a069024a1fcc6f},
83
+ u64{0xd5bb18b70c5dbd59}, u64{0xd510adac6d1ae289}, u64{0x571d069b23050a79},
84
+ u64{0x60873b8872933e06}, u64{0x780481cc19670350}, u64{0x7a48551760216885},
85
+ u64{0xb5d68b918231e6ca}, u64{0xa7e5571699aa5274}, u64{0x7b6d309b2cfdcf01},
86
+ u64{0x04e77c3d474daeff}, u64{0x4dbf099fd7247031}, u64{0x5d70dca901130beb},
87
+ u64{0x9f8b5f0df4182499}, u64{0x293a74c9686092da}, u64{0xd09bdab6840f52b3},
88
+ u64{0xc05d47f3ab302263}, u64{0x6b79e62b884b65d6}, u64{0xa581106fc980c34d},
89
+ u64{0xf081b7145ea2293e}, u64{0xfb27243dd7c3f5ad}, u64{0x5211bf8860ea667f},
90
+ u64{0x9455e65cb2385e7f}, u64{0x0dfaf6731b449b33}, u64{0x4ec98b3c6f5e68c7},
91
+ u64{0x007bfd4a42ae936b}, u64{0x65c93061f8674518}, u64{0x640816f17127c5d1},
92
+ u64{0x6dd4bab17b7c3a74}, u64{0x34d9268c256fa1ba}, u64{0x0b4d0c6b5b50d7f4},
93
+ u64{0x30aa965bc9fadaff}, u64{0xc0ac1d0c2771404d}, u64{0xc5e64509abb76ef2},
94
+ u64{0xd606b11990624a36}, u64{0x0d3f05d242ce2fb7}, u64{0x469a803cb276fe32},
95
+ u64{0xa4a44d177a3e23f4}, u64{0xb9d9a120dcc1ca03}, u64{0x2e15af8165234a2e},
96
+ u64{0x10609ba2720573d4}, u64{0xaa4191b60368d1d5}, u64{0x333dd2300bc57762},
97
+ u64{0xdf6ec48f79fb402f}, u64{0x5ed20fcef1b734fa}, u64{0x4c94924ec8be21ee},
98
+ u64{0x5abe6ad9d131e631}, u64{0xbe10136a522e602d}, u64{0x53671115c340e779},
99
+ u64{0x9f392fe43e2144da}};
100
+
101
+ /// mersenne prime 2^61 - 1
102
+ static constexpr u64 M61() { return u64{0x1fffffffffffffff}; };
103
+
104
+ #ifdef HIGHS_HAVE_BUILTIN_CLZ
105
+ static int log2i(uint64_t n) { return 63 - __builtin_clzll(n); }
106
+
107
+ static int log2i(uint32_t n) { return 31 - __builtin_clz(n); }
108
+
109
+ static int popcnt(uint64_t x) { return __builtin_popcountll(x); }
110
+
111
+ #elif defined(HIGHS_HAVE_BITSCAN_REVERSE)
112
+ static int log2i(uint64_t n) {
113
+ unsigned long result;
114
+ #ifdef _WIN64
115
+ _BitScanReverse64(&result, n);
116
+ #else
117
+ if (_BitScanReverse(&result, (n >> 32)))
118
+ result += 32;
119
+ else
120
+ _BitScanReverse(&result, (n & 0xffffffffu));
121
+ #endif
122
+ return result;
123
+ }
124
+
125
+ static int log2i(uint32_t n) {
126
+ unsigned long result;
127
+ _BitScanReverse(&result, (unsigned long)n);
128
+ return result;
129
+ }
130
+
131
+ static int popcnt(uint64_t x) {
132
+ #ifdef _WIN64
133
+ return __popcnt64(x);
134
+ #else
135
+ return __popcnt(x & 0xffffffffu) + __popcnt(x >> 32);
136
+ #endif
137
+ }
138
+ #else
139
+ // integer log2 algorithm without floating point arithmetic. It uses an
140
+ // unrolled loop and requires few instructions that can be well optimized.
141
+ static int log2i(uint64_t n) {
142
+ int x = 0;
143
+
144
+ auto log2Iteration = [&](int p) {
145
+ if (n >= uint64_t{1} << p) {
146
+ x += p;
147
+ n >>= p;
148
+ }
149
+ };
150
+
151
+ log2Iteration(32);
152
+ log2Iteration(16);
153
+ log2Iteration(8);
154
+ log2Iteration(4);
155
+ log2Iteration(2);
156
+ log2Iteration(1);
157
+
158
+ return x;
159
+ }
160
+
161
+ static int log2i(uint32_t n) {
162
+ int x = 0;
163
+
164
+ auto log2Iteration = [&](int p) {
165
+ if (n >= 1u << p) {
166
+ x += p;
167
+ n >>= p;
168
+ }
169
+ };
170
+
171
+ log2Iteration(16);
172
+ log2Iteration(8);
173
+ log2Iteration(4);
174
+ log2Iteration(2);
175
+ log2Iteration(1);
176
+
177
+ return x;
178
+ }
179
+
180
+ static int popcnt(uint64_t x) {
181
+ constexpr uint64_t m1 = 0x5555555555555555ull;
182
+ constexpr uint64_t m2 = 0x3333333333333333ull;
183
+ constexpr uint64_t m4 = 0x0f0f0f0f0f0f0f0full;
184
+ constexpr uint64_t h01 = 0x0101010101010101ull;
185
+
186
+ x -= (x >> 1) & m1;
187
+ x = (x & m2) + ((x >> 2) & m2);
188
+ x = (x + (x >> 4)) & m4;
189
+
190
+ return (x * h01) >> 56;
191
+ }
192
+
193
+ #endif
194
+
195
+ /// compute a * b mod 2^61-1
196
+ static u64 multiply_modM61(u64 a, u64 b) {
197
+ u64 ahi = a >> 32;
198
+ u64 bhi = b >> 32;
199
+ u64 alo = a & 0xffffffffu;
200
+ u64 blo = b & 0xffffffffu;
201
+
202
+ // compute the different order terms with adicities 2^64, 2^32, 2^0
203
+ u64 term_64 = ahi * bhi;
204
+ u64 term_32 = ahi * blo + bhi * alo;
205
+ u64 term_0 = alo * blo;
206
+
207
+ // Partially reduce term_0 and term_32 modulo M61() individually to not deal
208
+ // with a possible carry bit (thanks @https://github.com/WTFHCN for catching
209
+ // the bug with this). We do not need to completely reduce by an additional
210
+ // check for the range of the resulting term as this is done in the end in
211
+ // any case and the reduced sizes do not cause troubles with the available
212
+ // 64 bits.
213
+ term_0 = (term_0 & M61()) + (term_0 >> 61);
214
+ term_0 += ((term_32 >> 29) + (term_32 << 32)) & M61();
215
+
216
+ // The lower 61 bits of term_0 are now the lower 61 bits of the result that
217
+ // we need. Now extract the upper 61 of the result so that we can compute
218
+ // the result of the multiplication modulo M61()
219
+ u64 ab61 = (term_64 << 3) | (term_0 >> 61);
220
+
221
+ // finally take the result modulo M61 which is computed by exploiting
222
+ // that M61 is a mersenne prime, particularly, if a * b = q * 2^61 + r
223
+ // then a * b = (q + r) (mod 2^61 - 1)
224
+ u64 result = (term_0 & M61()) + ab61;
225
+ if (result >= M61()) result -= M61();
226
+ return result;
227
+ }
228
+
229
+ static u64 modexp_M61(u64 a, u64 e) {
230
+ // the exponent need to be greater than zero
231
+ assert(e > 0);
232
+ u64 result = a;
233
+
234
+ while (e != 1) {
235
+ // square
236
+ result = multiply_modM61(result, result);
237
+
238
+ // multiply with a if exponent is odd
239
+ if (e & 1) result = multiply_modM61(result, a);
240
+
241
+ // shift to next bit
242
+ e = e >> 1;
243
+ }
244
+
245
+ return result;
246
+ }
247
+
248
+ /// mersenne prime 2^31 - 1
249
+ static constexpr u64 M31() { return u32{0x7fffffff}; };
250
+
251
+ /// compute a * b mod 2^31-1
252
+ static u32 multiply_modM31(u32 a, u32 b) {
253
+ u64 result = u64(a) * u64(b);
254
+ result = (result >> 31) + (result & M31());
255
+ if (result >= M31()) result -= M31();
256
+ return result;
257
+ }
258
+
259
+ static u32 modexp_M31(u32 a, u64 e) {
260
+ // the exponent need to be greater than zero
261
+ assert(e > 0);
262
+ u32 result = a;
263
+
264
+ while (e != 1) {
265
+ // square
266
+ result = multiply_modM31(result, result);
267
+
268
+ // multiply with a if exponent is odd
269
+ if (e & 1) result = multiply_modM31(result, a);
270
+
271
+ // shift to next bit
272
+ e = e >> 1;
273
+ }
274
+
275
+ return result;
276
+ }
277
+
278
+ template <HighsInt k>
279
+ static u64 pair_hash(u32 a, u32 b) {
280
+ return (a + c[2 * k]) * (b + c[2 * k + 1]);
281
+ }
282
+
283
+ static void sparse_combine(u64& hash, HighsInt index, u64 value) {
284
+ // we take each value of the sparse hash as coefficient for a polynomial
285
+ // of the finite field modulo the mersenne prime 2^61-1 where the monomial
286
+ // for a sparse entry has the degree of its index. We evaluate the
287
+ // polynomial at a random constant. This allows to compute the hashes of
288
+ // sparse vectors independently of each others nonzero contribution and
289
+ // therefore allows to use the order of best access patterns for cache
290
+ // performance. E.g. we can compute a strong hash value for parallel row and
291
+ // column detection and only need to loop over the nonzeros once in
292
+ // arbitrary order. This comes at the expense of more expensive hash
293
+ // calculations as it would be more efficient to evaluate the polynomial
294
+ // with horners scheme, but allows for parallelization and arbitrary order.
295
+ // Since we have 64 random constants available, we slightly improve
296
+ // the scheme by using a lower degree polynomial with 64 variables
297
+ // which we evaluate at the random vector of 64.
298
+
299
+ // make sure input value is never zero and at most 61bits are used
300
+ value = ((value << 1) & M61()) | 1;
301
+
302
+ // make sure that the constant has at most 61 bits, as otherwise the modulo
303
+ // algorithm for multiplication mod M61 might not work properly due to
304
+ // overflow
305
+ u64 a = c[index & 63] & M61();
306
+ HighsInt degree = (index >> 6) + 1;
307
+
308
+ hash += multiply_modM61(value, modexp_M61(a, degree));
309
+ hash = (hash >> 61) + (hash & M61());
310
+ if (hash >= M61()) hash -= M61();
311
+ assert(hash < M61());
312
+ }
313
+
314
+ static void sparse_inverse_combine(u64& hash, HighsInt index, u64 value) {
315
+ // same hash algorithm as sparse_combine(), but for updating a hash value to
316
+ // the state before it was changed with a call to sparse_combine(). This is
317
+ // easily possible as the hash value just uses finite field arithmetic. We
318
+ // can simply add the additive inverse of the previous hash value. This is a
319
+ // very useful routine for symmetry detection. During partition refinement
320
+ // the hashes do not need to be recomputed but can be updated with this
321
+ // procedure.
322
+
323
+ // make sure input value is never zero and at most 61bits are used
324
+ value = ((value << 1) & M61()) | 1;
325
+
326
+ u64 a = c[index & 63] & M61();
327
+ HighsInt degree = (index >> 6) + 1;
328
+ // add the additive inverse (M61() - hashvalue) instead of the hash value
329
+ // itself
330
+ hash += M61() - multiply_modM61(value, modexp_M61(a, degree));
331
+ hash = (hash >> 61) + (hash & M61());
332
+ if (hash >= M61()) hash -= M61();
333
+ assert(hash < M61());
334
+ }
335
+
336
+ /// overload that is not taking a value and saves one multiplication call
337
+ /// useful for sparse hashing of bit vectors
338
+ static void sparse_combine(u64& hash, HighsInt index) {
339
+ u64 a = c[index & 63] & M61();
340
+ HighsInt degree = (index >> 6) + 1;
341
+
342
+ hash += modexp_M61(a, degree);
343
+ hash = (hash >> 61) + (hash & M61());
344
+ if (hash >= M61()) hash -= M61();
345
+ assert(hash < M61());
346
+ }
347
+
348
+ /// overload that is not taking a value and saves one multiplication call
349
+ /// useful for sparse hashing of bit vectors
350
+ static void sparse_inverse_combine(u64& hash, HighsInt index) {
351
+ // same hash algorithm as sparse_combine(), but for updating a hash value to
352
+ // the state before it was changed with a call to sparse_combine(). This is
353
+ // easily possible as the hash value just uses finite field arithmetic. We
354
+ // can simply add the additive inverse of the previous hash value. This is a
355
+ // very useful routine for symmetry detection. During partition refinement
356
+ // the hashes do not need to be recomputed but can be updated with this
357
+ // procedure.
358
+
359
+ u64 a = c[index & 63] & M61();
360
+ HighsInt degree = (index >> 6) + 1;
361
+ // add the additive inverse (M61() - hashvalue) instead of the hash value
362
+ // itself
363
+ hash += M61() - modexp_M61(a, degree);
364
+ hash = (hash >> 61) + (hash & M61());
365
+ if (hash >= M61()) hash -= M61();
366
+ assert(hash < M61());
367
+ }
368
+
369
+ static void sparse_combine32(u32& hash, HighsInt index, u64 value) {
370
+ // we take each value of the sparse hash as coefficient for a polynomial
371
+ // of the finite field modulo the mersenne prime 2^61-1 where the monomial
372
+ // for a sparse entry has the degree of its index. We evaluate the
373
+ // polynomial at a random constant. This allows to compute the hashes of
374
+ // sparse vectors independently of each others nonzero contribution and
375
+ // therefore allows to use the order of best access patterns for cache
376
+ // performance. E.g. we can compute a strong hash value for parallel row and
377
+ // column detection and only need to loop over the nonzeros once in
378
+ // arbitrary order. This comes at the expense of more expensive hash
379
+ // calculations as it would be more efficient to evaluate the polynomial
380
+ // with horners scheme, but allows for parallelization and arbitrary order.
381
+ // Since we have 16 random constants available, we slightly improve
382
+ // the scheme by using a lower degree polynomial with 16 variables
383
+ // which we evaluate at the random vector of 16.
384
+
385
+ // make sure input value is never zero and at most 31bits are used
386
+ value = (pair_hash<0>(value, value >> 32) >> 33) | 1;
387
+
388
+ // make sure that the constant has at most 31 bits, as otherwise the modulo
389
+ // algorithm for multiplication mod M31 might not work properly due to
390
+ // overflow
391
+ u32 a = c[index & 63] & M31();
392
+ HighsInt degree = (index >> 6) + 1;
393
+
394
+ hash += multiply_modM31(value, modexp_M31(a, degree));
395
+ hash = (hash >> 31) + (hash & M31());
396
+ if (hash >= M31()) hash -= M31();
397
+ assert(hash < M31());
398
+ }
399
+
400
+ static void sparse_inverse_combine32(u32& hash, HighsInt index, u64 value) {
401
+ // same hash algorithm as sparse_combine(), but for updating a hash value to
402
+ // the state before it was changed with a call to sparse_combine(). This is
403
+ // easily possible as the hash value just uses finite field arithmetic. We
404
+ // can simply add the additive inverse of the previous hash value. This is a
405
+ // very useful routine for symmetry detection. During partition refinement
406
+ // the hashes do not need to be recomputed but can be updated with this
407
+ // procedure.
408
+
409
+ // make sure input value is never zero and at most 31bits are used
410
+ value = (pair_hash<0>(value, value >> 32) >> 33) | 1;
411
+
412
+ u32 a = c[index & 63] & M31();
413
+ HighsInt degree = (index >> 6) + 1;
414
+ // add the additive inverse (M31() - hashvalue) instead of the hash value
415
+ // itself
416
+ hash += M31() - multiply_modM31(value, modexp_M31(a, degree));
417
+ hash = (hash >> 31) + (hash & M31());
418
+ if (hash >= M31()) hash -= M31();
419
+ assert(hash < M31());
420
+ }
421
+
422
+ static constexpr u64 fibonacci_muliplier() { return u64{0x9e3779b97f4a7c15}; }
423
+
424
+ template <typename T,
425
+ typename std::enable_if<HighsHashable<T>::value, int>::type = 0>
426
+ static u64 vector_hash(const T* vals, size_t numvals) {
427
+ std::array<u32, 2> pair{};
428
+ u64 hash = 0;
429
+ HighsInt k = 0;
430
+
431
+ const char* dataptr = (const char*)vals;
432
+ const char* dataend = (const char*)(vals + numvals);
433
+
434
+ while (dataptr != dataend) {
435
+ using std::size_t;
436
+ size_t numBytes = std::min(size_t(dataend - dataptr), size_t{256});
437
+ size_t numPairs = (numBytes + 7) / 8;
438
+ size_t lastPairBytes = numBytes - (numPairs - 1) * 8;
439
+ u64 chunkhash[] = {u64{0}, u64{0}};
440
+
441
+ #define HIGHS_VECHASH_CASE_N(N, B) \
442
+ std::memcpy(&pair[0], dataptr, B); \
443
+ chunkhash[N & 1] += pair_hash<32 - N>(pair[0], pair[1]); \
444
+ dataptr += B;
445
+
446
+ switch (numPairs) {
447
+ case 32:
448
+ if (hash != 0) {
449
+ // make sure hash is reduced mod M61() before multiplying with the
450
+ // next random constant. For vectors at most 240 bytes we never
451
+ // get here and only use the fast pair hashing scheme
452
+ // for vectors with 240 bytes to 256 bytes we do have the one
453
+ // additional check for hash != 0 above which will return false
454
+ // and only for longer vectors we ever reduce modulo M61
455
+ if (hash >= M61()) hash -= M61();
456
+ hash = multiply_modM61(hash, c[(k++) & 63] & M61());
457
+ }
458
+ HIGHS_VECHASH_CASE_N(32, 8)
459
+ // fall through
460
+ case 31:
461
+ HIGHS_VECHASH_CASE_N(31, 8)
462
+ // fall through
463
+ case 30:
464
+ HIGHS_VECHASH_CASE_N(30, 8)
465
+ // fall through
466
+ case 29:
467
+ HIGHS_VECHASH_CASE_N(29, 8)
468
+ // fall through
469
+ case 28:
470
+ HIGHS_VECHASH_CASE_N(28, 8)
471
+ // fall through
472
+ case 27:
473
+ HIGHS_VECHASH_CASE_N(27, 8)
474
+ // fall through
475
+ case 26:
476
+ HIGHS_VECHASH_CASE_N(26, 8)
477
+ // fall through
478
+ case 25:
479
+ HIGHS_VECHASH_CASE_N(25, 8)
480
+ // fall through
481
+ case 24:
482
+ HIGHS_VECHASH_CASE_N(24, 8)
483
+ // fall through
484
+ case 23:
485
+ HIGHS_VECHASH_CASE_N(23, 8)
486
+ // fall through
487
+ case 22:
488
+ HIGHS_VECHASH_CASE_N(22, 8)
489
+ // fall through
490
+ case 21:
491
+ HIGHS_VECHASH_CASE_N(21, 8)
492
+ // fall through
493
+ case 20:
494
+ HIGHS_VECHASH_CASE_N(20, 8)
495
+ // fall through
496
+ case 19:
497
+ HIGHS_VECHASH_CASE_N(19, 8)
498
+ // fall through
499
+ case 18:
500
+ HIGHS_VECHASH_CASE_N(18, 8)
501
+ // fall through
502
+ case 17:
503
+ HIGHS_VECHASH_CASE_N(17, 8)
504
+ // fall through
505
+ case 16:
506
+ HIGHS_VECHASH_CASE_N(16, 8)
507
+ // fall through
508
+ case 15:
509
+ HIGHS_VECHASH_CASE_N(15, 8)
510
+ // fall through
511
+ case 14:
512
+ HIGHS_VECHASH_CASE_N(14, 8)
513
+ // fall through
514
+ case 13:
515
+ HIGHS_VECHASH_CASE_N(13, 8)
516
+ // fall through
517
+ case 12:
518
+ HIGHS_VECHASH_CASE_N(12, 8)
519
+ // fall through
520
+ case 11:
521
+ HIGHS_VECHASH_CASE_N(11, 8)
522
+ // fall through
523
+ case 10:
524
+ HIGHS_VECHASH_CASE_N(10, 8)
525
+ // fall through
526
+ case 9:
527
+ HIGHS_VECHASH_CASE_N(9, 8)
528
+ // fall through
529
+ case 8:
530
+ HIGHS_VECHASH_CASE_N(8, 8)
531
+ // fall through
532
+ case 7:
533
+ HIGHS_VECHASH_CASE_N(7, 8)
534
+ // fall through
535
+ case 6:
536
+ HIGHS_VECHASH_CASE_N(6, 8)
537
+ // fall through
538
+ case 5:
539
+ HIGHS_VECHASH_CASE_N(5, 8)
540
+ // fall through
541
+ case 4:
542
+ HIGHS_VECHASH_CASE_N(4, 8)
543
+ // fall through
544
+ case 3:
545
+ HIGHS_VECHASH_CASE_N(3, 8)
546
+ // fall through
547
+ case 2:
548
+ HIGHS_VECHASH_CASE_N(2, 8)
549
+ // fall through
550
+ case 1:
551
+ HIGHS_VECHASH_CASE_N(1, lastPairBytes)
552
+ }
553
+
554
+ hash += (chunkhash[0] >> 3) ^ (chunkhash[1] >> 32);
555
+ }
556
+
557
+ #undef HIGHS_VECHASH_CASE_N
558
+
559
+ return hash * fibonacci_muliplier();
560
+ }
561
+
562
+ template <typename T,
563
+ typename std::enable_if<HighsHashable<T>::value &&
564
+ (sizeof(T) <= 8) && (sizeof(T) >= 1),
565
+ int>::type = 0>
566
+ static u64 hash(const T& val) {
567
+ std::array<u32, 2> bytes;
568
+ if (sizeof(T) < 4) bytes[0] = 0;
569
+ if (sizeof(T) < 8) bytes[1] = 0;
570
+ std::memcpy(&bytes[0], &val, sizeof(T));
571
+ return pair_hash<1>(bytes[0], bytes[1]) ^
572
+ pair_hash<0>(bytes[0], bytes[1]) >> 32;
573
+ }
574
+
575
+ template <typename T,
576
+ typename std::enable_if<HighsHashable<T>::value &&
577
+ (sizeof(T) >= 9) && (sizeof(T) <= 16),
578
+ int>::type = 0>
579
+ static u64 hash(const T& val) {
580
+ std::array<u32, 4> bytes;
581
+ if (sizeof(T) < 12) bytes[2] = 0;
582
+ if (sizeof(T) < 16) bytes[3] = 0;
583
+ std::memcpy(&bytes[0], &val, sizeof(T));
584
+ return (pair_hash<0>(bytes[0], bytes[1]) ^
585
+ (pair_hash<1>(bytes[2], bytes[3]) >> 32)) *
586
+ fibonacci_muliplier();
587
+ }
588
+
589
+ template <typename T,
590
+ typename std::enable_if<HighsHashable<T>::value &&
591
+ (sizeof(T) >= 17) && (sizeof(T) <= 24),
592
+ int>::type = 0>
593
+ static u64 hash(const T& val) {
594
+ std::array<u32, 6> bytes;
595
+ if (sizeof(T) < 20) bytes[4] = 0;
596
+ if (sizeof(T) < 24) bytes[5] = 0;
597
+ std::memcpy(&bytes[0], &val, sizeof(T));
598
+ return (pair_hash<0>(bytes[0], bytes[1]) ^
599
+ ((pair_hash<1>(bytes[2], bytes[3]) +
600
+ pair_hash<2>(bytes[4], bytes[5])) >>
601
+ 32)) *
602
+ fibonacci_muliplier();
603
+ }
604
+
605
+ template <typename T,
606
+ typename std::enable_if<HighsHashable<T>::value &&
607
+ (sizeof(T) >= 25) && (sizeof(T) <= 32),
608
+ int>::type = 0>
609
+ static u64 hash(const T& val) {
610
+ std::array<u32, 8> bytes;
611
+ if (sizeof(T) < 28) bytes[6] = 0;
612
+ if (sizeof(T) < 32) bytes[7] = 0;
613
+ std::memcpy(&bytes[0], &val, sizeof(T));
614
+ return ((pair_hash<0>(bytes[0], bytes[1]) +
615
+ pair_hash<1>(bytes[2], bytes[3])) ^
616
+ ((pair_hash<2>(bytes[4], bytes[5]) +
617
+ pair_hash<3>(bytes[6], bytes[7])) >>
618
+ 32)) *
619
+ fibonacci_muliplier();
620
+ }
621
+
622
+ template <typename T,
623
+ typename std::enable_if<HighsHashable<T>::value &&
624
+ (sizeof(T) >= 33) && (sizeof(T) <= 40),
625
+ int>::type = 0>
626
+ static u64 hash(const T& val) {
627
+ std::array<u32, 10> bytes;
628
+ if (sizeof(T) < 36) bytes[8] = 0;
629
+ if (sizeof(T) < 40) bytes[9] = 0;
630
+ std::memcpy(&bytes[0], &val, sizeof(T));
631
+ return ((pair_hash<0>(bytes[0], bytes[1]) +
632
+ pair_hash<1>(bytes[2], bytes[3])) ^
633
+ ((pair_hash<2>(bytes[4], bytes[5]) +
634
+ pair_hash<3>(bytes[6], bytes[7]) +
635
+ pair_hash<4>(bytes[8], bytes[9])) >>
636
+ 32)) *
637
+ fibonacci_muliplier();
638
+ }
639
+
640
+ template <typename T,
641
+ typename std::enable_if<HighsHashable<T>::value &&
642
+ (sizeof(T) >= 41) && (sizeof(T) <= 48),
643
+ int>::type = 0>
644
+ static u64 hash(const T& val) {
645
+ std::array<u32, 12> bytes;
646
+ if (sizeof(T) < 44) bytes[10] = 0;
647
+ if (sizeof(T) < 48) bytes[11] = 0;
648
+ std::memcpy(&bytes[0], &val, sizeof(T));
649
+ return ((pair_hash<0>(bytes[0], bytes[1]) +
650
+ pair_hash<1>(bytes[2], bytes[3]) +
651
+ pair_hash<2>(bytes[4], bytes[5])) ^
652
+ ((pair_hash<3>(bytes[6], bytes[7]) +
653
+ pair_hash<4>(bytes[8], bytes[9]) +
654
+ pair_hash<5>(bytes[10], bytes[11])) >>
655
+ 32)) *
656
+ fibonacci_muliplier();
657
+ }
658
+
659
+ template <typename T,
660
+ typename std::enable_if<HighsHashable<T>::value &&
661
+ (sizeof(T) >= 49) && (sizeof(T) <= 56),
662
+ int>::type = 0>
663
+ static u64 hash(const T& val) {
664
+ std::array<u32, 14> bytes;
665
+ if (sizeof(T) < 52) bytes[12] = 0;
666
+ if (sizeof(T) < 56) bytes[13] = 0;
667
+ std::memcpy(&bytes[0], &val, sizeof(T));
668
+ return ((pair_hash<0>(bytes[0], bytes[1]) +
669
+ pair_hash<1>(bytes[2], bytes[3]) +
670
+ pair_hash<2>(bytes[4], bytes[5])) ^
671
+ ((pair_hash<3>(bytes[6], bytes[7]) +
672
+ pair_hash<4>(bytes[8], bytes[9]) +
673
+ pair_hash<5>(bytes[10], bytes[11]) +
674
+ pair_hash<6>(bytes[12], bytes[13])) >>
675
+ 32)) *
676
+ fibonacci_muliplier();
677
+ }
678
+
679
+ template <typename T,
680
+ typename std::enable_if<HighsHashable<T>::value &&
681
+ (sizeof(T) >= 57) && (sizeof(T) <= 64),
682
+ int>::type = 0>
683
+ static u64 hash(const T& val) {
684
+ std::array<u32, 16> bytes;
685
+ if (sizeof(T) < 60) bytes[14] = 0;
686
+ if (sizeof(T) < 64) bytes[15] = 0;
687
+ std::memcpy(&bytes[0], &val, sizeof(T));
688
+ return ((pair_hash<0>(bytes[0], bytes[1]) +
689
+ pair_hash<1>(bytes[2], bytes[3]) +
690
+ pair_hash<2>(bytes[4], bytes[5]) +
691
+ pair_hash<3>(bytes[6], bytes[7])) ^
692
+ ((pair_hash<4>(bytes[8], bytes[9]) +
693
+ pair_hash<5>(bytes[10], bytes[11]) +
694
+ pair_hash<6>(bytes[12], bytes[13]) +
695
+ pair_hash<7>(bytes[14], bytes[15])) >>
696
+ 32)) *
697
+ fibonacci_muliplier();
698
+ }
699
+
700
+ template <typename T,
701
+ typename std::enable_if<HighsHashable<T>::value && (sizeof(T) > 64),
702
+ int>::type = 0>
703
+ static u64 hash(const T& val) {
704
+ return vector_hash(&val, 1);
705
+ }
706
+
707
+ template <typename T,
708
+ typename std::enable_if<HighsHashable<T>::value, int>::type = 0>
709
+ static u64 hash(const std::vector<T>& val) {
710
+ return vector_hash(val.data(), val.size());
711
+ }
712
+
713
+ template <typename T, typename std::enable_if<
714
+ std::is_same<decltype(*reinterpret_cast<T*>(0) ==
715
+ *reinterpret_cast<T*>(0)),
716
+ bool>::value,
717
+ int>::type = 0>
718
+ static bool equal(const T& a, const T& b) {
719
+ return a == b;
720
+ }
721
+
722
+ template <typename T,
723
+ typename std::enable_if<HighsHashable<T>::value, int>::type = 0>
724
+ static bool equal(const std::vector<T>& a, const std::vector<T>& b) {
725
+ if (a.size() != b.size()) return false;
726
+ return std::memcmp(a.data(), b.data(), sizeof(T) * a.size()) == 0;
727
+ }
728
+
729
+ static constexpr double golden_ratio_reciprocal() {
730
+ return 0.61803398874989484;
731
+ }
732
+
733
+ static u32 double_hash_code(double val) {
734
+ // we multiply by some irrational number, so that the buckets in which we
735
+ // put the real numbers do not break on a power of two pattern. E.g.
736
+ // consider the use case for detecting parallel rows when we have two
737
+ // parallel rows scaled to have their largest coefficient 1.0 and another
738
+ // coefficient which is 0.5
739
+ // +- epsilon. Clearly we want to detect those rows as parallel and give
740
+ // them the same hash value for small enough epsilon. The exponent,
741
+ // however will switch to -2 for the value just below 0.5 and the hashcodes
742
+ // will differ. when multiplying with the reciprocal of the golden ratio the
743
+ // exact 0.5 will yield 0.30901699437494742 and 0.5 - 1e-9 will yield
744
+ // 0.3090169937569134 which has the same exponent and matches in the most
745
+ // significant bits. Hence it yields the same hashcode. Obviously there will
746
+ // now be different values which exhibit the same pattern as the 0.5 case,
747
+ // but they do not have a small denominator like 1/2 in their rational
748
+ // representation but are power of two multiples of the golden ratio and
749
+ // therefore irrational, which we do not expect in non-artifical input data.
750
+ int exponent;
751
+ double hashbits = std::frexp(val * golden_ratio_reciprocal(), &exponent);
752
+
753
+ // some extra casts to be more verbose about what is happening.
754
+ // We want the exponent to use only 16bits so that the remaining 16 bits
755
+ // are used for the most significant bits of the mantissa and the sign bit.
756
+ // casting to unsigned 16bits first ensures that the value after the cast is
757
+ // defined to be UINT16_MAX - |exponent| when the exponent is negative.
758
+ // casting the exponent to a uint32_t directly would give wrong promotion
759
+ // of negative exponents as UINT32_MAX - |exponent| and take up to many bits
760
+ // or possibly lose information after the 16 bit shift. For the mantissa we
761
+ // take the 15 most significant bits, even though we could squeeze out a few
762
+ // more of the exponent. We don't need more bits as this would make the
763
+ // buckets very small and might miss more values that are equal within
764
+ // epsilon. Therefore the most significant 15 bits of the mantissa and the
765
+ // sign is encoded in the 16 lower bits of the hashcode and the upper 16bits
766
+ // encode the sign and value of the exponent.
767
+ u32 hashvalue = (u32)(u16)(i16)exponent;
768
+ hashvalue = (hashvalue << 16) | (u32)(u16)(i16)std::ldexp(hashbits, 15);
769
+
770
+ return hashvalue;
771
+ }
772
+ };
773
+
774
+ struct HighsHasher {
775
+ template <typename T>
776
+ size_t operator()(const T& x) const {
777
+ return HighsHashHelpers::hash(x);
778
+ }
779
+ };
780
+
781
+ struct HighsVectorHasher {
782
+ template <typename T>
783
+ size_t operator()(const std::vector<T>& vec) const {
784
+ return HighsHashHelpers::vector_hash(vec.data(), vec.size());
785
+ }
786
+ };
787
+
788
+ struct HighsVectorEqual {
789
+ template <typename T>
790
+ bool operator()(const std::vector<T>& vec1,
791
+ const std::vector<T>& vec2) const {
792
+ if (vec1.size() != vec2.size()) return false;
793
+ return std::equal(vec1.begin(), vec1.end(), vec2.begin());
794
+ }
795
+ };
796
+
797
+ template <typename K, typename V = void>
798
+ struct HighsHashTableEntry {
799
+ private:
800
+ K key_;
801
+ V value_;
802
+
803
+ public:
804
+ HighsHashTableEntry(HighsHashTableEntry<K, V>&&) = default;
805
+ HighsHashTableEntry(const HighsHashTableEntry<K, V>&) = default;
806
+ ~HighsHashTableEntry() = default;
807
+ HighsHashTableEntry() = default;
808
+ HighsHashTableEntry<K, V>& operator=(HighsHashTableEntry<K, V>&&) = default;
809
+ HighsHashTableEntry<K, V>& operator=(const HighsHashTableEntry<K, V>&) =
810
+ default;
811
+
812
+ // add a constructor to pass an argument to initialize the key with a value
813
+ // and the value as default
814
+ // the enable if statement makes sure this overload is never selected
815
+ // when the type of the single argument is HighsHashTableEntry<K,V> so that
816
+ // the default move and copy constructures are preferred when they match
817
+ // and this is only used to initialize the key type from a single argument.
818
+ template <
819
+ typename K_,
820
+ typename std::enable_if<
821
+ !std::is_same<typename std::remove_cv<
822
+ typename std::remove_reference<K_>::type>::type,
823
+ HighsHashTableEntry<K, V>>::value,
824
+ int>::type = 0>
825
+ HighsHashTableEntry(K_&& k) : key_(std::forward<K_>(k)), value_() {}
826
+
827
+ template <typename K_, typename V_>
828
+ HighsHashTableEntry(K_&& k, V_&& v)
829
+ : key_(std::forward<K_>(k)), value_(std::forward<V_>(v)) {}
830
+
831
+ const K& key() const { return key_; }
832
+ const V& value() const { return value_; }
833
+ V& value() { return value_; }
834
+
835
+ template <typename Func>
836
+ auto forward(Func&& f) -> decltype(f(key_, value_)) {
837
+ const K& keyRef = key_;
838
+ return f(keyRef, value_);
839
+ }
840
+
841
+ template <typename Func>
842
+ auto forward(Func&& f) const -> decltype(f(key_)) {
843
+ const K& keyRef = key_;
844
+ return f(keyRef);
845
+ }
846
+
847
+ template <typename Func>
848
+ auto forward(Func&& f) const -> decltype(f(key_, value_)) {
849
+ return f(key_, value_);
850
+ }
851
+ };
852
+
853
+ template <typename T>
854
+ struct HighsHashTableEntry<T, void> {
855
+ private:
856
+ T value_;
857
+
858
+ public:
859
+ HighsHashTableEntry(HighsHashTableEntry<T, void>&&) = default;
860
+ HighsHashTableEntry(const HighsHashTableEntry<T, void>&) = default;
861
+ ~HighsHashTableEntry() = default;
862
+ HighsHashTableEntry() = default;
863
+ HighsHashTableEntry<T, void>& operator=(HighsHashTableEntry<T, void>&&) =
864
+ default;
865
+ HighsHashTableEntry<T, void>& operator=(const HighsHashTableEntry<T, void>&) =
866
+ default;
867
+
868
+ // Add a constructor to accept an arbitrary argument pack for initialize the
869
+ // underlying value of type T. The enable if statement makes sure this
870
+ // overload is never selected when the type of the single argument is
871
+ // HighsHashTableEntry<T,void> so that the default move and copy constructures
872
+ // are preferred when they match and this is only used to initialize the value
873
+ // of type from a set of arguments which are properly forwarded.
874
+ // The std::tuple usage in enable_if is a work-around to make the statement
875
+ // legal when multiple arguments are passed in, since std::is_same expects a
876
+ // single type. In that case is_same will obviously return false and the
877
+ // overload is appropriate to initialize the value_ with multiple forwarded
878
+ // arguments.
879
+ template <typename... Args,
880
+ typename std::enable_if<
881
+ !std::is_same<
882
+ std::tuple<typename std::remove_cv<
883
+ typename std::remove_reference<Args>::type>::type...>,
884
+ std::tuple<HighsHashTableEntry<T, void>>>::value,
885
+ int>::type = 0>
886
+ HighsHashTableEntry(Args&&... args) : value_(std::forward<Args>(args)...) {}
887
+
888
+ const T& key() const { return value_; }
889
+ const T& value() const { return value_; }
890
+
891
+ template <typename Func>
892
+ auto forward(Func&& f) -> decltype(f(value_)) {
893
+ return f(value_);
894
+ }
895
+
896
+ template <typename Func>
897
+ auto forward(Func&& f) const -> decltype(f(value_)) {
898
+ return f(value_);
899
+ }
900
+ };
901
+
902
+ template <typename K, typename V = void>
903
+ class HighsHashTable {
904
+ struct OpNewDeleter {
905
+ void operator()(void* ptr) { ::operator delete(ptr); }
906
+ };
907
+
908
+ public:
909
+ using u8 = std::uint8_t;
910
+ using i8 = std::int8_t;
911
+
912
+ using u16 = std::uint16_t;
913
+ using i16 = std::int16_t;
914
+
915
+ using u32 = std::uint32_t;
916
+ using i32 = std::int32_t;
917
+
918
+ using u64 = std::uint64_t;
919
+ using i64 = std::int64_t;
920
+
921
+ using Entry = HighsHashTableEntry<K, V>;
922
+ using KeyType = K;
923
+ using ValueType =
924
+ typename std::remove_reference<decltype(Entry().value())>::type;
925
+
926
+ std::unique_ptr<Entry, OpNewDeleter> entries;
927
+ std::unique_ptr<u8[]> metadata;
928
+ u64 tableSizeMask;
929
+ u64 numHashShift;
930
+ u64 numElements = 0;
931
+
932
+ template <typename IterType>
933
+ class HashTableIterator {
934
+ u8* pos;
935
+ u8* end;
936
+ Entry* entryEnd;
937
+
938
+ public:
939
+ using difference_type = std::ptrdiff_t;
940
+ using value_type = IterType;
941
+ using pointer = IterType*;
942
+ using reference = IterType&;
943
+ using iterator_category = std::forward_iterator_tag;
944
+ HashTableIterator(u8* pos_, u8* end_, Entry* entryEnd_)
945
+ : pos(pos_), end(end_), entryEnd(entryEnd_) {}
946
+ HashTableIterator() = default;
947
+
948
+ HashTableIterator<IterType> operator++(int) {
949
+ // postfix
950
+ HashTableIterator<IterType> oldpos = *this;
951
+ for (++pos; pos != end; ++pos)
952
+ if ((*pos) & 0x80u) break;
953
+
954
+ return oldpos;
955
+ }
956
+
957
+ HashTableIterator<IterType>& operator++() {
958
+ // prefix
959
+ for (++pos; pos != end; ++pos)
960
+ if ((*pos) & 0x80u) break;
961
+
962
+ return *this;
963
+ }
964
+
965
+ reference operator*() const { return *(entryEnd - (end - pos)); }
966
+ pointer operator->() const { return (entryEnd - (end - pos)); }
967
+ HashTableIterator<IterType> operator+(difference_type v) const {
968
+ for (difference_type k = 0; k != v; ++k) ++(*this);
969
+ }
970
+
971
+ bool operator==(const HashTableIterator<IterType>& rhs) const {
972
+ return pos == rhs.pos;
973
+ }
974
+ bool operator!=(const HashTableIterator<IterType>& rhs) const {
975
+ return pos != rhs.pos;
976
+ }
977
+ };
978
+
979
+ using const_iterator = HashTableIterator<const Entry>;
980
+ using iterator = HashTableIterator<Entry>;
981
+
982
+ HighsHashTable() { makeEmptyTable(128); }
983
+ HighsHashTable(u64 minCapacity) {
984
+ u64 initCapacity = u64{1} << (u64)std::ceil(
985
+ std::log2(std::max(128.0, 8 * minCapacity / 7.0)));
986
+ makeEmptyTable(initCapacity);
987
+ }
988
+
989
+ iterator end() {
990
+ u64 capacity = tableSizeMask + 1;
991
+ return iterator{metadata.get() + capacity, metadata.get() + capacity,
992
+ entries.get() + capacity};
993
+ };
994
+
995
+ const_iterator end() const {
996
+ u64 capacity = tableSizeMask + 1;
997
+ return const_iterator{metadata.get() + capacity, metadata.get() + capacity,
998
+ entries.get() + capacity};
999
+ };
1000
+
1001
+ const_iterator begin() const {
1002
+ if (numElements == 0) return end();
1003
+ u64 capacity = tableSizeMask + 1;
1004
+ const_iterator iter{metadata.get(), metadata.get() + capacity,
1005
+ entries.get() + capacity};
1006
+ if (!occupied(metadata[0])) ++iter;
1007
+
1008
+ return iter;
1009
+ };
1010
+
1011
+ iterator begin() {
1012
+ if (numElements == 0) return end();
1013
+ u64 capacity = tableSizeMask + 1;
1014
+ iterator iter{metadata.get(), metadata.get() + capacity,
1015
+ entries.get() + capacity};
1016
+ if (!occupied(metadata[0])) ++iter;
1017
+
1018
+ return iter;
1019
+ };
1020
+
1021
+ private:
1022
+ u8 toMetadata(u64 hash) const { return (hash >> numHashShift) | 0x80u; }
1023
+
1024
+ static constexpr u64 maxDistance() { return 127; }
1025
+
1026
+ void makeEmptyTable(u64 capacity) {
1027
+ tableSizeMask = capacity - 1;
1028
+ numHashShift = 64 - HighsHashHelpers::log2i(capacity);
1029
+ assert(capacity == (u64{1} << (64 - numHashShift)));
1030
+ numElements = 0;
1031
+
1032
+ metadata = decltype(metadata)(new u8[capacity]{});
1033
+ entries =
1034
+ decltype(entries)((Entry*)::operator new(sizeof(Entry) * capacity));
1035
+ }
1036
+
1037
+ bool occupied(u8 meta) const { return meta & 0x80; }
1038
+
1039
+ u64 distanceFromIdealSlot(u64 pos) const {
1040
+ // we store 7 bits of the hash in the metadata. Assuming a decent
1041
+ // hashfunction it is practically never happening that an item travels more
1042
+ // than 127 slots from its ideal position, therefore, we can compute the
1043
+ // distance from the ideal position just as it would normally be done
1044
+ // assuming there is at most one overflow. Consider using 3 bits which gives
1045
+ // values from 0 to 7. When an item is at a position with lower bits 7 and
1046
+ // is placed 3 positions after its ideal position, the lower bits of the
1047
+ // hash value will overflow and yield the value 2. With the assumption that
1048
+ // an item never cycles through one full cycle of the range 0 to 7, its
1049
+ // position would never be placed in a position with lower bits 7 other than
1050
+ // its ideal position. This allows us to compute the distance from its ideal
1051
+ // position by simply ignoring an overflow. In our case the correct answer
1052
+ // would be 3, but we get (2 - 7)=-5. This, however, is the correct result 3
1053
+ // when promoting to an unsigned value and looking at the lower 3 bits.
1054
+
1055
+ return ((pos - metadata[pos])) & 0x7f;
1056
+ }
1057
+
1058
+ void growTable() {
1059
+ decltype(entries) oldEntries = std::move(entries);
1060
+ decltype(metadata) oldMetadata = std::move(metadata);
1061
+ u64 oldCapactiy = tableSizeMask + 1;
1062
+
1063
+ makeEmptyTable(2 * oldCapactiy);
1064
+
1065
+ for (u64 i = 0; i != oldCapactiy; ++i)
1066
+ if (occupied(oldMetadata[i])) insert(std::move(oldEntries.get()[i]));
1067
+ }
1068
+
1069
+ void shrinkTable() {
1070
+ decltype(entries) oldEntries = std::move(entries);
1071
+ decltype(metadata) oldMetadata = std::move(metadata);
1072
+ u64 oldCapactiy = tableSizeMask + 1;
1073
+
1074
+ makeEmptyTable(oldCapactiy / 2);
1075
+
1076
+ for (u64 i = 0; i != oldCapactiy; ++i)
1077
+ if (occupied(oldMetadata[i])) insert(std::move(oldEntries.get()[i]));
1078
+ }
1079
+
1080
+ bool findPosition(const KeyType& key, u8& meta, u64& startPos, u64& maxPos,
1081
+ u64& pos) const {
1082
+ u64 hash = HighsHashHelpers::hash(key);
1083
+ startPos = hash >> numHashShift;
1084
+ maxPos = (startPos + maxDistance()) & tableSizeMask;
1085
+ meta = toMetadata(hash);
1086
+
1087
+ const Entry* entryArray = entries.get();
1088
+ pos = startPos;
1089
+ do {
1090
+ if (!occupied(metadata[pos])) return false;
1091
+ if (metadata[pos] == meta &&
1092
+ HighsHashHelpers::equal(key, entryArray[pos].key()))
1093
+ return true;
1094
+
1095
+ u64 currentDistance = (pos - startPos) & tableSizeMask;
1096
+ if (currentDistance > distanceFromIdealSlot(pos)) return false;
1097
+
1098
+ pos = (pos + 1) & tableSizeMask;
1099
+ } while (pos != maxPos);
1100
+
1101
+ return false;
1102
+ }
1103
+
1104
+ public:
1105
+ void clear() {
1106
+ if (numElements) {
1107
+ u64 capacity = tableSizeMask + 1;
1108
+ if (!std::is_trivially_destructible<Entry>::value) {
1109
+ for (u64 i = 0; i < capacity; ++i)
1110
+ if (occupied(metadata[i])) entries.get()[i].~Entry();
1111
+ }
1112
+ if (capacity == 128) {
1113
+ std::memset(metadata.get(), 0, 128);
1114
+ numElements = 0;
1115
+ } else
1116
+ makeEmptyTable(128);
1117
+ }
1118
+ }
1119
+
1120
+ const ValueType* find(const KeyType& key) const {
1121
+ u64 pos, startPos, maxPos;
1122
+ u8 meta;
1123
+ if (findPosition(key, meta, startPos, maxPos, pos))
1124
+ return &(entries.get()[pos].value());
1125
+
1126
+ return nullptr;
1127
+ }
1128
+
1129
+ ValueType* find(const KeyType& key) {
1130
+ u64 pos, startPos, maxPos;
1131
+ u8 meta;
1132
+ if (findPosition(key, meta, startPos, maxPos, pos))
1133
+ return &(entries.get()[pos].value());
1134
+
1135
+ return nullptr;
1136
+ }
1137
+
1138
+ ValueType& operator[](const KeyType& key) {
1139
+ Entry* entryArray = entries.get();
1140
+ u64 pos, startPos, maxPos;
1141
+ u8 meta;
1142
+ if (findPosition(key, meta, startPos, maxPos, pos))
1143
+ return entryArray[pos].value();
1144
+
1145
+ if (numElements == ((tableSizeMask + 1) * 7) / 8 || pos == maxPos) {
1146
+ growTable();
1147
+ return (*this)[key];
1148
+ }
1149
+
1150
+ using std::swap;
1151
+ ValueType& insertLocation = entryArray[pos].value();
1152
+ Entry entry(key);
1153
+ ++numElements;
1154
+
1155
+ do {
1156
+ if (!occupied(metadata[pos])) {
1157
+ metadata[pos] = meta;
1158
+ new (&entryArray[pos]) Entry{std::move(entry)};
1159
+ return insertLocation;
1160
+ }
1161
+
1162
+ u64 currentDistance = (pos - startPos) & tableSizeMask;
1163
+ u64 distanceOfCurrentOccupant = distanceFromIdealSlot(pos);
1164
+ if (currentDistance > distanceOfCurrentOccupant) {
1165
+ // steal the position
1166
+ swap(entry, entryArray[pos]);
1167
+ swap(meta, metadata[pos]);
1168
+
1169
+ startPos = (pos - distanceOfCurrentOccupant) & tableSizeMask;
1170
+ maxPos = (startPos + maxDistance()) & tableSizeMask;
1171
+ }
1172
+ pos = (pos + 1) & tableSizeMask;
1173
+ } while (pos != maxPos);
1174
+
1175
+ growTable();
1176
+ insert(std::move(entry));
1177
+ return (*this)[key];
1178
+ }
1179
+
1180
+ template <typename... Args>
1181
+ bool insert(Args&&... args) {
1182
+ Entry entry(std::forward<Args>(args)...);
1183
+
1184
+ u64 pos, startPos, maxPos;
1185
+ u8 meta;
1186
+ if (findPosition(entry.key(), meta, startPos, maxPos, pos)) return false;
1187
+
1188
+ if (numElements == ((tableSizeMask + 1) * 7) / 8 || pos == maxPos) {
1189
+ growTable();
1190
+ return insert(std::move(entry));
1191
+ }
1192
+
1193
+ using std::swap;
1194
+ Entry* entryArray = entries.get();
1195
+ ++numElements;
1196
+
1197
+ do {
1198
+ if (!occupied(metadata[pos])) {
1199
+ metadata[pos] = meta;
1200
+ new (&entryArray[pos]) Entry{std::move(entry)};
1201
+ return true;
1202
+ }
1203
+
1204
+ u64 currentDistance = (pos - startPos) & tableSizeMask;
1205
+ u64 distanceOfCurrentOccupant = distanceFromIdealSlot(pos);
1206
+ if (currentDistance > distanceOfCurrentOccupant) {
1207
+ // steal the position
1208
+ swap(entry, entryArray[pos]);
1209
+ swap(meta, metadata[pos]);
1210
+
1211
+ startPos = (pos - distanceOfCurrentOccupant) & tableSizeMask;
1212
+ maxPos = (startPos + maxDistance()) & tableSizeMask;
1213
+ }
1214
+ pos = (pos + 1) & tableSizeMask;
1215
+ } while (pos != maxPos);
1216
+
1217
+ growTable();
1218
+ insert(std::move(entry));
1219
+ return true;
1220
+ }
1221
+
1222
+ bool erase(const KeyType& key) {
1223
+ u64 pos, startPos, maxPos;
1224
+ u8 meta;
1225
+ if (!findPosition(key, meta, startPos, maxPos, pos)) return false;
1226
+ // delete element at position pos
1227
+ Entry* entryArray = entries.get();
1228
+ entryArray[pos].~Entry();
1229
+ metadata[pos] = 0;
1230
+
1231
+ // retain at least a quarter of slots occupied, otherwise shrink the table
1232
+ // if its not at its minimum size already
1233
+ --numElements;
1234
+ u64 capacity = tableSizeMask + 1;
1235
+ if (capacity != 128 && numElements < capacity / 4) {
1236
+ shrinkTable();
1237
+ return true;
1238
+ }
1239
+
1240
+ // shift elements after pos backwards
1241
+ while (true) {
1242
+ u64 shift = (pos + 1) & tableSizeMask;
1243
+ if (!occupied(metadata[shift])) return true;
1244
+
1245
+ u64 dist = distanceFromIdealSlot(shift);
1246
+ if (dist == 0) return true;
1247
+
1248
+ entryArray[pos] = std::move(entryArray[shift]);
1249
+ metadata[pos] = metadata[shift];
1250
+ metadata[shift] = 0;
1251
+ pos = shift;
1252
+ }
1253
+ }
1254
+
1255
+ i64 size() const { return numElements; }
1256
+
1257
+ HighsHashTable(HighsHashTable<K, V>&&) = default;
1258
+ HighsHashTable<K, V>& operator=(HighsHashTable<K, V>&&) = default;
1259
+
1260
+ ~HighsHashTable() {
1261
+ if (!std::is_trivially_destructible<Entry>::value && metadata) {
1262
+ u64 capacity = tableSizeMask + 1;
1263
+ for (u64 i = 0; i < capacity; ++i) {
1264
+ if (occupied(metadata[i])) entries.get()[i].~Entry();
1265
+ }
1266
+ }
1267
+ }
1268
+ };
1269
+
1270
+ #endif