|
|
1.1 ! root 1: #include "apl.h" ! 2: ! 3: ex_base() ! 4: { ! 5: register struct item *p, *q; ! 6: int s, s1; ! 7: data d, d1; ! 8: double r, b; ! 9: ! 10: p = fetch2(); ! 11: q = sp[-2]; ! 12: if(p->rank > 1 || q->rank > 1) ! 13: error("base R"); ! 14: b = 1.; ! 15: r = 0.; ! 16: s = p->size; ! 17: s1 = q->size; ! 18: while(s > 0 || s1 > 0) { ! 19: if(s > 0) { ! 20: s--; ! 21: p->index = s; ! 22: d = getdat(p); ! 23: } ! 24: if(s1 > 0) { ! 25: s1--; ! 26: q->index = s1; ! 27: d1 = getdat(q); ! 28: } ! 29: r += d1 * b; ! 30: b *= d; ! 31: } ! 32: pop(); ! 33: pop(); ! 34: p = newdat(DA, 0, 1); ! 35: push(p); ! 36: d = r; ! 37: putdat(p, d); ! 38: } ! 39: ! 40: ex_rep() ! 41: { ! 42: register struct item *p, *q; ! 43: register s; ! 44: double a, b, r; ! 45: ! 46: p = fetch2(); ! 47: q = sp[-2]; ! 48: if(q->size != 1 || p->rank > 1) ! 49: error("represent R"); ! 50: r = getdat(q); ! 51: s = p->size; ! 52: while(s > 0) { ! 53: s--; ! 54: p->index = s; ! 55: b = getdat(p); ! 56: if(b == 0.) ! 57: error("represent D"); ! 58: r /= b; ! 59: a = r; ! 60: r = floor(r); ! 61: datum = (a - r) * b; ! 62: p->index = s; ! 63: putdat(p, datum); ! 64: } ! 65: sp--; ! 66: pop(); ! 67: push(p); ! 68: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.