diff --git a/fast-fourier-transforms/example.lisp b/fast-fourier-transforms/example.lisp
index ea5371b0c68cf5868d8afc239e9df86abe08d273..dc69d855836a61412e164153ae53c450eefb6798 100644
--- a/fast-fourier-transforms/example.lisp
+++ b/fast-fourier-transforms/example.lisp
@@ -1,6 +1,6 @@
 ;; Example FFT: transform a pulse (using the "clean" fft interface)
 ;; Sumant Oemrawsingh, Sat Oct 31 2009 - 00:24
-;; Time-stamp: <2009-11-01 23:04:58EST fft-interface-example.lisp>
+;; Time-stamp: <2009-11-08 21:13:33EST example.lisp>
 
 ;;; Here is an example program modelled after the example given in Section
 ;;; 15.3 of the GSL Manual, which computes the FFT of a short pulse. To make
@@ -38,3 +38,43 @@
   (fft-pulse-test 'single-float 630)
   (fft-pulse-test 'double-float 128)
   (fft-pulse-test 'double-float 630))
+
+;; From gsl-1.11/fft/urand.c
+(let ((urand-seed 1))
+  (defun urand ()
+    "Generate a random number.  See fft/urand.c."
+    (setf urand-seed (logand #x7fffffff (+ 12345 (* urand-seed 1103515245))))
+    (/ urand-seed 2147483648.d0))
+  (defun reset-urand ()
+    (setf urand-seed 1)
+    (values)))
+
+;; (make-urand-vector '(complex double-float) 5)
+(defun make-urand-vector (element-type dimension)
+  "Make a vector with random elements."
+  (let ((vec (make-marray element-type :dimensions (list dimension))))
+    (loop for i from 0 below dimension
+       do
+       (setf (maref vec i) (complex (urand))))
+    vec))
+
+(defun fft-signal-real-noise (element-type size)
+  "From generated random data, return the data and DFT.
+   See fft_signal_real_noise in fft/signals.mc."
+  (let ((data (make-urand-vector (list 'complex element-type) size)))
+    (values data (forward-discrete-fourier-transform data))))
+
+(defun test-real-radix2 (element-type size)
+  "Test for FFT; returns the DFT answer and the computed FFT answer.
+   See test_real_radix2 in fft/test.mc."
+  (multiple-value-bind (complex-vector dft-answer)
+      (fft-signal-real-noise element-type size) ; results are complex
+    (let ((real-vector
+	   (make-marray element-type :dimensions (list (* 2 size)))))
+      (loop for i below (total-size real-vector) do
+	   (setf (maref real-vector i)
+		 (if (evenp i)
+		     (realpart (maref complex-vector (floor i 2)))
+		     (coerce 0 element-type))))
+      (let ((forward-fft (forward-fourier-transform real-vector)))
+	(values dft-answer (unpack forward-fft :unpack-type 'complex))))))
diff --git a/fast-fourier-transforms/unpack.lisp b/fast-fourier-transforms/unpack.lisp
index 2ac7d9259daebd195c08f99a5121cf49b884fb7a..c1dafea7ffd573aa5d48d53f3896e8d38a776653 100644
--- a/fast-fourier-transforms/unpack.lisp
+++ b/fast-fourier-transforms/unpack.lisp
@@ -1,6 +1,6 @@
 ;; Unpack functions for FFT vectors.
 ;; Sumant Oemrawsingh, Sun Oct 25 2009 - 16:35
-;; Time-stamp: <2009-11-03 23:20:35EST unpack.lisp>
+;; Time-stamp: <2009-11-08 21:10:27EST unpack.lisp>
 
 (in-package :gsl)