Index: trunk/psLib/src/imageops/psImageStats.c
===================================================================
--- trunk/psLib/src/imageops/psImageStats.c	(revision 5089)
+++ trunk/psLib/src/imageops/psImageStats.c	(revision 5090)
@@ -9,6 +9,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.78 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-09-22 02:32:00 $
+ *  @version $Revision: 1.79 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-09-22 02:47:16 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -224,5 +224,6 @@
     chebPolys = (psPolynomial1D **) psAlloc(maxChebyPoly * sizeof(psPolynomial1D *));
     for (i = 0; i < maxChebyPoly; i++) {
-        chebPolys[i] = psPolynomial1DAlloc(i + 1, PS_POLYNOMIAL_ORD);
+        // XXX: verify this, poly nOrder/nTerms change.
+        chebPolys[i] = psPolynomial1DAlloc(i, PS_POLYNOMIAL_ORD);
     }
 
@@ -232,8 +233,8 @@
     chebPolys[1]->coeff[1] = 1;
     for (i = 2; i < maxChebyPoly; i++) {
-        for (j = 0; j < chebPolys[i - 1]->n; j++) {
+        for (j = 0; j < (1 + chebPolys[i - 1]->COOL_1D_n); j++) {
             chebPolys[i]->coeff[j + 1] = 2 * chebPolys[i - 1]->coeff[j];
         }
-        for (j = 0; j < chebPolys[i - 2]->n; j++) {
+        for (j = 0; j < (1 + chebPolys[i - 2]->COOL_1D_n); j++) {
             chebPolys[i]->coeff[j] -= chebPolys[i - 2]->coeff[j];
         }
@@ -290,7 +291,7 @@
     // 29 in the ADD: sums[k][l] = SUM {
     // image(x,y) * Tk(x) * Tl(y) }
-    sums = (double **)psAlloc(coeffs->nX * sizeof(double *));
-    for (i = 0; i < coeffs->nX; i++) {
-        sums[i] = (double *)psAlloc(coeffs->nY * sizeof(double));
+    sums = (double **)psAlloc((1 + coeffs->COOL_2D_nX) * sizeof(double *));
+    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
+        sums[i] = (double *)psAlloc((1 + coeffs->COOL_2D_nY) * sizeof(double));
     }
     // We scale the pixel positions to values
@@ -301,13 +302,14 @@
     // Determine how many Chebyshev polynomials
     // are needed, then create them.
-    maxChebyPoly = coeffs->nX;
-    if (coeffs->nY > coeffs->nX) {
-        maxChebyPoly = coeffs->nY;
-    }
-    chebPolys = p_psCreateChebyshevPolys(maxChebyPoly);
+    // XXX: recorde or verify the poly order/nterm change
+    maxChebyPoly = coeffs->COOL_2D_nX;
+    if (coeffs->COOL_2D_nY > coeffs->COOL_2D_nX) {
+        maxChebyPoly = coeffs->COOL_2D_nY;
+    }
+    chebPolys = p_psCreateChebyshevPolys(maxChebyPoly + 1);
 
     // Compute the sums[][] data structure.
-    for (i = 0; i < coeffs->nX; i++) {
-        for (j = 0; j < coeffs->nY; j++) {
+    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
+        for (j = 0; j < (1 + coeffs->COOL_2D_nY); j++) {
             sums[i][j] = 0.0;
             for (x = 0; x < input->numRows; x++) {
@@ -330,6 +332,6 @@
     }
 
-    for (i = 0; i < coeffs->nX; i++) {
-        for (j = 0; j < coeffs->nY; j++) {
+    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
+        for (j = 0; j < (1 + coeffs->COOL_2D_nY); j++) {
             coeffs->coeff[i][j] = sums[i][j];
             coeffs->coeff[i][j] /= (double)(input->numRows * input->numCols);
@@ -353,5 +355,5 @@
 
     // Free some data
-    for (i = 0; i < coeffs->nX; i++) {
+    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
         psFree(sums[i]);
     }
@@ -436,7 +438,7 @@
     // 29 in the ADD: sums[k][l] = SUM {
     // image(x,y) * Tk(x) * Tl(y) }
-    sums = (double **)psAlloc(coeffs->nX * sizeof(double *));
-    for (i = 0; i < coeffs->nX; i++) {
-        sums[i] = (double *)psAlloc(coeffs->nY * sizeof(double));
+    sums = (double **)psAlloc((1 + coeffs->COOL_2D_nX) * sizeof(double *));
+    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
+        sums[i] = (double *)psAlloc((1 + coeffs->COOL_2D_nY) * sizeof(double));
     }
     // We scale the pixel positions to values
@@ -447,13 +449,13 @@
     // Determine how many Chebyshev polynomials
     // are needed, then create them.
-    maxChebyPoly = coeffs->nX;
-    if (coeffs->nY > coeffs->nX) {
-        maxChebyPoly = coeffs->nY;
-    }
-    chebPolys = p_psCreateChebyshevPolys(maxChebyPoly);
+    maxChebyPoly = coeffs->COOL_2D_nX;
+    if (coeffs->COOL_2D_nY > coeffs->COOL_2D_nX) {
+        maxChebyPoly = coeffs->COOL_2D_nY;
+    }
+    chebPolys = 1 + p_psCreateChebyshevPolys(maxChebyPoly);
 
     // Compute the sums[][] data structure.
-    for (i = 0; i < coeffs->nX; i++) {
-        for (j = 0; j < coeffs->nY; j++) {
+    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
+        for (j = 0; j < (1 + coeffs->COOL_2D_nY); j++) {
             sums[i][j] = 0.0;
             for (x = 0; x < input->numRows; x++) {
@@ -479,6 +481,6 @@
     }
 
-    for (i = 0; i < coeffs->nX; i++) {
-        for (j = 0; j < coeffs->nY; j++) {
+    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
+        for (j = 0; j < (1 + coeffs->COOL_2D_nY); j++) {
             coeffs->coeff[i][j] = sums[i][j];
             coeffs->coeff[i][j] /= (double)(input->numRows * input->numCols);
@@ -502,5 +504,5 @@
 
     // Free some data
-    for (i = 0; i < coeffs->nX; i++) {
+    for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
         psFree(sums[i]);
     }
@@ -538,16 +540,16 @@
     // Determine how many Chebyshev polynomials
     // are needed, then create them.
-    maxChebyPoly = coeffs->nX;
-    if (coeffs->nY > coeffs->nX) {
-        maxChebyPoly = coeffs->nY;
-    }
-
-    chebPolys = p_psCreateChebyshevPolys(maxChebyPoly);
+    maxChebyPoly = coeffs->COOL_2D_nX;
+    if (coeffs->COOL_2D_nY > coeffs->COOL_2D_nX) {
+        maxChebyPoly = coeffs->COOL_2D_nY;
+    }
+
+    chebPolys = 1 + p_psCreateChebyshevPolys(maxChebyPoly);
 
     for (x = 0; x < input->numRows; x++) {
         for (y = 0; y < input->numCols; y++) {
             polySum = 0.0;
-            for (i = 0; i < coeffs->nX; i++) {
-                for (j = 0; j < coeffs->nY; j++) {
+            for (i = 0; i < (1 + coeffs->COOL_2D_nX); i++) {
+                for (j = 0; j < (1 + coeffs->COOL_2D_nY); j++) {
                     polySum +=
                         psPolynomial1DEval(chebPolys[i], rScalingFactors[x]) *
