Mercurial > forge
changeset 1280:b2e45fa6f889 octave-forge
improve performance: sign test not needed, error interval is calculated only when needed
author | schloegl |
---|---|
date | Wed, 11 Feb 2004 17:49:44 +0000 |
parents | 50d98866332d |
children | 68d6a4967e93 |
files | extra/NaN/mod.m extra/NaN/rem.m |
diffstat | 2 files changed, 13 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/extra/NaN/mod.m Tue Feb 10 15:59:29 2004 +0000 +++ b/extra/NaN/mod.m Wed Feb 11 17:49:44 2004 +0000 @@ -51,14 +51,16 @@ t = floor(x./y); z = x - y.*t; -e = (abs(t)*eps); % error interval -%z(e > abs(y)) = NaN; % uncertainty of rounding error to large - z(~t) = x(~t); % remainder is x if y = inf z(~y) = 0; % remainder must be 0 if y==0 -z = abs(z).*sign(y); % correct sign +warning(s); % reset warning status -warning(s); % reset warning status +if nargout > 1, + e = (abs(t)*eps); % error interval + %z(e > abs(y)) = NaN; % uncertainty of rounding error to large +end; + +
--- a/extra/NaN/rem.m Tue Feb 10 15:59:29 2004 +0000 +++ b/extra/NaN/rem.m Wed Feb 11 17:49:44 2004 +0000 @@ -51,15 +51,15 @@ t = fix(x./y); z = x - y.*t; -e = (abs(t)*eps); % error interval -%z(e > abs(y)) = NaN; % uncertainty of rounding error to large - z(~t) = x(~t); % remainder is x if y = inf z(~y) = 0; % remainder must be 0 if y==0 - -z = abs(z).*sign(x); % correct sign - warning(s); % reset warning status +if nargout > 1, + e = (abs(t)*eps); % error interval + %z(e > abs(y)) = NaN; % uncertainty of rounding error to large +end; + +