changeset 12570:1a93988610a3

Reverse changset cc8ccdfec424. Restore 3-input form of diag().
author Rik <octave@nomad.inbox5.com>
date Sun, 03 Apr 2011 07:00:34 -0700
parents 6ef23b4a3402
children bed932910eb9
files src/ChangeLog src/data.cc test/ChangeLog test/test_diag_perm.m
diffstat 4 files changed, 29 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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  <octave@nomad.inbox5.com>
+
+	* data.cc: Reverse previous changeset.  Return 3-input form
+	of diag().
+
 2011-04-01  Rik  <octave@nomad.inbox5.com>
 
 	* data.cc (diag): Remove archaic 3-input argument form of function.
--- 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 <Invalid call to diag.*> diag ();
-%!error <Invalid call to diag.*> diag (ones(3, 1),0,1);
 
  */
 
--- 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  <octave@nomad.inbox5.com>
+
+	* test_diag_perm.m: Reverse previous changeset.  Return 3-input form
+	of diag().
+
 2011-04-01  Rik  <octave@nomad.inbox5.com>
 
 	* test_diag_perm.m: Update diag tests to reflect removal of archaic
--- 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