Index: /trunk/psLib/src/dataManip/psDataManipErrors.dat
===================================================================
--- /trunk/psLib/src/dataManip/psDataManipErrors.dat	(revision 2432)
+++ /trunk/psLib/src/dataManip/psDataManipErrors.dat	(revision 2433)
@@ -38,4 +38,6 @@
 psFunctions_NOT_ENOUGH_DATAPOINTS      Given vector does not have enough data points for %d-order interpolation.
 #
+psRandom_UNKNOWN_RANDFOM_NUMBER_GENERATOR_TYPE Unknown Random Number Generator Type
+#
 psMatrix_COUNT_DIFFERS                 Number of elements inconsistent, %d vs %d.  Number of elements must match.
 psMatrix_IMAGE_SIZE_DIFFERS            Specified psImage dimensions differed, %dx%d vs %dx%d.
Index: /trunk/psLib/src/dataManip/psDataManipErrors.h
===================================================================
--- /trunk/psLib/src/dataManip/psDataManipErrors.h	(revision 2432)
+++ /trunk/psLib/src/dataManip/psDataManipErrors.h	(revision 2433)
@@ -7,6 +7,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-11-24 00:05:54 $
+ *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-11-24 21:59:43 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -54,4 +54,5 @@
 #define PS_ERRORTEXT_psFunctions_TYPE_NOT_SUPPORTED "Input psVector type, %s, is not supported."
 #define PS_ERRORTEXT_psFunctions_NOT_ENOUGH_DATAPOINTS "Given vector does not have enough data points for %d-order interpolation."
+#define PS_ERRORTEXT_psRandom_UNKNOWN_RANDFOM_NUMBER_GENERATOR_TYPE "Unknown Random Number Generator Type"
 #define PS_ERRORTEXT_psMatrix_COUNT_DIFFERS "Number of elements inconsistent, %d vs %d.  Number of elements must match."
 #define PS_ERRORTEXT_psMatrix_IMAGE_SIZE_DIFFERS "Specified psImage dimensions differed, %dx%d vs %dx%d."
Index: /trunk/psLib/src/dataManip/psFunctions.c
===================================================================
--- /trunk/psLib/src/dataManip/psFunctions.c	(revision 2432)
+++ /trunk/psLib/src/dataManip/psFunctions.c	(revision 2433)
@@ -7,6 +7,6 @@
  *  polynomials.  It also contains a Gaussian functions.
  *
- *  @version $Revision: 1.68 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-11-24 20:34:13 $
+ *  @version $Revision: 1.69 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-11-24 21:59:43 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -399,6 +399,6 @@
             if (myPoly->mask[loop_x][loop_y] == 0) {
                 polySum += myPoly->coeff[loop_x][loop_y] *
-                           psPolynomial1DEval(x, chebPolys[loop_x]) *
-                           psPolynomial1DEval(y, chebPolys[loop_y]);
+                           psPolynomial1DEval(chebPolys[loop_x], x) *
+                           psPolynomial1DEval(chebPolys[loop_y], y);
             }
         }
@@ -465,7 +465,7 @@
                 if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
                     polySum += myPoly->coeff[loop_x][loop_y][loop_z] *
-                               psPolynomial1DEval(x, chebPolys[loop_x]) *
-                               psPolynomial1DEval(y, chebPolys[loop_y]) *
-                               psPolynomial1DEval(z, chebPolys[loop_z]);
+                               psPolynomial1DEval(chebPolys[loop_x], x) *
+                               psPolynomial1DEval(chebPolys[loop_y], y) *
+                               psPolynomial1DEval(chebPolys[loop_z], z);
                 }
             }
@@ -545,8 +545,8 @@
                     if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
                         polySum += myPoly->coeff[loop_w][loop_x][loop_y][loop_z] *
-                                   psPolynomial1DEval(w, chebPolys[loop_w]) *
-                                   psPolynomial1DEval(x, chebPolys[loop_x]) *
-                                   psPolynomial1DEval(y, chebPolys[loop_y]) *
-                                   psPolynomial1DEval(z, chebPolys[loop_z]);
+                                   psPolynomial1DEval(chebPolys[loop_w], w) *
+                                   psPolynomial1DEval(chebPolys[loop_x], x) *
+                                   psPolynomial1DEval(chebPolys[loop_y], y) *
+                                   psPolynomial1DEval(chebPolys[loop_z], z);
                     }
                 }
@@ -651,6 +651,6 @@
             if (myPoly->mask[loop_x][loop_y] == 0) {
                 polySum += myPoly->coeff[loop_x][loop_y] *
-                           psPolynomial1DEval(x, chebPolys[loop_x]) *
-                           psPolynomial1DEval(y, chebPolys[loop_y]);
+                           psPolynomial1DEval(chebPolys[loop_x], x) *
+                           psPolynomial1DEval(chebPolys[loop_y], y);
             }
         }
@@ -718,7 +718,7 @@
                 if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
                     polySum += myPoly->coeff[loop_x][loop_y][loop_z] *
-                               psPolynomial1DEval(x, chebPolys[loop_x]) *
-                               psPolynomial1DEval(y, chebPolys[loop_y]) *
-                               psPolynomial1DEval(z, chebPolys[loop_z]);
+                               psPolynomial1DEval(chebPolys[loop_x], x) *
+                               psPolynomial1DEval(chebPolys[loop_y], y) *
+                               psPolynomial1DEval(chebPolys[loop_z], z);
                 }
             }
@@ -798,8 +798,8 @@
                     if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
                         polySum += myPoly->coeff[loop_w][loop_x][loop_y][loop_z] *
-                                   psPolynomial1DEval(w, chebPolys[loop_w]) *
-                                   psPolynomial1DEval(x, chebPolys[loop_x]) *
-                                   psPolynomial1DEval(y, chebPolys[loop_y]) *
-                                   psPolynomial1DEval(z, chebPolys[loop_z]);
+                                   psPolynomial1DEval(chebPolys[loop_w], w) *
+                                   psPolynomial1DEval(chebPolys[loop_x], x) *
+                                   psPolynomial1DEval(chebPolys[loop_y], y) *
+                                   psPolynomial1DEval(chebPolys[loop_z], z);
                     }
                 }
@@ -1160,5 +1160,5 @@
 }
 
-float psPolynomial1DEval(float x, const psPolynomial1D* myPoly)
+float psPolynomial1DEval(const psPolynomial1D* myPoly, float x)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1176,6 +1176,6 @@
 }
 
-psVector *psPolynomial1DEvalVector(const psVector *x,
-                                   const psPolynomial1D *myPoly)
+psVector *psPolynomial1DEvalVector(const psPolynomial1D *myPoly,
+                                   const psVector *x)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1189,5 +1189,5 @@
     tmp = psVectorAlloc(x->n, PS_TYPE_F32);
     for (i=0;i<x->n;i++) {
-        tmp->data.F32[i] = psPolynomial1DEval(x->data.F32[i], myPoly);
+        tmp->data.F32[i] = psPolynomial1DEval(myPoly, x->data.F32[i]);
     }
 
@@ -1198,5 +1198,5 @@
 }
 
-float psPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly)
+float psPolynomial2DEval(const psPolynomial2D* myPoly, float x, float y)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1214,7 +1214,8 @@
 }
 
-psVector *psPolynomial2DEvalVector(const psVector *x,
-                                   const psVector *y,
-                                   const psPolynomial2D *myPoly)
+psVector *psPolynomial2DEvalVector(const psPolynomial2D *myPoly,
+                                   const psVector *x,
+                                   const psVector *y)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1237,7 +1238,8 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F32);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F32[i] = psPolynomial2DEval(myX->data.F32[i],
-                                              myY->data.F32[i],
-                                              myPoly);
+        tmp->data.F32[i] = psPolynomial2DEval(myPoly,
+                                              myX->data.F32[i],
+                                              myY->data.F32[i]);
+
     }
 
@@ -1251,5 +1253,5 @@
 }
 
-float psPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly)
+float psPolynomial3DEval(const psPolynomial3D* myPoly, float x, float y, float z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1267,8 +1269,9 @@
 }
 
-psVector *psPolynomial3DEvalVector(const psVector *x,
+psVector *psPolynomial3DEvalVector(const psPolynomial3D *myPoly,
+                                   const psVector *x,
                                    const psVector *y,
-                                   const psVector *z,
-                                   const psPolynomial3D *myPoly)
+                                   const psVector *z)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1297,8 +1300,9 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F32);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F32[i] = psPolynomial3DEval(myX->data.F32[i],
+        tmp->data.F32[i] = psPolynomial3DEval(myPoly,
+                                              myX->data.F32[i],
                                               myY->data.F32[i],
-                                              myZ->data.F32[i],
-                                              myPoly);
+                                              myZ->data.F32[i]);
+
     }
 
@@ -1315,5 +1319,5 @@
 }
 
-float psPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly)
+float psPolynomial4DEval(const psPolynomial4D* myPoly, float w, float x, float y, float z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1331,9 +1335,9 @@
 }
 
-psVector *psPolynomial4DEvalVector(const psVector *w,
+psVector *psPolynomial4DEvalVector(const psPolynomial4D *myPoly,
+                                   const psVector *w,
                                    const psVector *x,
                                    const psVector *y,
-                                   const psVector *z,
-                                   const psPolynomial4D *myPoly)
+                                   const psVector *z)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1368,9 +1372,10 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F32);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F32[i] = psPolynomial4DEval(myW->data.F32[i],
+        tmp->data.F32[i] = psPolynomial4DEval(myPoly,
+                                              myW->data.F32[i],
                                               myX->data.F32[i],
                                               myY->data.F32[i],
-                                              myZ->data.F32[i],
-                                              myPoly);
+                                              myZ->data.F32[i]);
+
     }
 
@@ -1555,5 +1560,5 @@
 
 
-double psDPolynomial1DEval(double x, const psDPolynomial1D* myPoly)
+double psDPolynomial1DEval(const psDPolynomial1D* myPoly, double x)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1571,6 +1576,7 @@
 }
 
-psVector *psDPolynomial1DEvalVector(const psVector *x,
-                                    const psDPolynomial1D *myPoly)
+psVector *psDPolynomial1DEvalVector(const psDPolynomial1D *myPoly,
+                                    const psVector *x)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1584,5 +1590,6 @@
     tmp = psVectorAlloc(x->n, PS_TYPE_F64);
     for (i=0;i<x->n;i++) {
-        tmp->data.F64[i] = psDPolynomial1DEval(x->data.F64[i], myPoly);
+        tmp->data.F64[i] = psDPolynomial1DEval(myPoly,
+                                               x->data.F64[i]);
     }
 
@@ -1594,5 +1601,7 @@
 
 
-double psDPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly)
+double psDPolynomial2DEval(const psDPolynomial2D* myPoly,
+                           double x,
+                           double y)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1610,7 +1619,7 @@
 }
 
-psVector *psDPolynomial2DEvalVector(const psVector *x,
-                                    const psVector *y,
-                                    const psDPolynomial2D *myPoly)
+psVector *psDPolynomial2DEvalVector(const psDPolynomial2D *myPoly,
+                                    const psVector *x,
+                                    const psVector *y)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1633,7 +1642,8 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F64);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F64[i] = psDPolynomial2DEval(myX->data.F64[i],
-                                               myY->data.F64[i],
-                                               myPoly);
+        tmp->data.F64[i] = psDPolynomial2DEval(myPoly,
+                                               myX->data.F64[i],
+                                               myY->data.F64[i]);
+
     }
 
@@ -1648,5 +1658,8 @@
 
 
-double psDPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly)
+double psDPolynomial3DEval(const psDPolynomial3D* myPoly,
+                           double x,
+                           double y,
+                           double z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1664,8 +1677,9 @@
 }
 
-psVector *psDPolynomial3DEvalVector(const psVector *x,
+psVector *psDPolynomial3DEvalVector(const psDPolynomial3D *myPoly,
+                                    const psVector *x,
                                     const psVector *y,
-                                    const psVector *z,
-                                    const psDPolynomial3D *myPoly)
+                                    const psVector *z)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1694,8 +1708,9 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F64);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F64[i] = psDPolynomial3DEval(myX->data.F64[i],
+        tmp->data.F64[i] = psDPolynomial3DEval(myPoly,
+                                               myX->data.F64[i],
                                                myY->data.F64[i],
-                                               myZ->data.F64[i],
-                                               myPoly);
+                                               myZ->data.F64[i]);
+
     }
 
@@ -1712,5 +1727,9 @@
 }
 
-double psDPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly)
+double psDPolynomial4DEval(const psDPolynomial4D* myPoly,
+                           double w,
+                           double x,
+                           double y,
+                           double z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1728,9 +1747,9 @@
 }
 
-psVector *psDPolynomial4DEvalVector(const psVector *w,
+psVector *psDPolynomial4DEvalVector(const psDPolynomial4D *myPoly,
+                                    const psVector *w,
                                     const psVector *x,
                                     const psVector *y,
-                                    const psVector *z,
-                                    const psDPolynomial4D *myPoly)
+                                    const psVector *z)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1765,9 +1784,10 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F64);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F64[i] = psDPolynomial4DEval(myW->data.F64[i],
+        tmp->data.F64[i] = psDPolynomial4DEval(myPoly,
+                                               myW->data.F64[i],
                                                myX->data.F64[i],
                                                myY->data.F64[i],
-                                               myZ->data.F64[i],
-                                               myPoly);
+                                               myZ->data.F64[i]);
+
     }
 
@@ -2110,11 +2130,14 @@
 
         if (x < (spline->domains)[0]) {
-            return(psPolynomial1DEval(x, spline->spline[0]));
+            return(psPolynomial1DEval(spline->spline[0],
+                                      x));
         } else if (x > (spline->domains)[n-1]) {
-            return(psPolynomial1DEval(x, spline->spline[n-1]));
-        }
-    }
-
-    return(psPolynomial1DEval(x, spline->spline[binNum]));
+            return(psPolynomial1DEval(spline->spline[n-1],
+                                      x));
+        }
+    }
+
+    return(psPolynomial1DEval(spline->spline[binNum],
+                              x));
 }
 
Index: /trunk/psLib/src/dataManip/psFunctions.h
===================================================================
--- /trunk/psLib/src/dataManip/psFunctions.h	(revision 2432)
+++ /trunk/psLib/src/dataManip/psFunctions.h	(revision 2433)
@@ -12,6 +12,6 @@
 *  @author George Gusciora, MHPCC
 *
-*  @version $Revision: 1.34 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-11-24 20:34:13 $
+*  @version $Revision: 1.35 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-11-24 21:59:43 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -163,6 +163,6 @@
  */
 float psPolynomial1DEval(
-    float x,                           ///< location at which to evaluate
-    const psPolynomial1D* myPoly       ///< Coefficients for the polynomial
+    const psPolynomial1D* myPoly,       ///< Coefficients for the polynomial
+    float x                           ///< location at which to evaluate
 );
 
@@ -172,18 +172,18 @@
  */
 float psPolynomial2DEval(
+    const psPolynomial2D* myPoly,       ///< Coefficients for the polynomial
+    float x,                           ///< x location at which to evaluate
+    float y                           ///< y location at which to evaluate
+);
+
+/** Evaluates a 3-D polynomial at specific coordinates.
+ *
+ *  @return float    result of polynomial at given location
+ */
+float psPolynomial3DEval(
+    const psPolynomial3D* myPoly,       ///< Coefficients for the polynomial
     float x,                           ///< x location at which to evaluate
     float y,                           ///< y location at which to evaluate
-    const psPolynomial2D* myPoly       ///< Coefficients for the polynomial
-);
-
-/** Evaluates a 3-D polynomial at specific coordinates.
- *
- *  @return float    result of polynomial at given location
- */
-float psPolynomial3DEval(
-    float x,                           ///< x location at which to evaluate
-    float y,                           ///< y location at which to evaluate
-    float z,                           ///< z location at which to evaluate
-    const psPolynomial3D* myPoly       ///< Coefficients for the polynomial
+    float z                           ///< z location at which to evaluate
 );
 
@@ -193,32 +193,36 @@
  */
 float psPolynomial4DEval(
+    const psPolynomial4D* myPoly,       ///< Coefficients for the polynomial
     float w,                           ///< w location at which to evaluate
     float x,                           ///< x location at which to evaluate
     float y,                           ///< y location at which to evaluate
-    float z,                           ///< z location at which to evaluate
-    const psPolynomial4D* myPoly       ///< Coefficients for the polynomial
-);
-
-psVector *psPolynomial1DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                   const psPolynomial1D *myPoly   ///< Coefficients for the polynomial
-                                  );
-
-psVector *psPolynomial2DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                   const psVector *y,             ///< y locations at which to evaluate
-                                   const psPolynomial2D *myPoly   ///< Coefficients for the polynomial
-                                  );
-
-psVector *psPolynomial3DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                   const psVector *y,             ///< y locations at which to evaluate
-                                   const psVector *z,             ///< z locations at which to evaluate
-                                   const psPolynomial3D *myPoly   ///< Coefficients for the polynomial
-                                  );
-
-psVector *psPolynomial4DEvalVector(const psVector *w,             ///< w locations at which to evaluate
-                                   const psVector *x,             ///< x locations at which to evaluate
-                                   const psVector *y,             ///< y locations at which to evaluate
-                                   const psVector *z,             ///< z locations at which to evaluate
-                                   const psPolynomial4D *myPoly   ///< Coefficients for the polynomial
-                                  );
+    float z                           ///< z location at which to evaluate
+);
+
+psVector *psPolynomial1DEvalVector(
+    const psPolynomial1D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *x             ///< x locations at which to evaluate
+);
+
+psVector *psPolynomial2DEvalVector(
+    const psPolynomial2D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y             ///< y locations at which to evaluate
+);
+
+psVector *psPolynomial3DEvalVector(
+    const psPolynomial3D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
+
+psVector *psPolynomial4DEvalVector(
+    const psPolynomial4D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *w,             ///< w locations at which to evaluate
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
 
 /*****************************************************************************/
@@ -323,6 +327,6 @@
  */
 double psDPolynomial1DEval(
-    double x,                          ///< Value at which to evaluate
-    const psDPolynomial1D* myPoly      ///< Coefficients for the polynomial
+    const psDPolynomial1D* myPoly,      ///< Coefficients for the polynomial
+    double x                          ///< Value at which to evaluate
 );
 
@@ -332,7 +336,7 @@
  */
 double psDPolynomial2DEval(
+    const psDPolynomial2D* myPoly,       ///< Coefficients for the polynomial
     double x,                           ///< Value x at which to evaluate
-    double y,                           ///< Value y at which to evaluate
-    const psDPolynomial2D* myPoly       ///< Coefficients for the polynomial
+    double y            ///< Value y at which to evaluate
 );
 
@@ -342,8 +346,8 @@
  */
 double psDPolynomial3DEval(
+    const psDPolynomial3D* myPoly,      ///< Coefficients for the polynomial
     double x,                          ///< Value x at which to evaluate
     double y,                          ///< Value y at which to evaluate
-    double z,                          ///< Value z at which to evaluate
-    const psDPolynomial3D* myPoly      ///< Coefficients for the polynomial
+    double z     ///< Value z at which to evaluate
 );
 
@@ -353,32 +357,36 @@
  */
 double psDPolynomial4DEval(
+    const psDPolynomial4D* myPoly,      ///< Coefficients for the polynomial
     double w,                          ///< Value w at which to evaluate
     double x,                          ///< Value x at which to evaluate
     double y,                          ///< Value y at which to evaluate
-    double z,                          ///< Value z at which to evaluate
-    const psDPolynomial4D* myPoly      ///< Coefficients for the polynomial
-);
-
-psVector *psDPolynomial1DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                    const psDPolynomial1D *myPoly  ///< Coefficients for the polynomial
-                                   );
-
-psVector *psDPolynomial2DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                    const psVector *y,             ///< y locations at which to evaluate
-                                    const psDPolynomial2D *myPoly  ///< Coefficients for the polynomial
-                                   );
-
-psVector *psDPolynomial3DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                    const psVector *y,             ///< y locations at which to evaluate
-                                    const psVector *z,             ///< z locations at which to evaluate
-                                    const psDPolynomial3D *myPoly  ///< Coefficients for the polynomial
-                                   );
-
-psVector *psDPolynomial4DEvalVector(const psVector *w,             ///< w locations at which to evaluate
-                                    const psVector *x,             ///< x locations at which to evaluate
-                                    const psVector *y,             ///< y locations at which to evaluate
-                                    const psVector *z,             ///< z locations at which to evaluate
-                                    const psDPolynomial4D *myPoly  ///< Coefficients for the polynomial
-                                   );
+    double z     ///< Value z at which to evaluate
+);
+
+psVector *psDPolynomial1DEvalVector(
+    const psDPolynomial1D *myPoly, ///< Coefficients for the polynomial
+    const psVector *x             ///< x locations at which to evaluate
+);
+
+psVector *psDPolynomial2DEvalVector(
+    const psDPolynomial2D *myPoly,  ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y             ///< y locations at which to evaluate
+);
+
+psVector *psDPolynomial3DEvalVector(
+    const psDPolynomial3D *myPoly,  ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
+
+psVector *psDPolynomial4DEvalVector(
+    const psDPolynomial4D *myPoly,  ///< Coefficients for the polynomial
+    const psVector *w,             ///< w locations at which to evaluate
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
 
 
Index: /trunk/psLib/src/dataManip/psRandom.c
===================================================================
--- /trunk/psLib/src/dataManip/psRandom.c	(revision 2432)
+++ /trunk/psLib/src/dataManip/psRandom.c	(revision 2433)
@@ -10,6 +10,6 @@
 *  @author GLG, MHPCC
 *
-*  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-11-24 20:55:01 $
+*  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-11-24 21:59:43 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -20,7 +20,15 @@
 #include <float.h>
 #include <math.h>
+#include <gsl/gsl_rng.h>
+#include <gsl/gsl_randist.h>
 
+#include "psMemory.h"
 #include "psRandom.h"
 #include "psScalar.h"
+#include "psError.h"
+#include "psTrace.h"
+#include "psLogMsg.h"
+#include "psConstants.h"
+#include "psDataManipErrors.h"
 
 /*
@@ -39,4 +47,18 @@
                         psU64 seed)
 {
+    gsl_rng *r = NULL;
+    psRandom *myRNG = (psRandom *) psAlloc(sizeof(psRandom));
+
+    switch (type) {
+    case PS_RANDOM_TAUS:
+        r = gsl_rng_alloc(gsl_rng_taus);
+        myRNG->gsl = r;
+        return(myRNG);
+
+    default:
+        psError(PS_ERR_UNEXPECTED_NULL,
+                true,
+                PS_ERRORTEXT_psRandom_UNKNOWN_RANDFOM_NUMBER_GENERATOR_TYPE);
+    }
     return(NULL);
 }
@@ -44,18 +66,21 @@
 void psRandomReset(psRandom *rand,
                    psU64 seed)
-{}
+{
+    gsl_rng_set(rand->gsl, seed);
+}
 
 psF64 psRandomUniform(const psRandom *r)
 {
-    return(0.0);
+    return(gsl_rng_uniform(r->gsl));
 }
 
 psF64 psRandomGaussian(const psRandom *r)
 {
-    return(0.0);
+    // XXX: What should sigma be?
+    return(gsl_ran_gaussian(r->gsl, 1.0));
 }
 
 psF64 psRandomPoisson(const psRandom *r, psF64 mean)
 {
-    return(0.0);
+    return((psF64) gsl_ran_poisson(r->gsl, mean));
 }
Index: /trunk/psLib/src/math/psPolynomial.c
===================================================================
--- /trunk/psLib/src/math/psPolynomial.c	(revision 2432)
+++ /trunk/psLib/src/math/psPolynomial.c	(revision 2433)
@@ -7,6 +7,6 @@
  *  polynomials.  It also contains a Gaussian functions.
  *
- *  @version $Revision: 1.68 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-11-24 20:34:13 $
+ *  @version $Revision: 1.69 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-11-24 21:59:43 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -399,6 +399,6 @@
             if (myPoly->mask[loop_x][loop_y] == 0) {
                 polySum += myPoly->coeff[loop_x][loop_y] *
-                           psPolynomial1DEval(x, chebPolys[loop_x]) *
-                           psPolynomial1DEval(y, chebPolys[loop_y]);
+                           psPolynomial1DEval(chebPolys[loop_x], x) *
+                           psPolynomial1DEval(chebPolys[loop_y], y);
             }
         }
@@ -465,7 +465,7 @@
                 if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
                     polySum += myPoly->coeff[loop_x][loop_y][loop_z] *
-                               psPolynomial1DEval(x, chebPolys[loop_x]) *
-                               psPolynomial1DEval(y, chebPolys[loop_y]) *
-                               psPolynomial1DEval(z, chebPolys[loop_z]);
+                               psPolynomial1DEval(chebPolys[loop_x], x) *
+                               psPolynomial1DEval(chebPolys[loop_y], y) *
+                               psPolynomial1DEval(chebPolys[loop_z], z);
                 }
             }
@@ -545,8 +545,8 @@
                     if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
                         polySum += myPoly->coeff[loop_w][loop_x][loop_y][loop_z] *
-                                   psPolynomial1DEval(w, chebPolys[loop_w]) *
-                                   psPolynomial1DEval(x, chebPolys[loop_x]) *
-                                   psPolynomial1DEval(y, chebPolys[loop_y]) *
-                                   psPolynomial1DEval(z, chebPolys[loop_z]);
+                                   psPolynomial1DEval(chebPolys[loop_w], w) *
+                                   psPolynomial1DEval(chebPolys[loop_x], x) *
+                                   psPolynomial1DEval(chebPolys[loop_y], y) *
+                                   psPolynomial1DEval(chebPolys[loop_z], z);
                     }
                 }
@@ -651,6 +651,6 @@
             if (myPoly->mask[loop_x][loop_y] == 0) {
                 polySum += myPoly->coeff[loop_x][loop_y] *
-                           psPolynomial1DEval(x, chebPolys[loop_x]) *
-                           psPolynomial1DEval(y, chebPolys[loop_y]);
+                           psPolynomial1DEval(chebPolys[loop_x], x) *
+                           psPolynomial1DEval(chebPolys[loop_y], y);
             }
         }
@@ -718,7 +718,7 @@
                 if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
                     polySum += myPoly->coeff[loop_x][loop_y][loop_z] *
-                               psPolynomial1DEval(x, chebPolys[loop_x]) *
-                               psPolynomial1DEval(y, chebPolys[loop_y]) *
-                               psPolynomial1DEval(z, chebPolys[loop_z]);
+                               psPolynomial1DEval(chebPolys[loop_x], x) *
+                               psPolynomial1DEval(chebPolys[loop_y], y) *
+                               psPolynomial1DEval(chebPolys[loop_z], z);
                 }
             }
@@ -798,8 +798,8 @@
                     if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
                         polySum += myPoly->coeff[loop_w][loop_x][loop_y][loop_z] *
-                                   psPolynomial1DEval(w, chebPolys[loop_w]) *
-                                   psPolynomial1DEval(x, chebPolys[loop_x]) *
-                                   psPolynomial1DEval(y, chebPolys[loop_y]) *
-                                   psPolynomial1DEval(z, chebPolys[loop_z]);
+                                   psPolynomial1DEval(chebPolys[loop_w], w) *
+                                   psPolynomial1DEval(chebPolys[loop_x], x) *
+                                   psPolynomial1DEval(chebPolys[loop_y], y) *
+                                   psPolynomial1DEval(chebPolys[loop_z], z);
                     }
                 }
@@ -1160,5 +1160,5 @@
 }
 
-float psPolynomial1DEval(float x, const psPolynomial1D* myPoly)
+float psPolynomial1DEval(const psPolynomial1D* myPoly, float x)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1176,6 +1176,6 @@
 }
 
-psVector *psPolynomial1DEvalVector(const psVector *x,
-                                   const psPolynomial1D *myPoly)
+psVector *psPolynomial1DEvalVector(const psPolynomial1D *myPoly,
+                                   const psVector *x)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1189,5 +1189,5 @@
     tmp = psVectorAlloc(x->n, PS_TYPE_F32);
     for (i=0;i<x->n;i++) {
-        tmp->data.F32[i] = psPolynomial1DEval(x->data.F32[i], myPoly);
+        tmp->data.F32[i] = psPolynomial1DEval(myPoly, x->data.F32[i]);
     }
 
@@ -1198,5 +1198,5 @@
 }
 
-float psPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly)
+float psPolynomial2DEval(const psPolynomial2D* myPoly, float x, float y)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1214,7 +1214,8 @@
 }
 
-psVector *psPolynomial2DEvalVector(const psVector *x,
-                                   const psVector *y,
-                                   const psPolynomial2D *myPoly)
+psVector *psPolynomial2DEvalVector(const psPolynomial2D *myPoly,
+                                   const psVector *x,
+                                   const psVector *y)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1237,7 +1238,8 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F32);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F32[i] = psPolynomial2DEval(myX->data.F32[i],
-                                              myY->data.F32[i],
-                                              myPoly);
+        tmp->data.F32[i] = psPolynomial2DEval(myPoly,
+                                              myX->data.F32[i],
+                                              myY->data.F32[i]);
+
     }
 
@@ -1251,5 +1253,5 @@
 }
 
-float psPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly)
+float psPolynomial3DEval(const psPolynomial3D* myPoly, float x, float y, float z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1267,8 +1269,9 @@
 }
 
-psVector *psPolynomial3DEvalVector(const psVector *x,
+psVector *psPolynomial3DEvalVector(const psPolynomial3D *myPoly,
+                                   const psVector *x,
                                    const psVector *y,
-                                   const psVector *z,
-                                   const psPolynomial3D *myPoly)
+                                   const psVector *z)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1297,8 +1300,9 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F32);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F32[i] = psPolynomial3DEval(myX->data.F32[i],
+        tmp->data.F32[i] = psPolynomial3DEval(myPoly,
+                                              myX->data.F32[i],
                                               myY->data.F32[i],
-                                              myZ->data.F32[i],
-                                              myPoly);
+                                              myZ->data.F32[i]);
+
     }
 
@@ -1315,5 +1319,5 @@
 }
 
-float psPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly)
+float psPolynomial4DEval(const psPolynomial4D* myPoly, float w, float x, float y, float z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1331,9 +1335,9 @@
 }
 
-psVector *psPolynomial4DEvalVector(const psVector *w,
+psVector *psPolynomial4DEvalVector(const psPolynomial4D *myPoly,
+                                   const psVector *w,
                                    const psVector *x,
                                    const psVector *y,
-                                   const psVector *z,
-                                   const psPolynomial4D *myPoly)
+                                   const psVector *z)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1368,9 +1372,10 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F32);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F32[i] = psPolynomial4DEval(myW->data.F32[i],
+        tmp->data.F32[i] = psPolynomial4DEval(myPoly,
+                                              myW->data.F32[i],
                                               myX->data.F32[i],
                                               myY->data.F32[i],
-                                              myZ->data.F32[i],
-                                              myPoly);
+                                              myZ->data.F32[i]);
+
     }
 
@@ -1555,5 +1560,5 @@
 
 
-double psDPolynomial1DEval(double x, const psDPolynomial1D* myPoly)
+double psDPolynomial1DEval(const psDPolynomial1D* myPoly, double x)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1571,6 +1576,7 @@
 }
 
-psVector *psDPolynomial1DEvalVector(const psVector *x,
-                                    const psDPolynomial1D *myPoly)
+psVector *psDPolynomial1DEvalVector(const psDPolynomial1D *myPoly,
+                                    const psVector *x)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1584,5 +1590,6 @@
     tmp = psVectorAlloc(x->n, PS_TYPE_F64);
     for (i=0;i<x->n;i++) {
-        tmp->data.F64[i] = psDPolynomial1DEval(x->data.F64[i], myPoly);
+        tmp->data.F64[i] = psDPolynomial1DEval(myPoly,
+                                               x->data.F64[i]);
     }
 
@@ -1594,5 +1601,7 @@
 
 
-double psDPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly)
+double psDPolynomial2DEval(const psDPolynomial2D* myPoly,
+                           double x,
+                           double y)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1610,7 +1619,7 @@
 }
 
-psVector *psDPolynomial2DEvalVector(const psVector *x,
-                                    const psVector *y,
-                                    const psDPolynomial2D *myPoly)
+psVector *psDPolynomial2DEvalVector(const psDPolynomial2D *myPoly,
+                                    const psVector *x,
+                                    const psVector *y)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1633,7 +1642,8 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F64);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F64[i] = psDPolynomial2DEval(myX->data.F64[i],
-                                               myY->data.F64[i],
-                                               myPoly);
+        tmp->data.F64[i] = psDPolynomial2DEval(myPoly,
+                                               myX->data.F64[i],
+                                               myY->data.F64[i]);
+
     }
 
@@ -1648,5 +1658,8 @@
 
 
-double psDPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly)
+double psDPolynomial3DEval(const psDPolynomial3D* myPoly,
+                           double x,
+                           double y,
+                           double z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1664,8 +1677,9 @@
 }
 
-psVector *psDPolynomial3DEvalVector(const psVector *x,
+psVector *psDPolynomial3DEvalVector(const psDPolynomial3D *myPoly,
+                                    const psVector *x,
                                     const psVector *y,
-                                    const psVector *z,
-                                    const psDPolynomial3D *myPoly)
+                                    const psVector *z)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1694,8 +1708,9 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F64);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F64[i] = psDPolynomial3DEval(myX->data.F64[i],
+        tmp->data.F64[i] = psDPolynomial3DEval(myPoly,
+                                               myX->data.F64[i],
                                                myY->data.F64[i],
-                                               myZ->data.F64[i],
-                                               myPoly);
+                                               myZ->data.F64[i]);
+
     }
 
@@ -1712,5 +1727,9 @@
 }
 
-double psDPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly)
+double psDPolynomial4DEval(const psDPolynomial4D* myPoly,
+                           double w,
+                           double x,
+                           double y,
+                           double z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1728,9 +1747,9 @@
 }
 
-psVector *psDPolynomial4DEvalVector(const psVector *w,
+psVector *psDPolynomial4DEvalVector(const psDPolynomial4D *myPoly,
+                                    const psVector *w,
                                     const psVector *x,
                                     const psVector *y,
-                                    const psVector *z,
-                                    const psDPolynomial4D *myPoly)
+                                    const psVector *z)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1765,9 +1784,10 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F64);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F64[i] = psDPolynomial4DEval(myW->data.F64[i],
+        tmp->data.F64[i] = psDPolynomial4DEval(myPoly,
+                                               myW->data.F64[i],
                                                myX->data.F64[i],
                                                myY->data.F64[i],
-                                               myZ->data.F64[i],
-                                               myPoly);
+                                               myZ->data.F64[i]);
+
     }
 
@@ -2110,11 +2130,14 @@
 
         if (x < (spline->domains)[0]) {
-            return(psPolynomial1DEval(x, spline->spline[0]));
+            return(psPolynomial1DEval(spline->spline[0],
+                                      x));
         } else if (x > (spline->domains)[n-1]) {
-            return(psPolynomial1DEval(x, spline->spline[n-1]));
-        }
-    }
-
-    return(psPolynomial1DEval(x, spline->spline[binNum]));
+            return(psPolynomial1DEval(spline->spline[n-1],
+                                      x));
+        }
+    }
+
+    return(psPolynomial1DEval(spline->spline[binNum],
+                              x));
 }
 
Index: /trunk/psLib/src/math/psPolynomial.h
===================================================================
--- /trunk/psLib/src/math/psPolynomial.h	(revision 2432)
+++ /trunk/psLib/src/math/psPolynomial.h	(revision 2433)
@@ -12,6 +12,6 @@
 *  @author George Gusciora, MHPCC
 *
-*  @version $Revision: 1.34 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-11-24 20:34:13 $
+*  @version $Revision: 1.35 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-11-24 21:59:43 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -163,6 +163,6 @@
  */
 float psPolynomial1DEval(
-    float x,                           ///< location at which to evaluate
-    const psPolynomial1D* myPoly       ///< Coefficients for the polynomial
+    const psPolynomial1D* myPoly,       ///< Coefficients for the polynomial
+    float x                           ///< location at which to evaluate
 );
 
@@ -172,18 +172,18 @@
  */
 float psPolynomial2DEval(
+    const psPolynomial2D* myPoly,       ///< Coefficients for the polynomial
+    float x,                           ///< x location at which to evaluate
+    float y                           ///< y location at which to evaluate
+);
+
+/** Evaluates a 3-D polynomial at specific coordinates.
+ *
+ *  @return float    result of polynomial at given location
+ */
+float psPolynomial3DEval(
+    const psPolynomial3D* myPoly,       ///< Coefficients for the polynomial
     float x,                           ///< x location at which to evaluate
     float y,                           ///< y location at which to evaluate
-    const psPolynomial2D* myPoly       ///< Coefficients for the polynomial
-);
-
-/** Evaluates a 3-D polynomial at specific coordinates.
- *
- *  @return float    result of polynomial at given location
- */
-float psPolynomial3DEval(
-    float x,                           ///< x location at which to evaluate
-    float y,                           ///< y location at which to evaluate
-    float z,                           ///< z location at which to evaluate
-    const psPolynomial3D* myPoly       ///< Coefficients for the polynomial
+    float z                           ///< z location at which to evaluate
 );
 
@@ -193,32 +193,36 @@
  */
 float psPolynomial4DEval(
+    const psPolynomial4D* myPoly,       ///< Coefficients for the polynomial
     float w,                           ///< w location at which to evaluate
     float x,                           ///< x location at which to evaluate
     float y,                           ///< y location at which to evaluate
-    float z,                           ///< z location at which to evaluate
-    const psPolynomial4D* myPoly       ///< Coefficients for the polynomial
-);
-
-psVector *psPolynomial1DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                   const psPolynomial1D *myPoly   ///< Coefficients for the polynomial
-                                  );
-
-psVector *psPolynomial2DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                   const psVector *y,             ///< y locations at which to evaluate
-                                   const psPolynomial2D *myPoly   ///< Coefficients for the polynomial
-                                  );
-
-psVector *psPolynomial3DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                   const psVector *y,             ///< y locations at which to evaluate
-                                   const psVector *z,             ///< z locations at which to evaluate
-                                   const psPolynomial3D *myPoly   ///< Coefficients for the polynomial
-                                  );
-
-psVector *psPolynomial4DEvalVector(const psVector *w,             ///< w locations at which to evaluate
-                                   const psVector *x,             ///< x locations at which to evaluate
-                                   const psVector *y,             ///< y locations at which to evaluate
-                                   const psVector *z,             ///< z locations at which to evaluate
-                                   const psPolynomial4D *myPoly   ///< Coefficients for the polynomial
-                                  );
+    float z                           ///< z location at which to evaluate
+);
+
+psVector *psPolynomial1DEvalVector(
+    const psPolynomial1D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *x             ///< x locations at which to evaluate
+);
+
+psVector *psPolynomial2DEvalVector(
+    const psPolynomial2D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y             ///< y locations at which to evaluate
+);
+
+psVector *psPolynomial3DEvalVector(
+    const psPolynomial3D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
+
+psVector *psPolynomial4DEvalVector(
+    const psPolynomial4D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *w,             ///< w locations at which to evaluate
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
 
 /*****************************************************************************/
@@ -323,6 +327,6 @@
  */
 double psDPolynomial1DEval(
-    double x,                          ///< Value at which to evaluate
-    const psDPolynomial1D* myPoly      ///< Coefficients for the polynomial
+    const psDPolynomial1D* myPoly,      ///< Coefficients for the polynomial
+    double x                          ///< Value at which to evaluate
 );
 
@@ -332,7 +336,7 @@
  */
 double psDPolynomial2DEval(
+    const psDPolynomial2D* myPoly,       ///< Coefficients for the polynomial
     double x,                           ///< Value x at which to evaluate
-    double y,                           ///< Value y at which to evaluate
-    const psDPolynomial2D* myPoly       ///< Coefficients for the polynomial
+    double y            ///< Value y at which to evaluate
 );
 
@@ -342,8 +346,8 @@
  */
 double psDPolynomial3DEval(
+    const psDPolynomial3D* myPoly,      ///< Coefficients for the polynomial
     double x,                          ///< Value x at which to evaluate
     double y,                          ///< Value y at which to evaluate
-    double z,                          ///< Value z at which to evaluate
-    const psDPolynomial3D* myPoly      ///< Coefficients for the polynomial
+    double z     ///< Value z at which to evaluate
 );
 
@@ -353,32 +357,36 @@
  */
 double psDPolynomial4DEval(
+    const psDPolynomial4D* myPoly,      ///< Coefficients for the polynomial
     double w,                          ///< Value w at which to evaluate
     double x,                          ///< Value x at which to evaluate
     double y,                          ///< Value y at which to evaluate
-    double z,                          ///< Value z at which to evaluate
-    const psDPolynomial4D* myPoly      ///< Coefficients for the polynomial
-);
-
-psVector *psDPolynomial1DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                    const psDPolynomial1D *myPoly  ///< Coefficients for the polynomial
-                                   );
-
-psVector *psDPolynomial2DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                    const psVector *y,             ///< y locations at which to evaluate
-                                    const psDPolynomial2D *myPoly  ///< Coefficients for the polynomial
-                                   );
-
-psVector *psDPolynomial3DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                    const psVector *y,             ///< y locations at which to evaluate
-                                    const psVector *z,             ///< z locations at which to evaluate
-                                    const psDPolynomial3D *myPoly  ///< Coefficients for the polynomial
-                                   );
-
-psVector *psDPolynomial4DEvalVector(const psVector *w,             ///< w locations at which to evaluate
-                                    const psVector *x,             ///< x locations at which to evaluate
-                                    const psVector *y,             ///< y locations at which to evaluate
-                                    const psVector *z,             ///< z locations at which to evaluate
-                                    const psDPolynomial4D *myPoly  ///< Coefficients for the polynomial
-                                   );
+    double z     ///< Value z at which to evaluate
+);
+
+psVector *psDPolynomial1DEvalVector(
+    const psDPolynomial1D *myPoly, ///< Coefficients for the polynomial
+    const psVector *x             ///< x locations at which to evaluate
+);
+
+psVector *psDPolynomial2DEvalVector(
+    const psDPolynomial2D *myPoly,  ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y             ///< y locations at which to evaluate
+);
+
+psVector *psDPolynomial3DEvalVector(
+    const psDPolynomial3D *myPoly,  ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
+
+psVector *psDPolynomial4DEvalVector(
+    const psDPolynomial4D *myPoly,  ///< Coefficients for the polynomial
+    const psVector *w,             ///< w locations at which to evaluate
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
 
 
Index: /trunk/psLib/src/math/psRandom.c
===================================================================
--- /trunk/psLib/src/math/psRandom.c	(revision 2432)
+++ /trunk/psLib/src/math/psRandom.c	(revision 2433)
@@ -10,6 +10,6 @@
 *  @author GLG, MHPCC
 *
-*  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-11-24 20:55:01 $
+*  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-11-24 21:59:43 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -20,7 +20,15 @@
 #include <float.h>
 #include <math.h>
+#include <gsl/gsl_rng.h>
+#include <gsl/gsl_randist.h>
 
+#include "psMemory.h"
 #include "psRandom.h"
 #include "psScalar.h"
+#include "psError.h"
+#include "psTrace.h"
+#include "psLogMsg.h"
+#include "psConstants.h"
+#include "psDataManipErrors.h"
 
 /*
@@ -39,4 +47,18 @@
                         psU64 seed)
 {
+    gsl_rng *r = NULL;
+    psRandom *myRNG = (psRandom *) psAlloc(sizeof(psRandom));
+
+    switch (type) {
+    case PS_RANDOM_TAUS:
+        r = gsl_rng_alloc(gsl_rng_taus);
+        myRNG->gsl = r;
+        return(myRNG);
+
+    default:
+        psError(PS_ERR_UNEXPECTED_NULL,
+                true,
+                PS_ERRORTEXT_psRandom_UNKNOWN_RANDFOM_NUMBER_GENERATOR_TYPE);
+    }
     return(NULL);
 }
@@ -44,18 +66,21 @@
 void psRandomReset(psRandom *rand,
                    psU64 seed)
-{}
+{
+    gsl_rng_set(rand->gsl, seed);
+}
 
 psF64 psRandomUniform(const psRandom *r)
 {
-    return(0.0);
+    return(gsl_rng_uniform(r->gsl));
 }
 
 psF64 psRandomGaussian(const psRandom *r)
 {
-    return(0.0);
+    // XXX: What should sigma be?
+    return(gsl_ran_gaussian(r->gsl, 1.0));
 }
 
 psF64 psRandomPoisson(const psRandom *r, psF64 mean)
 {
-    return(0.0);
+    return((psF64) gsl_ran_poisson(r->gsl, mean));
 }
Index: /trunk/psLib/src/math/psSpline.c
===================================================================
--- /trunk/psLib/src/math/psSpline.c	(revision 2432)
+++ /trunk/psLib/src/math/psSpline.c	(revision 2433)
@@ -7,6 +7,6 @@
  *  polynomials.  It also contains a Gaussian functions.
  *
- *  @version $Revision: 1.68 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-11-24 20:34:13 $
+ *  @version $Revision: 1.69 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-11-24 21:59:43 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -399,6 +399,6 @@
             if (myPoly->mask[loop_x][loop_y] == 0) {
                 polySum += myPoly->coeff[loop_x][loop_y] *
-                           psPolynomial1DEval(x, chebPolys[loop_x]) *
-                           psPolynomial1DEval(y, chebPolys[loop_y]);
+                           psPolynomial1DEval(chebPolys[loop_x], x) *
+                           psPolynomial1DEval(chebPolys[loop_y], y);
             }
         }
@@ -465,7 +465,7 @@
                 if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
                     polySum += myPoly->coeff[loop_x][loop_y][loop_z] *
-                               psPolynomial1DEval(x, chebPolys[loop_x]) *
-                               psPolynomial1DEval(y, chebPolys[loop_y]) *
-                               psPolynomial1DEval(z, chebPolys[loop_z]);
+                               psPolynomial1DEval(chebPolys[loop_x], x) *
+                               psPolynomial1DEval(chebPolys[loop_y], y) *
+                               psPolynomial1DEval(chebPolys[loop_z], z);
                 }
             }
@@ -545,8 +545,8 @@
                     if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
                         polySum += myPoly->coeff[loop_w][loop_x][loop_y][loop_z] *
-                                   psPolynomial1DEval(w, chebPolys[loop_w]) *
-                                   psPolynomial1DEval(x, chebPolys[loop_x]) *
-                                   psPolynomial1DEval(y, chebPolys[loop_y]) *
-                                   psPolynomial1DEval(z, chebPolys[loop_z]);
+                                   psPolynomial1DEval(chebPolys[loop_w], w) *
+                                   psPolynomial1DEval(chebPolys[loop_x], x) *
+                                   psPolynomial1DEval(chebPolys[loop_y], y) *
+                                   psPolynomial1DEval(chebPolys[loop_z], z);
                     }
                 }
@@ -651,6 +651,6 @@
             if (myPoly->mask[loop_x][loop_y] == 0) {
                 polySum += myPoly->coeff[loop_x][loop_y] *
-                           psPolynomial1DEval(x, chebPolys[loop_x]) *
-                           psPolynomial1DEval(y, chebPolys[loop_y]);
+                           psPolynomial1DEval(chebPolys[loop_x], x) *
+                           psPolynomial1DEval(chebPolys[loop_y], y);
             }
         }
@@ -718,7 +718,7 @@
                 if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
                     polySum += myPoly->coeff[loop_x][loop_y][loop_z] *
-                               psPolynomial1DEval(x, chebPolys[loop_x]) *
-                               psPolynomial1DEval(y, chebPolys[loop_y]) *
-                               psPolynomial1DEval(z, chebPolys[loop_z]);
+                               psPolynomial1DEval(chebPolys[loop_x], x) *
+                               psPolynomial1DEval(chebPolys[loop_y], y) *
+                               psPolynomial1DEval(chebPolys[loop_z], z);
                 }
             }
@@ -798,8 +798,8 @@
                     if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
                         polySum += myPoly->coeff[loop_w][loop_x][loop_y][loop_z] *
-                                   psPolynomial1DEval(w, chebPolys[loop_w]) *
-                                   psPolynomial1DEval(x, chebPolys[loop_x]) *
-                                   psPolynomial1DEval(y, chebPolys[loop_y]) *
-                                   psPolynomial1DEval(z, chebPolys[loop_z]);
+                                   psPolynomial1DEval(chebPolys[loop_w], w) *
+                                   psPolynomial1DEval(chebPolys[loop_x], x) *
+                                   psPolynomial1DEval(chebPolys[loop_y], y) *
+                                   psPolynomial1DEval(chebPolys[loop_z], z);
                     }
                 }
@@ -1160,5 +1160,5 @@
 }
 
-float psPolynomial1DEval(float x, const psPolynomial1D* myPoly)
+float psPolynomial1DEval(const psPolynomial1D* myPoly, float x)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1176,6 +1176,6 @@
 }
 
-psVector *psPolynomial1DEvalVector(const psVector *x,
-                                   const psPolynomial1D *myPoly)
+psVector *psPolynomial1DEvalVector(const psPolynomial1D *myPoly,
+                                   const psVector *x)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1189,5 +1189,5 @@
     tmp = psVectorAlloc(x->n, PS_TYPE_F32);
     for (i=0;i<x->n;i++) {
-        tmp->data.F32[i] = psPolynomial1DEval(x->data.F32[i], myPoly);
+        tmp->data.F32[i] = psPolynomial1DEval(myPoly, x->data.F32[i]);
     }
 
@@ -1198,5 +1198,5 @@
 }
 
-float psPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly)
+float psPolynomial2DEval(const psPolynomial2D* myPoly, float x, float y)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1214,7 +1214,8 @@
 }
 
-psVector *psPolynomial2DEvalVector(const psVector *x,
-                                   const psVector *y,
-                                   const psPolynomial2D *myPoly)
+psVector *psPolynomial2DEvalVector(const psPolynomial2D *myPoly,
+                                   const psVector *x,
+                                   const psVector *y)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1237,7 +1238,8 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F32);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F32[i] = psPolynomial2DEval(myX->data.F32[i],
-                                              myY->data.F32[i],
-                                              myPoly);
+        tmp->data.F32[i] = psPolynomial2DEval(myPoly,
+                                              myX->data.F32[i],
+                                              myY->data.F32[i]);
+
     }
 
@@ -1251,5 +1253,5 @@
 }
 
-float psPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly)
+float psPolynomial3DEval(const psPolynomial3D* myPoly, float x, float y, float z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1267,8 +1269,9 @@
 }
 
-psVector *psPolynomial3DEvalVector(const psVector *x,
+psVector *psPolynomial3DEvalVector(const psPolynomial3D *myPoly,
+                                   const psVector *x,
                                    const psVector *y,
-                                   const psVector *z,
-                                   const psPolynomial3D *myPoly)
+                                   const psVector *z)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1297,8 +1300,9 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F32);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F32[i] = psPolynomial3DEval(myX->data.F32[i],
+        tmp->data.F32[i] = psPolynomial3DEval(myPoly,
+                                              myX->data.F32[i],
                                               myY->data.F32[i],
-                                              myZ->data.F32[i],
-                                              myPoly);
+                                              myZ->data.F32[i]);
+
     }
 
@@ -1315,5 +1319,5 @@
 }
 
-float psPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly)
+float psPolynomial4DEval(const psPolynomial4D* myPoly, float w, float x, float y, float z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1331,9 +1335,9 @@
 }
 
-psVector *psPolynomial4DEvalVector(const psVector *w,
+psVector *psPolynomial4DEvalVector(const psPolynomial4D *myPoly,
+                                   const psVector *w,
                                    const psVector *x,
                                    const psVector *y,
-                                   const psVector *z,
-                                   const psPolynomial4D *myPoly)
+                                   const psVector *z)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1368,9 +1372,10 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F32);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F32[i] = psPolynomial4DEval(myW->data.F32[i],
+        tmp->data.F32[i] = psPolynomial4DEval(myPoly,
+                                              myW->data.F32[i],
                                               myX->data.F32[i],
                                               myY->data.F32[i],
-                                              myZ->data.F32[i],
-                                              myPoly);
+                                              myZ->data.F32[i]);
+
     }
 
@@ -1555,5 +1560,5 @@
 
 
-double psDPolynomial1DEval(double x, const psDPolynomial1D* myPoly)
+double psDPolynomial1DEval(const psDPolynomial1D* myPoly, double x)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1571,6 +1576,7 @@
 }
 
-psVector *psDPolynomial1DEvalVector(const psVector *x,
-                                    const psDPolynomial1D *myPoly)
+psVector *psDPolynomial1DEvalVector(const psDPolynomial1D *myPoly,
+                                    const psVector *x)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1584,5 +1590,6 @@
     tmp = psVectorAlloc(x->n, PS_TYPE_F64);
     for (i=0;i<x->n;i++) {
-        tmp->data.F64[i] = psDPolynomial1DEval(x->data.F64[i], myPoly);
+        tmp->data.F64[i] = psDPolynomial1DEval(myPoly,
+                                               x->data.F64[i]);
     }
 
@@ -1594,5 +1601,7 @@
 
 
-double psDPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly)
+double psDPolynomial2DEval(const psDPolynomial2D* myPoly,
+                           double x,
+                           double y)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1610,7 +1619,7 @@
 }
 
-psVector *psDPolynomial2DEvalVector(const psVector *x,
-                                    const psVector *y,
-                                    const psDPolynomial2D *myPoly)
+psVector *psDPolynomial2DEvalVector(const psDPolynomial2D *myPoly,
+                                    const psVector *x,
+                                    const psVector *y)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1633,7 +1642,8 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F64);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F64[i] = psDPolynomial2DEval(myX->data.F64[i],
-                                               myY->data.F64[i],
-                                               myPoly);
+        tmp->data.F64[i] = psDPolynomial2DEval(myPoly,
+                                               myX->data.F64[i],
+                                               myY->data.F64[i]);
+
     }
 
@@ -1648,5 +1658,8 @@
 
 
-double psDPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly)
+double psDPolynomial3DEval(const psDPolynomial3D* myPoly,
+                           double x,
+                           double y,
+                           double z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1664,8 +1677,9 @@
 }
 
-psVector *psDPolynomial3DEvalVector(const psVector *x,
+psVector *psDPolynomial3DEvalVector(const psDPolynomial3D *myPoly,
+                                    const psVector *x,
                                     const psVector *y,
-                                    const psVector *z,
-                                    const psDPolynomial3D *myPoly)
+                                    const psVector *z)
+
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1694,8 +1708,9 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F64);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F64[i] = psDPolynomial3DEval(myX->data.F64[i],
+        tmp->data.F64[i] = psDPolynomial3DEval(myPoly,
+                                               myX->data.F64[i],
                                                myY->data.F64[i],
-                                               myZ->data.F64[i],
-                                               myPoly);
+                                               myZ->data.F64[i]);
+
     }
 
@@ -1712,5 +1727,9 @@
 }
 
-double psDPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly)
+double psDPolynomial4DEval(const psDPolynomial4D* myPoly,
+                           double w,
+                           double x,
+                           double y,
+                           double z)
 {
     PS_POLY_CHECK_NULL(myPoly, NAN);
@@ -1728,9 +1747,9 @@
 }
 
-psVector *psDPolynomial4DEvalVector(const psVector *w,
+psVector *psDPolynomial4DEvalVector(const psDPolynomial4D *myPoly,
+                                    const psVector *w,
                                     const psVector *x,
                                     const psVector *y,
-                                    const psVector *z,
-                                    const psDPolynomial4D *myPoly)
+                                    const psVector *z)
 {
     PS_POLY_CHECK_NULL(myPoly, NULL);
@@ -1765,9 +1784,10 @@
     tmp = psVectorAlloc(vecLen, PS_TYPE_F64);
     for (i=0;i<vecLen;i++) {
-        tmp->data.F64[i] = psDPolynomial4DEval(myW->data.F64[i],
+        tmp->data.F64[i] = psDPolynomial4DEval(myPoly,
+                                               myW->data.F64[i],
                                                myX->data.F64[i],
                                                myY->data.F64[i],
-                                               myZ->data.F64[i],
-                                               myPoly);
+                                               myZ->data.F64[i]);
+
     }
 
@@ -2110,11 +2130,14 @@
 
         if (x < (spline->domains)[0]) {
-            return(psPolynomial1DEval(x, spline->spline[0]));
+            return(psPolynomial1DEval(spline->spline[0],
+                                      x));
         } else if (x > (spline->domains)[n-1]) {
-            return(psPolynomial1DEval(x, spline->spline[n-1]));
-        }
-    }
-
-    return(psPolynomial1DEval(x, spline->spline[binNum]));
+            return(psPolynomial1DEval(spline->spline[n-1],
+                                      x));
+        }
+    }
+
+    return(psPolynomial1DEval(spline->spline[binNum],
+                              x));
 }
 
Index: /trunk/psLib/src/math/psSpline.h
===================================================================
--- /trunk/psLib/src/math/psSpline.h	(revision 2432)
+++ /trunk/psLib/src/math/psSpline.h	(revision 2433)
@@ -12,6 +12,6 @@
 *  @author George Gusciora, MHPCC
 *
-*  @version $Revision: 1.34 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-11-24 20:34:13 $
+*  @version $Revision: 1.35 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-11-24 21:59:43 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -163,6 +163,6 @@
  */
 float psPolynomial1DEval(
-    float x,                           ///< location at which to evaluate
-    const psPolynomial1D* myPoly       ///< Coefficients for the polynomial
+    const psPolynomial1D* myPoly,       ///< Coefficients for the polynomial
+    float x                           ///< location at which to evaluate
 );
 
@@ -172,18 +172,18 @@
  */
 float psPolynomial2DEval(
+    const psPolynomial2D* myPoly,       ///< Coefficients for the polynomial
+    float x,                           ///< x location at which to evaluate
+    float y                           ///< y location at which to evaluate
+);
+
+/** Evaluates a 3-D polynomial at specific coordinates.
+ *
+ *  @return float    result of polynomial at given location
+ */
+float psPolynomial3DEval(
+    const psPolynomial3D* myPoly,       ///< Coefficients for the polynomial
     float x,                           ///< x location at which to evaluate
     float y,                           ///< y location at which to evaluate
-    const psPolynomial2D* myPoly       ///< Coefficients for the polynomial
-);
-
-/** Evaluates a 3-D polynomial at specific coordinates.
- *
- *  @return float    result of polynomial at given location
- */
-float psPolynomial3DEval(
-    float x,                           ///< x location at which to evaluate
-    float y,                           ///< y location at which to evaluate
-    float z,                           ///< z location at which to evaluate
-    const psPolynomial3D* myPoly       ///< Coefficients for the polynomial
+    float z                           ///< z location at which to evaluate
 );
 
@@ -193,32 +193,36 @@
  */
 float psPolynomial4DEval(
+    const psPolynomial4D* myPoly,       ///< Coefficients for the polynomial
     float w,                           ///< w location at which to evaluate
     float x,                           ///< x location at which to evaluate
     float y,                           ///< y location at which to evaluate
-    float z,                           ///< z location at which to evaluate
-    const psPolynomial4D* myPoly       ///< Coefficients for the polynomial
-);
-
-psVector *psPolynomial1DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                   const psPolynomial1D *myPoly   ///< Coefficients for the polynomial
-                                  );
-
-psVector *psPolynomial2DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                   const psVector *y,             ///< y locations at which to evaluate
-                                   const psPolynomial2D *myPoly   ///< Coefficients for the polynomial
-                                  );
-
-psVector *psPolynomial3DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                   const psVector *y,             ///< y locations at which to evaluate
-                                   const psVector *z,             ///< z locations at which to evaluate
-                                   const psPolynomial3D *myPoly   ///< Coefficients for the polynomial
-                                  );
-
-psVector *psPolynomial4DEvalVector(const psVector *w,             ///< w locations at which to evaluate
-                                   const psVector *x,             ///< x locations at which to evaluate
-                                   const psVector *y,             ///< y locations at which to evaluate
-                                   const psVector *z,             ///< z locations at which to evaluate
-                                   const psPolynomial4D *myPoly   ///< Coefficients for the polynomial
-                                  );
+    float z                           ///< z location at which to evaluate
+);
+
+psVector *psPolynomial1DEvalVector(
+    const psPolynomial1D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *x             ///< x locations at which to evaluate
+);
+
+psVector *psPolynomial2DEvalVector(
+    const psPolynomial2D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y             ///< y locations at which to evaluate
+);
+
+psVector *psPolynomial3DEvalVector(
+    const psPolynomial3D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
+
+psVector *psPolynomial4DEvalVector(
+    const psPolynomial4D *myPoly,   ///< Coefficients for the polynomial
+    const psVector *w,             ///< w locations at which to evaluate
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
 
 /*****************************************************************************/
@@ -323,6 +327,6 @@
  */
 double psDPolynomial1DEval(
-    double x,                          ///< Value at which to evaluate
-    const psDPolynomial1D* myPoly      ///< Coefficients for the polynomial
+    const psDPolynomial1D* myPoly,      ///< Coefficients for the polynomial
+    double x                          ///< Value at which to evaluate
 );
 
@@ -332,7 +336,7 @@
  */
 double psDPolynomial2DEval(
+    const psDPolynomial2D* myPoly,       ///< Coefficients for the polynomial
     double x,                           ///< Value x at which to evaluate
-    double y,                           ///< Value y at which to evaluate
-    const psDPolynomial2D* myPoly       ///< Coefficients for the polynomial
+    double y            ///< Value y at which to evaluate
 );
 
@@ -342,8 +346,8 @@
  */
 double psDPolynomial3DEval(
+    const psDPolynomial3D* myPoly,      ///< Coefficients for the polynomial
     double x,                          ///< Value x at which to evaluate
     double y,                          ///< Value y at which to evaluate
-    double z,                          ///< Value z at which to evaluate
-    const psDPolynomial3D* myPoly      ///< Coefficients for the polynomial
+    double z     ///< Value z at which to evaluate
 );
 
@@ -353,32 +357,36 @@
  */
 double psDPolynomial4DEval(
+    const psDPolynomial4D* myPoly,      ///< Coefficients for the polynomial
     double w,                          ///< Value w at which to evaluate
     double x,                          ///< Value x at which to evaluate
     double y,                          ///< Value y at which to evaluate
-    double z,                          ///< Value z at which to evaluate
-    const psDPolynomial4D* myPoly      ///< Coefficients for the polynomial
-);
-
-psVector *psDPolynomial1DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                    const psDPolynomial1D *myPoly  ///< Coefficients for the polynomial
-                                   );
-
-psVector *psDPolynomial2DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                    const psVector *y,             ///< y locations at which to evaluate
-                                    const psDPolynomial2D *myPoly  ///< Coefficients for the polynomial
-                                   );
-
-psVector *psDPolynomial3DEvalVector(const psVector *x,             ///< x locations at which to evaluate
-                                    const psVector *y,             ///< y locations at which to evaluate
-                                    const psVector *z,             ///< z locations at which to evaluate
-                                    const psDPolynomial3D *myPoly  ///< Coefficients for the polynomial
-                                   );
-
-psVector *psDPolynomial4DEvalVector(const psVector *w,             ///< w locations at which to evaluate
-                                    const psVector *x,             ///< x locations at which to evaluate
-                                    const psVector *y,             ///< y locations at which to evaluate
-                                    const psVector *z,             ///< z locations at which to evaluate
-                                    const psDPolynomial4D *myPoly  ///< Coefficients for the polynomial
-                                   );
+    double z     ///< Value z at which to evaluate
+);
+
+psVector *psDPolynomial1DEvalVector(
+    const psDPolynomial1D *myPoly, ///< Coefficients for the polynomial
+    const psVector *x             ///< x locations at which to evaluate
+);
+
+psVector *psDPolynomial2DEvalVector(
+    const psDPolynomial2D *myPoly,  ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y             ///< y locations at which to evaluate
+);
+
+psVector *psDPolynomial3DEvalVector(
+    const psDPolynomial3D *myPoly,  ///< Coefficients for the polynomial
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
+
+psVector *psDPolynomial4DEvalVector(
+    const psDPolynomial4D *myPoly,  ///< Coefficients for the polynomial
+    const psVector *w,             ///< w locations at which to evaluate
+    const psVector *x,             ///< x locations at which to evaluate
+    const psVector *y,             ///< y locations at which to evaluate
+    const psVector *z             ///< z locations at which to evaluate
+);
 
 
