diff scripts/finance/irr.m @ 3456:434790acb067

[project @ 2000-01-19 06:58:51 by jwe]
author jwe
date Wed, 19 Jan 2000 06:59:23 +0000
parents 3234a698073a
children d25bc039237b
line wrap: on
line diff
--- a/scripts/finance/irr.m	Tue Jan 18 19:57:13 2000 +0000
+++ b/scripts/finance/irr.m	Wed Jan 19 06:59:23 2000 +0000
@@ -30,28 +30,20 @@
 
   if (nargin == 1)
     i = 0;
-  elseif !(nargin == 2)
-    usage ("irr (p [, i])");
+  elseif (! (nargin == 2))
+    usage ("irr (p, i)");
   endif
 
-  tmp = output_precision;
-  output_precision = 15;
-  if !(is_vector (p))
+  if (! (is_vector (p)))
     error ("irr:  p must be a vector");
   else
-    p_string = type p;
+    p_string = strcat ("[", sprintf ("%.15f, ", p), "]");
   endif
 
-  if !is_scalar (i)
+  if (! is_scalar (i))
     error ("irr:  i must be a scalar");
   endif
 
-  string = ["function delta = f (r) ", ...
-      "delta = npv (r, %s) - %g;  end"];
-  eval (sprintf (string, p_string, i));
-
-  r = fsolve ("f", 0.01);
-
-  output_precision = tmp;
+  r = fsolve (sprintf ("npv (x, %s) - %g", p_string, i), 0.01);
 
 endfunction