Description: resolve a name clash on word "eval".
 The yorick-yutils package contains an eval() function. MiRA uses the
 same word as a local variable in several functions, which works
 erratically when yutils is installed. This patch changes all
 occurences of "eval" in MiRA to something else.
Author: Thibaut Paumard <paumard@users.sourceforge.net>
Forwarded: yes
Last-Update: 2010-01-30

--- a/mira.i
+++ b/mira.i
@@ -1,3 +1,7 @@
+///////////////////////////////////////////////////////////////////////////
+// This file has been modified for better integration on Debian systems. //
+// All bugs must be directed first to the Debian bug tracking system.    //
+///////////////////////////////////////////////////////////////////////////
 /*
  * mira.i -
  *
@@ -2313,15 +2317,15 @@
   return x;
 }
 
-func _mira_solve_printer(output, iter, eval, cpu, fx, gnorm, steplen, x, extra)
+func _mira_solve_printer(output, iter, evaln, cpu, fx, gnorm, steplen, x, extra)
 {
-  if (eval == 1) {
+  if (evaln == 1) {
     write, output, format="# %s\n# %s\n",
       "ITER  EVAL   CPU (ms)        FUNC               <FDATA>  FPRIOR    GNORM    STEPLEN",
       "-----------------------------------------------------------------------------------";
   }
   write, output, format=" %5d %5d %10.3f  %+-24.15e%-9.1e%-9.1e%-11.3e%-9.1e\n",
-    iter, eval, cpu, fx, extra.data_err/extra.master.ndata,
+    iter, evaln, cpu, fx, extra.data_err/extra.master.ndata,
     extra.regul_err, gnorm, step;
 }
 
@@ -2547,7 +2551,7 @@
   }
   step = 0.0;
   task = 1;
-  eval = iter = 0;
+  evaln = iter = 0;
   stop = 0n;
   if (verb) {
     elapsed = array(double, 3);
@@ -2567,7 +2571,7 @@
         }
       }
       fx = (use_extra ? f(x, gx, extra) : f(x, gx));
-      ++eval;
+      ++evaln;
       if (bounds) {
         /* Figure out the set of free parameters:
          *   ACTIVE(i) = 0 if X(i) has a lower bound XMIN(i)
@@ -2587,7 +2591,7 @@
     }
 
     /* Check for convergence. */
-    if (task != 1 || eval == 1) {
+    if (task != 1 || evaln == 1) {
       gnorm =  mira_projected_gradient_norm(x, gx, xmin=xmin, xmax=xmax);
       if (task > 2) {
         stop = 1n;
@@ -2598,13 +2602,13 @@
       } else if (check_iter && iter > maxiter) {
         stop = 1n;
         msg = swrite(format="warning: too many iterations (%d)\n", iter);
-      } else if (check_eval && eval > maxeval) {
+      } else if (check_eval && evaln > maxeval) {
         stop = 1n;
         msg = swrite(format="warning: too many function evaluations (%d)\n",
-                     eval);
+                     evaln);
       }
       if (verb) {
-        if (eval == 1 && ! use_printer) {
+        if (evaln == 1 && ! use_printer) {
           write, output, format="# Method %d (MEM=%d): %s\n#\n",
             method, mem, method_name;
           write, output, format="# %s\n# %s\n",
@@ -2616,10 +2620,10 @@
           cpu = 1e3*(elapsed(1) - cpu_start);
           // FIXME: this is a hack...
           if (use_printer) {
-            printer, output, iter, eval, cpu, fx, gnorm, steplen, x, extra;
+            printer, output, iter, evaln, cpu, fx, gnorm, steplen, x, extra;
           } else {
             write, output, format=" %5d %5d %10.3f  %+-24.15e%-9.1e%-9.1e\n",
-              iter, eval, cpu, fx, gnorm, step;
+              iter, evaln, cpu, fx, gnorm, step;
           }
           if (use_viewer) {
             viewer, x, extra;
