# HG changeset patch # User Rik # Date 1373686268 25200 # Node ID 58188d5a25872b063d7efea1f297a4b544cdcad4 # Parent e424cdb2ef968db42dfe36417510ea9388896e5b Use isfinite() to replace isinf() | isnan() combination for 30% speed-up. * scripts/general/int2str.m, scripts/general/quadv.m, scripts/linear-algebra/cond.m, scripts/polynomial/roots.m, scripts/statistics/distributions/normcdf.m, scripts/statistics/distributions/norminv.m, scripts/statistics/distributions/normpdf.m, scripts/statistics/distributions/normrnd.m, scripts/statistics/distributions/tpdf.m: Use isfinite() to replace isinf() | isnan() combination for 30% speed-up. diff -r e424cdb2ef96 -r 58188d5a2587 scripts/general/int2str.m --- a/scripts/general/int2str.m Fri Jul 12 20:18:03 2013 -0700 +++ b/scripts/general/int2str.m Fri Jul 12 20:31:08 2013 -0700 @@ -86,7 +86,7 @@ fmt = sprintf ("%%%dd", 1 + sep); else ## Maybe have some zeros. - nan_inf = isinf (t) | isnan (t); + nan_inf = ! isfinite (t); if (any (nan_inf)) if (any (t(nan_inf) < 0)) min_fw = 4 + sep; diff -r e424cdb2ef96 -r 58188d5a2587 scripts/general/quadv.m --- a/scripts/general/quadv.m Fri Jul 12 20:18:03 2013 -0700 +++ b/scripts/general/quadv.m Fri Jul 12 20:31:08 2013 -0700 @@ -106,7 +106,7 @@ if (nfun > 10000) warning ("maximum iteration count reached"); - elseif (any (isnan (q)(:) | isinf (q)(:))) + elseif (any (! isfinite (q(:)))) warning ("infinite or NaN function evaluations were returned"); elseif (hmin < (b - a) * myeps) warning ("minimum step size reached -- possibly singular integral"); diff -r e424cdb2ef96 -r 58188d5a2587 scripts/linear-algebra/cond.m --- a/scripts/linear-algebra/cond.m Fri Jul 12 20:18:03 2013 -0700 +++ b/scripts/linear-algebra/cond.m Fri Jul 12 20:31:08 2013 -0700 @@ -58,7 +58,7 @@ if (p == 2) if (isempty (A)) retval = 0.0; - elseif (any (isinf (A(:)) | isnan (A(:)))) + elseif (any (! isfinite (A(:)))) error ("cond: A must not contain Inf or NaN values"); else sigma = svd (A); diff -r e424cdb2ef96 -r 58188d5a2587 scripts/polynomial/roots.m --- a/scripts/polynomial/roots.m Fri Jul 12 20:18:03 2013 -0700 +++ b/scripts/polynomial/roots.m Fri Jul 12 20:31:08 2013 -0700 @@ -81,7 +81,7 @@ if (nargin != 1 || (! isvector (v) && ! isempty (v))) print_usage (); - elseif (any (isnan (v) | isinf (v))) + elseif (any (! isfinite (v))) error ("roots: inputs must not contain Inf or NaN"); endif diff -r e424cdb2ef96 -r 58188d5a2587 scripts/statistics/distributions/normcdf.m --- a/scripts/statistics/distributions/normcdf.m Fri Jul 12 20:18:03 2013 -0700 +++ b/scripts/statistics/distributions/normcdf.m Fri Jul 12 20:31:08 2013 -0700 @@ -54,13 +54,13 @@ endif if (isscalar (mu) && isscalar (sigma)) - if (!isinf (mu) && !isnan (mu) && (sigma > 0) && (sigma < Inf)) + if (isfinite (mu) && (sigma > 0) && (sigma < Inf)) cdf = stdnormal_cdf ((x - mu) / sigma); else cdf = NaN (size (x), class (cdf)); endif else - k = isinf (mu) | isnan (mu) | !(sigma > 0) | !(sigma < Inf); + k = ! isfinite (mu) | !(sigma > 0) | !(sigma < Inf); cdf(k) = NaN; k = ! k; diff -r e424cdb2ef96 -r 58188d5a2587 scripts/statistics/distributions/norminv.m --- a/scripts/statistics/distributions/norminv.m Fri Jul 12 20:18:03 2013 -0700 +++ b/scripts/statistics/distributions/norminv.m Fri Jul 12 20:31:08 2013 -0700 @@ -54,11 +54,11 @@ endif if (isscalar (mu) && isscalar (sigma)) - if (!isinf (mu) && !isnan (mu) && (sigma > 0) && (sigma < Inf)) + if (isfinite (mu) && (sigma > 0) && (sigma < Inf)) inv = mu + sigma * stdnormal_inv (x); endif else - k = !isinf (mu) & !isnan (mu) & (sigma > 0) & (sigma < Inf); + k = isfinite (mu) & (sigma > 0) & (sigma < Inf); inv(k) = mu(k) + sigma(k) .* stdnormal_inv (x(k)); endif diff -r e424cdb2ef96 -r 58188d5a2587 scripts/statistics/distributions/normpdf.m --- a/scripts/statistics/distributions/normpdf.m Fri Jul 12 20:18:03 2013 -0700 +++ b/scripts/statistics/distributions/normpdf.m Fri Jul 12 20:31:08 2013 -0700 @@ -54,7 +54,7 @@ endif if (isscalar (mu) && isscalar (sigma)) - if (!isinf (mu) && !isnan (mu) && (sigma > 0) && (sigma < Inf)) + if (isfinite (mu) && (sigma > 0) && (sigma < Inf)) pdf = stdnormal_pdf ((x - mu) / sigma) / sigma; else pdf = NaN (size (x), class (pdf)); diff -r e424cdb2ef96 -r 58188d5a2587 scripts/statistics/distributions/normrnd.m --- a/scripts/statistics/distributions/normrnd.m Fri Jul 12 20:18:03 2013 -0700 +++ b/scripts/statistics/distributions/normrnd.m Fri Jul 12 20:31:08 2013 -0700 @@ -83,14 +83,14 @@ endif if (isscalar (mu) && isscalar (sigma)) - if (!isnan (mu) && !isinf (mu) && (sigma > 0) && (sigma < Inf)) + if (isfinite (mu) && (sigma > 0) && (sigma < Inf)) rnd = mu + sigma * randn (sz, cls); else rnd = NaN (sz, cls); endif else rnd = mu + sigma .* randn (sz, cls); - k = isnan (mu) | isinf (mu) | !(sigma > 0) | !(sigma < Inf); + k = ! isfinite (mu) | !(sigma > 0) | !(sigma < Inf); rnd(k) = NaN; endif diff -r e424cdb2ef96 -r 58188d5a2587 scripts/statistics/distributions/tpdf.m --- a/scripts/statistics/distributions/tpdf.m Fri Jul 12 20:18:03 2013 -0700 +++ b/scripts/statistics/distributions/tpdf.m Fri Jul 12 20:31:08 2013 -0700 @@ -53,7 +53,7 @@ k = isnan (x) | !(n > 0) | !(n < Inf); pdf(k) = NaN; - k = !isinf (x) & !isnan (x) & (n > 0) & (n < Inf); + k = isfinite (x) & (n > 0) & (n < Inf); if (isscalar (n)) pdf(k) = (exp (- (n + 1) * log (1 + x(k) .^ 2 / n)/2) / (sqrt (n) * beta (n/2, 1/2)));