7 satmin(SATSolve *s, int *a, int n, int *id, int *l, int m, int mul)
12 for(i = 0; i < m; i++)
15 for(i = 0; i < m; i++)
16 l[i] = a[id[i]] * mul;
18 for(i = m-1; i >= 0; i--){
30 satrange1(SATSolve *s, int *a, int n, int min, int max)
37 saterror(nil, "satnew: %r");
40 for(n = 0; a[n] != 0; n++)
42 if(min > n || max < 0)
47 if(min == 0 || max != n && sz < max+1) sz = max+1;
48 if(s->cflclalloc < 2*sz){
49 na = -(-2*sz & -CFLCLALLOC);
50 s->cflcl = satrealloc(s, s->cflcl, na * sizeof(int));
53 s = satmin(s, a, n, s->cflcl, s->cflcl+sz, max+1, -1);
54 s = satmin(s, a, n, s->cflcl, s->cflcl+sz, n+1-min, 1);
59 satrangev(SATSolve *s, int min, int max, ...)
66 s = satrange1(s, (int*)va, -1, min, max);