#argmap(out) spcomplex solution[2]
   {
   SLang_Array_Type *at;
   double *elements;
   int dims = 2;

   at = SLang_create_array (SLANG_COMPLEX_TYPE, 0, NULL, &dims, 1);
   if (at == NULL) {
	SLang_verror(SL_INTRINSIC_ERROR, "could not allocate complex array");
	return;
   }
   elements = (double*)at->data;	/* memcpy cannot be used here, b/c  */
   *elements	 = $1[0].r;		/* FORTRAN complex uses single-prec */
   *(elements+1) = $1[0].i;		/* reals for each component	    */
   *(elements+2) = $1[1].r;
   *(elements+3) = $1[1].i;
   (void)SLang_push_array (at, 1);
   }
#end

% NB: FORTRAN compiler name mangling scheme is not exposed here (a good thing)

#prototype
   void qsolve(float*, float*, float*, spcomplex solution[2]);
   % Morph a subroutine into a function by making 3rd arg an output value
   void sub_multi(float*, float*, float *OUTPUT);
#end

#ignore
   rzero
#end
