/* Copyright (C) 1993 by Thomas Glen Smith. All Rights Reserved. */ /* execjotc APL2 V1.0.0 ************************************************ * Called from execjot and execjota when each operand must be * * converted to complex or floating point if necessary. * ***********************************************************************/ #define INCLUDES APLCHDEF+FUNSTRUC+APLCB #include "includes.h" Aplcb execjotc(left,rite,ltype,rtype,rscp) Aplcb left,rite; /* left and right arguments */ int ltype,rtype; /* data types of left and right args */ Scalar_dyadics *rscp; /* function definitions - see funstruc.h */ { Complex; Outrprdp; Real; Aplcb out=NULL; if (ltype == APLCPLX || rtype == APLCPLX && NULL != rscp->procs.ppcpx) { if (ltype != APLCPLX) left = complex(left); /* convert */ if (rtype != APLCPLX) rite = complex(rite); /* convert */ out = outrprdp(rscp->procs.ppcpx,left,rite); } else if ((NULL != rscp->procs.ppdbl)) { if (ltype != APLNUMB) left = real(left); /* convert */ if (rtype != APLNUMB) rite = real(rite); /* convert */ out = outrprdp(rscp->procs.ppdbl,left,rite); } return(out); }