casadi 3.7.2__cp314-none-manylinux2014_i686.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1726) hide show
  1. casadi/__init__.py +92 -0
  2. casadi/_casadi.so +0 -0
  3. casadi/casadi-cli +0 -0
  4. casadi/casadi.py +54468 -0
  5. casadi/cbc +0 -0
  6. casadi/clp +0 -0
  7. casadi/cmake/alpaqa/alpaqaConfig.cmake +24 -0
  8. casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +65 -0
  9. casadi/cmake/alpaqa/alpaqaTargets-release.cmake +29 -0
  10. casadi/cmake/alpaqa/alpaqaTargets.cmake +131 -0
  11. casadi/cmake/casadi-config-version.cmake +11 -0
  12. casadi/cmake/casadi-config.cmake +8 -0
  13. casadi/cmake/casadi-targets-release.cmake +19 -0
  14. casadi/cmake/casadi-targets.cmake +107 -0
  15. casadi/cmake/ghc_filesystem/ghc_filesystem-config-version.cmake +85 -0
  16. casadi/cmake/ghc_filesystem/ghc_filesystem-config.cmake +30 -0
  17. casadi/cmake/ghc_filesystem/ghc_filesystem-targets.cmake +107 -0
  18. casadi/cmake/highs/highs-config.cmake +17 -0
  19. casadi/cmake/highs/highs-targets-release.cmake +28 -0
  20. casadi/cmake/highs/highs-targets.cmake +117 -0
  21. casadi/cmake/libzip/libzip-config-version.cmake +43 -0
  22. casadi/cmake/libzip/libzip-config.cmake +69 -0
  23. casadi/cmake/libzip/libzip-targets-release.cmake +19 -0
  24. casadi/cmake/libzip/libzip-targets.cmake +107 -0
  25. casadi/cmake/libzip/modules/FindMbedTLS.cmake +141 -0
  26. casadi/cmake/libzip/modules/FindNettle.cmake +141 -0
  27. casadi/cmake/libzip/modules/Findzstd.cmake +186 -0
  28. casadi/cmake/osqp/osqp-config.cmake +1 -0
  29. casadi/cmake/osqp/osqp-targets-noconfig.cmake +29 -0
  30. casadi/cmake/osqp/osqp-targets.cmake +113 -0
  31. casadi/cmake/proxsuite/find-external/Simde/FindSimde.cmake +39 -0
  32. casadi/cmake/proxsuite/proxsuiteConfig.cmake +177 -0
  33. casadi/cmake/proxsuite/proxsuiteConfigVersion.cmake +65 -0
  34. casadi/cmake/proxsuite/proxsuiteTargets.cmake +115 -0
  35. casadi/cmake/qdldl/qdldl-config.cmake +1 -0
  36. casadi/cmake/qdldl/qdldl-targets-noconfig.cmake +29 -0
  37. casadi/cmake/qdldl/qdldl-targets.cmake +113 -0
  38. casadi/cmake/sleqp/sleqp-config-version.cmake +65 -0
  39. casadi/cmake/sleqp/sleqp-config.cmake +1 -0
  40. casadi/cmake/sleqp/sleqp-targets-release.cmake +20 -0
  41. casadi/cmake/sleqp/sleqp-targets.cmake +106 -0
  42. casadi/cmake/trlib/trlib-config-release.cmake +19 -0
  43. casadi/cmake/trlib/trlib-config-version.cmake +83 -0
  44. casadi/cmake/trlib/trlib-config.cmake +107 -0
  45. casadi/highs +0 -0
  46. casadi/include/casadi/casadi.hpp +31 -0
  47. casadi/include/casadi/casadi.i +4920 -0
  48. casadi/include/casadi/casadi_c.h +138 -0
  49. casadi/include/casadi/casadi_numpy.hpp +97 -0
  50. casadi/include/casadi/config.h +46 -0
  51. casadi/include/casadi/core/archiver.hpp +58 -0
  52. casadi/include/casadi/core/blazing_spline.hpp +47 -0
  53. casadi/include/casadi/core/calculus.hpp +1805 -0
  54. casadi/include/casadi/core/callback.hpp +235 -0
  55. casadi/include/casadi/core/casadi_common.hpp +355 -0
  56. casadi/include/casadi/core/casadi_enum.hpp +90 -0
  57. casadi/include/casadi/core/casadi_export.h +43 -0
  58. casadi/include/casadi/core/casadi_interrupt.hpp +83 -0
  59. casadi/include/casadi/core/casadi_limits.hpp +104 -0
  60. casadi/include/casadi/core/casadi_logger.hpp +134 -0
  61. casadi/include/casadi/core/casadi_meta.hpp +122 -0
  62. casadi/include/casadi/core/casadi_misc.hpp +1022 -0
  63. casadi/include/casadi/core/casadi_types.hpp +66 -0
  64. casadi/include/casadi/core/code_generator.hpp +1071 -0
  65. casadi/include/casadi/core/conic.hpp +213 -0
  66. casadi/include/casadi/core/core.hpp +75 -0
  67. casadi/include/casadi/core/dae_builder.hpp +885 -0
  68. casadi/include/casadi/core/dm.hpp +90 -0
  69. casadi/include/casadi/core/dm_fwd.hpp +39 -0
  70. casadi/include/casadi/core/dple.hpp +138 -0
  71. casadi/include/casadi/core/exception.hpp +167 -0
  72. casadi/include/casadi/core/expm.hpp +84 -0
  73. casadi/include/casadi/core/external.hpp +70 -0
  74. casadi/include/casadi/core/filesystem.hpp +58 -0
  75. casadi/include/casadi/core/fmu.hpp +270 -0
  76. casadi/include/casadi/core/function.hpp +1389 -0
  77. casadi/include/casadi/core/generic_expression.hpp +760 -0
  78. casadi/include/casadi/core/generic_matrix.hpp +1805 -0
  79. casadi/include/casadi/core/generic_shared.hpp +395 -0
  80. casadi/include/casadi/core/generic_shared_impl.hpp +218 -0
  81. casadi/include/casadi/core/generic_shared_internal.hpp +215 -0
  82. casadi/include/casadi/core/generic_type.hpp +314 -0
  83. casadi/include/casadi/core/global_options.hpp +107 -0
  84. casadi/include/casadi/core/im.hpp +52 -0
  85. casadi/include/casadi/core/im_fwd.hpp +35 -0
  86. casadi/include/casadi/core/importer.hpp +221 -0
  87. casadi/include/casadi/core/integration_tools.hpp +292 -0
  88. casadi/include/casadi/core/integrator.hpp +290 -0
  89. casadi/include/casadi/core/interpolant.hpp +163 -0
  90. casadi/include/casadi/core/linsol.hpp +171 -0
  91. casadi/include/casadi/core/matrix_decl.hpp +1423 -0
  92. casadi/include/casadi/core/matrix_fwd.hpp +37 -0
  93. casadi/include/casadi/core/mx.hpp +1014 -0
  94. casadi/include/casadi/core/nlp_builder.hpp +163 -0
  95. casadi/include/casadi/core/nlp_tools.hpp +124 -0
  96. casadi/include/casadi/core/nlpsol.hpp +234 -0
  97. casadi/include/casadi/core/nonzeros.hpp +111 -0
  98. casadi/include/casadi/core/options.hpp +122 -0
  99. casadi/include/casadi/core/optistack.hpp +704 -0
  100. casadi/include/casadi/core/polynomial.hpp +126 -0
  101. casadi/include/casadi/core/printable.hpp +81 -0
  102. casadi/include/casadi/core/resource.hpp +107 -0
  103. casadi/include/casadi/core/rootfinder.hpp +176 -0
  104. casadi/include/casadi/core/runtime/casadi_axpy.hpp +8 -0
  105. casadi/include/casadi/core/runtime/casadi_bfgs.hpp +49 -0
  106. casadi/include/casadi/core/runtime/casadi_bilin.hpp +42 -0
  107. casadi/include/casadi/core/runtime/casadi_blazing_1d_boor_eval.hpp +112 -0
  108. casadi/include/casadi/core/runtime/casadi_blazing_2d_boor_eval.hpp +311 -0
  109. casadi/include/casadi/core/runtime/casadi_blazing_3d_boor_eval.hpp +645 -0
  110. casadi/include/casadi/core/runtime/casadi_blazing_de_boor.hpp +101 -0
  111. casadi/include/casadi/core/runtime/casadi_bound_consistency.hpp +51 -0
  112. casadi/include/casadi/core/runtime/casadi_cache.hpp +59 -0
  113. casadi/include/casadi/core/runtime/casadi_clear.hpp +27 -0
  114. casadi/include/casadi/core/runtime/casadi_clip_max.hpp +33 -0
  115. casadi/include/casadi/core/runtime/casadi_clip_min.hpp +33 -0
  116. casadi/include/casadi/core/runtime/casadi_convexify.hpp +182 -0
  117. casadi/include/casadi/core/runtime/casadi_copy.hpp +31 -0
  118. casadi/include/casadi/core/runtime/casadi_cvx.hpp +463 -0
  119. casadi/include/casadi/core/runtime/casadi_de_boor.hpp +36 -0
  120. casadi/include/casadi/core/runtime/casadi_dense_lsqr.hpp +247 -0
  121. casadi/include/casadi/core/runtime/casadi_densify.hpp +48 -0
  122. casadi/include/casadi/core/runtime/casadi_dot.hpp +27 -0
  123. casadi/include/casadi/core/runtime/casadi_feasiblesqpmethod.hpp +208 -0
  124. casadi/include/casadi/core/runtime/casadi_file_slurp.hpp +32 -0
  125. casadi/include/casadi/core/runtime/casadi_fill.hpp +27 -0
  126. casadi/include/casadi/core/runtime/casadi_finite_diff.hpp +345 -0
  127. casadi/include/casadi/core/runtime/casadi_flip.hpp +33 -0
  128. casadi/include/casadi/core/runtime/casadi_getu.hpp +35 -0
  129. casadi/include/casadi/core/runtime/casadi_iamax.hpp +36 -0
  130. casadi/include/casadi/core/runtime/casadi_interpn.hpp +39 -0
  131. casadi/include/casadi/core/runtime/casadi_interpn_grad.hpp +72 -0
  132. casadi/include/casadi/core/runtime/casadi_interpn_interpolate.hpp +43 -0
  133. casadi/include/casadi/core/runtime/casadi_interpn_weights.hpp +39 -0
  134. casadi/include/casadi/core/runtime/casadi_ipqp.hpp +868 -0
  135. casadi/include/casadi/core/runtime/casadi_jac.hpp +186 -0
  136. casadi/include/casadi/core/runtime/casadi_kkt.hpp +67 -0
  137. casadi/include/casadi/core/runtime/casadi_kron.hpp +50 -0
  138. casadi/include/casadi/core/runtime/casadi_ldl.hpp +109 -0
  139. casadi/include/casadi/core/runtime/casadi_logsumexp.hpp +41 -0
  140. casadi/include/casadi/core/runtime/casadi_low.hpp +65 -0
  141. casadi/include/casadi/core/runtime/casadi_lsqr.hpp +247 -0
  142. casadi/include/casadi/core/runtime/casadi_masked_norm_inf.hpp +33 -0
  143. casadi/include/casadi/core/runtime/casadi_max_viol.hpp +37 -0
  144. casadi/include/casadi/core/runtime/casadi_mmax.hpp +28 -0
  145. casadi/include/casadi/core/runtime/casadi_mmin.hpp +29 -0
  146. casadi/include/casadi/core/runtime/casadi_mtimes.hpp +75 -0
  147. casadi/include/casadi/core/runtime/casadi_mv.hpp +46 -0
  148. casadi/include/casadi/core/runtime/casadi_mv_dense.hpp +39 -0
  149. casadi/include/casadi/core/runtime/casadi_nd_boor_dual_eval.hpp +127 -0
  150. casadi/include/casadi/core/runtime/casadi_nd_boor_eval.hpp +120 -0
  151. casadi/include/casadi/core/runtime/casadi_newton.hpp +66 -0
  152. casadi/include/casadi/core/runtime/casadi_nlp.hpp +295 -0
  153. casadi/include/casadi/core/runtime/casadi_norm_1.hpp +29 -0
  154. casadi/include/casadi/core/runtime/casadi_norm_2.hpp +24 -0
  155. casadi/include/casadi/core/runtime/casadi_norm_inf.hpp +28 -0
  156. casadi/include/casadi/core/runtime/casadi_norm_inf_mul.hpp +105 -0
  157. casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
  158. casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
  159. casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
  160. casadi/include/casadi/core/runtime/casadi_polyval.hpp +29 -0
  161. casadi/include/casadi/core/runtime/casadi_print_canonical.hpp +55 -0
  162. casadi/include/casadi/core/runtime/casadi_print_scalar.hpp +25 -0
  163. casadi/include/casadi/core/runtime/casadi_print_vector.hpp +32 -0
  164. casadi/include/casadi/core/runtime/casadi_printme.hpp +26 -0
  165. casadi/include/casadi/core/runtime/casadi_project.hpp +39 -0
  166. casadi/include/casadi/core/runtime/casadi_qp.hpp +86 -0
  167. casadi/include/casadi/core/runtime/casadi_qr.hpp +272 -0
  168. casadi/include/casadi/core/runtime/casadi_qrqp.hpp +1239 -0
  169. casadi/include/casadi/core/runtime/casadi_rank1.hpp +40 -0
  170. casadi/include/casadi/core/runtime/casadi_regularize.hpp +73 -0
  171. casadi/include/casadi/core/runtime/casadi_runtime.hpp +318 -0
  172. casadi/include/casadi/core/runtime/casadi_scal.hpp +26 -0
  173. casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
  174. casadi/include/casadi/core/runtime/casadi_sparsify.hpp +42 -0
  175. casadi/include/casadi/core/runtime/casadi_sparsity.hpp +24 -0
  176. casadi/include/casadi/core/runtime/casadi_sqpmethod.hpp +178 -0
  177. casadi/include/casadi/core/runtime/casadi_sum.hpp +31 -0
  178. casadi/include/casadi/core/runtime/casadi_sum_viol.hpp +37 -0
  179. casadi/include/casadi/core/runtime/casadi_swap.hpp +32 -0
  180. casadi/include/casadi/core/runtime/casadi_trans.hpp +35 -0
  181. casadi/include/casadi/core/runtime/casadi_tri_project.hpp +37 -0
  182. casadi/include/casadi/core/runtime/casadi_trilsolve.hpp +81 -0
  183. casadi/include/casadi/core/runtime/casadi_triusolve.hpp +81 -0
  184. casadi/include/casadi/core/runtime/casadi_vector_fmax.hpp +28 -0
  185. casadi/include/casadi/core/runtime/casadi_vector_fmin.hpp +28 -0
  186. casadi/include/casadi/core/runtime/casadi_vfmax.hpp +28 -0
  187. casadi/include/casadi/core/runtime/casadi_vfmin.hpp +28 -0
  188. casadi/include/casadi/core/runtime/shared.hpp +261 -0
  189. casadi/include/casadi/core/serializer.hpp +264 -0
  190. casadi/include/casadi/core/serializing_stream.hpp +336 -0
  191. casadi/include/casadi/core/shared_object.hpp +182 -0
  192. casadi/include/casadi/core/slice.hpp +149 -0
  193. casadi/include/casadi/core/sparsity.hpp +1507 -0
  194. casadi/include/casadi/core/sparsity_interface.hpp +763 -0
  195. casadi/include/casadi/core/submatrix.hpp +156 -0
  196. casadi/include/casadi/core/sx.hpp +244 -0
  197. casadi/include/casadi/core/sx_elem.hpp +376 -0
  198. casadi/include/casadi/core/sx_fwd.hpp +45 -0
  199. casadi/include/casadi/core/timing.hpp +98 -0
  200. casadi/include/casadi/core/tools.hpp +67 -0
  201. casadi/include/casadi/core/xml_file.hpp +93 -0
  202. casadi/include/casadi/core/xml_node.hpp +212 -0
  203. casadi/include/casadi/doc.i +62244 -0
  204. casadi/include/casadi/doc_merged.i +38499 -0
  205. casadi/include/casadi/mem.h +311 -0
  206. casadi/include/casadi/valgrind-casadi.supp +649 -0
  207. casadi/include/casadi/valgrind-python.supp +3886 -0
  208. casadi/include/coin-or/IpAlgBuilder.hpp +417 -0
  209. casadi/include/coin-or/IpAlgStrategy.hpp +201 -0
  210. casadi/include/coin-or/IpAlgTypes.hpp +64 -0
  211. casadi/include/coin-or/IpAugSystemSolver.hpp +212 -0
  212. casadi/include/coin-or/IpBlas.hpp +426 -0
  213. casadi/include/coin-or/IpCachedResults.hpp +897 -0
  214. casadi/include/coin-or/IpCompoundMatrix.hpp +423 -0
  215. casadi/include/coin-or/IpCompoundSymMatrix.hpp +348 -0
  216. casadi/include/coin-or/IpCompoundVector.hpp +395 -0
  217. casadi/include/coin-or/IpConvCheck.hpp +97 -0
  218. casadi/include/coin-or/IpDebug.hpp +167 -0
  219. casadi/include/coin-or/IpDenseVector.hpp +626 -0
  220. casadi/include/coin-or/IpDiagMatrix.hpp +158 -0
  221. casadi/include/coin-or/IpEqMultCalculator.hpp +76 -0
  222. casadi/include/coin-or/IpException.hpp +156 -0
  223. casadi/include/coin-or/IpExpansionMatrix.hpp +245 -0
  224. casadi/include/coin-or/IpGenTMatrix.hpp +290 -0
  225. casadi/include/coin-or/IpHessianUpdater.hpp +73 -0
  226. casadi/include/coin-or/IpIdentityMatrix.hpp +167 -0
  227. casadi/include/coin-or/IpIpoptAlg.hpp +257 -0
  228. casadi/include/coin-or/IpIpoptApplication.hpp +367 -0
  229. casadi/include/coin-or/IpIpoptCalculatedQuantities.hpp +1009 -0
  230. casadi/include/coin-or/IpIpoptData.hpp +966 -0
  231. casadi/include/coin-or/IpIpoptNLP.hpp +328 -0
  232. casadi/include/coin-or/IpIterateInitializer.hpp +68 -0
  233. casadi/include/coin-or/IpIteratesVector.hpp +840 -0
  234. casadi/include/coin-or/IpIterationOutput.hpp +78 -0
  235. casadi/include/coin-or/IpJournalist.hpp +573 -0
  236. casadi/include/coin-or/IpLapack.hpp +227 -0
  237. casadi/include/coin-or/IpLibraryLoader.hpp +76 -0
  238. casadi/include/coin-or/IpLineSearch.hpp +106 -0
  239. casadi/include/coin-or/IpLinearSolvers.h +46 -0
  240. casadi/include/coin-or/IpMatrix.hpp +434 -0
  241. casadi/include/coin-or/IpMuUpdate.hpp +77 -0
  242. casadi/include/coin-or/IpNLP.hpp +306 -0
  243. casadi/include/coin-or/IpNLPScaling.hpp +582 -0
  244. casadi/include/coin-or/IpObserver.hpp +422 -0
  245. casadi/include/coin-or/IpOptionsList.hpp +412 -0
  246. casadi/include/coin-or/IpOrigIpoptNLP.hpp +603 -0
  247. casadi/include/coin-or/IpPDSystemSolver.hpp +137 -0
  248. casadi/include/coin-or/IpReferenced.hpp +262 -0
  249. casadi/include/coin-or/IpRegOptions.hpp +1152 -0
  250. casadi/include/coin-or/IpReturnCodes.h +23 -0
  251. casadi/include/coin-or/IpReturnCodes.hpp +18 -0
  252. casadi/include/coin-or/IpReturnCodes.inc +71 -0
  253. casadi/include/coin-or/IpReturnCodes_inc.h +45 -0
  254. casadi/include/coin-or/IpScaledMatrix.hpp +291 -0
  255. casadi/include/coin-or/IpSearchDirCalculator.hpp +72 -0
  256. casadi/include/coin-or/IpSmartPtr.hpp +865 -0
  257. casadi/include/coin-or/IpSolveStatistics.hpp +210 -0
  258. casadi/include/coin-or/IpSparseSymLinearSolverInterface.hpp +260 -0
  259. casadi/include/coin-or/IpStdAugSystemSolver.cpp +555 -0
  260. casadi/include/coin-or/IpStdCInterface.h +428 -0
  261. casadi/include/coin-or/IpSumSymMatrix.hpp +186 -0
  262. casadi/include/coin-or/IpSymLinearSolver.hpp +141 -0
  263. casadi/include/coin-or/IpSymMatrix.hpp +167 -0
  264. casadi/include/coin-or/IpSymScaledMatrix.hpp +255 -0
  265. casadi/include/coin-or/IpSymTMatrix.hpp +275 -0
  266. casadi/include/coin-or/IpTNLP.hpp +820 -0
  267. casadi/include/coin-or/IpTNLPAdapter.hpp +648 -0
  268. casadi/include/coin-or/IpTNLPReducer.hpp +274 -0
  269. casadi/include/coin-or/IpTaggedObject.hpp +128 -0
  270. casadi/include/coin-or/IpTimedTask.hpp +218 -0
  271. casadi/include/coin-or/IpTimingStatistics.hpp +323 -0
  272. casadi/include/coin-or/IpTripletHelper.hpp +308 -0
  273. casadi/include/coin-or/IpTypes.h +81 -0
  274. casadi/include/coin-or/IpTypes.hpp +30 -0
  275. casadi/include/coin-or/IpUtils.hpp +166 -0
  276. casadi/include/coin-or/IpVector.hpp +892 -0
  277. casadi/include/coin-or/IpZeroSymMatrix.hpp +155 -0
  278. casadi/include/coin-or/IpoptConfig.h +45 -0
  279. casadi/include/coin-or/SensAlgorithm.hpp +114 -0
  280. casadi/include/coin-or/SensApplication.hpp +188 -0
  281. casadi/include/coin-or/SensBacksolver.hpp +36 -0
  282. casadi/include/coin-or/SensMeasurement.hpp +56 -0
  283. casadi/include/coin-or/SensPCalculator.hpp +137 -0
  284. casadi/include/coin-or/SensRegOp.hpp +21 -0
  285. casadi/include/coin-or/SensSchurData.hpp +182 -0
  286. casadi/include/coin-or/SensSchurDriver.hpp +118 -0
  287. casadi/include/coin-or/SensSimpleBacksolver.hpp +49 -0
  288. casadi/include/coin-or/SensStepCalc.hpp +85 -0
  289. casadi/include/coin-or/SensUtils.hpp +63 -0
  290. casadi/include/coin-or/metis/defs.h +161 -0
  291. casadi/include/coin-or/metis/macros.h +143 -0
  292. casadi/include/coin-or/metis/metis.h +37 -0
  293. casadi/include/coin-or/metis/proto.h +505 -0
  294. casadi/include/coin-or/metis/rename.h +418 -0
  295. casadi/include/coin-or/metis/struct.h +251 -0
  296. casadi/include/coin-or/mumps/dmumps_c.h +142 -0
  297. casadi/include/coin-or/mumps/mumps_c_types.h +72 -0
  298. casadi/include/coin-or/mumps/mumps_compat.h +27 -0
  299. casadi/include/coin-or/mumps/mumps_int_def.h +11 -0
  300. casadi/include/coin-or/mumps/mumps_mpi.h +67 -0
  301. casadi/include/daqp/api.h +46 -0
  302. casadi/include/daqp/auxiliary.h +29 -0
  303. casadi/include/daqp/bnb.h +32 -0
  304. casadi/include/daqp/codegen.h +18 -0
  305. casadi/include/daqp/constants.h +92 -0
  306. casadi/include/daqp/daqp.h +22 -0
  307. casadi/include/daqp/daqp_prox.h +18 -0
  308. casadi/include/daqp/factorization.h +18 -0
  309. casadi/include/daqp/types.h +161 -0
  310. casadi/include/daqp/utils.h +44 -0
  311. casadi/include/eigen3/Eigen/Cholesky +45 -0
  312. casadi/include/eigen3/Eigen/CholmodSupport +48 -0
  313. casadi/include/eigen3/Eigen/Core +384 -0
  314. casadi/include/eigen3/Eigen/Dense +7 -0
  315. casadi/include/eigen3/Eigen/Eigen +2 -0
  316. casadi/include/eigen3/Eigen/Eigenvalues +60 -0
  317. casadi/include/eigen3/Eigen/Geometry +59 -0
  318. casadi/include/eigen3/Eigen/Householder +29 -0
  319. casadi/include/eigen3/Eigen/IterativeLinearSolvers +48 -0
  320. casadi/include/eigen3/Eigen/Jacobi +32 -0
  321. casadi/include/eigen3/Eigen/KLUSupport +41 -0
  322. casadi/include/eigen3/Eigen/LU +47 -0
  323. casadi/include/eigen3/Eigen/MetisSupport +35 -0
  324. casadi/include/eigen3/Eigen/OrderingMethods +70 -0
  325. casadi/include/eigen3/Eigen/PaStiXSupport +49 -0
  326. casadi/include/eigen3/Eigen/PardisoSupport +35 -0
  327. casadi/include/eigen3/Eigen/QR +50 -0
  328. casadi/include/eigen3/Eigen/QtAlignedMalloc +39 -0
  329. casadi/include/eigen3/Eigen/SPQRSupport +34 -0
  330. casadi/include/eigen3/Eigen/SVD +50 -0
  331. casadi/include/eigen3/Eigen/Sparse +34 -0
  332. casadi/include/eigen3/Eigen/SparseCholesky +37 -0
  333. casadi/include/eigen3/Eigen/SparseCore +69 -0
  334. casadi/include/eigen3/Eigen/SparseLU +50 -0
  335. casadi/include/eigen3/Eigen/SparseQR +36 -0
  336. casadi/include/eigen3/Eigen/StdDeque +27 -0
  337. casadi/include/eigen3/Eigen/StdList +26 -0
  338. casadi/include/eigen3/Eigen/StdVector +27 -0
  339. casadi/include/eigen3/Eigen/SuperLUSupport +64 -0
  340. casadi/include/eigen3/Eigen/UmfPackSupport +40 -0
  341. casadi/include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
  342. casadi/include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
  343. casadi/include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  344. casadi/include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  345. casadi/include/eigen3/Eigen/src/Core/ArithmeticSequence.h +413 -0
  346. casadi/include/eigen3/Eigen/src/Core/Array.h +417 -0
  347. casadi/include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
  348. casadi/include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
  349. casadi/include/eigen3/Eigen/src/Core/Assign.h +90 -0
  350. casadi/include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
  351. casadi/include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
  352. casadi/include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
  353. casadi/include/eigen3/Eigen/src/Core/Block.h +448 -0
  354. casadi/include/eigen3/Eigen/src/Core/BooleanRedux.h +162 -0
  355. casadi/include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
  356. casadi/include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
  357. casadi/include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
  358. casadi/include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
  359. casadi/include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  360. casadi/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  361. casadi/include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  362. casadi/include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  363. casadi/include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
  364. casadi/include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
  365. casadi/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  366. casadi/include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
  367. casadi/include/eigen3/Eigen/src/Core/Diagonal.h +258 -0
  368. casadi/include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
  369. casadi/include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
  370. casadi/include/eigen3/Eigen/src/Core/Dot.h +318 -0
  371. casadi/include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
  372. casadi/include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  373. casadi/include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
  374. casadi/include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
  375. casadi/include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
  376. casadi/include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
  377. casadi/include/eigen3/Eigen/src/Core/IO.h +258 -0
  378. casadi/include/eigen3/Eigen/src/Core/IndexedView.h +237 -0
  379. casadi/include/eigen3/Eigen/src/Core/Inverse.h +117 -0
  380. casadi/include/eigen3/Eigen/src/Core/Map.h +171 -0
  381. casadi/include/eigen3/Eigen/src/Core/MapBase.h +310 -0
  382. casadi/include/eigen3/Eigen/src/Core/MathFunctions.h +2057 -0
  383. casadi/include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  384. casadi/include/eigen3/Eigen/src/Core/Matrix.h +565 -0
  385. casadi/include/eigen3/Eigen/src/Core/MatrixBase.h +547 -0
  386. casadi/include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
  387. casadi/include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
  388. casadi/include/eigen3/Eigen/src/Core/NumTraits.h +335 -0
  389. casadi/include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  390. casadi/include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
  391. casadi/include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
  392. casadi/include/eigen3/Eigen/src/Core/Product.h +191 -0
  393. casadi/include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
  394. casadi/include/eigen3/Eigen/src/Core/Random.h +218 -0
  395. casadi/include/eigen3/Eigen/src/Core/Redux.h +515 -0
  396. casadi/include/eigen3/Eigen/src/Core/Ref.h +381 -0
  397. casadi/include/eigen3/Eigen/src/Core/Replicate.h +142 -0
  398. casadi/include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
  399. casadi/include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
  400. casadi/include/eigen3/Eigen/src/Core/Reverse.h +217 -0
  401. casadi/include/eigen3/Eigen/src/Core/Select.h +164 -0
  402. casadi/include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
  403. casadi/include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  404. casadi/include/eigen3/Eigen/src/Core/Solve.h +188 -0
  405. casadi/include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
  406. casadi/include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
  407. casadi/include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
  408. casadi/include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
  409. casadi/include/eigen3/Eigen/src/Core/Stride.h +116 -0
  410. casadi/include/eigen3/Eigen/src/Core/Swap.h +68 -0
  411. casadi/include/eigen3/Eigen/src/Core/Transpose.h +464 -0
  412. casadi/include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
  413. casadi/include/eigen3/Eigen/src/Core/TriangularMatrix.h +1001 -0
  414. casadi/include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
  415. casadi/include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
  416. casadi/include/eigen3/Eigen/src/Core/Visitor.h +381 -0
  417. casadi/include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  418. casadi/include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  419. casadi/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  420. casadi/include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  421. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  422. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  423. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  424. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  425. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  426. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  427. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  428. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  429. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  430. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  431. casadi/include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  432. casadi/include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  433. casadi/include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  434. casadi/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  435. casadi/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  436. casadi/include/eigen3/Eigen/src/Core/arch/Default/Half.h +942 -0
  437. casadi/include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
  438. casadi/include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  439. casadi/include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  440. casadi/include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  441. casadi/include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  442. casadi/include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  443. casadi/include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  444. casadi/include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  445. casadi/include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  446. casadi/include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  447. casadi/include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  448. casadi/include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  449. casadi/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  450. casadi/include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  451. casadi/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  452. casadi/include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  453. casadi/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  454. casadi/include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  455. casadi/include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  456. casadi/include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  457. casadi/include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  458. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  459. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  460. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  461. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  462. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  463. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  464. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  465. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  466. casadi/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  467. casadi/include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  468. casadi/include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  469. casadi/include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
  470. casadi/include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  471. casadi/include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  472. casadi/include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  473. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  474. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  475. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  476. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  477. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  478. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  479. casadi/include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
  480. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  481. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  482. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  483. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  484. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  485. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  486. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  487. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  488. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  489. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  490. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  491. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  492. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  493. casadi/include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
  494. casadi/include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  495. casadi/include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
  496. casadi/include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  497. casadi/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  498. casadi/include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  499. casadi/include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
  500. casadi/include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
  501. casadi/include/eigen3/Eigen/src/Core/util/Macros.h +1464 -0
  502. casadi/include/eigen3/Eigen/src/Core/util/Memory.h +1163 -0
  503. casadi/include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
  504. casadi/include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
  505. casadi/include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  506. casadi/include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  507. casadi/include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
  508. casadi/include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  509. casadi/include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
  510. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  511. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  512. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  513. casadi/include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  514. casadi/include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  515. casadi/include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  516. casadi/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  517. casadi/include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  518. casadi/include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  519. casadi/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  520. casadi/include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  521. casadi/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  522. casadi/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  523. casadi/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  524. casadi/include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
  525. casadi/include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
  526. casadi/include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
  527. casadi/include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
  528. casadi/include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
  529. casadi/include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
  530. casadi/include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  531. casadi/include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
  532. casadi/include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
  533. casadi/include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
  534. casadi/include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
  535. casadi/include/eigen3/Eigen/src/Geometry/Transform.h +1563 -0
  536. casadi/include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
  537. casadi/include/eigen3/Eigen/src/Geometry/Umeyama.h +166 -0
  538. casadi/include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  539. casadi/include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
  540. casadi/include/eigen3/Eigen/src/Householder/Householder.h +176 -0
  541. casadi/include/eigen3/Eigen/src/Householder/HouseholderSequence.h +545 -0
  542. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  543. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  544. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
  545. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  546. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  547. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  548. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  549. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  550. casadi/include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
  551. casadi/include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  552. casadi/include/eigen3/Eigen/src/LU/Determinant.h +117 -0
  553. casadi/include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
  554. casadi/include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
  555. casadi/include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
  556. casadi/include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  557. casadi/include/eigen3/Eigen/src/LU/arch/InverseSize4.h +351 -0
  558. casadi/include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  559. casadi/include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
  560. casadi/include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  561. casadi/include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
  562. casadi/include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  563. casadi/include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  564. casadi/include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  565. casadi/include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  566. casadi/include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  567. casadi/include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  568. casadi/include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
  569. casadi/include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  570. casadi/include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  571. casadi/include/eigen3/Eigen/src/SVD/BDCSVD.h +1366 -0
  572. casadi/include/eigen3/Eigen/src/SVD/JacobiSVD.h +812 -0
  573. casadi/include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  574. casadi/include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
  575. casadi/include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  576. casadi/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  577. casadi/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  578. casadi/include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
  579. casadi/include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  580. casadi/include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  581. casadi/include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  582. casadi/include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
  583. casadi/include/eigen3/Eigen/src/SparseCore/SparseBlock.h +571 -0
  584. casadi/include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  585. casadi/include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  586. casadi/include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  587. casadi/include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  588. casadi/include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  589. casadi/include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  590. casadi/include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
  591. casadi/include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  592. casadi/include/eigen3/Eigen/src/SparseCore/SparseMap.h +305 -0
  593. casadi/include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  594. casadi/include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
  595. casadi/include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  596. casadi/include/eigen3/Eigen/src/SparseCore/SparseProduct.h +181 -0
  597. casadi/include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
  598. casadi/include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
  599. casadi/include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  600. casadi/include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  601. casadi/include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  602. casadi/include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  603. casadi/include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  604. casadi/include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
  605. casadi/include/eigen3/Eigen/src/SparseCore/SparseVector.h +478 -0
  606. casadi/include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
  607. casadi/include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  608. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU.h +923 -0
  609. casadi/include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  610. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  611. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  612. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
  613. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  614. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  615. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  616. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  617. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  618. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  619. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  620. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  621. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  622. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  623. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  624. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  625. casadi/include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
  626. casadi/include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
  627. casadi/include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
  628. casadi/include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
  629. casadi/include/eigen3/Eigen/src/StlSupport/details.h +84 -0
  630. casadi/include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  631. casadi/include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  632. casadi/include/eigen3/Eigen/src/misc/Image.h +82 -0
  633. casadi/include/eigen3/Eigen/src/misc/Kernel.h +79 -0
  634. casadi/include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
  635. casadi/include/eigen3/Eigen/src/misc/blas.h +440 -0
  636. casadi/include/eigen3/Eigen/src/misc/lapack.h +152 -0
  637. casadi/include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
  638. casadi/include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
  639. casadi/include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  640. casadi/include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  641. casadi/include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
  642. casadi/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  643. casadi/include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  644. casadi/include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  645. casadi/include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  646. casadi/include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  647. casadi/include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
  648. casadi/include/eigen3/signature_of_eigen3_matrix_library +1 -0
  649. casadi/include/eigen3/unsupported/Eigen/AdolcForward +159 -0
  650. casadi/include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
  651. casadi/include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
  652. casadi/include/eigen3/unsupported/Eigen/AutoDiff +46 -0
  653. casadi/include/eigen3/unsupported/Eigen/BVH +95 -0
  654. casadi/include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
  655. casadi/include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
  656. casadi/include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
  657. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
  658. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +329 -0
  659. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +247 -0
  660. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
  661. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
  662. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1093 -0
  663. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +518 -0
  664. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +377 -0
  665. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1023 -0
  666. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
  667. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
  668. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
  669. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
  670. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
  671. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
  672. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +456 -0
  673. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1132 -0
  674. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +544 -0
  675. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +214 -0
  676. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +347 -0
  677. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
  678. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
  679. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
  680. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
  681. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
  682. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
  683. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +236 -0
  684. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +490 -0
  685. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +236 -0
  686. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +983 -0
  687. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +703 -0
  688. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +388 -0
  689. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
  690. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +379 -0
  691. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +237 -0
  692. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
  693. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
  694. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +302 -0
  695. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
  696. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
  697. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
  698. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
  699. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +603 -0
  700. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +738 -0
  701. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +247 -0
  702. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
  703. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +263 -0
  704. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +216 -0
  705. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
  706. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
  707. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
  708. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1102 -0
  709. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +708 -0
  710. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +291 -0
  711. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +322 -0
  712. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +998 -0
  713. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
  714. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +966 -0
  715. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
  716. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
  717. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +465 -0
  718. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
  719. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
  720. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +471 -0
  721. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +161 -0
  722. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +346 -0
  723. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +303 -0
  724. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
  725. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
  726. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +629 -0
  727. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
  728. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
  729. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
  730. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
  731. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
  732. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
  733. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
  734. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
  735. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
  736. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
  737. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
  738. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
  739. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
  740. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +537 -0
  741. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
  742. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
  743. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
  744. casadi/include/eigen3/unsupported/Eigen/EulerAngles +43 -0
  745. casadi/include/eigen3/unsupported/Eigen/FFT +419 -0
  746. casadi/include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
  747. casadi/include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
  748. casadi/include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
  749. casadi/include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
  750. casadi/include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
  751. casadi/include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
  752. casadi/include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
  753. casadi/include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
  754. casadi/include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
  755. casadi/include/eigen3/unsupported/Eigen/Polynomials +137 -0
  756. casadi/include/eigen3/unsupported/Eigen/Skyline +39 -0
  757. casadi/include/eigen3/unsupported/Eigen/SparseExtra +54 -0
  758. casadi/include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
  759. casadi/include/eigen3/unsupported/Eigen/Splines +35 -0
  760. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
  761. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
  762. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
  763. casadi/include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
  764. casadi/include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
  765. casadi/include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
  766. casadi/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +355 -0
  767. casadi/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +305 -0
  768. casadi/include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
  769. casadi/include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
  770. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
  771. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
  772. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
  773. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
  774. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
  775. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
  776. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
  777. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
  778. casadi/include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
  779. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
  780. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
  781. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
  782. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
  783. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
  784. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
  785. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
  786. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
  787. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
  788. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
  789. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
  790. casadi/include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
  791. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
  792. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
  793. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
  794. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
  795. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
  796. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
  797. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
  798. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
  799. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
  800. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
  801. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
  802. casadi/include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
  803. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
  804. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +428 -0
  805. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
  806. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
  807. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
  808. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
  809. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
  810. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
  811. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
  812. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
  813. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
  814. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
  815. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
  816. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
  817. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
  818. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
  819. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
  820. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
  821. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
  822. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
  823. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
  824. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
  825. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
  826. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
  827. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
  828. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
  829. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2045 -0
  830. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
  831. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
  832. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
  833. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +46 -0
  834. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
  835. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
  836. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
  837. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
  838. casadi/include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
  839. casadi/include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
  840. casadi/include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
  841. casadi/include/highs/HConfig.h +23 -0
  842. casadi/include/highs/Highs.h +1703 -0
  843. casadi/include/highs/filereaderlp/builder.hpp +25 -0
  844. casadi/include/highs/filereaderlp/def.hpp +19 -0
  845. casadi/include/highs/filereaderlp/model.hpp +68 -0
  846. casadi/include/highs/filereaderlp/reader.hpp +10 -0
  847. casadi/include/highs/interfaces/highs_c_api.h +2456 -0
  848. casadi/include/highs/io/Filereader.h +45 -0
  849. casadi/include/highs/io/FilereaderEms.h +30 -0
  850. casadi/include/highs/io/FilereaderLp.h +51 -0
  851. casadi/include/highs/io/FilereaderMps.h +27 -0
  852. casadi/include/highs/io/HMPSIO.h +78 -0
  853. casadi/include/highs/io/HMpsFF.h +238 -0
  854. casadi/include/highs/io/HighsIO.h +114 -0
  855. casadi/include/highs/io/LoadOptions.h +24 -0
  856. casadi/include/highs/ipm/IpxSolution.h +32 -0
  857. casadi/include/highs/ipm/IpxWrapper.h +70 -0
  858. casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
  859. casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
  860. casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
  861. casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
  862. casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
  863. casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
  864. casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
  865. casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
  866. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
  867. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
  868. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
  869. casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
  870. casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
  871. casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
  872. casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
  873. casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
  874. casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
  875. casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
  876. casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
  877. casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
  878. casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
  879. casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
  880. casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
  881. casadi/include/highs/ipm/ipx/basis.h +351 -0
  882. casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
  883. casadi/include/highs/ipm/ipx/control.h +164 -0
  884. casadi/include/highs/ipm/ipx/crossover.h +157 -0
  885. casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
  886. casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
  887. casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
  888. casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
  889. casadi/include/highs/ipm/ipx/info.h +27 -0
  890. casadi/include/highs/ipm/ipx/ipm.h +94 -0
  891. casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
  892. casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
  893. casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
  894. casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
  895. casadi/include/highs/ipm/ipx/ipx_parameters.h +76 -0
  896. casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
  897. casadi/include/highs/ipm/ipx/iterate.h +328 -0
  898. casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
  899. casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
  900. casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
  901. casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
  902. casadi/include/highs/ipm/ipx/lp_solver.h +202 -0
  903. casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
  904. casadi/include/highs/ipm/ipx/lu_update.h +129 -0
  905. casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
  906. casadi/include/highs/ipm/ipx/model.h +413 -0
  907. casadi/include/highs/ipm/ipx/multistream.h +52 -0
  908. casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
  909. casadi/include/highs/ipm/ipx/power_method.h +44 -0
  910. casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
  911. casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
  912. casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
  913. casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
  914. casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
  915. casadi/include/highs/ipm/ipx/timer.h +24 -0
  916. casadi/include/highs/ipm/ipx/utils.h +39 -0
  917. casadi/include/highs/lp_data/HConst.h +320 -0
  918. casadi/include/highs/lp_data/HStruct.h +182 -0
  919. casadi/include/highs/lp_data/HighsAnalysis.h +23 -0
  920. casadi/include/highs/lp_data/HighsCallback.h +47 -0
  921. casadi/include/highs/lp_data/HighsCallbackStruct.h +62 -0
  922. casadi/include/highs/lp_data/HighsDebug.h +34 -0
  923. casadi/include/highs/lp_data/HighsIis.h +62 -0
  924. casadi/include/highs/lp_data/HighsInfo.h +329 -0
  925. casadi/include/highs/lp_data/HighsInfoDebug.h +27 -0
  926. casadi/include/highs/lp_data/HighsLp.h +100 -0
  927. casadi/include/highs/lp_data/HighsLpSolverObject.h +45 -0
  928. casadi/include/highs/lp_data/HighsLpUtils.h +298 -0
  929. casadi/include/highs/lp_data/HighsModelUtils.h +112 -0
  930. casadi/include/highs/lp_data/HighsOptions.h +1469 -0
  931. casadi/include/highs/lp_data/HighsRanging.h +43 -0
  932. casadi/include/highs/lp_data/HighsSolution.h +144 -0
  933. casadi/include/highs/lp_data/HighsSolutionDebug.h +87 -0
  934. casadi/include/highs/lp_data/HighsSolve.h +23 -0
  935. casadi/include/highs/lp_data/HighsStatus.h +29 -0
  936. casadi/include/highs/mip/HighsCliqueTable.h +318 -0
  937. casadi/include/highs/mip/HighsConflictPool.h +109 -0
  938. casadi/include/highs/mip/HighsCutGeneration.h +106 -0
  939. casadi/include/highs/mip/HighsCutPool.h +168 -0
  940. casadi/include/highs/mip/HighsDebugSol.h +132 -0
  941. casadi/include/highs/mip/HighsDomain.h +653 -0
  942. casadi/include/highs/mip/HighsDomainChange.h +48 -0
  943. casadi/include/highs/mip/HighsDynamicRowMatrix.h +104 -0
  944. casadi/include/highs/mip/HighsGFkSolve.h +438 -0
  945. casadi/include/highs/mip/HighsImplications.h +170 -0
  946. casadi/include/highs/mip/HighsLpAggregator.h +50 -0
  947. casadi/include/highs/mip/HighsLpRelaxation.h +357 -0
  948. casadi/include/highs/mip/HighsMipAnalysis.h +52 -0
  949. casadi/include/highs/mip/HighsMipSolver.h +112 -0
  950. casadi/include/highs/mip/HighsMipSolverData.h +297 -0
  951. casadi/include/highs/mip/HighsModkSeparator.h +60 -0
  952. casadi/include/highs/mip/HighsNodeQueue.h +311 -0
  953. casadi/include/highs/mip/HighsObjectiveFunction.h +71 -0
  954. casadi/include/highs/mip/HighsPathSeparator.h +39 -0
  955. casadi/include/highs/mip/HighsPrimalHeuristics.h +70 -0
  956. casadi/include/highs/mip/HighsPseudocost.h +360 -0
  957. casadi/include/highs/mip/HighsRedcostFixing.h +42 -0
  958. casadi/include/highs/mip/HighsSearch.h +241 -0
  959. casadi/include/highs/mip/HighsSeparation.h +41 -0
  960. casadi/include/highs/mip/HighsSeparator.h +52 -0
  961. casadi/include/highs/mip/HighsTableauSeparator.h +34 -0
  962. casadi/include/highs/mip/HighsTransformedLp.h +63 -0
  963. casadi/include/highs/mip/MipTimer.h +471 -0
  964. casadi/include/highs/model/HighsHessian.h +54 -0
  965. casadi/include/highs/model/HighsHessianUtils.h +49 -0
  966. casadi/include/highs/model/HighsModel.h +52 -0
  967. casadi/include/highs/parallel/HighsBinarySemaphore.h +113 -0
  968. casadi/include/highs/parallel/HighsCacheAlign.h +87 -0
  969. casadi/include/highs/parallel/HighsCombinable.h +121 -0
  970. casadi/include/highs/parallel/HighsMutex.h +129 -0
  971. casadi/include/highs/parallel/HighsParallel.h +133 -0
  972. casadi/include/highs/parallel/HighsRaceTimer.h +43 -0
  973. casadi/include/highs/parallel/HighsSchedulerConstants.h +24 -0
  974. casadi/include/highs/parallel/HighsSpinMutex.h +53 -0
  975. casadi/include/highs/parallel/HighsSplitDeque.h +583 -0
  976. casadi/include/highs/parallel/HighsTask.h +175 -0
  977. casadi/include/highs/parallel/HighsTaskExecutor.h +222 -0
  978. casadi/include/highs/pdlp/CupdlpWrapper.h +104 -0
  979. casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +40 -0
  980. casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +433 -0
  981. casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +189 -0
  982. casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
  983. casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
  984. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling.h +26 -0
  985. casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
  986. casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +37 -0
  987. casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1807 -0
  988. casadi/include/highs/pdqsort/pdqsort.h +532 -0
  989. casadi/include/highs/presolve/HPresolve.h +405 -0
  990. casadi/include/highs/presolve/HPresolveAnalysis.h +51 -0
  991. casadi/include/highs/presolve/HighsPostsolveStack.h +940 -0
  992. casadi/include/highs/presolve/HighsSymmetry.h +281 -0
  993. casadi/include/highs/presolve/ICrash.h +124 -0
  994. casadi/include/highs/presolve/ICrashUtil.h +62 -0
  995. casadi/include/highs/presolve/ICrashX.h +23 -0
  996. casadi/include/highs/presolve/PresolveComponent.h +90 -0
  997. casadi/include/highs/qpsolver/a_asm.hpp +70 -0
  998. casadi/include/highs/qpsolver/a_quass.hpp +15 -0
  999. casadi/include/highs/qpsolver/basis.hpp +152 -0
  1000. casadi/include/highs/qpsolver/crashsolution.hpp +13 -0
  1001. casadi/include/highs/qpsolver/dantzigpricing.hpp +73 -0
  1002. casadi/include/highs/qpsolver/devexpricing.hpp +101 -0
  1003. casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
  1004. casadi/include/highs/qpsolver/factor.hpp +401 -0
  1005. casadi/include/highs/qpsolver/feasibility_bounded.hpp +107 -0
  1006. casadi/include/highs/qpsolver/feasibility_highs.hpp +294 -0
  1007. casadi/include/highs/qpsolver/gradient.hpp +39 -0
  1008. casadi/include/highs/qpsolver/instance.hpp +63 -0
  1009. casadi/include/highs/qpsolver/matrix.hpp +335 -0
  1010. casadi/include/highs/qpsolver/perturbation.hpp +8 -0
  1011. casadi/include/highs/qpsolver/pricing.hpp +15 -0
  1012. casadi/include/highs/qpsolver/qpconst.hpp +27 -0
  1013. casadi/include/highs/qpsolver/qpvector.hpp +235 -0
  1014. casadi/include/highs/qpsolver/quass.hpp +20 -0
  1015. casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
  1016. casadi/include/highs/qpsolver/runtime.hpp +38 -0
  1017. casadi/include/highs/qpsolver/scaling.hpp +8 -0
  1018. casadi/include/highs/qpsolver/settings.hpp +69 -0
  1019. casadi/include/highs/qpsolver/snippets.hpp +29 -0
  1020. casadi/include/highs/qpsolver/statistics.hpp +23 -0
  1021. casadi/include/highs/qpsolver/steepestedgepricing.hpp +166 -0
  1022. casadi/include/highs/simplex/HApp.h +476 -0
  1023. casadi/include/highs/simplex/HEkk.h +416 -0
  1024. casadi/include/highs/simplex/HEkkDual.h +513 -0
  1025. casadi/include/highs/simplex/HEkkDualRHS.h +134 -0
  1026. casadi/include/highs/simplex/HEkkDualRow.h +201 -0
  1027. casadi/include/highs/simplex/HEkkPrimal.h +191 -0
  1028. casadi/include/highs/simplex/HSimplex.h +42 -0
  1029. casadi/include/highs/simplex/HSimplexDebug.h +48 -0
  1030. casadi/include/highs/simplex/HSimplexNla.h +158 -0
  1031. casadi/include/highs/simplex/HSimplexReport.h +21 -0
  1032. casadi/include/highs/simplex/HighsSimplexAnalysis.h +500 -0
  1033. casadi/include/highs/simplex/SimplexConst.h +273 -0
  1034. casadi/include/highs/simplex/SimplexStruct.h +261 -0
  1035. casadi/include/highs/simplex/SimplexTimer.h +409 -0
  1036. casadi/include/highs/test/DevKkt.h +143 -0
  1037. casadi/include/highs/test/KktCh2.h +79 -0
  1038. casadi/include/highs/util/FactorTimer.h +199 -0
  1039. casadi/include/highs/util/HFactor.h +587 -0
  1040. casadi/include/highs/util/HFactorConst.h +81 -0
  1041. casadi/include/highs/util/HFactorDebug.h +55 -0
  1042. casadi/include/highs/util/HSet.h +89 -0
  1043. casadi/include/highs/util/HVector.h +22 -0
  1044. casadi/include/highs/util/HVectorBase.h +102 -0
  1045. casadi/include/highs/util/HighsCDouble.h +319 -0
  1046. casadi/include/highs/util/HighsComponent.h +53 -0
  1047. casadi/include/highs/util/HighsDataStack.h +83 -0
  1048. casadi/include/highs/util/HighsDisjointSets.h +107 -0
  1049. casadi/include/highs/util/HighsHash.h +1274 -0
  1050. casadi/include/highs/util/HighsHashTree.h +1447 -0
  1051. casadi/include/highs/util/HighsInt.h +36 -0
  1052. casadi/include/highs/util/HighsIntegers.h +212 -0
  1053. casadi/include/highs/util/HighsLinearSumBounds.h +157 -0
  1054. casadi/include/highs/util/HighsMatrixPic.h +37 -0
  1055. casadi/include/highs/util/HighsMatrixSlice.h +561 -0
  1056. casadi/include/highs/util/HighsMatrixUtils.h +54 -0
  1057. casadi/include/highs/util/HighsMemoryAllocation.h +63 -0
  1058. casadi/include/highs/util/HighsRandom.h +242 -0
  1059. casadi/include/highs/util/HighsRbTree.h +452 -0
  1060. casadi/include/highs/util/HighsSort.h +131 -0
  1061. casadi/include/highs/util/HighsSparseMatrix.h +150 -0
  1062. casadi/include/highs/util/HighsSparseVectorSum.h +95 -0
  1063. casadi/include/highs/util/HighsSplay.h +135 -0
  1064. casadi/include/highs/util/HighsTimer.h +381 -0
  1065. casadi/include/highs/util/HighsUtils.h +217 -0
  1066. casadi/include/highs/util/stringutil.h +46 -0
  1067. casadi/include/highs/zstr/strict_fstream.hpp +237 -0
  1068. casadi/include/highs/zstr/zstr.hpp +472 -0
  1069. casadi/include/licenses/FMI-Standard-2.0.2/LICENSE.txt +473 -0
  1070. casadi/include/licenses/FMI-Standard-3.0/LICENSE.txt +464 -0
  1071. casadi/include/licenses/alpaqa-external/LICENSE +165 -0
  1072. casadi/include/licenses/bonmin-external/Bonmin/LICENSE +87 -0
  1073. casadi/include/licenses/bonmin-external/LICENSE +3 -0
  1074. casadi/include/licenses/casadi/LICENSE/LICENSE.txt +165 -0
  1075. casadi/include/licenses/casadi-sundials/LICENSE +64 -0
  1076. casadi/include/licenses/casadi-sundials/cvodes/LICENSE +60 -0
  1077. casadi/include/licenses/casadi-sundials/idas/LICENSE +59 -0
  1078. casadi/include/licenses/casadi-sundials/kinsol/LICENSE +59 -0
  1079. casadi/include/licenses/casadi-sundials/sundials/LICENSE +67 -0
  1080. casadi/include/licenses/cbc-external/Cbc/LICENSE +239 -0
  1081. casadi/include/licenses/cbc-external/LICENSE +245 -0
  1082. casadi/include/licenses/cgl-external/Cgl/LICENSE +239 -0
  1083. casadi/include/licenses/cgl-external/LICENSE +245 -0
  1084. casadi/include/licenses/clp-external/Clp/LICENSE +239 -0
  1085. casadi/include/licenses/clp-external/LICENSE +245 -0
  1086. casadi/include/licenses/coinutils-external/CoinUtils/LICENSE +239 -0
  1087. casadi/include/licenses/coinutils-external/LICENSE +245 -0
  1088. casadi/include/licenses/daqp-external/LICENSE +21 -0
  1089. casadi/include/licenses/ghc-external/LICENSE +19 -0
  1090. casadi/include/licenses/highs-external/LICENSE.txt +21 -0
  1091. casadi/include/licenses/highs-external/extern/filereaderlp/LICENSE +19 -0
  1092. casadi/include/licenses/ipopt-external/LICENSE +260 -0
  1093. casadi/include/licenses/libz-external/LICENSE +22 -0
  1094. casadi/include/licenses/libz-external/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  1095. casadi/include/licenses/libzip-external/LICENSE +31 -0
  1096. casadi/include/licenses/metis-external/LICENSE +87 -0
  1097. casadi/include/licenses/metis-external/metis-4.0/LICENSE +18 -0
  1098. casadi/include/licenses/mockups-external/LICENSE +21 -0
  1099. casadi/include/licenses/mumps-external/LICENSE +87 -0
  1100. casadi/include/licenses/mumps-external/MUMPS/LICENSE +50 -0
  1101. casadi/include/licenses/openblas-external/LICENSE +29 -0
  1102. casadi/include/licenses/openblas-external/ctest/LICENSE +23 -0
  1103. casadi/include/licenses/openblas-external/lapack-netlib/LAPACKE/LICENSE +26 -0
  1104. casadi/include/licenses/openblas-external/lapack-netlib/LICENSE +48 -0
  1105. casadi/include/licenses/openblas-external/reference/LICENSE +23 -0
  1106. casadi/include/licenses/openblas-external/relapack/LICENSE +22 -0
  1107. casadi/include/licenses/openblas-external/test/LICENSE +23 -0
  1108. casadi/include/licenses/osi-external/LICENSE +245 -0
  1109. casadi/include/licenses/osi-external/Osi/LICENSE +239 -0
  1110. casadi/include/licenses/osqp-external/LICENSE +201 -0
  1111. casadi/include/licenses/osqp-external/lin_sys/direct/qdldl/amd/LICENSE +36 -0
  1112. casadi/include/licenses/osqp-external/lin_sys/direct/qdldl/qdldl_sources/LICENSE +201 -0
  1113. casadi/include/licenses/proxqp-external/LICENSE +25 -0
  1114. casadi/include/licenses/proxqp-external/bindings/python/external/pybind11/LICENSE +29 -0
  1115. casadi/include/licenses/proxqp-external/cmake-module/LICENSE +4 -0
  1116. casadi/include/licenses/proxqp-external/cmake-module/doxygen/MathJax/LICENSE +202 -0
  1117. casadi/include/licenses/proxqp-external/external/cereal/LICENSE +24 -0
  1118. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/LICENSE +21 -0
  1119. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/rapidjson/LICENSE +13 -0
  1120. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/rapidjson/msinttypes/LICENSE +29 -0
  1121. casadi/include/licenses/qpOASES/LICENSE.txt +503 -0
  1122. casadi/include/licenses/sleqp-external/LICENSE +165 -0
  1123. casadi/include/licenses/superscs-external/LICENSE.txt +24 -0
  1124. casadi/include/licenses/tinyxml2-9.0.0/LICENSE.txt +18 -0
  1125. casadi/include/licenses/trlib-external/LICENSE +21 -0
  1126. casadi/include/osqp/auxil.h +181 -0
  1127. casadi/include/osqp/constants.h +128 -0
  1128. casadi/include/osqp/cs.h +180 -0
  1129. casadi/include/osqp/ctrlc.h +56 -0
  1130. casadi/include/osqp/error.h +38 -0
  1131. casadi/include/osqp/glob_opts.h +167 -0
  1132. casadi/include/osqp/lin_alg.h +216 -0
  1133. casadi/include/osqp/lin_sys.h +54 -0
  1134. casadi/include/osqp/osqp.h +430 -0
  1135. casadi/include/osqp/osqp_configure.h +49 -0
  1136. casadi/include/osqp/polish.h +25 -0
  1137. casadi/include/osqp/proj.h +37 -0
  1138. casadi/include/osqp/scaling.h +44 -0
  1139. casadi/include/osqp/types.h +326 -0
  1140. casadi/include/osqp/util.h +222 -0
  1141. casadi/include/osqp/version.h +9 -0
  1142. casadi/include/proxsuite/config.hpp +68 -0
  1143. casadi/include/proxsuite/deprecated.hpp +56 -0
  1144. casadi/include/proxsuite/fwd.hpp +52 -0
  1145. casadi/include/proxsuite/helpers/common.hpp +70 -0
  1146. casadi/include/proxsuite/helpers/instruction-set.hpp +275 -0
  1147. casadi/include/proxsuite/helpers/optional.hpp +46 -0
  1148. casadi/include/proxsuite/helpers/tl-optional.hpp +2472 -0
  1149. casadi/include/proxsuite/helpers/version.hpp +39 -0
  1150. casadi/include/proxsuite/linalg/dense/core.hpp +863 -0
  1151. casadi/include/proxsuite/linalg/dense/factorize.hpp +375 -0
  1152. casadi/include/proxsuite/linalg/dense/ldlt.hpp +817 -0
  1153. casadi/include/proxsuite/linalg/dense/modify.hpp +333 -0
  1154. casadi/include/proxsuite/linalg/dense/solve.hpp +38 -0
  1155. casadi/include/proxsuite/linalg/dense/update.hpp +330 -0
  1156. casadi/include/proxsuite/linalg/sparse/core.hpp +531 -0
  1157. casadi/include/proxsuite/linalg/sparse/factorize.hpp +1303 -0
  1158. casadi/include/proxsuite/linalg/sparse/rowmod.hpp +443 -0
  1159. casadi/include/proxsuite/linalg/sparse/update.hpp +348 -0
  1160. casadi/include/proxsuite/linalg/veg/internal/assert_impl.hpp +20 -0
  1161. casadi/include/proxsuite/linalg/veg/internal/collection_algo.hpp +93 -0
  1162. casadi/include/proxsuite/linalg/veg/internal/dbg.hpp +15 -0
  1163. casadi/include/proxsuite/linalg/veg/internal/delete_special_members.hpp +77 -0
  1164. casadi/include/proxsuite/linalg/veg/internal/dyn_index.hpp +292 -0
  1165. casadi/include/proxsuite/linalg/veg/internal/epilogue.hpp +31 -0
  1166. casadi/include/proxsuite/linalg/veg/internal/external/hedley.ext.hpp +2074 -0
  1167. casadi/include/proxsuite/linalg/veg/internal/external/unhedley.ext.hpp +148 -0
  1168. casadi/include/proxsuite/linalg/veg/internal/fix_index.hpp +339 -0
  1169. casadi/include/proxsuite/linalg/veg/internal/has_asan.hpp +17 -0
  1170. casadi/include/proxsuite/linalg/veg/internal/integer_seq.hpp +248 -0
  1171. casadi/include/proxsuite/linalg/veg/internal/macros.hpp +1312 -0
  1172. casadi/include/proxsuite/linalg/veg/internal/narrow.hpp +46 -0
  1173. casadi/include/proxsuite/linalg/veg/internal/preprocessor.hpp +434 -0
  1174. casadi/include/proxsuite/linalg/veg/internal/prologue.hpp +157 -0
  1175. casadi/include/proxsuite/linalg/veg/internal/std.hpp +13 -0
  1176. casadi/include/proxsuite/linalg/veg/internal/terminate.hpp +22 -0
  1177. casadi/include/proxsuite/linalg/veg/internal/typedefs.hpp +58 -0
  1178. casadi/include/proxsuite/linalg/veg/memory/address.hpp +97 -0
  1179. casadi/include/proxsuite/linalg/veg/memory/alloc.hpp +352 -0
  1180. casadi/include/proxsuite/linalg/veg/memory/dynamic_stack.hpp +504 -0
  1181. casadi/include/proxsuite/linalg/veg/memory/placement.hpp +202 -0
  1182. casadi/include/proxsuite/linalg/veg/memory/stack_alloc.hpp +239 -0
  1183. casadi/include/proxsuite/linalg/veg/ref.hpp +148 -0
  1184. casadi/include/proxsuite/linalg/veg/slice.hpp +240 -0
  1185. casadi/include/proxsuite/linalg/veg/tuple.hpp +876 -0
  1186. casadi/include/proxsuite/linalg/veg/type_traits/alloc.hpp +169 -0
  1187. casadi/include/proxsuite/linalg/veg/type_traits/assignable.hpp +53 -0
  1188. casadi/include/proxsuite/linalg/veg/type_traits/constructible.hpp +217 -0
  1189. casadi/include/proxsuite/linalg/veg/type_traits/core.hpp +298 -0
  1190. casadi/include/proxsuite/linalg/veg/type_traits/invocable.hpp +47 -0
  1191. casadi/include/proxsuite/linalg/veg/type_traits/primitives.hpp +43 -0
  1192. casadi/include/proxsuite/linalg/veg/type_traits/tags.hpp +47 -0
  1193. casadi/include/proxsuite/linalg/veg/util/assert.hpp +48 -0
  1194. casadi/include/proxsuite/linalg/veg/util/dbg.hpp +6 -0
  1195. casadi/include/proxsuite/linalg/veg/util/defer.hpp +57 -0
  1196. casadi/include/proxsuite/linalg/veg/util/dynstack_alloc.hpp +19 -0
  1197. casadi/include/proxsuite/linalg/veg/util/get.hpp +153 -0
  1198. casadi/include/proxsuite/linalg/veg/util/index.hpp +6 -0
  1199. casadi/include/proxsuite/linalg/veg/util/unreachable.hpp +41 -0
  1200. casadi/include/proxsuite/linalg/veg/vec.hpp +1034 -0
  1201. casadi/include/proxsuite/proxqp/dense/dense.hpp +10 -0
  1202. casadi/include/proxsuite/proxqp/dense/fwd.hpp +55 -0
  1203. casadi/include/proxsuite/proxqp/dense/helpers.hpp +520 -0
  1204. casadi/include/proxsuite/proxqp/dense/linesearch.hpp +517 -0
  1205. casadi/include/proxsuite/proxqp/dense/model.hpp +147 -0
  1206. casadi/include/proxsuite/proxqp/dense/preconditioner/identity.hpp +113 -0
  1207. casadi/include/proxsuite/proxqp/dense/preconditioner/ruiz.hpp +571 -0
  1208. casadi/include/proxsuite/proxqp/dense/solver.hpp +1330 -0
  1209. casadi/include/proxsuite/proxqp/dense/utils.hpp +415 -0
  1210. casadi/include/proxsuite/proxqp/dense/views.hpp +1466 -0
  1211. casadi/include/proxsuite/proxqp/dense/workspace.hpp +264 -0
  1212. casadi/include/proxsuite/proxqp/dense/wrapper.hpp +491 -0
  1213. casadi/include/proxsuite/proxqp/results.hpp +212 -0
  1214. casadi/include/proxsuite/proxqp/settings.hpp +302 -0
  1215. casadi/include/proxsuite/proxqp/sparse/fwd.hpp +58 -0
  1216. casadi/include/proxsuite/proxqp/sparse/helpers.hpp +309 -0
  1217. casadi/include/proxsuite/proxqp/sparse/model.hpp +228 -0
  1218. casadi/include/proxsuite/proxqp/sparse/preconditioner/identity.hpp +64 -0
  1219. casadi/include/proxsuite/proxqp/sparse/preconditioner/ruiz.hpp +569 -0
  1220. casadi/include/proxsuite/proxqp/sparse/solver.hpp +1441 -0
  1221. casadi/include/proxsuite/proxqp/sparse/sparse.hpp +10 -0
  1222. casadi/include/proxsuite/proxqp/sparse/utils.hpp +815 -0
  1223. casadi/include/proxsuite/proxqp/sparse/views.hpp +63 -0
  1224. casadi/include/proxsuite/proxqp/sparse/workspace.hpp +790 -0
  1225. casadi/include/proxsuite/proxqp/sparse/wrapper.hpp +772 -0
  1226. casadi/include/proxsuite/proxqp/status.hpp +46 -0
  1227. casadi/include/proxsuite/proxqp/timings.hpp +101 -0
  1228. casadi/include/proxsuite/proxqp/utils/prints.hpp +47 -0
  1229. casadi/include/proxsuite/proxqp/utils/random_qp_problems.hpp +669 -0
  1230. casadi/include/proxsuite/serialization/archive.hpp +231 -0
  1231. casadi/include/proxsuite/serialization/eigen.hpp +107 -0
  1232. casadi/include/proxsuite/serialization/model.hpp +34 -0
  1233. casadi/include/proxsuite/serialization/results.hpp +74 -0
  1234. casadi/include/proxsuite/serialization/settings.hpp +60 -0
  1235. casadi/include/proxsuite/serialization/wrapper.hpp +24 -0
  1236. casadi/include/proxsuite/warning.hpp +35 -0
  1237. casadi/include/simde/arm/neon/aba.h +208 -0
  1238. casadi/include/simde/arm/neon/abd.h +384 -0
  1239. casadi/include/simde/arm/neon/abdl.h +147 -0
  1240. casadi/include/simde/arm/neon/abs.h +408 -0
  1241. casadi/include/simde/arm/neon/add.h +681 -0
  1242. casadi/include/simde/arm/neon/addl.h +127 -0
  1243. casadi/include/simde/arm/neon/addl_high.h +127 -0
  1244. casadi/include/simde/arm/neon/addlv.h +317 -0
  1245. casadi/include/simde/arm/neon/addv.h +447 -0
  1246. casadi/include/simde/arm/neon/addw.h +222 -0
  1247. casadi/include/simde/arm/neon/addw_high.h +193 -0
  1248. casadi/include/simde/arm/neon/and.h +552 -0
  1249. casadi/include/simde/arm/neon/bic.h +472 -0
  1250. casadi/include/simde/arm/neon/bsl.h +448 -0
  1251. casadi/include/simde/arm/neon/cagt.h +168 -0
  1252. casadi/include/simde/arm/neon/ceq.h +711 -0
  1253. casadi/include/simde/arm/neon/ceqz.h +335 -0
  1254. casadi/include/simde/arm/neon/cge.h +677 -0
  1255. casadi/include/simde/arm/neon/cgez.h +378 -0
  1256. casadi/include/simde/arm/neon/cgt.h +686 -0
  1257. casadi/include/simde/arm/neon/cgtz.h +380 -0
  1258. casadi/include/simde/arm/neon/cle.h +677 -0
  1259. casadi/include/simde/arm/neon/clez.h +378 -0
  1260. casadi/include/simde/arm/neon/cls.h +148 -0
  1261. casadi/include/simde/arm/neon/clt.h +679 -0
  1262. casadi/include/simde/arm/neon/cltz.h +263 -0
  1263. casadi/include/simde/arm/neon/clz.h +423 -0
  1264. casadi/include/simde/arm/neon/cnt.h +145 -0
  1265. casadi/include/simde/arm/neon/combine.h +343 -0
  1266. casadi/include/simde/arm/neon/create.h +186 -0
  1267. casadi/include/simde/arm/neon/cvt.h +492 -0
  1268. casadi/include/simde/arm/neon/dot.h +171 -0
  1269. casadi/include/simde/arm/neon/dot_lane.h +196 -0
  1270. casadi/include/simde/arm/neon/dup_lane.h +702 -0
  1271. casadi/include/simde/arm/neon/dup_n.h +534 -0
  1272. casadi/include/simde/arm/neon/eor.h +552 -0
  1273. casadi/include/simde/arm/neon/ext.h +887 -0
  1274. casadi/include/simde/arm/neon/get_high.h +260 -0
  1275. casadi/include/simde/arm/neon/get_lane.h +499 -0
  1276. casadi/include/simde/arm/neon/get_low.h +276 -0
  1277. casadi/include/simde/arm/neon/hadd.h +287 -0
  1278. casadi/include/simde/arm/neon/hsub.h +287 -0
  1279. casadi/include/simde/arm/neon/ld1.h +399 -0
  1280. casadi/include/simde/arm/neon/ld3.h +609 -0
  1281. casadi/include/simde/arm/neon/ld4.h +448 -0
  1282. casadi/include/simde/arm/neon/max.h +614 -0
  1283. casadi/include/simde/arm/neon/maxnm.h +215 -0
  1284. casadi/include/simde/arm/neon/maxv.h +400 -0
  1285. casadi/include/simde/arm/neon/min.h +660 -0
  1286. casadi/include/simde/arm/neon/minnm.h +215 -0
  1287. casadi/include/simde/arm/neon/minv.h +424 -0
  1288. casadi/include/simde/arm/neon/mla.h +530 -0
  1289. casadi/include/simde/arm/neon/mla_n.h +333 -0
  1290. casadi/include/simde/arm/neon/mlal.h +156 -0
  1291. casadi/include/simde/arm/neon/mlal_high.h +156 -0
  1292. casadi/include/simde/arm/neon/mlal_n.h +128 -0
  1293. casadi/include/simde/arm/neon/mls.h +264 -0
  1294. casadi/include/simde/arm/neon/mlsl.h +124 -0
  1295. casadi/include/simde/arm/neon/mlsl_high.h +124 -0
  1296. casadi/include/simde/arm/neon/mlsl_n.h +96 -0
  1297. casadi/include/simde/arm/neon/movl.h +208 -0
  1298. casadi/include/simde/arm/neon/movl_high.h +126 -0
  1299. casadi/include/simde/arm/neon/movn.h +195 -0
  1300. casadi/include/simde/arm/neon/movn_high.h +125 -0
  1301. casadi/include/simde/arm/neon/mul.h +594 -0
  1302. casadi/include/simde/arm/neon/mul_lane.h +472 -0
  1303. casadi/include/simde/arm/neon/mul_n.h +383 -0
  1304. casadi/include/simde/arm/neon/mull.h +236 -0
  1305. casadi/include/simde/arm/neon/mull_high.h +125 -0
  1306. casadi/include/simde/arm/neon/mull_n.h +158 -0
  1307. casadi/include/simde/arm/neon/mvn.h +426 -0
  1308. casadi/include/simde/arm/neon/neg.h +393 -0
  1309. casadi/include/simde/arm/neon/orn.h +505 -0
  1310. casadi/include/simde/arm/neon/orr.h +552 -0
  1311. casadi/include/simde/arm/neon/padal.h +211 -0
  1312. casadi/include/simde/arm/neon/padd.h +293 -0
  1313. casadi/include/simde/arm/neon/paddl.h +239 -0
  1314. casadi/include/simde/arm/neon/pmax.h +253 -0
  1315. casadi/include/simde/arm/neon/pmin.h +260 -0
  1316. casadi/include/simde/arm/neon/qabs.h +281 -0
  1317. casadi/include/simde/arm/neon/qadd.h +553 -0
  1318. casadi/include/simde/arm/neon/qdmulh.h +125 -0
  1319. casadi/include/simde/arm/neon/qdmull.h +125 -0
  1320. casadi/include/simde/arm/neon/qmovn.h +273 -0
  1321. casadi/include/simde/arm/neon/qmovn_high.h +127 -0
  1322. casadi/include/simde/arm/neon/qmovun.h +159 -0
  1323. casadi/include/simde/arm/neon/qneg.h +301 -0
  1324. casadi/include/simde/arm/neon/qrdmulh.h +165 -0
  1325. casadi/include/simde/arm/neon/qrdmulh_n.h +136 -0
  1326. casadi/include/simde/arm/neon/qshl.h +732 -0
  1327. casadi/include/simde/arm/neon/qsub.h +549 -0
  1328. casadi/include/simde/arm/neon/qtbl.h +455 -0
  1329. casadi/include/simde/arm/neon/qtbx.h +470 -0
  1330. casadi/include/simde/arm/neon/rbit.h +165 -0
  1331. casadi/include/simde/arm/neon/reinterpret.h +3101 -0
  1332. casadi/include/simde/arm/neon/rev16.h +137 -0
  1333. casadi/include/simde/arm/neon/rev32.h +235 -0
  1334. casadi/include/simde/arm/neon/rev64.h +358 -0
  1335. casadi/include/simde/arm/neon/rhadd.h +406 -0
  1336. casadi/include/simde/arm/neon/rnd.h +143 -0
  1337. casadi/include/simde/arm/neon/rndi.h +135 -0
  1338. casadi/include/simde/arm/neon/rndm.h +143 -0
  1339. casadi/include/simde/arm/neon/rndn.h +135 -0
  1340. casadi/include/simde/arm/neon/rndp.h +143 -0
  1341. casadi/include/simde/arm/neon/rshl.h +903 -0
  1342. casadi/include/simde/arm/neon/rshr_n.h +471 -0
  1343. casadi/include/simde/arm/neon/rsra_n.h +209 -0
  1344. casadi/include/simde/arm/neon/set_lane.h +422 -0
  1345. casadi/include/simde/arm/neon/shl.h +805 -0
  1346. casadi/include/simde/arm/neon/shl_n.h +560 -0
  1347. casadi/include/simde/arm/neon/shr_n.h +612 -0
  1348. casadi/include/simde/arm/neon/sra_n.h +202 -0
  1349. casadi/include/simde/arm/neon/st1.h +353 -0
  1350. casadi/include/simde/arm/neon/st1_lane.h +363 -0
  1351. casadi/include/simde/arm/neon/st3.h +426 -0
  1352. casadi/include/simde/arm/neon/st4.h +445 -0
  1353. casadi/include/simde/arm/neon/sub.h +659 -0
  1354. casadi/include/simde/arm/neon/subl.h +127 -0
  1355. casadi/include/simde/arm/neon/subw.h +221 -0
  1356. casadi/include/simde/arm/neon/subw_high.h +222 -0
  1357. casadi/include/simde/arm/neon/tbl.h +224 -0
  1358. casadi/include/simde/arm/neon/tbx.h +247 -0
  1359. casadi/include/simde/arm/neon/trn.h +252 -0
  1360. casadi/include/simde/arm/neon/trn1.h +500 -0
  1361. casadi/include/simde/arm/neon/trn2.h +499 -0
  1362. casadi/include/simde/arm/neon/tst.h +540 -0
  1363. casadi/include/simde/arm/neon/types.h +683 -0
  1364. casadi/include/simde/arm/neon/uqadd.h +325 -0
  1365. casadi/include/simde/arm/neon/uzp.h +252 -0
  1366. casadi/include/simde/arm/neon/uzp1.h +643 -0
  1367. casadi/include/simde/arm/neon/uzp2.h +647 -0
  1368. casadi/include/simde/arm/neon/zip.h +252 -0
  1369. casadi/include/simde/arm/neon/zip1.h +625 -0
  1370. casadi/include/simde/arm/neon/zip2.h +625 -0
  1371. casadi/include/simde/arm/neon.h +166 -0
  1372. casadi/include/simde/check.h +276 -0
  1373. casadi/include/simde/debug-trap.h +85 -0
  1374. casadi/include/simde/hedley.h +1971 -0
  1375. casadi/include/simde/simde-align.h +449 -0
  1376. casadi/include/simde/simde-arch.h +532 -0
  1377. casadi/include/simde/simde-common.h +890 -0
  1378. casadi/include/simde/simde-complex.h +148 -0
  1379. casadi/include/simde/simde-constify.h +397 -0
  1380. casadi/include/simde/simde-detect-clang.h +109 -0
  1381. casadi/include/simde/simde-diagnostic.h +428 -0
  1382. casadi/include/simde/simde-features.h +522 -0
  1383. casadi/include/simde/simde-math.h +1805 -0
  1384. casadi/include/simde/x86/avx.h +6193 -0
  1385. casadi/include/simde/x86/avx2.h +5660 -0
  1386. casadi/include/simde/x86/avx512/2intersect.h +250 -0
  1387. casadi/include/simde/x86/avx512/abs.h +562 -0
  1388. casadi/include/simde/x86/avx512/add.h +641 -0
  1389. casadi/include/simde/x86/avx512/adds.h +390 -0
  1390. casadi/include/simde/x86/avx512/and.h +305 -0
  1391. casadi/include/simde/x86/avx512/andnot.h +193 -0
  1392. casadi/include/simde/x86/avx512/avg.h +258 -0
  1393. casadi/include/simde/x86/avx512/blend.h +293 -0
  1394. casadi/include/simde/x86/avx512/broadcast.h +897 -0
  1395. casadi/include/simde/x86/avx512/cast.h +324 -0
  1396. casadi/include/simde/x86/avx512/cmp.h +587 -0
  1397. casadi/include/simde/x86/avx512/cmpeq.h +179 -0
  1398. casadi/include/simde/x86/avx512/cmpge.h +104 -0
  1399. casadi/include/simde/x86/avx512/cmpgt.h +189 -0
  1400. casadi/include/simde/x86/avx512/cmple.h +103 -0
  1401. casadi/include/simde/x86/avx512/cmplt.h +123 -0
  1402. casadi/include/simde/x86/avx512/copysign.h +86 -0
  1403. casadi/include/simde/x86/avx512/cvt.h +122 -0
  1404. casadi/include/simde/x86/avx512/cvts.h +723 -0
  1405. casadi/include/simde/x86/avx512/div.h +162 -0
  1406. casadi/include/simde/x86/avx512/extract.h +198 -0
  1407. casadi/include/simde/x86/avx512/fmadd.h +136 -0
  1408. casadi/include/simde/x86/avx512/fmsub.h +108 -0
  1409. casadi/include/simde/x86/avx512/fnmadd.h +108 -0
  1410. casadi/include/simde/x86/avx512/fnmsub.h +108 -0
  1411. casadi/include/simde/x86/avx512/insert.h +193 -0
  1412. casadi/include/simde/x86/avx512/kshift.h +152 -0
  1413. casadi/include/simde/x86/avx512/load.h +67 -0
  1414. casadi/include/simde/x86/avx512/loadu.h +113 -0
  1415. casadi/include/simde/x86/avx512/lzcnt.h +209 -0
  1416. casadi/include/simde/x86/avx512/madd.h +155 -0
  1417. casadi/include/simde/x86/avx512/maddubs.h +159 -0
  1418. casadi/include/simde/x86/avx512/max.h +587 -0
  1419. casadi/include/simde/x86/avx512/min.h +587 -0
  1420. casadi/include/simde/x86/avx512/mov.h +859 -0
  1421. casadi/include/simde/x86/avx512/mov_mask.h +372 -0
  1422. casadi/include/simde/x86/avx512/movm.h +460 -0
  1423. casadi/include/simde/x86/avx512/mul.h +279 -0
  1424. casadi/include/simde/x86/avx512/mulhi.h +65 -0
  1425. casadi/include/simde/x86/avx512/mulhrs.h +65 -0
  1426. casadi/include/simde/x86/avx512/mullo.h +117 -0
  1427. casadi/include/simde/x86/avx512/negate.h +88 -0
  1428. casadi/include/simde/x86/avx512/or.h +252 -0
  1429. casadi/include/simde/x86/avx512/packs.h +122 -0
  1430. casadi/include/simde/x86/avx512/packus.h +122 -0
  1431. casadi/include/simde/x86/avx512/permutex2var.h +1645 -0
  1432. casadi/include/simde/x86/avx512/permutexvar.h +1180 -0
  1433. casadi/include/simde/x86/avx512/sad.h +77 -0
  1434. casadi/include/simde/x86/avx512/set.h +477 -0
  1435. casadi/include/simde/x86/avx512/set1.h +331 -0
  1436. casadi/include/simde/x86/avx512/set4.h +140 -0
  1437. casadi/include/simde/x86/avx512/setone.h +66 -0
  1438. casadi/include/simde/x86/avx512/setr.h +144 -0
  1439. casadi/include/simde/x86/avx512/setr4.h +140 -0
  1440. casadi/include/simde/x86/avx512/setzero.h +90 -0
  1441. casadi/include/simde/x86/avx512/shuffle.h +176 -0
  1442. casadi/include/simde/x86/avx512/sll.h +247 -0
  1443. casadi/include/simde/x86/avx512/slli.h +179 -0
  1444. casadi/include/simde/x86/avx512/sllv.h +68 -0
  1445. casadi/include/simde/x86/avx512/sqrt.h +127 -0
  1446. casadi/include/simde/x86/avx512/sra.h +81 -0
  1447. casadi/include/simde/x86/avx512/srai.h +70 -0
  1448. casadi/include/simde/x86/avx512/srav.h +67 -0
  1449. casadi/include/simde/x86/avx512/srl.h +216 -0
  1450. casadi/include/simde/x86/avx512/srli.h +180 -0
  1451. casadi/include/simde/x86/avx512/srlv.h +282 -0
  1452. casadi/include/simde/x86/avx512/store.h +93 -0
  1453. casadi/include/simde/x86/avx512/storeu.h +93 -0
  1454. casadi/include/simde/x86/avx512/sub.h +351 -0
  1455. casadi/include/simde/x86/avx512/subs.h +222 -0
  1456. casadi/include/simde/x86/avx512/test.h +193 -0
  1457. casadi/include/simde/x86/avx512/types.h +380 -0
  1458. casadi/include/simde/x86/avx512/unpackhi.h +380 -0
  1459. casadi/include/simde/x86/avx512/unpacklo.h +104 -0
  1460. casadi/include/simde/x86/avx512/xor.h +263 -0
  1461. casadi/include/simde/x86/avx512/xorsign.h +72 -0
  1462. casadi/include/simde/x86/avx512.h +108 -0
  1463. casadi/include/simde/x86/clmul.h +414 -0
  1464. casadi/include/simde/x86/fma.h +724 -0
  1465. casadi/include/simde/x86/gfni.h +802 -0
  1466. casadi/include/simde/x86/mmx.h +2399 -0
  1467. casadi/include/simde/x86/sse.h +4471 -0
  1468. casadi/include/simde/x86/sse2.h +7389 -0
  1469. casadi/include/simde/x86/sse3.h +499 -0
  1470. casadi/include/simde/x86/sse4.1.h +2216 -0
  1471. casadi/include/simde/x86/sse4.2.h +347 -0
  1472. casadi/include/simde/x86/ssse3.h +1032 -0
  1473. casadi/include/simde/x86/svml.h +12139 -0
  1474. casadi/include/simde/x86/xop.h +3644 -0
  1475. casadi/include/superscs/cones.h +185 -0
  1476. casadi/include/superscs/constants.h +144 -0
  1477. casadi/include/superscs/cs.h +109 -0
  1478. casadi/include/superscs/ctrlc.h +77 -0
  1479. casadi/include/superscs/directions.h +125 -0
  1480. casadi/include/superscs/glbopts.h +240 -0
  1481. casadi/include/superscs/linAlg.h +437 -0
  1482. casadi/include/superscs/linSys.h +205 -0
  1483. casadi/include/superscs/linsys/amatrix.h +77 -0
  1484. casadi/include/superscs/linsys/common.h +49 -0
  1485. casadi/include/superscs/normalize.h +138 -0
  1486. casadi/include/superscs/scs.h +656 -0
  1487. casadi/include/superscs/scs_blas.h +79 -0
  1488. casadi/include/superscs/scs_parser.h +187 -0
  1489. casadi/include/superscs/unit_test_util.h +210 -0
  1490. casadi/include/superscs/util.h +354 -0
  1491. casadi/include/trlib/trlib_eigen_inverse.h +118 -0
  1492. casadi/include/trlib/trlib_krylov.h +493 -0
  1493. casadi/include/trlib/trlib_leftmost.h +181 -0
  1494. casadi/include/trlib/trlib_private.h +109 -0
  1495. casadi/include/trlib/trlib_quadratic_zero.h +57 -0
  1496. casadi/include/trlib/trlib_tri_factor.h +409 -0
  1497. casadi/include/trlib/trlib_types.h +36 -0
  1498. casadi/libCbc.la +35 -0
  1499. casadi/libCbc.so +0 -0
  1500. casadi/libCbc.so.3 +0 -0
  1501. casadi/libCbc.so.3.10.11 +0 -0
  1502. casadi/libCbcSolver.la +35 -0
  1503. casadi/libCbcSolver.so +0 -0
  1504. casadi/libCbcSolver.so.3 +0 -0
  1505. casadi/libCbcSolver.so.3.10.11 +0 -0
  1506. casadi/libCgl.la +35 -0
  1507. casadi/libCgl.so +0 -0
  1508. casadi/libCgl.so.1 +0 -0
  1509. casadi/libCgl.so.1.10.8 +0 -0
  1510. casadi/libClp.la +35 -0
  1511. casadi/libClp.so +0 -0
  1512. casadi/libClp.so.1 +0 -0
  1513. casadi/libClp.so.1.14.9 +0 -0
  1514. casadi/libClpSolver.la +35 -0
  1515. casadi/libClpSolver.so +0 -0
  1516. casadi/libClpSolver.so.1 +0 -0
  1517. casadi/libClpSolver.so.1.14.9 +0 -0
  1518. casadi/libCoinUtils.la +35 -0
  1519. casadi/libCoinUtils.so +0 -0
  1520. casadi/libCoinUtils.so.3 +0 -0
  1521. casadi/libCoinUtils.so.3.11.10 +0 -0
  1522. casadi/libOsi.la +35 -0
  1523. casadi/libOsi.so +0 -0
  1524. casadi/libOsi.so.1 +0 -0
  1525. casadi/libOsi.so.1.13.9 +0 -0
  1526. casadi/libOsiCbc.la +35 -0
  1527. casadi/libOsiCbc.so +0 -0
  1528. casadi/libOsiCbc.so.3 +0 -0
  1529. casadi/libOsiCbc.so.3.10.11 +0 -0
  1530. casadi/libOsiClp.la +35 -0
  1531. casadi/libOsiClp.so +0 -0
  1532. casadi/libOsiClp.so.1 +0 -0
  1533. casadi/libOsiClp.so.1.14.9 +0 -0
  1534. casadi/libOsiCommonTests.la +35 -0
  1535. casadi/libOsiCommonTests.so +0 -0
  1536. casadi/libOsiCommonTests.so.1 +0 -0
  1537. casadi/libOsiCommonTests.so.1.13.9 +0 -0
  1538. casadi/libalpaqa-dl-loader.so +0 -0
  1539. casadi/libalpaqa-dl-loader.so.1.0.0 +0 -0
  1540. casadi/libalpaqa.so +0 -0
  1541. casadi/libalpaqa.so.1.0.0 +0 -0
  1542. casadi/libbonmin.la +35 -0
  1543. casadi/libbonmin.so +0 -0
  1544. casadi/libbonmin.so.4 +0 -0
  1545. casadi/libbonmin.so.4.8.9 +0 -0
  1546. casadi/libcasadi-tp-openblas.so +0 -0
  1547. casadi/libcasadi-tp-openblas.so.0 +0 -0
  1548. casadi/libcasadi-tp-openblas.so.0.3 +0 -0
  1549. casadi/libcasadi.so +0 -0
  1550. casadi/libcasadi.so.3.7 +0 -0
  1551. casadi/libcasadi_archiver_libzip.so +0 -0
  1552. casadi/libcasadi_archiver_libzip.so.3.7 +0 -0
  1553. casadi/libcasadi_conic_cbc.so +0 -0
  1554. casadi/libcasadi_conic_cbc.so.3.7 +0 -0
  1555. casadi/libcasadi_conic_clp.so +0 -0
  1556. casadi/libcasadi_conic_clp.so.3.7 +0 -0
  1557. casadi/libcasadi_conic_daqp.so +0 -0
  1558. casadi/libcasadi_conic_daqp.so.3.7 +0 -0
  1559. casadi/libcasadi_conic_gurobi.so +0 -0
  1560. casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
  1561. casadi/libcasadi_conic_highs.so +0 -0
  1562. casadi/libcasadi_conic_highs.so.3.7 +0 -0
  1563. casadi/libcasadi_conic_ipqp.so +0 -0
  1564. casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
  1565. casadi/libcasadi_conic_nlpsol.so +0 -0
  1566. casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
  1567. casadi/libcasadi_conic_osqp.so +0 -0
  1568. casadi/libcasadi_conic_osqp.so.3.7 +0 -0
  1569. casadi/libcasadi_conic_proxqp.so +0 -0
  1570. casadi/libcasadi_conic_proxqp.so.3.7 +0 -0
  1571. casadi/libcasadi_conic_qpoases.so +0 -0
  1572. casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
  1573. casadi/libcasadi_conic_qrqp.so +0 -0
  1574. casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
  1575. casadi/libcasadi_conic_superscs.so +0 -0
  1576. casadi/libcasadi_conic_superscs.so.3.7 +0 -0
  1577. casadi/libcasadi_filesystem_ghc.so +0 -0
  1578. casadi/libcasadi_filesystem_ghc.so.3.7 +0 -0
  1579. casadi/libcasadi_importer_shell.so +0 -0
  1580. casadi/libcasadi_importer_shell.so.3.7 +0 -0
  1581. casadi/libcasadi_integrator_collocation.so +0 -0
  1582. casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
  1583. casadi/libcasadi_integrator_cvodes.so +0 -0
  1584. casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
  1585. casadi/libcasadi_integrator_idas.so +0 -0
  1586. casadi/libcasadi_integrator_idas.so.3.7 +0 -0
  1587. casadi/libcasadi_integrator_rk.so +0 -0
  1588. casadi/libcasadi_integrator_rk.so.3.7 +0 -0
  1589. casadi/libcasadi_interpolant_bspline.so +0 -0
  1590. casadi/libcasadi_interpolant_bspline.so.3.7 +0 -0
  1591. casadi/libcasadi_interpolant_linear.so +0 -0
  1592. casadi/libcasadi_interpolant_linear.so.3.7 +0 -0
  1593. casadi/libcasadi_linsol_csparse.so +0 -0
  1594. casadi/libcasadi_linsol_csparse.so.3.7 +0 -0
  1595. casadi/libcasadi_linsol_csparsecholesky.so +0 -0
  1596. casadi/libcasadi_linsol_csparsecholesky.so.3.7 +0 -0
  1597. casadi/libcasadi_linsol_lapacklu.so +0 -0
  1598. casadi/libcasadi_linsol_lapacklu.so.3.7 +0 -0
  1599. casadi/libcasadi_linsol_lapackqr.so +0 -0
  1600. casadi/libcasadi_linsol_lapackqr.so.3.7 +0 -0
  1601. casadi/libcasadi_linsol_ldl.so +0 -0
  1602. casadi/libcasadi_linsol_ldl.so.3.7 +0 -0
  1603. casadi/libcasadi_linsol_lsqr.so +0 -0
  1604. casadi/libcasadi_linsol_lsqr.so.3.7 +0 -0
  1605. casadi/libcasadi_linsol_ma27.so +0 -0
  1606. casadi/libcasadi_linsol_ma27.so.3.7 +0 -0
  1607. casadi/libcasadi_linsol_mumps.so +0 -0
  1608. casadi/libcasadi_linsol_mumps.so.3.7 +0 -0
  1609. casadi/libcasadi_linsol_qr.so +0 -0
  1610. casadi/libcasadi_linsol_qr.so.3.7 +0 -0
  1611. casadi/libcasadi_linsol_symbolicqr.so +0 -0
  1612. casadi/libcasadi_linsol_symbolicqr.so.3.7 +0 -0
  1613. casadi/libcasadi_linsol_tridiag.so +0 -0
  1614. casadi/libcasadi_linsol_tridiag.so.3.7 +0 -0
  1615. casadi/libcasadi_nlpsol_alpaqa.so +0 -0
  1616. casadi/libcasadi_nlpsol_alpaqa.so.3.7 +0 -0
  1617. casadi/libcasadi_nlpsol_ampl.so +0 -0
  1618. casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
  1619. casadi/libcasadi_nlpsol_blocksqp.so +0 -0
  1620. casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
  1621. casadi/libcasadi_nlpsol_bonmin.so +0 -0
  1622. casadi/libcasadi_nlpsol_bonmin.so.3.7 +0 -0
  1623. casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
  1624. casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
  1625. casadi/libcasadi_nlpsol_ipopt.so +0 -0
  1626. casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
  1627. casadi/libcasadi_nlpsol_knitro.so +0 -0
  1628. casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
  1629. casadi/libcasadi_nlpsol_madnlp.so +0 -0
  1630. casadi/libcasadi_nlpsol_madnlp.so.3.7 +0 -0
  1631. casadi/libcasadi_nlpsol_qrsqp.so +0 -0
  1632. casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
  1633. casadi/libcasadi_nlpsol_scpgen.so +0 -0
  1634. casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
  1635. casadi/libcasadi_nlpsol_sleqp.so +0 -0
  1636. casadi/libcasadi_nlpsol_sleqp.so.3.7 +0 -0
  1637. casadi/libcasadi_nlpsol_snopt.so +0 -0
  1638. casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
  1639. casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
  1640. casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
  1641. casadi/libcasadi_nlpsol_worhp.so +0 -0
  1642. casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
  1643. casadi/libcasadi_rootfinder_fast_newton.so +0 -0
  1644. casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
  1645. casadi/libcasadi_rootfinder_kinsol.so +0 -0
  1646. casadi/libcasadi_rootfinder_kinsol.so.3.7 +0 -0
  1647. casadi/libcasadi_rootfinder_newton.so +0 -0
  1648. casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
  1649. casadi/libcasadi_rootfinder_nlpsol.so +0 -0
  1650. casadi/libcasadi_rootfinder_nlpsol.so.3.7 +0 -0
  1651. casadi/libcasadi_sundials_common.so +0 -0
  1652. casadi/libcasadi_sundials_common.so.3.7 +0 -0
  1653. casadi/libcasadi_xmlfile_tinyxml.so +0 -0
  1654. casadi/libcasadi_xmlfile_tinyxml.so.3.7 +0 -0
  1655. casadi/libcoinmetis.la +41 -0
  1656. casadi/libcoinmetis.so +0 -0
  1657. casadi/libcoinmetis.so.2 +0 -0
  1658. casadi/libcoinmetis.so.2.0.0 +0 -0
  1659. casadi/libcoinmumps.la +41 -0
  1660. casadi/libcoinmumps.so +0 -0
  1661. casadi/libcoinmumps.so.3 +0 -0
  1662. casadi/libcoinmumps.so.3.0.1 +0 -0
  1663. casadi/libdaqp.so +0 -0
  1664. casadi/libdaqpstat.a +0 -0
  1665. casadi/libgfortran-a8535147.so.5.0.0 +0 -0
  1666. casadi/libgurobi_adaptor.so +0 -0
  1667. casadi/libhighs.so +0 -0
  1668. casadi/libhighs.so.1 +0 -0
  1669. casadi/libhighs.so.1.10.0 +0 -0
  1670. casadi/libindirect.a +0 -0
  1671. casadi/libipopt.la +41 -0
  1672. casadi/libipopt.so +0 -0
  1673. casadi/libipopt.so.3 +0 -0
  1674. casadi/libipopt.so.3.14.11 +0 -0
  1675. casadi/liblinsys.a +0 -0
  1676. casadi/libmatlab_ipc.so +0 -0
  1677. casadi/libosqp.a +0 -0
  1678. casadi/libosqp.so +0 -0
  1679. casadi/libqdldl.a +0 -0
  1680. casadi/libqdldl.so +0 -0
  1681. casadi/libquadmath-e2ac3af2.so.0.0.0 +0 -0
  1682. casadi/libsipopt.la +41 -0
  1683. casadi/libsipopt.so +0 -0
  1684. casadi/libsipopt.so.3 +0 -0
  1685. casadi/libsipopt.so.3.14.11 +0 -0
  1686. casadi/libsleqp.so +0 -0
  1687. casadi/libsleqp.so.1.0.1 +0 -0
  1688. casadi/libspral.a +0 -0
  1689. casadi/libsuperscs.a +0 -0
  1690. casadi/libtrlib.so +0 -0
  1691. casadi/libtrlib.so.0.4 +0 -0
  1692. casadi/libz.a +0 -0
  1693. casadi/libz.so +0 -0
  1694. casadi/libz.so.1 +0 -0
  1695. casadi/libz.so.1.3.1 +0 -0
  1696. casadi/libzip.a +0 -0
  1697. casadi/pkgconfig/blas.pc +11 -0
  1698. casadi/pkgconfig/bonmin.pc +12 -0
  1699. casadi/pkgconfig/casadi.pc +12 -0
  1700. casadi/pkgconfig/cbc.pc +12 -0
  1701. casadi/pkgconfig/cgl.pc +12 -0
  1702. casadi/pkgconfig/clp.pc +12 -0
  1703. casadi/pkgconfig/coinmetis.pc +13 -0
  1704. casadi/pkgconfig/coinmumps.pc +15 -0
  1705. casadi/pkgconfig/coinutils.pc +12 -0
  1706. casadi/pkgconfig/highs.pc +12 -0
  1707. casadi/pkgconfig/ipopt.pc +15 -0
  1708. casadi/pkgconfig/lapack.pc +11 -0
  1709. casadi/pkgconfig/libzip.pc +14 -0
  1710. casadi/pkgconfig/openblas.pc +11 -0
  1711. casadi/pkgconfig/osi-cbc.pc +12 -0
  1712. casadi/pkgconfig/osi-clp.pc +12 -0
  1713. casadi/pkgconfig/osi-unittests.pc +12 -0
  1714. casadi/pkgconfig/osi.pc +12 -0
  1715. casadi/pkgconfig/proxsuite.pc +22 -0
  1716. casadi/pkgconfig/sleqp.pc +10 -0
  1717. casadi/tools/__init__.py +54 -0
  1718. casadi/tools/bounds.py +107 -0
  1719. casadi/tools/graph/__init__.py +35 -0
  1720. casadi/tools/graph/graph.py +747 -0
  1721. casadi/tools/in_out.py +89 -0
  1722. casadi/tools/structure3.py +1441 -0
  1723. casadi-3.7.2.dist-info/METADATA +45 -0
  1724. casadi-3.7.2.dist-info/RECORD +1726 -0
  1725. casadi-3.7.2.dist-info/WHEEL +4 -0
  1726. dummy.txt +1 -0
@@ -0,0 +1,1805 @@
1
+ /*
2
+ * This file is part of CasADi.
3
+ *
4
+ * CasADi -- A symbolic framework for dynamic optimization.
5
+ * Copyright (C) 2010-2023 Joel Andersson, Joris Gillis, Moritz Diehl,
6
+ * KU Leuven. All rights reserved.
7
+ * Copyright (C) 2011-2014 Greg Horn
8
+ *
9
+ * CasADi is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU Lesser General Public
11
+ * License as published by the Free Software Foundation; either
12
+ * version 3 of the License, or (at your option) any later version.
13
+ *
14
+ * CasADi is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ * Lesser General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Lesser General Public
20
+ * License along with CasADi; if not, write to the Free Software
21
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ *
23
+ */
24
+
25
+
26
+ #ifndef CASADI_CALCULUS_HPP
27
+ #define CASADI_CALCULUS_HPP
28
+
29
+ #include <iostream>
30
+ #include <string>
31
+ #include <cmath>
32
+ #include <limits>
33
+ #include <algorithm>
34
+ #include "casadi_common.hpp"
35
+
36
+ // Define pi if the compiler fails to do so
37
+
38
+ /// \cond INTERNAL
39
+
40
+ namespace casadi {
41
+ #ifndef SWIG
42
+ /// Define pi
43
+ #ifdef M_PI
44
+ const double pi = M_PI;
45
+ #else
46
+ const double pi = 3.14159265358979323846;
47
+ #endif
48
+
49
+ /// infinity
50
+ const double inf = std::numeric_limits<double>::infinity();
51
+
52
+ /// Not a number
53
+ const double nan = std::numeric_limits<double>::quiet_NaN();
54
+
55
+ /// Machine epsilon
56
+ const double eps = std::numeric_limits<double>::epsilon();
57
+ #endif // SWIG
58
+
59
+ /// Enum for quick access to any node
60
+ enum Operation {
61
+ // Simple assignment
62
+ OP_ASSIGN,
63
+
64
+ // Standard unary and binary functions
65
+ OP_ADD, OP_SUB, OP_MUL, OP_DIV,
66
+ OP_NEG, OP_EXP, OP_LOG, OP_POW, OP_CONSTPOW,
67
+ OP_SQRT, OP_SQ, OP_TWICE,
68
+ OP_SIN, OP_COS, OP_TAN,
69
+ OP_ASIN, OP_ACOS, OP_ATAN,
70
+ OP_LT, OP_LE, OP_EQ, OP_NE, OP_NOT, OP_AND, OP_OR,
71
+ OP_FLOOR, OP_CEIL, OP_FMOD, OP_FABS, OP_SIGN, OP_COPYSIGN, OP_IF_ELSE_ZERO,
72
+ OP_ERF, OP_FMIN, OP_FMAX,
73
+ OP_INV,
74
+ OP_SINH, OP_COSH, OP_TANH,
75
+ OP_ASINH, OP_ACOSH, OP_ATANH,
76
+ OP_ATAN2,
77
+
78
+ // Double constant
79
+ OP_CONST,
80
+
81
+ // Function input and output
82
+ OP_INPUT, OP_OUTPUT,
83
+
84
+ // Free parameter
85
+ OP_PARAMETER,
86
+
87
+ // Embedded function call
88
+ OP_CALL,
89
+
90
+ // Find first nonzero in a vector
91
+ OP_FIND,
92
+
93
+ // Find first nonzero in a vector
94
+ OP_LOW,
95
+
96
+ // Embedded function call in parallel
97
+ OP_MAP,
98
+
99
+ // Matrix multiplication
100
+ OP_MTIMES,
101
+
102
+ // Solve linear system of equations
103
+ OP_SOLVE,
104
+
105
+ // Matrix transpose
106
+ OP_TRANSPOSE,
107
+
108
+ // Matrix determinant
109
+ OP_DETERMINANT,
110
+
111
+ // Matrix inverse
112
+ OP_INVERSE,
113
+
114
+ // Inner product
115
+ OP_DOT,
116
+
117
+ // Bilinear form
118
+ OP_BILIN,
119
+
120
+ // Rank-1 update
121
+ OP_RANK1,
122
+
123
+ // Horizontal concatenation
124
+ OP_HORZCAT,
125
+
126
+ // Vertical concatenation of vectors
127
+ OP_VERTCAT,
128
+
129
+ // Diagonal concatenation
130
+ OP_DIAGCAT,
131
+
132
+ // Horizontal split
133
+ OP_HORZSPLIT,
134
+
135
+ // Vertical split of vectors
136
+ OP_VERTSPLIT,
137
+
138
+ // Diagonal split
139
+ OP_DIAGSPLIT,
140
+
141
+ // Reshape an expression
142
+ OP_RESHAPE,
143
+
144
+ // Submatrix reference
145
+ OP_SUBREF,
146
+
147
+ // Submatrix assignment
148
+ OP_SUBASSIGN,
149
+
150
+ // Nonzero reference
151
+ OP_GETNONZEROS,
152
+
153
+ // Parametric nonzero reference
154
+ OP_GETNONZEROS_PARAM,
155
+
156
+ // Nonzero addition
157
+ OP_ADDNONZEROS,
158
+
159
+ // parametric nonzero addition
160
+ OP_ADDNONZEROS_PARAM,
161
+
162
+ // Nonzero assignment
163
+ OP_SETNONZEROS,
164
+
165
+ // Parametric nonzero assignment
166
+ OP_SETNONZEROS_PARAM,
167
+
168
+ // Set sparse
169
+ OP_PROJECT,
170
+
171
+ // Assertion
172
+ OP_ASSERTION,
173
+
174
+ // Monitor
175
+ OP_MONITOR,
176
+
177
+ // Norms
178
+ OP_NORM2, OP_NORM1, OP_NORMINF, OP_NORMF,
179
+
180
+ // min/max
181
+ OP_MMIN, OP_MMAX,
182
+
183
+ // Horizontal repeat
184
+ OP_HORZREPMAT,
185
+
186
+ // Horizontal repeat sum
187
+ OP_HORZREPSUM,
188
+
189
+ OP_ERFINV,
190
+ OP_PRINTME,
191
+ OP_LIFT,
192
+
193
+ OP_EINSTEIN,
194
+
195
+ OP_BSPLINE,
196
+
197
+ OP_CONVEXIFY,
198
+
199
+ // Sparsity cast
200
+ OP_SPARSITY_CAST,
201
+
202
+ OP_LOG1P,
203
+
204
+ OP_EXPM1,
205
+
206
+ OP_HYPOT,
207
+
208
+ OP_LOGSUMEXP,
209
+
210
+ OP_REMAINDER
211
+
212
+ };
213
+ #define NUM_BUILT_IN_OPS (OP_REMAINDER+1)
214
+
215
+ #define OP_
216
+
217
+ #ifndef SWIG
218
+
219
+ ///@{
220
+ /** \brief Enable using elementary numerical operations without std:: prefix
221
+
222
+ \identifier{1g4} */
223
+ using std::isfinite;
224
+ using std::sqrt;
225
+ using std::sin;
226
+ using std::cos;
227
+ using std::tan;
228
+ using std::atan;
229
+ using std::asin;
230
+ using std::acos;
231
+ using std::sinh;
232
+ using std::cosh;
233
+ using std::tanh;
234
+ using std::exp;
235
+ using std::log;
236
+ using std::log10;
237
+ using std::abs;
238
+ using std::fabs;
239
+ using std::floor;
240
+ using std::ceil;
241
+ using std::pow;
242
+ using std::fmod;
243
+ using std::remainder;
244
+ using std::atan2;
245
+ using std::erf;
246
+ using std::fmin;
247
+ using std::fmax;
248
+ using std::fabs;
249
+ using std::atanh;
250
+ using std::asinh;
251
+ using std::acosh;
252
+ using std::isnan;
253
+ using std::isinf;
254
+ using std::log1p;
255
+ using std::expm1;
256
+ using std::hypot;
257
+ using std::copysign;
258
+ ///@}
259
+
260
+ ///@{
261
+ // Implement "missing" operations
262
+
263
+ /// Sign function, note that sign(nan) == nan
264
+ inline double sign(double x) { return x<0 ? -1 : x>0 ? 1 : x;}
265
+ ///@}
266
+
267
+ ///@}
268
+
269
+ ///@{
270
+ /** CasADi additions */
271
+ inline double simplify(double x) { return x;}
272
+ inline double constpow(double x, double y) { return pow(x, y);}
273
+ inline double printme(double x, double y) {
274
+ std::ios::fmtflags f(uout().flags());
275
+ uout() << "|> " << y << " : ";
276
+ uout() << std::setprecision(std::numeric_limits<double>::digits10 + 1) << std::scientific;
277
+ uout() << x << std::endl;
278
+ uout().flags(f);
279
+ return x;
280
+ }
281
+ inline bool is_equal(double x, double y, casadi_int depth=0) { return x==y;}
282
+
283
+
284
+ // Integer maximum and minimum
285
+ inline casadi_int casadi_max(casadi_int x, casadi_int y) { return std::max(x, y);}
286
+ inline casadi_int casadi_min(casadi_int x, casadi_int y) { return std::min(x, y);}
287
+
288
+ /// Conditional assignment
289
+ inline double if_else_zero(double x, double y) { return x==0 ? 0 : y;}
290
+ inline double if_else(double x, double y, double z) { return x==0 ? z : y;}
291
+ #ifdef HAS_ERFINV
292
+ using ::erfinv;
293
+ #else // HAS ERFINV
294
+ inline double erfinv(double x) throw() {
295
+ // Approximation found in Sourceforge and modified: Not very efficient
296
+ if (x>=1) {
297
+ return x==1 ? inf : nan;
298
+ } else if (x<=-1) {
299
+ return x==-1 ? -inf : nan;
300
+ } else if (x<-0.7) {
301
+ double z = sqrt(-log((1.0+x)/2.0));
302
+ return -(((1.641345311*z+3.429567803)*z-1.624906493)*z-1.970840454)/
303
+ ((1.637067800*z+3.543889200)*z+1.0);
304
+ } else {
305
+ double y;
306
+ if (x<0.7) {
307
+ double z = x*x;
308
+ y = x*(((-0.140543331*z+0.914624893)*z-1.645349621)*z+0.886226899)/
309
+ ((((-0.329097515*z+0.012229801)*z+1.442710462)*z-2.118377725)*z+1.0);
310
+ } else {
311
+ double z = sqrt(-log((1.0-x)/2.0));
312
+ y = (((1.641345311*z+3.429567803)*z-1.624906493)*z-1.970840454)/
313
+ ((1.637067800*z+3.543889200)*z+1.0);
314
+ }
315
+
316
+ //polish x to full accuracy
317
+ y = y - (erf(y) - x) / (2.0/sqrt(pi) * exp(-y*y));
318
+ y = y - (erf(y) - x) / (2.0/sqrt(pi) * exp(-y*y));
319
+ return y;
320
+ }
321
+ }
322
+ #endif // HAS_ERFINV
323
+ ///@}
324
+
325
+ template<typename T>
326
+ T twice(const T& x) {
327
+ return x+x;
328
+ }
329
+
330
+ template<typename T>
331
+ T sq(const T& x) {
332
+ return x*x;
333
+ }
334
+
335
+ template<casadi_int I>
336
+ struct UnaryOperation {
337
+ /// Function evaluation
338
+ template<typename T> static inline void fcn(const T& x, T& f);
339
+
340
+ /// Partial derivatives
341
+ template<typename T> static inline void der(const T& x, const T& f, T* d);
342
+ };
343
+
344
+ template<casadi_int I>
345
+ struct BinaryOperation {
346
+ /// Function evaluation
347
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) {
348
+ UnaryOperation<I>::fcn(x, f);}
349
+
350
+ /// Partial derivatives - binary function
351
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
352
+ UnaryOperation<I>::der(x, f, d); d[1]=0; }
353
+ };
354
+
355
+ template<casadi_int I>
356
+ struct BinaryOperationE {
357
+ /// Function evaluation
358
+ template<typename T> static inline T fcn(const T& x, const T& y) {
359
+ T ret;
360
+ BinaryOperation<I>::fcn(x, y, ret);
361
+ return ret;
362
+ }
363
+ };
364
+
365
+ /// Calculate function and derivative
366
+ template<casadi_int I>
367
+ struct DerBinaryOperation {
368
+ /// Perform the operation
369
+ template<typename T> static inline void derf(const T& x, const T& y, T& f, T* d) {
370
+
371
+ /** First save to temp since f might have the same address as x or y,
372
+ * in which case it will be incorrect in the second call
373
+ */
374
+ T tmp;
375
+
376
+ /// Evaluate the function
377
+ BinaryOperation<I>::fcn(x, y, tmp);
378
+
379
+ /// Evaluate the partial derivatives
380
+ BinaryOperation<I>::der(x, y, tmp, d);
381
+
382
+ /// Now save f
383
+ f = tmp;
384
+ }
385
+ };
386
+
387
+ /// Perform a binary operation on two scalars
388
+ template<casadi_int I>
389
+ struct BinaryOperationSS {
390
+ /// Function evaluation
391
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f, casadi_int n) {
392
+ BinaryOperation<I>::fcn(x, y, f);
393
+ }
394
+
395
+ /// Partial derivatives - binary function
396
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d,
397
+ casadi_int n) {
398
+ BinaryOperation<I>::der(x, y, f, d);
399
+ }
400
+ };
401
+
402
+
403
+ /// Perform a binary operation on two vectors
404
+ template<casadi_int I>
405
+ struct BinaryOperationVV {
406
+ /// Function evaluation
407
+ template<typename T> static inline void fcn(const T* x, const T* y, T* f, casadi_int n) {
408
+ for (casadi_int i=0; i<n; ++i) {
409
+ BinaryOperation<I>::fcn(*x++, *y++, *f++);
410
+ }
411
+ }
412
+
413
+ /// Partial derivatives - binary function
414
+ template<typename T> static inline void der(const T* x, const T* y,
415
+ const T* f, T* d, casadi_int n) {
416
+ for (casadi_int i=0; i<n; ++i, d+=2) {
417
+ BinaryOperation<I>::der(*x++, *y++, *f++, d);
418
+ }
419
+ }
420
+ };
421
+
422
+ /// Perform a binary operation on a vector and a scalar
423
+ template<casadi_int I>
424
+ struct BinaryOperationVS {
425
+ /// Function evaluation
426
+ template<typename T> static inline void fcn(const T* x, const T& y, T* f, casadi_int n) {
427
+ for (casadi_int i=0; i<n; ++i) {
428
+ BinaryOperation<I>::fcn(*x++, y, *f++);
429
+ }
430
+ }
431
+
432
+ /// Partial derivatives - binary function
433
+ template<typename T> static inline void der(const T* x, const T& y,
434
+ const T* f, T* d, casadi_int n) {
435
+ for (casadi_int i=0; i<n; ++i, d+=2) {
436
+ BinaryOperation<I>::der(*x++, y, *f++, d);
437
+ }
438
+ }
439
+ };
440
+
441
+ /// Perform a binary operation on a scalar and a vector
442
+ template<casadi_int I>
443
+ struct BinaryOperationSV {
444
+ /// Function evaluation
445
+ template<typename T> static inline void fcn(const T& x, const T* y, T* f, casadi_int n) {
446
+ for (casadi_int i=0; i<n; ++i) {
447
+ BinaryOperation<I>::fcn(x, *y++, *f++);
448
+ }
449
+ }
450
+
451
+ /// Partial derivatives - binary function
452
+ template<typename T> static inline void der(const T& x, const T* y,
453
+ const T* f, T* d, casadi_int n) {
454
+ for (casadi_int i=0; i<n; ++i, d+=2) {
455
+ BinaryOperation<I>::der(x, *y++, *f++, d);
456
+ }
457
+ }
458
+ };
459
+
460
+ ///@{
461
+ /// Smoothness (by default true)
462
+ template<casadi_int I> struct SmoothChecker { static const bool check=true;};
463
+ template<> struct SmoothChecker<OP_LT>{ static const bool check=false;};
464
+ template<> struct SmoothChecker<OP_LE>{ static const bool check=false;};
465
+ template<> struct SmoothChecker<OP_FLOOR>{ static const bool check=false;};
466
+ template<> struct SmoothChecker<OP_CEIL>{ static const bool check=false;};
467
+ template<> struct SmoothChecker<OP_FMOD>{ static const bool check=false;};
468
+ template<> struct SmoothChecker<OP_REMAINDER>{ static const bool check=false;};
469
+ template<> struct SmoothChecker<OP_EQ>{ static const bool check=false;};
470
+ template<> struct SmoothChecker<OP_NE>{ static const bool check=false;};
471
+ template<> struct SmoothChecker<OP_SIGN>{ static const bool check=false;};
472
+ template<> struct SmoothChecker<OP_COPYSIGN>{ static const bool check=false;};
473
+ template<> struct SmoothChecker<OP_NOT>{ static const bool check=false;};
474
+ template<> struct SmoothChecker<OP_AND>{ static const bool check=false;};
475
+ template<> struct SmoothChecker<OP_OR>{ static const bool check=false;};
476
+ template<> struct SmoothChecker<OP_IF_ELSE_ZERO>{ static const bool check=false;};
477
+ ///@}
478
+
479
+ ///@{
480
+ /// If evaluated with the first argument zero, is the result zero?
481
+ template<casadi_int I> struct F0XChecker { static const bool check=false;};
482
+ template<> struct F0XChecker<OP_ASSIGN>{ static const bool check=true;};
483
+ template<> struct F0XChecker<OP_MUL>{ static const bool check=true;};
484
+ template<> struct F0XChecker<OP_DIV>{ static const bool check=true;};
485
+ template<> struct F0XChecker<OP_NEG>{ static const bool check=true;};
486
+ template<> struct F0XChecker<OP_SQRT>{ static const bool check=true;};
487
+ template<> struct F0XChecker<OP_SQ>{ static const bool check=true;};
488
+ template<> struct F0XChecker<OP_TWICE>{ static const bool check=true;};
489
+ template<> struct F0XChecker<OP_SIN>{ static const bool check=true;};
490
+ template<> struct F0XChecker<OP_TAN>{ static const bool check=true;};
491
+ template<> struct F0XChecker<OP_ATAN>{ static const bool check=true;};
492
+ template<> struct F0XChecker<OP_ASIN>{ static const bool check=true;};
493
+ template<> struct F0XChecker<OP_FLOOR>{ static const bool check=true;};
494
+ template<> struct F0XChecker<OP_CEIL>{ static const bool check=true;};
495
+ template<> struct F0XChecker<OP_FMOD>{ static const bool check=true;};
496
+ template<> struct F0XChecker<OP_REMAINDER>{ static const bool check=true;};
497
+ template<> struct F0XChecker<OP_FABS>{ static const bool check=true;};
498
+ template<> struct F0XChecker<OP_SIGN>{ static const bool check=true;};
499
+ template<> struct F0XChecker<OP_COPYSIGN>{ static const bool check=true;};
500
+ template<> struct F0XChecker<OP_ERF>{ static const bool check=true;};
501
+ template<> struct F0XChecker<OP_SINH>{ static const bool check=true;};
502
+ template<> struct F0XChecker<OP_TANH>{ static const bool check=true;};
503
+ template<> struct F0XChecker<OP_ASINH>{ static const bool check=true;};
504
+ template<> struct F0XChecker<OP_ATANH>{ static const bool check=true;};
505
+ template<> struct F0XChecker<OP_ERFINV>{ static const bool check=true;};
506
+ template<> struct F0XChecker<OP_AND>{ static const bool check=true;};
507
+ template<> struct F0XChecker<OP_IF_ELSE_ZERO>{ static const bool check=true;};
508
+ template<> struct F0XChecker<OP_LOG1P>{ static const bool check=true;};
509
+ template<> struct F0XChecker<OP_EXPM1>{ static const bool check=true;};
510
+ ///@}
511
+
512
+ ///@{
513
+ /// If evaluated with the second argument zero, is the result zero?
514
+ template<casadi_int I> struct FX0Checker { static const bool check=false;};
515
+ template<> struct FX0Checker<OP_MUL>{ static const bool check=true;};
516
+ template<> struct FX0Checker<OP_AND>{ static const bool check=true;};
517
+ template<> struct FX0Checker<OP_IF_ELSE_ZERO>{ static const bool check=true;};
518
+ ///@}
519
+
520
+ ///@{
521
+ /// If evaluated with both arguments zero, is the result zero?
522
+ template<casadi_int I> struct F00Checker {
523
+ static const bool check=F0XChecker<I>::check || FX0Checker<I>::check;
524
+ };
525
+ template<> struct F00Checker<OP_ADD>{ static const bool check=true;};
526
+ template<> struct F00Checker<OP_SUB>{ static const bool check=true;};
527
+ template<> struct F00Checker<OP_FMIN>{ static const bool check=true;};
528
+ template<> struct F00Checker<OP_FMAX>{ static const bool check=true;};
529
+ template<> struct F00Checker<OP_AND>{ static const bool check=true;};
530
+ template<> struct F00Checker<OP_OR>{ static const bool check=true;};
531
+ template<> struct F00Checker<OP_COPYSIGN>{ static const bool check=true;};
532
+ template<> struct F00Checker<OP_LT>{ static const bool check=true;};
533
+ template<> struct F00Checker<OP_HYPOT>{ static const bool check=true;};
534
+ ///@}
535
+
536
+ ///@{
537
+ /// Is commutative
538
+ template<casadi_int I> struct CommChecker { static const bool check=false;};
539
+ template<> struct CommChecker<OP_ADD>{ static const bool check=true;};
540
+ template<> struct CommChecker<OP_MUL>{ static const bool check=true;};
541
+ template<> struct CommChecker<OP_EQ>{ static const bool check=true;};
542
+ template<> struct CommChecker<OP_NE>{ static const bool check=true;};
543
+ template<> struct CommChecker<OP_AND>{ static const bool check=true;};
544
+ template<> struct CommChecker<OP_OR>{ static const bool check=true;};
545
+ template<> struct CommChecker<OP_HYPOT>{ static const bool check=true;};
546
+ ///@}
547
+
548
+ ///@{
549
+ /// Always non-negative (false by default)
550
+ template<casadi_int I> struct NonnegativeChecker { static const bool check=false;};
551
+ template<> struct NonnegativeChecker<OP_SQRT>{ static const bool check=true;};
552
+ template<> struct NonnegativeChecker<OP_SQ>{ static const bool check=true;};
553
+ template<> struct NonnegativeChecker<OP_EXP>{ static const bool check=true;};
554
+ template<> struct NonnegativeChecker<OP_LT>{ static const bool check=true;};
555
+ template<> struct NonnegativeChecker<OP_LE>{ static const bool check=true;};
556
+ template<> struct NonnegativeChecker<OP_EQ>{ static const bool check=true;};
557
+ template<> struct NonnegativeChecker<OP_NE>{ static const bool check=true;};
558
+ template<> struct NonnegativeChecker<OP_NOT>{ static const bool check=true;};
559
+ template<> struct NonnegativeChecker<OP_AND>{ static const bool check=true;};
560
+ template<> struct NonnegativeChecker<OP_OR>{ static const bool check=true;};
561
+ template<> struct NonnegativeChecker<OP_HYPOT>{ static const bool check=true;};
562
+ ///@}
563
+
564
+ ///@{
565
+ /// Is the operation binary as opposed to unary
566
+ template<casadi_int I> struct NargChecker { static const casadi_int check=1;};
567
+ template<> struct NargChecker<OP_ADD>{ static const casadi_int check=2;};
568
+ template<> struct NargChecker<OP_SUB>{ static const casadi_int check=2;};
569
+ template<> struct NargChecker<OP_MUL>{ static const casadi_int check=2;};
570
+ template<> struct NargChecker<OP_DIV>{ static const casadi_int check=2;};
571
+ template<> struct NargChecker<OP_POW>{ static const casadi_int check=2;};
572
+ template<> struct NargChecker<OP_CONSTPOW>{ static const casadi_int check=2;};
573
+ template<> struct NargChecker<OP_EQ>{ static const casadi_int check=2;};
574
+ template<> struct NargChecker<OP_NE>{ static const casadi_int check=2;};
575
+ template<> struct NargChecker<OP_AND>{ static const casadi_int check=2;};
576
+ template<> struct NargChecker<OP_OR>{ static const casadi_int check=2;};
577
+ template<> struct NargChecker<OP_FMIN>{ static const casadi_int check=2;};
578
+ template<> struct NargChecker<OP_FMAX>{ static const casadi_int check=2;};
579
+ template<> struct NargChecker<OP_PRINTME>{ static const casadi_int check=2;};
580
+ template<> struct NargChecker<OP_ATAN2>{ static const casadi_int check=2;};
581
+ template<> struct NargChecker<OP_IF_ELSE_ZERO>{ static const casadi_int check=2;};
582
+ template<> struct NargChecker<OP_FMOD>{ static const casadi_int check=2;};
583
+ template<> struct NargChecker<OP_REMAINDER>{ static const casadi_int check=2;};
584
+ template<> struct NargChecker<OP_COPYSIGN>{ static const casadi_int check=2;};
585
+ template<> struct NargChecker<OP_CONST>{ static const casadi_int check=0;};
586
+ template<> struct NargChecker<OP_PARAMETER>{ static const casadi_int check=0;};
587
+ template<> struct NargChecker<OP_INPUT>{ static const casadi_int check=0;};
588
+ template<> struct NargChecker<OP_HYPOT>{ static const casadi_int check=2;};
589
+ ///@}
590
+
591
+ /// Simple assignment
592
+ template<>
593
+ struct UnaryOperation<OP_ASSIGN>{
594
+ public:
595
+ template<typename T> static inline void fcn(const T& x, T& f) { f = x;}
596
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = 1; }
597
+ };
598
+
599
+ /// Addition
600
+ template<>
601
+ struct BinaryOperation<OP_ADD>{
602
+ public:
603
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x+y;}
604
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
605
+ d[0]=d[1]=1;}
606
+ };
607
+
608
+ /// Subtraction
609
+ template<>
610
+ struct BinaryOperation<OP_SUB>{
611
+ public:
612
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x-y;}
613
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
614
+ d[0]=1; d[1]=-1;}
615
+ };
616
+
617
+ /// Multiplication
618
+ template<>
619
+ struct BinaryOperation<OP_MUL>{
620
+ public:
621
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x*y;}
622
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
623
+ d[0]=y; d[1]=x;}
624
+ };
625
+
626
+ /// Division
627
+ template<>
628
+ struct BinaryOperation<OP_DIV>{
629
+ public:
630
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x/y;}
631
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
632
+ d[0]=1/y; d[1]=-f/y;}
633
+ };
634
+
635
+ /// Negation
636
+ template<>
637
+ struct UnaryOperation<OP_NEG>{
638
+ public:
639
+ template<typename T> static inline void fcn(const T& x, T& f) { f = -x;}
640
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0]=-1;}
641
+ };
642
+
643
+ /// Natural exponent
644
+ template<>
645
+ struct UnaryOperation<OP_EXP>{
646
+ public:
647
+ template<typename T> static inline void fcn(const T& x, T& f) { f = exp(x);}
648
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0]=f;}
649
+ };
650
+
651
+ /// Natural logarithm
652
+ template<>
653
+ struct UnaryOperation<OP_LOG>{
654
+ public:
655
+ template<typename T> static inline void fcn(const T& x, T& f) { f = log(x);}
656
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0]=1/x;}
657
+ };
658
+
659
+ /// Power, defined only for x>=0
660
+ template<>
661
+ struct BinaryOperation<OP_POW>{
662
+ public:
663
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = pow(x, y);}
664
+ // See issue #104 why d[0] is no longer y*f/x
665
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
666
+ d[0]=y*pow(x, y-1); d[1]=log(x)*f;}
667
+ };
668
+
669
+ /// Power, defined only for y constant
670
+ template<>
671
+ struct BinaryOperation<OP_CONSTPOW>{
672
+ public:
673
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = pow(x, y);}
674
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
675
+ d[0]=y*pow(x, y-1); d[1]=0;}
676
+ };
677
+
678
+ /// Square root
679
+ template<>
680
+ struct UnaryOperation<OP_SQRT>{
681
+ public:
682
+ template<typename T> static inline void fcn(const T& x, T& f) { f = sqrt(x);}
683
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0]=1/(twice(f));}
684
+ };
685
+
686
+ /// Square
687
+ template<>
688
+ struct UnaryOperation<OP_SQ>{
689
+ public:
690
+ template<typename T> static inline void fcn(const T& x, T& f) { f = sq(x);}
691
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0]=twice(x);}
692
+ };
693
+
694
+ /// Times two
695
+ template<>
696
+ struct UnaryOperation<OP_TWICE>{
697
+ template<typename T> static inline void fcn(const T& x, T& f) { f = 2.*x;}
698
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = 2; }
699
+ };
700
+
701
+ /// Sine
702
+ template<>
703
+ struct UnaryOperation<OP_SIN>{
704
+ public:
705
+ template<typename T> static inline void fcn(const T& x, T& f) { f = sin(x);}
706
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0]=cos(x);}
707
+ };
708
+
709
+ /// Cosine
710
+ template<>
711
+ struct UnaryOperation<OP_COS>{
712
+ public:
713
+ template<typename T> static inline void fcn(const T& x, T& f) { f = cos(x);}
714
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0]=-sin(x);}
715
+ };
716
+
717
+ /// Tangent
718
+ template<>
719
+ struct UnaryOperation<OP_TAN>{
720
+ public:
721
+ template<typename T> static inline void fcn(const T& x, T& f) { f = tan(x);}
722
+ template<typename T> static inline void der(const T& x, const T& f, T* d)
723
+ { d[0] = 1/sq(cos(x));}
724
+ };
725
+
726
+ /// Arcus sine
727
+ template<>
728
+ struct UnaryOperation<OP_ASIN>{
729
+ public:
730
+ template<typename T> static inline void fcn(const T& x, T& f) { f = asin(x);}
731
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0]=1/sqrt(1-x*x);}
732
+ };
733
+
734
+ /// Arcus cosine
735
+ template<>
736
+ struct UnaryOperation<OP_ACOS>{
737
+ public:
738
+ template<typename T> static inline void fcn(const T& x, T& f) { f = acos(x);}
739
+ template<typename T> static inline void der(const T& x, const T& f, T* d)
740
+ { d[0]=-1/sqrt(1-x*x);}
741
+ };
742
+
743
+ /// Arcus tangent
744
+ template<>
745
+ struct UnaryOperation<OP_ATAN>{
746
+ public:
747
+ template<typename T> static inline void fcn(const T& x, T& f) { f = atan(x);}
748
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = 1/(1+x*x);}
749
+ };
750
+
751
+ /// Less than
752
+ template<>
753
+ struct BinaryOperation<OP_LT>{
754
+ public:
755
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x < y;}
756
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
757
+ d[0]=d[1]=0;}
758
+ };
759
+
760
+ /// Less or equal to
761
+ template<>
762
+ struct BinaryOperation<OP_LE>{
763
+ public:
764
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x <= y;}
765
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
766
+ d[0]=d[1]=0;}
767
+ };
768
+
769
+ /// Floor function
770
+ template<>
771
+ struct UnaryOperation<OP_FLOOR>{
772
+ public:
773
+ template<typename T> static inline void fcn(const T& x, T& f) { f = floor(x);}
774
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = 0;}
775
+ };
776
+
777
+ /// Ceil function
778
+ template<>
779
+ struct UnaryOperation<OP_CEIL>{
780
+ public:
781
+ template<typename T> static inline void fcn(const T& x, T& f) { f = ceil(x);}
782
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = 0;}
783
+ };
784
+
785
+ /// Remainder of division
786
+ template<>
787
+ struct BinaryOperation<OP_FMOD>{
788
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = fmod(x, y);}
789
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
790
+ d[0]=1; d[1]=(f-x)/y;}
791
+ };
792
+
793
+ /// Remainder of division
794
+ template<>
795
+ struct BinaryOperation<OP_REMAINDER>{
796
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) {
797
+ f = remainder(x, y);}
798
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
799
+ d[0]=1; d[1]=(f-x)/y;}
800
+ };
801
+
802
+ /// Equal to
803
+ template<>
804
+ struct BinaryOperation<OP_EQ>{
805
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x==y;}
806
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
807
+ d[0]=d[1]=0;}
808
+ };
809
+
810
+ /// Not equal to
811
+ template<>
812
+ struct BinaryOperation<OP_NE>{
813
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x!=y;}
814
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
815
+ d[0]=d[1]=0;}
816
+ };
817
+
818
+ /// Logical not
819
+ template<>
820
+ struct UnaryOperation<OP_NOT>{
821
+ public:
822
+ template<typename T> static inline void fcn(const T& x, T& f) { f = !x;}
823
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = 0;}
824
+ };
825
+
826
+ /// Logical and
827
+ template<>
828
+ struct BinaryOperation<OP_AND>{
829
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x && y;}
830
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
831
+ d[0]=d[1]=0;}
832
+ };
833
+
834
+ /// Logical or
835
+ template<>
836
+ struct BinaryOperation<OP_OR>{
837
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x || y;}
838
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
839
+ d[0]=d[1]=0;}
840
+ };
841
+
842
+ /// Error function
843
+ template<>
844
+ struct UnaryOperation<OP_ERF>{
845
+ template<typename T> static inline void fcn(const T& x, T& f) { f = erf(x);}
846
+ template<typename T> static inline void der(const T& x, const T& f, T* d) {
847
+ d[0] = (2/sqrt(pi))*exp(-x*x);}
848
+ };
849
+
850
+ /// Absolute value
851
+ template<>
852
+ struct UnaryOperation<OP_FABS>{
853
+ template<typename T> static inline void fcn(const T& x, T& f) { f = fabs(x);}
854
+ template<typename T> static inline void der(const T& x, const T& f, T* d) {
855
+ d[0]=sign(x);}
856
+ };
857
+
858
+ /// Sign
859
+ template<>
860
+ struct UnaryOperation<OP_SIGN>{
861
+ template<typename T> static inline void fcn(const T& x, T& f) { f = sign(x);}
862
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0]=0;}
863
+ };
864
+
865
+ /// Copysign
866
+ template<>
867
+ struct BinaryOperation<OP_COPYSIGN>{
868
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = copysign(x, y);}
869
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
870
+ T e = 1; d[0]=copysign(e, y); d[1]=0;}
871
+ };
872
+
873
+ /// Minimum
874
+ template<>
875
+ struct BinaryOperation<OP_FMIN>{
876
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = fmin(x, y);}
877
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
878
+ T a = x<=y;
879
+ T b = y<=x;
880
+ T c = a+b;
881
+ d[0]=a/c; d[1]=b/c;}
882
+ };
883
+
884
+ /// Maximum
885
+ template<>
886
+ struct BinaryOperation<OP_FMAX>{
887
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = fmax(x, y);}
888
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
889
+ T a = y<=x;
890
+ T b = x<=y;
891
+ T c = a+b;
892
+ d[0]=a/c; d[1]=b/c;}
893
+ };
894
+
895
+ /// Element-wise inverse
896
+ template<>
897
+ struct UnaryOperation<OP_INV>{
898
+ template<typename T> static inline void fcn(const T& x, T& f) { f = 1./x;}
899
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = -f*f; }
900
+ };
901
+
902
+ /// Hyperbolic sine
903
+ template<>
904
+ struct UnaryOperation<OP_SINH>{
905
+ template<typename T> static inline void fcn(const T& x, T& f) { f = sinh(x);}
906
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = cosh(x); }
907
+ };
908
+
909
+ /// Hyperbolic cosine
910
+ template<>
911
+ struct UnaryOperation<OP_COSH>{
912
+ template<typename T> static inline void fcn(const T& x, T& f) { f = cosh(x);}
913
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = sinh(x); }
914
+ };
915
+
916
+ /// Hyperbolic tangent
917
+ template<>
918
+ struct UnaryOperation<OP_TANH>{
919
+ template<typename T> static inline void fcn(const T& x, T& f) { f = tanh(x);}
920
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = 1-f*f; }
921
+ };
922
+
923
+ /// Inverse hyperbolic sine
924
+ template<>
925
+ struct UnaryOperation<OP_ASINH>{
926
+ template<typename T> static inline void fcn(const T& x, T& f) { f = asinh(x);}
927
+ template<typename T> static inline void der(const T& x, const T& f, T* d) {
928
+ d[0] = 1/sqrt(1+x*x); }
929
+ };
930
+
931
+ /// Inverse hyperbolic cosine
932
+ template<>
933
+ struct UnaryOperation<OP_ACOSH>{
934
+ template<typename T> static inline void fcn(const T& x, T& f) { f = acosh(x);}
935
+ template<typename T> static inline void der(const T& x, const T& f, T* d) {
936
+ d[0] = 1/sqrt(x-1)/sqrt(x+1); }
937
+ };
938
+
939
+ /// Inverse hyperbolic tangent
940
+ template<>
941
+ struct UnaryOperation<OP_ATANH>{
942
+ template<typename T> static inline void fcn(const T& x, T& f) { f = atanh(x);}
943
+ template<typename T> static inline void der(const T& x, const T& f, T* d) { d[0] = 1/(1-x*x); }
944
+ };
945
+
946
+ /// Inverse of error function
947
+ template<>
948
+ struct UnaryOperation<OP_ERFINV>{
949
+ template<typename T> static inline void fcn(const T& x, T& f) { f = erfinv(x);}
950
+ template<typename T> static inline void der(const T& x, const T& f, T* d) {
951
+ d[0] = (sqrt(pi)/2)*exp(f*f); }
952
+ };
953
+
954
+ /// log1p(x) = log(1+x)
955
+ template<>
956
+ struct UnaryOperation<OP_LOG1P>{
957
+ template<typename T> static inline void fcn(const T& x, T& f) { f = log1p(x);}
958
+ template<typename T> static inline void der(const T& x, const T& f, T* d) {
959
+ d[0] = 1/(1+x);}
960
+ };
961
+
962
+ /// expm1(x) = exp(x)-1
963
+ template<>
964
+ struct UnaryOperation<OP_EXPM1>{
965
+ template<typename T> static inline void fcn(const T& x, T& f) { f = expm1(x);}
966
+ template<typename T> static inline void der(const T& x, const T& f, T* d) {
967
+ d[0] = exp(x); }
968
+ };
969
+
970
+ /// Identity operator with the side effect of printing
971
+ template<>
972
+ struct BinaryOperation<OP_PRINTME>{
973
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) {f = printme(x, y); }
974
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
975
+ d[0]=1; d[1]=0;}
976
+ };
977
+
978
+ /// Arctan2
979
+ template<>
980
+ struct BinaryOperation<OP_ATAN2>{
981
+ public:
982
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = atan2(x, y);}
983
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
984
+ T t = x*x+y*y; d[0]=y/t; d[1]=-x/t;}
985
+ };
986
+
987
+ /// Conditional assignment
988
+ template<>
989
+ struct BinaryOperation<OP_IF_ELSE_ZERO>{
990
+ public:
991
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) {
992
+ f = if_else_zero(x, y);}
993
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
994
+ d[0]=0; d[1]=x;}
995
+ };
996
+
997
+ /// Inverse of error function
998
+ template<>
999
+ struct BinaryOperation<OP_LIFT>{
1000
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = x;}
1001
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
1002
+ d[0] = 1; d[1] = 0; }
1003
+ };
1004
+
1005
+ /// hypot(x,y) = sqrt(x^2+y^2)
1006
+ template<>
1007
+ struct BinaryOperation<OP_HYPOT>{
1008
+ template<typename T> static inline void fcn(const T& x, const T& y, T& f) { f = hypot(x, y);}
1009
+ template<typename T> static inline void der(const T& x, const T& y, const T& f, T* d) {
1010
+ d[0] = x/f; d[1] = y/f; }
1011
+ };
1012
+
1013
+ template<template<casadi_int> class F, typename T>
1014
+ T operation_getter(casadi_int op) {
1015
+ switch (static_cast<Operation>(op)) {
1016
+ case OP_ASSIGN: return F<OP_ASSIGN>::check;
1017
+ case OP_ADD: return F<OP_ADD>::check;
1018
+ case OP_SUB: return F<OP_SUB>::check;
1019
+ case OP_MUL: return F<OP_MUL>::check;
1020
+ case OP_DIV: return F<OP_DIV>::check;
1021
+ case OP_NEG: return F<OP_NEG>::check;
1022
+ case OP_EXP: return F<OP_EXP>::check;
1023
+ case OP_LOG: return F<OP_LOG>::check;
1024
+ case OP_POW: return F<OP_POW>::check;
1025
+ case OP_CONSTPOW: return F<OP_CONSTPOW>::check;
1026
+ case OP_SQRT: return F<OP_SQRT>::check;
1027
+ case OP_SQ: return F<OP_SQ>::check;
1028
+ case OP_TWICE: return F<OP_TWICE>::check;
1029
+ case OP_SIN: return F<OP_SIN>::check;
1030
+ case OP_COS: return F<OP_COS>::check;
1031
+ case OP_TAN: return F<OP_TAN>::check;
1032
+ case OP_ASIN: return F<OP_ASIN>::check;
1033
+ case OP_ACOS: return F<OP_ACOS>::check;
1034
+ case OP_ATAN: return F<OP_ATAN>::check;
1035
+ case OP_LT: return F<OP_LT>::check;
1036
+ case OP_LE: return F<OP_LE>::check;
1037
+ case OP_EQ: return F<OP_EQ>::check;
1038
+ case OP_NE: return F<OP_NE>::check;
1039
+ case OP_NOT: return F<OP_NOT>::check;
1040
+ case OP_AND: return F<OP_AND>::check;
1041
+ case OP_OR: return F<OP_OR>::check;
1042
+ case OP_FLOOR: return F<OP_FLOOR>::check;
1043
+ case OP_CEIL: return F<OP_CEIL>::check;
1044
+ case OP_FMOD: return F<OP_FMOD>::check;
1045
+ case OP_REMAINDER: return F<OP_REMAINDER>::check;
1046
+ case OP_FABS: return F<OP_FABS>::check;
1047
+ case OP_SIGN: return F<OP_SIGN>::check;
1048
+ case OP_COPYSIGN: return F<OP_COPYSIGN>::check;
1049
+ case OP_IF_ELSE_ZERO: return F<OP_IF_ELSE_ZERO>::check;
1050
+ case OP_ERF: return F<OP_ERF>::check;
1051
+ case OP_FMIN: return F<OP_FMIN>::check;
1052
+ case OP_FMAX: return F<OP_FMAX>::check;
1053
+ case OP_INV: return F<OP_INV>::check;
1054
+ case OP_SINH: return F<OP_SINH>::check;
1055
+ case OP_COSH: return F<OP_COSH>::check;
1056
+ case OP_TANH: return F<OP_TANH>::check;
1057
+ case OP_ASINH: return F<OP_ASINH>::check;
1058
+ case OP_ACOSH: return F<OP_ACOSH>::check;
1059
+ case OP_ATANH: return F<OP_ATANH>::check;
1060
+ case OP_ATAN2: return F<OP_ATAN2>::check;
1061
+ case OP_CONST: return F<OP_CONST>::check;
1062
+ case OP_INPUT: return F<OP_INPUT>::check;
1063
+ case OP_OUTPUT: return F<OP_OUTPUT>::check;
1064
+ case OP_PARAMETER: return F<OP_PARAMETER>::check;
1065
+ case OP_CALL: return F<OP_CALL>::check;
1066
+ case OP_FIND: return F<OP_FIND>::check;
1067
+ case OP_LOW: return F<OP_LOW>::check;
1068
+ case OP_MAP: return F<OP_MAP>::check;
1069
+ case OP_MTIMES: return F<OP_MTIMES>::check;
1070
+ case OP_SOLVE: return F<OP_SOLVE>::check;
1071
+ case OP_TRANSPOSE: return F<OP_TRANSPOSE>::check;
1072
+ case OP_DETERMINANT: return F<OP_DETERMINANT>::check;
1073
+ case OP_INVERSE: return F<OP_INVERSE>::check;
1074
+ case OP_DOT: return F<OP_DOT>::check;
1075
+ case OP_BILIN: return F<OP_BILIN>::check;
1076
+ case OP_RANK1: return F<OP_RANK1>::check;
1077
+ case OP_HORZCAT: return F<OP_HORZCAT>::check;
1078
+ case OP_VERTCAT: return F<OP_VERTCAT>::check;
1079
+ case OP_DIAGCAT: return F<OP_DIAGCAT>::check;
1080
+ case OP_HORZSPLIT: return F<OP_HORZSPLIT>::check;
1081
+ case OP_VERTSPLIT: return F<OP_VERTSPLIT>::check;
1082
+ case OP_DIAGSPLIT: return F<OP_DIAGSPLIT>::check;
1083
+ case OP_RESHAPE: return F<OP_RESHAPE>::check;
1084
+ case OP_SPARSITY_CAST: return F<OP_SPARSITY_CAST>::check;
1085
+ case OP_SUBREF: return F<OP_SUBREF>::check;
1086
+ case OP_SUBASSIGN: return F<OP_SUBASSIGN>::check;
1087
+ case OP_GETNONZEROS: return F<OP_GETNONZEROS>::check;
1088
+ case OP_GETNONZEROS_PARAM: return F<OP_GETNONZEROS_PARAM>::check;
1089
+ case OP_ADDNONZEROS: return F<OP_ADDNONZEROS>::check;
1090
+ case OP_ADDNONZEROS_PARAM: return F<OP_ADDNONZEROS>::check;
1091
+ case OP_SETNONZEROS: return F<OP_SETNONZEROS>::check;
1092
+ case OP_SETNONZEROS_PARAM: return F<OP_SETNONZEROS>::check;
1093
+ case OP_PROJECT: return F<OP_PROJECT>::check;
1094
+ case OP_ASSERTION: return F<OP_ASSERTION>::check;
1095
+ case OP_MONITOR: return F<OP_MONITOR>::check;
1096
+ case OP_NORM2: return F<OP_NORM2>::check;
1097
+ case OP_NORM1: return F<OP_NORM1>::check;
1098
+ case OP_NORMINF: return F<OP_NORMINF>::check;
1099
+ case OP_NORMF: return F<OP_NORMF>::check;
1100
+ case OP_MMIN: return F<OP_MMIN>::check;
1101
+ case OP_MMAX: return F<OP_MMAX>::check;
1102
+ case OP_HORZREPMAT: return F<OP_HORZREPMAT>::check;
1103
+ case OP_HORZREPSUM: return F<OP_HORZREPSUM>::check;
1104
+ case OP_ERFINV: return F<OP_ERFINV>::check;
1105
+ case OP_PRINTME: return F<OP_PRINTME>::check;
1106
+ case OP_LIFT: return F<OP_LIFT>::check;
1107
+ case OP_EINSTEIN: return F<OP_EINSTEIN>::check;
1108
+ case OP_BSPLINE: return F<OP_BSPLINE>::check;
1109
+ case OP_CONVEXIFY: return F<OP_CONVEXIFY>::check;
1110
+ case OP_LOG1P: return F<OP_LOG1P>::check;
1111
+ case OP_EXPM1: return F<OP_EXPM1>::check;
1112
+ case OP_HYPOT: return F<OP_HYPOT>::check;
1113
+ case OP_LOGSUMEXP: return F<OP_LOGSUMEXP>::check;
1114
+ }
1115
+ return T();
1116
+ }
1117
+
1118
+ template<template<casadi_int> class F>
1119
+ bool operation_checker(casadi_int op) {
1120
+ return operation_getter<F, bool>(op);
1121
+ }
1122
+
1123
+ /// Easy access to all the functions for a particular type
1124
+ template<typename T>
1125
+ struct casadi_math {
1126
+
1127
+ /** \brief Evaluate a built in function (scalar-scalar)
1128
+
1129
+ \identifier{1g6} */
1130
+ static inline void fun(unsigned char op, const T& x, const T& y, T& f);
1131
+
1132
+ /** \brief Evaluate a built in function (vector-vector)
1133
+
1134
+ \identifier{1g7} */
1135
+ static inline void fun(unsigned char op, const T* x, const T* y, T* f, casadi_int n);
1136
+
1137
+ /** \brief Evaluate a built in function (vector-scalar)
1138
+
1139
+ \identifier{1g8} */
1140
+ static inline void fun(unsigned char op, const T* x, const T& y, T* f, casadi_int n);
1141
+
1142
+ /** \brief Evaluate a built in function (scalar-vector)
1143
+
1144
+ \identifier{1g9} */
1145
+ static inline void fun(unsigned char op, const T& x, const T* y, T* f, casadi_int n);
1146
+
1147
+ /** \brief Evaluate a built in derivative function
1148
+
1149
+ \identifier{1ga} */
1150
+ static inline void der(unsigned char op, const T& x, const T& y, const T& f, T* d);
1151
+
1152
+ /** \brief Evaluate the function and the derivative function
1153
+
1154
+ \identifier{1gb} */
1155
+ static inline void derF(unsigned char op, const T& x, const T& y, T& f, T* d);
1156
+
1157
+ /** \brief Evaluate function on a const/linear/nonlinear partition
1158
+
1159
+ \identifier{28f} */
1160
+ static inline void fun_linear(unsigned char op, const T*x, const T* y, T* f);
1161
+
1162
+ /** \brief Is binary operation?
1163
+
1164
+ \identifier{1gc} */
1165
+ static inline bool is_binary(unsigned char op);
1166
+
1167
+ /** \brief Is unary operation?
1168
+
1169
+ \identifier{1gd} */
1170
+ static inline bool is_unary(unsigned char op);
1171
+
1172
+ /** \brief Number of dependencies
1173
+
1174
+ \identifier{1ge} */
1175
+ static inline casadi_int ndeps(unsigned char op);
1176
+
1177
+ /** \brief Print
1178
+
1179
+ \identifier{1gf} */
1180
+ static inline std::string print(unsigned char op, const std::string& x,
1181
+ const std::string& y);
1182
+ static inline std::string print(unsigned char op, const std::string& x);
1183
+ static inline std::string name(unsigned char op);
1184
+ static inline std::string pre(unsigned char op);
1185
+ static inline std::string sep(unsigned char op);
1186
+ static inline std::string post(unsigned char op);
1187
+ };
1188
+
1189
+ /// Specialize the class so that it can be used with integer type
1190
+ template<>
1191
+ struct casadi_math<casadi_int>{
1192
+
1193
+ /** \brief Evaluate a built in function
1194
+
1195
+ \identifier{1gg} */
1196
+ static inline void fun(unsigned char op, const casadi_int& x,
1197
+ const casadi_int& y, casadi_int& f) {
1198
+ double ff(0);
1199
+ casadi_math<double>::fun(op, static_cast<double>(x), static_cast<double>(y), ff);
1200
+ f = static_cast<casadi_int>(ff);
1201
+ }
1202
+
1203
+ static inline void fun(unsigned char op, const casadi_int* x, const casadi_int* y,
1204
+ casadi_int* f, casadi_int n) {
1205
+ for (casadi_int i=0; i<n; ++i) {
1206
+ double ff(0);
1207
+ casadi_math<double>::fun(op, static_cast<double>(*x++), static_cast<double>(*y++), ff);
1208
+ *f++ = static_cast<casadi_int>(ff);
1209
+ }
1210
+ }
1211
+
1212
+ static inline void fun(unsigned char op, const casadi_int* x, const casadi_int& y,
1213
+ casadi_int* f, casadi_int n) {
1214
+ for (casadi_int i=0; i<n; ++i) {
1215
+ double ff;
1216
+ casadi_math<double>::fun(op, static_cast<double>(*x++), static_cast<double>(y), ff);
1217
+ *f++ = static_cast<casadi_int>(ff);
1218
+ }
1219
+ }
1220
+
1221
+ static inline void fun(unsigned char op, const casadi_int& x, const casadi_int* y,
1222
+ casadi_int* f, casadi_int n) {
1223
+ for (casadi_int i=0; i<n; ++i) {
1224
+ double ff;
1225
+ casadi_math<double>::fun(op, static_cast<double>(x), static_cast<double>(*y++), ff);
1226
+ *f++ = static_cast<casadi_int>(ff);
1227
+ }
1228
+ }
1229
+
1230
+ /** \brief Evaluate a built in derivative function
1231
+
1232
+ \identifier{1gh} */
1233
+ static inline void der(unsigned char op, const casadi_int& x, const casadi_int& y,
1234
+ const casadi_int& f, casadi_int* d) {
1235
+ double d_real[2] = {static_cast<double>(d[0]), static_cast<double>(d[1])};
1236
+ casadi_math<double>::der(op, static_cast<double>(x), static_cast<double>(y),
1237
+ static_cast<double>(f), d_real);
1238
+ d[0] = static_cast<casadi_int>(d_real[0]);
1239
+ d[1] = static_cast<casadi_int>(d_real[1]);
1240
+ }
1241
+
1242
+ /** \brief Evaluate the function and the derivative function
1243
+
1244
+ \identifier{1gi} */
1245
+ static inline void derF(unsigned char op, const casadi_int& x, const casadi_int& y,
1246
+ casadi_int& f, casadi_int* d) {
1247
+ double d_real[2] = {static_cast<double>(d[0]), static_cast<double>(d[1])};
1248
+ double f_real = static_cast<double>(f);
1249
+ casadi_math<double>::derF(op, static_cast<double>(x), static_cast<double>(y), f_real, d_real);
1250
+ f = static_cast<casadi_int>(f_real);
1251
+ d[0] = static_cast<casadi_int>(d_real[0]);
1252
+ d[1] = static_cast<casadi_int>(d_real[1]);
1253
+ }
1254
+
1255
+ /** \brief Number of dependencies
1256
+
1257
+ \identifier{1gj} */
1258
+ static inline casadi_int ndeps(unsigned char op) {
1259
+ return casadi_math<double>::ndeps(op);
1260
+ }
1261
+
1262
+ /** \brief Print
1263
+
1264
+ \identifier{1gk} */
1265
+ static inline std::string print(unsigned char op, const std::string& x,
1266
+ const std::string& y) {
1267
+ return casadi_math<double>::print(op, x, y);
1268
+ }
1269
+ static inline std::string print(unsigned char op, const std::string& x) {
1270
+ return casadi_math<double>::print(op, x);
1271
+ }
1272
+ static inline std::string pre(unsigned char op) {
1273
+ return casadi_math<double>::pre(op);
1274
+ }
1275
+ static inline std::string name(unsigned char op) {
1276
+ return casadi_math<double>::name(op);
1277
+ }
1278
+ static inline std::string sep(unsigned char op) {
1279
+ return casadi_math<double>::sep(op);
1280
+ }
1281
+ static inline std::string post(unsigned char op) {
1282
+ return casadi_math<double>::post(op);
1283
+ }
1284
+ };
1285
+
1286
+ // Template implementations
1287
+
1288
+ template<typename T>
1289
+ inline void casadi_math<T>::fun(unsigned char op, const T& x, const T& y, T& f) {
1290
+ // NOTE: We define the implementation in a preprocessor macro to be able to force inlining,
1291
+ // and to allow extensions in the VM
1292
+ #define CASADI_MATH_FUN_BUILTIN_GEN(CNAME, X, Y, F, N) \
1293
+ case OP_ASSIGN: CNAME<OP_ASSIGN>::fcn(X, Y, F, N); break; \
1294
+ case OP_ADD: CNAME<OP_ADD>::fcn(X, Y, F, N); break; \
1295
+ case OP_SUB: CNAME<OP_SUB>::fcn(X, Y, F, N); break; \
1296
+ case OP_MUL: CNAME<OP_MUL>::fcn(X, Y, F, N); break; \
1297
+ case OP_DIV: CNAME<OP_DIV>::fcn(X, Y, F, N); break; \
1298
+ case OP_NEG: CNAME<OP_NEG>::fcn(X, Y, F, N); break; \
1299
+ case OP_EXP: CNAME<OP_EXP>::fcn(X, Y, F, N); break; \
1300
+ case OP_LOG: CNAME<OP_LOG>::fcn(X, Y, F, N); break; \
1301
+ case OP_POW: CNAME<OP_POW>::fcn(X, Y, F, N); break; \
1302
+ case OP_CONSTPOW: CNAME<OP_CONSTPOW>::fcn(X, Y, F, N); break; \
1303
+ case OP_SQRT: CNAME<OP_SQRT>::fcn(X, Y, F, N); break; \
1304
+ case OP_SQ: CNAME<OP_SQ>::fcn(X, Y, F, N); break; \
1305
+ case OP_TWICE: CNAME<OP_TWICE>::fcn(X, Y, F, N); break; \
1306
+ case OP_SIN: CNAME<OP_SIN>::fcn(X, Y, F, N); break; \
1307
+ case OP_COS: CNAME<OP_COS>::fcn(X, Y, F, N); break; \
1308
+ case OP_TAN: CNAME<OP_TAN>::fcn(X, Y, F, N); break; \
1309
+ case OP_ASIN: CNAME<OP_ASIN>::fcn(X, Y, F, N); break; \
1310
+ case OP_ACOS: CNAME<OP_ACOS>::fcn(X, Y, F, N); break; \
1311
+ case OP_ATAN: CNAME<OP_ATAN>::fcn(X, Y, F, N); break; \
1312
+ case OP_LT: CNAME<OP_LT>::fcn(X, Y, F, N); break; \
1313
+ case OP_LE: CNAME<OP_LE>::fcn(X, Y, F, N); break; \
1314
+ case OP_EQ: CNAME<OP_EQ>::fcn(X, Y, F, N); break; \
1315
+ case OP_NE: CNAME<OP_NE>::fcn(X, Y, F, N); break; \
1316
+ case OP_NOT: CNAME<OP_NOT>::fcn(X, Y, F, N); break; \
1317
+ case OP_AND: CNAME<OP_AND>::fcn(X, Y, F, N); break; \
1318
+ case OP_OR: CNAME<OP_OR>::fcn(X, Y, F, N); break; \
1319
+ case OP_IF_ELSE_ZERO: CNAME<OP_IF_ELSE_ZERO>::fcn(X, Y, F, N); break; \
1320
+ case OP_FLOOR: CNAME<OP_FLOOR>::fcn(X, Y, F, N); break; \
1321
+ case OP_CEIL: CNAME<OP_CEIL>::fcn(X, Y, F, N); break; \
1322
+ case OP_FMOD: CNAME<OP_FMOD>::fcn(X, Y, F, N); break; \
1323
+ case OP_REMAINDER: CNAME<OP_REMAINDER>::fcn(X, Y, F, N); break; \
1324
+ case OP_FABS: CNAME<OP_FABS>::fcn(X, Y, F, N); break; \
1325
+ case OP_SIGN: CNAME<OP_SIGN>::fcn(X, Y, F, N); break; \
1326
+ case OP_COPYSIGN: CNAME<OP_COPYSIGN>::fcn(X, Y, F, N); break; \
1327
+ case OP_ERF: CNAME<OP_ERF>::fcn(X, Y, F, N); break; \
1328
+ case OP_FMIN: CNAME<OP_FMIN>::fcn(X, Y, F, N); break; \
1329
+ case OP_FMAX: CNAME<OP_FMAX>::fcn(X, Y, F, N); break; \
1330
+ case OP_INV: CNAME<OP_INV>::fcn(X, Y, F, N); break; \
1331
+ case OP_SINH: CNAME<OP_SINH>::fcn(X, Y, F, N); break; \
1332
+ case OP_COSH: CNAME<OP_COSH>::fcn(X, Y, F, N); break; \
1333
+ case OP_TANH: CNAME<OP_TANH>::fcn(X, Y, F, N); break; \
1334
+ case OP_ASINH: CNAME<OP_ASINH>::fcn(X, Y, F, N); break; \
1335
+ case OP_ACOSH: CNAME<OP_ACOSH>::fcn(X, Y, F, N); break; \
1336
+ case OP_ATANH: CNAME<OP_ATANH>::fcn(X, Y, F, N); break; \
1337
+ case OP_ATAN2: CNAME<OP_ATAN2>::fcn(X, Y, F, N); break; \
1338
+ case OP_ERFINV: CNAME<OP_ERFINV>::fcn(X, Y, F, N); break; \
1339
+ case OP_LIFT: CNAME<OP_LIFT>::fcn(X, Y, F, N); break; \
1340
+ case OP_PRINTME: CNAME<OP_PRINTME>::fcn(X, Y, F, N); break; \
1341
+ case OP_LOG1P: CNAME<OP_LOG1P>::fcn(X, Y, F, N); break; \
1342
+ case OP_EXPM1: CNAME<OP_EXPM1>::fcn(X, Y, F, N); break; \
1343
+ case OP_HYPOT: CNAME<OP_HYPOT>::fcn(X, Y, F, N); break;
1344
+
1345
+ #define CASADI_MATH_FUN_BUILTIN(X, Y, F) CASADI_MATH_FUN_BUILTIN_GEN(BinaryOperationSS, X, Y, F, 1)
1346
+
1347
+ switch (op) {
1348
+ CASADI_MATH_FUN_BUILTIN(x, y, f)
1349
+ }
1350
+ }
1351
+
1352
+ template<typename T>
1353
+ inline void casadi_math<T>::fun(unsigned char op, const T* x, const T* y, T* f, casadi_int n) {
1354
+ switch (op) {
1355
+ CASADI_MATH_FUN_BUILTIN_GEN(BinaryOperationVV, x, y, f, n)
1356
+ }
1357
+ }
1358
+
1359
+ template<typename T>
1360
+ inline void casadi_math<T>::fun(unsigned char op, const T* x, const T& y, T* f, casadi_int n) {
1361
+ switch (op) {
1362
+ CASADI_MATH_FUN_BUILTIN_GEN(BinaryOperationVS, x, y, f, n)
1363
+ }
1364
+ }
1365
+
1366
+ template<typename T>
1367
+ inline void casadi_math<T>::fun(unsigned char op, const T& x, const T* y, T* f, casadi_int n) {
1368
+ switch (op) {
1369
+ CASADI_MATH_FUN_BUILTIN_GEN(BinaryOperationSV, x, y, f, n)
1370
+ }
1371
+ }
1372
+
1373
+
1374
+ template<typename T>
1375
+ inline void casadi_math<T>::der(unsigned char op, const T& x, const T& y, const T& f, T* d) {
1376
+ // NOTE: We define the implementation in a preprocessor macro to be able to force inlining,
1377
+ // and to allow extensions in the VM
1378
+ #define CASADI_MATH_DER_BUILTIN(X, Y, F, D) \
1379
+ case OP_ASSIGN: BinaryOperation<OP_ASSIGN>::der(X, Y, F, D); break; \
1380
+ case OP_ADD: BinaryOperation<OP_ADD>::der(X, Y, F, D); break; \
1381
+ case OP_SUB: BinaryOperation<OP_SUB>::der(X, Y, F, D); break; \
1382
+ case OP_MUL: BinaryOperation<OP_MUL>::der(X, Y, F, D); break; \
1383
+ case OP_DIV: BinaryOperation<OP_DIV>::der(X, Y, F, D); break; \
1384
+ case OP_NEG: BinaryOperation<OP_NEG>::der(X, Y, F, D); break; \
1385
+ case OP_EXP: BinaryOperation<OP_EXP>::der(X, Y, F, D); break; \
1386
+ case OP_LOG: BinaryOperation<OP_LOG>::der(X, Y, F, D); break; \
1387
+ case OP_POW: BinaryOperation<OP_POW>::der(X, Y, F, D); break; \
1388
+ case OP_CONSTPOW: BinaryOperation<OP_CONSTPOW>::der(X, Y, F, D); break; \
1389
+ case OP_SQRT: BinaryOperation<OP_SQRT>::der(X, Y, F, D); break; \
1390
+ case OP_SQ: BinaryOperation<OP_SQ>::der(X, Y, F, D); break; \
1391
+ case OP_TWICE: BinaryOperation<OP_TWICE>::der(X, Y, F, D); break; \
1392
+ case OP_SIN: BinaryOperation<OP_SIN>::der(X, Y, F, D); break; \
1393
+ case OP_COS: BinaryOperation<OP_COS>::der(X, Y, F, D); break; \
1394
+ case OP_TAN: BinaryOperation<OP_TAN>::der(X, Y, F, D); break; \
1395
+ case OP_ASIN: BinaryOperation<OP_ASIN>::der(X, Y, F, D); break; \
1396
+ case OP_ACOS: BinaryOperation<OP_ACOS>::der(X, Y, F, D); break; \
1397
+ case OP_ATAN: BinaryOperation<OP_ATAN>::der(X, Y, F, D); break; \
1398
+ case OP_LT: BinaryOperation<OP_LT>::der(X, Y, F, D); break; \
1399
+ case OP_LE: BinaryOperation<OP_LE>::der(X, Y, F, D); break; \
1400
+ case OP_EQ: BinaryOperation<OP_EQ>::der(X, Y, F, D); break; \
1401
+ case OP_NE: BinaryOperation<OP_NE>::der(X, Y, F, D); break; \
1402
+ case OP_NOT: BinaryOperation<OP_NOT>::der(X, Y, F, D); break; \
1403
+ case OP_AND: BinaryOperation<OP_AND>::der(X, Y, F, D); break; \
1404
+ case OP_OR: BinaryOperation<OP_OR>::der(X, Y, F, D); break; \
1405
+ case OP_IF_ELSE_ZERO: BinaryOperation<OP_IF_ELSE_ZERO>::der(X, Y, F, D); break; \
1406
+ case OP_FLOOR: BinaryOperation<OP_FLOOR>::der(X, Y, F, D); break; \
1407
+ case OP_CEIL: BinaryOperation<OP_CEIL>::der(X, Y, F, D); break; \
1408
+ case OP_FMOD: BinaryOperation<OP_FMOD>::der(X, Y, F, D); break; \
1409
+ case OP_REMAINDER: BinaryOperation<OP_REMAINDER>::der(X, Y, F, D); break; \
1410
+ case OP_FABS: BinaryOperation<OP_FABS>::der(X, Y, F, D); break; \
1411
+ case OP_SIGN: BinaryOperation<OP_SIGN>::der(X, Y, F, D); break; \
1412
+ case OP_COPYSIGN: BinaryOperation<OP_COPYSIGN>::der(X, Y, F, D); break; \
1413
+ case OP_ERF: BinaryOperation<OP_ERF>::der(X, Y, F, D); break; \
1414
+ case OP_FMIN: BinaryOperation<OP_FMIN>::der(X, Y, F, D); break; \
1415
+ case OP_FMAX: BinaryOperation<OP_FMAX>::der(X, Y, F, D); break; \
1416
+ case OP_INV: BinaryOperation<OP_INV>::der(X, Y, F, D); break; \
1417
+ case OP_SINH: BinaryOperation<OP_SINH>::der(X, Y, F, D); break; \
1418
+ case OP_COSH: BinaryOperation<OP_COSH>::der(X, Y, F, D); break; \
1419
+ case OP_TANH: BinaryOperation<OP_TANH>::der(X, Y, F, D); break; \
1420
+ case OP_ASINH: BinaryOperation<OP_ASINH>::der(X, Y, F, D); break; \
1421
+ case OP_ACOSH: BinaryOperation<OP_ACOSH>::der(X, Y, F, D); break; \
1422
+ case OP_ATANH: BinaryOperation<OP_ATANH>::der(X, Y, F, D); break; \
1423
+ case OP_ATAN2: BinaryOperation<OP_ATAN2>::der(X, Y, F, D); break; \
1424
+ case OP_ERFINV: BinaryOperation<OP_ERFINV>::der(X, Y, F, D); break; \
1425
+ case OP_LIFT: BinaryOperation<OP_LIFT>::der(X, Y, F, D); break; \
1426
+ case OP_PRINTME: BinaryOperation<OP_PRINTME>::der(X, Y, F, D); break; \
1427
+ case OP_LOG1P: BinaryOperation<OP_LOG1P>::der(X, Y, F, D); break; \
1428
+ case OP_EXPM1: BinaryOperation<OP_EXPM1>::der(X, Y, F, D); break; \
1429
+ case OP_HYPOT: BinaryOperation<OP_HYPOT>::der(X, Y, F, D); break;
1430
+ switch (op) {
1431
+ CASADI_MATH_DER_BUILTIN(x, y, f, d)
1432
+ }
1433
+ }
1434
+
1435
+
1436
+ template<typename T>
1437
+ inline void casadi_math<T>::derF(unsigned char op, const T& x, const T& y, T& f, T* d) {
1438
+ // NOTE: We define the implementation in a preprocessor macro to be able to force inlining,
1439
+ // and to allow extensions in the VM
1440
+ #define CASADI_MATH_DERF_BUILTIN(X, Y, F, D) \
1441
+ case OP_ASSIGN: DerBinaryOperation<OP_ASSIGN>::derf(X, Y, F, D); break; \
1442
+ case OP_ADD: DerBinaryOperation<OP_ADD>::derf(X, Y, F, D); break; \
1443
+ case OP_SUB: DerBinaryOperation<OP_SUB>::derf(X, Y, F, D); break; \
1444
+ case OP_MUL: DerBinaryOperation<OP_MUL>::derf(X, Y, F, D); break; \
1445
+ case OP_DIV: DerBinaryOperation<OP_DIV>::derf(X, Y, F, D); break; \
1446
+ case OP_NEG: DerBinaryOperation<OP_NEG>::derf(X, Y, F, D); break; \
1447
+ case OP_EXP: DerBinaryOperation<OP_EXP>::derf(X, Y, F, D); break; \
1448
+ case OP_LOG: DerBinaryOperation<OP_LOG>::derf(X, Y, F, D); break; \
1449
+ case OP_POW: DerBinaryOperation<OP_POW>::derf(X, Y, F, D); break; \
1450
+ case OP_CONSTPOW: DerBinaryOperation<OP_CONSTPOW>::derf(X, Y, F, D); break; \
1451
+ case OP_SQRT: DerBinaryOperation<OP_SQRT>::derf(X, Y, F, D); break; \
1452
+ case OP_SQ: DerBinaryOperation<OP_SQ>::derf(X, Y, F, D); break; \
1453
+ case OP_TWICE: DerBinaryOperation<OP_TWICE>::derf(X, Y, F, D); break; \
1454
+ case OP_SIN: DerBinaryOperation<OP_SIN>::derf(X, Y, F, D); break; \
1455
+ case OP_COS: DerBinaryOperation<OP_COS>::derf(X, Y, F, D); break; \
1456
+ case OP_TAN: DerBinaryOperation<OP_TAN>::derf(X, Y, F, D); break; \
1457
+ case OP_ASIN: DerBinaryOperation<OP_ASIN>::derf(X, Y, F, D); break; \
1458
+ case OP_ACOS: DerBinaryOperation<OP_ACOS>::derf(X, Y, F, D); break; \
1459
+ case OP_ATAN: DerBinaryOperation<OP_ATAN>::derf(X, Y, F, D); break; \
1460
+ case OP_LT: DerBinaryOperation<OP_LT>::derf(X, Y, F, D); break; \
1461
+ case OP_LE: DerBinaryOperation<OP_LE>::derf(X, Y, F, D); break; \
1462
+ case OP_EQ: DerBinaryOperation<OP_EQ>::derf(X, Y, F, D); break; \
1463
+ case OP_NE: DerBinaryOperation<OP_NE>::derf(X, Y, F, D); break; \
1464
+ case OP_NOT: DerBinaryOperation<OP_NOT>::derf(X, Y, F, D); break; \
1465
+ case OP_AND: DerBinaryOperation<OP_AND>::derf(X, Y, F, D); break; \
1466
+ case OP_OR: DerBinaryOperation<OP_OR>::derf(X, Y, F, D); break; \
1467
+ case OP_IF_ELSE_ZERO: DerBinaryOperation<OP_IF_ELSE_ZERO>::derf(X, Y, F, D); break; \
1468
+ case OP_FLOOR: DerBinaryOperation<OP_FLOOR>::derf(X, Y, F, D); break; \
1469
+ case OP_CEIL: DerBinaryOperation<OP_CEIL>::derf(X, Y, F, D); break; \
1470
+ case OP_FMOD: DerBinaryOperation<OP_FMOD>::derf(X, Y, F, D); break; \
1471
+ case OP_REMAINDER: DerBinaryOperation<OP_REMAINDER>::derf(X, Y, F, D); break; \
1472
+ case OP_FABS: DerBinaryOperation<OP_FABS>::derf(X, Y, F, D); break; \
1473
+ case OP_SIGN: DerBinaryOperation<OP_SIGN>::derf(X, Y, F, D); break; \
1474
+ case OP_COPYSIGN: DerBinaryOperation<OP_COPYSIGN>::derf(X, Y, F, D); break; \
1475
+ case OP_ERF: DerBinaryOperation<OP_ERF>::derf(X, Y, F, D); break; \
1476
+ case OP_FMIN: DerBinaryOperation<OP_FMIN>::derf(X, Y, F, D); break; \
1477
+ case OP_FMAX: DerBinaryOperation<OP_FMAX>::derf(X, Y, F, D); break; \
1478
+ case OP_INV: DerBinaryOperation<OP_INV>::derf(X, Y, F, D); break; \
1479
+ case OP_SINH: DerBinaryOperation<OP_SINH>::derf(X, Y, F, D); break; \
1480
+ case OP_COSH: DerBinaryOperation<OP_COSH>::derf(X, Y, F, D); break; \
1481
+ case OP_TANH: DerBinaryOperation<OP_TANH>::derf(X, Y, F, D); break; \
1482
+ case OP_ASINH: DerBinaryOperation<OP_ASINH>::derf(X, Y, F, D); break; \
1483
+ case OP_ACOSH: DerBinaryOperation<OP_ACOSH>::derf(X, Y, F, D); break; \
1484
+ case OP_ATANH: DerBinaryOperation<OP_ATANH>::derf(X, Y, F, D); break; \
1485
+ case OP_ATAN2: DerBinaryOperation<OP_ATAN2>::derf(X, Y, F, D); break; \
1486
+ case OP_ERFINV: DerBinaryOperation<OP_ERFINV>::derf(X, Y, F, D); break; \
1487
+ case OP_LIFT: DerBinaryOperation<OP_LIFT>::derf(X, Y, F, D); break; \
1488
+ case OP_PRINTME: DerBinaryOperation<OP_PRINTME>::derf(X, Y, F, D); break; \
1489
+ case OP_LOG1P: DerBinaryOperation<OP_LOG1P>::derf(X, Y, F, D); break; \
1490
+ case OP_EXPM1: DerBinaryOperation<OP_EXPM1>::derf(X, Y, F, D); break; \
1491
+ case OP_HYPOT: DerBinaryOperation<OP_HYPOT>::derf(X, Y, F, D); break;
1492
+ switch (op) {
1493
+ CASADI_MATH_DERF_BUILTIN(x, y, f, d)
1494
+ }
1495
+ }
1496
+
1497
+ #define CASADI_MATH_BINARY_BUILTIN \
1498
+ case OP_ADD: \
1499
+ case OP_SUB: \
1500
+ case OP_MUL: \
1501
+ case OP_DIV: \
1502
+ case OP_POW: \
1503
+ case OP_CONSTPOW: \
1504
+ case OP_LT: \
1505
+ case OP_LE: \
1506
+ case OP_EQ: \
1507
+ case OP_NE: \
1508
+ case OP_AND: \
1509
+ case OP_OR: \
1510
+ case OP_COPYSIGN: \
1511
+ case OP_FMOD: \
1512
+ case OP_REMAINDER: \
1513
+ case OP_FMIN: \
1514
+ case OP_FMAX: \
1515
+ case OP_ATAN2: \
1516
+ case OP_PRINTME: \
1517
+ case OP_LIFT: \
1518
+ case OP_HYPOT:
1519
+
1520
+ #define CASADI_MATH_UNARY_BUILTIN \
1521
+ case OP_ASSIGN: \
1522
+ case OP_NEG: \
1523
+ case OP_EXP: \
1524
+ case OP_LOG: \
1525
+ case OP_SQRT: \
1526
+ case OP_SQ: \
1527
+ case OP_TWICE: \
1528
+ case OP_SIN: \
1529
+ case OP_COS: \
1530
+ case OP_TAN: \
1531
+ case OP_ASIN: \
1532
+ case OP_ACOS: \
1533
+ case OP_ATAN: \
1534
+ case OP_FLOOR: \
1535
+ case OP_CEIL: \
1536
+ case OP_NOT: \
1537
+ case OP_ERF: \
1538
+ case OP_FABS: \
1539
+ case OP_SIGN: \
1540
+ case OP_INV: \
1541
+ case OP_SINH: \
1542
+ case OP_COSH: \
1543
+ case OP_TANH: \
1544
+ case OP_ASINH: \
1545
+ case OP_ACOSH: \
1546
+ case OP_ATANH: \
1547
+ case OP_ERFINV: \
1548
+ case OP_LOG1P: \
1549
+ case OP_EXPM1:
1550
+
1551
+ template<typename T>
1552
+ inline void casadi_math<T>::fun_linear(unsigned char op, const T* x, const T* y, T* f) {
1553
+ if (op==OP_ADD || op==OP_SUB) {
1554
+ for (int i=0;i<3;++i) {
1555
+ f[i] = T::binary(op, x[i], y[i]);
1556
+ }
1557
+ } else if (op==OP_TWICE || op==OP_NEG) {
1558
+ for (int i=0;i<3;++i) {
1559
+ f[i] = T::unary(op, x[i]);
1560
+ }
1561
+ } else if (op==OP_MUL) {
1562
+ f[0] += x[0]*y[0];
1563
+ f[1] += x[0]*y[1];
1564
+ f[2] += x[0]*y[2];
1565
+ f[1] += x[1]*y[0];
1566
+ f[2] += x[1]*y[1];
1567
+ f[2] += x[1]*y[2];
1568
+ f[2] += x[2]*y[0];
1569
+ f[2] += x[2]*y[1];
1570
+ f[2] += x[2]*y[2];
1571
+ } else if (op==OP_DIV) {
1572
+ bool const_argy = y[1].is_zero() && y[2].is_zero();
1573
+ if (const_argy) {
1574
+ f[0] = x[0]/y[0];
1575
+ f[1] = x[1]/y[0];
1576
+ f[2] = x[2]/y[0];
1577
+ } else {
1578
+ f[2] = (x[0]+x[1]+x[2])/(y[0]+y[1]+y[2]);
1579
+ }
1580
+ } else if (casadi_math<T>::is_unary(op)) {
1581
+ bool const_arg = x[1].is_zero() && x[2].is_zero();
1582
+ if (const_arg) {
1583
+ f[0] = T::unary(op, x[0]);
1584
+ } else {
1585
+ f[2] = T::unary(op, x[0]+x[1]+x[2]);
1586
+ }
1587
+
1588
+ } else if (casadi_math<T>::is_binary(op)) {
1589
+ bool const_argx = x[1].is_zero() && x[2].is_zero();
1590
+ bool const_argy = y[1].is_zero() && y[2].is_zero();
1591
+ if (const_argx && const_argy) {
1592
+ f[0] = T::binary(op, x[0], y[0]);
1593
+ } else {
1594
+ f[2] = T::binary(op, x[0]+x[1]+x[2], y[0]+y[1]+y[2]);
1595
+ }
1596
+ } else {
1597
+ casadi_error("Not implemented");
1598
+ }
1599
+ }
1600
+
1601
+ template<typename T>
1602
+ bool casadi_math<T>::is_binary(unsigned char op) {
1603
+ switch (op) {
1604
+ CASADI_MATH_BINARY_BUILTIN
1605
+ case OP_IF_ELSE_ZERO:
1606
+ return true;
1607
+ default:
1608
+ return false;
1609
+ }
1610
+ }
1611
+
1612
+ template<typename T>
1613
+ bool casadi_math<T>::is_unary(unsigned char op) {
1614
+ switch (op) {
1615
+ CASADI_MATH_UNARY_BUILTIN
1616
+ return true;
1617
+ default:
1618
+ return false;
1619
+ }
1620
+ }
1621
+
1622
+ template<typename T>
1623
+ inline casadi_int casadi_math<T>::ndeps(unsigned char op) {
1624
+ switch (op) {
1625
+ case OP_CONST:
1626
+ case OP_PARAMETER:
1627
+ case OP_INPUT:
1628
+ return 0;
1629
+ CASADI_MATH_BINARY_BUILTIN
1630
+ case OP_IF_ELSE_ZERO:
1631
+ return 2;
1632
+ case OP_CALL:
1633
+ return -1;
1634
+ default:
1635
+ return 1;
1636
+ }
1637
+ }
1638
+
1639
+ template<typename T>
1640
+ inline std::string
1641
+ casadi_math<T>::print(unsigned char op,
1642
+ const std::string& x, const std::string& y) {
1643
+ casadi_assert_dev(ndeps(op)==2);
1644
+ return pre(op) + x + sep(op) + y + post(op);
1645
+ }
1646
+
1647
+ template<typename T>
1648
+ inline std::string
1649
+ casadi_math<T>::print(unsigned char op, const std::string& x) {
1650
+ casadi_assert_dev(ndeps(op)==1);
1651
+ return pre(op) + x + post(op);
1652
+ }
1653
+
1654
+ template<typename T>
1655
+ inline std::string casadi_math<T>::name(unsigned char op) {
1656
+ switch (op) {
1657
+ case OP_ASSIGN: return "assign";
1658
+ case OP_ADD: return "add";
1659
+ case OP_SUB: return "sub";
1660
+ case OP_MUL: return "mul";
1661
+ case OP_DIV: return "div";
1662
+ case OP_NEG: return "neg";
1663
+ case OP_EXP: return "exp";
1664
+ case OP_LOG: return "log";
1665
+ case OP_CONSTPOW:
1666
+ case OP_POW: return "pow";
1667
+ case OP_SQRT: return "sqrt";
1668
+ case OP_SQ: return "sq";
1669
+ case OP_TWICE: return "twice";
1670
+ case OP_SIN: return "sin";
1671
+ case OP_COS: return "cos";
1672
+ case OP_TAN: return "tan";
1673
+ case OP_ASIN: return "asin";
1674
+ case OP_ACOS: return "acos";
1675
+ case OP_ATAN: return "atan";
1676
+ case OP_LT: return "lt";
1677
+ case OP_LE: return "le";
1678
+ case OP_EQ: return "eq";
1679
+ case OP_NE: return "ne";
1680
+ case OP_NOT: return "not";
1681
+ case OP_AND: return "and";
1682
+ case OP_OR: return "or";
1683
+ case OP_FLOOR: return "floor";
1684
+ case OP_CEIL: return "ceil";
1685
+ case OP_FMOD: return "fmod";
1686
+ case OP_REMAINDER: return "remainder";
1687
+ case OP_FABS: return "fabs";
1688
+ case OP_SIGN: return "sign";
1689
+ case OP_COPYSIGN: return "copysign";
1690
+ case OP_IF_ELSE_ZERO: return "if_else_zero";
1691
+ case OP_ERF: return "erf";
1692
+ case OP_FMIN: return "fmin";
1693
+ case OP_FMAX: return "fmax";
1694
+ case OP_INV: return "inv";
1695
+ case OP_SINH: return "sinh";
1696
+ case OP_COSH: return "cosh";
1697
+ case OP_TANH: return "tanh";
1698
+ case OP_ASINH: return "asinh";
1699
+ case OP_ACOSH: return "acosh";
1700
+ case OP_ATANH: return "atanh";
1701
+ case OP_ATAN2: return "atan2";
1702
+ case OP_CONST: return "const";
1703
+ case OP_INPUT: return "input";
1704
+ case OP_OUTPUT: return "output";
1705
+ case OP_PARAMETER: return "parameter";
1706
+ case OP_CALL: return "call";
1707
+ case OP_MTIMES: return "mtimes";
1708
+ case OP_SOLVE: return "solve";
1709
+ case OP_TRANSPOSE: return "transpose";
1710
+ case OP_DETERMINANT: return "determinant";
1711
+ case OP_INVERSE: return "inverse";
1712
+ case OP_DOT: return "dot";
1713
+ case OP_HORZCAT: return "horzcat";
1714
+ case OP_VERTCAT: return "vertcat";
1715
+ case OP_DIAGCAT: return "diagcat";
1716
+ case OP_HORZSPLIT: return "horzsplit";
1717
+ case OP_VERTSPLIT: return "vertsplit";
1718
+ case OP_DIAGSPLIT: return "diagsplit";
1719
+ case OP_RESHAPE: return "reshape";
1720
+ case OP_SPARSITY_CAST: return "sparsity_cast";
1721
+ case OP_SUBREF: return "subref";
1722
+ case OP_SUBASSIGN: return "subassign";
1723
+ case OP_GETNONZEROS: return "getnonzeros";
1724
+ case OP_GETNONZEROS_PARAM: return "getnonzeros_param";
1725
+ case OP_ADDNONZEROS: return "addnonzeros";
1726
+ case OP_ADDNONZEROS_PARAM: return "addnonzeros_param";
1727
+ case OP_SETNONZEROS: return "setnonzeros";
1728
+ case OP_SETNONZEROS_PARAM: return "setnonzeros_param";
1729
+ case OP_PROJECT: return "project";
1730
+ case OP_ASSERTION: return "assertion";
1731
+ case OP_NORM2: return "norm2";
1732
+ case OP_NORM1: return "norm1";
1733
+ case OP_NORMINF: return "norminf";
1734
+ case OP_NORMF: return "normf";
1735
+ case OP_ERFINV: return "erfinv";
1736
+ case OP_PRINTME: return "printme";
1737
+ case OP_LIFT: return "lift";
1738
+ case OP_EINSTEIN: return "einstein";
1739
+ case OP_BSPLINE: return "bspline";
1740
+ case OP_CONVEXIFY: return "convexify";
1741
+ case OP_LOG1P: return "log1p";
1742
+ case OP_EXPM1: return "expm1";
1743
+ case OP_HYPOT: return "hypot";
1744
+ case OP_LOGSUMEXP: return "logsumexp";
1745
+ }
1746
+ return "<invalid-op>";
1747
+ }
1748
+
1749
+ template<typename T>
1750
+ inline std::string casadi_math<T>::pre(unsigned char op) {
1751
+ switch (op) {
1752
+ case OP_ASSIGN: return "";
1753
+ case OP_ADD: return "(";
1754
+ case OP_SUB: return "(";
1755
+ case OP_MUL: return "(";
1756
+ case OP_DIV: return "(";
1757
+ case OP_NEG: return "(-";
1758
+ case OP_TWICE: return "(2.*";
1759
+ case OP_LT: return "(";
1760
+ case OP_LE: return "(";
1761
+ case OP_EQ: return "(";
1762
+ case OP_NE: return "(";
1763
+ case OP_NOT: return "(!";
1764
+ case OP_AND: return "(";
1765
+ case OP_OR: return "(";
1766
+ case OP_IF_ELSE_ZERO: return "(";
1767
+ case OP_INV: return "(1./";
1768
+ default: return name(op) + "(";
1769
+ }
1770
+ }
1771
+
1772
+ template<typename T>
1773
+ inline std::string casadi_math<T>::sep(unsigned char op) {
1774
+ switch (op) {
1775
+ case OP_ADD: return "+";
1776
+ case OP_SUB: return "-";
1777
+ case OP_MUL: return "*";
1778
+ case OP_DIV: return "/";
1779
+ case OP_LT: return "<";
1780
+ case OP_LE: return "<=";
1781
+ case OP_EQ: return "==";
1782
+ case OP_NE: return "!=";
1783
+ case OP_AND: return "&&";
1784
+ case OP_OR: return "||";
1785
+ case OP_IF_ELSE_ZERO: return "?";
1786
+ default: return ",";
1787
+ }
1788
+ }
1789
+
1790
+ template<typename T>
1791
+ inline std::string casadi_math<T>::post(unsigned char op) {
1792
+ switch (op) {
1793
+ case OP_ASSIGN: return "";
1794
+ case OP_IF_ELSE_ZERO: return ":0)";
1795
+ default: return ")";
1796
+ }
1797
+ }
1798
+
1799
+ #endif // SWIG
1800
+
1801
+ } // namespace casadi
1802
+
1803
+ /// \endcond
1804
+
1805
+ #endif // CASADI_CALCULUS_HPP