casadi 3.5.6.pre2__cp39-none-win_amd64.whl → 3.6.0__cp39-none-win_amd64.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 (1589) hide show
  1. casadi/__init__.py +2 -2
  2. casadi/_casadi.pyd +0 -0
  3. casadi/bin/libtinyxml2.dll +0 -0
  4. casadi/blasfeo.lib +0 -0
  5. casadi/casadi-cli.exe +0 -0
  6. casadi/casadi.lib +0 -0
  7. casadi/casadi.py +31192 -10129
  8. casadi/cbc.exe +0 -0
  9. casadi/clp.exe +0 -0
  10. casadi/cmake/casadi-config-version.cmake +1 -1
  11. casadi/cmake/highs/highs-config.cmake +9 -0
  12. casadi/cmake/highs/highs-targets-release.cmake +28 -0
  13. casadi/cmake/highs/highs-targets.cmake +103 -0
  14. casadi/cmake/osqp/osqp-config.cmake +1 -0
  15. casadi/cmake/osqp/osqp-targets-release.cmake +29 -0
  16. casadi/cmake/osqp/osqp-targets.cmake +101 -0
  17. casadi/cmake/proxsuite/find-external/Simde/FindSimde.cmake +39 -0
  18. casadi/cmake/proxsuite/proxsuiteConfig.cmake +177 -0
  19. casadi/cmake/proxsuite/proxsuiteConfigVersion.cmake +67 -0
  20. casadi/cmake/proxsuite/proxsuiteTargets.cmake +107 -0
  21. casadi/cmake/qdldl/qdldl-config.cmake +1 -0
  22. casadi/cmake/qdldl/qdldl-targets-release.cmake +29 -0
  23. casadi/cmake/qdldl/qdldl-targets.cmake +101 -0
  24. casadi/highs.exe +0 -0
  25. casadi/highs.lib +0 -0
  26. casadi/hpipm.lib +0 -0
  27. casadi/include/blasfeo.h +52 -0
  28. casadi/include/blasfeo_block_size.h +447 -0
  29. casadi/include/blasfeo_common.h +274 -0
  30. casadi/include/blasfeo_d_aux.h +255 -0
  31. casadi/include/blasfeo_d_aux_ext_dep.h +145 -0
  32. casadi/include/blasfeo_d_aux_ext_dep_ref.h +84 -0
  33. casadi/include/blasfeo_d_aux_old.h +75 -0
  34. casadi/include/blasfeo_d_aux_ref.h +208 -0
  35. casadi/include/blasfeo_d_aux_test.h +226 -0
  36. casadi/include/blasfeo_d_blas.h +46 -0
  37. casadi/include/blasfeo_d_blas_api.h +281 -0
  38. casadi/include/blasfeo_d_blasfeo_api.h +364 -0
  39. casadi/include/blasfeo_d_blasfeo_api_ref.h +147 -0
  40. casadi/include/blasfeo_d_blasfeo_hp_api.h +84 -0
  41. casadi/include/blasfeo_d_blasfeo_ref_api.h +283 -0
  42. casadi/include/blasfeo_d_kernel.h +1321 -0
  43. casadi/include/blasfeo_i_aux_ext_dep.h +69 -0
  44. casadi/include/blasfeo_m_aux.h +57 -0
  45. casadi/include/blasfeo_memory.h +62 -0
  46. casadi/include/blasfeo_naming.h +77 -0
  47. casadi/include/blasfeo_processor_features.h +88 -0
  48. casadi/include/blasfeo_s_aux.h +168 -0
  49. casadi/include/blasfeo_s_aux_ext_dep.h +141 -0
  50. casadi/include/blasfeo_s_aux_ext_dep_ref.h +82 -0
  51. casadi/include/blasfeo_s_aux_old.h +64 -0
  52. casadi/include/blasfeo_s_aux_ref.h +147 -0
  53. casadi/include/blasfeo_s_aux_test.h +177 -0
  54. casadi/include/blasfeo_s_blas.h +46 -0
  55. casadi/include/blasfeo_s_blas_api.h +182 -0
  56. casadi/include/blasfeo_s_blasfeo_api.h +284 -0
  57. casadi/include/blasfeo_s_blasfeo_api_ref.h +135 -0
  58. casadi/include/blasfeo_s_blasfeo_ref_api.h +252 -0
  59. casadi/include/blasfeo_s_kernel.h +692 -0
  60. casadi/include/blasfeo_stdlib.h +62 -0
  61. casadi/include/blasfeo_target.h +73 -0
  62. casadi/include/blasfeo_timing.h +114 -0
  63. casadi/include/blasfeo_v_aux_ext_dep.h +83 -0
  64. casadi/include/casadi/casadi.hpp +2 -2
  65. casadi/include/casadi/casadi.i +158 -30
  66. casadi/include/casadi/casadi_c.h +15 -15
  67. casadi/include/casadi/config.h +14 -11
  68. casadi/include/casadi/core/calculus.hpp +211 -91
  69. casadi/include/casadi/core/callback.hpp +78 -30
  70. casadi/include/casadi/core/casadi_common.hpp +16 -13
  71. casadi/include/casadi/core/casadi_enum.hpp +90 -0
  72. casadi/include/casadi/core/casadi_interrupt.hpp +5 -5
  73. casadi/include/casadi/core/casadi_limits.hpp +8 -5
  74. casadi/include/casadi/core/casadi_logger.hpp +6 -5
  75. casadi/include/casadi/core/casadi_meta.hpp +31 -16
  76. casadi/include/casadi/core/casadi_misc.hpp +59 -29
  77. casadi/include/casadi/core/casadi_types.hpp +14 -2
  78. casadi/include/casadi/core/code_generator.hpp +369 -92
  79. casadi/include/casadi/core/conic.hpp +35 -14
  80. casadi/include/casadi/core/core.hpp +2 -3
  81. casadi/include/casadi/core/dae_builder.hpp +598 -393
  82. casadi/include/casadi/core/dm.hpp +10 -2
  83. casadi/include/casadi/core/dm_fwd.hpp +2 -2
  84. casadi/include/casadi/core/dple.hpp +25 -11
  85. casadi/include/casadi/core/exception.hpp +33 -7
  86. casadi/include/casadi/core/expm.hpp +13 -7
  87. casadi/include/casadi/core/external.hpp +33 -28
  88. casadi/include/casadi/core/function.hpp +438 -174
  89. casadi/include/casadi/core/generic_expression.hpp +219 -52
  90. casadi/include/casadi/core/generic_matrix.hpp +386 -123
  91. casadi/include/casadi/core/generic_type.hpp +31 -14
  92. casadi/include/casadi/core/global_options.hpp +8 -6
  93. casadi/include/casadi/core/im.hpp +2 -2
  94. casadi/include/casadi/core/im_fwd.hpp +2 -2
  95. casadi/include/casadi/core/importer.hpp +49 -18
  96. casadi/include/casadi/core/integration_tools.hpp +37 -34
  97. casadi/include/casadi/core/integrator.hpp +126 -115
  98. casadi/include/casadi/core/interpolant.hpp +14 -11
  99. casadi/include/casadi/core/linsol.hpp +22 -8
  100. casadi/include/casadi/core/matrix_decl.hpp +280 -128
  101. casadi/include/casadi/core/matrix_fwd.hpp +2 -2
  102. casadi/include/casadi/core/mx.hpp +235 -75
  103. casadi/include/casadi/core/nlp_builder.hpp +5 -3
  104. casadi/include/casadi/core/nlp_tools.hpp +6 -4
  105. casadi/include/casadi/core/nlpsol.hpp +38 -15
  106. casadi/include/casadi/core/nonzeros.hpp +5 -2
  107. casadi/include/casadi/core/options.hpp +20 -8
  108. casadi/include/casadi/core/optistack.hpp +99 -39
  109. casadi/include/casadi/core/polynomial.hpp +5 -3
  110. casadi/include/casadi/core/printable.hpp +8 -4
  111. casadi/include/casadi/core/rootfinder.hpp +35 -14
  112. casadi/include/casadi/core/runtime/casadi_bilin.hpp +19 -1
  113. casadi/include/casadi/core/runtime/casadi_bound_consistency.hpp +19 -1
  114. casadi/include/casadi/core/runtime/casadi_cache.hpp +19 -1
  115. casadi/include/casadi/core/runtime/casadi_clear.hpp +19 -1
  116. casadi/include/casadi/core/runtime/casadi_clip_max.hpp +33 -0
  117. casadi/include/casadi/core/runtime/casadi_clip_min.hpp +33 -0
  118. casadi/include/casadi/core/runtime/casadi_convexify.hpp +20 -2
  119. casadi/include/casadi/core/runtime/casadi_copy.hpp +19 -1
  120. casadi/include/casadi/core/runtime/casadi_cvx.hpp +41 -24
  121. casadi/include/casadi/core/runtime/casadi_de_boor.hpp +19 -1
  122. casadi/include/casadi/core/runtime/casadi_dense_lsqr.hpp +247 -0
  123. casadi/include/casadi/core/runtime/casadi_densify.hpp +19 -1
  124. casadi/include/casadi/core/runtime/casadi_dot.hpp +19 -1
  125. casadi/include/casadi/core/runtime/casadi_feasiblesqpmethod.hpp +208 -0
  126. casadi/include/casadi/core/runtime/casadi_file_slurp.hpp +19 -1
  127. casadi/include/casadi/core/runtime/casadi_fill.hpp +19 -1
  128. casadi/include/casadi/core/runtime/casadi_finite_diff.hpp +19 -1
  129. casadi/include/casadi/core/runtime/casadi_flip.hpp +19 -1
  130. casadi/include/casadi/core/runtime/casadi_getu.hpp +19 -1
  131. casadi/include/casadi/core/runtime/casadi_iamax.hpp +19 -1
  132. casadi/include/casadi/core/runtime/casadi_interpn.hpp +19 -1
  133. casadi/include/casadi/core/runtime/casadi_interpn_grad.hpp +19 -1
  134. casadi/include/casadi/core/runtime/casadi_interpn_interpolate.hpp +19 -1
  135. casadi/include/casadi/core/runtime/casadi_interpn_weights.hpp +19 -1
  136. casadi/include/casadi/core/runtime/casadi_ipqp.hpp +865 -0
  137. casadi/include/casadi/core/runtime/casadi_jac.hpp +186 -0
  138. casadi/include/casadi/core/runtime/casadi_kkt.hpp +67 -0
  139. casadi/include/casadi/core/runtime/casadi_kron.hpp +19 -1
  140. casadi/include/casadi/core/runtime/casadi_ldl.hpp +19 -1
  141. casadi/include/casadi/core/runtime/casadi_logsumexp.hpp +41 -0
  142. casadi/include/casadi/core/runtime/casadi_low.hpp +19 -1
  143. casadi/include/casadi/core/runtime/casadi_lsqr.hpp +62 -3
  144. casadi/include/casadi/core/runtime/casadi_masked_norm_inf.hpp +33 -0
  145. casadi/include/casadi/core/runtime/casadi_max_viol.hpp +20 -1
  146. casadi/include/casadi/core/runtime/casadi_mmax.hpp +28 -0
  147. casadi/include/casadi/core/runtime/casadi_mmin.hpp +29 -0
  148. casadi/include/casadi/core/runtime/casadi_mtimes.hpp +19 -1
  149. casadi/include/casadi/core/runtime/casadi_mv.hpp +19 -1
  150. casadi/include/casadi/core/runtime/casadi_mv_dense.hpp +19 -1
  151. casadi/include/casadi/core/runtime/casadi_nd_boor_dual_eval.hpp +19 -1
  152. casadi/include/casadi/core/runtime/casadi_nd_boor_eval.hpp +19 -1
  153. casadi/include/casadi/core/runtime/casadi_newton.hpp +19 -1
  154. casadi/include/casadi/core/runtime/casadi_nlp.hpp +105 -12
  155. casadi/include/casadi/core/runtime/casadi_norm_1.hpp +19 -1
  156. casadi/include/casadi/core/runtime/casadi_norm_2.hpp +19 -1
  157. casadi/include/casadi/core/runtime/casadi_norm_inf.hpp +19 -1
  158. casadi/include/casadi/core/runtime/casadi_norm_inf_mul.hpp +19 -1
  159. casadi/include/casadi/core/runtime/casadi_polyval.hpp +19 -1
  160. casadi/include/casadi/core/runtime/casadi_project.hpp +19 -1
  161. casadi/include/casadi/core/runtime/casadi_qp.hpp +47 -1174
  162. casadi/include/casadi/core/runtime/casadi_qr.hpp +19 -1
  163. casadi/include/casadi/core/runtime/casadi_qrqp.hpp +1233 -0
  164. casadi/include/casadi/core/runtime/casadi_rank1.hpp +19 -1
  165. casadi/include/casadi/core/runtime/casadi_regularize.hpp +19 -1
  166. casadi/include/casadi/core/runtime/casadi_runtime.hpp +34 -3
  167. casadi/include/casadi/core/runtime/casadi_scal.hpp +19 -1
  168. casadi/include/casadi/core/runtime/casadi_sparsify.hpp +19 -1
  169. casadi/include/casadi/core/runtime/casadi_sparsity.hpp +24 -0
  170. casadi/include/casadi/core/runtime/casadi_sqpmethod.hpp +79 -21
  171. casadi/include/casadi/core/runtime/casadi_sum.hpp +31 -0
  172. casadi/include/casadi/core/runtime/casadi_sum_viol.hpp +20 -1
  173. casadi/include/casadi/core/runtime/casadi_swap.hpp +19 -1
  174. casadi/include/casadi/core/runtime/casadi_trans.hpp +19 -1
  175. casadi/include/casadi/core/runtime/casadi_tri_project.hpp +19 -1
  176. casadi/include/casadi/core/runtime/casadi_trilsolve.hpp +81 -0
  177. casadi/include/casadi/core/runtime/casadi_triusolve.hpp +81 -0
  178. casadi/include/casadi/core/runtime/casadi_vector_fmax.hpp +28 -0
  179. casadi/include/casadi/core/runtime/casadi_vector_fmin.hpp +28 -0
  180. casadi/include/casadi/core/runtime/casadi_vfmax.hpp +19 -1
  181. casadi/include/casadi/core/runtime/casadi_vfmin.hpp +19 -1
  182. casadi/include/casadi/core/runtime/shared.hpp +2 -2
  183. casadi/include/casadi/core/serializer.hpp +30 -25
  184. casadi/include/casadi/core/serializing_stream.hpp +25 -15
  185. casadi/include/casadi/core/shared_object.hpp +49 -18
  186. casadi/include/casadi/core/slice.hpp +10 -5
  187. casadi/include/casadi/core/sparsity.hpp +390 -119
  188. casadi/include/casadi/core/sparsity_interface.hpp +174 -49
  189. casadi/include/casadi/core/submatrix.hpp +8 -2
  190. casadi/include/casadi/core/sx.hpp +12 -2
  191. casadi/include/casadi/core/sx_elem.hpp +78 -27
  192. casadi/include/casadi/core/sx_fwd.hpp +3 -3
  193. casadi/include/casadi/core/timing.hpp +4 -2
  194. casadi/include/casadi/core/xml_file.hpp +18 -6
  195. casadi/include/casadi/core/xml_node.hpp +141 -71
  196. casadi/include/casadi/doc.i +35344 -71599
  197. casadi/include/casadi/doc_merged.i +20954 -58522
  198. casadi/include/casadi/mem.h +3 -2
  199. casadi/include/casadi/valgrind-python.supp +45 -0
  200. casadi/include/eigen3/Eigen/Cholesky +45 -0
  201. casadi/include/eigen3/Eigen/CholmodSupport +48 -0
  202. casadi/include/eigen3/Eigen/Core +384 -0
  203. casadi/include/eigen3/Eigen/Dense +7 -0
  204. casadi/include/eigen3/Eigen/Eigen +2 -0
  205. casadi/include/eigen3/Eigen/Eigenvalues +60 -0
  206. casadi/include/eigen3/Eigen/Geometry +59 -0
  207. casadi/include/eigen3/Eigen/Householder +29 -0
  208. casadi/include/eigen3/Eigen/IterativeLinearSolvers +48 -0
  209. casadi/include/eigen3/Eigen/Jacobi +32 -0
  210. casadi/include/eigen3/Eigen/KLUSupport +41 -0
  211. casadi/include/eigen3/Eigen/LU +47 -0
  212. casadi/include/eigen3/Eigen/MetisSupport +35 -0
  213. casadi/include/eigen3/Eigen/OrderingMethods +70 -0
  214. casadi/include/eigen3/Eigen/PaStiXSupport +49 -0
  215. casadi/include/eigen3/Eigen/PardisoSupport +35 -0
  216. casadi/include/eigen3/Eigen/QR +50 -0
  217. casadi/include/eigen3/Eigen/QtAlignedMalloc +39 -0
  218. casadi/include/eigen3/Eigen/SPQRSupport +34 -0
  219. casadi/include/eigen3/Eigen/SVD +50 -0
  220. casadi/include/eigen3/Eigen/Sparse +34 -0
  221. casadi/include/eigen3/Eigen/SparseCholesky +37 -0
  222. casadi/include/eigen3/Eigen/SparseCore +69 -0
  223. casadi/include/eigen3/Eigen/SparseLU +50 -0
  224. casadi/include/eigen3/Eigen/SparseQR +36 -0
  225. casadi/include/eigen3/Eigen/StdDeque +27 -0
  226. casadi/include/eigen3/Eigen/StdList +26 -0
  227. casadi/include/eigen3/Eigen/StdVector +27 -0
  228. casadi/include/eigen3/Eigen/SuperLUSupport +64 -0
  229. casadi/include/eigen3/Eigen/UmfPackSupport +40 -0
  230. casadi/include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
  231. casadi/include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
  232. casadi/include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  233. casadi/include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  234. casadi/include/eigen3/Eigen/src/Core/ArithmeticSequence.h +413 -0
  235. casadi/include/eigen3/Eigen/src/Core/Array.h +417 -0
  236. casadi/include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
  237. casadi/include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
  238. casadi/include/eigen3/Eigen/src/Core/Assign.h +90 -0
  239. casadi/include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
  240. casadi/include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
  241. casadi/include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
  242. casadi/include/eigen3/Eigen/src/Core/Block.h +448 -0
  243. casadi/include/eigen3/Eigen/src/Core/BooleanRedux.h +162 -0
  244. casadi/include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
  245. casadi/include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
  246. casadi/include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
  247. casadi/include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
  248. casadi/include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  249. casadi/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  250. casadi/include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  251. casadi/include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  252. casadi/include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
  253. casadi/include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
  254. casadi/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  255. casadi/include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
  256. casadi/include/eigen3/Eigen/src/Core/Diagonal.h +258 -0
  257. casadi/include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
  258. casadi/include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
  259. casadi/include/eigen3/Eigen/src/Core/Dot.h +318 -0
  260. casadi/include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
  261. casadi/include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  262. casadi/include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
  263. casadi/include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
  264. casadi/include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
  265. casadi/include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
  266. casadi/include/eigen3/Eigen/src/Core/IO.h +258 -0
  267. casadi/include/eigen3/Eigen/src/Core/IndexedView.h +237 -0
  268. casadi/include/eigen3/Eigen/src/Core/Inverse.h +117 -0
  269. casadi/include/eigen3/Eigen/src/Core/Map.h +171 -0
  270. casadi/include/eigen3/Eigen/src/Core/MapBase.h +310 -0
  271. casadi/include/eigen3/Eigen/src/Core/MathFunctions.h +2057 -0
  272. casadi/include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  273. casadi/include/eigen3/Eigen/src/Core/Matrix.h +565 -0
  274. casadi/include/eigen3/Eigen/src/Core/MatrixBase.h +547 -0
  275. casadi/include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
  276. casadi/include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
  277. casadi/include/eigen3/Eigen/src/Core/NumTraits.h +335 -0
  278. casadi/include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  279. casadi/include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
  280. casadi/include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
  281. casadi/include/eigen3/Eigen/src/Core/Product.h +191 -0
  282. casadi/include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
  283. casadi/include/eigen3/Eigen/src/Core/Random.h +218 -0
  284. casadi/include/eigen3/Eigen/src/Core/Redux.h +515 -0
  285. casadi/include/eigen3/Eigen/src/Core/Ref.h +381 -0
  286. casadi/include/eigen3/Eigen/src/Core/Replicate.h +142 -0
  287. casadi/include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
  288. casadi/include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
  289. casadi/include/eigen3/Eigen/src/Core/Reverse.h +217 -0
  290. casadi/include/eigen3/Eigen/src/Core/Select.h +164 -0
  291. casadi/include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
  292. casadi/include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  293. casadi/include/eigen3/Eigen/src/Core/Solve.h +188 -0
  294. casadi/include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
  295. casadi/include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
  296. casadi/include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
  297. casadi/include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
  298. casadi/include/eigen3/Eigen/src/Core/Stride.h +116 -0
  299. casadi/include/eigen3/Eigen/src/Core/Swap.h +68 -0
  300. casadi/include/eigen3/Eigen/src/Core/Transpose.h +464 -0
  301. casadi/include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
  302. casadi/include/eigen3/Eigen/src/Core/TriangularMatrix.h +1001 -0
  303. casadi/include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
  304. casadi/include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
  305. casadi/include/eigen3/Eigen/src/Core/Visitor.h +381 -0
  306. casadi/include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  307. casadi/include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  308. casadi/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  309. casadi/include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  310. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  311. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  312. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  313. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  314. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  315. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  316. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  317. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  318. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  319. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  320. casadi/include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  321. casadi/include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  322. casadi/include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  323. casadi/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  324. casadi/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  325. casadi/include/eigen3/Eigen/src/Core/arch/Default/Half.h +942 -0
  326. casadi/include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
  327. casadi/include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  328. casadi/include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  329. casadi/include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  330. casadi/include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  331. casadi/include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  332. casadi/include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  333. casadi/include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  334. casadi/include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  335. casadi/include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  336. casadi/include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  337. casadi/include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  338. casadi/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  339. casadi/include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  340. casadi/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  341. casadi/include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  342. casadi/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  343. casadi/include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  344. casadi/include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  345. casadi/include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  346. casadi/include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  347. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  348. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  349. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  350. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  351. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  352. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  353. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  354. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  355. casadi/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  356. casadi/include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  357. casadi/include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  358. casadi/include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
  359. casadi/include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  360. casadi/include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  361. casadi/include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  362. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  363. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  364. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  365. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  366. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  367. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  368. casadi/include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
  369. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  370. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  371. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  372. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  373. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  374. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  375. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  376. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  377. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  378. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  379. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  380. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  381. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  382. casadi/include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
  383. casadi/include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  384. casadi/include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
  385. casadi/include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  386. casadi/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  387. casadi/include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  388. casadi/include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
  389. casadi/include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
  390. casadi/include/eigen3/Eigen/src/Core/util/Macros.h +1464 -0
  391. casadi/include/eigen3/Eigen/src/Core/util/Memory.h +1163 -0
  392. casadi/include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
  393. casadi/include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
  394. casadi/include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  395. casadi/include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  396. casadi/include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
  397. casadi/include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  398. casadi/include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
  399. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  400. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  401. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  402. casadi/include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  403. casadi/include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  404. casadi/include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  405. casadi/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  406. casadi/include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  407. casadi/include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  408. casadi/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  409. casadi/include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  410. casadi/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  411. casadi/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  412. casadi/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  413. casadi/include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
  414. casadi/include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
  415. casadi/include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
  416. casadi/include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
  417. casadi/include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
  418. casadi/include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
  419. casadi/include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  420. casadi/include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
  421. casadi/include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
  422. casadi/include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
  423. casadi/include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
  424. casadi/include/eigen3/Eigen/src/Geometry/Transform.h +1563 -0
  425. casadi/include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
  426. casadi/include/eigen3/Eigen/src/Geometry/Umeyama.h +166 -0
  427. casadi/include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  428. casadi/include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
  429. casadi/include/eigen3/Eigen/src/Householder/Householder.h +176 -0
  430. casadi/include/eigen3/Eigen/src/Householder/HouseholderSequence.h +545 -0
  431. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  432. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  433. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
  434. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  435. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  436. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  437. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  438. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  439. casadi/include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
  440. casadi/include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  441. casadi/include/eigen3/Eigen/src/LU/Determinant.h +117 -0
  442. casadi/include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
  443. casadi/include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
  444. casadi/include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
  445. casadi/include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  446. casadi/include/eigen3/Eigen/src/LU/arch/InverseSize4.h +351 -0
  447. casadi/include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  448. casadi/include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
  449. casadi/include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  450. casadi/include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
  451. casadi/include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  452. casadi/include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  453. casadi/include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  454. casadi/include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  455. casadi/include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  456. casadi/include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  457. casadi/include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
  458. casadi/include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  459. casadi/include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  460. casadi/include/eigen3/Eigen/src/SVD/BDCSVD.h +1366 -0
  461. casadi/include/eigen3/Eigen/src/SVD/JacobiSVD.h +812 -0
  462. casadi/include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  463. casadi/include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
  464. casadi/include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  465. casadi/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  466. casadi/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  467. casadi/include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
  468. casadi/include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  469. casadi/include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  470. casadi/include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  471. casadi/include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
  472. casadi/include/eigen3/Eigen/src/SparseCore/SparseBlock.h +571 -0
  473. casadi/include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  474. casadi/include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  475. casadi/include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  476. casadi/include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  477. casadi/include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  478. casadi/include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  479. casadi/include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
  480. casadi/include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  481. casadi/include/eigen3/Eigen/src/SparseCore/SparseMap.h +305 -0
  482. casadi/include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  483. casadi/include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
  484. casadi/include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  485. casadi/include/eigen3/Eigen/src/SparseCore/SparseProduct.h +181 -0
  486. casadi/include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
  487. casadi/include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
  488. casadi/include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  489. casadi/include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  490. casadi/include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  491. casadi/include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  492. casadi/include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  493. casadi/include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
  494. casadi/include/eigen3/Eigen/src/SparseCore/SparseVector.h +478 -0
  495. casadi/include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
  496. casadi/include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  497. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU.h +923 -0
  498. casadi/include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  499. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  500. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  501. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
  502. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  503. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  504. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  505. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  506. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  507. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  508. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  509. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  510. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  511. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  512. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  513. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  514. casadi/include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
  515. casadi/include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
  516. casadi/include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
  517. casadi/include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
  518. casadi/include/eigen3/Eigen/src/StlSupport/details.h +84 -0
  519. casadi/include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  520. casadi/include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  521. casadi/include/eigen3/Eigen/src/misc/Image.h +82 -0
  522. casadi/include/eigen3/Eigen/src/misc/Kernel.h +79 -0
  523. casadi/include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
  524. casadi/include/eigen3/Eigen/src/misc/blas.h +440 -0
  525. casadi/include/eigen3/Eigen/src/misc/lapack.h +152 -0
  526. casadi/include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
  527. casadi/include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
  528. casadi/include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  529. casadi/include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  530. casadi/include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
  531. casadi/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  532. casadi/include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  533. casadi/include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  534. casadi/include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  535. casadi/include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  536. casadi/include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
  537. casadi/include/eigen3/signature_of_eigen3_matrix_library +1 -0
  538. casadi/include/eigen3/unsupported/Eigen/AdolcForward +159 -0
  539. casadi/include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
  540. casadi/include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
  541. casadi/include/eigen3/unsupported/Eigen/AutoDiff +46 -0
  542. casadi/include/eigen3/unsupported/Eigen/BVH +95 -0
  543. casadi/include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
  544. casadi/include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
  545. casadi/include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
  546. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
  547. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +329 -0
  548. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +247 -0
  549. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
  550. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
  551. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1093 -0
  552. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +518 -0
  553. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +377 -0
  554. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1023 -0
  555. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
  556. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
  557. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
  558. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
  559. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
  560. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
  561. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +456 -0
  562. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1132 -0
  563. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +544 -0
  564. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +214 -0
  565. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +347 -0
  566. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
  567. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
  568. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
  569. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
  570. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
  571. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
  572. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +236 -0
  573. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +490 -0
  574. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +236 -0
  575. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +983 -0
  576. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +703 -0
  577. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +388 -0
  578. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
  579. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +379 -0
  580. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +237 -0
  581. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
  582. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
  583. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +302 -0
  584. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
  585. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
  586. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
  587. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
  588. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +603 -0
  589. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +738 -0
  590. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +247 -0
  591. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
  592. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +263 -0
  593. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +216 -0
  594. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
  595. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
  596. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
  597. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1102 -0
  598. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +708 -0
  599. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +291 -0
  600. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +322 -0
  601. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +998 -0
  602. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
  603. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +966 -0
  604. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
  605. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
  606. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +465 -0
  607. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
  608. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
  609. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +471 -0
  610. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +161 -0
  611. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +346 -0
  612. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +303 -0
  613. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
  614. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
  615. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +629 -0
  616. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
  617. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
  618. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
  619. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
  620. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
  621. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
  622. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
  623. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
  624. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
  625. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
  626. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
  627. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
  628. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
  629. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +537 -0
  630. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
  631. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
  632. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
  633. casadi/include/eigen3/unsupported/Eigen/EulerAngles +43 -0
  634. casadi/include/eigen3/unsupported/Eigen/FFT +419 -0
  635. casadi/include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
  636. casadi/include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
  637. casadi/include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
  638. casadi/include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
  639. casadi/include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
  640. casadi/include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
  641. casadi/include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
  642. casadi/include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
  643. casadi/include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
  644. casadi/include/eigen3/unsupported/Eigen/Polynomials +137 -0
  645. casadi/include/eigen3/unsupported/Eigen/Skyline +39 -0
  646. casadi/include/eigen3/unsupported/Eigen/SparseExtra +54 -0
  647. casadi/include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
  648. casadi/include/eigen3/unsupported/Eigen/Splines +35 -0
  649. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
  650. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
  651. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
  652. casadi/include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
  653. casadi/include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
  654. casadi/include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
  655. casadi/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +355 -0
  656. casadi/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +305 -0
  657. casadi/include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
  658. casadi/include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
  659. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
  660. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
  661. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
  662. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
  663. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
  664. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
  665. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
  666. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
  667. casadi/include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
  668. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
  669. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
  670. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
  671. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
  672. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
  673. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
  674. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
  675. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
  676. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
  677. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
  678. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
  679. casadi/include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
  680. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
  681. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
  682. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
  683. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
  684. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
  685. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
  686. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
  687. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
  688. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
  689. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
  690. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
  691. casadi/include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
  692. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
  693. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +428 -0
  694. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
  695. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
  696. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
  697. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
  698. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
  699. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
  700. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
  701. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
  702. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
  703. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
  704. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
  705. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
  706. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
  707. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
  708. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
  709. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
  710. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
  711. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
  712. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
  713. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
  714. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
  715. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
  716. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
  717. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
  718. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2045 -0
  719. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
  720. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
  721. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
  722. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +46 -0
  723. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
  724. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
  725. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
  726. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
  727. casadi/include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
  728. casadi/include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
  729. casadi/include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
  730. casadi/include/highs/HConfig.h +23 -0
  731. casadi/include/highs/Highs.h +1270 -0
  732. casadi/include/highs/filereaderlp/builder.hpp +26 -0
  733. casadi/include/highs/filereaderlp/model.hpp +71 -0
  734. casadi/include/highs/filereaderlp/reader.hpp +10 -0
  735. casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
  736. casadi/include/highs/interfaces/OsiHiGHSSolverInterface.hpp +415 -0
  737. casadi/include/highs/interfaces/highs_c_api.h +1720 -0
  738. casadi/include/highs/io/Filereader.h +49 -0
  739. casadi/include/highs/io/FilereaderEms.h +35 -0
  740. casadi/include/highs/io/FilereaderLp.h +56 -0
  741. casadi/include/highs/io/FilereaderMps.h +32 -0
  742. casadi/include/highs/io/HMPSIO.h +83 -0
  743. casadi/include/highs/io/HMpsFF.h +235 -0
  744. casadi/include/highs/io/HighsIO.h +93 -0
  745. casadi/include/highs/io/LoadOptions.h +26 -0
  746. casadi/include/highs/ipm/IpxWrapper.h +74 -0
  747. casadi/include/highs/lp_data/HConst.h +250 -0
  748. casadi/include/highs/lp_data/HStruct.h +100 -0
  749. casadi/include/highs/lp_data/HighsAnalysis.h +28 -0
  750. casadi/include/highs/lp_data/HighsDebug.h +39 -0
  751. casadi/include/highs/lp_data/HighsInfo.h +305 -0
  752. casadi/include/highs/lp_data/HighsInfoDebug.h +32 -0
  753. casadi/include/highs/lp_data/HighsLp.h +77 -0
  754. casadi/include/highs/lp_data/HighsLpSolverObject.h +47 -0
  755. casadi/include/highs/lp_data/HighsLpUtils.h +255 -0
  756. casadi/include/highs/lp_data/HighsModelUtils.h +95 -0
  757. casadi/include/highs/lp_data/HighsOptions.h +1061 -0
  758. casadi/include/highs/lp_data/HighsRanging.h +48 -0
  759. casadi/include/highs/lp_data/HighsRuntimeOptions.h +261 -0
  760. casadi/include/highs/lp_data/HighsSolution.h +137 -0
  761. casadi/include/highs/lp_data/HighsSolutionDebug.h +92 -0
  762. casadi/include/highs/lp_data/HighsSolve.h +26 -0
  763. casadi/include/highs/lp_data/HighsStatus.h +34 -0
  764. casadi/include/highs/mip/HighsCliqueTable.h +320 -0
  765. casadi/include/highs/mip/HighsConflictPool.h +114 -0
  766. casadi/include/highs/mip/HighsCutGeneration.h +98 -0
  767. casadi/include/highs/mip/HighsCutPool.h +173 -0
  768. casadi/include/highs/mip/HighsDebugSol.h +144 -0
  769. casadi/include/highs/mip/HighsDomain.h +633 -0
  770. casadi/include/highs/mip/HighsDomainChange.h +53 -0
  771. casadi/include/highs/mip/HighsDynamicRowMatrix.h +107 -0
  772. casadi/include/highs/mip/HighsGFkSolve.h +443 -0
  773. casadi/include/highs/mip/HighsImplications.h +148 -0
  774. casadi/include/highs/mip/HighsLpAggregator.h +55 -0
  775. casadi/include/highs/mip/HighsLpRelaxation.h +357 -0
  776. casadi/include/highs/mip/HighsMipSolver.h +91 -0
  777. casadi/include/highs/mip/HighsMipSolverData.h +189 -0
  778. casadi/include/highs/mip/HighsModkSeparator.h +65 -0
  779. casadi/include/highs/mip/HighsNodeQueue.h +318 -0
  780. casadi/include/highs/mip/HighsObjectiveFunction.h +76 -0
  781. casadi/include/highs/mip/HighsPathSeparator.h +44 -0
  782. casadi/include/highs/mip/HighsPrimalHeuristics.h +70 -0
  783. casadi/include/highs/mip/HighsPseudocost.h +353 -0
  784. casadi/include/highs/mip/HighsRedcostFixing.h +47 -0
  785. casadi/include/highs/mip/HighsSearch.h +245 -0
  786. casadi/include/highs/mip/HighsSeparation.h +46 -0
  787. casadi/include/highs/mip/HighsSeparator.h +58 -0
  788. casadi/include/highs/mip/HighsTableauSeparator.h +39 -0
  789. casadi/include/highs/mip/HighsTransformedLp.h +68 -0
  790. casadi/include/highs/model/HighsHessian.h +47 -0
  791. casadi/include/highs/model/HighsHessianUtils.h +47 -0
  792. casadi/include/highs/model/HighsModel.h +41 -0
  793. casadi/include/highs/parallel/HighsBinarySemaphore.h +113 -0
  794. casadi/include/highs/parallel/HighsCacheAlign.h +87 -0
  795. casadi/include/highs/parallel/HighsCombinable.h +121 -0
  796. casadi/include/highs/parallel/HighsMutex.h +128 -0
  797. casadi/include/highs/parallel/HighsParallel.h +128 -0
  798. casadi/include/highs/parallel/HighsRaceTimer.h +43 -0
  799. casadi/include/highs/parallel/HighsSchedulerConstants.h +24 -0
  800. casadi/include/highs/parallel/HighsSpinMutex.h +52 -0
  801. casadi/include/highs/parallel/HighsSplitDeque.h +583 -0
  802. casadi/include/highs/parallel/HighsTask.h +176 -0
  803. casadi/include/highs/parallel/HighsTaskExecutor.h +201 -0
  804. casadi/include/highs/presolve/HPresolve.h +349 -0
  805. casadi/include/highs/presolve/HPresolveAnalysis.h +53 -0
  806. casadi/include/highs/presolve/HighsPostsolveStack.h +846 -0
  807. casadi/include/highs/presolve/HighsSymmetry.h +285 -0
  808. casadi/include/highs/presolve/ICrash.h +120 -0
  809. casadi/include/highs/presolve/ICrashUtil.h +65 -0
  810. casadi/include/highs/presolve/ICrashX.h +28 -0
  811. casadi/include/highs/presolve/PresolveComponent.h +131 -0
  812. casadi/include/highs/qpsolver/perturbation.hpp +8 -0
  813. casadi/include/highs/qpsolver/quass.hpp +23 -0
  814. casadi/include/highs/qpsolver/scaling.hpp +8 -0
  815. casadi/include/highs/qpsolver/vector.hpp +235 -0
  816. casadi/include/highs/simplex/HApp.h +424 -0
  817. casadi/include/highs/simplex/HEkk.h +368 -0
  818. casadi/include/highs/simplex/HEkkDual.h +517 -0
  819. casadi/include/highs/simplex/HEkkDualRHS.h +139 -0
  820. casadi/include/highs/simplex/HEkkDualRow.h +206 -0
  821. casadi/include/highs/simplex/HEkkPrimal.h +192 -0
  822. casadi/include/highs/simplex/HSimplex.h +49 -0
  823. casadi/include/highs/simplex/HSimplexDebug.h +53 -0
  824. casadi/include/highs/simplex/HSimplexNla.h +186 -0
  825. casadi/include/highs/simplex/HSimplexReport.h +26 -0
  826. casadi/include/highs/simplex/HighsSimplexAnalysis.h +377 -0
  827. casadi/include/highs/simplex/SimplexConst.h +272 -0
  828. casadi/include/highs/simplex/SimplexStruct.h +258 -0
  829. casadi/include/highs/simplex/SimplexTimer.h +429 -0
  830. casadi/include/highs/test/DevKkt.h +148 -0
  831. casadi/include/highs/test/KktCh2.h +84 -0
  832. casadi/include/highs/util/FactorTimer.h +226 -0
  833. casadi/include/highs/util/HFactor.h +560 -0
  834. casadi/include/highs/util/HFactorConst.h +86 -0
  835. casadi/include/highs/util/HFactorDebug.h +60 -0
  836. casadi/include/highs/util/HSet.h +94 -0
  837. casadi/include/highs/util/HVector.h +27 -0
  838. casadi/include/highs/util/HVectorBase.h +107 -0
  839. casadi/include/highs/util/HighsCDouble.h +312 -0
  840. casadi/include/highs/util/HighsComponent.h +58 -0
  841. casadi/include/highs/util/HighsDataStack.h +88 -0
  842. casadi/include/highs/util/HighsDisjointSets.h +112 -0
  843. casadi/include/highs/util/HighsHash.h +1255 -0
  844. casadi/include/highs/util/HighsHashTree.h +1425 -0
  845. casadi/include/highs/util/HighsInt.h +41 -0
  846. casadi/include/highs/util/HighsIntegers.h +218 -0
  847. casadi/include/highs/util/HighsLinearSumBounds.h +162 -0
  848. casadi/include/highs/util/HighsMatrixPic.h +42 -0
  849. casadi/include/highs/util/HighsMatrixSlice.h +563 -0
  850. casadi/include/highs/util/HighsMatrixUtils.h +59 -0
  851. casadi/include/highs/util/HighsRandom.h +235 -0
  852. casadi/include/highs/util/HighsRbTree.h +457 -0
  853. casadi/include/highs/util/HighsSort.h +136 -0
  854. casadi/include/highs/util/HighsSparseMatrix.h +140 -0
  855. casadi/include/highs/util/HighsSparseVectorSum.h +100 -0
  856. casadi/include/highs/util/HighsSplay.h +140 -0
  857. casadi/include/highs/util/HighsTimer.h +335 -0
  858. casadi/include/highs/util/HighsUtils.h +193 -0
  859. casadi/include/highs/util/stringutil.h +41 -0
  860. casadi/include/hpipm_aux_mem.h +52 -0
  861. casadi/include/hpipm_aux_string.h +50 -0
  862. casadi/include/hpipm_common.h +76 -0
  863. casadi/include/hpipm_d_cast_qcqp.h +71 -0
  864. casadi/include/hpipm_d_cond.h +135 -0
  865. casadi/include/hpipm_d_cond_aux.h +92 -0
  866. casadi/include/hpipm_d_cond_qcqp.h +129 -0
  867. casadi/include/hpipm_d_core_qp_ipm.h +101 -0
  868. casadi/include/hpipm_d_core_qp_ipm_aux.h +68 -0
  869. casadi/include/hpipm_d_dense_qcqp.h +199 -0
  870. casadi/include/hpipm_d_dense_qcqp_dim.h +98 -0
  871. casadi/include/hpipm_d_dense_qcqp_ipm.h +193 -0
  872. casadi/include/hpipm_d_dense_qcqp_res.h +108 -0
  873. casadi/include/hpipm_d_dense_qcqp_sol.h +85 -0
  874. casadi/include/hpipm_d_dense_qcqp_utils.h +82 -0
  875. casadi/include/hpipm_d_dense_qp.h +207 -0
  876. casadi/include/hpipm_d_dense_qp_dim.h +92 -0
  877. casadi/include/hpipm_d_dense_qp_ipm.h +260 -0
  878. casadi/include/hpipm_d_dense_qp_kkt.h +72 -0
  879. casadi/include/hpipm_d_dense_qp_res.h +106 -0
  880. casadi/include/hpipm_d_dense_qp_sol.h +94 -0
  881. casadi/include/hpipm_d_dense_qp_utils.h +83 -0
  882. casadi/include/hpipm_d_ocp_qcqp.h +322 -0
  883. casadi/include/hpipm_d_ocp_qcqp_dim.h +130 -0
  884. casadi/include/hpipm_d_ocp_qcqp_ipm.h +192 -0
  885. casadi/include/hpipm_d_ocp_qcqp_red.h +118 -0
  886. casadi/include/hpipm_d_ocp_qcqp_res.h +115 -0
  887. casadi/include/hpipm_d_ocp_qcqp_sol.h +114 -0
  888. casadi/include/hpipm_d_ocp_qcqp_utils.h +81 -0
  889. casadi/include/hpipm_d_ocp_qp.h +306 -0
  890. casadi/include/hpipm_d_ocp_qp_dim.h +142 -0
  891. casadi/include/hpipm_d_ocp_qp_ipm.h +252 -0
  892. casadi/include/hpipm_d_ocp_qp_kkt.h +66 -0
  893. casadi/include/hpipm_d_ocp_qp_red.h +117 -0
  894. casadi/include/hpipm_d_ocp_qp_res.h +113 -0
  895. casadi/include/hpipm_d_ocp_qp_sol.h +128 -0
  896. casadi/include/hpipm_d_ocp_qp_utils.h +82 -0
  897. casadi/include/hpipm_d_part_cond.h +115 -0
  898. casadi/include/hpipm_d_part_cond_qcqp.h +106 -0
  899. casadi/include/hpipm_d_sim_erk.h +122 -0
  900. casadi/include/hpipm_d_sim_rk.h +71 -0
  901. casadi/include/hpipm_d_tree_ocp_qcqp.h +213 -0
  902. casadi/include/hpipm_d_tree_ocp_qcqp_dim.h +117 -0
  903. casadi/include/hpipm_d_tree_ocp_qcqp_ipm.h +191 -0
  904. casadi/include/hpipm_d_tree_ocp_qcqp_res.h +109 -0
  905. casadi/include/hpipm_d_tree_ocp_qcqp_sol.h +99 -0
  906. casadi/include/hpipm_d_tree_ocp_qcqp_utils.h +84 -0
  907. casadi/include/hpipm_d_tree_ocp_qp.h +195 -0
  908. casadi/include/hpipm_d_tree_ocp_qp_dim.h +111 -0
  909. casadi/include/hpipm_d_tree_ocp_qp_ipm.h +209 -0
  910. casadi/include/hpipm_d_tree_ocp_qp_kkt.h +52 -0
  911. casadi/include/hpipm_d_tree_ocp_qp_res.h +107 -0
  912. casadi/include/hpipm_d_tree_ocp_qp_sol.h +100 -0
  913. casadi/include/hpipm_d_tree_ocp_qp_utils.h +83 -0
  914. casadi/include/hpipm_m_dense_qp.h +68 -0
  915. casadi/include/hpipm_m_dense_qp_dim.h +68 -0
  916. casadi/include/hpipm_m_ocp_qp.h +49 -0
  917. casadi/include/hpipm_m_ocp_qp_ipm_hard.h +115 -0
  918. casadi/include/hpipm_m_ocp_qp_kkt.h +45 -0
  919. casadi/include/hpipm_s_cast_qcqp.h +72 -0
  920. casadi/include/hpipm_s_cond.h +137 -0
  921. casadi/include/hpipm_s_cond_aux.h +92 -0
  922. casadi/include/hpipm_s_cond_qcqp.h +130 -0
  923. casadi/include/hpipm_s_core_qp_ipm.h +101 -0
  924. casadi/include/hpipm_s_core_qp_ipm_aux.h +68 -0
  925. casadi/include/hpipm_s_dense_qcqp.h +200 -0
  926. casadi/include/hpipm_s_dense_qcqp_dim.h +99 -0
  927. casadi/include/hpipm_s_dense_qcqp_ipm.h +204 -0
  928. casadi/include/hpipm_s_dense_qcqp_res.h +109 -0
  929. casadi/include/hpipm_s_dense_qcqp_sol.h +86 -0
  930. casadi/include/hpipm_s_dense_qcqp_utils.h +83 -0
  931. casadi/include/hpipm_s_dense_qp.h +207 -0
  932. casadi/include/hpipm_s_dense_qp_dim.h +94 -0
  933. casadi/include/hpipm_s_dense_qp_ipm.h +260 -0
  934. casadi/include/hpipm_s_dense_qp_kkt.h +72 -0
  935. casadi/include/hpipm_s_dense_qp_res.h +107 -0
  936. casadi/include/hpipm_s_dense_qp_sol.h +94 -0
  937. casadi/include/hpipm_s_dense_qp_utils.h +84 -0
  938. casadi/include/hpipm_s_ocp_qcqp.h +322 -0
  939. casadi/include/hpipm_s_ocp_qcqp_dim.h +131 -0
  940. casadi/include/hpipm_s_ocp_qcqp_ipm.h +193 -0
  941. casadi/include/hpipm_s_ocp_qcqp_red.h +119 -0
  942. casadi/include/hpipm_s_ocp_qcqp_res.h +116 -0
  943. casadi/include/hpipm_s_ocp_qcqp_sol.h +115 -0
  944. casadi/include/hpipm_s_ocp_qcqp_utils.h +82 -0
  945. casadi/include/hpipm_s_ocp_qp.h +306 -0
  946. casadi/include/hpipm_s_ocp_qp_dim.h +141 -0
  947. casadi/include/hpipm_s_ocp_qp_ipm.h +252 -0
  948. casadi/include/hpipm_s_ocp_qp_kkt.h +66 -0
  949. casadi/include/hpipm_s_ocp_qp_red.h +118 -0
  950. casadi/include/hpipm_s_ocp_qp_res.h +115 -0
  951. casadi/include/hpipm_s_ocp_qp_sol.h +128 -0
  952. casadi/include/hpipm_s_ocp_qp_utils.h +83 -0
  953. casadi/include/hpipm_s_part_cond.h +115 -0
  954. casadi/include/hpipm_s_part_cond_qcqp.h +107 -0
  955. casadi/include/hpipm_s_sim_erk.h +121 -0
  956. casadi/include/hpipm_s_sim_rk.h +72 -0
  957. casadi/include/hpipm_s_tree_ocp_qcqp.h +213 -0
  958. casadi/include/hpipm_s_tree_ocp_qcqp_dim.h +118 -0
  959. casadi/include/hpipm_s_tree_ocp_qcqp_ipm.h +192 -0
  960. casadi/include/hpipm_s_tree_ocp_qcqp_res.h +110 -0
  961. casadi/include/hpipm_s_tree_ocp_qcqp_sol.h +97 -0
  962. casadi/include/hpipm_s_tree_ocp_qcqp_utils.h +85 -0
  963. casadi/include/hpipm_s_tree_ocp_qp.h +196 -0
  964. casadi/include/hpipm_s_tree_ocp_qp_dim.h +111 -0
  965. casadi/include/hpipm_s_tree_ocp_qp_ipm.h +208 -0
  966. casadi/include/hpipm_s_tree_ocp_qp_kkt.h +54 -0
  967. casadi/include/hpipm_s_tree_ocp_qp_res.h +108 -0
  968. casadi/include/hpipm_s_tree_ocp_qp_sol.h +98 -0
  969. casadi/include/hpipm_s_tree_ocp_qp_utils.h +84 -0
  970. casadi/include/hpipm_scenario_tree.h +70 -0
  971. casadi/include/hpipm_timing.h +67 -0
  972. casadi/include/hpipm_tree.h +76 -0
  973. casadi/include/licenses/FMI-Standard-2.0.2/LICENSE.txt +473 -0
  974. casadi/include/licenses/FMI-Standard-3.0/LICENSE.txt +464 -0
  975. casadi/include/licenses/blasfeo-external/LICENSE.txt +26 -0
  976. casadi/include/licenses/bonmin-external/Bonmin/LICENSE +87 -0
  977. casadi/include/licenses/bonmin-external/LICENSE +3 -0
  978. casadi/include/licenses/casadi/LICENSE/LICENSE.txt +165 -0
  979. casadi/include/licenses/casadi-sundials/LICENSE +64 -0
  980. casadi/include/licenses/casadi-sundials/cvodes/LICENSE +60 -0
  981. casadi/include/licenses/casadi-sundials/idas/LICENSE +59 -0
  982. casadi/include/licenses/casadi-sundials/kinsol/LICENSE +59 -0
  983. casadi/include/licenses/casadi-sundials/sundials/LICENSE +67 -0
  984. casadi/include/licenses/cbc-external/Cbc/LICENSE +239 -0
  985. casadi/include/licenses/cbc-external/LICENSE +245 -0
  986. casadi/include/licenses/cgl-external/Cgl/LICENSE +239 -0
  987. casadi/include/licenses/cgl-external/LICENSE +245 -0
  988. casadi/include/licenses/clp-external/Clp/LICENSE +239 -0
  989. casadi/include/licenses/clp-external/LICENSE +245 -0
  990. casadi/include/licenses/coinutils-external/CoinUtils/LICENSE +239 -0
  991. casadi/include/licenses/coinutils-external/LICENSE +245 -0
  992. casadi/include/licenses/highs-external/LICENSE +21 -0
  993. casadi/include/licenses/highs-external/extern/filereaderlp/LICENSE +19 -0
  994. casadi/include/licenses/hpipm-external/LICENSE.txt +26 -0
  995. casadi/include/licenses/ipopt-external/LICENSE +260 -0
  996. casadi/include/licenses/metis-external/LICENSE +87 -0
  997. casadi/include/licenses/metis-external/metis-4.0/LICENSE +18 -0
  998. casadi/include/licenses/mockups-external/LICENSE +21 -0
  999. casadi/include/licenses/mumps-external/LICENSE +87 -0
  1000. casadi/include/licenses/mumps-external/MUMPS/LICENSE +50 -0
  1001. casadi/include/licenses/openblas-external/LICENSE +29 -0
  1002. casadi/include/licenses/openblas-external/ctest/LICENSE +23 -0
  1003. casadi/include/licenses/openblas-external/lapack-netlib/LAPACKE/LICENSE +26 -0
  1004. casadi/include/licenses/openblas-external/lapack-netlib/LICENSE +48 -0
  1005. casadi/include/licenses/openblas-external/reference/LICENSE +23 -0
  1006. casadi/include/licenses/openblas-external/relapack/LICENSE +22 -0
  1007. casadi/include/licenses/openblas-external/test/LICENSE +23 -0
  1008. casadi/include/licenses/osi-external/LICENSE +245 -0
  1009. casadi/include/licenses/osi-external/Osi/LICENSE +239 -0
  1010. casadi/include/licenses/osqp-external/LICENSE +201 -0
  1011. casadi/include/licenses/osqp-external/lin_sys/direct/qdldl/amd/LICENSE +36 -0
  1012. casadi/include/licenses/osqp-external/lin_sys/direct/qdldl/qdldl_sources/LICENSE +201 -0
  1013. casadi/include/licenses/proxqp-external/LICENSE +25 -0
  1014. casadi/include/licenses/proxqp-external/bindings/python/external/pybind11/LICENSE +29 -0
  1015. casadi/include/licenses/proxqp-external/cmake-module/LICENSE +4 -0
  1016. casadi/include/licenses/proxqp-external/cmake-module/doxygen/MathJax/LICENSE +202 -0
  1017. casadi/include/licenses/proxqp-external/external/cereal/LICENSE +24 -0
  1018. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/LICENSE +21 -0
  1019. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/rapidjson/LICENSE +13 -0
  1020. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/rapidjson/msinttypes/LICENSE +29 -0
  1021. casadi/include/licenses/qpOASES/LICENSE.txt +503 -0
  1022. casadi/include/licenses/superscs-external/LICENSE.txt +24 -0
  1023. casadi/include/licenses/tinyxml2-9.0.0/LICENSE.txt +18 -0
  1024. casadi/include/osqp/auxil.h +181 -0
  1025. casadi/include/osqp/constants.h +129 -0
  1026. casadi/include/osqp/cs.h +180 -0
  1027. casadi/include/osqp/ctrlc.h +56 -0
  1028. casadi/include/osqp/error.h +38 -0
  1029. casadi/include/osqp/glob_opts.h +167 -0
  1030. casadi/include/osqp/lin_alg.h +216 -0
  1031. casadi/include/osqp/lin_sys.h +54 -0
  1032. casadi/include/osqp/osqp.h +430 -0
  1033. casadi/include/osqp/osqp_configure.h +49 -0
  1034. casadi/include/osqp/polish.h +25 -0
  1035. casadi/include/osqp/proj.h +37 -0
  1036. casadi/include/osqp/scaling.h +44 -0
  1037. casadi/include/osqp/types.h +326 -0
  1038. casadi/include/osqp/util.h +222 -0
  1039. casadi/include/proxsuite/config.hpp +68 -0
  1040. casadi/include/proxsuite/deprecated.hpp +56 -0
  1041. casadi/include/proxsuite/fwd.hpp +52 -0
  1042. casadi/include/proxsuite/helpers/common.hpp +70 -0
  1043. casadi/include/proxsuite/helpers/instruction-set.hpp +275 -0
  1044. casadi/include/proxsuite/helpers/optional.hpp +46 -0
  1045. casadi/include/proxsuite/helpers/tl-optional.hpp +2472 -0
  1046. casadi/include/proxsuite/helpers/version.hpp +39 -0
  1047. casadi/include/proxsuite/linalg/dense/core.hpp +863 -0
  1048. casadi/include/proxsuite/linalg/dense/factorize.hpp +375 -0
  1049. casadi/include/proxsuite/linalg/dense/ldlt.hpp +817 -0
  1050. casadi/include/proxsuite/linalg/dense/modify.hpp +333 -0
  1051. casadi/include/proxsuite/linalg/dense/solve.hpp +38 -0
  1052. casadi/include/proxsuite/linalg/dense/update.hpp +330 -0
  1053. casadi/include/proxsuite/linalg/sparse/core.hpp +531 -0
  1054. casadi/include/proxsuite/linalg/sparse/factorize.hpp +1303 -0
  1055. casadi/include/proxsuite/linalg/sparse/rowmod.hpp +443 -0
  1056. casadi/include/proxsuite/linalg/sparse/update.hpp +348 -0
  1057. casadi/include/proxsuite/linalg/veg/internal/assert_impl.hpp +20 -0
  1058. casadi/include/proxsuite/linalg/veg/internal/collection_algo.hpp +93 -0
  1059. casadi/include/proxsuite/linalg/veg/internal/dbg.hpp +15 -0
  1060. casadi/include/proxsuite/linalg/veg/internal/delete_special_members.hpp +77 -0
  1061. casadi/include/proxsuite/linalg/veg/internal/dyn_index.hpp +292 -0
  1062. casadi/include/proxsuite/linalg/veg/internal/epilogue.hpp +31 -0
  1063. casadi/include/proxsuite/linalg/veg/internal/external/hedley.ext.hpp +2074 -0
  1064. casadi/include/proxsuite/linalg/veg/internal/external/unhedley.ext.hpp +148 -0
  1065. casadi/include/proxsuite/linalg/veg/internal/fix_index.hpp +339 -0
  1066. casadi/include/proxsuite/linalg/veg/internal/has_asan.hpp +17 -0
  1067. casadi/include/proxsuite/linalg/veg/internal/integer_seq.hpp +248 -0
  1068. casadi/include/proxsuite/linalg/veg/internal/macros.hpp +1312 -0
  1069. casadi/include/proxsuite/linalg/veg/internal/narrow.hpp +46 -0
  1070. casadi/include/proxsuite/linalg/veg/internal/preprocessor.hpp +434 -0
  1071. casadi/include/proxsuite/linalg/veg/internal/prologue.hpp +157 -0
  1072. casadi/include/proxsuite/linalg/veg/internal/std.hpp +13 -0
  1073. casadi/include/proxsuite/linalg/veg/internal/terminate.hpp +22 -0
  1074. casadi/include/proxsuite/linalg/veg/internal/typedefs.hpp +58 -0
  1075. casadi/include/proxsuite/linalg/veg/memory/address.hpp +97 -0
  1076. casadi/include/proxsuite/linalg/veg/memory/alloc.hpp +352 -0
  1077. casadi/include/proxsuite/linalg/veg/memory/dynamic_stack.hpp +504 -0
  1078. casadi/include/proxsuite/linalg/veg/memory/placement.hpp +202 -0
  1079. casadi/include/proxsuite/linalg/veg/memory/stack_alloc.hpp +239 -0
  1080. casadi/include/proxsuite/linalg/veg/ref.hpp +148 -0
  1081. casadi/include/proxsuite/linalg/veg/slice.hpp +240 -0
  1082. casadi/include/proxsuite/linalg/veg/tuple.hpp +876 -0
  1083. casadi/include/proxsuite/linalg/veg/type_traits/alloc.hpp +169 -0
  1084. casadi/include/proxsuite/linalg/veg/type_traits/assignable.hpp +53 -0
  1085. casadi/include/proxsuite/linalg/veg/type_traits/constructible.hpp +217 -0
  1086. casadi/include/proxsuite/linalg/veg/type_traits/core.hpp +298 -0
  1087. casadi/include/proxsuite/linalg/veg/type_traits/invocable.hpp +47 -0
  1088. casadi/include/proxsuite/linalg/veg/type_traits/primitives.hpp +43 -0
  1089. casadi/include/proxsuite/linalg/veg/type_traits/tags.hpp +47 -0
  1090. casadi/include/proxsuite/linalg/veg/util/assert.hpp +48 -0
  1091. casadi/include/proxsuite/linalg/veg/util/dbg.hpp +6 -0
  1092. casadi/include/proxsuite/linalg/veg/util/defer.hpp +57 -0
  1093. casadi/include/proxsuite/linalg/veg/util/dynstack_alloc.hpp +19 -0
  1094. casadi/include/proxsuite/linalg/veg/util/get.hpp +153 -0
  1095. casadi/include/proxsuite/linalg/veg/util/index.hpp +6 -0
  1096. casadi/include/proxsuite/linalg/veg/util/unreachable.hpp +41 -0
  1097. casadi/include/proxsuite/linalg/veg/vec.hpp +1034 -0
  1098. casadi/include/proxsuite/proxqp/dense/dense.hpp +10 -0
  1099. casadi/include/proxsuite/proxqp/dense/fwd.hpp +55 -0
  1100. casadi/include/proxsuite/proxqp/dense/helpers.hpp +520 -0
  1101. casadi/include/proxsuite/proxqp/dense/linesearch.hpp +517 -0
  1102. casadi/include/proxsuite/proxqp/dense/model.hpp +147 -0
  1103. casadi/include/proxsuite/proxqp/dense/preconditioner/identity.hpp +113 -0
  1104. casadi/include/proxsuite/proxqp/dense/preconditioner/ruiz.hpp +571 -0
  1105. casadi/include/proxsuite/proxqp/dense/solver.hpp +1330 -0
  1106. casadi/include/proxsuite/proxqp/dense/utils.hpp +415 -0
  1107. casadi/include/proxsuite/proxqp/dense/views.hpp +1466 -0
  1108. casadi/include/proxsuite/proxqp/dense/workspace.hpp +264 -0
  1109. casadi/include/proxsuite/proxqp/dense/wrapper.hpp +491 -0
  1110. casadi/include/proxsuite/proxqp/results.hpp +212 -0
  1111. casadi/include/proxsuite/proxqp/settings.hpp +302 -0
  1112. casadi/include/proxsuite/proxqp/sparse/fwd.hpp +58 -0
  1113. casadi/include/proxsuite/proxqp/sparse/helpers.hpp +309 -0
  1114. casadi/include/proxsuite/proxqp/sparse/model.hpp +228 -0
  1115. casadi/include/proxsuite/proxqp/sparse/preconditioner/identity.hpp +64 -0
  1116. casadi/include/proxsuite/proxqp/sparse/preconditioner/ruiz.hpp +569 -0
  1117. casadi/include/proxsuite/proxqp/sparse/solver.hpp +1441 -0
  1118. casadi/include/proxsuite/proxqp/sparse/sparse.hpp +10 -0
  1119. casadi/include/proxsuite/proxqp/sparse/utils.hpp +815 -0
  1120. casadi/include/proxsuite/proxqp/sparse/views.hpp +63 -0
  1121. casadi/include/proxsuite/proxqp/sparse/workspace.hpp +790 -0
  1122. casadi/include/proxsuite/proxqp/sparse/wrapper.hpp +772 -0
  1123. casadi/include/proxsuite/proxqp/status.hpp +46 -0
  1124. casadi/include/proxsuite/proxqp/timings.hpp +101 -0
  1125. casadi/include/proxsuite/proxqp/utils/prints.hpp +47 -0
  1126. casadi/include/proxsuite/proxqp/utils/random_qp_problems.hpp +669 -0
  1127. casadi/include/proxsuite/serialization/archive.hpp +231 -0
  1128. casadi/include/proxsuite/serialization/eigen.hpp +107 -0
  1129. casadi/include/proxsuite/serialization/model.hpp +34 -0
  1130. casadi/include/proxsuite/serialization/results.hpp +74 -0
  1131. casadi/include/proxsuite/serialization/settings.hpp +60 -0
  1132. casadi/include/proxsuite/serialization/wrapper.hpp +24 -0
  1133. casadi/include/proxsuite/warning.hpp +35 -0
  1134. casadi/include/simde/arm/neon/aba.h +208 -0
  1135. casadi/include/simde/arm/neon/abd.h +384 -0
  1136. casadi/include/simde/arm/neon/abdl.h +147 -0
  1137. casadi/include/simde/arm/neon/abs.h +408 -0
  1138. casadi/include/simde/arm/neon/add.h +681 -0
  1139. casadi/include/simde/arm/neon/addl.h +127 -0
  1140. casadi/include/simde/arm/neon/addl_high.h +127 -0
  1141. casadi/include/simde/arm/neon/addlv.h +317 -0
  1142. casadi/include/simde/arm/neon/addv.h +447 -0
  1143. casadi/include/simde/arm/neon/addw.h +222 -0
  1144. casadi/include/simde/arm/neon/addw_high.h +193 -0
  1145. casadi/include/simde/arm/neon/and.h +552 -0
  1146. casadi/include/simde/arm/neon/bic.h +472 -0
  1147. casadi/include/simde/arm/neon/bsl.h +448 -0
  1148. casadi/include/simde/arm/neon/cagt.h +168 -0
  1149. casadi/include/simde/arm/neon/ceq.h +711 -0
  1150. casadi/include/simde/arm/neon/ceqz.h +335 -0
  1151. casadi/include/simde/arm/neon/cge.h +677 -0
  1152. casadi/include/simde/arm/neon/cgez.h +378 -0
  1153. casadi/include/simde/arm/neon/cgt.h +686 -0
  1154. casadi/include/simde/arm/neon/cgtz.h +380 -0
  1155. casadi/include/simde/arm/neon/cle.h +677 -0
  1156. casadi/include/simde/arm/neon/clez.h +378 -0
  1157. casadi/include/simde/arm/neon/cls.h +148 -0
  1158. casadi/include/simde/arm/neon/clt.h +679 -0
  1159. casadi/include/simde/arm/neon/cltz.h +263 -0
  1160. casadi/include/simde/arm/neon/clz.h +423 -0
  1161. casadi/include/simde/arm/neon/cnt.h +145 -0
  1162. casadi/include/simde/arm/neon/combine.h +343 -0
  1163. casadi/include/simde/arm/neon/create.h +186 -0
  1164. casadi/include/simde/arm/neon/cvt.h +492 -0
  1165. casadi/include/simde/arm/neon/dot.h +171 -0
  1166. casadi/include/simde/arm/neon/dot_lane.h +196 -0
  1167. casadi/include/simde/arm/neon/dup_lane.h +702 -0
  1168. casadi/include/simde/arm/neon/dup_n.h +534 -0
  1169. casadi/include/simde/arm/neon/eor.h +552 -0
  1170. casadi/include/simde/arm/neon/ext.h +887 -0
  1171. casadi/include/simde/arm/neon/get_high.h +260 -0
  1172. casadi/include/simde/arm/neon/get_lane.h +499 -0
  1173. casadi/include/simde/arm/neon/get_low.h +276 -0
  1174. casadi/include/simde/arm/neon/hadd.h +287 -0
  1175. casadi/include/simde/arm/neon/hsub.h +287 -0
  1176. casadi/include/simde/arm/neon/ld1.h +399 -0
  1177. casadi/include/simde/arm/neon/ld3.h +609 -0
  1178. casadi/include/simde/arm/neon/ld4.h +448 -0
  1179. casadi/include/simde/arm/neon/max.h +614 -0
  1180. casadi/include/simde/arm/neon/maxnm.h +215 -0
  1181. casadi/include/simde/arm/neon/maxv.h +400 -0
  1182. casadi/include/simde/arm/neon/min.h +660 -0
  1183. casadi/include/simde/arm/neon/minnm.h +215 -0
  1184. casadi/include/simde/arm/neon/minv.h +424 -0
  1185. casadi/include/simde/arm/neon/mla.h +530 -0
  1186. casadi/include/simde/arm/neon/mla_n.h +333 -0
  1187. casadi/include/simde/arm/neon/mlal.h +156 -0
  1188. casadi/include/simde/arm/neon/mlal_high.h +156 -0
  1189. casadi/include/simde/arm/neon/mlal_n.h +128 -0
  1190. casadi/include/simde/arm/neon/mls.h +264 -0
  1191. casadi/include/simde/arm/neon/mlsl.h +124 -0
  1192. casadi/include/simde/arm/neon/mlsl_high.h +124 -0
  1193. casadi/include/simde/arm/neon/mlsl_n.h +96 -0
  1194. casadi/include/simde/arm/neon/movl.h +208 -0
  1195. casadi/include/simde/arm/neon/movl_high.h +126 -0
  1196. casadi/include/simde/arm/neon/movn.h +195 -0
  1197. casadi/include/simde/arm/neon/movn_high.h +125 -0
  1198. casadi/include/simde/arm/neon/mul.h +594 -0
  1199. casadi/include/simde/arm/neon/mul_lane.h +472 -0
  1200. casadi/include/simde/arm/neon/mul_n.h +383 -0
  1201. casadi/include/simde/arm/neon/mull.h +236 -0
  1202. casadi/include/simde/arm/neon/mull_high.h +125 -0
  1203. casadi/include/simde/arm/neon/mull_n.h +158 -0
  1204. casadi/include/simde/arm/neon/mvn.h +426 -0
  1205. casadi/include/simde/arm/neon/neg.h +393 -0
  1206. casadi/include/simde/arm/neon/orn.h +505 -0
  1207. casadi/include/simde/arm/neon/orr.h +552 -0
  1208. casadi/include/simde/arm/neon/padal.h +211 -0
  1209. casadi/include/simde/arm/neon/padd.h +293 -0
  1210. casadi/include/simde/arm/neon/paddl.h +239 -0
  1211. casadi/include/simde/arm/neon/pmax.h +253 -0
  1212. casadi/include/simde/arm/neon/pmin.h +260 -0
  1213. casadi/include/simde/arm/neon/qabs.h +281 -0
  1214. casadi/include/simde/arm/neon/qadd.h +553 -0
  1215. casadi/include/simde/arm/neon/qdmulh.h +125 -0
  1216. casadi/include/simde/arm/neon/qdmull.h +125 -0
  1217. casadi/include/simde/arm/neon/qmovn.h +273 -0
  1218. casadi/include/simde/arm/neon/qmovn_high.h +127 -0
  1219. casadi/include/simde/arm/neon/qmovun.h +159 -0
  1220. casadi/include/simde/arm/neon/qneg.h +301 -0
  1221. casadi/include/simde/arm/neon/qrdmulh.h +165 -0
  1222. casadi/include/simde/arm/neon/qrdmulh_n.h +136 -0
  1223. casadi/include/simde/arm/neon/qshl.h +732 -0
  1224. casadi/include/simde/arm/neon/qsub.h +549 -0
  1225. casadi/include/simde/arm/neon/qtbl.h +455 -0
  1226. casadi/include/simde/arm/neon/qtbx.h +470 -0
  1227. casadi/include/simde/arm/neon/rbit.h +165 -0
  1228. casadi/include/simde/arm/neon/reinterpret.h +3101 -0
  1229. casadi/include/simde/arm/neon/rev16.h +137 -0
  1230. casadi/include/simde/arm/neon/rev32.h +235 -0
  1231. casadi/include/simde/arm/neon/rev64.h +358 -0
  1232. casadi/include/simde/arm/neon/rhadd.h +406 -0
  1233. casadi/include/simde/arm/neon/rnd.h +143 -0
  1234. casadi/include/simde/arm/neon/rndi.h +135 -0
  1235. casadi/include/simde/arm/neon/rndm.h +143 -0
  1236. casadi/include/simde/arm/neon/rndn.h +135 -0
  1237. casadi/include/simde/arm/neon/rndp.h +143 -0
  1238. casadi/include/simde/arm/neon/rshl.h +903 -0
  1239. casadi/include/simde/arm/neon/rshr_n.h +471 -0
  1240. casadi/include/simde/arm/neon/rsra_n.h +209 -0
  1241. casadi/include/simde/arm/neon/set_lane.h +422 -0
  1242. casadi/include/simde/arm/neon/shl.h +805 -0
  1243. casadi/include/simde/arm/neon/shl_n.h +560 -0
  1244. casadi/include/simde/arm/neon/shr_n.h +612 -0
  1245. casadi/include/simde/arm/neon/sra_n.h +202 -0
  1246. casadi/include/simde/arm/neon/st1.h +353 -0
  1247. casadi/include/simde/arm/neon/st1_lane.h +363 -0
  1248. casadi/include/simde/arm/neon/st3.h +426 -0
  1249. casadi/include/simde/arm/neon/st4.h +445 -0
  1250. casadi/include/simde/arm/neon/sub.h +659 -0
  1251. casadi/include/simde/arm/neon/subl.h +127 -0
  1252. casadi/include/simde/arm/neon/subw.h +221 -0
  1253. casadi/include/simde/arm/neon/subw_high.h +222 -0
  1254. casadi/include/simde/arm/neon/tbl.h +224 -0
  1255. casadi/include/simde/arm/neon/tbx.h +247 -0
  1256. casadi/include/simde/arm/neon/trn.h +252 -0
  1257. casadi/include/simde/arm/neon/trn1.h +500 -0
  1258. casadi/include/simde/arm/neon/trn2.h +499 -0
  1259. casadi/include/simde/arm/neon/tst.h +540 -0
  1260. casadi/include/simde/arm/neon/types.h +683 -0
  1261. casadi/include/simde/arm/neon/uqadd.h +325 -0
  1262. casadi/include/simde/arm/neon/uzp.h +252 -0
  1263. casadi/include/simde/arm/neon/uzp1.h +643 -0
  1264. casadi/include/simde/arm/neon/uzp2.h +647 -0
  1265. casadi/include/simde/arm/neon/zip.h +252 -0
  1266. casadi/include/simde/arm/neon/zip1.h +625 -0
  1267. casadi/include/simde/arm/neon/zip2.h +625 -0
  1268. casadi/include/simde/arm/neon.h +166 -0
  1269. casadi/include/simde/check.h +276 -0
  1270. casadi/include/simde/debug-trap.h +85 -0
  1271. casadi/include/simde/hedley.h +1971 -0
  1272. casadi/include/simde/simde-align.h +449 -0
  1273. casadi/include/simde/simde-arch.h +532 -0
  1274. casadi/include/simde/simde-common.h +890 -0
  1275. casadi/include/simde/simde-complex.h +148 -0
  1276. casadi/include/simde/simde-constify.h +397 -0
  1277. casadi/include/simde/simde-detect-clang.h +109 -0
  1278. casadi/include/simde/simde-diagnostic.h +428 -0
  1279. casadi/include/simde/simde-features.h +522 -0
  1280. casadi/include/simde/simde-math.h +1805 -0
  1281. casadi/include/simde/x86/avx.h +6193 -0
  1282. casadi/include/simde/x86/avx2.h +5660 -0
  1283. casadi/include/simde/x86/avx512/2intersect.h +250 -0
  1284. casadi/include/simde/x86/avx512/abs.h +562 -0
  1285. casadi/include/simde/x86/avx512/add.h +641 -0
  1286. casadi/include/simde/x86/avx512/adds.h +390 -0
  1287. casadi/include/simde/x86/avx512/and.h +305 -0
  1288. casadi/include/simde/x86/avx512/andnot.h +193 -0
  1289. casadi/include/simde/x86/avx512/avg.h +258 -0
  1290. casadi/include/simde/x86/avx512/blend.h +293 -0
  1291. casadi/include/simde/x86/avx512/broadcast.h +897 -0
  1292. casadi/include/simde/x86/avx512/cast.h +324 -0
  1293. casadi/include/simde/x86/avx512/cmp.h +587 -0
  1294. casadi/include/simde/x86/avx512/cmpeq.h +179 -0
  1295. casadi/include/simde/x86/avx512/cmpge.h +104 -0
  1296. casadi/include/simde/x86/avx512/cmpgt.h +189 -0
  1297. casadi/include/simde/x86/avx512/cmple.h +103 -0
  1298. casadi/include/simde/x86/avx512/cmplt.h +123 -0
  1299. casadi/include/simde/x86/avx512/copysign.h +86 -0
  1300. casadi/include/simde/x86/avx512/cvt.h +122 -0
  1301. casadi/include/simde/x86/avx512/cvts.h +723 -0
  1302. casadi/include/simde/x86/avx512/div.h +162 -0
  1303. casadi/include/simde/x86/avx512/extract.h +198 -0
  1304. casadi/include/simde/x86/avx512/fmadd.h +136 -0
  1305. casadi/include/simde/x86/avx512/fmsub.h +108 -0
  1306. casadi/include/simde/x86/avx512/fnmadd.h +108 -0
  1307. casadi/include/simde/x86/avx512/fnmsub.h +108 -0
  1308. casadi/include/simde/x86/avx512/insert.h +193 -0
  1309. casadi/include/simde/x86/avx512/kshift.h +152 -0
  1310. casadi/include/simde/x86/avx512/load.h +67 -0
  1311. casadi/include/simde/x86/avx512/loadu.h +113 -0
  1312. casadi/include/simde/x86/avx512/lzcnt.h +209 -0
  1313. casadi/include/simde/x86/avx512/madd.h +155 -0
  1314. casadi/include/simde/x86/avx512/maddubs.h +159 -0
  1315. casadi/include/simde/x86/avx512/max.h +587 -0
  1316. casadi/include/simde/x86/avx512/min.h +587 -0
  1317. casadi/include/simde/x86/avx512/mov.h +859 -0
  1318. casadi/include/simde/x86/avx512/mov_mask.h +372 -0
  1319. casadi/include/simde/x86/avx512/movm.h +460 -0
  1320. casadi/include/simde/x86/avx512/mul.h +279 -0
  1321. casadi/include/simde/x86/avx512/mulhi.h +65 -0
  1322. casadi/include/simde/x86/avx512/mulhrs.h +65 -0
  1323. casadi/include/simde/x86/avx512/mullo.h +117 -0
  1324. casadi/include/simde/x86/avx512/negate.h +88 -0
  1325. casadi/include/simde/x86/avx512/or.h +252 -0
  1326. casadi/include/simde/x86/avx512/packs.h +122 -0
  1327. casadi/include/simde/x86/avx512/packus.h +122 -0
  1328. casadi/include/simde/x86/avx512/permutex2var.h +1645 -0
  1329. casadi/include/simde/x86/avx512/permutexvar.h +1180 -0
  1330. casadi/include/simde/x86/avx512/sad.h +77 -0
  1331. casadi/include/simde/x86/avx512/set.h +477 -0
  1332. casadi/include/simde/x86/avx512/set1.h +331 -0
  1333. casadi/include/simde/x86/avx512/set4.h +140 -0
  1334. casadi/include/simde/x86/avx512/setone.h +66 -0
  1335. casadi/include/simde/x86/avx512/setr.h +144 -0
  1336. casadi/include/simde/x86/avx512/setr4.h +140 -0
  1337. casadi/include/simde/x86/avx512/setzero.h +90 -0
  1338. casadi/include/simde/x86/avx512/shuffle.h +176 -0
  1339. casadi/include/simde/x86/avx512/sll.h +247 -0
  1340. casadi/include/simde/x86/avx512/slli.h +179 -0
  1341. casadi/include/simde/x86/avx512/sllv.h +68 -0
  1342. casadi/include/simde/x86/avx512/sqrt.h +127 -0
  1343. casadi/include/simde/x86/avx512/sra.h +81 -0
  1344. casadi/include/simde/x86/avx512/srai.h +70 -0
  1345. casadi/include/simde/x86/avx512/srav.h +67 -0
  1346. casadi/include/simde/x86/avx512/srl.h +216 -0
  1347. casadi/include/simde/x86/avx512/srli.h +180 -0
  1348. casadi/include/simde/x86/avx512/srlv.h +282 -0
  1349. casadi/include/simde/x86/avx512/store.h +93 -0
  1350. casadi/include/simde/x86/avx512/storeu.h +93 -0
  1351. casadi/include/simde/x86/avx512/sub.h +351 -0
  1352. casadi/include/simde/x86/avx512/subs.h +222 -0
  1353. casadi/include/simde/x86/avx512/test.h +193 -0
  1354. casadi/include/simde/x86/avx512/types.h +380 -0
  1355. casadi/include/simde/x86/avx512/unpackhi.h +380 -0
  1356. casadi/include/simde/x86/avx512/unpacklo.h +104 -0
  1357. casadi/include/simde/x86/avx512/xor.h +263 -0
  1358. casadi/include/simde/x86/avx512/xorsign.h +72 -0
  1359. casadi/include/simde/x86/avx512.h +108 -0
  1360. casadi/include/simde/x86/clmul.h +414 -0
  1361. casadi/include/simde/x86/fma.h +724 -0
  1362. casadi/include/simde/x86/gfni.h +802 -0
  1363. casadi/include/simde/x86/mmx.h +2399 -0
  1364. casadi/include/simde/x86/sse.h +4471 -0
  1365. casadi/include/simde/x86/sse2.h +7389 -0
  1366. casadi/include/simde/x86/sse3.h +499 -0
  1367. casadi/include/simde/x86/sse4.1.h +2216 -0
  1368. casadi/include/simde/x86/sse4.2.h +347 -0
  1369. casadi/include/simde/x86/ssse3.h +1032 -0
  1370. casadi/include/simde/x86/svml.h +12139 -0
  1371. casadi/include/simde/x86/xop.h +3644 -0
  1372. casadi/include/superscs/cones.h +185 -0
  1373. casadi/include/superscs/constants.h +144 -0
  1374. casadi/include/superscs/cs.h +109 -0
  1375. casadi/include/superscs/ctrlc.h +77 -0
  1376. casadi/include/superscs/directions.h +125 -0
  1377. casadi/include/superscs/glbopts.h +240 -0
  1378. casadi/include/superscs/linAlg.h +437 -0
  1379. casadi/include/superscs/linSys.h +205 -0
  1380. casadi/include/superscs/linsys/amatrix.h +77 -0
  1381. casadi/include/superscs/linsys/common.h +49 -0
  1382. casadi/include/superscs/normalize.h +138 -0
  1383. casadi/include/superscs/scs.h +656 -0
  1384. casadi/include/superscs/scs_blas.h +79 -0
  1385. casadi/include/superscs/scs_parser.h +187 -0
  1386. casadi/include/superscs/unit_test_util.h +210 -0
  1387. casadi/include/superscs/util.h +354 -0
  1388. casadi/include/tinyxml2.h +2380 -0
  1389. casadi/lapack.lib +0 -0
  1390. casadi/lib/cmake/tinyxml2/tinyxml2-config-version.cmake +67 -0
  1391. casadi/lib/cmake/tinyxml2/tinyxml2-config.cmake +57 -0
  1392. casadi/lib/cmake/tinyxml2/tinyxml2-shared-targets-release.cmake +19 -0
  1393. casadi/lib/cmake/tinyxml2/tinyxml2-shared-targets.cmake +95 -0
  1394. casadi/lib/libtinyxml2.dll.a +0 -0
  1395. casadi/lib/pkgconfig/tinyxml2.pc +10 -0
  1396. casadi/libCbc-3.dll +0 -0
  1397. casadi/libCbc.dll.a +0 -0
  1398. casadi/libCbc.la +1 -1
  1399. casadi/libCbcSolver-3.dll +0 -0
  1400. casadi/libCbcSolver.dll.a +0 -0
  1401. casadi/libCbcSolver.la +1 -1
  1402. casadi/libCgl-1.dll +0 -0
  1403. casadi/libCgl.dll.a +0 -0
  1404. casadi/libCgl.la +1 -1
  1405. casadi/libClp-1.dll +0 -0
  1406. casadi/libClp.dll.a +0 -0
  1407. casadi/libClp.la +1 -1
  1408. casadi/libClpSolver-1.dll +0 -0
  1409. casadi/libClpSolver.dll.a +0 -0
  1410. casadi/libClpSolver.la +1 -1
  1411. casadi/libCoinUtils-3.dll +0 -0
  1412. casadi/libCoinUtils.dll.a +0 -0
  1413. casadi/libFortranHighs.dll +0 -0
  1414. casadi/libFortranHighs.dll.a +0 -0
  1415. casadi/libOsi-1.dll +0 -0
  1416. casadi/libOsi.dll.a +0 -0
  1417. casadi/libOsiCbc-3.dll +0 -0
  1418. casadi/libOsiCbc.dll.a +0 -0
  1419. casadi/libOsiCbc.la +1 -1
  1420. casadi/libOsiClp-1.dll +0 -0
  1421. casadi/libOsiClp.dll.a +0 -0
  1422. casadi/libOsiClp.la +1 -1
  1423. casadi/libOsiCommonTests-1.dll +0 -0
  1424. casadi/libOsiCommonTests.dll.a +0 -0
  1425. casadi/libOsiHighs.dll +0 -0
  1426. casadi/libOsiHighs.dll.a +0 -0
  1427. casadi/libatomic-1.dll +0 -0
  1428. casadi/libblasfeo.dll +0 -0
  1429. casadi/libblasfeo.dll.a +0 -0
  1430. casadi/libbonmin-4.dll +0 -0
  1431. casadi/libbonmin.dll.a +0 -0
  1432. casadi/libbonmin.la +1 -1
  1433. casadi/{libopenblas.dll → libcasadi-tp-openblas.dll} +0 -0
  1434. casadi/{libopenblas.dll.a → libcasadi-tp-openblas.dll.a} +0 -0
  1435. casadi/libcasadi.dll +0 -0
  1436. casadi/libcasadi.dll.a +0 -0
  1437. casadi/libcasadi_conic_cbc.dll +0 -0
  1438. casadi/libcasadi_conic_cbc.dll.a +0 -0
  1439. casadi/libcasadi_conic_clp.dll +0 -0
  1440. casadi/libcasadi_conic_clp.dll.a +0 -0
  1441. casadi/libcasadi_conic_cplex.dll +0 -0
  1442. casadi/libcasadi_conic_cplex.dll.a +0 -0
  1443. casadi/libcasadi_conic_gurobi.dll +0 -0
  1444. casadi/libcasadi_conic_gurobi.dll.a +0 -0
  1445. casadi/libcasadi_conic_highs.dll +0 -0
  1446. casadi/libcasadi_conic_highs.dll.a +0 -0
  1447. casadi/libcasadi_conic_hpipm.dll +0 -0
  1448. casadi/libcasadi_conic_hpipm.dll.a +0 -0
  1449. casadi/libcasadi_conic_ipqp.dll +0 -0
  1450. casadi/libcasadi_conic_ipqp.dll.a +0 -0
  1451. casadi/libcasadi_conic_nlpsol.dll +0 -0
  1452. casadi/libcasadi_conic_nlpsol.dll.a +0 -0
  1453. casadi/libcasadi_conic_osqp.dll +0 -0
  1454. casadi/libcasadi_conic_osqp.dll.a +0 -0
  1455. casadi/libcasadi_conic_proxqp.dll +0 -0
  1456. casadi/libcasadi_conic_proxqp.dll.a +0 -0
  1457. casadi/libcasadi_conic_qpoases.dll +0 -0
  1458. casadi/libcasadi_conic_qpoases.dll.a +0 -0
  1459. casadi/libcasadi_conic_qrqp.dll +0 -0
  1460. casadi/libcasadi_conic_qrqp.dll.a +0 -0
  1461. casadi/libcasadi_conic_superscs.dll +0 -0
  1462. casadi/libcasadi_conic_superscs.dll.a +0 -0
  1463. casadi/libcasadi_importer_shell.dll +0 -0
  1464. casadi/libcasadi_importer_shell.dll.a +0 -0
  1465. casadi/libcasadi_integrator_collocation.dll +0 -0
  1466. casadi/libcasadi_integrator_collocation.dll.a +0 -0
  1467. casadi/libcasadi_integrator_cvodes.dll +0 -0
  1468. casadi/libcasadi_integrator_cvodes.dll.a +0 -0
  1469. casadi/libcasadi_integrator_idas.dll +0 -0
  1470. casadi/libcasadi_integrator_idas.dll.a +0 -0
  1471. casadi/libcasadi_integrator_rk.dll +0 -0
  1472. casadi/libcasadi_integrator_rk.dll.a +0 -0
  1473. casadi/libcasadi_interpolant_bspline.dll +0 -0
  1474. casadi/libcasadi_interpolant_bspline.dll.a +0 -0
  1475. casadi/libcasadi_interpolant_linear.dll +0 -0
  1476. casadi/libcasadi_interpolant_linear.dll.a +0 -0
  1477. casadi/libcasadi_linsol_csparse.dll +0 -0
  1478. casadi/libcasadi_linsol_csparse.dll.a +0 -0
  1479. casadi/libcasadi_linsol_csparsecholesky.dll +0 -0
  1480. casadi/libcasadi_linsol_csparsecholesky.dll.a +0 -0
  1481. casadi/libcasadi_linsol_lapacklu.dll +0 -0
  1482. casadi/libcasadi_linsol_lapacklu.dll.a +0 -0
  1483. casadi/libcasadi_linsol_lapackqr.dll +0 -0
  1484. casadi/libcasadi_linsol_lapackqr.dll.a +0 -0
  1485. casadi/libcasadi_linsol_ldl.dll +0 -0
  1486. casadi/libcasadi_linsol_ldl.dll.a +0 -0
  1487. casadi/libcasadi_linsol_lsqr.dll +0 -0
  1488. casadi/libcasadi_linsol_lsqr.dll.a +0 -0
  1489. casadi/libcasadi_linsol_ma27.dll +0 -0
  1490. casadi/libcasadi_linsol_ma27.dll.a +0 -0
  1491. casadi/libcasadi_linsol_mumps.dll +0 -0
  1492. casadi/libcasadi_linsol_mumps.dll.a +0 -0
  1493. casadi/libcasadi_linsol_qr.dll +0 -0
  1494. casadi/libcasadi_linsol_qr.dll.a +0 -0
  1495. casadi/libcasadi_linsol_symbolicqr.dll +0 -0
  1496. casadi/libcasadi_linsol_symbolicqr.dll.a +0 -0
  1497. casadi/libcasadi_linsol_tridiag.dll +0 -0
  1498. casadi/libcasadi_linsol_tridiag.dll.a +0 -0
  1499. casadi/libcasadi_nlpsol_ampl.dll +0 -0
  1500. casadi/libcasadi_nlpsol_ampl.dll.a +0 -0
  1501. casadi/libcasadi_nlpsol_blocksqp.dll +0 -0
  1502. casadi/libcasadi_nlpsol_blocksqp.dll.a +0 -0
  1503. casadi/libcasadi_nlpsol_bonmin.dll +0 -0
  1504. casadi/libcasadi_nlpsol_bonmin.dll.a +0 -0
  1505. casadi/libcasadi_nlpsol_feasiblesqpmethod.dll +0 -0
  1506. casadi/libcasadi_nlpsol_feasiblesqpmethod.dll.a +0 -0
  1507. casadi/libcasadi_nlpsol_ipopt.dll +0 -0
  1508. casadi/libcasadi_nlpsol_ipopt.dll.a +0 -0
  1509. casadi/libcasadi_nlpsol_knitro.dll +0 -0
  1510. casadi/libcasadi_nlpsol_knitro.dll.a +0 -0
  1511. casadi/libcasadi_nlpsol_qrsqp.dll +0 -0
  1512. casadi/libcasadi_nlpsol_qrsqp.dll.a +0 -0
  1513. casadi/libcasadi_nlpsol_scpgen.dll +0 -0
  1514. casadi/libcasadi_nlpsol_scpgen.dll.a +0 -0
  1515. casadi/libcasadi_nlpsol_snopt.dll +0 -0
  1516. casadi/libcasadi_nlpsol_snopt.dll.a +0 -0
  1517. casadi/libcasadi_nlpsol_sqpmethod.dll +0 -0
  1518. casadi/libcasadi_nlpsol_sqpmethod.dll.a +0 -0
  1519. casadi/libcasadi_nlpsol_worhp.dll +0 -0
  1520. casadi/libcasadi_nlpsol_worhp.dll.a +0 -0
  1521. casadi/libcasadi_rootfinder_fast_newton.dll +0 -0
  1522. casadi/libcasadi_rootfinder_fast_newton.dll.a +0 -0
  1523. casadi/libcasadi_rootfinder_kinsol.dll +0 -0
  1524. casadi/libcasadi_rootfinder_kinsol.dll.a +0 -0
  1525. casadi/libcasadi_rootfinder_newton.dll +0 -0
  1526. casadi/libcasadi_rootfinder_newton.dll.a +0 -0
  1527. casadi/libcasadi_rootfinder_nlpsol.dll +0 -0
  1528. casadi/libcasadi_rootfinder_nlpsol.dll.a +0 -0
  1529. casadi/libcasadi_sundials_common.dll +0 -0
  1530. casadi/libcasadi_sundials_common.dll.a +0 -0
  1531. casadi/libcasadi_xmlfile_tinyxml.dll +0 -0
  1532. casadi/libcasadi_xmlfile_tinyxml.dll.a +0 -0
  1533. casadi/libcoinmetis-2.dll +0 -0
  1534. casadi/libcoinmetis.dll.a +0 -0
  1535. casadi/libcoinmumps-3.dll +0 -0
  1536. casadi/libcoinmumps.dll.a +0 -0
  1537. casadi/libcoinmumps.la +1 -1
  1538. casadi/libcplex_adaptor.dll +0 -0
  1539. casadi/libgcc_s_seh-1.dll +0 -0
  1540. casadi/libgfortran-5.dll +0 -0
  1541. casadi/libgomp-1.dll +0 -0
  1542. casadi/libgurobi_adaptor.dll +0 -0
  1543. casadi/libhighs.dll +0 -0
  1544. casadi/libhighs.dll.a +0 -0
  1545. casadi/libhpipm.dll +0 -0
  1546. casadi/libhpipm.dll.a +0 -0
  1547. casadi/libindirect.a +0 -0
  1548. casadi/libipopt-3.dll +0 -0
  1549. casadi/libipopt.dll.a +0 -0
  1550. casadi/libipopt.la +3 -3
  1551. casadi/liblinsys.a +0 -0
  1552. casadi/libosqp.a +0 -0
  1553. casadi/libosqp.dll +0 -0
  1554. casadi/libosqp.dll.a +0 -0
  1555. casadi/libqdldl.a +0 -0
  1556. casadi/libqdldl.dll +0 -0
  1557. casadi/libqdldl.dll.a +0 -0
  1558. casadi/libquadmath-0.dll +0 -0
  1559. casadi/libsipopt-3.dll +0 -0
  1560. casadi/libsipopt.dll.a +0 -0
  1561. casadi/libsipopt.la +3 -3
  1562. casadi/libspral.a +0 -0
  1563. casadi/libssp-0.dll +0 -0
  1564. casadi/libstdc++-6.dll +0 -0
  1565. casadi/libsuperscs.a +0 -0
  1566. casadi/libtinyxml2.dll +0 -0
  1567. casadi/libwinpthread-1.dll +0 -0
  1568. casadi/osqp.lib +0 -0
  1569. casadi/pkgconfig/casadi.pc +1 -1
  1570. casadi/pkgconfig/coinmumps.pc +1 -1
  1571. casadi/pkgconfig/highs.pc +12 -0
  1572. casadi/pkgconfig/ipopt.pc +2 -2
  1573. casadi/pkgconfig/osi-highs.pc +11 -0
  1574. casadi/pkgconfig/proxsuite.pc +22 -0
  1575. casadi/spral_ssids.exe +0 -0
  1576. casadi/tools/__init__.py +2 -2
  1577. casadi/tools/bounds.py +2 -2
  1578. casadi/tools/graph/__init__.py +2 -2
  1579. casadi/tools/graph/graph.py +22 -10
  1580. casadi/tools/in_out.py +2 -2
  1581. casadi/tools/structure.py +2 -2
  1582. casadi/tools/structure3.py +2 -2
  1583. {casadi-3.5.6.pre2.dist-info → casadi-3.6.0.dist-info}/METADATA +7 -1
  1584. casadi-3.6.0.dist-info/RECORD +1609 -0
  1585. dummy.txt +1 -0
  1586. casadi/include/casadi/core/runtime/casadi_minmax.hpp +0 -20
  1587. casadi/include/casadi/core/variable.hpp +0 -147
  1588. casadi-3.5.6.pre2.dist-info/RECORD +0 -278
  1589. {casadi-3.5.6.pre2.dist-info → casadi-3.6.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,1425 @@
1
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2
+ /* */
3
+ /* This file is part of the HiGHS linear optimization suite */
4
+ /* */
5
+ /* Written and engineered 2008-2022 at the University of Edinburgh */
6
+ /* */
7
+ /* Available as open-source under the MIT License */
8
+ /* */
9
+ /* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
10
+ /* Feldmeier */
11
+ /* */
12
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13
+ #ifndef HIGHS_UTIL_HASH_TREE_H_
14
+ #define HIGHS_UTIL_HASH_TREE_H_
15
+
16
+ #include "util/HighsHash.h"
17
+
18
+ using std::memcpy;
19
+ using std::memmove;
20
+
21
+ template <typename K, typename V = void>
22
+ class HighsHashTree {
23
+ using Entry = HighsHashTableEntry<K, V>;
24
+ using ValueType =
25
+ typename std::remove_reference<decltype(Entry().value())>::type;
26
+
27
+ enum Type {
28
+ kEmpty = 0,
29
+ kListLeaf = 1,
30
+ kInnerLeafSizeClass1 = 2,
31
+ kInnerLeafSizeClass2 = 3,
32
+ kInnerLeafSizeClass3 = 4,
33
+ kInnerLeafSizeClass4 = 5,
34
+ kBranchNode = 6,
35
+ };
36
+
37
+ enum Constants {
38
+ kBitsPerLevel = 6,
39
+ kBranchFactor = 1 << kBitsPerLevel,
40
+ // even though we could use up to 64 bits of the hash this would require
41
+ // additional handling in the last levels to avoid negative shift values
42
+ // up to 9 depth levels are Ok though as up to index 8 the
43
+ // get_hash_chunks16() function shifts right by a non-negative amount
44
+ kMaxDepth = 9,
45
+ kMinLeafSize = 6,
46
+ kLeafBurstThreshold = 54,
47
+ };
48
+
49
+ static uint64_t compute_hash(const K& key) {
50
+ return HighsHashHelpers::hash(key);
51
+ }
52
+
53
+ static uint8_t get_hash_chunk(uint64_t hash, int pos) {
54
+ return (hash >> (64 - kBitsPerLevel - pos * kBitsPerLevel)) &
55
+ (kBranchFactor - 1);
56
+ }
57
+
58
+ static uint16_t get_hash_chunks16(uint64_t hash, int pos) {
59
+ return (hash >> (48 - pos * kBitsPerLevel));
60
+ }
61
+
62
+ static uint8_t get_first_chunk16(uint16_t chunks) {
63
+ return chunks >> (16 - kBitsPerLevel);
64
+ }
65
+
66
+ static void set_hash_chunk(uint64_t& hash, uint64_t chunk, int chunkPos) {
67
+ const int shiftAmount = (60 - kBitsPerLevel - chunkPos * kBitsPerLevel);
68
+ chunk ^= (hash >> shiftAmount) & (kBranchFactor - 1);
69
+ hash ^= chunk << shiftAmount;
70
+ }
71
+
72
+ struct Occupation {
73
+ uint64_t occupation;
74
+
75
+ Occupation() {}
76
+ Occupation(uint64_t occupation) : occupation(occupation) {}
77
+ operator uint64_t() const { return occupation; }
78
+
79
+ void set(uint8_t pos) { occupation |= uint64_t{1} << (pos); }
80
+
81
+ void flip(uint8_t pos) { occupation ^= uint64_t{1} << (pos); }
82
+
83
+ bool test(uint8_t pos) const { return occupation & (uint64_t{1} << pos); }
84
+
85
+ int num_set_until(uint8_t pos) const {
86
+ return HighsHashHelpers::popcnt(occupation >> pos);
87
+ }
88
+
89
+ int num_set_after(uint8_t pos) const {
90
+ return HighsHashHelpers::popcnt(occupation << (63 - (pos)));
91
+ }
92
+
93
+ int num_set() const { return HighsHashHelpers::popcnt(occupation); }
94
+ };
95
+
96
+ static constexpr int entries_to_size_class(unsigned int numEntries) {
97
+ return 1 + unsigned(numEntries + ((kLeafBurstThreshold - kMinLeafSize) / 3 -
98
+ kMinLeafSize - 1)) /
99
+ ((kLeafBurstThreshold - kMinLeafSize) / 3);
100
+ }
101
+
102
+ template <int kSizeClass>
103
+ struct InnerLeaf {
104
+ static constexpr int capacity() {
105
+ return kMinLeafSize +
106
+ (kSizeClass - 1) * (kLeafBurstThreshold - kMinLeafSize) / 3;
107
+ }
108
+ // the leaf stores entries the same way as inner nodes
109
+ // but handles collisions on the occupation flag like a
110
+ // linear probing hash table.
111
+ // Since the occupation flag has 64 bits and we only use
112
+ // 15 collisions should be rare and most often we won't need
113
+ // to do a linear scan and key comparisons at all
114
+ Occupation occupation;
115
+ int size;
116
+ uint64_t hashes[capacity() + 1];
117
+ Entry entries[capacity()];
118
+
119
+ InnerLeaf() : occupation(0), size(0) { hashes[0] = 0; }
120
+
121
+ template <int kOtherSize>
122
+ InnerLeaf(InnerLeaf<kOtherSize>&& other) {
123
+ assert(other.size <= capacity());
124
+ memcpy((void*)this, (void*)&other,
125
+ (char*)&other.hashes[other.size + 1] - (char*)&other);
126
+ std::move(&other.entries[0], &other.entries[size], &entries[0]);
127
+ }
128
+
129
+ int get_num_entries() const { return size; }
130
+
131
+ std::pair<ValueType*, bool> insert_entry(uint64_t fullHash, int hashPos,
132
+ Entry& entry) {
133
+ assert(size < capacity());
134
+ uint16_t hash = get_hash_chunks16(fullHash, hashPos);
135
+ uint8_t hashChunk = get_first_chunk16(hash);
136
+
137
+ int pos = occupation.num_set_until(hashChunk);
138
+
139
+ if (occupation.test(hashChunk)) {
140
+ // since the occupation flag is set we need to start searching from
141
+ // pos-1 and can rely on a hash chunk with the same value existing for
142
+ // the scan
143
+ --pos;
144
+ while (hashes[pos] > hash) ++pos;
145
+
146
+ while (pos != size && hashes[pos] == hash) {
147
+ if (entry.key() == entries[pos].key())
148
+ return std::make_pair(&entries[pos].value(), false);
149
+
150
+ ++pos;
151
+ }
152
+
153
+ if (pos < size) {
154
+ std::move_backward(&entries[pos], &entries[size], &entries[size + 1]);
155
+ memmove(&hashes[pos + 1], &hashes[pos],
156
+ sizeof(hashes[0]) * (size - pos));
157
+ }
158
+
159
+ entries[pos] = std::move(entry);
160
+ hashes[pos] = hash;
161
+ ++size;
162
+ hashes[size] = 0;
163
+ } else {
164
+ occupation.set(hashChunk);
165
+
166
+ if (pos < size) {
167
+ while (hashes[pos] > hash) ++pos;
168
+ std::move_backward(&entries[pos], &entries[size], &entries[size + 1]);
169
+ memmove(&hashes[pos + 1], &hashes[pos],
170
+ sizeof(hashes[0]) * (size - pos));
171
+ }
172
+
173
+ entries[pos] = std::move(entry);
174
+ hashes[pos] = hash;
175
+ ++size;
176
+ hashes[size] = 0;
177
+ }
178
+
179
+ return std::make_pair(&entries[pos].value(), true);
180
+ }
181
+
182
+ ValueType* find_entry(uint64_t fullHash, int hashPos, const K& key) {
183
+ uint16_t hash = get_hash_chunks16(fullHash, hashPos);
184
+ uint8_t hashChunk = get_first_chunk16(hash);
185
+ if (!occupation.test(hashChunk)) return nullptr;
186
+
187
+ int pos = occupation.num_set_until(hashChunk) - 1;
188
+ while (hashes[pos] > hash) ++pos;
189
+
190
+ while (pos != size && hashes[pos] == hash) {
191
+ if (key == entries[pos].key()) return &entries[pos].value();
192
+ ++pos;
193
+ }
194
+
195
+ return nullptr;
196
+ }
197
+
198
+ bool erase_entry(uint64_t fullHash, int hashPos, const K& key) {
199
+ uint16_t hash = get_hash_chunks16(fullHash, hashPos);
200
+ uint8_t hashChunk = get_first_chunk16(hash);
201
+ if (!occupation.test(hashChunk)) return false;
202
+
203
+ int startPos = occupation.num_set_until(hashChunk) - 1;
204
+ while (get_first_chunk16(hashes[startPos]) > hashChunk) ++startPos;
205
+
206
+ int pos = startPos;
207
+ while (hashes[pos] > hash) ++pos;
208
+
209
+ while (pos != size && hashes[pos] == hash) {
210
+ if (key == entries[pos].key()) {
211
+ --size;
212
+ if (pos < size) {
213
+ std::move(&entries[pos + 1], &entries[size + 1], &entries[pos]);
214
+ memmove(&hashes[pos], &hashes[pos + 1],
215
+ sizeof(hashes[0]) * (size - pos));
216
+ if (get_first_chunk16(hashes[startPos]) != hashChunk)
217
+ occupation.flip(hashChunk);
218
+ } else if (startPos == pos)
219
+ occupation.flip(hashChunk);
220
+
221
+ hashes[size] = 0;
222
+ return true;
223
+ }
224
+
225
+ ++pos;
226
+ }
227
+
228
+ return false;
229
+ }
230
+
231
+ void rehash(int hashPos) {
232
+ // function needs to possibly reorder elements by a different hash value
233
+ // chances are very high we are already ordered correctly as we use 16
234
+ // bits of the hash and one level is uses 6 bits, so the new values
235
+ // are guaranteed to be ordered correctly by their 10 most significant
236
+ // bits if increasing the hash position by 1 and only if the 10 bits of
237
+ // the hash had a collision the new 6 bits might break a tie differently.
238
+ // It is, however, important to maintain the exact ordering as otherwise
239
+ // elements may not be found.
240
+ occupation = 0;
241
+ for (int i = 0; i < size; ++i) {
242
+ hashes[i] = get_hash_chunks16(compute_hash(entries[i].key()), hashPos);
243
+ occupation.set(get_first_chunk16(hashes[i]));
244
+ }
245
+
246
+ int i = 0;
247
+ while (i < size) {
248
+ uint8_t hashChunk = get_first_chunk16(hashes[i]);
249
+ int pos = occupation.num_set_until(hashChunk) - 1;
250
+
251
+ // if the position is after i the element definitely comes later, so we
252
+ // swap it to that position and proceed without increasing i until
253
+ // eventually an element appears that comes at position i or before
254
+ if (pos > i) {
255
+ std::swap(hashes[pos], hashes[i]);
256
+ std::swap(entries[pos], entries[i]);
257
+ continue;
258
+ }
259
+
260
+ // the position is before or at i, now check where the exact location
261
+ // should be for the ordering by hash so that the invariant is that all
262
+ // elements up to i are properly sorted. Essentially insertion sort but
263
+ // with the modification of having a high chance to guess the correct
264
+ // position already using the occupation flags.
265
+ while (pos < i && hashes[pos] >= hashes[i]) ++pos;
266
+
267
+ // if the final position is before i we need to move elements to
268
+ // make space at that position, otherwise nothing needs to be done but
269
+ // incrementing i increasing the sorted range by 1.
270
+ if (pos < i) {
271
+ uint16_t hash = hashes[i];
272
+ auto entry = std::move(entries[i]);
273
+ std::move_backward(&entries[pos], &entries[i], &entries[i + 1]);
274
+ memmove(&hashes[pos + 1], &hashes[pos],
275
+ sizeof(hashes[0]) * (size - pos));
276
+ hashes[pos] = hash;
277
+ entries[pos] = std::move(entry);
278
+ }
279
+ ++i;
280
+ }
281
+ }
282
+ };
283
+
284
+ struct ListNode {
285
+ ListNode* next;
286
+ HighsHashTableEntry<K, V> entry;
287
+ ListNode(HighsHashTableEntry<K, V>&& entry)
288
+ : next(nullptr), entry(std::move(entry)) {}
289
+ };
290
+ struct ListLeaf {
291
+ ListNode first;
292
+ int count;
293
+
294
+ ListLeaf(HighsHashTableEntry<K, V>&& entry)
295
+ : first(std::move(entry)), count(1) {}
296
+ };
297
+
298
+ struct BranchNode;
299
+
300
+ struct NodePtr {
301
+ uintptr_t ptrAndType;
302
+
303
+ NodePtr() : ptrAndType(kEmpty) {}
304
+ NodePtr(std::nullptr_t) : ptrAndType(kEmpty) {}
305
+ NodePtr(ListLeaf* ptr)
306
+ : ptrAndType(reinterpret_cast<uintptr_t>(ptr) | kListLeaf) {}
307
+ NodePtr(InnerLeaf<1>* ptr)
308
+ : ptrAndType(reinterpret_cast<uintptr_t>(ptr) | kInnerLeafSizeClass1) {}
309
+ NodePtr(InnerLeaf<2>* ptr)
310
+ : ptrAndType(reinterpret_cast<uintptr_t>(ptr) | kInnerLeafSizeClass2) {}
311
+ NodePtr(InnerLeaf<3>* ptr)
312
+ : ptrAndType(reinterpret_cast<uintptr_t>(ptr) | kInnerLeafSizeClass3) {}
313
+ NodePtr(InnerLeaf<4>* ptr)
314
+ : ptrAndType(reinterpret_cast<uintptr_t>(ptr) | kInnerLeafSizeClass4) {}
315
+ NodePtr(BranchNode* ptr)
316
+ : ptrAndType(reinterpret_cast<uintptr_t>(ptr) | kBranchNode) {
317
+ assert(ptr != nullptr);
318
+ }
319
+
320
+ Type getType() const { return Type(ptrAndType & 7u); }
321
+
322
+ int numEntriesEstimate() const {
323
+ switch (getType()) {
324
+ case kEmpty:
325
+ return 0;
326
+ case kListLeaf:
327
+ return 1;
328
+ case kInnerLeafSizeClass1:
329
+ return InnerLeaf<1>::capacity();
330
+ case kInnerLeafSizeClass2:
331
+ return InnerLeaf<2>::capacity();
332
+ case kInnerLeafSizeClass3:
333
+ return InnerLeaf<3>::capacity();
334
+ case kInnerLeafSizeClass4:
335
+ return InnerLeaf<4>::capacity();
336
+ case kBranchNode:
337
+ // something large should be returned so that the number of entries
338
+ // is estimated above the threshold to merge when the parent checks
339
+ // its children after deletion
340
+ return kBranchFactor;
341
+ }
342
+ }
343
+
344
+ int numEntries() const {
345
+ switch (getType()) {
346
+ case kEmpty:
347
+ return 0;
348
+ case kListLeaf:
349
+ return getListLeaf()->count;
350
+ case kInnerLeafSizeClass1:
351
+ return getInnerLeafSizeClass1()->size;
352
+ case kInnerLeafSizeClass2:
353
+ return getInnerLeafSizeClass2()->size;
354
+ case kInnerLeafSizeClass3:
355
+ return getInnerLeafSizeClass3()->size;
356
+ case kInnerLeafSizeClass4:
357
+ return getInnerLeafSizeClass4()->size;
358
+ case kBranchNode:
359
+ // something large should be returned so that the number of entries
360
+ // is estimated above the threshold to merge when the parent checks
361
+ // its children after deletion
362
+ return kBranchFactor;
363
+ }
364
+ }
365
+
366
+ ListLeaf* getListLeaf() const {
367
+ assert(getType() == kListLeaf);
368
+ return reinterpret_cast<ListLeaf*>(ptrAndType & ~uintptr_t{7});
369
+ }
370
+
371
+ InnerLeaf<1>* getInnerLeafSizeClass1() const {
372
+ assert(getType() == kInnerLeafSizeClass1);
373
+ return reinterpret_cast<InnerLeaf<1>*>(ptrAndType & ~uintptr_t{7});
374
+ }
375
+ InnerLeaf<2>* getInnerLeafSizeClass2() const {
376
+ assert(getType() == kInnerLeafSizeClass2);
377
+ return reinterpret_cast<InnerLeaf<2>*>(ptrAndType & ~uintptr_t{7});
378
+ }
379
+
380
+ InnerLeaf<3>* getInnerLeafSizeClass3() const {
381
+ assert(getType() == kInnerLeafSizeClass3);
382
+ return reinterpret_cast<InnerLeaf<3>*>(ptrAndType & ~uintptr_t{7});
383
+ }
384
+
385
+ InnerLeaf<4>* getInnerLeafSizeClass4() const {
386
+ assert(getType() == kInnerLeafSizeClass4);
387
+ return reinterpret_cast<InnerLeaf<4>*>(ptrAndType & ~uintptr_t{7});
388
+ }
389
+
390
+ BranchNode* getBranchNode() const {
391
+ assert(getType() == kBranchNode);
392
+ return reinterpret_cast<BranchNode*>(ptrAndType & ~uintptr_t{7});
393
+ }
394
+ };
395
+
396
+ struct BranchNode {
397
+ Occupation occupation;
398
+ NodePtr child[1];
399
+ };
400
+
401
+ // allocate branch nodes in multiples of 64 bytes to reduce allocator stress
402
+ // with different sizes and reduce reallocations of nodes
403
+ static constexpr size_t getBranchNodeSize(int numChilds) {
404
+ return (sizeof(BranchNode) + size_t(numChilds - 1) * sizeof(NodePtr) + 63) &
405
+ ~63;
406
+ };
407
+
408
+ static BranchNode* createBranchingNode(int numChilds) {
409
+ BranchNode* branch =
410
+ (BranchNode*)::operator new(getBranchNodeSize(numChilds));
411
+ branch->occupation = 0;
412
+ return branch;
413
+ }
414
+
415
+ static void destroyBranchingNode(void* innerNode) {
416
+ ::operator delete(innerNode);
417
+ }
418
+
419
+ static BranchNode* addChildToBranchNode(BranchNode* branch, uint8_t hashValue,
420
+ int location) {
421
+ int rightChilds = branch->occupation.num_set_after(hashValue);
422
+ assert(rightChilds + location == branch->occupation.num_set());
423
+
424
+ size_t newSize = getBranchNodeSize(location + rightChilds + 1);
425
+ size_t rightSize = rightChilds * sizeof(NodePtr);
426
+
427
+ if (newSize == getBranchNodeSize(location + rightChilds)) {
428
+ memmove(&branch->child[location + 1], &branch->child[location],
429
+ rightSize);
430
+
431
+ return branch;
432
+ }
433
+
434
+ BranchNode* newBranch = (BranchNode*)::operator new(newSize);
435
+ // sizeof(Branch) already contains the size for 1 pointer. So we just
436
+ // need to add the left and right sizes up for the number of
437
+ // additional pointers
438
+ size_t leftSize = sizeof(BranchNode) + (location - 1) * sizeof(NodePtr);
439
+
440
+ memcpy(newBranch, branch, leftSize);
441
+ memcpy(&newBranch->child[location + 1], &branch->child[location],
442
+ rightSize);
443
+
444
+ destroyBranchingNode(branch);
445
+
446
+ return newBranch;
447
+ }
448
+
449
+ template <int SizeClass1, int SizeClass2>
450
+ static void mergeIntoLeaf(InnerLeaf<SizeClass1>* leaf,
451
+ InnerLeaf<SizeClass2>* mergeLeaf, int hashPos) {
452
+ for (int i = 0; i < mergeLeaf->size; ++i)
453
+ leaf->insert_entry(compute_hash(mergeLeaf->entries[i].key()), hashPos,
454
+ mergeLeaf->entries[i]);
455
+ }
456
+
457
+ template <int SizeClass>
458
+ static void mergeIntoLeaf(InnerLeaf<SizeClass>* leaf, int hashPos,
459
+ NodePtr mergeNode) {
460
+ switch (mergeNode.getType()) {
461
+ case kListLeaf: {
462
+ ListLeaf* mergeLeaf = mergeNode.getListLeaf();
463
+ leaf->insert_entry(compute_hash(mergeLeaf->first.entry.key()), hashPos,
464
+ mergeLeaf->first.entry);
465
+ ListNode* iter = mergeLeaf->first.next;
466
+ while (iter != nullptr) {
467
+ ListNode* next = iter->next;
468
+ leaf->insert_entry(compute_hash(iter->entry.key()), hashPos,
469
+ iter->entry);
470
+ delete iter;
471
+ iter = next;
472
+ }
473
+ break;
474
+ }
475
+ case kInnerLeafSizeClass1:
476
+ mergeIntoLeaf(leaf, mergeNode.getInnerLeafSizeClass1(), hashPos);
477
+ delete mergeNode.getInnerLeafSizeClass1();
478
+ break;
479
+ case kInnerLeafSizeClass2:
480
+ mergeIntoLeaf(leaf, mergeNode.getInnerLeafSizeClass2(), hashPos);
481
+ delete mergeNode.getInnerLeafSizeClass2();
482
+ break;
483
+ case kInnerLeafSizeClass3:
484
+ mergeIntoLeaf(leaf, mergeNode.getInnerLeafSizeClass3(), hashPos);
485
+ delete mergeNode.getInnerLeafSizeClass3();
486
+ break;
487
+ case kInnerLeafSizeClass4:
488
+ mergeIntoLeaf(leaf, mergeNode.getInnerLeafSizeClass4(), hashPos);
489
+ delete mergeNode.getInnerLeafSizeClass4();
490
+ }
491
+ }
492
+
493
+ template <int SizeClass1, int SizeClass2>
494
+ static HighsHashTableEntry<K, V>* findCommonInLeaf(
495
+ InnerLeaf<SizeClass1>* leaf1, InnerLeaf<SizeClass2>* leaf2, int hashPos) {
496
+ uint64_t matchMask = leaf1->occupation & leaf2->occupation;
497
+ if (matchMask == 0) return nullptr;
498
+
499
+ int offset1 = -1;
500
+ int offset2 = -1;
501
+ while (matchMask) {
502
+ int pos = HighsHashHelpers::log2i(matchMask);
503
+ matchMask ^= (uint64_t{1} << pos);
504
+
505
+ int i = leaf1->occupation.num_set_until(pos) + offset1;
506
+ while (get_first_chunk16(leaf1->hashes[i]) != pos) {
507
+ ++i;
508
+ ++offset1;
509
+ }
510
+
511
+ int j = leaf2->occupation.num_set_until(pos) + offset2;
512
+ while (get_first_chunk16(leaf2->hashes[j]) != pos) {
513
+ ++j;
514
+ ++offset2;
515
+ }
516
+
517
+ while (true) {
518
+ if (leaf1->hashes[i] > leaf2->hashes[j]) {
519
+ ++i;
520
+ if (i == leaf1->size || get_first_chunk16(leaf1->hashes[i]) != pos)
521
+ break;
522
+ } else if (leaf2->hashes[j] > leaf1->hashes[i]) {
523
+ ++j;
524
+ if (j == leaf2->size || get_first_chunk16(leaf2->hashes[j]) != pos)
525
+ break;
526
+ } else {
527
+ if (leaf1->entries[i].key() == leaf2->entries[j].key())
528
+ return &leaf1->entries[i];
529
+
530
+ ++i;
531
+ if (i == leaf1->size || get_first_chunk16(leaf1->hashes[i]) != pos)
532
+ break;
533
+ ++j;
534
+ if (j == leaf2->size || get_first_chunk16(leaf2->hashes[j]) != pos)
535
+ break;
536
+ }
537
+ };
538
+ }
539
+
540
+ return nullptr;
541
+ }
542
+
543
+ template <int SizeClass>
544
+ static HighsHashTableEntry<K, V>* findCommonInLeaf(InnerLeaf<SizeClass>* leaf,
545
+ NodePtr n2, int hashPos) {
546
+ switch (n2.getType()) {
547
+ case kInnerLeafSizeClass1:
548
+ return findCommonInLeaf(leaf, n2.getInnerLeafSizeClass1(), hashPos);
549
+ case kInnerLeafSizeClass2:
550
+ return findCommonInLeaf(leaf, n2.getInnerLeafSizeClass2(), hashPos);
551
+ case kInnerLeafSizeClass3:
552
+ return findCommonInLeaf(leaf, n2.getInnerLeafSizeClass3(), hashPos);
553
+ case kInnerLeafSizeClass4:
554
+ return findCommonInLeaf(leaf, n2.getInnerLeafSizeClass4(), hashPos);
555
+ case kBranchNode: {
556
+ BranchNode* branch = n2.getBranchNode();
557
+ uint64_t matchMask = branch->occupation & leaf->occupation;
558
+
559
+ int offset = -1;
560
+ while (matchMask) {
561
+ int pos = HighsHashHelpers::log2i(matchMask);
562
+ matchMask ^= (uint64_t{1} << pos);
563
+
564
+ int i = leaf->occupation.num_set_until(pos) + offset;
565
+ while (get_first_chunk16(leaf->hashes[i]) != pos) {
566
+ ++i;
567
+ ++offset;
568
+ }
569
+
570
+ int j = branch->occupation.num_set_until(pos) - 1;
571
+
572
+ do {
573
+ if (find_recurse(branch->child[j],
574
+ compute_hash(leaf->entries[i].key()), hashPos + 1,
575
+ leaf->entries[i].key()))
576
+ return &leaf->entries[i];
577
+ ++i;
578
+ } while (i < leaf->size && get_first_chunk16(leaf->hashes[i]) == pos);
579
+ }
580
+ }
581
+ }
582
+
583
+ return nullptr;
584
+ }
585
+
586
+ static NodePtr removeChildFromBranchNode(BranchNode* branch, int location,
587
+ uint64_t hash, int hashPos) {
588
+ NodePtr newNode;
589
+ int newNumChild = branch->occupation.num_set();
590
+
591
+ // first check if we might be able to merge all children into one new leaf
592
+ // based on the node numbers and assuming all of them might be in the
593
+ // smallest size class
594
+ if (newNumChild * InnerLeaf<1>::capacity() <= kLeafBurstThreshold) {
595
+ // since we have a good chance of merging we now check the actual size
596
+ // classes to see if that yields a number of entries at most the burst
597
+ // threshold
598
+ int childEntries = 0;
599
+ for (int i = 0; i <= newNumChild; ++i) {
600
+ childEntries += branch->child[i].numEntriesEstimate();
601
+ if (childEntries > kLeafBurstThreshold) break;
602
+ }
603
+
604
+ if (childEntries < kLeafBurstThreshold) {
605
+ // create a new merged inner leaf node containing all entries of
606
+ // children first recompute the number of entries, but this time access
607
+ // each child to get the actual number of entries needed and determine
608
+ // this nodes size class since before we estimated the number of child
609
+ // entries from the capacities of our child leaf node types which are
610
+ // stored in the branch nodes pointers directly and avoid unnecessary
611
+ // accesses of nodes that are not in cache.
612
+ childEntries = 0;
613
+ for (int i = 0; i <= newNumChild; ++i)
614
+ childEntries += branch->child[i].numEntries();
615
+
616
+ // check again if we exceed due to the extremely unlikely case
617
+ // of having less than 5 list nodes with together more than 30 entries
618
+ // as list nodes are only created in the last depth level
619
+ if (childEntries < kLeafBurstThreshold) {
620
+ switch (entries_to_size_class(childEntries)) {
621
+ case 1: {
622
+ InnerLeaf<1>* newLeafSize1 = new InnerLeaf<1>;
623
+ newNode = newLeafSize1;
624
+ for (int i = 0; i <= newNumChild; ++i)
625
+ mergeIntoLeaf(newLeafSize1, hashPos, branch->child[i]);
626
+ break;
627
+ }
628
+ case 2: {
629
+ InnerLeaf<2>* newLeafSize2 = new InnerLeaf<2>;
630
+ newNode = newLeafSize2;
631
+ for (int i = 0; i <= newNumChild; ++i)
632
+ mergeIntoLeaf(newLeafSize2, hashPos, branch->child[i]);
633
+ break;
634
+ }
635
+ case 3: {
636
+ InnerLeaf<3>* newLeafSize3 = new InnerLeaf<3>;
637
+ newNode = newLeafSize3;
638
+ for (int i = 0; i <= newNumChild; ++i)
639
+ mergeIntoLeaf(newLeafSize3, hashPos, branch->child[i]);
640
+ break;
641
+ }
642
+ case 4: {
643
+ InnerLeaf<4>* newLeafSize4 = new InnerLeaf<4>;
644
+ newNode = newLeafSize4;
645
+ for (int i = 0; i <= newNumChild; ++i)
646
+ mergeIntoLeaf(newLeafSize4, hashPos, branch->child[i]);
647
+ }
648
+ }
649
+
650
+ destroyBranchingNode(branch);
651
+ return newNode;
652
+ }
653
+ }
654
+ }
655
+
656
+ size_t newSize = getBranchNodeSize(newNumChild);
657
+ size_t rightSize = (newNumChild - location) * sizeof(NodePtr);
658
+ if (newSize == getBranchNodeSize(newNumChild + 1)) {
659
+ // allocated size class is the same, so we do not allocate a new node
660
+ memmove(&branch->child[location], &branch->child[location + 1],
661
+ rightSize);
662
+ newNode = branch;
663
+ } else {
664
+ // allocated size class changed, so we allocate a smaller branch node
665
+ BranchNode* compressedBranch = (BranchNode*)::operator new(newSize);
666
+ newNode = compressedBranch;
667
+
668
+ size_t leftSize =
669
+ offsetof(BranchNode, child) + location * sizeof(NodePtr);
670
+ memcpy(compressedBranch, branch, leftSize);
671
+ memcpy(&compressedBranch->child[location], &branch->child[location + 1],
672
+ rightSize);
673
+
674
+ destroyBranchingNode(branch);
675
+ }
676
+
677
+ return newNode;
678
+ }
679
+
680
+ NodePtr root;
681
+
682
+ template <int SizeClass>
683
+ static std::pair<ValueType*, bool> insert_into_leaf(
684
+ NodePtr* insertNode, InnerLeaf<SizeClass>* leaf, uint64_t hash,
685
+ int hashPos, HighsHashTableEntry<K, V>& entry) {
686
+ if (leaf->size == InnerLeaf<SizeClass>::capacity()) {
687
+ auto existingEntry = leaf->find_entry(hash, hashPos, entry.key());
688
+ if (existingEntry) return std::make_pair(existingEntry, false);
689
+
690
+ InnerLeaf<SizeClass + 1>* newLeaf =
691
+ new InnerLeaf<SizeClass + 1>(std::move(*leaf));
692
+ *insertNode = newLeaf;
693
+ delete leaf;
694
+ return newLeaf->insert_entry(hash, hashPos, entry);
695
+ }
696
+
697
+ return leaf->insert_entry(hash, hashPos, entry);
698
+ }
699
+
700
+ static std::pair<ValueType*, bool> insert_recurse(
701
+ NodePtr* insertNode, uint64_t hash, int hashPos,
702
+ HighsHashTableEntry<K, V>& entry) {
703
+ switch (insertNode->getType()) {
704
+ case kEmpty: {
705
+ if (hashPos == kMaxDepth) {
706
+ ListLeaf* leaf = new ListLeaf(std::move(entry));
707
+ *insertNode = leaf;
708
+ return std::make_pair(&leaf->first.entry.value(), true);
709
+ } else {
710
+ InnerLeaf<1>* leaf = new InnerLeaf<1>;
711
+ *insertNode = leaf;
712
+ return leaf->insert_entry(hash, hashPos, entry);
713
+ }
714
+ }
715
+ case kListLeaf: {
716
+ ListLeaf* leaf = insertNode->getListLeaf();
717
+ ListNode* iter = &leaf->first;
718
+ while (true) {
719
+ // check for existing key
720
+ if (iter->entry.key() == entry.key())
721
+ return std::make_pair(&iter->entry.value(), false);
722
+
723
+ if (iter->next == nullptr) {
724
+ // reached the end of the list and key is not duplicate, so insert
725
+ iter->next = new ListNode(std::move(entry));
726
+ ++leaf->count;
727
+ return std::make_pair(&iter->next->entry.value(), true);
728
+ }
729
+ iter = iter->next;
730
+ }
731
+
732
+ break;
733
+ }
734
+ case kInnerLeafSizeClass1:
735
+ return insert_into_leaf(insertNode,
736
+ insertNode->getInnerLeafSizeClass1(), hash,
737
+ hashPos, entry);
738
+ break;
739
+ case kInnerLeafSizeClass2:
740
+ return insert_into_leaf(insertNode,
741
+ insertNode->getInnerLeafSizeClass2(), hash,
742
+ hashPos, entry);
743
+ break;
744
+ case kInnerLeafSizeClass3:
745
+ return insert_into_leaf(insertNode,
746
+ insertNode->getInnerLeafSizeClass3(), hash,
747
+ hashPos, entry);
748
+ break;
749
+ case kInnerLeafSizeClass4: {
750
+ InnerLeaf<4>* leaf = insertNode->getInnerLeafSizeClass4();
751
+ if (leaf->size < InnerLeaf<4>::capacity())
752
+ return leaf->insert_entry(hash, hashPos, entry);
753
+
754
+ auto existingEntry = leaf->find_entry(hash, hashPos, entry.key());
755
+ if (existingEntry) return std::make_pair(existingEntry, false);
756
+ Occupation occupation = leaf->occupation;
757
+
758
+ uint8_t hashChunk = get_hash_chunk(hash, hashPos);
759
+ occupation.set(hashChunk);
760
+
761
+ int branchSize = occupation.num_set();
762
+
763
+ BranchNode* branch = createBranchingNode(branchSize);
764
+ *insertNode = branch;
765
+ branch->occupation = occupation;
766
+
767
+ if (hashPos + 1 == kMaxDepth) {
768
+ for (int i = 0; i < branchSize; ++i) branch->child[i] = nullptr;
769
+
770
+ for (int i = 0; i < leaf->size; ++i) {
771
+ int pos =
772
+ occupation.num_set_until(get_first_chunk16(leaf->hashes[i])) -
773
+ 1;
774
+ if (branch->child[pos].getType() == kEmpty)
775
+ branch->child[pos] = new ListLeaf(std::move(leaf->entries[i]));
776
+ else {
777
+ ListLeaf* listLeaf = branch->child[pos].getListLeaf();
778
+ ListNode* newNode = new ListNode(std::move(listLeaf->first));
779
+ listLeaf->first.next = newNode;
780
+ listLeaf->first.entry = std::move(leaf->entries[i]);
781
+ ++listLeaf->count;
782
+ }
783
+ }
784
+
785
+ delete leaf;
786
+
787
+ ListLeaf* listLeaf;
788
+
789
+ int pos = occupation.num_set_until(get_hash_chunk(hash, hashPos)) - 1;
790
+ if (branch->child[pos].getType() == kEmpty) {
791
+ listLeaf = new ListLeaf(std::move(entry));
792
+ branch->child[pos] = listLeaf;
793
+ } else {
794
+ listLeaf = branch->child[pos].getListLeaf();
795
+ ListNode* newNode = new ListNode(std::move(listLeaf->first));
796
+ listLeaf->first.next = newNode;
797
+ listLeaf->first.entry = std::move(entry);
798
+ ++listLeaf->count;
799
+ }
800
+
801
+ return std::make_pair(&listLeaf->first.entry.value(), true);
802
+ }
803
+
804
+ if (branchSize > 1) {
805
+ // maxsize in one bucket = number of items - (num buckets-1)
806
+ // since each bucket has at least 1 item the largest one can only
807
+ // have all remaining ones After adding the item: If it does not
808
+ // collid
809
+ int maxEntriesPerLeaf = 2 + leaf->size - branchSize;
810
+
811
+ if (maxEntriesPerLeaf <= InnerLeaf<1>::capacity()) {
812
+ // all items can go into the smalles leaf size
813
+ for (int i = 0; i < branchSize; ++i)
814
+ branch->child[i] = new InnerLeaf<1>;
815
+
816
+ for (int i = 0; i < leaf->size; ++i) {
817
+ int pos =
818
+ occupation.num_set_until(get_first_chunk16(leaf->hashes[i])) -
819
+ 1;
820
+ branch->child[pos].getInnerLeafSizeClass1()->insert_entry(
821
+ compute_hash(leaf->entries[i].key()), hashPos + 1,
822
+ leaf->entries[i]);
823
+ }
824
+
825
+ delete leaf;
826
+
827
+ int pos =
828
+ occupation.num_set_until(get_hash_chunk(hash, hashPos)) - 1;
829
+ return branch->child[pos].getInnerLeafSizeClass1()->insert_entry(
830
+ hash, hashPos + 1, entry);
831
+ } else {
832
+ // there are many collisions, determine the exact sizes first
833
+ uint8_t sizes[InnerLeaf<4>::capacity() + 1];
834
+ memset(sizes, 0, branchSize);
835
+ sizes[occupation.num_set_until(hashChunk) - 1] += 1;
836
+ for (int i = 0; i < leaf->size; ++i) {
837
+ int pos =
838
+ occupation.num_set_until(get_first_chunk16(leaf->hashes[i])) -
839
+ 1;
840
+ sizes[pos] += 1;
841
+ }
842
+
843
+ for (int i = 0; i < branchSize; ++i) {
844
+ switch (entries_to_size_class(sizes[i])) {
845
+ case 1:
846
+ branch->child[i] = new InnerLeaf<1>;
847
+ break;
848
+ case 2:
849
+ branch->child[i] = new InnerLeaf<2>;
850
+ break;
851
+ case 3:
852
+ branch->child[i] = new InnerLeaf<3>;
853
+ break;
854
+ case 4:
855
+ branch->child[i] = new InnerLeaf<4>;
856
+ break;
857
+ }
858
+ }
859
+
860
+ for (int i = 0; i < leaf->size; ++i) {
861
+ int pos =
862
+ occupation.num_set_until(get_first_chunk16(leaf->hashes[i])) -
863
+ 1;
864
+
865
+ switch (branch->child[pos].getType()) {
866
+ case kInnerLeafSizeClass1:
867
+ branch->child[pos].getInnerLeafSizeClass1()->insert_entry(
868
+ compute_hash(leaf->entries[i].key()), hashPos + 1,
869
+ leaf->entries[i]);
870
+ break;
871
+ case kInnerLeafSizeClass2:
872
+ branch->child[pos].getInnerLeafSizeClass2()->insert_entry(
873
+ compute_hash(leaf->entries[i].key()), hashPos + 1,
874
+ leaf->entries[i]);
875
+ break;
876
+ case kInnerLeafSizeClass3:
877
+ branch->child[pos].getInnerLeafSizeClass3()->insert_entry(
878
+ compute_hash(leaf->entries[i].key()), hashPos + 1,
879
+ leaf->entries[i]);
880
+ break;
881
+ case kInnerLeafSizeClass4:
882
+ branch->child[pos].getInnerLeafSizeClass4()->insert_entry(
883
+ compute_hash(leaf->entries[i].key()), hashPos + 1,
884
+ leaf->entries[i]);
885
+ }
886
+ }
887
+ }
888
+
889
+ delete leaf;
890
+
891
+ int pos = occupation.num_set_until(hashChunk) - 1;
892
+ insertNode = &branch->child[pos];
893
+ ++hashPos;
894
+ } else {
895
+ // extremely unlikely that the new branch node only gets one
896
+ // child in that case create it and defer the insertion into
897
+ // the next depth
898
+ branch->child[0] = leaf;
899
+ insertNode = &branch->child[0];
900
+ ++hashPos;
901
+ leaf->rehash(hashPos);
902
+ }
903
+
904
+ break;
905
+ }
906
+ case kBranchNode: {
907
+ BranchNode* branch = insertNode->getBranchNode();
908
+
909
+ int location =
910
+ branch->occupation.num_set_until(get_hash_chunk(hash, hashPos));
911
+
912
+ if (branch->occupation.test(get_hash_chunk(hash, hashPos))) {
913
+ --location;
914
+ } else {
915
+ branch = addChildToBranchNode(branch, get_hash_chunk(hash, hashPos),
916
+ location);
917
+
918
+ branch->child[location] = nullptr;
919
+ branch->occupation.set(get_hash_chunk(hash, hashPos));
920
+ }
921
+
922
+ *insertNode = branch;
923
+ insertNode = &branch->child[location];
924
+ ++hashPos;
925
+ }
926
+ }
927
+
928
+ return insert_recurse(insertNode, hash, hashPos, entry);
929
+ }
930
+
931
+ static void erase_recurse(NodePtr* erase_node, uint64_t hash, int hashPos,
932
+ const K& key) {
933
+ switch (erase_node->getType()) {
934
+ case kEmpty: {
935
+ return;
936
+ }
937
+ case kListLeaf: {
938
+ ListLeaf* leaf = erase_node->getListLeaf();
939
+
940
+ // check for existing key
941
+ ListNode* iter = &leaf->first;
942
+
943
+ do {
944
+ ListNode* next = iter->next;
945
+ if (iter->entry.key() == key) {
946
+ // key found, decrease count
947
+ --leaf->count;
948
+ if (next != nullptr) {
949
+ // if we have a next node after replace the entry in iter by
950
+ // moving that node into it
951
+ *iter = std::move(*next);
952
+ // delete memory of that node
953
+ delete next;
954
+ }
955
+
956
+ break;
957
+ }
958
+
959
+ iter = next;
960
+ } while (iter != nullptr);
961
+
962
+ if (leaf->count == 0) {
963
+ delete leaf;
964
+ *erase_node = nullptr;
965
+ }
966
+
967
+ return;
968
+ }
969
+ case kInnerLeafSizeClass1: {
970
+ InnerLeaf<1>* leaf = erase_node->getInnerLeafSizeClass1();
971
+ if (leaf->erase_entry(hash, hashPos, key)) {
972
+ if (leaf->size == 0) {
973
+ delete leaf;
974
+ *erase_node = nullptr;
975
+ }
976
+ }
977
+
978
+ return;
979
+ }
980
+ case kInnerLeafSizeClass2: {
981
+ InnerLeaf<2>* leaf = erase_node->getInnerLeafSizeClass2();
982
+
983
+ if (leaf->erase_entry(hash, hashPos, key)) {
984
+ if (leaf->size == InnerLeaf<1>::capacity()) {
985
+ InnerLeaf<1>* newLeaf = new InnerLeaf<1>(std::move(*leaf));
986
+ *erase_node = newLeaf;
987
+ delete leaf;
988
+ }
989
+ }
990
+
991
+ return;
992
+ }
993
+ case kInnerLeafSizeClass3: {
994
+ InnerLeaf<3>* leaf = erase_node->getInnerLeafSizeClass3();
995
+
996
+ if (leaf->erase_entry(hash, hashPos, key)) {
997
+ if (leaf->size == InnerLeaf<2>::capacity()) {
998
+ InnerLeaf<2>* newLeaf = new InnerLeaf<2>(std::move(*leaf));
999
+ *erase_node = newLeaf;
1000
+ delete leaf;
1001
+ }
1002
+ }
1003
+
1004
+ return;
1005
+ }
1006
+ case kInnerLeafSizeClass4: {
1007
+ InnerLeaf<4>* leaf = erase_node->getInnerLeafSizeClass4();
1008
+
1009
+ if (leaf->erase_entry(hash, hashPos, key)) {
1010
+ if (leaf->size == InnerLeaf<3>::capacity()) {
1011
+ InnerLeaf<3>* newLeaf = new InnerLeaf<3>(std::move(*leaf));
1012
+ *erase_node = newLeaf;
1013
+ delete leaf;
1014
+ }
1015
+ }
1016
+
1017
+ return;
1018
+ }
1019
+ case kBranchNode: {
1020
+ BranchNode* branch = erase_node->getBranchNode();
1021
+
1022
+ if (!branch->occupation.test(get_hash_chunk(hash, hashPos))) return;
1023
+
1024
+ int location =
1025
+ branch->occupation.num_set_until(get_hash_chunk(hash, hashPos)) - 1;
1026
+ erase_recurse(&branch->child[location], hash, hashPos + 1, key);
1027
+
1028
+ if (branch->child[location].getType() != kEmpty) return;
1029
+
1030
+ branch->occupation.flip(get_hash_chunk(hash, hashPos));
1031
+
1032
+ *erase_node =
1033
+ removeChildFromBranchNode(branch, location, hash, hashPos);
1034
+ break;
1035
+ }
1036
+ }
1037
+ }
1038
+
1039
+ static const ValueType* find_recurse(NodePtr node, uint64_t hash, int hashPos,
1040
+ const K& key) {
1041
+ int startPos = hashPos;
1042
+ switch (node.getType()) {
1043
+ case kEmpty:
1044
+ return nullptr;
1045
+ case kListLeaf: {
1046
+ ListLeaf* leaf = node.getListLeaf();
1047
+ ListNode* iter = &leaf->first;
1048
+ do {
1049
+ if (iter->entry.key() == key) return &iter->entry.value();
1050
+ iter = iter->next;
1051
+ } while (iter != nullptr);
1052
+ return nullptr;
1053
+ }
1054
+ case kInnerLeafSizeClass1: {
1055
+ InnerLeaf<1>* leaf = node.getInnerLeafSizeClass1();
1056
+ return leaf->find_entry(hash, hashPos, key);
1057
+ }
1058
+ case kInnerLeafSizeClass2: {
1059
+ InnerLeaf<2>* leaf = node.getInnerLeafSizeClass2();
1060
+ return leaf->find_entry(hash, hashPos, key);
1061
+ }
1062
+ case kInnerLeafSizeClass3: {
1063
+ InnerLeaf<3>* leaf = node.getInnerLeafSizeClass3();
1064
+ return leaf->find_entry(hash, hashPos, key);
1065
+ }
1066
+ case kInnerLeafSizeClass4: {
1067
+ InnerLeaf<4>* leaf = node.getInnerLeafSizeClass4();
1068
+ return leaf->find_entry(hash, hashPos, key);
1069
+ }
1070
+ case kBranchNode: {
1071
+ BranchNode* branch = node.getBranchNode();
1072
+ if (!branch->occupation.test(get_hash_chunk(hash, hashPos)))
1073
+ return nullptr;
1074
+ int location =
1075
+ branch->occupation.num_set_until(get_hash_chunk(hash, hashPos)) - 1;
1076
+ node = branch->child[location];
1077
+ ++hashPos;
1078
+ }
1079
+ }
1080
+
1081
+ assert(hashPos > startPos);
1082
+
1083
+ return find_recurse(node, hash, hashPos, key);
1084
+ }
1085
+
1086
+ static const HighsHashTableEntry<K, V>* find_common_recurse(NodePtr n1,
1087
+ NodePtr n2,
1088
+ int hashPos) {
1089
+ if (n1.getType() > n2.getType()) std::swap(n1, n2);
1090
+
1091
+ switch (n1.getType()) {
1092
+ case kEmpty:
1093
+ return nullptr;
1094
+ case kListLeaf: {
1095
+ ListLeaf* leaf = n1.getListLeaf();
1096
+ ListNode* iter = &leaf->first;
1097
+ do {
1098
+ if (find_recurse(n2, compute_hash(iter->entry.key()), hashPos,
1099
+ iter->entry.key()))
1100
+ return &iter->entry;
1101
+ iter = iter->next;
1102
+ } while (iter != nullptr);
1103
+ return nullptr;
1104
+ }
1105
+ case kInnerLeafSizeClass1:
1106
+ return findCommonInLeaf(n1.getInnerLeafSizeClass1(), n2, hashPos);
1107
+ case kInnerLeafSizeClass2:
1108
+ return findCommonInLeaf(n1.getInnerLeafSizeClass2(), n2, hashPos);
1109
+ case kInnerLeafSizeClass3:
1110
+ return findCommonInLeaf(n1.getInnerLeafSizeClass3(), n2, hashPos);
1111
+ case kInnerLeafSizeClass4:
1112
+ return findCommonInLeaf(n1.getInnerLeafSizeClass4(), n2, hashPos);
1113
+ case kBranchNode: {
1114
+ BranchNode* branch1 = n1.getBranchNode();
1115
+ BranchNode* branch2 = n2.getBranchNode();
1116
+
1117
+ uint64_t matchMask = branch1->occupation & branch2->occupation;
1118
+
1119
+ while (matchMask) {
1120
+ int pos = HighsHashHelpers::log2i(matchMask);
1121
+ assert((branch1->occupation >> pos) & 1);
1122
+ assert((branch2->occupation >> pos) & 1);
1123
+ assert((matchMask >> pos) & 1);
1124
+
1125
+ matchMask ^= (uint64_t{1} << pos);
1126
+
1127
+ assert(((matchMask >> pos) & 1) == 0);
1128
+
1129
+ int location1 = branch1->occupation.num_set_until(pos) - 1;
1130
+ int location2 = branch2->occupation.num_set_until(pos) - 1;
1131
+
1132
+ const HighsHashTableEntry<K, V>* match =
1133
+ find_common_recurse(branch1->child[location1],
1134
+ branch2->child[location2], hashPos + 1);
1135
+ if (match != nullptr) return match;
1136
+ }
1137
+
1138
+ return nullptr;
1139
+ }
1140
+ }
1141
+ }
1142
+
1143
+ static void destroy_recurse(NodePtr node) {
1144
+ switch (node.getType()) {
1145
+ case kListLeaf: {
1146
+ ListLeaf* leaf = node.getListLeaf();
1147
+ ListNode* iter = leaf->first.next;
1148
+ delete leaf;
1149
+ while (iter != nullptr) {
1150
+ ListNode* next = iter->next;
1151
+ delete iter;
1152
+ iter = iter->next;
1153
+ }
1154
+
1155
+ break;
1156
+ }
1157
+ case kInnerLeafSizeClass1:
1158
+ delete node.getInnerLeafSizeClass1();
1159
+ break;
1160
+ case kInnerLeafSizeClass2:
1161
+ delete node.getInnerLeafSizeClass2();
1162
+ break;
1163
+ case kInnerLeafSizeClass3:
1164
+ delete node.getInnerLeafSizeClass3();
1165
+ break;
1166
+ case kInnerLeafSizeClass4:
1167
+ delete node.getInnerLeafSizeClass4();
1168
+ break;
1169
+ case kBranchNode: {
1170
+ BranchNode* branch = node.getBranchNode();
1171
+ int size = branch->occupation.num_set();
1172
+
1173
+ for (int i = 0; i < size; ++i) destroy_recurse(branch->child[i]);
1174
+
1175
+ destroyBranchingNode(branch);
1176
+ }
1177
+ }
1178
+ }
1179
+
1180
+ static NodePtr copy_recurse(NodePtr node) {
1181
+ switch (node.getType()) {
1182
+ case kEmpty:
1183
+ assert(false);
1184
+ break;
1185
+ case kListLeaf: {
1186
+ ListLeaf* leaf = node.getListLeaf();
1187
+
1188
+ ListLeaf* copyLeaf = new ListLeaf(*leaf);
1189
+
1190
+ ListNode* iter = &leaf->first;
1191
+ ListNode* copyIter = &copyLeaf->first;
1192
+ do {
1193
+ copyIter->next = new ListNode(*iter->next);
1194
+ iter = iter->next;
1195
+ copyIter = copyIter->next;
1196
+ } while (iter->next != nullptr);
1197
+
1198
+ return copyLeaf;
1199
+ }
1200
+ case kInnerLeafSizeClass1: {
1201
+ InnerLeaf<1>* leaf = node.getInnerLeafSizeClass1();
1202
+ return new InnerLeaf<1>(*leaf);
1203
+ }
1204
+ case kInnerLeafSizeClass2: {
1205
+ InnerLeaf<2>* leaf = node.getInnerLeafSizeClass2();
1206
+ return new InnerLeaf<2>(*leaf);
1207
+ }
1208
+ case kInnerLeafSizeClass3: {
1209
+ InnerLeaf<3>* leaf = node.getInnerLeafSizeClass3();
1210
+ return new InnerLeaf<3>(*leaf);
1211
+ }
1212
+ case kInnerLeafSizeClass4: {
1213
+ InnerLeaf<4>* leaf = node.getInnerLeafSizeClass4();
1214
+ return new InnerLeaf<4>(*leaf);
1215
+ }
1216
+ case kBranchNode: {
1217
+ BranchNode* branch = node.getBranchNode();
1218
+ int size = branch->occupation.num_set();
1219
+ BranchNode* newBranch =
1220
+ (BranchNode*)::operator new(getBranchNodeSize(size));
1221
+ newBranch->occupation = branch->occupation;
1222
+ for (int i = 0; i < size; ++i)
1223
+ newBranch->child[i] = copy_recurse(branch->child[i]);
1224
+
1225
+ return newBranch;
1226
+ }
1227
+ }
1228
+ }
1229
+
1230
+ template <typename R, typename F,
1231
+ typename std::enable_if<std::is_void<R>::value, int>::type = 0>
1232
+ static void for_each_recurse(NodePtr node, F&& f) {
1233
+ switch (node.getType()) {
1234
+ case kEmpty:
1235
+ break;
1236
+ case kListLeaf: {
1237
+ ListLeaf* leaf = node.getListLeaf();
1238
+ ListNode* iter = &leaf->first;
1239
+ do {
1240
+ iter->entry.forward(f);
1241
+ iter = iter->next;
1242
+ } while (iter != nullptr);
1243
+ break;
1244
+ }
1245
+ case kInnerLeafSizeClass1: {
1246
+ InnerLeaf<1>* leaf = node.getInnerLeafSizeClass1();
1247
+ for (int i = 0; i < leaf->size; ++i) leaf->entries[i].forward(f);
1248
+
1249
+ break;
1250
+ }
1251
+ case kInnerLeafSizeClass2: {
1252
+ InnerLeaf<2>* leaf = node.getInnerLeafSizeClass2();
1253
+ for (int i = 0; i < leaf->size; ++i) leaf->entries[i].forward(f);
1254
+
1255
+ break;
1256
+ }
1257
+ case kInnerLeafSizeClass3: {
1258
+ InnerLeaf<3>* leaf = node.getInnerLeafSizeClass3();
1259
+ for (int i = 0; i < leaf->size; ++i) leaf->entries[i].forward(f);
1260
+
1261
+ break;
1262
+ }
1263
+ case kInnerLeafSizeClass4: {
1264
+ InnerLeaf<4>* leaf = node.getInnerLeafSizeClass4();
1265
+ for (int i = 0; i < leaf->size; ++i) leaf->entries[i].forward(f);
1266
+
1267
+ break;
1268
+ }
1269
+ case kBranchNode: {
1270
+ BranchNode* branch = node.getBranchNode();
1271
+ int size = branch->occupation.num_set();
1272
+
1273
+ for (int i = 0; i < size; ++i) for_each_recurse<R>(branch->child[i], f);
1274
+ }
1275
+ }
1276
+ }
1277
+
1278
+ template <typename R, typename F,
1279
+ typename std::enable_if<!std::is_void<R>::value, int>::type = 0>
1280
+ static R for_each_recurse(NodePtr node, F&& f) {
1281
+ switch (node.getType()) {
1282
+ case kEmpty:
1283
+ break;
1284
+ case kListLeaf: {
1285
+ ListLeaf* leaf = node.getListLeaf();
1286
+ ListNode* iter = &leaf->first;
1287
+ do {
1288
+ auto x = iter->entry.forward(f);
1289
+ if (x) return x;
1290
+ iter = iter->next;
1291
+ } while (iter != nullptr);
1292
+ break;
1293
+ }
1294
+ case kInnerLeafSizeClass1: {
1295
+ InnerLeaf<1>* leaf = node.getInnerLeafSizeClass1();
1296
+ for (int i = 0; i < leaf->size; ++i) {
1297
+ auto x = leaf->entries[i].forward(f);
1298
+ if (x) return x;
1299
+ }
1300
+
1301
+ break;
1302
+ }
1303
+ case kInnerLeafSizeClass2: {
1304
+ InnerLeaf<2>* leaf = node.getInnerLeafSizeClass2();
1305
+ for (int i = 0; i < leaf->size; ++i) {
1306
+ auto x = leaf->entries[i].forward(f);
1307
+ if (x) return x;
1308
+ }
1309
+
1310
+ break;
1311
+ }
1312
+ case kInnerLeafSizeClass3: {
1313
+ InnerLeaf<3>* leaf = node.getInnerLeafSizeClass3();
1314
+ for (int i = 0; i < leaf->size; ++i) {
1315
+ auto x = leaf->entries[i].forward(f);
1316
+ if (x) return x;
1317
+ }
1318
+
1319
+ break;
1320
+ }
1321
+ case kInnerLeafSizeClass4: {
1322
+ InnerLeaf<4>* leaf = node.getInnerLeafSizeClass4();
1323
+ for (int i = 0; i < leaf->size; ++i) {
1324
+ auto x = leaf->entries[i].forward(f);
1325
+ if (x) return x;
1326
+ }
1327
+
1328
+ break;
1329
+ }
1330
+ case kBranchNode: {
1331
+ BranchNode* branch = node.getBranchNode();
1332
+ int size = branch->occupation.num_set();
1333
+
1334
+ for (int i = 0; i < size; ++i) {
1335
+ auto x = for_each_recurse<R>(branch->child[i], f);
1336
+ if (x) return x;
1337
+ }
1338
+ }
1339
+ }
1340
+
1341
+ return R();
1342
+ }
1343
+
1344
+ public:
1345
+ template <typename... Args>
1346
+ bool insert(Args&&... args) {
1347
+ HighsHashTableEntry<K, V> entry(std::forward<Args>(args)...);
1348
+ uint64_t hash = compute_hash(entry.key());
1349
+ return insert_recurse(&root, hash, 0, entry).second;
1350
+ }
1351
+
1352
+ template <typename... Args>
1353
+ std::pair<ValueType*, bool> insert_or_get(Args&&... args) {
1354
+ HighsHashTableEntry<K, V> entry(std::forward<Args>(args)...);
1355
+ uint64_t hash = compute_hash(entry.key());
1356
+ return insert_recurse(&root, hash, 0, entry);
1357
+ }
1358
+
1359
+ void erase(const K& key) {
1360
+ uint64_t hash = compute_hash(key);
1361
+
1362
+ erase_recurse(&root, hash, 0, key);
1363
+ }
1364
+
1365
+ bool contains(const K& key) const {
1366
+ uint64_t hash = compute_hash(key);
1367
+ return find_recurse(root, hash, 0, key) != nullptr;
1368
+ }
1369
+
1370
+ const ValueType* find(const K& key) const {
1371
+ uint64_t hash = compute_hash(key);
1372
+
1373
+ return find_recurse(root, hash, 0, key);
1374
+ }
1375
+
1376
+ ValueType* find(const K& key) {
1377
+ uint64_t hash = compute_hash(key);
1378
+
1379
+ return find_recurse(root, hash, 0, key);
1380
+ }
1381
+
1382
+ const HighsHashTableEntry<K, V>* find_common(
1383
+ const HighsHashTree<K, V>& other) const {
1384
+ return find_common_recurse(root, other.root, 0);
1385
+ }
1386
+
1387
+ bool empty() const { return root.getType() == kEmpty; }
1388
+
1389
+ void clear() {
1390
+ destroy_recurse(root);
1391
+ root = nullptr;
1392
+ }
1393
+
1394
+ template <typename F>
1395
+ auto for_each(F&& f) const
1396
+ -> decltype(HighsHashTableEntry<K, V>().forward(f)) {
1397
+ using R = decltype(for_each(f));
1398
+ return for_each_recurse<R>(root, f);
1399
+ }
1400
+
1401
+ HighsHashTree() = default;
1402
+
1403
+ HighsHashTree(HighsHashTree&& other) : root(other.root) {
1404
+ other.root = nullptr;
1405
+ }
1406
+
1407
+ HighsHashTree(const HighsHashTree& other) : root(copy_recurse(other.root)) {}
1408
+
1409
+ HighsHashTree& operator=(HighsHashTree&& other) {
1410
+ destroy_recurse(root);
1411
+ root = other.root;
1412
+ other.root = nullptr;
1413
+ return *this;
1414
+ }
1415
+
1416
+ HighsHashTree& operator=(const HighsHashTree& other) {
1417
+ destroy_recurse(root);
1418
+ root = copy_recurse(other.root);
1419
+ return *this;
1420
+ }
1421
+
1422
+ ~HighsHashTree() { destroy_recurse(root); }
1423
+ };
1424
+
1425
+ #endif