Index: /trunk/psLib/src/math/psMinimizeLMM.c
===================================================================
--- /trunk/psLib/src/math/psMinimizeLMM.c	(revision 6941)
+++ /trunk/psLib/src/math/psMinimizeLMM.c	(revision 6942)
@@ -10,6 +10,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-04-19 18:31:17 $
+ *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-04-21 21:18:44 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -62,5 +62,5 @@
     psF64 lambda)
 {
-    # define USE_LU_DECOMP 1
+    # define USE_LU_DECOMP 0
     # if (USE_LU_DECOMP)
         psVector *LUv = NULL;
@@ -115,5 +115,5 @@
 
     if (false == psGaussJordan(Alpha, Beta)) {
-        psError(PS_ERR_UNKNOWN, false, "psMatrixInvert() returned NULL\n");
+        psTrace (__func__, 4, "singular matrix in Guess ABP\n");
         return(false);
     }
@@ -141,4 +141,5 @@
         }
     }
+
 
     return(true);
@@ -178,5 +179,5 @@
     psF64 rcF64 = p_psMinLM_SetABX(alpha, beta, params, paramMask, x, y, dy, func);
     if (isnan(rcF64)) {
-        psError(PS_ERR_UNKNOWN, false, "p_psMinLM_SetABX() returned a NAN.\n");
+        psTrace (__func__, 5, "p_psMinLM_SetABX() returned a NAN.\n");
         rc = false;
     }
@@ -185,5 +186,5 @@
     psBool rcBool = p_psMinLM_GuessABP(Alpha, delta, Params, alpha, beta, params, paramMask, NULL, NULL, NULL, 0.0);
     if (rcBool == false) {
-        psError(PS_ERR_UNKNOWN, false, "p_psMinLM_GuessABP() returned FALSE.\n");
+        psTrace (__func__, 5, "p_psMinLM_GuessABP() returned FALSE.\n");
         rc = false;
     }
@@ -424,6 +425,10 @@
 
         // set a new guess for Alpha, Beta, Params
-        p_psMinLM_GuessABP(Alpha, Beta, Params, alpha, beta, params, paramMask,
-                           paramDelta, paramMin, paramMax, lambda);
+        if (!p_psMinLM_GuessABP(Alpha, Beta, Params, alpha, beta, params, paramMask,
+                                paramDelta, paramMin, paramMax, lambda)) {
+            min->iter ++;
+            lambda *= 10.0;
+            continue;
+        }
 
         // measure linear model prediction
@@ -486,6 +491,8 @@
     // construct & return the covariance matrix (if requested)
     if (covar != NULL) {
-        p_psMinLM_GuessABP(covar, Beta, Params, alpha, beta, params, paramMask,
-                           paramDelta, paramMin, paramMax, 0.0);
+        if (!p_psMinLM_GuessABP(covar, Beta, Params, alpha, beta, params, paramMask,
+                                paramDelta, paramMin, paramMax, 0.0)) {
+            psTrace (__func__, 5, "failure to calculate covariance matrix\n");
+        }
     }
 
@@ -538,5 +545,5 @@
         for (j = 0; j < Nx; j++) {
             if (!isfinite(matrix[i][j])) {
-                psError(PS_ERR_UNKNOWN, false, "Input matrix contains NaNs: matrix[%d][%d] is %.2f\n", i, j, matrix[i][j]);
+                psTrace (__func__, 3, "Input matrix contains NaNs: matrix[%d][%d] is %.2f\n", i, j, matrix[i][j]);
                 goto fescape;
             }
@@ -551,5 +558,5 @@
                     } else {
                         if (ipiv[k] > 1) {
-                            psError(PS_ERR_UNKNOWN, false, "Singular Matrix (1).\n");
+                            psTrace (__func__, 3, "Singular Matrix (1).\n");
                             goto fescape;
                         }
@@ -568,5 +575,5 @@
         indxc[i] = icol;
         if (matrix[icol][icol] == 0.0) {
-            psError(PS_ERR_UNKNOWN, false, "Singular Matrix (2).\n");
+            psTrace (__func__, 3, "Singular Matrix (2).\n");
             goto fescape;
         }
