Index: trunk/psLib/src/dataManip/psFunctions.c
===================================================================
--- trunk/psLib/src/dataManip/psFunctions.c	(revision 1775)
+++ trunk/psLib/src/dataManip/psFunctions.c	(revision 1781)
@@ -7,6 +7,6 @@
  *  polynomials.  It also contains a Gaussian functions.
  *
- *  @version $Revision: 1.33 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-09-10 02:52:02 $
+ *  @version $Revision: 1.34 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-09-10 22:25:59 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -441,4 +441,14 @@
     float xSum = 1.0;
 
+    psTrace(".psLib.dataManip.psFunctions.p_psOrdPolynomial1DEval", 4,
+            "---- Calling p_psOrdPolynomial1DEval(%f)\n", x);
+    psTrace(".psLib.dataManip.psFunctions.p_psOrdPolynomial1DEval", 4,
+            "Polynomial order is %d\n", myPoly->n);
+    for (loop_x = 0; loop_x < myPoly->n; loop_x++) {
+        psTrace(".psLib.dataManip.psFunctions.p_psOrdPolynomial1DEval", 4,
+                "Polynomial coeff[%d] is %f\n", loop_x, myPoly->coeff[loop_x]);
+    }
+
+
     if (NULL == myPoly) {
         psAbort(__func__, "psPolynomial1DEval(): myPoly is NULL\n");
@@ -455,5 +465,5 @@
 
     for (loop_x = 0; loop_x < myPoly->n; loop_x++) {
-        if (myPoly->mask[loop_x] != 0) {
+        if (myPoly->mask[loop_x] == 0) {
             polySum += xSum * myPoly->coeff[loop_x];
             xSum *= x;
@@ -535,5 +545,5 @@
         ySum = xSum;
         for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
-            if (myPoly->mask[loop_x][loop_y] != 0) {
+            if (myPoly->mask[loop_x][loop_y] == 0) {
                 polySum += ySum * myPoly->coeff[loop_x][loop_y];
                 ySum *= y;
@@ -564,5 +574,5 @@
     for (loop_x = 0; loop_x < myPoly->nX; loop_x++) {
         for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
-            if (myPoly->mask[loop_x][loop_y] != 0) {
+            if (myPoly->mask[loop_x][loop_y] == 0) {
                 polySum += myPoly->coeff[loop_x][loop_y] *
                            psPolynomial1DEval(x, chebPolys[loop_x]) *
@@ -639,5 +649,5 @@
             zSum = ySum;
             for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
-                if (myPoly->mask[loop_x][loop_y][loop_z] != 0) {
+                if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
                     polySum += zSum * myPoly->coeff[loop_x][loop_y][loop_z];
                     zSum *= z;
@@ -675,5 +685,5 @@
         for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
             for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
-                if (myPoly->mask[loop_x][loop_y][loop_z] != 0) {
+                if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
                     polySum += myPoly->coeff[loop_x][loop_y][loop_z] *
                                psPolynomial1DEval(x, chebPolys[loop_x]) *
@@ -768,5 +778,5 @@
                 zSum = ySum;
                 for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
-                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] != 0) {
+                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
                         polySum += zSum * myPoly->coeff[loop_w][loop_x][loop_y][loop_z];
                         zSum *= z;
@@ -811,5 +821,5 @@
             for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
                 for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
-                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] != 0) {
+                    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]) *
@@ -1129,5 +1139,5 @@
 
     for (loop_x = 0; loop_x < myPoly->n; loop_x++) {
-        if (myPoly->mask[loop_x] != 0) {
+        if (myPoly->mask[loop_x] == 0) {
             polySum += xSum * myPoly->coeff[loop_x];
             xSum *= x;
@@ -1210,5 +1220,5 @@
         ySum = xSum;
         for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
-            if (myPoly->mask[loop_x][loop_y] != 0) {
+            if (myPoly->mask[loop_x][loop_y] == 0) {
                 polySum += ySum * myPoly->coeff[loop_x][loop_y];
                 ySum *= y;
@@ -1239,5 +1249,5 @@
     for (loop_x = 0; loop_x < myPoly->nX; loop_x++) {
         for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
-            if (myPoly->mask[loop_x][loop_y] != 0) {
+            if (myPoly->mask[loop_x][loop_y] == 0) {
                 polySum += myPoly->coeff[loop_x][loop_y] *
                            psPolynomial1DEval(x, chebPolys[loop_x]) *
@@ -1313,5 +1323,5 @@
             zSum = ySum;
             for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
-                if (myPoly->mask[loop_x][loop_y][loop_z] != 0) {
+                if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
                     polySum += zSum * myPoly->coeff[loop_x][loop_y][loop_z];
                     zSum *= z;
@@ -1349,5 +1359,5 @@
         for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
             for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
-                if (myPoly->mask[loop_x][loop_y][loop_z] != 0) {
+                if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
                     polySum += myPoly->coeff[loop_x][loop_y][loop_z] *
                                psPolynomial1DEval(x, chebPolys[loop_x]) *
@@ -1444,5 +1454,5 @@
                 zSum = ySum;
                 for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
-                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] != 0) {
+                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
                         polySum += zSum * myPoly->coeff[loop_w][loop_x][loop_y][loop_z];
                         zSum *= z;
@@ -1487,5 +1497,5 @@
             for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
                 for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
-                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] != 0) {
+                    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]) *
@@ -1608,9 +1618,12 @@
     tmp->domains = (float *) psAlloc((numSplines+1) * sizeof(float));
     width = (max - min) / ((float) numSplines);
-    tmpDomain = min;
-    for (i=0;i<numSplines+1;i++) {
+
+    (tmp->domains)[0] = min;
+    tmpDomain = min+width;
+    for (i=1;i<numSplines+1;i++) {
         (tmp->domains)[i] = tmpDomain;
         tmpDomain+= width;
     }
+    (tmp->domains)[numSplines] = max;
 
     return(tmp);
@@ -1661,4 +1674,7 @@
     int mid;
 
+    psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4,
+            "---- Calling VectorBinDisect(%f)\n", x);
+
     if ((x < bins[0]) ||
             (x > bins[numBins-1])) {
@@ -1670,18 +1686,26 @@
 
     min = 0;
-    max = numBins-1;
-    mid = (max-min)/2;
-
-    while (min+1 < max) {
-        psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4, "(min, max) is (%d, %d)\n", min, max);
-        mid = (max-min)/2;
-
-        if (x < bins[mid]) {
-            max = mid;
+    max = numBins-2;
+    mid = ((max+1)-min)/2;
+
+    while (min != max) {
+        psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4,
+                "(min, mid, max) is (%d, %d, %d): (x, bins) is (%f, %f)\n",
+                min, mid, max, x, bins[mid]);
+
+        if (x == bins[mid]) {
+            psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4,
+                    "---- Exiting VectorBinDisect(): bin %d\n", min);
+            return(min);
+        } else if (x < bins[mid]) {
+            max = mid-1;
         } else {
             min = mid;
         }
-    }
-
+        mid = ((max+1)+min)/2;
+    }
+
+    psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4,
+            "---- Exiting VectorBinDisect(): bin %d\n", min);
     return(min);
 }
@@ -1733,4 +1757,7 @@
     float slope;
 
+    psTrace(".psLib.dataManip.psFunctions.psSpline1DGen", 4,
+            "---- Calling psSpline1DGen()\n");
+
     if (data->n != (1 + spline->n)) {
         psLogMsg(__func__, PS_LOG_WARN,
@@ -1744,8 +1771,16 @@
             slope = (data->data.F32[i+1] - data->data.F32[i]) /
                     (spline->domains[i+1] - spline->domains[i]);
-            (spline->spline[0])->coeff[0] = data->data.F32[i] -
+            (spline->spline[i])->coeff[0] = data->data.F32[i] -
                                             (slope * spline->domains[i]);
-            (spline->spline[0])->coeff[1] = slope;
-        }
+            //printf("HMMM (%f, %f, %f)\n", data->data.F32[i], slope, spline->domains[i]);
+
+            (spline->spline[i])->coeff[1] = slope;
+            psTrace(".psLib.dataManip.psFunctions.psSpline1DGen", 4,
+                    "---- spline %d coeffs are (%f, %f)\n", i,
+                    (spline->spline[i])->coeff[0],
+                    (spline->spline[i])->coeff[1]);
+        }
+        psTrace(".psLib.dataManip.psFunctions.psSpline1DGen", 4,
+                "---- Exiting psSpline1DGen()\n");
         return((psSpline1D *) spline);
     } else if (4 == (spline->spline[0])->n) {
