Mercurial > octave-nkf
diff scripts/statistics/distributions/gaminv.m @ 7795:df9519e9990c
Handle single precision eps values
author | David Bateman <dbateman@free.fr> |
---|---|
date | Mon, 12 May 2008 22:57:11 +0200 |
parents | a1dbe9d80eee |
children | eb63fbe60fab |
line wrap: on
line diff
--- a/scripts/statistics/distributions/gaminv.m Mon May 12 01:35:30 2008 +0200 +++ b/scripts/statistics/distributions/gaminv.m Mon May 12 22:57:11 2008 +0200 @@ -63,21 +63,28 @@ y = a * b * ones (size (k)); endif x = x (k); - l = find (x < eps); + + if (isa (x, "single")) + myeps = eps ("single"); + else + myeps = eps; + endif + + l = find (x < myeps); if (any (l)) - y(l) = sqrt (eps) * ones (length (l), 1); + y(l) = sqrt (myeps) * ones (length (l), 1); endif y_old = y; for i = 1 : 100 h = (gamcdf (y_old, a, b) - x) ./ gampdf (y_old, a, b); y_new = y_old - h; - ind = find (y_new <= eps); + ind = find (y_new <= myeps); if (any (ind)) y_new (ind) = y_old (ind) / 10; h = y_old - y_new; endif - if (max (abs (h)) < sqrt (eps)) + if (max (abs (h)) < sqrt (myeps)) break; endif y_old = y_new;