Metropoli BBS
VIEWER: eachdyaf.c MODE: TEXT (ASCII)
/* Copyright (C) 1993 by Thomas Glen Smith.  All Rights Reserved. */
/* eachdyaf APL2 V1.0.0 ************************************************
* Called from eachdyad when neither argument is empty.                 *
***********************************************************************/
#define INCLUDES APLDERIV+APLCB
#include "includes.h"
Aplcb eachdyaf(dp,left,rite)
Aplderiv dp; /* function describing derived function */
Aplcb left,rite; /* arguments */
{
     Aplcopy; Conform; Eachalc; Eachdyag; Eachdyah; Eachwrk; Endoper;
	Errstop; Getcb; Intcopy; Perm; Temp;
     extern int aplerr;
     Aplcb big, *cp, lit, out, wrk, wrkleft=NULL, wrkrite=NULL;
     int *dimptr,i;

     if (!conform(left,rite,0,&big,&lit))
          return(errstop(17,left,rite,NULL)); /* not conformable */
     if (NULL != (out = eachalc(big))) {
     	wrkleft = eachwrk(left);
          wrkrite = eachwrk(rite);
          if (aplerr == 0)
		     for (i=0, cp = out->aplptr.aplapl;
               	i < out->aplcount; i++) {
	               wrk = eachdyag(dp,&(dp->deriv_left),
    	     	     	eachdyah(i,left,wrkleft),
         	     		eachdyah(i,rite,wrkrite));
				if (wrk == NULL) *cp++ = NULL;
				else if (wrk->aplflags & APLTEMP) *cp++ = perm(wrk);
				else *cp++ = aplcopy(wrk);
			}
     }
     if (wrkleft) endoper(temp(wrkleft));
     if (wrkrite) endoper(temp(wrkrite));
     return(errstop(0,left,rite,out));
}
[ RETURN TO DIRECTORY ]