lcon2val_ASL(ASL *a, int i, real *X, fint *nerror) #endif { real f; INchk(a, "lcon2val", i, a->i.n_lcon_); f = c2ival((ASL_fgh*)a, i + a->i.n_con0, X, nerror); return f != 0.; }
real con2ival_ASL(ASL *a, int i, real *X, fint *nerror) { ASL_fgh *asl; cgrad *gr; int j1, kv, *vmi; real f, *vscale; INchk(a, "con2ival", i, a->i.n_con0); asl = (ASL_fgh*)a; f = c2ival(asl, i, X, nerror); kv = 0; vmi = 0; if ((vscale = asl->i.vscale)) kv = 2; if (asl->i.vmap) { vmi = get_vminv_ASL(a); ++kv; } gr = asl->i.Cgrad0[i]; switch(kv) { case 3: for(; gr; gr = gr->next) { j1 = vmi[gr->varno]; f += X[j1] * vscale[j1] * gr->coef; } break; case 2: for(; gr; gr = gr->next) { j1 = gr->varno; f += X[j1] * vscale[j1] * gr->coef; } break; case 1: for(; gr; gr = gr->next) f += X[vmi[gr->varno]] * gr->coef; break; case 0: for(; gr; gr = gr->next) f += X[gr->varno] * gr->coef; } return f; }
con2ival_ASL(ASL *a, int i, real *X, fint *nerror) #endif { ASL_fgh *asl; cgrad *gr, **gr0; expr_v *V; real f; INchk(a, "con2ival", i, a->i.n_con_); f = c2ival(asl = (ASL_fgh*)a, i, X, nerror); gr0 = Cgrad + i; gr = *gr0; if (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]; if (asl->i.cscale) f *= asl->i.cscale[i]; return f; }