Index: trunk/psLib/src/math/psSpline.c
===================================================================
--- trunk/psLib/src/math/psSpline.c	(revision 3374)
+++ trunk/psLib/src/math/psSpline.c	(revision 3380)
@@ -7,6 +7,6 @@
  *  polynomials.  It also contains a Gaussian functions.
  *
- *  @version $Revision: 1.90 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-03-04 20:51:20 $
+ *  @version $Revision: 1.91 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-03-07 20:56:13 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -320,16 +320,26 @@
     n = myPoly->n;
     d = psVectorAlloc(n, PS_TYPE_F32);
-    d->data.F32[n-1] = myPoly->coeff[n-1];
-    d->data.F32[n-2] = (2.0 * x * d->data.F32[n-1]) + myPoly->coeff[n-2];
+    if(myPoly->mask[n-1] == 0) {
+        d->data.F32[n-1] = myPoly->coeff[n-1];
+    } else {
+        d->data.F32[n-1] = 0.0;
+    }
+    d->data.F32[n-2] = (2.0 * x * d->data.F32[n-1]);
+    if(myPoly->mask[n-2] == 0) {
+        d->data.F32[n-2] += myPoly->coeff[n-2];
+    }
     for (i=n-3;i>=1;i--) {
         d->data.F32[i] = (2.0 * x * d->data.F32[i+1]) -
-                         (d->data.F32[i+2]) +
-                         (myPoly->coeff[i]);
+                         (d->data.F32[i+2]);
+        if(myPoly->mask[i] == 0) {
+            d->data.F32[i] += myPoly->coeff[i];
+        }
     }
 
     tmp = (x * d->data.F32[1]) -
-          (d->data.F32[2]) +
-          (0.5 * myPoly->coeff[0]);
-
+          (d->data.F32[2]);
+    if(myPoly->mask[0] == 0) {
+        tmp += (0.5 * myPoly->coeff[0]);
+    }
     psFree(d);
     return(tmp);
@@ -608,15 +618,26 @@
     n = myPoly->n;
     d = psVectorAlloc(n, PS_TYPE_F64);
-    d->data.F64[n-1] = myPoly->coeff[n-1];
-    d->data.F64[n-2] = (2.0 * x * d->data.F64[n-1]) + myPoly->coeff[n-2];
+    if(myPoly->mask[n-1] == 0) {
+        d->data.F64[n-1] = myPoly->coeff[n-1];
+    } else {
+        d->data.F64[n-1] = 0.0;
+    }
+    d->data.F64[n-2] = (2.0 * x * d->data.F64[n-1]);
+    if(myPoly->mask[n-2] == 0) {
+        d->data.F64[n-2] += myPoly->coeff[n-2];
+    }
     for (i=n-3;i>=1;i--) {
         d->data.F64[i] = (2.0 * x * d->data.F64[i+1]) -
-                         (d->data.F64[i+2]) +
-                         (myPoly->coeff[i]);
+                         (d->data.F64[i+2]);
+        if(myPoly->mask[i] == 0) {
+            d->data.F64[i] += myPoly->coeff[i];
+        }
     }
 
     tmp = (x * d->data.F64[1]) -
-          (d->data.F64[2]) +
-          (0.5 * myPoly->coeff[0]);
+          (d->data.F64[2]);
+    if(myPoly->mask[0] == 0) {
+        tmp += (0.5 * myPoly->coeff[0]);
+    }
 
     psFree(d);
@@ -1207,15 +1228,10 @@
 
     psVector *tmp;
-    psVector *myX;
-    psS32 i;
 
     tmp = psVectorAlloc(x->n, PS_TYPE_F32);
-    for (i=0;i<x->n;i++) {
+    for (psS32 i=0;i<x->n;i++) {
         tmp->data.F32[i] = psPolynomial1DEval(myPoly, x->data.F32[i]);
     }
 
-    if (x->type.type != PS_TYPE_F32) {
-        psFree(myX);
-    }
     return(tmp);
 }
@@ -1608,16 +1624,11 @@
 
     psVector *tmp;
-    psVector *myX;
-    psS32 i;
 
     tmp = psVectorAlloc(x->n, PS_TYPE_F64);
-    for (i=0;i<x->n;i++) {
+    for (psS32 i=0;i<x->n;i++) {
         tmp->data.F64[i] = psDPolynomial1DEval(myPoly,
                                                x->data.F64[i]);
     }
 
-    if (x->type.type != PS_TYPE_F64) {
-        psFree(myX);
-    }
     return(tmp);
 }
