comparison vcompsc.c @ 0:e0bbaa717f41 draft default tip

lol J
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 25 Nov 2013 11:56:30 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:e0bbaa717f41
1 /* Copyright 1990-2011, Jsoftware Inc. All rights reserved. */
2 /* License in license.txt. */
3 /* */
4 /* Verbs: Comparatives */
5 /* */
6 /* Special code for the following cases: */
7 /* comp i. 0: i.&0@:comp */
8 /* comp i. 1: i.&1@:comp */
9 /* comp i: 0: i:&0@:comp */
10 /* comp i: 1: i:&1@:comp */
11 /* [: + / comp + /@:comp */
12 /* [: +./ comp +./@:comp 1: e. comp */
13 /* 0: e. comp */
14 /* [: I. comp I.@:comp */
15 /* where comp is one of the following: */
16 /* = ~: < <: >: > E. e. */
17
18 #include "j.h"
19 #include "ve.h"
20 #include "vcomp.h"
21
22
23 #define INDF(f,T0,T1,F) \
24 static F2(f){I an,n,wn;T0*av,x;T1*wv,y; \
25 an=AN(a); av=(T0*)AV(a); \
26 wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
27 if (!AR(a)){x=*av; DO(n, y=*wv++; if(F(x,y))R sc(i););} \
28 else if(!AR(w)){y=*wv; DO(n, x=*av++; if(F(x,y))R sc(i););} \
29 else { DO(n, x=*av++; y=*wv++; if(F(x,y))R sc(i););} \
30 R sc(n); \
31 }
32
33 #define JNDF(f,T0,T1,F) \
34 static F2(f){I an,n,wn;T0*av,x;T1*wv,y; \
35 an=AN(a); av=(T0*)AV(a); \
36 wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
37 if (!AR(a)){x=*av; wv+=n; DO(n, y=*--wv; if(F(x,y))R sc(n-1-i););} \
38 else if(!AR(w)){y=*wv; av+=n; DO(n, x=*--av; if(F(x,y))R sc(n-1-i););} \
39 else {av+=n; wv+=n; DO(n, x=*--av; y=*--wv; if(F(x,y))R sc(n-1-i););} \
40 R sc(n); \
41 }
42
43 #define SUMF(f,T0,T1,F) \
44 static F2(f){I an,m=0,n,wn;T0*av,x;T1*wv,y; \
45 an=AN(a); av=(T0*)AV(a); \
46 wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
47 if (!AR(a)){x=*av; DO(n, y=*wv++; if(F(x,y))++m;);} \
48 else if(!AR(w)){y=*wv; DO(n, x=*av++; if(F(x,y))++m;);} \
49 else { DO(n, x=*av++; y=*wv++; if(F(x,y))++m;);} \
50 R sc(m); \
51 }
52
53 #define ANYF(f,T0,T1,F) \
54 static F2(f){I an,n,wn;T0*av,x;T1*wv,y; \
55 an=AN(a); av=(T0*)AV(a); \
56 wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
57 if (!AR(a)){x=*av; DO(n, y=*wv++; if(F(x,y))R one;);} \
58 else if(!AR(w)){y=*wv; DO(n, x=*av++; if(F(x,y))R one;);} \
59 else { DO(n, x=*av++; y=*wv++; if(F(x,y))R one;);} \
60 R zero; \
61 }
62
63 #define ALLF(f,T0,T1,F) \
64 static F2(f){I an,n,wn;T0*av,x;T1*wv,y; \
65 an=AN(a); av=(T0*)AV(a); \
66 wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
67 if (!AR(a)){x=*av; DO(n, y=*wv++; if(!F(x,y))R zero;);} \
68 else if(!AR(w)){y=*wv; DO(n, x=*av++; if(!F(x,y))R zero;);} \
69 else { DO(n, x=*av++; y=*wv++; if(!F(x,y))R zero;);} \
70 R one; \
71 }
72
73 #define IFB1 \
74 {if(zu==zv){I m=zv-AV(z); RZ(z=ext(0,z)); zv=m+AV(z); zu=AN(z)+AV(z);} *zv++=i;}
75
76 #define IFBF(f,T0,T1,F) \
77 static F2(f){A z;I an,n,wn,*zu,*zv;T0*av,x;T1*wv,y; \
78 an=AN(a); av=(T0*)AV(a); \
79 wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
80 RZ(z=exta(INT,1L,1L,MAX(22,n/8))); zv=AV(z); zu=zv+AN(z); \
81 if (!AR(a)){x=*av; DO(n, y=*wv++; if(F(x,y))IFB1;);} \
82 else if(!AR(w)){y=*wv; DO(n, x=*av++; if(F(x,y))IFB1;);} \
83 else { DO(n, x=*av++; y=*wv++; if(F(x,y))IFB1;);} \
84 AN(z)=*AS(z)=zv-AV(z); R z; \
85 }
86
87
88 /* Now define byte-parallel (4 bytes at a time) versions of above */
89
90 #define JNDBR(yy) if(r&&(y=yy))DO(r, if(yv[r-1-i])R sc(n-1-i););
91
92 #if SY_64
93 #define ASSIGNX(v) {x=*v; xv[1]=xv[2]=xv[3]=xv[4]=xv[5]=xv[6]=xv[7]=xv[0];}
94 #define INDB3 R sc( i*SZI+(yv[0]?0:yv[1]?1:yv[2]?2:yv[3]?3:yv[4]?4:yv[5]?5:yv[6]?6:7) );
95 #define JNDB3 R sc(n-1-(r+i*SZI+(yv[7]?0:yv[6]?1:yv[5]?2:yv[4]?3:yv[3]?4:yv[2]?5:yv[1]?6:7)));
96 #else
97 #define ASSIGNX(v) {x=*v; xv[1]=xv[2]=xv[3]=xv[0];}
98 #define INDB3 R sc( i*SZI+(yv[0]?0:yv[1]?1:yv[2]?2:3) );
99 #define JNDB3 R sc(n-1-(r+i*SZI+(yv[3]?0:yv[2]?1:yv[1]?2:3)));
100 #endif
101
102 #define INDB(f,T0,T1,F) \
103 static F2(f){B*xv,*yv;I an,*av,n,q,r,wn,*wv,x,y; \
104 an=AN(a); av=AV(a); \
105 wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
106 q=n/SZI; r=n%SZI; \
107 xv=(B*)&x; yv=(B*)&y; \
108 if (!AR(a)){ASSIGNX(av); DO(q, if(y=F(x, *wv++))INDB3;); y=F(x, *wv);} \
109 else if(!AR(w)){ASSIGNX(wv); DO(q, if(y=F(*av++,x ))INDB3;); y=F(*av,x );} \
110 else { DO(q, if(y=F(*av++,*wv++))INDB3;); y=F(*av,*wv);} \
111 if(y)DO(r, if(yv[i])R sc(i+q*SZI);); \
112 R sc(n); \
113 }
114
115 #define JNDB(f,T0,T1,F) \
116 static F2(f){B*xv,*yv;I an,*av,n,q,r,wn,*wv,x,y; \
117 an=AN(a); av=AV(a); \
118 wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
119 q=n/SZI; r=n%SZI; \
120 xv=(B*)&x; yv=(B*)&y; \
121 if (!AR(a)){ASSIGNX(av); wv+=q; JNDBR(F(x, *wv)); DO(q, if(y=F(x, *--wv))JNDB3;);} \
122 else if(!AR(w)){ASSIGNX(wv); av+=q; JNDBR(F(*av,x )); DO(q, if(y=F(*--av,x ))JNDB3;);} \
123 else {av+=q; wv+=q; JNDBR(F(*av,*wv)); DO(q, if(y=F(*--av,*--wv))JNDB3;);} \
124 R sc(n); \
125 }
126
127 #define SUMB(f,T0,T1,F) \
128 static F2(f){B*xv;I an,*av,n,p,q,r,r1,wn,*wv,x,z=0;UC*tu;UI t; \
129 an=AN(a); av=AV(a); \
130 wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
131 p=n/SZI; q=p/255; r=p%255; r1=n%SZI; \
132 xv=(B*)&x; tu=(UC*)&t; \
133 if (!AR(a)){ \
134 ASSIGNX(av); \
135 DO(q, t=0; DO(255, t+=F(x, *wv++);); DO(SZI,z+=tu[i];);); \
136 t=0; DO(r, t+=F(x, *wv++);); DO(SZI,z+=tu[i];); x=F(x, *wv); \
137 }else if(!AR(w)){ \
138 ASSIGNX(wv); \
139 DO(q, t=0; DO(255, t+=F(*av++,x );); DO(SZI,z+=tu[i];);); \
140 t=0; DO(r, t+=F(*av++,x );); DO(SZI,z+=tu[i];); x=F(*av,x ); \
141 }else{ \
142 DO(q, t=0; DO(255, t+=F(*av++,*wv++);); DO(SZI,z+=tu[i];);); \
143 t=0; DO(r, t+=F(*av++,*wv++);); DO(SZI,z+=tu[i];); x=F(*av,*wv); \
144 } \
145 DO(r1, z+=xv[i];); \
146 R sc(z); \
147 }
148
149 #define ANYB(f,T0,T1,F) \
150 static F2(f){B*xv; I an,*av,n,p,r1, wn,*wv,x; \
151 an=AN(a); av=AV(a); \
152 wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
153 p=n/SZI; r1=n%SZI;; \
154 xv=(B*)&x; \
155 if (!AR(a)){ASSIGNX(av); DO(p, if( F(x, *wv++))R one; ); x=F(x, *wv);} \
156 else if(!AR(w)){ASSIGNX(wv); DO(p, if( F(*av++,x ))R one; ); x=F(*av,x );} \
157 else { DO(p, if( F(*av++,*wv++))R one; ); x=F(*av,*wv);} \
158 DO(r1, if(xv[i])R one;); \
159 R zero; \
160 }
161
162 #define ALLB(f,T0,T1,F) \
163 static F2(f){B*xv;C*tv;I an,*av,n,p,r1,t,wn,*wv,x; \
164 an=AN(a); av=AV(a); \
165 wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
166 p=n/SZI; r1=n%SZI;; \
167 xv=(B*)&x; tv=(C*)&t; DO(SZI, tv[i]=1;); \
168 if (!AR(a)){ASSIGNX(av); DO(p, if(t!=F(x, *wv++))R zero;); x=F(x, *wv);} \
169 else if(!AR(w)){ASSIGNX(wv); DO(p, if(t!=F(*av++,x ))R zero;); x=F(*av,x );} \
170 else { DO(p, if(t!=F(*av++,*wv++))R zero;); x=F(*av,*wv);} \
171 DO(r1, if(!xv[i])R zero;); \
172 R one; \
173 }
174
175 #if SY_64
176 #define IFB3 \
177 {if(zu<zv){I c=zv-AV(z); RZ(z=ext(0,z)); zv=c+AV(z); zu=AV(z)+AN(z)-SZI;} \
178 if(yv[0])*zv++= m; \
179 if(yv[1])*zv++=1+m; \
180 if(yv[2])*zv++=2+m; \
181 if(yv[3])*zv++=3+m; \
182 if(yv[4])*zv++=4+m; \
183 if(yv[5])*zv++=5+m; \
184 if(yv[6])*zv++=6+m; \
185 if(yv[7])*zv++=7+m; \
186 }
187 #else
188 #define IFB3 \
189 {if(zu<zv){I c=zv-AV(z); RZ(z=ext(0,z)); zv=c+AV(z); zu=AV(z)+AN(z)-SZI;} \
190 switch(y){ \
191 case B0001: *zv++=3+m; break; \
192 case B0010: *zv++=2+m; break; \
193 case B0011: *zv++=2+m; *zv++=3+m; break; \
194 case B0100: *zv++=1+m; break; \
195 case B0101: *zv++=1+m; *zv++=3+m; break; \
196 case B0110: *zv++=1+m; *zv++=2+m; break; \
197 case B0111: *zv++=1+m; *zv++=2+m; *zv++=3+m; break; \
198 case B1000: *zv++=m; break; \
199 case B1001: *zv++=m; *zv++=3+m; break; \
200 case B1010: *zv++=m; *zv++=2+m; break; \
201 case B1011: *zv++=m; *zv++=2+m; *zv++=3+m; break; \
202 case B1100: *zv++=m; *zv++=1+m; break; \
203 case B1101: *zv++=m; *zv++=1+m; *zv++=3+m; break; \
204 case B1110: *zv++=m; *zv++=1+m; *zv++=2+m; break; \
205 case B1111: *zv++=m; *zv++=1+m; *zv++=2+m; *zv++=3+m; break; \
206 }}
207 #endif
208
209 #define IFBB(f,T0,T1,F) \
210 static F2(f){A z;B*xv,*yv;I an,*av,m=0,n,q,r,wn,*wv,x,y,*zu,*zv; \
211 an=AN(a); av=AV(a); \
212 wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \
213 q=n/SZI; r=n%SZI; \
214 xv=(B*)&x; yv=(B*)&y; \
215 RZ(z=exta(INT,1L,1L,MAX(22,n/SZI))); zv=AV(z); zu=zv+AN(z)-SZI; \
216 if (!AR(a)){ASSIGNX(av); DO(q, if(y=F(x, *wv++))IFB3; m+=SZI;); y=F(x, *wv);} \
217 else if(!AR(w)){ASSIGNX(wv); DO(q, if(y=F(*av++,x ))IFB3; m+=SZI;); y=F(*av,x );} \
218 else { DO(q, if(y=F(*av++,*wv++))IFB3; m+=SZI;); y=F(*av,*wv);} \
219 if(r&&y){DO(SZI-r, yv[r+i]=0;); IFB3;}; \
220 AN(z)=*AS(z)=zv-AV(z); R z; \
221 }
222
223 INDB( i0eqBB,B,B,NE ) INDF( i0eqBI,B,I,ANE ) INDF( i0eqBD,B,D,TNEXD) /* = */
224 INDF( i0eqIB,I,B,ANE ) INDF( i0eqII,I,I,ANE ) INDF( i0eqID,I,D,TNEXD)
225 INDF( i0eqDB,D,B,TNEDX) INDF( i0eqDI,D,I,TNEDX) INDF( i0eqDD,D,D,TNE )
226
227 INDB( i1eqBB,B,B,EQ ) INDF( i1eqBI,B,I,AEQ ) INDF( i1eqBD,B,D,TEQXD)
228 INDF( i1eqIB,I,B,AEQ ) INDF( i1eqII,I,I,AEQ ) INDF( i1eqID,I,D,TEQXD)
229 INDF( i1eqDB,D,B,TEQDX) INDF( i1eqDI,D,I,TEQDX) INDF( i1eqDD,D,D,TEQ )
230
231 JNDB( j0eqBB,B,B,NE ) JNDF( j0eqBI,B,I,ANE ) JNDF( j0eqBD,B,D,TNEXD)
232 JNDF( j0eqIB,I,B,ANE ) JNDF( j0eqII,I,I,ANE ) JNDF( j0eqID,I,D,TNEXD)
233 JNDF( j0eqDB,D,B,TNEDX) JNDF( j0eqDI,D,I,TNEDX) JNDF( j0eqDD,D,D,TNE )
234
235 JNDB( j1eqBB,B,B,EQ ) JNDF( j1eqBI,B,I,AEQ ) JNDF( j1eqBD,B,D,TEQXD)
236 JNDF( j1eqIB,I,B,AEQ ) JNDF( j1eqII,I,I,AEQ ) JNDF( j1eqID,I,D,TEQXD)
237 JNDF( j1eqDB,D,B,TEQDX) JNDF( j1eqDI,D,I,TEQDX) JNDF( j1eqDD,D,D,TEQ )
238
239 SUMB(sumeqBB,B,B,EQ ) SUMF(sumeqBI,B,I,AEQ ) SUMF(sumeqBD,B,D,TEQXD)
240 SUMF(sumeqIB,I,B,AEQ ) SUMF(sumeqII,I,I,AEQ ) SUMF(sumeqID,I,D,TEQXD)
241 SUMF(sumeqDB,D,B,TEQDX) SUMF(sumeqDI,D,I,TEQDX) SUMF(sumeqDD,D,D,TEQ )
242
243 ANYB(anyeqBB,B,B,EQ ) ANYF(anyeqBI,B,I,AEQ ) ANYF(anyeqBD,B,D,TEQXD)
244 ANYF(anyeqIB,I,B,AEQ ) ANYF(anyeqII,I,I,AEQ ) ANYF(anyeqID,I,D,TEQXD)
245 ANYF(anyeqDB,D,B,TEQDX) ANYF(anyeqDI,D,I,TEQDX) ANYF(anyeqDD,D,D,TEQ )
246
247 ALLB(alleqBB,B,B,EQ ) ALLF(alleqBI,B,I,AEQ ) ALLF(alleqBD,B,D,TEQXD)
248 ALLF(alleqIB,I,B,AEQ ) ALLF(alleqII,I,I,AEQ ) ALLF(alleqID,I,D,TEQXD)
249 ALLF(alleqDB,D,B,TEQDX) ALLF(alleqDI,D,I,TEQDX) ALLF(alleqDD,D,D,TEQ )
250
251 IFBB(ifbeqBB,B,B,EQ ) IFBF(ifbeqBI,B,I,AEQ ) IFBF(ifbeqBD,B,D,TEQXD)
252 IFBF(ifbeqIB,I,B,AEQ ) IFBF(ifbeqII,I,I,AEQ ) IFBF(ifbeqID,I,D,TEQXD)
253 IFBF(ifbeqDB,D,B,TEQDX) IFBF(ifbeqDI,D,I,TEQDX) IFBF(ifbeqDD,D,D,TEQ )
254
255 INDB( i0neBB,B,B,EQ ) INDF( i0neBI,B,I,AEQ ) INDF( i0neBD,B,D,TEQXD) /* ~: */
256 INDF( i0neIB,I,B,AEQ ) INDF( i0neII,I,I,AEQ ) INDF( i0neID,I,D,TEQXD)
257 INDF( i0neDB,D,B,TEQDX) INDF( i0neDI,D,I,TEQDX) INDF( i0neDD,D,D,TEQ )
258
259 INDB( i1neBB,B,B,NE ) INDF( i1neBI,B,I,ANE ) INDF( i1neBD,B,D,TNEXD)
260 INDF( i1neIB,I,B,ANE ) INDF( i1neII,I,I,ANE ) INDF( i1neID,I,D,TNEXD)
261 INDF( i1neDB,D,B,TNEDX) INDF( i1neDI,D,I,TNEDX) INDF( i1neDD,D,D,TNE )
262
263 JNDB( j0neBB,B,B,EQ ) JNDF( j0neBI,B,I,AEQ ) JNDF( j0neBD,B,D,TEQXD)
264 JNDF( j0neIB,I,B,AEQ ) JNDF( j0neII,I,I,AEQ ) JNDF( j0neID,I,D,TEQXD)
265 JNDF( j0neDB,D,B,TEQDX) JNDF( j0neDI,D,I,TEQDX) JNDF( j0neDD,D,D,TEQ )
266
267 JNDB( j1neBB,B,B,NE ) JNDF( j1neBI,B,I,ANE ) JNDF( j1neBD,B,D,TNEXD)
268 JNDF( j1neIB,I,B,ANE ) JNDF( j1neII,I,I,ANE ) JNDF( j1neID,I,D,TNEXD)
269 JNDF( j1neDB,D,B,TNEDX) JNDF( j1neDI,D,I,TNEDX) JNDF( j1neDD,D,D,TNE )
270
271 SUMB(sumneBB,B,B,NE ) SUMF(sumneBI,B,I,ANE ) SUMF(sumneBD,B,D,TNEXD)
272 SUMF(sumneIB,I,B,ANE ) SUMF(sumneII,I,I,ANE ) SUMF(sumneID,I,D,TNEXD)
273 SUMF(sumneDB,D,B,TNEDX) SUMF(sumneDI,D,I,TNEDX) SUMF(sumneDD,D,D,TNE )
274
275 ANYB(anyneBB,B,B,NE ) ANYF(anyneBI,B,I,ANE ) ANYF(anyneBD,B,D,TNEXD)
276 ANYF(anyneIB,I,B,ANE ) ANYF(anyneII,I,I,ANE ) ANYF(anyneID,I,D,TNEXD)
277 ANYF(anyneDB,D,B,TNEDX) ANYF(anyneDI,D,I,TNEDX) ANYF(anyneDD,D,D,TNE )
278
279 ALLB(allneBB,B,B,NE ) ALLF(allneBI,B,I,ANE ) ALLF(allneBD,B,D,TNEXD)
280 ALLF(allneIB,I,B,ANE ) ALLF(allneII,I,I,ANE ) ALLF(allneID,I,D,TNEXD)
281 ALLF(allneDB,D,B,TNEDX) ALLF(allneDI,D,I,TNEDX) ALLF(allneDD,D,D,TNE )
282
283 IFBB(ifbneBB,B,B,NE ) IFBF(ifbneBI,B,I,ANE ) IFBF(ifbneBD,B,D,TNEXD)
284 IFBF(ifbneIB,I,B,ANE ) IFBF(ifbneII,I,I,ANE ) IFBF(ifbneID,I,D,TNEXD)
285 IFBF(ifbneDB,D,B,TNEDX) IFBF(ifbneDI,D,I,TNEDX) IFBF(ifbneDD,D,D,TNE )
286
287 INDB( i0ltBB,B,B,GE ) INDF( i0ltBI,B,I,AGE ) INDF( i0ltBD,B,D,TGEXD) /* < */
288 INDF( i0ltIB,I,B,AGE ) INDF( i0ltII,I,I,AGE ) INDF( i0ltID,I,D,TGEXD)
289 INDF( i0ltDB,D,B,TGEDX) INDF( i0ltDI,D,I,TGEDX) INDF( i0ltDD,D,D,TGE )
290
291 INDB( i1ltBB,B,B,LT ) INDF( i1ltBI,B,I,ALT ) INDF( i1ltBD,B,D,TLTXD)
292 INDF( i1ltIB,I,B,ALT ) INDF( i1ltII,I,I,ALT ) INDF( i1ltID,I,D,TLTXD)
293 INDF( i1ltDB,D,B,TLTDX) INDF( i1ltDI,D,I,TLTDX) INDF( i1ltDD,D,D,TLT )
294
295 JNDB( j0ltBB,B,B,GE ) JNDF( j0ltBI,B,I,AGE ) JNDF( j0ltBD,B,D,TGEXD)
296 JNDF( j0ltIB,I,B,AGE ) JNDF( j0ltII,I,I,AGE ) JNDF( j0ltID,I,D,TGEXD)
297 JNDF( j0ltDB,D,B,TGEDX) JNDF( j0ltDI,D,I,TGEDX) JNDF( j0ltDD,D,D,TGE )
298
299 JNDB( j1ltBB,B,B,LT ) JNDF( j1ltBI,B,I,ALT ) JNDF( j1ltBD,B,D,TLTXD)
300 JNDF( j1ltIB,I,B,ALT ) JNDF( j1ltII,I,I,ALT ) JNDF( j1ltID,I,D,TLTXD)
301 JNDF( j1ltDB,D,B,TLTDX) JNDF( j1ltDI,D,I,TLTDX) JNDF( j1ltDD,D,D,TLT )
302
303 SUMB(sumltBB,B,B,LT ) SUMF(sumltBI,B,I,ALT ) SUMF(sumltBD,B,D,TLTXD)
304 SUMF(sumltIB,I,B,ALT ) SUMF(sumltII,I,I,ALT ) SUMF(sumltID,I,D,TLTXD)
305 SUMF(sumltDB,D,B,TLTDX) SUMF(sumltDI,D,I,TLTDX) SUMF(sumltDD,D,D,TLT )
306
307 ANYB(anyltBB,B,B,LT ) ANYF(anyltBI,B,I,ALT ) ANYF(anyltBD,B,D,TLTXD)
308 ANYF(anyltIB,I,B,ALT ) ANYF(anyltII,I,I,ALT ) ANYF(anyltID,I,D,TLTXD)
309 ANYF(anyltDB,D,B,TLTDX) ANYF(anyltDI,D,I,TLTDX) ANYF(anyltDD,D,D,TLT )
310
311 ALLB(allltBB,B,B,LT ) ALLF(allltBI,B,I,ALT ) ALLF(allltBD,B,D,TLTXD)
312 ALLF(allltIB,I,B,ALT ) ALLF(allltII,I,I,ALT ) ALLF(allltID,I,D,TLTXD)
313 ALLF(allltDB,D,B,TLTDX) ALLF(allltDI,D,I,TLTDX) ALLF(allltDD,D,D,TLT )
314
315 IFBB(ifbltBB,B,B,LT ) IFBF(ifbltBI,B,I,ALT ) IFBF(ifbltBD,B,D,TLTXD)
316 IFBF(ifbltIB,I,B,ALT ) IFBF(ifbltII,I,I,ALT ) IFBF(ifbltID,I,D,TLTXD)
317 IFBF(ifbltDB,D,B,TLTDX) IFBF(ifbltDI,D,I,TLTDX) IFBF(ifbltDD,D,D,TLT )
318
319 INDB( i0leBB,B,B,GT ) INDF( i0leBI,B,I,AGT ) INDF( i0leBD,B,D,TGTXD) /* <: */
320 INDF( i0leIB,I,B,AGT ) INDF( i0leII,I,I,AGT ) INDF( i0leID,I,D,TGTXD)
321 INDF( i0leDB,D,B,TGTDX) INDF( i0leDI,D,I,TGTDX) INDF( i0leDD,D,D,TGT )
322
323 INDB( i1leBB,B,B,LE ) INDF( i1leBI,B,I,ALE ) INDF( i1leBD,B,D,TLEXD)
324 INDF( i1leIB,I,B,ALE ) INDF( i1leII,I,I,ALE ) INDF( i1leID,I,D,TLEXD)
325 INDF( i1leDB,D,B,TLEDX) INDF( i1leDI,D,I,TLEDX) INDF( i1leDD,D,D,TLE )
326
327 JNDB( j0leBB,B,B,GT ) JNDF( j0leBI,B,I,AGT ) JNDF( j0leBD,B,D,TGTXD)
328 JNDF( j0leIB,I,B,AGT ) JNDF( j0leII,I,I,AGT ) JNDF( j0leID,I,D,TGTXD)
329 JNDF( j0leDB,D,B,TGTDX) JNDF( j0leDI,D,I,TGTDX) JNDF( j0leDD,D,D,TGT )
330
331 JNDB( j1leBB,B,B,LE ) JNDF( j1leBI,B,I,ALE ) JNDF( j1leBD,B,D,TLEXD)
332 JNDF( j1leIB,I,B,ALE ) JNDF( j1leII,I,I,ALE ) JNDF( j1leID,I,D,TLEXD)
333 JNDF( j1leDB,D,B,TLEDX) JNDF( j1leDI,D,I,TLEDX) JNDF( j1leDD,D,D,TLE )
334
335 SUMB(sumleBB,B,B,LE ) SUMF(sumleBI,B,I,ALE ) SUMF(sumleBD,B,D,TLEXD)
336 SUMF(sumleIB,I,B,ALE ) SUMF(sumleII,I,I,ALE ) SUMF(sumleID,I,D,TLEXD)
337 SUMF(sumleDB,D,B,TLEDX) SUMF(sumleDI,D,I,TLEDX) SUMF(sumleDD,D,D,TLE )
338
339 ANYB(anyleBB,B,B,LE ) ANYF(anyleBI,B,I,ALE ) ANYF(anyleBD,B,D,TLEXD)
340 ANYF(anyleIB,I,B,ALE ) ANYF(anyleII,I,I,ALE ) ANYF(anyleID,I,D,TLEXD)
341 ANYF(anyleDB,D,B,TLEDX) ANYF(anyleDI,D,I,TLEDX) ANYF(anyleDD,D,D,TLE )
342
343 ALLB(allleBB,B,B,LE ) ALLF(allleBI,B,I,ALE ) ALLF(allleBD,B,D,TLEXD)
344 ALLF(allleIB,I,B,ALE ) ALLF(allleII,I,I,ALE ) ALLF(allleID,I,D,TLEXD)
345 ALLF(allleDB,D,B,TLEDX) ALLF(allleDI,D,I,TLEDX) ALLF(allleDD,D,D,TLE )
346
347 IFBB(ifbleBB,B,B,LE ) IFBF(ifbleBI,B,I,ALE ) IFBF(ifbleBD,B,D,TLEXD)
348 IFBF(ifbleIB,I,B,ALE ) IFBF(ifbleII,I,I,ALE ) IFBF(ifbleID,I,D,TLEXD)
349 IFBF(ifbleDB,D,B,TLEDX) IFBF(ifbleDI,D,I,TLEDX) IFBF(ifbleDD,D,D,TLE )
350
351 INDB( i0geBB,B,B,LT ) INDF( i0geBI,B,I,ALT ) INDF( i0geBD,B,D,TLTXD) /* >: */
352 INDF( i0geIB,I,B,ALT ) INDF( i0geII,I,I,ALT ) INDF( i0geID,I,D,TLTXD)
353 INDF( i0geDB,D,B,TLTDX) INDF( i0geDI,D,I,TLTDX) INDF( i0geDD,D,D,TLT )
354
355 INDB( i1geBB,B,B,GE ) INDF( i1geBI,B,I,AGE ) INDF( i1geBD,B,D,TGEXD)
356 INDF( i1geIB,I,B,AGE ) INDF( i1geII,I,I,AGE ) INDF( i1geID,I,D,TGEXD)
357 INDF( i1geDB,D,B,TGEDX) INDF( i1geDI,D,I,TGEDX) INDF( i1geDD,D,D,TGE )
358
359 JNDB( j0geBB,B,B,LT ) JNDF( j0geBI,B,I,ALT ) JNDF( j0geBD,B,D,TLTXD)
360 JNDF( j0geIB,I,B,ALT ) JNDF( j0geII,I,I,ALT ) JNDF( j0geID,I,D,TLTXD)
361 JNDF( j0geDB,D,B,TLTDX) JNDF( j0geDI,D,I,TLTDX) JNDF( j0geDD,D,D,TLT )
362
363 JNDB( j1geBB,B,B,GE ) JNDF( j1geBI,B,I,AGE ) JNDF( j1geBD,B,D,TGEXD)
364 JNDF( j1geIB,I,B,AGE ) JNDF( j1geII,I,I,AGE ) JNDF( j1geID,I,D,TGEXD)
365 JNDF( j1geDB,D,B,TGEDX) JNDF( j1geDI,D,I,TGEDX) JNDF( j1geDD,D,D,TGE )
366
367 SUMB(sumgeBB,B,B,GE ) SUMF(sumgeBI,B,I,AGE ) SUMF(sumgeBD,B,D,TGEXD)
368 SUMF(sumgeIB,I,B,AGE ) SUMF(sumgeII,I,I,AGE ) SUMF(sumgeID,I,D,TGEXD)
369 SUMF(sumgeDB,D,B,TGEDX) SUMF(sumgeDI,D,I,TGEDX) SUMF(sumgeDD,D,D,TGE )
370
371 ANYB(anygeBB,B,B,GE ) ANYF(anygeBI,B,I,AGE ) ANYF(anygeBD,B,D,TGEXD)
372 ANYF(anygeIB,I,B,AGE ) ANYF(anygeII,I,I,AGE ) ANYF(anygeID,I,D,TGEXD)
373 ANYF(anygeDB,D,B,TGEDX) ANYF(anygeDI,D,I,TGEDX) ANYF(anygeDD,D,D,TGE )
374
375 ALLB(allgeBB,B,B,GE ) ALLF(allgeBI,B,I,AGE ) ALLF(allgeBD,B,D,TGEXD)
376 ALLF(allgeIB,I,B,AGE ) ALLF(allgeII,I,I,AGE ) ALLF(allgeID,I,D,TGEXD)
377 ALLF(allgeDB,D,B,TGEDX) ALLF(allgeDI,D,I,TGEDX) ALLF(allgeDD,D,D,TGE )
378
379 IFBB(ifbgeBB,B,B,GE ) IFBF(ifbgeBI,B,I,AGE ) IFBF(ifbgeBD,B,D,TGEXD)
380 IFBF(ifbgeIB,I,B,AGE ) IFBF(ifbgeII,I,I,AGE ) IFBF(ifbgeID,I,D,TGEXD)
381 IFBF(ifbgeDB,D,B,TGEDX) IFBF(ifbgeDI,D,I,TGEDX) IFBF(ifbgeDD,D,D,TGE )
382
383 INDB( i0gtBB,B,B,LE ) INDF( i0gtBI,B,I,ALE ) INDF( i0gtBD,B,D,TLEXD) /* > */
384 INDF( i0gtIB,I,B,ALE ) INDF( i0gtII,I,I,ALE ) INDF( i0gtID,I,D,TLEXD)
385 INDF( i0gtDB,D,B,TLEDX) INDF( i0gtDI,D,I,TLEDX) INDF( i0gtDD,D,D,TLE )
386
387 INDB( i1gtBB,B,B,GT ) INDF( i1gtBI,B,I,AGT ) INDF( i1gtBD,B,D,TGTXD)
388 INDF( i1gtIB,I,B,AGT ) INDF( i1gtII,I,I,AGT ) INDF( i1gtID,I,D,TGTXD)
389 INDF( i1gtDB,D,B,TGTDX) INDF( i1gtDI,D,I,TGTDX) INDF( i1gtDD,D,D,TGT )
390
391 JNDB( j0gtBB,B,B,LE ) JNDF( j0gtBI,B,I,ALE ) JNDF( j0gtBD,B,D,TLEXD)
392 JNDF( j0gtIB,I,B,ALE ) JNDF( j0gtII,I,I,ALE ) JNDF( j0gtID,I,D,TLEXD)
393 JNDF( j0gtDB,D,B,TLEDX) JNDF( j0gtDI,D,I,TLEDX) JNDF( j0gtDD,D,D,TLE )
394
395 JNDB( j1gtBB,B,B,GT ) JNDF( j1gtBI,B,I,AGT ) JNDF( j1gtBD,B,D,TGTXD)
396 JNDF( j1gtIB,I,B,AGT ) JNDF( j1gtII,I,I,AGT ) JNDF( j1gtID,I,D,TGTXD)
397 JNDF( j1gtDB,D,B,TGTDX) JNDF( j1gtDI,D,I,TGTDX) JNDF( j1gtDD,D,D,TGT )
398
399 SUMB(sumgtBB,B,B,GT ) SUMF(sumgtBI,B,I,AGT ) SUMF(sumgtBD,B,D,TGTXD)
400 SUMF(sumgtIB,I,B,AGT ) SUMF(sumgtII,I,I,AGT ) SUMF(sumgtID,I,D,TGTXD)
401 SUMF(sumgtDB,D,B,TGTDX) SUMF(sumgtDI,D,I,TGTDX) SUMF(sumgtDD,D,D,TGT )
402
403 ALLB(allgtBB,B,B,GT ) ALLF(allgtBI,B,I,AGT ) ALLF(allgtBD,B,D,TGTXD)
404 ALLF(allgtIB,I,B,AGT ) ALLF(allgtII,I,I,AGT ) ALLF(allgtID,I,D,TGTXD)
405 ALLF(allgtDB,D,B,TGTDX) ALLF(allgtDI,D,I,TGTDX) ALLF(allgtDD,D,D,TGT )
406
407 ANYB(anygtBB,B,B,GT ) ANYF(anygtBI,B,I,AGT ) ANYF(anygtBD,B,D,TGTXD)
408 ANYF(anygtIB,I,B,AGT ) ANYF(anygtII,I,I,AGT ) ANYF(anygtID,I,D,TGTXD)
409 ANYF(anygtDB,D,B,TGTDX) ANYF(anygtDI,D,I,TGTDX) ANYF(anygtDD,D,D,TGT )
410
411 IFBB(ifbgtBB,B,B,GT ) IFBF(ifbgtBI,B,I,AGT ) IFBF(ifbgtBD,B,D,TGTXD)
412 IFBF(ifbgtIB,I,B,AGT ) IFBF(ifbgtII,I,I,AGT ) IFBF(ifbgtID,I,D,TGTXD)
413 IFBF(ifbgtDB,D,B,TGTDX) IFBF(ifbgtDI,D,I,TGTDX) IFBF(ifbgtDD,D,D,TGT )
414
415
416 static AF atcompxy[]={ /* table for (B01,INT,FL) vs. (B01,INT,FL) */
417 i0eqBB, i0eqBI, i0eqBD, i0eqIB, i0eqII, i0eqID, i0eqDB, i0eqDI, i0eqDD, /* 0 */
418 i0neBB, i0neBI, i0neBD, i0neIB, i0neII, i0neID, i0neDB, i0neDI, i0neDD,
419 i0ltBB, i0ltBI, i0ltBD, i0ltIB, i0ltII, i0ltID, i0ltDB, i0ltDI, i0ltDD,
420 i0leBB, i0leBI, i0leBD, i0leIB, i0leII, i0leID, i0leDB, i0leDI, i0leDD,
421 i0geBB, i0geBI, i0geBD, i0geIB, i0geII, i0geID, i0geDB, i0geDI, i0geDD,
422 i0gtBB, i0gtBI, i0gtBD, i0gtIB, i0gtII, i0gtID, i0gtDB, i0gtDI, i0gtDD,
423 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
424 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
425
426 i1eqBB, i1eqBI, i1eqBD, i1eqIB, i1eqII, i1eqID, i1eqDB, i1eqDI, i1eqDD, /* 1 */
427 i1neBB, i1neBI, i1neBD, i1neIB, i1neII, i1neID, i1neDB, i1neDI, i1neDD,
428 i1ltBB, i1ltBI, i1ltBD, i1ltIB, i1ltII, i1ltID, i1ltDB, i1ltDI, i1ltDD,
429 i1leBB, i1leBI, i1leBD, i1leIB, i1leII, i1leID, i1leDB, i1leDI, i1leDD,
430 i1geBB, i1geBI, i1geBD, i1geIB, i1geII, i1geID, i1geDB, i1geDI, i1geDD,
431 i1gtBB, i1gtBI, i1gtBD, i1gtIB, i1gtII, i1gtID, i1gtDB, i1gtDI, i1gtDD,
432 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
433 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
434
435 j0eqBB, j0eqBI, j0eqBD, j0eqIB, j0eqII, j0eqID, j0eqDB, j0eqDI, j0eqDD, /* 2 */
436 j0neBB, j0neBI, j0neBD, j0neIB, j0neII, j0neID, j0neDB, j0neDI, j0neDD,
437 j0ltBB, j0ltBI, j0ltBD, j0ltIB, j0ltII, j0ltID, j0ltDB, j0ltDI, j0ltDD,
438 j0leBB, j0leBI, j0leBD, j0leIB, j0leII, j0leID, j0leDB, j0leDI, j0leDD,
439 j0geBB, j0geBI, j0geBD, j0geIB, j0geII, j0geID, j0geDB, j0geDI, j0geDD,
440 j0gtBB, j0gtBI, j0gtBD, j0gtIB, j0gtII, j0gtID, j0gtDB, j0gtDI, j0gtDD,
441 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
442 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
443
444 j1eqBB, j1eqBI, j1eqBD, j1eqIB, j1eqII, j1eqID, j1eqDB, j1eqDI, j1eqDD, /* 3 */
445 j1neBB, j1neBI, j1neBD, j1neIB, j1neII, j1neID, j1neDB, j1neDI, j1neDD,
446 j1ltBB, j1ltBI, j1ltBD, j1ltIB, j1ltII, j1ltID, j1ltDB, j1ltDI, j1ltDD,
447 j1leBB, j1leBI, j1leBD, j1leIB, j1leII, j1leID, j1leDB, j1leDI, j1leDD,
448 j1geBB, j1geBI, j1geBD, j1geIB, j1geII, j1geID, j1geDB, j1geDI, j1geDD,
449 j1gtBB, j1gtBI, j1gtBD, j1gtIB, j1gtII, j1gtID, j1gtDB, j1gtDI, j1gtDD,
450 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
451 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
452
453 sumeqBB,sumeqBI,sumeqBD, sumeqIB,sumeqII,sumeqID, sumeqDB,sumeqDI,sumeqDD, /* 4 */
454 sumneBB,sumneBI,sumneBD, sumneIB,sumneII,sumneID, sumneDB,sumneDI,sumneDD,
455 sumltBB,sumltBI,sumltBD, sumltIB,sumltII,sumltID, sumltDB,sumltDI,sumltDD,
456 sumleBB,sumleBI,sumleBD, sumleIB,sumleII,sumleID, sumleDB,sumleDI,sumleDD,
457 sumgeBB,sumgeBI,sumgeBD, sumgeIB,sumgeII,sumgeID, sumgeDB,sumgeDI,sumgeDD,
458 sumgtBB,sumgtBI,sumgtBD, sumgtIB,sumgtII,sumgtID, sumgtDB,sumgtDI,sumgtDD,
459 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
460 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
461
462 anyeqBB,anyeqBI,anyeqBD, anyeqIB,anyeqII,anyeqID, anyeqDB,anyeqDI,anyeqDD, /* 5 */
463 anyneBB,anyneBI,anyneBD, anyneIB,anyneII,anyneID, anyneDB,anyneDI,anyneDD,
464 anyltBB,anyltBI,anyltBD, anyltIB,anyltII,anyltID, anyltDB,anyltDI,anyltDD,
465 anyleBB,anyleBI,anyleBD, anyleIB,anyleII,anyleID, anyleDB,anyleDI,anyleDD,
466 anygeBB,anygeBI,anygeBD, anygeIB,anygeII,anygeID, anygeDB,anygeDI,anygeDD,
467 anygtBB,anygtBI,anygtBD, anygtIB,anygtII,anygtID, anygtDB,anygtDI,anygtDD,
468 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
469 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
470
471 alleqBB,alleqBI,alleqBD, alleqIB,alleqII,alleqID, alleqDB,alleqDI,alleqDD, /* 6 */
472 allneBB,allneBI,allneBD, allneIB,allneII,allneID, allneDB,allneDI,allneDD,
473 allltBB,allltBI,allltBD, allltIB,allltII,allltID, allltDB,allltDI,allltDD,
474 allleBB,allleBI,allleBD, allleIB,allleII,allleID, allleDB,allleDI,allleDD,
475 allgeBB,allgeBI,allgeBD, allgeIB,allgeII,allgeID, allgeDB,allgeDI,allgeDD,
476 allgtBB,allgtBI,allgtBD, allgtIB,allgtII,allgtID, allgtDB,allgtDI,allgtDD,
477 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
478 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
479
480 ifbeqBB,ifbeqBI,ifbeqBD, ifbeqIB,ifbeqII,ifbeqID, ifbeqDB,ifbeqDI,ifbeqDD, /* 7 */
481 ifbneBB,ifbneBI,ifbneBD, ifbneIB,ifbneII,ifbneID, ifbneDB,ifbneDI,ifbneDD,
482 ifbltBB,ifbltBI,ifbltBD, ifbltIB,ifbltII,ifbltID, ifbltDB,ifbltDI,ifbltDD,
483 ifbleBB,ifbleBI,ifbleBD, ifbleIB,ifbleII,ifbleID, ifbleDB,ifbleDI,ifbleDD,
484 ifbgeBB,ifbgeBI,ifbgeBD, ifbgeIB,ifbgeII,ifbgeID, ifbgeDB,ifbgeDI,ifbgeDD,
485 ifbgtBB,ifbgtBI,ifbgtBD, ifbgtIB,ifbgtII,ifbgtID, ifbgtDB,ifbgtDI,ifbgtDD,
486 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
487 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
488 };
489
490 INDF( i0eqC,C,C,ANE) INDF( i0neC,C,C,AEQ)
491 INDF( i1eqC,C,C,AEQ) INDF( i1neC,C,C,ANE)
492 JNDF( j0eqC,C,C,ANE) JNDF( j0neC,C,C,AEQ)
493 JNDF( j1eqC,C,C,AEQ) JNDF( j1neC,C,C,ANE)
494 SUMF(sumeqC,C,C,AEQ) SUMF(sumneC,C,C,ANE)
495 ALLF(alleqC,C,C,AEQ) ALLF(allneC,C,C,ANE)
496 ANYF(anyeqC,C,C,AEQ) ANYF(anyneC,C,C,ANE)
497 IFBF(ifbeqC,C,C,AEQ) IFBF(ifbneC,C,C,ANE)
498
499 static AF atcompC[]={ /* table for LIT vs. LIT */
500 i0eqC, i0neC, 0L,0L,0L,0L,0L,0L,
501 i1eqC, i1neC, 0L,0L,0L,0L,0L,0L,
502 j0eqC, j0neC, 0L,0L,0L,0L,0L,0L,
503 j1eqC, j1neC, 0L,0L,0L,0L,0L,0L,
504 sumeqC, sumneC, 0L,0L,0L,0L,0L,0L,
505 anyeqC, anyneC, 0L,0L,0L,0L,0L,0L,
506 alleqC, allneC, 0L,0L,0L,0L,0L,0L,
507 ifbeqC, ifbneC, 0L,0L,0L,0L,0L,0L,
508 };
509
510 INDF( i0eqS,SB,SB,ANE) INDF( i0neS,SB,SB,AEQ)
511 INDF( i1eqS,SB,SB,AEQ) INDF( i1neS,SB,SB,ANE)
512 JNDF( j0eqS,SB,SB,ANE) JNDF( j0neS,SB,SB,AEQ)
513 JNDF( j1eqS,SB,SB,AEQ) JNDF( j1neS,SB,SB,ANE)
514 SUMF(sumeqS,SB,SB,AEQ) SUMF(sumneS,SB,SB,ANE)
515 ALLF(alleqS,SB,SB,AEQ) ALLF(allneS,SB,SB,ANE)
516 ANYF(anyeqS,SB,SB,AEQ) ANYF(anyneS,SB,SB,ANE)
517 IFBF(ifbeqS,SB,SB,AEQ) IFBF(ifbneS,SB,SB,ANE)
518
519 INDF( i0ltS,SB,SB,SBGE) INDF( i0leS,SB,SB,SBGT) INDF( i0geS,SB,SB,SBLT) INDF( i0gtS,SB,SB,SBLE)
520 INDF( i1ltS,SB,SB,SBLT) INDF( i1leS,SB,SB,SBLE) INDF( i1geS,SB,SB,SBGE) INDF( i1gtS,SB,SB,SBGT)
521 JNDF( j0ltS,SB,SB,SBGE) JNDF( j0leS,SB,SB,SBGT) JNDF( j0geS,SB,SB,SBLT) JNDF( j0gtS,SB,SB,SBLE)
522 JNDF( j1ltS,SB,SB,SBLT) JNDF( j1leS,SB,SB,SBLE) JNDF( j1geS,SB,SB,SBGE) JNDF( j1gtS,SB,SB,SBGT)
523 SUMF(sumltS,SB,SB,SBLT) SUMF(sumleS,SB,SB,SBLE) SUMF(sumgeS,SB,SB,SBGE) SUMF(sumgtS,SB,SB,SBGT)
524 ALLF(allltS,SB,SB,SBLT) ALLF(allleS,SB,SB,SBLE) ALLF(allgeS,SB,SB,SBGE) ALLF(allgtS,SB,SB,SBGT)
525 ANYF(anyltS,SB,SB,SBLT) ANYF(anyleS,SB,SB,SBLE) ANYF(anygeS,SB,SB,SBGE) ANYF(anygtS,SB,SB,SBGT)
526 IFBF(ifbltS,SB,SB,SBLT) IFBF(ifbleS,SB,SB,SBLE) IFBF(ifbgeS,SB,SB,SBGE) IFBF(ifbgtS,SB,SB,SBGT)
527
528
529 static AF atcompSB[]={ /* table for SBT vs. SBT */
530 i0eqS, i0neS, i0ltS, i0leS, i0geS, i0gtS, 0L,0L,
531 i1eqS, i1neS, i1ltS, i1leS, i1geS, i1gtS, 0L,0L,
532 j0eqS, j0neS, j0ltS, j0leS, j0geS, j0gtS, 0L,0L,
533 j1eqS, j1neS, j1ltS, j1leS, j1geS, j1gtS, 0L,0L,
534 sumeqS,sumneS,sumltS,sumleS,sumgeS,sumgtS, 0L,0L,
535 anyeqS,anyneS,anyltS,anyleS,anygeS,anygtS, 0L,0L,
536 alleqS,allneS,allltS,allleS,allgeS,allgtS, 0L,0L,
537 ifbeqS,ifbneS,ifbltS,ifbleS,ifbgeS,ifbgtS, 0L,0L,
538 };
539
540
541 static F2( jti0eps){R indexofsub( II0EPS,w,a);}
542 static F2( jti1eps){R indexofsub( II1EPS,w,a);}
543 static F2( jtj0eps){R indexofsub( IJ0EPS,w,a);}
544 static F2( jtj1eps){R indexofsub( IJ1EPS,w,a);}
545 static F2(jtsumeps){R indexofsub(ISUMEPS,w,a);}
546 static F2(jtanyeps){R indexofsub(IANYEPS,w,a);}
547 static F2(jtalleps){R indexofsub(IALLEPS,w,a);}
548 static F2(jtifbeps){R indexofsub(IIFBEPS,w,a);}
549
550 static AF atcompX[]={ /* table for any vs. any */
551 0L,0L,0L,0L,0L,0L, 0L, jti0eps,
552 0L,0L,0L,0L,0L,0L, jti1ebar, jti1eps,
553 0L,0L,0L,0L,0L,0L, 0L, jtj0eps,
554 0L,0L,0L,0L,0L,0L, 0L, jtj1eps,
555 0L,0L,0L,0L,0L,0L, jtsumebar, jtsumeps,
556 0L,0L,0L,0L,0L,0L, jtanyebar, jtanyeps,
557 0L,0L,0L,0L,0L,0L, 0L, jtalleps,
558 0L,0L,0L,0L,0L,0L, jtifbebar, jtifbeps,
559 };
560
561
562 /* f 0 1 2 3 4 5 6 7 */
563 /* m = ~: < <: >: > E. e. */
564 /* 0 f i. 0: 0 1 2 3 4 5 6 7 */
565 /* 1 f i. 1: 8 9 10 11 12 13 14 15 */
566 /* 2 f i: 0: 16 17 18 19 20 21 22 23 */
567 /* 3 f i: 1: 24 25 26 27 28 29 30 31 */
568 /* 4 [: + / f 32 33 34 35 36 37 38 39 */
569 /* 5 [: +./ f 40 41 42 43 44 45 46 47 */
570 /* 6 [: *./ f 48 49 50 51 52 53 54 55 */
571 /* 7 [: I. f 56 57 58 59 60 61 62 63 */
572
573 AF jtatcompf(J jt,A a,A w,A self){AF f;I ar,at,m,wr,wt;
574 RZ(a&&w);
575 at=AT(a); ar=AR(a);
576 wt=AT(w); wr=AR(w);
577 m=VAV(self)->flag%256;
578 if(1<ar||1<wr){if(32<=m&&m<=37||40<=m&&m<=45||48<=m&&m<=53)R(AF)jtfslashatg; RZ(7==m%8);}
579 ASSERT(AN(a)==AN(w)||!ar||!wr||5<m%8,EVLENGTH);
580 f=atcompX[m];
581 if(!f){
582 if(at&B01+INT+FL&&wt&B01+INT+FL)f=atcompxy[9*m+3*(at&B01?0:at&INT?1:2)+(wt&B01?0:wt&INT?1:2)];
583 else if(at&LIT&&wt&LIT) f=atcompC[m];
584 else if(at&SBT&&wt&SBT) f=atcompSB[m];
585 }
586 R f;
587 } /* function table look-up for comp i. 1: and i.&1@:comp etc. */
588