real obj1val_ASL(ASL *a, int i, real *X, fint *nerror) { ASL_fg *asl; Jmp_buf err_jmp0; cde *d; expr *e1; expr_v *V; int ij; ograd *gr; real f; NNOBJ_chk(a, i, "obj1val"); asl = (ASL_fg*)a; if (nerror && *nerror >= 0) { err_jmp = &err_jmp0; ij = __builtin_setjmp(err_jmp0.jb); if (ij) { *nerror = err_jmp0.err; f = 0.; goto done; } } want_deriv = want_derivs; errno = 0; /* in case f77 set errno opening files */ if (!asl->i.x_known) x0_check_ASL(asl,X); if (!asl->i.noxval) asl->i.noxval = (int*)M1zapalloc(n_obj*sizeof(int)); co_index = -(i + 1); if (!(x0kind & ASL_have_objcom)) { if (ncom0 > combc) comeval_ASL(asl, combc, ncom0); if (comc1 < ncom1) com1eval_ASL(asl, comc1, ncom1); x0kind |= ASL_have_objcom; } d = obj_de + i; gr = Ograd[i]; e1 = d->e; f = (*e1->op)(e1 C_ASL); asl->i.noxval[i] = asl->i.nxval; if (asl->i.vmap || asl->i.vscale) for(V = var_e; gr; gr = gr->next) f += gr->coef * V[gr->varno].v; else for(; gr; gr = gr->next) f += gr->coef * X[gr->varno]; done: err_jmp = 0; return f; }
static real cival(ASL_fg *asl, int i, real *X, fint *nerror) { Jmp_buf err_jmp0; expr *e; int ij, nc; real f; if (nerror && *nerror >= 0) { err_jmp = &err_jmp0; ij = setjmp(err_jmp0.jb); if ((*nerror = ij)) return 0.; } want_deriv = want_derivs; errno = 0; /* in case f77 set errno opening files */ if (!asl->i.x_known) x0_check_ASL(asl,X); if (!asl->i.ncxval) asl->i.ncxval = (int*)M1zapalloc(nclcon*sizeof(int)); if (!(x0kind & ASL_have_concom)) { if (comb < combc) comeval_ASL(asl, comb, combc); if (comc1) com1eval_ASL(asl, 0,comc1); x0kind |= ASL_have_concom; } asl->i.ncxval[i] = asl->i.nxval; co_index = i; if (i >= (nc = asl->i.n_con0)) e = lcon_de[i-nc].e; else e = con_de[i].e; f = (*e->op)(e C_ASL); err_jmp = 0; return f; }