Mercurial > octave
changeset 29328:4d3cfe193f65 stable
qr: Error for dense A and B with three output arguments (bug #58944).
* libinterp/corefcn/qr.cc (Fqr): Error for dense A and B with three output
arguments. Remove duplicate BISTs.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Tue, 26 Jan 2021 15:20:33 +0100 |
parents | 5fa1b4008204 |
children | 24b9c62b453d 1ceeab926dc6 |
files | libinterp/corefcn/qr.cc |
diffstat | 1 files changed, 23 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/qr.cc Mon Jan 25 15:02:57 2021 -0800 +++ b/libinterp/corefcn/qr.cc Tue Jan 26 15:20:33 2021 +0100 @@ -374,6 +374,9 @@ } else { + if (have_b && nargout > 2) + error ("qr: too many output arguments for dense A with B"); + if (arg.is_single_type ()) { if (arg.isreal ()) @@ -645,6 +648,10 @@ %!error qr () %!error qr ([1, 2; 3, 4], 0, 2) +%!error <too many output arguments for dense A with B> +%! [q, r, p] = qr (rand (3, 2), rand (3, 1)); +%!error <too many output arguments for dense A with B> +%! [q, r, p] = qr (rand (3, 2), rand (3, 1), 0); %!function retval = __testqr (q, r, a, p) %! tol = 100*eps (class (q)); @@ -757,18 +764,8 @@ %! assert (qe * re, a(:, pe), sqrt (eps ("single"))); %!test -%! a = single([0, 2, 1; 2, 1, 2; 3, 1, 2]); -%! b = single([1, 3, 2; 1, 1, 0; 3, 0, 2]); -%! -%! [q, r] = qr (a); -%! [c, re] = qr (a, b); -%! -%! assert (r, re, sqrt (eps ("single"))); -%! assert (q'*b, c, sqrt (eps ("single"))); - -%!test -%! a = single([0, 2, i; 2, 1, 2; 3, 1, 2]); -%! b = single([1, 3, 2; 1, i, 0; 3, 0, 2]); +%! a = single ([0, 2, 1; 2, 1, 2; 3, 1, 2]); +%! b = single ([1, 3, 2; 1, 1, 0; 3, 0, 2]); %! %! [q, r] = qr (a); %! [c, re] = qr (a, b); @@ -777,8 +774,18 @@ %! assert (q'*b, c, sqrt (eps ("single"))); %!test -%! a = single([0, 2, i; 2, 1, 2; 3, 1, 2]); -%! b = single([1, 3, 2; 1, 1, 0; 3, 0, 2]); +%! a = single ([0, 2, i; 2, 1, 2; 3, 1, 2]); +%! b = single ([1, 3, 2; 1, i, 0; 3, 0, 2]); +%! +%! [q, r] = qr (a); +%! [c, re] = qr (a, b); +%! +%! assert (r, re, sqrt (eps ("single"))); +%! assert (q'*b, c, sqrt (eps ("single"))); + +%!test +%! a = single ([0, 2, i; 2, 1, 2; 3, 1, 2]); +%! b = single ([1, 3, 2; 1, 1, 0; 3, 0, 2]); %! %! [q, r] = qr (a); %! [c, re] = qr (a, b); @@ -787,8 +794,8 @@ %! assert (q'*b, c, sqrt (eps)); %!test -%! a = single([0, 2, 1; 2, 1, 2; 3, 1, 2]); -%! b = single([1, 3, 2; 1, i, 0; 3, 0, 2]); +%! a = single ([0, 2, 1; 2, 1, 2; 3, 1, 2]); +%! b = single ([1, 3, 2; 1, i, 0; 3, 0, 2]); %! %! [q, r] = qr (a); %! [c, re] = qr (a, b); @@ -796,9 +803,6 @@ %! assert (r, re, sqrt (eps ("single"))); %! assert (q'*b, c, sqrt (eps ("single"))); -%!error qr () -%!error qr ([1, 2; 3, 4], 0, 2) - %!test %! t = ones (24, 1); %! j = 1;