diff src/data.cc @ 12571:bed932910eb9

Add documentation for 3-input form of diag(). Add new tests.
author Rik <octave@nomad.inbox5.com>
date Sun, 03 Apr 2011 07:24:38 -0700
parents 1a93988610a3
children d0b799dafede
line wrap: on
line diff
--- a/src/data.cc
+++ b/src/data.cc
@@ -1226,6 +1226,7 @@
   "-*- texinfo -*-\n\
 @deftypefn  {Built-in Function} {@var{M} =} diag (@var{v})\n\
 @deftypefnx {Built-in Function} {@var{M} =} diag (@var{v}, @var{k})\n\
+@deftypefnx {Built-in Function} {@var{M} =} diag (@var{v}, @var{m}, @var{n})\n\
 @deftypefnx {Built-in Function} {@var{v} =} diag (@var{M})\n\
 @deftypefnx {Built-in Function} {@var{v} =} diag (@var{M}, @var{k})\n\
 Return a diagonal matrix with vector @var{v} on diagonal @var{k}.  The\n\
@@ -1245,6 +1246,10 @@
 @end example\n\
 \n\
 @noindent\n\
+The 3-input form returns a diagonal matrix with vector @var{v} on the main\n\
+diagonal and the resulting matrix being of size @var{m} rows x @var{n}\n\
+columns.\n\
+\n\
 Given a matrix argument, instead of a vector, @code{diag} extracts the\n\
 @var{k}-th diagonal of the matrix.\n\
 @end deftypefn")
@@ -1296,6 +1301,7 @@
 %!assert(diag ([0, 1, 0, 0; 0, 0, 2, 0; 0, 0, 0, 3; 0, 0, 0, 0], 1), [1; 2; 3]);
 %!assert(diag ([0, 0, 0, 0; 1, 0, 0, 0; 0, 2, 0, 0; 0, 0, 3, 0], -1), [1; 2; 3]);
 %!assert(diag (ones(1, 0), 2), zeros (2));
+%!assert(diag (1:3, 4, 2), [1, 0; 0, 2; 0, 0; 0, 0]);
 
 %!assert(full (diag (single([1; 2; 3]))), single([1, 0, 0; 0, 2, 0; 0, 0, 3]));
 %!assert(diag (single([1; 2; 3]), 1), single([0, 1, 0, 0; 0, 0, 2, 0; 0, 0, 0, 3; 0, 0, 0, 0]));
@@ -1317,7 +1323,11 @@
 %!assert(diag (int8([0, 1, 0, 0; 0, 0, 2, 0; 0, 0, 0, 3; 0, 0, 0, 0]), 1), int8([1; 2; 3]));
 %!assert(diag (int8([0, 0, 0, 0; 1, 0, 0, 0; 0, 2, 0, 0; 0, 0, 3, 0]), -1), int8([1; 2; 3]));
 
+%% Test input validation
 %!error <Invalid call to diag.*> diag ();
+%!error <Invalid call to diag.*> diag (1,2,3,4);
+%!error diag (ones (2), 3, 3);
+%!error diag (1:3, -4, 3);
 
  */