changeset 6494:76a1a953533d

[project @ 2007-04-05 16:09:03 by jwe]
author jwe
date Thu, 05 Apr 2007 16:09:03 +0000
parents 5fa513371dde
children fd09c7e8c4c9
files scripts/ChangeLog scripts/testfun/assert.m scripts/testfun/demo.m scripts/testfun/example.m scripts/testfun/fail.m scripts/testfun/speed.m scripts/testfun/test.m
diffstat 7 files changed, 440 insertions(+), 336 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/ChangeLog	Thu Apr 05 14:53:49 2007 +0000
+++ b/scripts/ChangeLog	Thu Apr 05 16:09:03 2007 +0000
@@ -1,3 +1,24 @@
+2007-04-05  John W. Eaton  <jwe@octave.org>
+
+	* testfun/speed.m: Use "strcat (...)" instead of "[...]".
+	Plotting fixes.  Style fixes.
+
+	* testfun/test.m: Use "strcat (...)" instead of "[...]".
+	Style fixes.
+
+	* testfun/fail.m: No need to check for evalin and lastwarn.
+	Style fixes.
+
+	* testfun/demo.m, testfun/example.m: Style fixes.
+	Use "strcat (...)" instead of "[...]".
+	Use format specifiers in calls to warning.
+
+	* testfun/assert.m: Use "numel (x)" instead of "prod (size (x))".
+	Use "strcat (...)" instead of "[...]".
+	Use "x(end)" instead of "x(length (x))".
+	Check NA before NaN.
+	Style fixes.
+
 2007-03-29  John W. Eaton  <jwe@octave.org>
 
 	* plot/stem.m (stem, set_default_values): Use RGB triple for color.
--- a/scripts/testfun/assert.m	Thu Apr 05 14:53:49 2007 +0000
+++ b/scripts/testfun/assert.m	Thu Apr 05 16:09:03 2007 +0000
@@ -46,7 +46,8 @@
 ## TODO: but instead give a summary; don't print out the whole list, just
 ## TODO: say what the first different element is, etc.  To do this, make
 ## TODO: the message generation type specific.
-function assert(cond, expected, tol)
+
+function assert (cond, expected, tol)
 
   if (nargin < 1 || nargin > 3)
     print_usage ();
@@ -56,27 +57,30 @@
     tol = 0;
   endif
 
-  if exist("argn") == 0, argn=" "; endif
-  in = deblank(argn(1,:));
-  for i=2:rows(argn)
-    in = [in, ",", deblank(argn(i,:))];
+  if (exist ("argn") == 0)
+    argn = " ";
+  endif
+
+  in = deblank (argn(1,:));
+  for i = 2:rows (argn)
+    in = strcat (in, ",", deblank (argn(i,:)));
   end
-  in = ["(",in,")"];
+  in = strcat ("(", in, ")");
 
   coda = "";
   iserror = 0;
   if (nargin == 1)
-    if (!isnumeric(cond) || !all(cond(:)))
+    if (! isnumeric (cond) || ! all (cond(:)))
       error ("assert %s failed", in); # say which elements failed?
     endif
   
-  elseif (is_list(cond))
-    if (!is_list(expected) || length(cond) != length(expected))
+  elseif (is_list (cond))
+    if (! is_list (expected) || length (cond) != length (expected))
       iserror = 1;
     else
       try
-	for i=1:length(cond)
-	  assert(nth(cond,i),nth(expected,i));
+	for i = 1:length (cond)
+	  assert (nth (cond, i), nth (expected, i));
 	endfor
       catch
 	iserror = 1;
@@ -84,15 +88,15 @@
     endif
 
   elseif (ischar (expected))
-    iserror = (!ischar (cond) || !strcmp (cond, expected));
+    iserror = (! ischar (cond) || ! strcmp (cond, expected));
 
-  elseif (iscell(expected))
-    if (!iscell (cond) || any(size(cond)!=size(expected)))
+  elseif (iscell (expected))
+    if (! iscell (cond) || any (size (cond) != size (expected)))
       iserror = 1;
     else
       try
-	for i=1:length(expected(:))
-	  assert(cond{i},expected{i},tol);
+	for i = 1:length (expected(:))
+	  assert (cond{i}, expected{i}, tol);
 	endfor
       catch
 	iserror = 1;
@@ -100,18 +104,26 @@
     endif
 
   elseif (isstruct (expected))
-    if (!isstruct (cond) || any(size(cond) != size(expected))
-	|| rows(struct_elements(cond)) != rows(struct_elements(expected)))
+    if (! isstruct (cond) || any (size (cond) != size (expected))
+	|| rows(struct_elements (cond)) != rows (struct_elements (expected)))
       iserror = 1;
     else
       try
-	empty=prod(size(cond))==0;
-	normal=prod(size(cond))==1;
-	for [v,k] = cond
-	  if !struct_contains(expected,k), error; endif
-	  if empty, v = cell(1,0); endif
-	  if normal, v = {v}; else v = v(:)'; endif
-	  assert(v,{expected.(k)},tol)
+	empty = numel (cond) == 0;
+	normal = numel (cond) == 1;
+	for [v, k] = cond
+	  if (! struct_contains (expected, k))
+	    error ();
+	  endif
+	  if (empty)
+	    v = cell (1, 0);
+	  endif
+	  if (normal)
+	    v = {v};
+	  else
+	    v = v(:)';
+	  endif
+	  assert (v, {expected.(k)}, tol);
 	endfor
       catch
 	iserror = 1;
@@ -123,70 +135,73 @@
     iserror = 1;
     coda = "Dimensions don't match";
 
-  elseif tol==0 && !strcmp(typeinfo(cond),typeinfo(expected))
+  elseif (tol == 0 && ! strcmp (typeinfo (cond), typeinfo (expected)))
     iserror = 1;
-    coda = ["Type ",typeinfo(cond)," != ",typeinfo(expected)];
+    coda = strcat ("Type ", typeinfo (cond), " != ", typeinfo (expected));
 
   else # numeric
-    A=cond(:); B=expected(:);
+    A = cond(:);
+    B = expected(:);
     ## Check exceptional values
-    if any(isnan(A) != isnan(B))
+    if (any (isna (A) != isna (B)))
+      iserror = 1;
+      coda = "NAs don't match";
+    elseif (any (isnan (A) != isnan (B)))
       iserror = 1;
       coda = "NaNs don't match";
-    elseif any(isna(A) != isna(B))
-      iserror = 1;
-      coda = "NAs don't match";
-      ## Try to avoid problems comparing strange values like Inf+NaNi.
-    elseif (any(isinf(A) != isinf(B))
-	    || any(A(isinf(A) & !isnan(A)) != B(isinf(B) & !isnan(B))))
+### Try to avoid problems comparing strange values like Inf+NaNi.
+    elseif (any (isinf (A) != isinf (B))
+	    || any (A(isinf (A) & ! isnan (A)) != B(isinf (B) & ! isnan (B))))
       iserror = 1;
       coda = "Infs don't match";
     else
       ## Check normal values
-      A = A(finite(A)); B=B(finite(B));
-      if tol == 0,
-        err = any(A != B);
+      A = A(finite (A));
+      B = B(finite (B));
+      if (tol == 0)
+        err = any (A != B);
 	errtype = "values do not match";
-      elseif tol >= 0,
-	err = max(abs(A-B));
+      elseif (tol >= 0)
+	err = max (abs (A - B));
 	errtype = "maximum absolute error %g exceeds tolerance %g";
       else 
-	abserr = max(abs(A(B==0)));
-	A = A(B!=0); B = B(B!=0);
-	relerr = max(abs(A-B)./abs(B));
-	err = max([abserr;relerr]);
+	abserr = max (abs (A(B == 0)));
+	A = A(B != 0);
+	B = B(B != 0);
+	relerr = max (abs (A - B) ./ abs (B));
+	err = max ([abserr; relerr]);
 	errtype = "maximum relative error %g exceeds tolerance %g";
       endif
-      if err > abs(tol)
+      if (err > abs (tol))
 	iserror = 1;
-	coda = sprintf(errtype,err,abs(tol));
+	coda = sprintf (errtype, err, abs (tol));
       endif
     endif
   endif
 
-  if (!iserror)
+  if (! iserror)
     return;
   endif
 
   ## pretty print the "expected but got" info,
   ## trimming leading and trailing "\n"
   str = disp (expected);
-  idx = find(str!="\n");
-  if (!isempty(idx))
-    str = str(idx(1):idx(length(idx)));
+  idx = find (str != "\n");
+  if (! isempty (idx))
+    str = str(idx(1):idx(end));
   endif
   str2 = disp (cond);
-  idx = find(str2!="\n");
-  if (!isempty(idx))
-    str2 = str2(idx(1):idx(length(idx)));
+  idx = find (str2 != "\n");
+  if (! isempty (idx))
+    str2 = str2 (idx(1):idx(end));
   endif
-  msg = ["assert ",in," expected\n", str, "\nbut got\n", str2];
-  if (!isempty(coda))
-    msg = [ msg, "\n", coda ];
+  msg = strcat ("assert ", in, " expected\n", str, "\nbut got\n", str2);
+  if (! isempty (coda))
+    msg = strcat (msg, "\n", coda);
   endif
-  error("%s",msg);
-  ## disp(msg);
-  ## error("assertion failed");
+  error ("%s", msg);
+  ## disp (msg);
+  ## error ("assertion failed");
 endfunction
 
 ## empty
--- a/scripts/testfun/demo.m	Thu Apr 05 14:53:49 2007 +0000
+++ b/scripts/testfun/demo.m	Thu Apr 05 16:09:03 2007 +0000
@@ -75,7 +75,7 @@
 
 ## PKG_ADD: mark_as_command demo
 
-function demo(name, n)
+function demo (name, n)
 
   if (nargin < 1 || nargin > 2)
     print_usage ();
@@ -85,12 +85,12 @@
     n = 0;
   endif
 
-  [code, idx] = test (name, 'grabdemo');
-  if (length(idx) == 0)
-    warning(["demo not available for ", name]);
+  [code, idx] = test (name, "grabdemo");
+  if (length (idx) == 0)
+    warning ("demo not available for %s", name);
     return;
-  elseif (n >= length(idx))
-    warning(sprintf("only %d demos available for %s", length(idx)-1, name));
+  elseif (n >= length (idx))
+    warning ("only %d demos available for %s", length (idx) - 1, name);
     return;
   endif
 
@@ -98,25 +98,25 @@
   if (n > 0)
     doidx = n;
   else
-    doidx = [ 1 : length(idx)-1 ];
+    doidx = 1:length(idx)-1;
   endif
-  for i=1:length(doidx)
+  for i = 1:length (doidx)
     ## Pause between demos
     if (i > 1)
-      input("Press <enter> to continue: ","s");
+      input ("Press <enter> to continue: ", "s");
     endif
 
     ## Process each demo without failing
     try
-      block = code( idx(doidx(i)) : idx(doidx(i)+1) -1 );
+      block = code(idx(doidx(i)):idx(doidx(i)+1)-1);
       ## Use an environment without variables
-      eval(["function __demo__()\n", block, "\nendfunction"]);
+      eval (strcat ("function __demo__()\n", block, "\nendfunction"));
       ## Display the code that will be executed before executing it
-      printf("%s example %d:%s\n\n", name, doidx(i), block);
+      printf ("%s example %d:%s\n\n", name, doidx(i), block);
       __demo__;
     catch
       ## Let the programmer know which demo failed.
-      printf("%s example %d: failed\n%s", name, doidx(i), __error_text__);
+      printf ("%s example %d: failed\n%s", name, doidx(i), __error_text__);
     end_try_catch
     clear __demo__;
   endfor
--- a/scripts/testfun/example.m	Thu Apr 05 14:53:49 2007 +0000
+++ b/scripts/testfun/example.m	Thu Apr 05 16:09:03 2007 +0000
@@ -33,7 +33,7 @@
 
 ## PKG_ADD: mark_as_command example
 
-function [code_r, idx_r] = example(name, n)
+function [code_r, idx_r] = example (name, n)
 
   if (nargin < 1 || nargin > 2)
     print_usage ();
@@ -42,11 +42,11 @@
     n = 0;
   endif
 
-  [code, idx] = test (name, 'grabdemo');
+  [code, idx] = test (name, "grabdemo");
   if (nargout > 0)
     if (n > 0)
-      if (n <= length(idx))
-      	code_r = code(idx(n) : idx(n+1)-1);
+      if (n <= length (idx))
+      	code_r = code(idx(n):idx(n+1)-1);
       	idx_r = [1, length(code_r)+1];
       else
 	code_r = "";
@@ -60,18 +60,18 @@
     if (n > 0)
       doidx = n;
     else
-      doidx = [ 1:length(idx)-1 ];
+      doidx = 1:length(idx)-1;
     endif
-    if (length(idx) == 0)
-      warning(["example not available for ", name]);
+    if (length (idx) == 0)
+      warning ("example not available for %s", name);
     elseif (n >= length(idx))
-      warning(sprintf("only %d examples available for %s", length(idx)-1, name));
+      warning ("only %d examples available for %s", length(idx)-1, name);
       doidx = [];
     endif
 
     for i=1:length(doidx)
-      block = code( idx(doidx(i)) : idx(doidx(i)+1) -1 );
-      printf("%s example %d:%s\n\n", name, doidx(i), block);
+      block = code(idx(doidx(i)):idx(doidx(i)+1)-1);
+      printf ("%s example %d:%s\n\n", name, doidx(i), block);
     endfor
   endif
 
--- a/scripts/testfun/fail.m	Thu Apr 05 14:53:49 2007 +0000
+++ b/scripts/testfun/fail.m	Thu Apr 05 16:09:03 2007 +0000
@@ -1,3 +1,20 @@
+## Copyright (C) 2005 Paul Kienzle
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+## 02110-1301  USA
+
 ## -*- texinfo -*-
 ## @deftypefn {Function File} {} fail (@var{code},@var{pattern})
 ## @deftypefnx {Function File} {} fail (@var{code},'warning',@var{pattern})
@@ -29,68 +46,77 @@
 ## Author: Paul Kienzle <pkienzle@users.sf.net>
 
 ## PKG_ADD mark_as_command fail
-function ret=fail(code,pattern,warning_pattern)
-  if nargin < 1 || nargin > 3
+
+function ret = fail (code, pattern, warning_pattern)
+
+  if (nargin < 1 || nargin > 3)
     print_usage ();
   endif
 
   ## sort out arguments
-  test_warning =  (nargin > 1 && strcmp(pattern,'warning'));
-  if nargin == 3
+  test_warning = (nargin > 1 && strcmp (pattern, "warning"));
+  if (nargin == 3)
     pattern = warning_pattern;
-  elseif nargin == 1 || (nargin==2 && test_warning)
+  elseif (nargin == 1 || (nargin==2 && test_warning))
     pattern = "";
   endif
-  if isempty(pattern), pattern = "."; endif  # match any nonempty message
+
+  ## match any nonempty message
+  if (isempty (pattern))
+    pattern = ".";
+  endif
 
   ## allow assert(fail())
-  if nargout, ret=1; endif  
-
-  ## don't test failure if evalin doesn't exist
-  if !exist('evalin') || !exist('lastwarn'), return; endif
+  if (nargout)
+    ret = 1;
+  endif  
 
-  if test_warning
+  if (test_warning)
     ## perform the warning test
-    lastwarn();  # clear old warnings
-    state = warning("query","quiet"); # make sure warnings are turned on
-    warning("on","quiet");
+    lastwarn ();  # clear old warnings
+    state = warning ("query", "quiet"); # make sure warnings are turned on
+    warning ("on", "quiet");
     try
       ## printf("lastwarn before %s: %s\n",code,lastwarn);
-      evalin("caller",sprintf("%s;",code));
+      evalin ("caller", sprintf ("%s;", code));
       ## printf("lastwarn after %s: %s\n",code,lastwarn);
-      err = lastwarn;  # retrieve new warnings
-      warning(state.state,"quiet");
-      if isempty(err), 
-        msg = sprintf("expected warning <%s> but got none", pattern); 
+      err = lastwarn ();  # retrieve new warnings
+      warning (state.state, "quiet");
+      if (isempty (err))
+        msg = sprintf ("expected warning <%s> but got none", pattern); 
       else
-        err([1:9,end]) = [];  # transform "warning: ...\n" to "..."
-        if !isempty(regexp(err,pattern,"once")), return; end
-        msg = sprintf("expected warning <%s>\nbut got <%s>", pattern,err);
+        err([1:9, end]) = [];  # transform "warning: ...\n" to "..."
+        if (! isempty (regexp (err, pattern, "once")))
+	  return;
+	endif
+        msg = sprintf ("expected warning <%s>\nbut got <%s>", pattern, err);
       endif
     catch
-      warning(state.state,"quiet");
+      warning (state.state, "quiet");
       err = lasterr;
-      err([1:7,end]) = [];  # transform "error: ...\n", to "..."
-      msg = sprintf("expected warning <%s> but got error <%s>", pattern, err);
+      err([1:7, end]) = [];  # transform "error: ...\n", to "..."
+      msg = sprintf ("expected warning <%s> but got error <%s>", pattern, err);
     end
       
   else
     ## perform the error test
     try
-      evalin("caller",sprintf("%s;",code));
-      msg = sprintf("expected error <%s> but got none", pattern);
+      evalin ("caller", sprintf ("%s;", code));
+      msg = sprintf ("expected error <%s> but got none", pattern);
     catch
-      err=lasterr;
-      if (strcmp(err(1:7),"error:"))
-         err([1:6,end]) = []; # transform "error: ...\n", to "..."
+      err = lasterr ();
+      if (strcmp (err(1:7), "error:"))
+         err([1:6, end]) = []; # transform "error: ...\n", to "..."
       endif
-      if !isempty(regexp(err,pattern,"once")), return; end
-      msg = sprintf("expected error <%s>\nbut got <%s>",pattern,err);
+      if (! isempty (regexp (err, pattern, "once")))
+	return;
+      endif
+      msg = sprintf ("expected error <%s>\nbut got <%s>", pattern, err);
     end
   endif
 
   ## if we get here, then code didn't fail or error didn't match
-  error(msg);
+  error (msg);
 endfunction
 
 %!fail ('[1,2]*[2,3]','nonconformant')
--- a/scripts/testfun/speed.m	Thu Apr 05 14:53:49 2007 +0000
+++ b/scripts/testfun/speed.m	Thu Apr 05 16:09:03 2007 +0000
@@ -143,94 +143,107 @@
 
 ## TODO: consider two dimensional speedup surfaces for functions like kron.
 function [__order, __test_n, __tnew, __torig] ...
-	= speed (__f1, __init, __max_n, __f2, __tol)
-  if nargin < 1 || nargin > 6, 
+      = speed (__f1, __init, __max_n, __f2, __tol)
+
+  if (nargin < 1 || nargin > 6)
     print_usage ();
   endif
-  if nargin < 2 || isempty(__init), 
+
+  if (nargin < 2 || isempty (__init))
     __init = "x = randn(n, 1);";
   endif
-  if nargin < 3 || isempty(__max_n), __max_n = 100; endif
-  if nargin < 4, __f2 = []; endif
-  if nargin < 5 || isempty(__tol), __tol = eps; endif
+
+  if (nargin < 3 || isempty (__max_n))
+    __max_n = 100;
+  endif
+
+  if (nargin < 4)
+    __f2 = [];
+  endif
+
+  if (nargin < 5 || isempty (__tol))
+    __tol = eps;
+  endif
 
   __numtests = 15;
 
   ## Let user specify range of n
-  if isscalar(__max_n)
+  if (isscalar (__max_n))
     __min_n = 1;
-    assert(__max_n > __min_n);
-    __test_n = logspace(0,log10(__max_n),__numtests);
-  elseif length(__max_n) == 2
+    assert (__max_n > __min_n);
+    __test_n = logspace (0, log10 (__max_n), __numtests);
+  elseif (length (__max_n) == 2)
     __min_n = __max_n(1);
     __max_n = __max_n(2);
-    assert(__min_n >= 1);
-    __test_n = logspace(log10(__min_n),log10(__max_n),__numtests);
+    assert (__min_n >= 1);
+    __test_n = logspace (log10 (__min_n), log10 (__max_n), __numtests);
   else
     __test_n = __max_n;
   endif
-  __test_n = unique(round(__test_n)); # Force n to be an integer
-  assert(__test_n >= 1);
+  __test_n = unique (round (__test_n)); # Force n to be an integer
+  assert (__test_n >= 1);
 
-  __torig = __tnew = zeros (size(__test_n)) ;
+  __torig = __tnew = zeros (size (__test_n));
 
-  disp (["testing ", __f1, "\ninit: ", __init]);
+  disp (strcat ("testing ", __f1, "\ninit: ", __init));
 
   ## make sure the functions are freshly loaded by evaluating them at
   ## test_n(1); first have to initialize the args though.
-  n=1; k=0;
-  eval ([__init, ";"]);
-  if !isempty(__f2), eval ([__f2, ";"]); endif
-  eval ([__f1, ";"]);
+  n = 1;
+  k = 0;
+  eval (strcat (__init, ";"));
+  if (! isempty (__f2))
+    eval (strcat (__f2, ";"));
+  endif
+  eval (strcat (__f1, ";"));
 
   ## run the tests
-  for k=1:length(__test_n)
-    n=__test_n(k);
-    eval ([__init, ";"]);
+  for k = 1:length (__test_n)
+    n = __test_n(k);
+    eval (strcat (__init, ";"));
     
-    printf ("n%i=%i  ",k, n) ; fflush(1);
-    eval (["__t=time();", __f1, "; __v1=ans; __t = time()-__t;"]);
+    printf ("n%i=%i  ",k, n);
+    fflush (stdout);
+    eval (strcat ("__t=time();", __f1, "; __v1=ans; __t = time()-__t;"));
     if (__t < 0.25)
-      eval (["__t2=time();", __f1, "; __t2 = time()-__t2;"]);
-      eval (["__t3=time();", __f1, "; __t3 = time()-__t3;"]);
-      __t = min([__t,__t2,__t3]);
+      eval (strcat ("__t2=time();", __f1, "; __t2 = time()-__t2;"));
+      eval (strcat ("__t3=time();", __f1, "; __t3 = time()-__t3;"));
+      __t = min ([__t, __t2, __t3]);
     endif
     __tnew(k) = __t;
 
-    if !isempty(__f2)
-      eval (["__t=time();", __f2, "; __v2=ans; __t = time()-__t;"]);
+    if (! isempty (__f2))
+      eval (strcat ("__t=time();", __f2, "; __v2=ans; __t = time()-__t;"));
       if (__t < 0.25)
-      	eval (["__t2=time();", __f2, "; __t2 = time()-__t2;"]);
-      	eval (["__t3=time();", __f2, "; __t3 = time()-__t3;"]);
+      	eval (strcat ("__t2=time();", __f2, "; __t2 = time()-__t2;"));
+      	eval (strcat ("__t3=time();", __f2, "; __t3 = time()-__t3;"));
       endif
       __torig(k) = __t;
-      if !isinf(__tol)
-      	assert(__v1,__v2,__tol);
+      if (! isinf(__tol))
+      	assert (__v1, __v2, __tol);
       endif
     endif
-    
   endfor
   
   ## Drop times of zero
-  if !isempty(__f2)
-    zidx = ( __tnew < 100*eps |  __torig < 100*eps ) ;
+  if (! isempty (__f2))
+    zidx = (__tnew < 100*eps |  __torig < 100*eps);
     __test_n(zidx) = [];
     __tnew(zidx) = [];
     __torig(zidx) = [];
   else
-    zidx = ( __tnew < 100*eps ) ;
+    zidx = (__tnew < 100*eps);
     __test_n(zidx) = [];
     __tnew(zidx) = [];
   endif
-   
+
   ## Approximate time complexity and return it if requested
-  tailidx = [ceil(length(__test_n)/2):length(__test_n)];
-  p = polyfit(log(__test_n(tailidx)),log(__tnew(tailidx)), 1);
-  if nargout > 0, 
+  tailidx = ceil(length(__test_n)/2):length(__test_n);
+  p = polyfit (log (__test_n(tailidx)), log (__tnew(tailidx)), 1);
+  if (nargout > 0) 
     __order.p = p(1);
-    __order.a = exp(p(2));
+    __order.a = exp (p(2));
   endif
-  
 
   ## Plot the data if no output is requested.
   doplot = (nargout == 0);
@@ -239,59 +252,64 @@
     figure;
   endif
 
-  if doplot && !isempty(__f2)
-    subplot(121);
-    hold on;
-    xlabel("test length");
-    title (__f1);
-    ylabel("speedup ratio");
-    semilogx ( __test_n, __torig./__tnew, 
-	      ["-*r;", strrep(__f1,";","."), "/", strrep(__f2,";","."), ";"],
+  if (doplot && ! isempty (__f2))
+    subplot (1, 2, 1);
+    semilogx (__test_n, __torig./__tnew, 
+	      strcat ("-*r;", strrep (__f1, ";", "."), "/",
+		      strrep (__f2, ";", "."), ";"),
 	       __test_n, __tnew./__torig,
-	      ["-*g;", strrep(__f2,";","."), "/", strrep(__f1,";","."), ";"]);
-    subplot (122);
-    hold on;
-    xlabel("test length");
+	      strcat ("-*g;", strrep (__f2, ";", "."), "/",
+		      strrep (__f1, ";", "."), ";"));
+    xlabel ("test length");
+    title (__f1);
+    ylabel ("speedup ratio");
+
+    subplot (1, 2, 2);
+    loglog (__test_n, __tnew*1000,
+	    strcat ("*-g;", strrep (__f1, ";", "."), ";" ), 
+	    __test_n, __torig*1000,
+	    strcat ("*-r;", strrep (__f2,";","."), ";"));
+  
+    xlabel ("test length");
     ylabel ("best execution time (ms)");
-    title (["init: ", __init]);
-    loglog ( __test_n, __tnew*1000, ["*-g;", strrep(__f1,";","."), ";" ], 
-	     __test_n, __torig*1000, ["*-r;", strrep(__f2,";","."), ";"])
-  
+    title (strcat ("init: ", __init));
+
     ratio = mean (__torig ./ __tnew);
-    printf ("\n\nMean runtime ratio = %.3g for '%s' vs '%s'\n", ...
+    printf ("\n\nMean runtime ratio = %.3g for '%s' vs '%s'\n",
             ratio, __f2, __f1);
 
-  elseif doplot
+  elseif (doplot)
 
-    subplot(111);
-    hold on;
-    xlabel("test length");
+    loglog (__test_n, __tnew*1000, "*-g;execution time;");
+    xlabel ("test length");
     ylabel ("best execution time (ms)");
-    title ([__f1, "  init: ", __init]);
-    loglog ( __test_n, __tnew*1000, "*-g;execution time;");
+    title (strcat (__f1, "  init: ", __init));
 
   endif
 
-  if doplot
+  if (doplot)
 
     ## Plot time complexity approximation (using milliseconds).
-    order = sprintf("O(n^%g)",round(10*p(1))/10);
-    v = polyval(p,log(__test_n(tailidx)));
-    hold on; 
-    loglog(__test_n(tailidx), exp(v)*1000, sprintf("b;%s;",order)); 
-    hold off;
+    order = sprintf ("O(n^%g)", round (10*p(1))/10);
+    v = polyval (p, log (__test_n(tailidx)));
+
+    loglog (__test_n(tailidx), exp(v)*1000, sprintf ("b;%s;", order)); 
 
     ## Get base time to 1 digit of accuracy
-    dt = exp(p(2));
-    dt = floor(dt/10^floor(log10(dt)))*10^floor(log10(dt));
-    if log10(dt) >= -0.5, time = sprintf("%g s", dt);
-    elseif log10(dt) >= -3.5, time = sprintf("%g ms", dt*1e3);
-    elseif log10(dt) >= -6.5, time = sprintf("%g us", dt*1e6);
-    else time = sprintf("%g ns", dt*1e9);
+    dt = exp (p(2));
+    dt = floor (dt/10^floor(log10(dt)))*10^floor(log10(dt));
+    if (log10 (dt) >= -0.5)
+      time = sprintf ("%g s", dt);
+    elseif (log10 (dt) >= -3.5)
+      time = sprintf ("%g ms", dt*1e3);
+    elseif (log10 (dt) >= -6.5)
+      time = sprintf ("%g us", dt*1e6);
+    else
+      time = sprintf ("%g ns", dt*1e9);
     endif
 
     ## Display nicely formatted complexity.
-    printf ("\nFor %s:\n",__f1);
+    printf ("\nFor %s:\n", __f1);
     printf ("  asymptotic power: %s\n", order);
     printf ("  approximate time per operation: %s\n", time); 
 
--- a/scripts/testfun/test.m	Thu Apr 05 14:53:49 2007 +0000
+++ b/scripts/testfun/test.m	Thu Apr 05 16:09:03 2007 +0000
@@ -81,27 +81,29 @@
   persistent __signal_block = "  ***** ";
   persistent __signal_file =  ">>>>> ";
 
-  if (nargin < 2 || isempty(__flag))
+  if (nargin < 2 || isempty (__flag))
     __flag = "quiet";
   endif
-  if (nargin < 3) 
+  if (nargin < 3)
     __fid = []; 
   endif
-  if (nargin < 1 || nargin > 3 ...
-      || (!ischar(__name) && !isempty(__name)) || !ischar(__flag))
+  if (nargin < 1 || nargin > 3
+      || (! ischar (__name) && ! isempty (__name)) || ! ischar (__flag))
     print_usage ();
   endif
-  if (isempty(__name) && (nargin != 3 || !strcmp(__flag, "explain")))
+  if (isempty (__name) && (nargin != 3 || ! strcmp (__flag, "explain")))
     print_usage ();
   endif
-  __batch = (!isempty(__fid));
+  __batch = (! isempty (__fid));
 
   ## decide if error messages should be collected
   __close_fid = 0;
   if (__batch)
-    if (ischar(__fid))
-      __fid = fopen(__fid, "wt");
-      if __fid < 0, error("could not open log file"); endif
+    if (ischar (__fid))
+      __fid = fopen (__fid, "wt");
+      if (__fid < 0)
+	error ("could not open log file");
+      endif
       __close_fid = 1;
     endif
     fprintf (__fid, "%sprocessing %s\n", __signal_file, __name);
@@ -110,48 +112,50 @@
     __fid = stdout;
   endif
 
-  if (strcmp(__flag, "normal"))
+  if (strcmp (__flag, "normal"))
     __grabdemo = 0;
     __rundemo = 0;
     __verbose = __batch;
-  elseif (strcmp(__flag, "quiet"))
+  elseif (strcmp (__flag, "quiet"))
     __grabdemo = 0;
     __rundemo = 0;
     __verbose = 0;
-  elseif (strcmp(__flag, "verbose"))
+  elseif (strcmp (__flag, "verbose"))
     __grabdemo = 0;
     __rundemo = 1;
     __verbose = 1;
-  elseif (strcmp(__flag, "grabdemo"))
+  elseif (strcmp (__flag, "grabdemo"))
     __grabdemo = 1;
     __rundemo = 0;
     __verbose = 0;
     __demo_code = "";
     __demo_idx = 1;
-  elseif (strcmp(__flag, "explain"))
-    fprintf (__fid, "# %s new test file\n",__signal_file);
-    fprintf (__fid, "# %s no tests in file\n",__signal_empty);
-    fprintf (__fid, "# %s test had an unexpected result\n",__signal_fail);
-    fprintf (__fid, "# %s code for the test\n",__signal_block);
+  elseif (strcmp (__flag, "explain"))
+    fprintf (__fid, "# %s new test file\n", __signal_file);
+    fprintf (__fid, "# %s no tests in file\n", __signal_empty);
+    fprintf (__fid, "# %s test had an unexpected result\n", __signal_fail);
+    fprintf (__fid, "# %s code for the test\n", __signal_block);
     fprintf (__fid, "# Search for the unexpected results in the file\n");
     fprintf (__fid, "# then page back to find the file name which caused it.\n");
     fprintf (__fid, "# The result may be an unexpected failure (in which\n");
     fprintf (__fid, "# case an error will be reported) or an unexpected\n");
     fprintf (__fid, "# success (in which case no error will be reported).\n");
     fflush (__fid);
-    if (__close_fid) fclose(__fid); endif
+    if (__close_fid)
+      fclose(__fid);
+    endif
     return;
   else
-    error("test unknown flag '%s'", __flag);
+    error ("test unknown flag '%s'", __flag);
   endif
 
   ## locate the file to test
   __file = file_in_loadpath (__name, "all");
   if (isempty (__file))
-    __file = file_in_loadpath ([__name, ".m"], "all");
+    __file = file_in_loadpath (strcat (__name, ".m"), "all");
   endif
   if (isempty (__file))
-    __file = file_in_loadpath ([__name, ".cc"], "all");
+    __file = file_in_loadpath (strcat (__name, ".cc"), "all");
   endif
   if (iscell (__file))
       ## If repeats, return first in path.
@@ -166,11 +170,15 @@
       __ret1 = "";
       __ret2 = [];
     else
-      fprintf(__fid, "%s%s does not exist in path\n", __signal_empty, __name);
+      fprintf (__fid, "%s%s does not exist in path\n", __signal_empty, __name);
       fflush (__fid);
-      if (nargout > 0) __ret1 = __ret2 = 0; endif
+      if (nargout > 0)
+	__ret1 = __ret2 = 0;
+      endif
     endif
-    if (__close_fid) fclose(__fid); endif
+    if (__close_fid)
+      fclose(__fid);
+    endif
     return;
   endif
 
@@ -182,28 +190,32 @@
       __ret1 = "";
       __ret2 = [];
     else
-      fprintf(__fid, "%s%s has no tests available\n", __signal_empty, __file);
+      fprintf (__fid, "%s%s has no tests available\n", __signal_empty, __file);
       fflush (__fid);
-      if (nargout > 0) __ret1 = __ret2 = 0; endif
+      if (nargout > 0)
+	__ret1 = __ret2 = 0;
+      endif
     endif
-    if (__close_fid) fclose(__fid); endif
+    if (__close_fid)
+      fclose(__fid);
+    endif
     return;
   else
     ## add a dummy comment block to the end for ease of indexing
     if (__body (length(__body)) == "\n")
-      __body = sprintf("\n%s#", __body); 
+      __body = sprintf ("\n%s#", __body); 
     else
-      __body = sprintf("\n%s\n#", __body); 
+      __body = sprintf ("\n%s\n#", __body); 
     endif
   endif
 
   ## chop it up into blocks for evaluation
-  __lineidx = find(__body == "\n");
-  __blockidx = __lineidx(find(!isspace(__body(__lineidx+1))))+1;
+  __lineidx = find (__body == "\n");
+  __blockidx = __lineidx(find (! isspace (__body(__lineidx+1))))+1;
 
   ## ready to start tests ... if in batch mode, tell us what is happening
   if (__verbose)
-    disp ([ __signal_file, __file ]);
+    disp (strcat ( __signal_file, __file));
   endif
 
   ## assume all tests will pass
@@ -214,7 +226,7 @@
   __shared = " ";
   __shared_r = " ";
   __clear = "";
-  for __i=1:length(__blockidx)-1
+  for __i = 1:length(__blockidx)-1
 
     ## extract the block
     __block = __body(__blockidx(__i):__blockidx(__i+1)-2);
@@ -226,8 +238,8 @@
     endif
 
     ## split __block into __type and __code
-    __idx = find(!isletter(__block));
-    if (isempty(__idx))
+    __idx = find (! isletter (__block));
+    if (isempty (__idx))
       __type = __block;
       __code = "";
     else
@@ -251,21 +263,21 @@
       if (__grabdemo && __isdemo)
 	if (isempty(__demo_code))
 	  __demo_code = __code;
-	  __demo_idx = [ 1, length(__demo_code)+1 ];
+	  __demo_idx = [1, length(__demo_code)+1];
 	else
 	  __demo_code = strcat(__demo_code, __code);
-	  __demo_idx = [ __demo_idx, length(__demo_code)+1 ];
+	  __demo_idx = [__demo_idx, length(__demo_code)+1];
 	endif
 
       elseif (__rundemo && __isdemo)
       	try
 	  ## process the code in an environment without variables
-      	  eval(sprintf("function __test__()\n%s\nendfunction",__code));
+      	  eval (sprintf ("function __test__()\n%s\nendfunction", __code));
 	  __test__;
-	  input("Press <enter> to continue: ","s");
+	  input ("Press <enter> to continue: ", "s");
       	catch
 	  __success = 0;
-	  __msg = sprintf("%sdemo failed\n%s",  __signal_fail, __error_text__);
+	  __msg = sprintf ("%sdemo failed\n%s",  __signal_fail, __error_text__);
       	end_try_catch
       	clear __test__;
 
@@ -277,8 +289,8 @@
       __istest = 0;
 
       ## separate initialization code from variables
-      __idx = find(__code == "\n");
-      if (isempty(__idx))
+      __idx = find (__code == "\n");
+      if (isempty (__idx))
 	__vars = __code;
 	__code = "";
       else
@@ -287,18 +299,18 @@
       endif
       
       ## strip comments off the variables
-      __idx = find(__vars=="%" | __vars == "#");
-      if (!isempty(__idx))
+      __idx = find (__vars=="%" | __vars == "#");
+      if (! isempty (__idx))
 	__vars = __vars(1:__idx(1)-1);
       endif
       
       ## assign default values to variables
       try
-	__vars = deblank(__vars);
-	if (!isempty(__vars))
-	  eval([strrep(__vars,",","=[];"), "=[];"]);
+	__vars = deblank (__vars);
+	if (! isempty (__vars))
+	  eval (strcat (strrep (__vars, ",", "=[];"), "=[];"));
 	  __shared = __vars;
-	  __shared_r = ["[ ", __vars, "] = "];
+	  __shared_r = strcat ("[ ", __vars, "] = ");
       	else
 	  __shared = " ";
 	  __shared_r = " ";
@@ -306,90 +318,91 @@
       catch
 	__code = "";  # couldn't declare, so don't initialize
 	__success = 0;
-	__msg = sprintf("%sshared variable initialization failed\n", ...
-		        __signal_fail);
+	__msg = sprintf ("%sshared variable initialization failed\n",
+		         __signal_fail);
       end_try_catch
 
       ## clear shared function definitions
-      eval(__clear,""); __clear="";
+      eval (__clear, "");
+      __clear = "";
       
       ## initialization code will be evaluated below
     
     ## FUNCTION
-    elseif strcmp (__type, "function")
+    elseif (strcmp (__type, "function"))
       __istest = 0;
       persistent __fn = 0;
-      __name_position = function_name(__block);
-      if isempty(__name_position)
+      __name_position = function_name (__block);
+      if (isempty (__name_position))
         __success = 0;
-        __msg = sprintf("%stest failed: missing function name\n", ...
-			__signal_fail);
+        __msg = sprintf ("%stest failed: missing function name\n",
+			 __signal_fail);
       else
         __name = __block(__name_position(1):__name_position(2));
         __code = __block;
         try
           eval(__code); ## Define the function
-          __clear = sprintf("%sclear %s;\n",__clear,__name);
+          __clear = sprintf ("%sclear %s;\n", __clear, __name);
         catch
           __success = 0;
-          __msg = sprintf("%stest failed: syntax error\n%s", ...
-			  __signal_fail, __error_text__);
+          __msg = sprintf ("%stest failed: syntax error\n%s",
+			   __signal_fail, __error_text__);
         end_try_catch
       endif
       __code = "";
       
 
     ## ASSERT/FAIL
-    elseif strcmp (__type, "assert") || strcmp (__type, "fail")
+    elseif (strcmp (__type, "assert") || strcmp (__type, "fail"))
       __istest = 1;
       __code = __block; # put the keyword back on the code
       ## the code will be evaluated below as a test block
       
     ## ERROR/WARNING
-    elseif strcmp (__type, "error") || strcmp(__type, "warning")
+    elseif (strcmp (__type, "error") || strcmp(__type, "warning"))
       __istest = 1;
-      __warning = strcmp(__type, "warning");
-      [__pattern, __code] = getpattern(__code);
+      __warning = strcmp (__type, "warning");
+      [__pattern, __code] = getpattern (__code);
       try
-      	eval(sprintf("function __test__(%s)\n%s\nendfunction", ...
-		     __shared, __code));
+      	eval (sprintf ("function __test__(%s)\n%s\nendfunction",
+		       __shared, __code));
       catch
       	__success = 0;
-      	__msg = sprintf("%stest failed: syntax error\n%s", ...
-			__signal_fail, __error_text__);
+      	__msg = sprintf ("%stest failed: syntax error\n%s",
+			 __signal_fail, __error_text__);
       end_try_catch
       
       if (__success)
         __success = 0;
-	__warnstate = warning("query","quiet");
-	warning("on","quiet");
+	__warnstate = warning ("query", "quiet");
+	warning ("on", "quiet");
       	try
- 	  eval(sprintf("__test__(%s);", __shared));
-	  __err = trimerr(lastwarn,"warning");
-          warning(__warnstate.state,"quiet");
+ 	  eval (sprintf ("__test__(%s);", __shared));
+	  __err = trimerr (lastwarn, "warning");
+          warning (__warnstate.state, "quiet");
 
-          if !__warning,
-       	    __msg = sprintf("%sexpected <%s> but got no error\n", ...
- 			    __signal_fail, __pattern);
-          elseif isempty(__err)
-            __msg = sprintf("%sexpected <%s> but got no warning\n", ...
-			    __signal_fail,__pattern);
-          elseif isempty(regexp(__err,__pattern,"once"))
-            __msg = sprintf("%sexpected <%s> but got %s\n", ...
+          if (! __warning)
+       	    __msg = sprintf ("%sexpected <%s> but got no error\n",
+ 			     __signal_fail, __pattern);
+          elseif (isempty (__err))
+            __msg = sprintf ("%sexpected <%s> but got no warning\n",
+			     __signal_fail, __pattern);
+          elseif (isempty (regexp (__err, __pattern, "once")))
+            __msg = sprintf ("%sexpected <%s> but got %s\n",
  			     __signal_fail, __pattern, __err);
           else
             __success = 1;
           endif
 
       	catch
-	  __err = trimerr(lasterr,"error");
-          warning(__warnstate.state,"quiet");
-          if __warning,
-            __msg = sprintf("%sexpected warning <%s> but got error %s\n", ...
-			    __signal_fail, __pattern, __err);
-	  elseif isempty(regexp(__err,__pattern,"once"))
-            __msg = sprintf("%sexpected <%s> but got %s\n", ...
-			    __signal_fail, __pattern, __err);
+	  __err = trimerr (lasterr, "error");
+          warning (__warnstate.state, "quiet");
+          if (__warning)
+            __msg = sprintf ("%sexpected warning <%s> but got error %s\n",
+			     __signal_fail, __pattern, __err);
+	  elseif (isempty (regexp (__err, __pattern, "once")))
+            __msg = sprintf ("%sexpected <%s> but got %s\n",
+			     __signal_fail, __pattern, __err);
           else
 	    __success = 1;
           endif
@@ -399,12 +412,12 @@
       __code = ""; # code already processed
       
     ## TEST
-    elseif strcmp(__type, "test")
+    elseif (strcmp (__type, "test"))
       __istest = 1;
       ## code will be evaluated below
       
     ## comment block
-    elseif strcmp (__block(1:1), "#")
+    elseif (strcmp (__block(1:1), "#"))
       __istest = 0;
       __code = ""; # skip the code
 
@@ -412,62 +425,66 @@
     ## unknown block
       __istest = 1;
       __success = 0;
-      __msg = sprintf("%sunknown test type!\n", __signal_fail);
+      __msg = sprintf ("%sunknown test type!\n", __signal_fail);
       __code = ""; # skip the code
     endif
 
     ## evaluate code for test, shared, and assert.
-    if (!isempty(__code))
+    if (! isempty(__code))
       try
-      	eval(sprintf("function %s__test__(%s)\n%s\nendfunction", ...
-	      __shared_r,__shared, __code));
-	eval(sprintf("%s__test__(%s);", __shared_r, __shared));
+      	eval (sprintf ("function %s__test__(%s)\n%s\nendfunction",
+		       __shared_r,__shared, __code));
+	eval (sprintf ("%s__test__(%s);", __shared_r, __shared));
       catch
 	__success = 0;
-	__msg = sprintf("%stest failed\n%s", __signal_fail, __error_text__);
-	if isempty(__error_text__), 
-	  error("empty error text, probably Ctrl-C --- aborting"); 
+	__msg = sprintf ("%stest failed\n%s", __signal_fail, __error_text__);
+	if (isempty (__error_text__))
+	  error ("empty error text, probably Ctrl-C --- aborting"); 
 	endif
       end_try_catch
       clear __test__;
     endif
     
     ## All done.  Remember if we were successful and print any messages
-    if (!isempty(__msg))
+    if (! isempty (__msg))
       ## make sure the user knows what caused the error
-      if (!__verbose)
+      if (! __verbose)
       	fprintf (__fid, "%s%s\n", __signal_block, __block);
 	fflush (__fid);
       endif
       fputs (__fid, __msg);
       fflush (__fid);
       ## show the variable context
-      if (!strcmp(__type, "error") && !all(__shared==" "))
-	fputs(__fid, "shared variables ");
-	eval (sprintf("fdisp(__fid,bundle(%s));", __shared)); 
+      if (! strcmp (__type, "error") && ! all (__shared == " "))
+	fputs (__fid, "shared variables ");
+	eval (sprintf ("fdisp(__fid,bundle(%s));", __shared)); 
 	fflush (__fid);
       endif
     endif
     if (__success == 0)
       __all_success = 0;
       	## stop after one error if not in batch mode
-      if (!__batch)
-    	if (nargout > 0) __ret1 = __ret2 = 0; endif
-	if (__close_fid) fclose(__fid); endif
+      if (! __batch)
+    	if (nargout > 0)
+	  __ret1 = __ret2 = 0;
+	endif
+	if (__close_fid)
+	  fclose(__fid);
+	endif
       	return;
       endif
     endif
     __tests += __istest;
-    __successes += __success*__istest;
+    __successes += __success * __istest;
   endfor
-  eval(__clear,"");
+  eval (__clear, "");
 
   if (nargout == 0)
-    printf("PASSES %d out of %d tests\n",__successes,__tests);
+    printf ("PASSES %d out of %d tests\n", __successes, __tests);
   elseif (__grabdemo)
     __ret1 = __demo_code;
     __ret2 = __demo_idx;
-  elseif nargout == 1
+  elseif (nargout == 1)
     __ret1 = __all_success; 
   else
     __ret1 = __successes;
@@ -476,38 +493,43 @@
 endfunction
 
 ## create structure with fieldnames the name of the input variables
-function s = varstruct(varargin)
-  for i=1:nargin
-    s.(deblank(argn(i,:))) = varargin{i};
+function s = varstruct (varargin)
+  for i = 1:nargin
+    s.(deblank (argn(i,:))) = varargin{i};
   endfor
 endfunction
 
 ## find [start,end] of fn in 'function [a,b] = fn'
-function pos = function_name(def)
+function pos = function_name (def)
   pos = [];
 
   ## Find the end of the name
-  right = find(def=='(', 1);
-  if isempty(right), return; endif
-  right = find(def(1:right-1) != ' ', 1, "last");
+  right = find (def == "(", 1);
+  if (isempty (right))
+    return;
+  endif
+  right = find (def(1:right-1) != " ", 1, "last");
 
   ## Find the beginning of the name
-  left = max([find(def(1:right)==' ', 1, "last"),find(def(1:right)=='=', 1, "last")]);
-  if isempty(left), return; endif
+  left = max ([find(def(1:right)==" ", 1, "last"), ...
+	       find(def(1:right)=="=", 1, "last")]);
+  if (isempty (left))
+    return;
+  endif
   left++;
 
   ## Return the end points of the name
-  pos = [left,right];
+  pos = [left, right];
 endfunction
 
 ## strip <pattern> from '<pattern> code'
-function [pattern,rest] = getpattern(str)
-  pattern = '.';
+function [pattern, rest] = getpattern (str)
+  pattern = ".";
   rest = str; 
-  str = trimleft(str);
-  if !isempty(str) && str(1) == '<'
-    close = index(str,'>');
-    if close,
+  str = trimleft (str);
+  if (! isempty (str) && str(1) == "<")
+    close = index (str, ">");
+    if (close)
       pattern = str(2:close-1);
       rest = str(close+1:end);
     endif
@@ -515,26 +537,28 @@
 endfunction
 
 ## strip '.*prefix:' from '.*prefix: msg\n' and strip trailing blanks
-function msg = trimerr(msg,prefix)
-  idx = index(msg,[prefix,':']);
-  if (idx > 0), msg(1:idx+length(prefix)) = []; end
-  msg = trimleft(deblank(msg));
+function msg = trimerr (msg, prefix)
+  idx = index (msg, strcat (prefix, ":"));
+  if (idx > 0)
+    msg(1:idx+length(prefix)) = [];
+  endif
+  msg = trimleft (deblank (msg));
 endfunction
 
 ## strip leading blanks from string
-function str = trimleft(str)
-  idx = find(isspace(str));
-  leading = find(idx == [1:length(idx)]);
-  if !isempty(leading)
+function str = trimleft (str)
+  idx = find (isspace (str));
+  leading = find (idx == 1:length(idx));
+  if (! isempty (leading))
     str = str(leading(end)+1:end);
   endif
 endfunction
 
 ## make a structure out of the named variables
 ## (based on Etienne Grossmann's tar function)
-function s = bundle(varargin)
-  for i=1:nargin
-    s.(deblank(argn(i,:))) = varargin{i};
+function s = bundle (varargin)
+  for i = 1:nargin
+    s.(deblank (argn(i,:))) = varargin{i};
   end
 endfunction
 
@@ -542,12 +566,12 @@
   fid = fopen (nm, "rt");
   body = [];
   if (fid >= 0)
-    while (! feof(fid))
+    while (! feof (fid))
       ln = fgetl (fid);
-      if (length(ln) >= 2 && strcmp (ln(1:2), "%!"))
+      if (length (ln) >= 2 && strcmp (ln(1:2), "%!"))
         body = [body, "\n"];
         if (length(ln) > 2)
-          body = [body, ln(3:end)];
+          body = strcat (body, ln(3:end));
         endif
       endif
     endwhile