Index: trunk/psLib/src/dataManip/psMinimize.c
===================================================================
--- trunk/psLib/src/dataManip/psMinimize.c	(revision 2228)
+++ trunk/psLib/src/dataManip/psMinimize.c	(revision 2230)
@@ -9,6 +9,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.73 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-10-28 22:46:57 $
+ *  @version $Revision: 1.74 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-10-28 23:03:11 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -1007,4 +1007,22 @@
     } else { \
         OUT->data.F32[i] = BASE->data.F32[i]; \
+    } \
+} \
+
+#define PS_VECTOR_F32_CHECK_ZERO_VECTOR(IN, BOOL_VAR) \
+BOOL_VAR = true; \
+for (int i=0;i<IN->n;i++) { \
+    if (fabs(IN->data.F32[i]) >= FLT_EPSILON) { \
+        BOOL_VAR = false; \
+        break; \
+    } \
+} \
+
+#define PS_VECTOR_WITH_MASK_F32_CHECK_ZERO_VECTOR(IN, INMASK, BOOL_VAR) \
+BOOL_VAR = true; \
+for (int i=0;i<IN->n;i++) { \
+    if ((INMASK->data.U8[i] == 0) && (fabs(IN->data.F32[i]) >= FLT_EPSILON)) { \
+        BOOL_VAR = false; \
+        break; \
     } \
 } \
@@ -1058,19 +1076,12 @@
     float stepSize = PS_DETERMINE_BRACKET_STEP_SIZE;
     psVector *tmp = NULL;
-    psS32 i = 0;
-    psS32 null = 0;
+    psBool boolLineIsNull = true;
 
     psTrace(".psLib.dataManip.p_psDetermineBracket", 4,
             "---- p_psDetermineBracket() begin ----\n");
 
-    for (i=0;i<params->n;i++) {
-        if (paramMask->data.U8[i] == 0) {
-            if (line->data.F32[i] >= FLT_EPSILON) {
-                null = 1;
-            }
-        }
-    }
-
-    if (null == 0) {
+    // If the line vector is zero, then return NULL.
+    PS_VECTOR_WITH_MASK_F32_CHECK_ZERO_VECTOR(params, paramMask, boolLineIsNull);
+    if (boolLineIsNull == true) {
         psTrace(".psLib.dataManip.p_psDetermineBracket", 2,
                 "p_psDetermineBracket() called with zero line vector.\n");
@@ -1127,20 +1138,8 @@
         c =+ stepSize;
 
-        for (i=0;i<params->n;i++) {
-            if (paramMask->data.U8[i] == 0) {
-                tmp->data.F32[i] = params->data.F32[i] + (a * line->data.F32[i]);
-            } else {
-                tmp->data.F32[i] = params->data.F32[i];
-            }
-        }
+        PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, a);
         fa = func(tmp, coords);
 
-        for (i=0;i<params->n;i++) {
-            if (paramMask->data.U8[i] == 0) {
-                tmp->data.F32[i] = params->data.F32[i] + (c * line->data.F32[i]);
-            } else {
-                tmp->data.F32[i] = params->data.F32[i];
-            }
-        }
+        PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, c);
         fc = func(tmp, coords);
 
@@ -1209,19 +1208,12 @@
     float stepSize = PS_DETERMINE_BRACKET_STEP_SIZE;
     psVector *tmp = NULL;
-    psS32 i = 0;
-    psS32 null = 0;
+    psBool boolLineIsNull = true;
 
     psTrace(".psLib.dataManip.p_psDetermineBracket", 4,
             "---- p_psDetermineBracket() begin ----\n");
 
-    for (i=0;i<params->n;i++) {
-        if (paramMask->data.U8[i] == 0) {
-            if (line->data.F32[i] >= FLT_EPSILON) {
-                null = 1;
-            }
-        }
-    }
-
-    if (null == 0) {
+    // If the line vector is zero, then return NULL.
+    PS_VECTOR_WITH_MASK_F32_CHECK_ZERO_VECTOR(params, paramMask, boolLineIsNull);
+    if (boolLineIsNull == true) {
         psTrace(".psLib.dataManip.p_psDetermineBracket", 2,
                 "p_psDetermineBracket() called with zero line vector.\n");
@@ -1234,34 +1226,12 @@
     tmp = psVectorAlloc(params->n, PS_TYPE_F32);
 
-    b = 0;
-    a = -stepSize;
-    c = stepSize;
-
-    for (i=0;i<params->n;i++) {
-        if (paramMask->data.U8[i] == 0) {
-            tmp->data.F32[i] = params->data.F32[i] + (a * line->data.F32[i]);
-        } else {
-            tmp->data.F32[i] = params->data.F32[i];
-        }
-    }
+    a = 0.0;
+    b = stepSize;
+
+    PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, a);
     fa = func(tmp, coords);
 
-    for (i=0;i<params->n;i++) {
-        if (paramMask->data.U8[i] == 0) {
-            tmp->data.F32[i] = params->data.F32[i] + (b * line->data.F32[i]);
-        } else {
-            tmp->data.F32[i] = params->data.F32[i];
-        }
-    }
+    PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, b);
     fb = func(tmp, coords);
-
-    for (i=0;i<params->n;i++) {
-        if (paramMask->data.U8[i] == 0) {
-            tmp->data.F32[i] = params->data.F32[i] + (c * line->data.F32[i]);
-        } else {
-            tmp->data.F32[i] = params->data.F32[i];
-        }
-    }
-    fc = func(tmp, coords);
 
     if (fa < fb) {
@@ -1296,20 +1266,8 @@
         c =+ stepSize;
 
-        for (i=0;i<params->n;i++) {
-            if (paramMask->data.U8[i] == 0) {
-                tmp->data.F32[i] = params->data.F32[i] + (a * line->data.F32[i]);
-            } else {
-                tmp->data.F32[i] = params->data.F32[i];
-            }
-        }
+        PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, a);
         fa = func(tmp, coords);
 
-        for (i=0;i<params->n;i++) {
-            if (paramMask->data.U8[i] == 0) {
-                tmp->data.F32[i] = params->data.F32[i] + (c * line->data.F32[i]);
-            } else {
-                tmp->data.F32[i] = params->data.F32[i];
-            }
-        }
+        PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, c);
         fc = func(tmp, coords);
 
@@ -1391,5 +1349,5 @@
     psVector *tmpn = NULL;
     psS32 i = 0;
-    psS32 null = 0;
+    psS32 boolLineIsNull = true;
 
     psTrace(".psLib.dataManip.p_psLineMin", 4,
@@ -1404,5 +1362,5 @@
             if (paramMask->data.U8[i] == 0) {
                 if (line->data.F32[i] >= FLT_EPSILON) {
-                    null = 1;
+                    boolLineIsNull = false;
                     psTrace(".psLib.dataManip.p_psLineMin", 4,
                             "line->data.F32[%d] is %f\n", i, line->data.F32[i]);
@@ -1413,5 +1371,5 @@
         for (i=0;i<params->n;i++) {
             if (line->data.F32[i] >= FLT_EPSILON) {
-                null = 1;
+                boolLineIsNull = false;
                 psTrace(".psLib.dataManip.p_psLineMin", 4,
                         "line->data.F32[%d] is %f\n", i, line->data.F32[i]);
@@ -1420,5 +1378,5 @@
     }
 
-    if (null == 0) {
+    if (boolLineIsNull == true) {
         psTrace(".psLib.dataManip.p_psLineMin", 2,
                 "p_psLineMin() called with zero line vector.\n");
