pub unsafe extern "C" fn SCIPisSOCNonlinear(
scip: *mut SCIP,
cons: *mut SCIP_CONS,
compeigenvalues: c_uint,
success: *mut c_uint,
sidetype: *mut SCIP_SIDETYPE,
vars: *mut *mut *mut SCIP_VAR,
offsets: *mut *mut f64,
transcoefs: *mut *mut f64,
transcoefsidx: *mut *mut c_int,
termbegins: *mut *mut c_int,
nvars: *mut c_int,
nterms: *mut c_int,
) -> SCIP_RETCODEExpand description
checks whether constraint is SOC representable in original variables and returns the SOC representation
The SOC representation has the form:
\f$\sqrt{\sum_{i=1}^{n} (v_i^T x + \beta_i)^2} - v_{n+1}^T x - \beta_{n+1} \lessgtr 0\f$,
where \f$n+1 = \text{nterms}\f$ and the inequality type is given by sidetype (SCIP_SIDETYPE_RIGHT if inequality
is \f$\leq\f$, SCIP_SIDETYPE_LEFT if \f$\geq\f$).
For each term (i.e. for each \f$i\f$ in the above notation as well as \f$n+1\f$), the constant \f$\beta_i\f$ is given by the
corresponding element offsets[i-1] and termbegins[i-1] is the starting position of the term in arrays
transcoefs and transcoefsidx. The overall number of nonzeros is termbegins[nterms].
Arrays transcoefs and transcoefsidx have size termbegins[nterms] and define the linear expressions \f$v_i^T x\f$
for each term. For a term \f$i\f$ in the above notation, the nonzeroes are given by elements
termbegins[i-1]...termbegins[i] of transcoefs and transcoefsidx. There may be no nonzeroes for some term (i.e.,
constant terms are possible). transcoefs contains the coefficients \f$v_i\f$ and transcoefsidx contains positions of
variables in the vars array.
The vars array has size nvars and contains \f$x\f$ variables; each variable is included at most once.
The arrays should be freed by calling SCIPfreeSOCArraysNonlinear().
This function uses the methods that are used in the detection algorithm of the SOC nonlinear handler.