# HG changeset patch # User Rik # Date 1301839234 25200 # Node ID 1a93988610a31df0714280768b52e623e8949dac # Parent 6ef23b4a34026cf72145ae20a7b7474c91c3f013 Reverse changset cc8ccdfec424. Restore 3-input form of diag(). diff -r 6ef23b4a3402 -r 1a93988610a3 src/ChangeLog --- a/src/ChangeLog Sat Apr 02 13:37:52 2011 -0700 +++ b/src/ChangeLog Sun Apr 03 07:00:34 2011 -0700 @@ -1,3 +1,8 @@ +2011-04-03 Rik + + * data.cc: Reverse previous changeset. Return 3-input form + of diag(). + 2011-04-01 Rik * data.cc (diag): Remove archaic 3-input argument form of function. diff -r 6ef23b4a3402 -r 1a93988610a3 src/data.cc --- a/src/data.cc Sat Apr 02 13:37:52 2011 -0700 +++ b/src/data.cc Sun Apr 03 07:00:34 2011 -0700 @@ -1264,6 +1264,20 @@ else retval = args(0).diag(k); } + else if (nargin == 3) + { + octave_value arg0 = args(0); + if (arg0.ndims () == 2 && (args(0).rows () == 1 || args(0).columns () == 1)) + { + octave_idx_type m = args(1).int_value (), n = args(2).int_value (); + if (! error_state) + retval = arg0.diag ().resize (dim_vector (m, n)); + else + error ("diag: invalid dimensions"); + } + else + error ("diag: V must be a vector"); + } else print_usage (); @@ -1304,7 +1318,6 @@ %!assert(diag (int8([0, 0, 0, 0; 1, 0, 0, 0; 0, 2, 0, 0; 0, 0, 3, 0]), -1), int8([1; 2; 3])); %!error diag (); -%!error diag (ones(3, 1),0,1); */ diff -r 6ef23b4a3402 -r 1a93988610a3 test/ChangeLog --- a/test/ChangeLog Sat Apr 02 13:37:52 2011 -0700 +++ b/test/ChangeLog Sun Apr 03 07:00:34 2011 -0700 @@ -1,3 +1,8 @@ +2011-04-03 Rik + + * test_diag_perm.m: Reverse previous changeset. Return 3-input form + of diag(). + 2011-04-01 Rik * test_diag_perm.m: Update diag tests to reflect removal of archaic diff -r 6ef23b4a3402 -r 1a93988610a3 test/test_diag_perm.m --- a/test/test_diag_perm.m Sat Apr 02 13:37:52 2011 -0700 +++ b/test/test_diag_perm.m Sun Apr 03 07:00:34 2011 -0700 @@ -160,9 +160,9 @@ %! n = 7; %! mn = min (m, n); %! d1 = rand (mn, 1) + I () * rand (mn, 1); -%! D1 = resize (diag (d1), m, n); +%! D1 = diag (d1, m, n); %! d2 = rand (mn, 1); -%! D2 = resize (diag (d2), m, n); +%! D2 = diag (d2, m, n); %! D1D2 = D1 + D2; %! assert (typeinfo (D1D2), "complex diagonal matrix"); %! assert (diag (D1D2), d1 + d2); @@ -176,7 +176,7 @@ %! n = 6; %! mn = min (m, n); %! d = rand (mn, 1); -%! D = resize (diag (d), m, n); +%! D = diag (d, m, n); %! Dslice = D (1:(m-3), 1:(n-2)); %! assert (typeinfo (Dslice), "diagonal matrix"); @@ -218,7 +218,7 @@ %! n = 8; %! A = sprand (n, n, .5); %! scalefact = rand (n-2, 1); -%! Dr = resize (diag (scalefact), n, n-2); +%! Dr = diag (scalefact, n, n-2); %! assert (full (Dr \ A), Dr \ full(A)) ## sparse inverse column scaling with a zero factor @@ -236,7 +236,7 @@ %! n = 7; %! A = sprand (n, n, .5); %! scalefact = rand (1, n-2) + I () * rand(1, n-2); -%! Dc = resize (diag (scalefact), n-2, n); +%! Dc = diag (scalefact, n-2, n); %! assert (full (A / Dc), full(A) / Dc) ## adding sparse and diagonal stays sparse