/* Copyright (C) 1996 by Thomas Glen Smith. All Rights Reserved. */
/* dyadrup APL2 V1.0.0 *************************************************
* Called from dyadrun and outrprdp when the output data type must be *
* converted from APLNUMB to APLCPLX. *
***********************************************************************/
#define INCLUDES APLCB
#include "includes.h"
Aplcb dyadrup(out,cnt)
Aplcb out; /* To be converted from APLNUMB to APLCPLX. */
int cnt; /* Count of elements finished in out. */
{
Endoper; Getcb; Intcopy;
Aplcb hld;
int tempsave;
double *ip,*op;
tempsave = out->aplflags & APLTEMP; /* Out temp? */
hld = getcb(NULL,out->aplcount,tempsave+APLCPLX,out->aplrank,NULL);
if (hld == NULL) return(out); /* Error. */
if (hld->aplrank > 1) /* Copy dimensions? */
intcopy(hld->apldim, out->apldim, hld->aplrank,1); /* Yes. */
ip = out->aplptr.apldata;
op = hld->aplptr.apldata;
while (cnt--) { /* Copy finished elements. */
*ip++ = *op++;
*ip++ = 0e0; /* Imaginary part is zero. */
}
if (tempsave) endoper(out); /* Free temporary. */
return(hld);
}