diff --git a/test-unit/convert.lisp b/test-unit/convert.lisp
index ee2e1f3f94b7106cfeb6d87f52db4c9b1f4fb88f..aaebbc5cfefcea92659e706611b337deb956875a 100644
--- a/test-unit/convert.lisp
+++ b/test-unit/convert.lisp
@@ -1,9 +1,10 @@
 ;; Convert the GSL tests
 ;; Liam Healy 2010-05-22 13:03:53EDT convert.lisp
-;; Time-stamp: <2010-05-22 16:18:38EDT convert.lisp>
+;; Time-stamp: <2010-05-22 16:43:04EDT convert.lisp>
 
 ;;; This file is not normally loaded; it is only used to convert the
-;;; GSL tests in C to CL tests.  It requires cl-ppcre and iterate.
+;;; GSL tests in C to CL tests.  It requires cl-ppcre, lisp-util, and iterate.
+;;; (convert-tests-in-file "/home/liam/mathematics/gsl/cdf/test.c")
 
 (in-package :gsl)
 
@@ -14,29 +15,33 @@
    The first character of the string should be 
    open paren, and the last the close paren."
   (cons 'assert-to-tolerance
-	(read-from-string
-	 (remove
-	  #\,				; Get rid of commas
-	  (cl-ppcre:regex-replace	; Replace function name
-	   "\\((\\w*)\\W*\\((.*\\))"
-	   (cl-ppcre:regex-replace-all ; Floats without exponents become double-floats
-	    "(\\.\\d*)(,|\\))"
-	    (cl-ppcre:regex-replace-all ; Floats with "e" exponent become double-floats
-	     "(\\d|\\.)e(\\d|\\+|\\-)"
-	     (cl-ppcre:regex-replace	; Replace tolerance
-	      "TEST_(\\w*)"
-	      string
-	      "+TEST-\\{1}+")
-	     "\\{1}d\\{2}")
-	    "\\{1}d0\\{2}")
-	   (lambda (match &rest registers)
-	     (declare (ignore match))
-	     (format
-	      nil
-	      "((~a ~a"
-	      (symbol-name (gsl-lookup (first registers)))
-	      (second registers)))
-	   :simple-calls t)))))
+	(let ((ppcre-convert
+	       (read-from-string
+		(remove
+		 #\,			; Get rid of commas
+		 (cl-ppcre:regex-replace ; Replace function name
+		  "\\((\\w*)\\W*\\((.*\\))"
+		  (cl-ppcre:regex-replace-all ; Floats without exponents become double-floats
+		   "(\\.\\d*)(,|\\))"
+		   (cl-ppcre:regex-replace-all ; Floats with "e" exponent become double-floats
+		    "(\\d|\\.)e(\\d|\\+|\\-)"
+		    (cl-ppcre:regex-replace ; Replace tolerance
+		     "TEST_(\\w*)"
+		     string
+		     "+TEST-\\{1}+")
+		    "\\{1}d\\{2}")
+		   "\\{1}d0\\{2}")
+		  (lambda (match &rest registers)
+		    (declare (ignore match))
+		    (format
+		     nil
+		     "((~a ~a"
+		     (symbol-name (gsl-lookup (first registers)))
+		     (second registers)))
+		  :simple-calls t)))))
+	  (if (and (numberp (lu:last1 ppcre-convert)) (zerop (lu:last1 ppcre-convert)))
+	      (append (butlast ppcre-convert) (list '+dbl-epsilon+))
+	      ppcre-convert))))
 
 (defun GSL-test-form (string)
   "Replace the full C form with the TEST macro by just the argument."
diff --git a/tests/gaussian.lisp b/tests/gaussian.lisp
index a84b83f4fb455440b4c811271322d2e35a315ddc..6e15040a0a5ae4cc89972ab2c10f0de8dec34c8a 100644
--- a/tests/gaussian.lisp
+++ b/tests/gaussian.lisp
@@ -19,45 +19,114 @@
 (in-package :gsl)
 
 (LISP-UNIT:DEFINE-TEST GAUSSIAN
-                       (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
-                        (LIST
-                         (LIST 1.3391860811867589d0 -0.8810099183143839d0
-                               16.744084062537738d0 7.336411072925795d0
-                               9.975246316020124d0 -12.775020810027664d0
-                               -23.967152827332075d0 -6.79280164729211d0
-                               -0.3909131843358723d0 8.935555455208181d0
-                               -0.17647794589783283d0))
-                        (MULTIPLE-VALUE-LIST
-                         (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
-                           (LOOP FOR I FROM 0 TO 10 COLLECT
-                                 (sample rng :gaussian :sigma 10.0d0)))))
-                       (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
-                        (LIST 0.039894228040143274d0)
-                        (MULTIPLE-VALUE-LIST (GAUSSIAN-PDF 0.0d0 10.0d0)))
-                       (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
-                        (LIST
-                         (LIST 7.648734260124924d0 -11.307312946196086d0
-                               4.523361654215173d0 -4.5181725947577185d0
-                               13.64676540828912d0 3.553650119391929d0
-                               -5.567035948404032d0 10.097727863788887d0
-                               2.519120940798607d0 -9.024585521868676d0
-                               -9.463283369593537d0))
-                        (MULTIPLE-VALUE-LIST
-                         (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
-                           (LOOP FOR I FROM 0 TO 10 COLLECT
-                                 (sample rng :gaussian-ziggurat :sigma 10.0d0)))))
-                       (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
-                        (LIST 0.9772498680518208d0)
-                        (MULTIPLE-VALUE-LIST (UGAUSSIAN-P 2.0d0)))
-                       (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
-                        (LIST 0.022750131948179212d0)
-                        (MULTIPLE-VALUE-LIST (UGAUSSIAN-Q 2.0d0)))
-                       (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST 2.0d0)
-                                                          (MULTIPLE-VALUE-LIST
-                                                           (UGAUSSIAN-PINV
-                                                            0.9772498680518208d0)))
-                       (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST 2.0d0)
-                                                          (MULTIPLE-VALUE-LIST
-                                                           (UGAUSSIAN-QINV
-                                                            0.02275013194817921d0))))
-
+  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
+   (LIST
+    (LIST 1.3391860811867589d0 -0.8810099183143839d0
+	  16.744084062537738d0 7.336411072925795d0
+	  9.975246316020124d0 -12.775020810027664d0
+	  -23.967152827332075d0 -6.79280164729211d0
+	  -0.3909131843358723d0 8.935555455208181d0
+	  -0.17647794589783283d0))
+   (MULTIPLE-VALUE-LIST
+    (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
+      (LOOP FOR I FROM 0 TO 10 COLLECT
+	   (sample rng :gaussian :sigma 10.0d0)))))
+  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
+   (LIST 0.039894228040143274d0)
+   (MULTIPLE-VALUE-LIST (GAUSSIAN-PDF 0.0d0 10.0d0)))
+  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
+   (LIST
+    (LIST 7.648734260124924d0 -11.307312946196086d0
+	  4.523361654215173d0 -4.5181725947577185d0
+	  13.64676540828912d0 3.553650119391929d0
+	  -5.567035948404032d0 10.097727863788887d0
+	  2.519120940798607d0 -9.024585521868676d0
+	  -9.463283369593537d0))
+   (MULTIPLE-VALUE-LIST
+    (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
+      (LOOP FOR I FROM 0 TO 10 COLLECT
+	   (sample rng :gaussian-ziggurat :sigma 10.0d0)))))
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 0.0d0) 0.5d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 1.d-32) 0.5d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 1.d-16) 0.5d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 1.d-8) 0.5000000039894228d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 0.5d0) 0.6914624612740131d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 0.7d0) 0.758036347776927d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 5.0d0) 0.9999997133484281d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 10.0d0) 1.0d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 30.0d0) 1.0d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 40.0d0) 1.0d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P 1.d10) 1.0d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P -1.d-32) 0.5d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P -1.d-16) 0.49999999999999994d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P -1.d-8) 0.4999999960105772d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P -0.5d0) 0.3085375387259869d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P -0.7d0) 0.241963652223073d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P -5.0d0) 2.866515718791939d-7 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P -10.0d0) 7.619853024160525d-24 +TEST-TOL3+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P -30.0d0) 4.906713927148187d-198 +TEST-TOL3+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-P -1.d10) 0.0d0 +DBL-EPSILON+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q 0.0d0) 0.5d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q 1.d-32) 0.5d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q 1.d-16) 0.49999999999999994d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q 1.d-8) 0.4999999960105772d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q 0.5d0) 0.3085375387259869d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q 0.7d0) 0.241963652223073d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q 5.0d0) 2.866515718791939d-7 +TEST-TOL3+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q 10.0d0) 7.619853024160525d-24 +TEST-TOL3+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q 30.0d0) 4.906713927148187d-198 +TEST-TOL3+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q 1.d10) 0.0d0 +DBL-EPSILON+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q -1.d-32) 0.5d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q -1.d-16) 0.5d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q -1.d-8) 0.5000000039894228d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q -0.5d0) 0.6914624612740131d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q -0.7d0) 0.758036347776927d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q -5.0d0) 0.9999997133484281d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q -10.0d0) 1.0d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q -30.0d0) 1.0d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q -40.0d0) 1.0d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-Q -1.d10) 1.0d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.9999997133d0) 5.0d0 1.d-4)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.9999683288d0) 4.0d0 1.d-6)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.998650102d0) 3.0d0 1.d-8)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.977249868051821d0) 2.0d0 1.d-14)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.841344746068543d0) 1.0d0 +TEST-TOL3+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.691462461274013d0) 0.5d0 +TEST-TOL2+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.655421741610324d0) 0.4d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.617911422188953d0) 0.3d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.579259709439103d0) 0.2d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.539827837277029d0) 0.1d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.5d0) 0.0d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.460172162722971d0) -0.1d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.420740290560897d0) -0.2d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.382088577811047d0) -0.3d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.344578258389676d0) -0.4d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.308537538725987d0) -0.5d0 +TEST-TOL2+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.158655253931457d0) -1.0d0 +TEST-TOL3+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.022750131948179d0) -2.0d0 1.d-14)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 0.001349898d0) -3.0d0 1.d-8)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 3.16712d-5) -4.0d0 1.d-6)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 2.86648d-7) -5.0d0 1.d-4)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-PINV 7.61985302416052d-24) -10.0d0 1.d-4)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 7.61985302416052d-24) 10.0d0 1.d-4)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 2.86648d-7) 5.0d0 1.d-4)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 3.16712d-5) 4.0d0 1.d-6)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.001349898d0) 3.0d0 1.d-8)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.022750131948179d0) 2.0d0 1.d-14)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.158655253931457d0) 1.0d0 +TEST-TOL3+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.308537538725987d0) 0.5d0 +TEST-TOL2+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.344578258389676d0) 0.4d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.382088577811047d0) 0.3d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.420740290560897d0) 0.2d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.460172162722971d0) 0.1d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.5d0) 0.0d0 +TEST-TOL0+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.539827837277029d0) -0.1d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.579259709439103d0) -0.2d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.617911422188953d0) -0.3d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.655421741610324d0) -0.4d0 +TEST-TOL1+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.691462461274013d0) -0.5d0 +TEST-TOL2+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.841344746068543d0) -1.0d0 +TEST-TOL3+)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.977249868051821d0) -2.0d0 1.d-14)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.998650102d0) -3.0d0 1.d-8)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.9999683288d0) -4.0d0 1.d-6)
+  (ASSERT-TO-TOLERANCE (UGAUSSIAN-QINV 0.9999997133d0) -5.0d0 1.d-4))