Mercurial > hg > jgplsrc
view ar.h @ 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. */ /* */ /* Adverbs: f/ defns */ #define REDUCEPFX(f,Tz,Tx,pfx) \ AHDRR(f,Tz,Tx){I d,i;Tx*y;Tz v,*zz; \ d=c/n; x+=m*c; zz=z+=m*d; \ if(1==d)DO(m, v= *--x; DO(n-1, --x; v=pfx(*x,v);); *--z=v;) \ else if(1==n)DO(d, *--z= *--x;) \ else for(i=0;i<m;++i,zz-=d){ \ y=x; x-=d; z=zz; DO(d, --z; --x; --y; *z=pfx(*x,*y);); \ DO(n-2, z=zz; DO(d, --z; --x; *z=pfx(*x,*z);)); \ }} #define REDUCENAN(f,Tz,Tx,pfx) \ AHDRR(f,Tz,Tx){I d,i;Tx*y;Tz v,*zz; \ NAN0; \ d=c/n; x+=m*c; zz=z+=m*d; \ if(1==d)DO(m, v= *--x; DO(n-1, --x; v=pfx(*x,v);); *--z=v;) \ else if(1==n)DO(d, *--z= *--x;) \ else for(i=0;i<m;++i,zz-=d){ \ y=x; x-=d; z=zz; DO(d, --z; --x; --y; *z=pfx(*x,*y);); \ DO(n-2, z=zz; DO(d, --z; --x; *z=pfx(*x,*z);)); \ } \ NAN1V; \ } #define REDUCCPFX(f,Tz,Tx,pfx) \ AHDRR(f,Tz,Tx){I d,i;Tx*y;Tz v,*zz; \ d=c/n; x+=m*c; zz=z+=m*d; \ if(1==d)DO(m, v=(Tz)*--x; DO(n-1, --x; v=pfx(*x,v);); *--z=v;) \ else if(1==n)DO(d, *--z=(Tz)*--x;) \ else for(i=0;i<m;++i,zz-=d){ \ y=x; x-=d; z=zz; DO(d, --z; --x; --y; *z=pfx(*x,*y);); \ DO(n-2, z=zz; DO(d, --z; --x; *z=pfx(*x,*z);)); \ }} #define REDUCEOVF(f,Tz,Tx,fr1,fvv,frn) \ AHDRR(f,I,I){C er=0;I d,i,*xx,*y,*zz; \ d=c/n; xx=x+=m*c; zz=z+=m*d; \ if(1==d){DO(m, z=--zz; x=xx-=c; fr1(n,z,x); RER;); R;} \ if(1==n){DO(d, *--z=*--x;); R;} \ xx-=d; zz-=d; \ for(i=0;i<m;++i,xx-=d,zz-=d){ \ y=xx; x=xx-=d; z=zz; fvv(d,z,x,y); RER; \ DO(n-2, x=xx-=d; z=zz; frn(d,z,x); RER;); \ }}