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