|
|
1.1 ! root 1: static char Sccsid[] = "ak.c @(#)ak.c 1.1 10/1/82 Berkeley "; ! 2: #include "apl.h" ! 3: ! 4: ex_scn0() ! 5: { ! 6: fetch1(); ! 7: scan0(0); ! 8: } ! 9: ! 10: ex_scan() ! 11: { ! 12: register struct item *p; ! 13: ! 14: p = fetch1(); ! 15: scan0(p->rank-1); ! 16: } ! 17: ! 18: ex_scnk() ! 19: { ! 20: register i; ! 21: ! 22: i = topfix() - thread.iorg; ! 23: scan0(i); ! 24: } ! 25: ! 26: scan0(k) ! 27: { ! 28: register struct item *p, *q; ! 29: data *param[2]; ! 30: int scan1(); ! 31: ! 32: p = fetch1(); ! 33: if(p->type != DA) ! 34: error("scan T"); ! 35: ! 36: bidx(p); ! 37: colapse(k); ! 38: if(idx.dimk == 0) { ! 39: /* ! 40: * scan identities - ets/jrl 5/76 ! 41: */ ! 42: q = newdat(DA,0,1); ! 43: q->dim[0] = 1; ! 44: switch(*pcp++) { ! 45: case ADD: ! 46: case SUB: ! 47: case OR: ! 48: q->datap[0] = 0; ! 49: break; ! 50: case AND: ! 51: case MUL: ! 52: case DIV: ! 53: q->datap[0] = 1; ! 54: break; ! 55: case MIN: ! 56: q->datap[0] = 1.0e38; ! 57: break; ! 58: case MAX: ! 59: q->datap[0] = -1.0e38; ! 60: break; ! 61: default: ! 62: error("reduce identity"); ! 63: } ! 64: pop(); ! 65: *sp++ = q; ! 66: return; ! 67: } ! 68: param[0] = p->datap; ! 69: param[1] = (data *)exop[*pcp++]; ! 70: forloop(scan1, param); ! 71: } ! 72: ! 73: scan1(param) ! 74: data *param[]; ! 75: { ! 76: register i; ! 77: register data *dp; ! 78: data d; ! 79: data (*f)(); ! 80: ! 81: dp = param[0]; ! 82: f = (data (*)())param[1]; ! 83: dp += access(); ! 84: d = *dp; ! 85: for(i = 1; i < idx.dimk; i++) { ! 86: dp += idx.delk; ! 87: *dp = d = (*f)(*dp, d); ! 88: } ! 89: } ! 90: ! 91: data scalex = 453.; ! 92: data scaley = 453.; ! 93: data origx = 0.0; ! 94: data origy = 0.0; ! 95: ! 96: ex_plot() ! 97: { ! 98: register struct item *p; ! 99: register data *dp; ! 100: register i; ! 101: int ic; ! 102: int x, y; ! 103: ! 104: p = fetch1(); ! 105: if(p->type != DA) ! 106: error("plot T"); ! 107: if(p->rank != 2) ! 108: error("plot R"); ! 109: if(p->dim[1] != 2) ! 110: error("plot C"); ! 111: ! 112: dp = p->datap; ! 113: if ((i = p->dim[0]) == 0) return; ! 114: ic=0; ! 115: while(i--) { ! 116: x = scalex*(*dp++ - origx); ! 117: y = 454-(scaley*(*dp++ - origy)); ! 118: if(x<0 || x >= 576 || ! 119: y<0 || y>=454) ! 120: error("plot off screen"); ! 121: if(ic) ! 122: line(x,y); ! 123: else { ! 124: move(x,y); ! 125: ic=1; ! 126: } ! 127: } ! 128: } ! 129: line(x,y) ! 130: { ! 131: } ! 132: move(x,y) ! 133: { ! 134: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.