Metropoli BBS
VIEWER: complex.c MODE: TEXT (ASCII)
/* Copyright (C) 1992 by Thomas Glen Smith.  All Rights Reserved. */
/* complex APL2 V1.0.0 *************************************************
* Called by execjotc.                                                  *
* Returns a copy of the APL variable received, converted to complex    *
* form.                                                                *
***********************************************************************/
#define INCLUDES APLCB
#include "includes.h"
Aplcb complex(rite)
Aplcb rite;
{
	Aplcopy; Errinit; Errstop; Getcb; Intcopy; Real;
	int i,*ip;
	double *fin,*fout;
     Aplcb out=NULL;

	if (errinit())
		return(errstop(0,NULL,rite,NULL));
     switch (rite->aplflags & (APLMASK | APLAPL)) {
          case APLCPLX:
          	out = aplcopy(rite);
          	return(errstop(0,NULL,rite,out));
          case APLINT:
          	rite = real(rite);
          case APLNUMB:
          	break;
          default:
			if (rite->aplcount)
				return(errstop(18,NULL,rite,NULL)); /* can't do */
               break;
     } /* end switch */
	out=getcb(NULL,rite->aplcount,APLTEMP+APLCPLX,rite->aplrank,NULL);
	if (rite->aplrank > 1)
		ip = intcopy(out->apldim,rite->apldim,rite->aplrank,1);
	if (out->aplcount) {
		fin = rite->aplptr.apldata;
		fout = out->aplptr.apldata;
		for (i=out->aplcount; i>0; i--) {
			*fout++ = *fin++;
               *fout++ = 0e0;
		}
	}
	return(errstop(0,NULL,rite,out));
}
[ RETURN TO DIRECTORY ]