Index: trunk/Ohana/src/opihi/cmd.data/fft1d.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/fft1d.c	(revision 16107)
+++ trunk/Ohana/src/opihi/cmd.data/fft1d.c	(revision 20936)
@@ -25,4 +25,7 @@
   if ((Ire = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE);
   
+  REQUIRE_VECTOR_FLT (Ire, FALSE); 
+  if (Iim) { REQUIRE_VECTOR_FLT (Iim, FALSE); }
+
   // check the input data (match lengths? binary length?)
   Npix = Ire[0].Nelements;
@@ -40,21 +43,19 @@
   if ((Oim = SelectVector (argv[5], ANYVECTOR, TRUE)) == NULL) return (FALSE);
 
-  // allocate sufficient output space
-  Ore[0].Nelements = Npix;
-  Oim[0].Nelements = Npix;
-  REALLOCATE (Ore[0].elements, float, Npix);
-  REALLOCATE (Oim[0].elements, float, Npix);
+  // allocate sufficient output space, force output to be FLT
+  ResetVector (Ore, OPIHI_FLT, Npix);
+  ResetVector (Oim, OPIHI_FLT, Npix);
  
   // copy data to output vectors (fft is done in place)
-  memcpy (Ore[0].elements, Ire[0].elements, Npix*sizeof(float));
+  memcpy (Ore[0].elements.Flt, Ire[0].elements.Flt, Npix*sizeof(opihi_flt));
 
   // copy imaginary vector or create a zero vector
   if (ZeroImaginary) {
-    memset (Oim[0].elements, 0, Npix*sizeof(float));
+    memset (Oim[0].elements.Flt, 0, Npix*sizeof(opihi_flt));
   } else {
-    memcpy (Oim[0].elements, Iim[0].elements, Npix*sizeof(float));
+    memcpy (Oim[0].elements.Flt, Iim[0].elements.Flt, Npix*sizeof(opihi_flt));
   }    
 
-  fft1D (Ore[0].elements, Oim[0].elements, Npix, Nbit, forward); 
+  dfft1D (Ore[0].elements.Flt, Oim[0].elements.Flt, Npix, Nbit, forward); 
   
   return (TRUE);
