Mercurial > octave
changeset 23958:36e86c8150cc
Fix warning in quadgk with zero size interval (bug #51867)
* quadgk.m: set q = err = 0 when the interval has size zero.
New test.
author | Marco Caliari <marco.caliari@univr.it> |
---|---|
date | Mon, 28 Aug 2017 10:20:26 +0200 |
parents | 382cc01a60e1 |
children | 01db45487d04 |
files | scripts/general/quadgk.m |
diffstat | 1 files changed, 4 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/general/quadgk.m Sun Aug 27 20:54:21 2017 +0200 +++ b/scripts/general/quadgk.m Mon Aug 28 10:20:26 2017 +0200 @@ -434,10 +434,11 @@ t = (halfwidth * abscissa) + center; x = trans ([t(:,1), t(:,end)]); - ## Shampine suggests 100 * eps1. - ## FIXME: reference for suggestion? + ## Shampine suggests 100 * eps1, beginning of section 6. if (any (abs (diff (x, [], 2) ./ max (abs (x), [], 2))) < 100 * eps1) too_close = true; + q = 0; + err = 0; return; endif @@ -463,6 +464,7 @@ %!assert (quadgk ("sin",-pi,pi), 0, 1e-6) %!assert (quadgk (@sin,-pi,pi, "waypoints", 0, "MaxIntervalCount", 100, "reltol", 1e-3, "abstol", 1e-6, "trace", false), 0, 1e-6) %!assert (quadgk (@sin,-pi,pi, 1e-6,false), 0, 1e-6) +%!assert <51867> (quadgk (@(x) x, 0, 0), 0, 0) %!assert (quadgk (@sin,-pi,0), -2, 1e-6) %!assert (quadgk (@sin,0,pi), 2, 1e-6)