grad
| grad | 
  Purpose
 
 
 Evaluate the gradiant of a constraint or objective on the provided assignment of the decision variables.
 
 
  Synopsis
 
 int grad(XPRMcontext ctx, XPRMnlpdata nlpdata, int nb, double *grad, const double *x, double *val, int dense);
 
  Arguments
 
 | 
     ctx 
     | 
     Mosel's execution context
     | 
| 
     nlpd 
     | 
     Problem information as generated by
     loadprob
     | 
| 
     nb 
     | 
     Constraint number to evaluate or
     NLEVAL_OBJ for the opbjective,
     NLEVAL_ALL for everything,
     NLEVAL_NL for nonlinear constraints or
     NLEVAL_LIN linear constraints.
     | 
| 
     grad 
     | 
     Reference that receives the gradiant. In case of multiple evaluations, this must be an array large enough to store all the results
     | 
| 
     x 
     | 
     Values assigned to the decision variables
     | 
| 
     val 
     | 
     Reference that receives the result of the evaluation (or
     NULL). In case of multiple evaluations, this must be an array large enough to store all the results
     | 
| 
     dense 
     | 
     When processing a single constraint, return data in dense form
     | 
  Return value
 
 
 0 if successful or 1 in case of error
 
  Further information
 
 
 1. This function computes the gradient and evaluation of the objective or constraints. The
 val argument is handled like with function
 eval.
 
 
 2. The
 dense option is used only when processing a single constraint or the objective: the result is returned in the form of a dense array of coefficients, the
 grad array must be of size
 nlpdata->nbvar. In all other cases the result is returned in the form of a sparse array: for the objective the size of the array must be
 nlpdata->nzrobj and the variable references have to be obtained from
 nlpdata->vrefobj. For a constraint
 c the size of the array is
 nlpdata->ctrstart[c+1]-nlpdata->ctrstart[c] and the variable references are taken from
 nlpdata->vref[nlpdata->ctrstart[c]] to
 nlpdata->vref[nlpdata->ctrstart[c+1]].
 
 
 3. If the function is used to process all constraints (
 NLEVAL_ALL) the result array is of size
 npldata->nzr, for linear constraints only (
 NLEVAL_LIN) it is
 npldata->nzr_lin and for the nonlinear constraints (
 NLEVAL_NL) it is
 npldata->nzr-npldata->nzr_lin.
 
 
