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;
 
+
+