#[unsafe(no_mangle)]pub unsafe extern "C" fn IpoptSolve(
ipopt_problem: IpoptProblem,
x: *mut Number,
g: *mut Number,
obj_val: *mut Number,
mult_g: *mut Number,
mult_x_L: *mut Number,
mult_x_U: *mut Number,
user_data: *mut c_void,
) -> IndexExpand description
Port of IpStdCInterface.cpp:IpoptSolve. Returns the
ApplicationReturnStatus integer.
Builds a [CCallbackTnlp] from the user-supplied callback table
and bounds, runs it through IpoptApplication::optimize_tnlp,
and writes back the final iterate.
§Safety
All pointer arguments are read/written per the
IpStdCInterface.h contract: x is in/out (size n); g is
out-only (size m); mult_g, mult_x_L, mult_x_U (sizes
m, n, n) are out, and are also read as the starting multipliers
when warm_start_init_point=yes (upstream’s start_lam, start_z_L,
start_z_U). Any of them may be NULL; a NULL multiplier buffer under
a warm start means “not supplied” and that block starts unseeded.