/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */ /* encodbl APL2 V1.0.0************************************************** * Given the correct arguments, encodbl gives the inverse of decodbl. * * More generally, encodbl is based on the residue function. * * Translates to real floating point. * ***********************************************************************/ #define INCLUDES APLCB #include "includes.h" Aplcb encodbl(left,rite) Aplcb left,rite; { Encodeb; Errstop; Getcb; Intcopy; int datacnt,datatyp,i,*ip,rank; Aplcb out; if (!matchok(&left,&rite,APLNUMB)) return(NULL); datacnt = left->aplcount * rite->aplcount; datatyp = left->aplflags & APLMASK; rank = left->aplrank + rite->aplrank; out = getcb(NULL,datacnt,datatyp+APLTEMP,rank,NULL); if (rank > 1) { /* set dimensions */ ip=intcopy(out->apldim,left->apldim,left->aplrank,1); ip=intcopy(ip,rite->apldim,rite->aplrank,1); } if (datacnt) encodeb(left,rite,out, left->aplptr.apldata, rite->aplptr.apldata, out->aplptr.apldata); return(errstop(0,left,rite,out)); }