Index: /branches/rel10_ifa/psModules/configure.ac
===================================================================
--- /branches/rel10_ifa/psModules/configure.ac	(revision 6492)
+++ /branches/rel10_ifa/psModules/configure.ac	(revision 6493)
@@ -67,4 +67,13 @@
 )
 
+dnl handle profiler building
+AC_ARG_ENABLE(profile,
+  [AS_HELP_STRING(--enable-profile,enable compiler profiler information inclusion)],
+  [AC_MSG_RESULT(compile optimization enabled)
+   CFLAGS="${CFLAGS=} -pg"]
+)
+
+dnl CFLAGS="${CFLAGS=} -fprofile-arcs -ftest-coverage -pg"]
+
 dnl doxygen -------------------------------------------------------------------
 
Index: /branches/rel10_ifa/psModules/src/objects/models/pmModel_QGAUSS.c
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 6492)
+++ /branches/rel10_ifa/psModules/src/objects/models/pmModel_QGAUSS.c	(revision 6493)
@@ -26,7 +26,10 @@
     psF32 py = PAR[5]*Y;
     psF32 z  = 0.5*PS_SQR(px) + 0.5*PS_SQR(py) + PAR[6]*X*Y;
-
-    psF32 r  = 1.0 / (1 + PAR[7]*z + pow(z, 2.25));
-    psF32 f  = PAR[1]*r + PAR[0];
+    psF32 zp = pow(z,1.25);
+
+    psF32 r  = 1.0 / (1 + PAR[7]*z + z*zp);
+    // test: psF32 r  = 1.0 / (1 + PAR[7]*z + PS_SQR(z));
+    psF32 r1 = PAR[1]*r;
+    psF32 f  = r1 + PAR[0];
 
     if (deriv != NULL) {
@@ -34,6 +37,7 @@
 
         // note difference from a pure gaussian: q = params->data.F32[1]*r
-        psF32 t = PAR[1]*r*r;
-        psF32 q = t*(PAR[7] + 2.25*pow(z, 1.25));
+        psF32 t = r1*r;
+        psF32 q = t*(PAR[7] + 2.25*zp);
+        // test: psF32 q = t*(PAR[7] + 2*z);
 
         dPAR[0] = +1.0;
@@ -120,4 +124,5 @@
     for (z = 0.005; z < 50; z += 0.01) {
         f = 1.0 / (1 + PAR[7]*z + pow(z, 2.25));
+        // test: f = 1.0 / (1 + PAR[7]*z + PS_SQR(z));
         norm += f;
     }
@@ -151,4 +156,5 @@
     for (z = 0.0; z < 30.0; z += dz) {
         f = 1.0 / (1 + PAR[7]*z + pow(z, 2.25));
+        // test: f = 1.0 / (1 + PAR[7]*z + PS_SQR(z));
         if (f < limit)
             break;
Index: /branches/rel10_ifa/psModules/src/objects/pmObjects.c
===================================================================
--- /branches/rel10_ifa/psModules/src/objects/pmObjects.c	(revision 6492)
+++ /branches/rel10_ifa/psModules/src/objects/pmObjects.c	(revision 6493)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.9.4.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-02-24 04:03:45 $
+ *  @version $Revision: 1.9.4.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-02-25 04:23:34 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -909,32 +909,34 @@
     // XXX EAM : mask == 0 is valid
 
-    psF32 **vPix = source->pixels->data.F32;
-    psF32 **vWgt = source->weight->data.F32;
-    psU8  **vMsk = source->mask->data.U8;
-
     for (psS32 row = 0; row < source->pixels->numRows ; row++) {
-        for (psS32 col = 0; col < source->pixels->numCols ; col++) {
-            if ((source->mask != NULL) && (vMsk[row][col])) {
+
+        psF32 *vPix = source->pixels->data.F32[row];
+        psF32 *vWgt = source->weight->data.F32[row];
+        psU8  *vMsk = (source->mask == NULL) ? NULL : source->mask->data.U8[row];
+
+        for (psS32 col = 0; col < source->pixels->numCols ; col++, vPix++, vWgt++) {
+            if ((vMsk != NULL) && *vMsk) {
+                vMsk++;
                 continue;
             }
-
-            // psF32 xDiff = col + source->pixels->col0 - xPeak;
-            // psF32 yDiff = row + source->pixels->row0 - yPeak;
 
             psF32 xDiff = col + xOff;
             psF32 yDiff = row + yOff;
 
-            // XXX EAM : calculate xDiff, yDiff up front;
-            //           radius is just a function of (xDiff, yDiff)
+            // radius is just a function of (xDiff, yDiff)
             if (!VALID_RADIUS(xDiff, yDiff, R2)) {
+                if (vMsk != NULL)
+                    vMsk++;
                 continue;
             }
 
-            psF32 pDiff = vPix[row][col] - sky;
-            psF32 wDiff = vWgt[row][col];
+            psF32 pDiff = *vPix - sky;
+            psF32 wDiff = *vWgt;
 
             // XXX EAM : check for valid S/N in pixel
             // XXX EAM : should this limit be user-defined?
             if (PS_SQR(pDiff) < wDiff) {
+                if (vMsk != NULL)
+                    vMsk++;
                 continue;
             }
@@ -948,11 +950,13 @@
             X1  += xWght;
             Y1  += yWght;
+
             XY  += xDiff * yWght;
-
             X2  += xDiff * xWght;
             Y2  += yDiff * yWght;
 
-            peakPixel = PS_MAX (vPix[row][col], peakPixel);
+            peakPixel = PS_MAX (*vPix, peakPixel);
             numPixels++;
+            if (vMsk != NULL)
+                vMsk++;
         }
     }
