Mercurial > hg > jgplsrc
view 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 |
line wrap: on
line source
/* Copyright 1990-2011, Jsoftware Inc. All rights reserved. */ /* License in license.txt. */ /* */ /* Verbs: Comparatives */ /* */ /* Special code for the following cases: */ /* comp i. 0: i.&0@:comp */ /* comp i. 1: i.&1@:comp */ /* comp i: 0: i:&0@:comp */ /* comp i: 1: i:&1@:comp */ /* [: + / comp + /@:comp */ /* [: +./ comp +./@:comp 1: e. comp */ /* 0: e. comp */ /* [: I. comp I.@:comp */ /* where comp is one of the following: */ /* = ~: < <: >: > E. e. */ #include "j.h" #include "ve.h" #include "vcomp.h" #define INDF(f,T0,T1,F) \ static F2(f){I an,n,wn;T0*av,x;T1*wv,y; \ an=AN(a); av=(T0*)AV(a); \ wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ if (!AR(a)){x=*av; DO(n, y=*wv++; if(F(x,y))R sc(i););} \ else if(!AR(w)){y=*wv; DO(n, x=*av++; if(F(x,y))R sc(i););} \ else { DO(n, x=*av++; y=*wv++; if(F(x,y))R sc(i););} \ R sc(n); \ } #define JNDF(f,T0,T1,F) \ static F2(f){I an,n,wn;T0*av,x;T1*wv,y; \ an=AN(a); av=(T0*)AV(a); \ wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ if (!AR(a)){x=*av; wv+=n; DO(n, y=*--wv; if(F(x,y))R sc(n-1-i););} \ else if(!AR(w)){y=*wv; av+=n; DO(n, x=*--av; if(F(x,y))R sc(n-1-i););} \ else {av+=n; wv+=n; DO(n, x=*--av; y=*--wv; if(F(x,y))R sc(n-1-i););} \ R sc(n); \ } #define SUMF(f,T0,T1,F) \ static F2(f){I an,m=0,n,wn;T0*av,x;T1*wv,y; \ an=AN(a); av=(T0*)AV(a); \ wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ if (!AR(a)){x=*av; DO(n, y=*wv++; if(F(x,y))++m;);} \ else if(!AR(w)){y=*wv; DO(n, x=*av++; if(F(x,y))++m;);} \ else { DO(n, x=*av++; y=*wv++; if(F(x,y))++m;);} \ R sc(m); \ } #define ANYF(f,T0,T1,F) \ static F2(f){I an,n,wn;T0*av,x;T1*wv,y; \ an=AN(a); av=(T0*)AV(a); \ wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ if (!AR(a)){x=*av; DO(n, y=*wv++; if(F(x,y))R one;);} \ else if(!AR(w)){y=*wv; DO(n, x=*av++; if(F(x,y))R one;);} \ else { DO(n, x=*av++; y=*wv++; if(F(x,y))R one;);} \ R zero; \ } #define ALLF(f,T0,T1,F) \ static F2(f){I an,n,wn;T0*av,x;T1*wv,y; \ an=AN(a); av=(T0*)AV(a); \ wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ if (!AR(a)){x=*av; DO(n, y=*wv++; if(!F(x,y))R zero;);} \ else if(!AR(w)){y=*wv; DO(n, x=*av++; if(!F(x,y))R zero;);} \ else { DO(n, x=*av++; y=*wv++; if(!F(x,y))R zero;);} \ R one; \ } #define IFB1 \ {if(zu==zv){I m=zv-AV(z); RZ(z=ext(0,z)); zv=m+AV(z); zu=AN(z)+AV(z);} *zv++=i;} #define IFBF(f,T0,T1,F) \ static F2(f){A z;I an,n,wn,*zu,*zv;T0*av,x;T1*wv,y; \ an=AN(a); av=(T0*)AV(a); \ wn=AN(w); wv=(T1*)AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ RZ(z=exta(INT,1L,1L,MAX(22,n/8))); zv=AV(z); zu=zv+AN(z); \ if (!AR(a)){x=*av; DO(n, y=*wv++; if(F(x,y))IFB1;);} \ else if(!AR(w)){y=*wv; DO(n, x=*av++; if(F(x,y))IFB1;);} \ else { DO(n, x=*av++; y=*wv++; if(F(x,y))IFB1;);} \ AN(z)=*AS(z)=zv-AV(z); R z; \ } /* Now define byte-parallel (4 bytes at a time) versions of above */ #define JNDBR(yy) if(r&&(y=yy))DO(r, if(yv[r-1-i])R sc(n-1-i);); #if SY_64 #define ASSIGNX(v) {x=*v; xv[1]=xv[2]=xv[3]=xv[4]=xv[5]=xv[6]=xv[7]=xv[0];} #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) ); #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))); #else #define ASSIGNX(v) {x=*v; xv[1]=xv[2]=xv[3]=xv[0];} #define INDB3 R sc( i*SZI+(yv[0]?0:yv[1]?1:yv[2]?2:3) ); #define JNDB3 R sc(n-1-(r+i*SZI+(yv[3]?0:yv[2]?1:yv[1]?2:3))); #endif #define INDB(f,T0,T1,F) \ static F2(f){B*xv,*yv;I an,*av,n,q,r,wn,*wv,x,y; \ an=AN(a); av=AV(a); \ wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ q=n/SZI; r=n%SZI; \ xv=(B*)&x; yv=(B*)&y; \ if (!AR(a)){ASSIGNX(av); DO(q, if(y=F(x, *wv++))INDB3;); y=F(x, *wv);} \ else if(!AR(w)){ASSIGNX(wv); DO(q, if(y=F(*av++,x ))INDB3;); y=F(*av,x );} \ else { DO(q, if(y=F(*av++,*wv++))INDB3;); y=F(*av,*wv);} \ if(y)DO(r, if(yv[i])R sc(i+q*SZI);); \ R sc(n); \ } #define JNDB(f,T0,T1,F) \ static F2(f){B*xv,*yv;I an,*av,n,q,r,wn,*wv,x,y; \ an=AN(a); av=AV(a); \ wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ q=n/SZI; r=n%SZI; \ xv=(B*)&x; yv=(B*)&y; \ if (!AR(a)){ASSIGNX(av); wv+=q; JNDBR(F(x, *wv)); DO(q, if(y=F(x, *--wv))JNDB3;);} \ else if(!AR(w)){ASSIGNX(wv); av+=q; JNDBR(F(*av,x )); DO(q, if(y=F(*--av,x ))JNDB3;);} \ else {av+=q; wv+=q; JNDBR(F(*av,*wv)); DO(q, if(y=F(*--av,*--wv))JNDB3;);} \ R sc(n); \ } #define SUMB(f,T0,T1,F) \ static F2(f){B*xv;I an,*av,n,p,q,r,r1,wn,*wv,x,z=0;UC*tu;UI t; \ an=AN(a); av=AV(a); \ wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ p=n/SZI; q=p/255; r=p%255; r1=n%SZI; \ xv=(B*)&x; tu=(UC*)&t; \ if (!AR(a)){ \ ASSIGNX(av); \ DO(q, t=0; DO(255, t+=F(x, *wv++);); DO(SZI,z+=tu[i];);); \ t=0; DO(r, t+=F(x, *wv++);); DO(SZI,z+=tu[i];); x=F(x, *wv); \ }else if(!AR(w)){ \ ASSIGNX(wv); \ DO(q, t=0; DO(255, t+=F(*av++,x );); DO(SZI,z+=tu[i];);); \ t=0; DO(r, t+=F(*av++,x );); DO(SZI,z+=tu[i];); x=F(*av,x ); \ }else{ \ DO(q, t=0; DO(255, t+=F(*av++,*wv++);); DO(SZI,z+=tu[i];);); \ t=0; DO(r, t+=F(*av++,*wv++);); DO(SZI,z+=tu[i];); x=F(*av,*wv); \ } \ DO(r1, z+=xv[i];); \ R sc(z); \ } #define ANYB(f,T0,T1,F) \ static F2(f){B*xv; I an,*av,n,p,r1, wn,*wv,x; \ an=AN(a); av=AV(a); \ wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ p=n/SZI; r1=n%SZI;; \ xv=(B*)&x; \ if (!AR(a)){ASSIGNX(av); DO(p, if( F(x, *wv++))R one; ); x=F(x, *wv);} \ else if(!AR(w)){ASSIGNX(wv); DO(p, if( F(*av++,x ))R one; ); x=F(*av,x );} \ else { DO(p, if( F(*av++,*wv++))R one; ); x=F(*av,*wv);} \ DO(r1, if(xv[i])R one;); \ R zero; \ } #define ALLB(f,T0,T1,F) \ static F2(f){B*xv;C*tv;I an,*av,n,p,r1,t,wn,*wv,x; \ an=AN(a); av=AV(a); \ wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ p=n/SZI; r1=n%SZI;; \ xv=(B*)&x; tv=(C*)&t; DO(SZI, tv[i]=1;); \ if (!AR(a)){ASSIGNX(av); DO(p, if(t!=F(x, *wv++))R zero;); x=F(x, *wv);} \ else if(!AR(w)){ASSIGNX(wv); DO(p, if(t!=F(*av++,x ))R zero;); x=F(*av,x );} \ else { DO(p, if(t!=F(*av++,*wv++))R zero;); x=F(*av,*wv);} \ DO(r1, if(!xv[i])R zero;); \ R one; \ } #if SY_64 #define IFB3 \ {if(zu<zv){I c=zv-AV(z); RZ(z=ext(0,z)); zv=c+AV(z); zu=AV(z)+AN(z)-SZI;} \ if(yv[0])*zv++= m; \ if(yv[1])*zv++=1+m; \ if(yv[2])*zv++=2+m; \ if(yv[3])*zv++=3+m; \ if(yv[4])*zv++=4+m; \ if(yv[5])*zv++=5+m; \ if(yv[6])*zv++=6+m; \ if(yv[7])*zv++=7+m; \ } #else #define IFB3 \ {if(zu<zv){I c=zv-AV(z); RZ(z=ext(0,z)); zv=c+AV(z); zu=AV(z)+AN(z)-SZI;} \ switch(y){ \ case B0001: *zv++=3+m; break; \ case B0010: *zv++=2+m; break; \ case B0011: *zv++=2+m; *zv++=3+m; break; \ case B0100: *zv++=1+m; break; \ case B0101: *zv++=1+m; *zv++=3+m; break; \ case B0110: *zv++=1+m; *zv++=2+m; break; \ case B0111: *zv++=1+m; *zv++=2+m; *zv++=3+m; break; \ case B1000: *zv++=m; break; \ case B1001: *zv++=m; *zv++=3+m; break; \ case B1010: *zv++=m; *zv++=2+m; break; \ case B1011: *zv++=m; *zv++=2+m; *zv++=3+m; break; \ case B1100: *zv++=m; *zv++=1+m; break; \ case B1101: *zv++=m; *zv++=1+m; *zv++=3+m; break; \ case B1110: *zv++=m; *zv++=1+m; *zv++=2+m; break; \ case B1111: *zv++=m; *zv++=1+m; *zv++=2+m; *zv++=3+m; break; \ }} #endif #define IFBB(f,T0,T1,F) \ static F2(f){A z;B*xv,*yv;I an,*av,m=0,n,q,r,wn,*wv,x,y,*zu,*zv; \ an=AN(a); av=AV(a); \ wn=AN(w); wv=AV(w); n=AR(a)&&AR(w)?MAX(an,wn):AR(a)?an:wn; \ q=n/SZI; r=n%SZI; \ xv=(B*)&x; yv=(B*)&y; \ RZ(z=exta(INT,1L,1L,MAX(22,n/SZI))); zv=AV(z); zu=zv+AN(z)-SZI; \ if (!AR(a)){ASSIGNX(av); DO(q, if(y=F(x, *wv++))IFB3; m+=SZI;); y=F(x, *wv);} \ else if(!AR(w)){ASSIGNX(wv); DO(q, if(y=F(*av++,x ))IFB3; m+=SZI;); y=F(*av,x );} \ else { DO(q, if(y=F(*av++,*wv++))IFB3; m+=SZI;); y=F(*av,*wv);} \ if(r&&y){DO(SZI-r, yv[r+i]=0;); IFB3;}; \ AN(z)=*AS(z)=zv-AV(z); R z; \ } INDB( i0eqBB,B,B,NE ) INDF( i0eqBI,B,I,ANE ) INDF( i0eqBD,B,D,TNEXD) /* = */ INDF( i0eqIB,I,B,ANE ) INDF( i0eqII,I,I,ANE ) INDF( i0eqID,I,D,TNEXD) INDF( i0eqDB,D,B,TNEDX) INDF( i0eqDI,D,I,TNEDX) INDF( i0eqDD,D,D,TNE ) INDB( i1eqBB,B,B,EQ ) INDF( i1eqBI,B,I,AEQ ) INDF( i1eqBD,B,D,TEQXD) INDF( i1eqIB,I,B,AEQ ) INDF( i1eqII,I,I,AEQ ) INDF( i1eqID,I,D,TEQXD) INDF( i1eqDB,D,B,TEQDX) INDF( i1eqDI,D,I,TEQDX) INDF( i1eqDD,D,D,TEQ ) JNDB( j0eqBB,B,B,NE ) JNDF( j0eqBI,B,I,ANE ) JNDF( j0eqBD,B,D,TNEXD) JNDF( j0eqIB,I,B,ANE ) JNDF( j0eqII,I,I,ANE ) JNDF( j0eqID,I,D,TNEXD) JNDF( j0eqDB,D,B,TNEDX) JNDF( j0eqDI,D,I,TNEDX) JNDF( j0eqDD,D,D,TNE ) JNDB( j1eqBB,B,B,EQ ) JNDF( j1eqBI,B,I,AEQ ) JNDF( j1eqBD,B,D,TEQXD) JNDF( j1eqIB,I,B,AEQ ) JNDF( j1eqII,I,I,AEQ ) JNDF( j1eqID,I,D,TEQXD) JNDF( j1eqDB,D,B,TEQDX) JNDF( j1eqDI,D,I,TEQDX) JNDF( j1eqDD,D,D,TEQ ) SUMB(sumeqBB,B,B,EQ ) SUMF(sumeqBI,B,I,AEQ ) SUMF(sumeqBD,B,D,TEQXD) SUMF(sumeqIB,I,B,AEQ ) SUMF(sumeqII,I,I,AEQ ) SUMF(sumeqID,I,D,TEQXD) SUMF(sumeqDB,D,B,TEQDX) SUMF(sumeqDI,D,I,TEQDX) SUMF(sumeqDD,D,D,TEQ ) ANYB(anyeqBB,B,B,EQ ) ANYF(anyeqBI,B,I,AEQ ) ANYF(anyeqBD,B,D,TEQXD) ANYF(anyeqIB,I,B,AEQ ) ANYF(anyeqII,I,I,AEQ ) ANYF(anyeqID,I,D,TEQXD) ANYF(anyeqDB,D,B,TEQDX) ANYF(anyeqDI,D,I,TEQDX) ANYF(anyeqDD,D,D,TEQ ) ALLB(alleqBB,B,B,EQ ) ALLF(alleqBI,B,I,AEQ ) ALLF(alleqBD,B,D,TEQXD) ALLF(alleqIB,I,B,AEQ ) ALLF(alleqII,I,I,AEQ ) ALLF(alleqID,I,D,TEQXD) ALLF(alleqDB,D,B,TEQDX) ALLF(alleqDI,D,I,TEQDX) ALLF(alleqDD,D,D,TEQ ) IFBB(ifbeqBB,B,B,EQ ) IFBF(ifbeqBI,B,I,AEQ ) IFBF(ifbeqBD,B,D,TEQXD) IFBF(ifbeqIB,I,B,AEQ ) IFBF(ifbeqII,I,I,AEQ ) IFBF(ifbeqID,I,D,TEQXD) IFBF(ifbeqDB,D,B,TEQDX) IFBF(ifbeqDI,D,I,TEQDX) IFBF(ifbeqDD,D,D,TEQ ) INDB( i0neBB,B,B,EQ ) INDF( i0neBI,B,I,AEQ ) INDF( i0neBD,B,D,TEQXD) /* ~: */ INDF( i0neIB,I,B,AEQ ) INDF( i0neII,I,I,AEQ ) INDF( i0neID,I,D,TEQXD) INDF( i0neDB,D,B,TEQDX) INDF( i0neDI,D,I,TEQDX) INDF( i0neDD,D,D,TEQ ) INDB( i1neBB,B,B,NE ) INDF( i1neBI,B,I,ANE ) INDF( i1neBD,B,D,TNEXD) INDF( i1neIB,I,B,ANE ) INDF( i1neII,I,I,ANE ) INDF( i1neID,I,D,TNEXD) INDF( i1neDB,D,B,TNEDX) INDF( i1neDI,D,I,TNEDX) INDF( i1neDD,D,D,TNE ) JNDB( j0neBB,B,B,EQ ) JNDF( j0neBI,B,I,AEQ ) JNDF( j0neBD,B,D,TEQXD) JNDF( j0neIB,I,B,AEQ ) JNDF( j0neII,I,I,AEQ ) JNDF( j0neID,I,D,TEQXD) JNDF( j0neDB,D,B,TEQDX) JNDF( j0neDI,D,I,TEQDX) JNDF( j0neDD,D,D,TEQ ) JNDB( j1neBB,B,B,NE ) JNDF( j1neBI,B,I,ANE ) JNDF( j1neBD,B,D,TNEXD) JNDF( j1neIB,I,B,ANE ) JNDF( j1neII,I,I,ANE ) JNDF( j1neID,I,D,TNEXD) JNDF( j1neDB,D,B,TNEDX) JNDF( j1neDI,D,I,TNEDX) JNDF( j1neDD,D,D,TNE ) SUMB(sumneBB,B,B,NE ) SUMF(sumneBI,B,I,ANE ) SUMF(sumneBD,B,D,TNEXD) SUMF(sumneIB,I,B,ANE ) SUMF(sumneII,I,I,ANE ) SUMF(sumneID,I,D,TNEXD) SUMF(sumneDB,D,B,TNEDX) SUMF(sumneDI,D,I,TNEDX) SUMF(sumneDD,D,D,TNE ) ANYB(anyneBB,B,B,NE ) ANYF(anyneBI,B,I,ANE ) ANYF(anyneBD,B,D,TNEXD) ANYF(anyneIB,I,B,ANE ) ANYF(anyneII,I,I,ANE ) ANYF(anyneID,I,D,TNEXD) ANYF(anyneDB,D,B,TNEDX) ANYF(anyneDI,D,I,TNEDX) ANYF(anyneDD,D,D,TNE ) ALLB(allneBB,B,B,NE ) ALLF(allneBI,B,I,ANE ) ALLF(allneBD,B,D,TNEXD) ALLF(allneIB,I,B,ANE ) ALLF(allneII,I,I,ANE ) ALLF(allneID,I,D,TNEXD) ALLF(allneDB,D,B,TNEDX) ALLF(allneDI,D,I,TNEDX) ALLF(allneDD,D,D,TNE ) IFBB(ifbneBB,B,B,NE ) IFBF(ifbneBI,B,I,ANE ) IFBF(ifbneBD,B,D,TNEXD) IFBF(ifbneIB,I,B,ANE ) IFBF(ifbneII,I,I,ANE ) IFBF(ifbneID,I,D,TNEXD) IFBF(ifbneDB,D,B,TNEDX) IFBF(ifbneDI,D,I,TNEDX) IFBF(ifbneDD,D,D,TNE ) INDB( i0ltBB,B,B,GE ) INDF( i0ltBI,B,I,AGE ) INDF( i0ltBD,B,D,TGEXD) /* < */ INDF( i0ltIB,I,B,AGE ) INDF( i0ltII,I,I,AGE ) INDF( i0ltID,I,D,TGEXD) INDF( i0ltDB,D,B,TGEDX) INDF( i0ltDI,D,I,TGEDX) INDF( i0ltDD,D,D,TGE ) INDB( i1ltBB,B,B,LT ) INDF( i1ltBI,B,I,ALT ) INDF( i1ltBD,B,D,TLTXD) INDF( i1ltIB,I,B,ALT ) INDF( i1ltII,I,I,ALT ) INDF( i1ltID,I,D,TLTXD) INDF( i1ltDB,D,B,TLTDX) INDF( i1ltDI,D,I,TLTDX) INDF( i1ltDD,D,D,TLT ) JNDB( j0ltBB,B,B,GE ) JNDF( j0ltBI,B,I,AGE ) JNDF( j0ltBD,B,D,TGEXD) JNDF( j0ltIB,I,B,AGE ) JNDF( j0ltII,I,I,AGE ) JNDF( j0ltID,I,D,TGEXD) JNDF( j0ltDB,D,B,TGEDX) JNDF( j0ltDI,D,I,TGEDX) JNDF( j0ltDD,D,D,TGE ) JNDB( j1ltBB,B,B,LT ) JNDF( j1ltBI,B,I,ALT ) JNDF( j1ltBD,B,D,TLTXD) JNDF( j1ltIB,I,B,ALT ) JNDF( j1ltII,I,I,ALT ) JNDF( j1ltID,I,D,TLTXD) JNDF( j1ltDB,D,B,TLTDX) JNDF( j1ltDI,D,I,TLTDX) JNDF( j1ltDD,D,D,TLT ) SUMB(sumltBB,B,B,LT ) SUMF(sumltBI,B,I,ALT ) SUMF(sumltBD,B,D,TLTXD) SUMF(sumltIB,I,B,ALT ) SUMF(sumltII,I,I,ALT ) SUMF(sumltID,I,D,TLTXD) SUMF(sumltDB,D,B,TLTDX) SUMF(sumltDI,D,I,TLTDX) SUMF(sumltDD,D,D,TLT ) ANYB(anyltBB,B,B,LT ) ANYF(anyltBI,B,I,ALT ) ANYF(anyltBD,B,D,TLTXD) ANYF(anyltIB,I,B,ALT ) ANYF(anyltII,I,I,ALT ) ANYF(anyltID,I,D,TLTXD) ANYF(anyltDB,D,B,TLTDX) ANYF(anyltDI,D,I,TLTDX) ANYF(anyltDD,D,D,TLT ) ALLB(allltBB,B,B,LT ) ALLF(allltBI,B,I,ALT ) ALLF(allltBD,B,D,TLTXD) ALLF(allltIB,I,B,ALT ) ALLF(allltII,I,I,ALT ) ALLF(allltID,I,D,TLTXD) ALLF(allltDB,D,B,TLTDX) ALLF(allltDI,D,I,TLTDX) ALLF(allltDD,D,D,TLT ) IFBB(ifbltBB,B,B,LT ) IFBF(ifbltBI,B,I,ALT ) IFBF(ifbltBD,B,D,TLTXD) IFBF(ifbltIB,I,B,ALT ) IFBF(ifbltII,I,I,ALT ) IFBF(ifbltID,I,D,TLTXD) IFBF(ifbltDB,D,B,TLTDX) IFBF(ifbltDI,D,I,TLTDX) IFBF(ifbltDD,D,D,TLT ) INDB( i0leBB,B,B,GT ) INDF( i0leBI,B,I,AGT ) INDF( i0leBD,B,D,TGTXD) /* <: */ INDF( i0leIB,I,B,AGT ) INDF( i0leII,I,I,AGT ) INDF( i0leID,I,D,TGTXD) INDF( i0leDB,D,B,TGTDX) INDF( i0leDI,D,I,TGTDX) INDF( i0leDD,D,D,TGT ) INDB( i1leBB,B,B,LE ) INDF( i1leBI,B,I,ALE ) INDF( i1leBD,B,D,TLEXD) INDF( i1leIB,I,B,ALE ) INDF( i1leII,I,I,ALE ) INDF( i1leID,I,D,TLEXD) INDF( i1leDB,D,B,TLEDX) INDF( i1leDI,D,I,TLEDX) INDF( i1leDD,D,D,TLE ) JNDB( j0leBB,B,B,GT ) JNDF( j0leBI,B,I,AGT ) JNDF( j0leBD,B,D,TGTXD) JNDF( j0leIB,I,B,AGT ) JNDF( j0leII,I,I,AGT ) JNDF( j0leID,I,D,TGTXD) JNDF( j0leDB,D,B,TGTDX) JNDF( j0leDI,D,I,TGTDX) JNDF( j0leDD,D,D,TGT ) JNDB( j1leBB,B,B,LE ) JNDF( j1leBI,B,I,ALE ) JNDF( j1leBD,B,D,TLEXD) JNDF( j1leIB,I,B,ALE ) JNDF( j1leII,I,I,ALE ) JNDF( j1leID,I,D,TLEXD) JNDF( j1leDB,D,B,TLEDX) JNDF( j1leDI,D,I,TLEDX) JNDF( j1leDD,D,D,TLE ) SUMB(sumleBB,B,B,LE ) SUMF(sumleBI,B,I,ALE ) SUMF(sumleBD,B,D,TLEXD) SUMF(sumleIB,I,B,ALE ) SUMF(sumleII,I,I,ALE ) SUMF(sumleID,I,D,TLEXD) SUMF(sumleDB,D,B,TLEDX) SUMF(sumleDI,D,I,TLEDX) SUMF(sumleDD,D,D,TLE ) ANYB(anyleBB,B,B,LE ) ANYF(anyleBI,B,I,ALE ) ANYF(anyleBD,B,D,TLEXD) ANYF(anyleIB,I,B,ALE ) ANYF(anyleII,I,I,ALE ) ANYF(anyleID,I,D,TLEXD) ANYF(anyleDB,D,B,TLEDX) ANYF(anyleDI,D,I,TLEDX) ANYF(anyleDD,D,D,TLE ) ALLB(allleBB,B,B,LE ) ALLF(allleBI,B,I,ALE ) ALLF(allleBD,B,D,TLEXD) ALLF(allleIB,I,B,ALE ) ALLF(allleII,I,I,ALE ) ALLF(allleID,I,D,TLEXD) ALLF(allleDB,D,B,TLEDX) ALLF(allleDI,D,I,TLEDX) ALLF(allleDD,D,D,TLE ) IFBB(ifbleBB,B,B,LE ) IFBF(ifbleBI,B,I,ALE ) IFBF(ifbleBD,B,D,TLEXD) IFBF(ifbleIB,I,B,ALE ) IFBF(ifbleII,I,I,ALE ) IFBF(ifbleID,I,D,TLEXD) IFBF(ifbleDB,D,B,TLEDX) IFBF(ifbleDI,D,I,TLEDX) IFBF(ifbleDD,D,D,TLE ) INDB( i0geBB,B,B,LT ) INDF( i0geBI,B,I,ALT ) INDF( i0geBD,B,D,TLTXD) /* >: */ INDF( i0geIB,I,B,ALT ) INDF( i0geII,I,I,ALT ) INDF( i0geID,I,D,TLTXD) INDF( i0geDB,D,B,TLTDX) INDF( i0geDI,D,I,TLTDX) INDF( i0geDD,D,D,TLT ) INDB( i1geBB,B,B,GE ) INDF( i1geBI,B,I,AGE ) INDF( i1geBD,B,D,TGEXD) INDF( i1geIB,I,B,AGE ) INDF( i1geII,I,I,AGE ) INDF( i1geID,I,D,TGEXD) INDF( i1geDB,D,B,TGEDX) INDF( i1geDI,D,I,TGEDX) INDF( i1geDD,D,D,TGE ) JNDB( j0geBB,B,B,LT ) JNDF( j0geBI,B,I,ALT ) JNDF( j0geBD,B,D,TLTXD) JNDF( j0geIB,I,B,ALT ) JNDF( j0geII,I,I,ALT ) JNDF( j0geID,I,D,TLTXD) JNDF( j0geDB,D,B,TLTDX) JNDF( j0geDI,D,I,TLTDX) JNDF( j0geDD,D,D,TLT ) JNDB( j1geBB,B,B,GE ) JNDF( j1geBI,B,I,AGE ) JNDF( j1geBD,B,D,TGEXD) JNDF( j1geIB,I,B,AGE ) JNDF( j1geII,I,I,AGE ) JNDF( j1geID,I,D,TGEXD) JNDF( j1geDB,D,B,TGEDX) JNDF( j1geDI,D,I,TGEDX) JNDF( j1geDD,D,D,TGE ) SUMB(sumgeBB,B,B,GE ) SUMF(sumgeBI,B,I,AGE ) SUMF(sumgeBD,B,D,TGEXD) SUMF(sumgeIB,I,B,AGE ) SUMF(sumgeII,I,I,AGE ) SUMF(sumgeID,I,D,TGEXD) SUMF(sumgeDB,D,B,TGEDX) SUMF(sumgeDI,D,I,TGEDX) SUMF(sumgeDD,D,D,TGE ) ANYB(anygeBB,B,B,GE ) ANYF(anygeBI,B,I,AGE ) ANYF(anygeBD,B,D,TGEXD) ANYF(anygeIB,I,B,AGE ) ANYF(anygeII,I,I,AGE ) ANYF(anygeID,I,D,TGEXD) ANYF(anygeDB,D,B,TGEDX) ANYF(anygeDI,D,I,TGEDX) ANYF(anygeDD,D,D,TGE ) ALLB(allgeBB,B,B,GE ) ALLF(allgeBI,B,I,AGE ) ALLF(allgeBD,B,D,TGEXD) ALLF(allgeIB,I,B,AGE ) ALLF(allgeII,I,I,AGE ) ALLF(allgeID,I,D,TGEXD) ALLF(allgeDB,D,B,TGEDX) ALLF(allgeDI,D,I,TGEDX) ALLF(allgeDD,D,D,TGE ) IFBB(ifbgeBB,B,B,GE ) IFBF(ifbgeBI,B,I,AGE ) IFBF(ifbgeBD,B,D,TGEXD) IFBF(ifbgeIB,I,B,AGE ) IFBF(ifbgeII,I,I,AGE ) IFBF(ifbgeID,I,D,TGEXD) IFBF(ifbgeDB,D,B,TGEDX) IFBF(ifbgeDI,D,I,TGEDX) IFBF(ifbgeDD,D,D,TGE ) INDB( i0gtBB,B,B,LE ) INDF( i0gtBI,B,I,ALE ) INDF( i0gtBD,B,D,TLEXD) /* > */ INDF( i0gtIB,I,B,ALE ) INDF( i0gtII,I,I,ALE ) INDF( i0gtID,I,D,TLEXD) INDF( i0gtDB,D,B,TLEDX) INDF( i0gtDI,D,I,TLEDX) INDF( i0gtDD,D,D,TLE ) INDB( i1gtBB,B,B,GT ) INDF( i1gtBI,B,I,AGT ) INDF( i1gtBD,B,D,TGTXD) INDF( i1gtIB,I,B,AGT ) INDF( i1gtII,I,I,AGT ) INDF( i1gtID,I,D,TGTXD) INDF( i1gtDB,D,B,TGTDX) INDF( i1gtDI,D,I,TGTDX) INDF( i1gtDD,D,D,TGT ) JNDB( j0gtBB,B,B,LE ) JNDF( j0gtBI,B,I,ALE ) JNDF( j0gtBD,B,D,TLEXD) JNDF( j0gtIB,I,B,ALE ) JNDF( j0gtII,I,I,ALE ) JNDF( j0gtID,I,D,TLEXD) JNDF( j0gtDB,D,B,TLEDX) JNDF( j0gtDI,D,I,TLEDX) JNDF( j0gtDD,D,D,TLE ) JNDB( j1gtBB,B,B,GT ) JNDF( j1gtBI,B,I,AGT ) JNDF( j1gtBD,B,D,TGTXD) JNDF( j1gtIB,I,B,AGT ) JNDF( j1gtII,I,I,AGT ) JNDF( j1gtID,I,D,TGTXD) JNDF( j1gtDB,D,B,TGTDX) JNDF( j1gtDI,D,I,TGTDX) JNDF( j1gtDD,D,D,TGT ) SUMB(sumgtBB,B,B,GT ) SUMF(sumgtBI,B,I,AGT ) SUMF(sumgtBD,B,D,TGTXD) SUMF(sumgtIB,I,B,AGT ) SUMF(sumgtII,I,I,AGT ) SUMF(sumgtID,I,D,TGTXD) SUMF(sumgtDB,D,B,TGTDX) SUMF(sumgtDI,D,I,TGTDX) SUMF(sumgtDD,D,D,TGT ) ALLB(allgtBB,B,B,GT ) ALLF(allgtBI,B,I,AGT ) ALLF(allgtBD,B,D,TGTXD) ALLF(allgtIB,I,B,AGT ) ALLF(allgtII,I,I,AGT ) ALLF(allgtID,I,D,TGTXD) ALLF(allgtDB,D,B,TGTDX) ALLF(allgtDI,D,I,TGTDX) ALLF(allgtDD,D,D,TGT ) ANYB(anygtBB,B,B,GT ) ANYF(anygtBI,B,I,AGT ) ANYF(anygtBD,B,D,TGTXD) ANYF(anygtIB,I,B,AGT ) ANYF(anygtII,I,I,AGT ) ANYF(anygtID,I,D,TGTXD) ANYF(anygtDB,D,B,TGTDX) ANYF(anygtDI,D,I,TGTDX) ANYF(anygtDD,D,D,TGT ) IFBB(ifbgtBB,B,B,GT ) IFBF(ifbgtBI,B,I,AGT ) IFBF(ifbgtBD,B,D,TGTXD) IFBF(ifbgtIB,I,B,AGT ) IFBF(ifbgtII,I,I,AGT ) IFBF(ifbgtID,I,D,TGTXD) IFBF(ifbgtDB,D,B,TGTDX) IFBF(ifbgtDI,D,I,TGTDX) IFBF(ifbgtDD,D,D,TGT ) static AF atcompxy[]={ /* table for (B01,INT,FL) vs. (B01,INT,FL) */ i0eqBB, i0eqBI, i0eqBD, i0eqIB, i0eqII, i0eqID, i0eqDB, i0eqDI, i0eqDD, /* 0 */ i0neBB, i0neBI, i0neBD, i0neIB, i0neII, i0neID, i0neDB, i0neDI, i0neDD, i0ltBB, i0ltBI, i0ltBD, i0ltIB, i0ltII, i0ltID, i0ltDB, i0ltDI, i0ltDD, i0leBB, i0leBI, i0leBD, i0leIB, i0leII, i0leID, i0leDB, i0leDI, i0leDD, i0geBB, i0geBI, i0geBD, i0geIB, i0geII, i0geID, i0geDB, i0geDI, i0geDD, i0gtBB, i0gtBI, i0gtBD, i0gtIB, i0gtII, i0gtID, i0gtDB, i0gtDI, i0gtDD, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, i1eqBB, i1eqBI, i1eqBD, i1eqIB, i1eqII, i1eqID, i1eqDB, i1eqDI, i1eqDD, /* 1 */ i1neBB, i1neBI, i1neBD, i1neIB, i1neII, i1neID, i1neDB, i1neDI, i1neDD, i1ltBB, i1ltBI, i1ltBD, i1ltIB, i1ltII, i1ltID, i1ltDB, i1ltDI, i1ltDD, i1leBB, i1leBI, i1leBD, i1leIB, i1leII, i1leID, i1leDB, i1leDI, i1leDD, i1geBB, i1geBI, i1geBD, i1geIB, i1geII, i1geID, i1geDB, i1geDI, i1geDD, i1gtBB, i1gtBI, i1gtBD, i1gtIB, i1gtII, i1gtID, i1gtDB, i1gtDI, i1gtDD, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, j0eqBB, j0eqBI, j0eqBD, j0eqIB, j0eqII, j0eqID, j0eqDB, j0eqDI, j0eqDD, /* 2 */ j0neBB, j0neBI, j0neBD, j0neIB, j0neII, j0neID, j0neDB, j0neDI, j0neDD, j0ltBB, j0ltBI, j0ltBD, j0ltIB, j0ltII, j0ltID, j0ltDB, j0ltDI, j0ltDD, j0leBB, j0leBI, j0leBD, j0leIB, j0leII, j0leID, j0leDB, j0leDI, j0leDD, j0geBB, j0geBI, j0geBD, j0geIB, j0geII, j0geID, j0geDB, j0geDI, j0geDD, j0gtBB, j0gtBI, j0gtBD, j0gtIB, j0gtII, j0gtID, j0gtDB, j0gtDI, j0gtDD, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, j1eqBB, j1eqBI, j1eqBD, j1eqIB, j1eqII, j1eqID, j1eqDB, j1eqDI, j1eqDD, /* 3 */ j1neBB, j1neBI, j1neBD, j1neIB, j1neII, j1neID, j1neDB, j1neDI, j1neDD, j1ltBB, j1ltBI, j1ltBD, j1ltIB, j1ltII, j1ltID, j1ltDB, j1ltDI, j1ltDD, j1leBB, j1leBI, j1leBD, j1leIB, j1leII, j1leID, j1leDB, j1leDI, j1leDD, j1geBB, j1geBI, j1geBD, j1geIB, j1geII, j1geID, j1geDB, j1geDI, j1geDD, j1gtBB, j1gtBI, j1gtBD, j1gtIB, j1gtII, j1gtID, j1gtDB, j1gtDI, j1gtDD, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, sumeqBB,sumeqBI,sumeqBD, sumeqIB,sumeqII,sumeqID, sumeqDB,sumeqDI,sumeqDD, /* 4 */ sumneBB,sumneBI,sumneBD, sumneIB,sumneII,sumneID, sumneDB,sumneDI,sumneDD, sumltBB,sumltBI,sumltBD, sumltIB,sumltII,sumltID, sumltDB,sumltDI,sumltDD, sumleBB,sumleBI,sumleBD, sumleIB,sumleII,sumleID, sumleDB,sumleDI,sumleDD, sumgeBB,sumgeBI,sumgeBD, sumgeIB,sumgeII,sumgeID, sumgeDB,sumgeDI,sumgeDD, sumgtBB,sumgtBI,sumgtBD, sumgtIB,sumgtII,sumgtID, sumgtDB,sumgtDI,sumgtDD, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, anyeqBB,anyeqBI,anyeqBD, anyeqIB,anyeqII,anyeqID, anyeqDB,anyeqDI,anyeqDD, /* 5 */ anyneBB,anyneBI,anyneBD, anyneIB,anyneII,anyneID, anyneDB,anyneDI,anyneDD, anyltBB,anyltBI,anyltBD, anyltIB,anyltII,anyltID, anyltDB,anyltDI,anyltDD, anyleBB,anyleBI,anyleBD, anyleIB,anyleII,anyleID, anyleDB,anyleDI,anyleDD, anygeBB,anygeBI,anygeBD, anygeIB,anygeII,anygeID, anygeDB,anygeDI,anygeDD, anygtBB,anygtBI,anygtBD, anygtIB,anygtII,anygtID, anygtDB,anygtDI,anygtDD, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, alleqBB,alleqBI,alleqBD, alleqIB,alleqII,alleqID, alleqDB,alleqDI,alleqDD, /* 6 */ allneBB,allneBI,allneBD, allneIB,allneII,allneID, allneDB,allneDI,allneDD, allltBB,allltBI,allltBD, allltIB,allltII,allltID, allltDB,allltDI,allltDD, allleBB,allleBI,allleBD, allleIB,allleII,allleID, allleDB,allleDI,allleDD, allgeBB,allgeBI,allgeBD, allgeIB,allgeII,allgeID, allgeDB,allgeDI,allgeDD, allgtBB,allgtBI,allgtBD, allgtIB,allgtII,allgtID, allgtDB,allgtDI,allgtDD, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, ifbeqBB,ifbeqBI,ifbeqBD, ifbeqIB,ifbeqII,ifbeqID, ifbeqDB,ifbeqDI,ifbeqDD, /* 7 */ ifbneBB,ifbneBI,ifbneBD, ifbneIB,ifbneII,ifbneID, ifbneDB,ifbneDI,ifbneDD, ifbltBB,ifbltBI,ifbltBD, ifbltIB,ifbltII,ifbltID, ifbltDB,ifbltDI,ifbltDD, ifbleBB,ifbleBI,ifbleBD, ifbleIB,ifbleII,ifbleID, ifbleDB,ifbleDI,ifbleDD, ifbgeBB,ifbgeBI,ifbgeBD, ifbgeIB,ifbgeII,ifbgeID, ifbgeDB,ifbgeDI,ifbgeDD, ifbgtBB,ifbgtBI,ifbgtBD, ifbgtIB,ifbgtII,ifbgtID, ifbgtDB,ifbgtDI,ifbgtDD, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, }; INDF( i0eqC,C,C,ANE) INDF( i0neC,C,C,AEQ) INDF( i1eqC,C,C,AEQ) INDF( i1neC,C,C,ANE) JNDF( j0eqC,C,C,ANE) JNDF( j0neC,C,C,AEQ) JNDF( j1eqC,C,C,AEQ) JNDF( j1neC,C,C,ANE) SUMF(sumeqC,C,C,AEQ) SUMF(sumneC,C,C,ANE) ALLF(alleqC,C,C,AEQ) ALLF(allneC,C,C,ANE) ANYF(anyeqC,C,C,AEQ) ANYF(anyneC,C,C,ANE) IFBF(ifbeqC,C,C,AEQ) IFBF(ifbneC,C,C,ANE) static AF atcompC[]={ /* table for LIT vs. LIT */ i0eqC, i0neC, 0L,0L,0L,0L,0L,0L, i1eqC, i1neC, 0L,0L,0L,0L,0L,0L, j0eqC, j0neC, 0L,0L,0L,0L,0L,0L, j1eqC, j1neC, 0L,0L,0L,0L,0L,0L, sumeqC, sumneC, 0L,0L,0L,0L,0L,0L, anyeqC, anyneC, 0L,0L,0L,0L,0L,0L, alleqC, allneC, 0L,0L,0L,0L,0L,0L, ifbeqC, ifbneC, 0L,0L,0L,0L,0L,0L, }; INDF( i0eqS,SB,SB,ANE) INDF( i0neS,SB,SB,AEQ) INDF( i1eqS,SB,SB,AEQ) INDF( i1neS,SB,SB,ANE) JNDF( j0eqS,SB,SB,ANE) JNDF( j0neS,SB,SB,AEQ) JNDF( j1eqS,SB,SB,AEQ) JNDF( j1neS,SB,SB,ANE) SUMF(sumeqS,SB,SB,AEQ) SUMF(sumneS,SB,SB,ANE) ALLF(alleqS,SB,SB,AEQ) ALLF(allneS,SB,SB,ANE) ANYF(anyeqS,SB,SB,AEQ) ANYF(anyneS,SB,SB,ANE) IFBF(ifbeqS,SB,SB,AEQ) IFBF(ifbneS,SB,SB,ANE) INDF( i0ltS,SB,SB,SBGE) INDF( i0leS,SB,SB,SBGT) INDF( i0geS,SB,SB,SBLT) INDF( i0gtS,SB,SB,SBLE) INDF( i1ltS,SB,SB,SBLT) INDF( i1leS,SB,SB,SBLE) INDF( i1geS,SB,SB,SBGE) INDF( i1gtS,SB,SB,SBGT) JNDF( j0ltS,SB,SB,SBGE) JNDF( j0leS,SB,SB,SBGT) JNDF( j0geS,SB,SB,SBLT) JNDF( j0gtS,SB,SB,SBLE) JNDF( j1ltS,SB,SB,SBLT) JNDF( j1leS,SB,SB,SBLE) JNDF( j1geS,SB,SB,SBGE) JNDF( j1gtS,SB,SB,SBGT) SUMF(sumltS,SB,SB,SBLT) SUMF(sumleS,SB,SB,SBLE) SUMF(sumgeS,SB,SB,SBGE) SUMF(sumgtS,SB,SB,SBGT) ALLF(allltS,SB,SB,SBLT) ALLF(allleS,SB,SB,SBLE) ALLF(allgeS,SB,SB,SBGE) ALLF(allgtS,SB,SB,SBGT) ANYF(anyltS,SB,SB,SBLT) ANYF(anyleS,SB,SB,SBLE) ANYF(anygeS,SB,SB,SBGE) ANYF(anygtS,SB,SB,SBGT) IFBF(ifbltS,SB,SB,SBLT) IFBF(ifbleS,SB,SB,SBLE) IFBF(ifbgeS,SB,SB,SBGE) IFBF(ifbgtS,SB,SB,SBGT) static AF atcompSB[]={ /* table for SBT vs. SBT */ i0eqS, i0neS, i0ltS, i0leS, i0geS, i0gtS, 0L,0L, i1eqS, i1neS, i1ltS, i1leS, i1geS, i1gtS, 0L,0L, j0eqS, j0neS, j0ltS, j0leS, j0geS, j0gtS, 0L,0L, j1eqS, j1neS, j1ltS, j1leS, j1geS, j1gtS, 0L,0L, sumeqS,sumneS,sumltS,sumleS,sumgeS,sumgtS, 0L,0L, anyeqS,anyneS,anyltS,anyleS,anygeS,anygtS, 0L,0L, alleqS,allneS,allltS,allleS,allgeS,allgtS, 0L,0L, ifbeqS,ifbneS,ifbltS,ifbleS,ifbgeS,ifbgtS, 0L,0L, }; static F2( jti0eps){R indexofsub( II0EPS,w,a);} static F2( jti1eps){R indexofsub( II1EPS,w,a);} static F2( jtj0eps){R indexofsub( IJ0EPS,w,a);} static F2( jtj1eps){R indexofsub( IJ1EPS,w,a);} static F2(jtsumeps){R indexofsub(ISUMEPS,w,a);} static F2(jtanyeps){R indexofsub(IANYEPS,w,a);} static F2(jtalleps){R indexofsub(IALLEPS,w,a);} static F2(jtifbeps){R indexofsub(IIFBEPS,w,a);} static AF atcompX[]={ /* table for any vs. any */ 0L,0L,0L,0L,0L,0L, 0L, jti0eps, 0L,0L,0L,0L,0L,0L, jti1ebar, jti1eps, 0L,0L,0L,0L,0L,0L, 0L, jtj0eps, 0L,0L,0L,0L,0L,0L, 0L, jtj1eps, 0L,0L,0L,0L,0L,0L, jtsumebar, jtsumeps, 0L,0L,0L,0L,0L,0L, jtanyebar, jtanyeps, 0L,0L,0L,0L,0L,0L, 0L, jtalleps, 0L,0L,0L,0L,0L,0L, jtifbebar, jtifbeps, }; /* f 0 1 2 3 4 5 6 7 */ /* m = ~: < <: >: > E. e. */ /* 0 f i. 0: 0 1 2 3 4 5 6 7 */ /* 1 f i. 1: 8 9 10 11 12 13 14 15 */ /* 2 f i: 0: 16 17 18 19 20 21 22 23 */ /* 3 f i: 1: 24 25 26 27 28 29 30 31 */ /* 4 [: + / f 32 33 34 35 36 37 38 39 */ /* 5 [: +./ f 40 41 42 43 44 45 46 47 */ /* 6 [: *./ f 48 49 50 51 52 53 54 55 */ /* 7 [: I. f 56 57 58 59 60 61 62 63 */ AF jtatcompf(J jt,A a,A w,A self){AF f;I ar,at,m,wr,wt; RZ(a&&w); at=AT(a); ar=AR(a); wt=AT(w); wr=AR(w); m=VAV(self)->flag%256; 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);} ASSERT(AN(a)==AN(w)||!ar||!wr||5<m%8,EVLENGTH); f=atcompX[m]; if(!f){ 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)]; else if(at&LIT&&wt&LIT) f=atcompC[m]; else if(at&SBT&&wt&SBT) f=atcompSB[m]; } R f; } /* function table look-up for comp i. 1: and i.&1@:comp etc. */