# HG changeset patch # User Markus Mützel # Date 1611577267 -3600 # Mon Jan 25 13:21:07 2021 +0100 # Node ID 8c8c4bc7814c0f47564dd7bbcca086b49cec35f7 # Parent 843b1f794544976df44a6b97aad9b7e130979dec qr: Error for two dense input and three output arguments (bug #58944). * libinterp/corefcn/qr.cc (Fqr): Error for two dense input and three output arguments. Remove failing tests. diff -r 843b1f794544 -r 8c8c4bc7814c libinterp/corefcn/qr.cc --- a/libinterp/corefcn/qr.cc Sun Jan 24 15:42:27 2021 -0800 +++ b/libinterp/corefcn/qr.cc Mon Jan 25 13:21:07 2021 +0100 @@ -515,6 +515,9 @@ } else { + if (nargin > 1 && nargout > 2) + error ("qr: too many output arguments for two non-sparse input arguments"); + if (arg.is_single_type ()) { if (arg.isreal ()) @@ -714,12 +717,8 @@ %!test %! a = [0, 2, 1; 2, 1, 2]; -%! %! [q, r, p] = qr (a); # FIXME: not giving right dimensions. -%! [qe, re, pe] = qr (a, 0); -%! %! assert (q * r, a * p, sqrt (eps)); -%! assert (qe * re, a(:, pe), sqrt (eps)); %!test %! a = [0, 2; 2, 1; 1, 2]; @@ -732,12 +731,8 @@ %!test %! a = [0, 2; 2, 1; 1, 2]; -%! %! [q, r, p] = qr (a); -%! [qe, re, pe] = qr (a, 0); -%! %! assert (q * r, a * p, sqrt (eps)); -%! assert (qe * re, a(:, pe), sqrt (eps)); %!test %! a = [0, 2, 1; 2, 1, 2; 3, 1, 2]; @@ -815,14 +810,10 @@ %! a = rand (5000, 20); %! [q,r] = qr (a, 0); t(j++) = __testqr (q, r, a); %! [q,r] = qr (a',0); t(j++) = __testqr (q, r, a'); -%! [q,r,p] = qr (a, 0); t(j++) = __testqr (q, r, a, p); -%! [q,r,p] = qr (a',0); t(j++) = __testqr (q, r, a', p); %! %! a = a+1i*eps; %! [q,r] = qr (a, 0); t(j++) = __testqr (q, r, a); %! [q,r] = qr (a',0); t(j++) = __testqr (q, r, a'); -%! [q,r,p] = qr (a, 0); t(j++) = __testqr (q, r, a, p); -%! [q,r,p] = qr (a',0); t(j++) = __testqr (q, r, a', p); %! endif %! %! a = [ ones(1,15); sqrt(eps)*eye(15) ]; @@ -840,14 +831,10 @@ %! a = [ ones(1,15); sqrt(eps)*eye(15) ]; %! [q,r] = qr (a, 0); t(j++) = __testqr (q, r, a); %! [q,r] = qr (a',0); t(j++) = __testqr (q, r, a'); -%! [q,r,p] = qr (a, 0); t(j++) = __testqr (q, r, a, p); -%! [q,r,p] = qr (a',0); t(j++) = __testqr (q, r, a', p); %! %! a = a+1i*eps; %! [q,r] = qr (a, 0); t(j++) = __testqr (q, r, a); %! [q,r] = qr (a',0); t(j++) = __testqr (q, r, a'); -%! [q,r,p] = qr (a, 0); t(j++) = __testqr (q, r, a, p); -%! [q,r,p] = qr (a',0); t(j++) = __testqr (q, r, a', p); %! %! a = [ 611 196 -192 407 -8 -52 -49 29 %! 196 899 113 -192 -71 -43 -8 -44 @@ -874,10 +861,8 @@ %! a = single ([0, 2, 1; 2, 1, 2]); %! %! [q, r, p] = qr (a); # FIXME: not giving right dimensions. -%! [qe, re, pe] = qr (a, 0); %! %! assert (q * r, a * p, sqrt (eps ("single"))); -%! assert (qe * re, a(:, pe), sqrt (eps ("single"))); %!test %! a = single ([0, 2; 2, 1; 1, 2]); @@ -892,14 +877,12 @@ %! a = single ([0, 2; 2, 1; 1, 2]); %! %! [q, r, p] = qr (a); -%! [qe, re, pe] = qr (a, 0); %! %! assert (q * r, a * p, sqrt (eps ("single"))); -%! 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]); +%! 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); @@ -908,8 +891,8 @@ %! 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, 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); @@ -918,8 +901,8 @@ %! 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, 1, 0; 3, 0, 2]); %! %! [q, r] = qr (a); %! [c, re] = qr (a, b); @@ -928,8 +911,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); @@ -939,6 +922,8 @@ %!error qr () %!error qr ([1, 2; 3, 4], 0, 2) +%!error +%! [q, r, p] = qr (rand (3,2), rand (3,1)); %!test %! t = ones (24, 1); @@ -948,14 +933,10 @@ %! a = rand (5000,20); %! [q,r] = qr (a, 0); t(j++) = __testqr (q, r, a); %! [q,r] = qr (a',0); t(j++) = __testqr (q, r, a'); -%! [q,r,p] = qr (a, 0); t(j++) = __testqr (q, r, a, p); -%! [q,r,p] = qr (a',0); t(j++) = __testqr (q, r, a', p); %! %! a = a+1i*eps ("single"); %! [q,r] = qr (a, 0); t(j++) = __testqr (q, r, a); %! [q,r] = qr (a',0); t(j++) = __testqr (q, r, a'); -%! [q,r,p] = qr (a, 0); t(j++) = __testqr (q, r, a, p); -%! [q,r,p] = qr (a',0); t(j++) = __testqr (q, r, a', p); %! endif %! %! a = [ ones(1,15); sqrt(eps("single"))*eye(15) ]; @@ -973,14 +954,10 @@ %! a = [ ones(1,15); sqrt(eps("single"))*eye(15) ]; %! [q,r] = qr (a, 0); t(j++) = __testqr (q, r, a); %! [q,r] = qr (a',0); t(j++) = __testqr (q, r, a'); -%! [q,r,p] = qr (a, 0); t(j++) = __testqr (q, r, a, p); -%! [q,r,p] = qr (a',0); t(j++) = __testqr (q, r, a', p); %! %! a = a+1i*eps ("single"); %! [q,r] = qr (a, 0); t(j++) = __testqr (q, r, a); %! [q,r] = qr (a',0); t(j++) = __testqr (q, r, a'); -%! [q,r,p] = qr (a, 0); t(j++) = __testqr (q, r, a, p); -%! [q,r,p] = qr (a',0); t(j++) = __testqr (q, r, a',p); %! %! a = [ 611 196 -192 407 -8 -52 -49 29 %! 196 899 113 -192 -71 -43 -8 -44