Mercurial > hg > octave-nkf
diff scripts/linear-algebra/planerot.m @ 19361:1faae07afbd8
Overhaul givens and planerot functions.
* givens.cc (Fgivens): Redo docstring. Remove useless default to detect
nargout > 2 in switch statements.
* planerot.m: Redo docstring. Add input validation. Add BIST tests for input validation.
author | Rik <rik@octave.org> |
---|---|
date | Sat, 27 Sep 2014 13:41:57 -0700 |
parents | d63878346099 |
children | 4197fc428c7d |
line wrap: on
line diff
--- a/scripts/linear-algebra/planerot.m +++ b/scripts/linear-algebra/planerot.m @@ -17,8 +17,8 @@ ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {[@var{g}, @var{y}] =} planerot (@var{x}) -## Given a two-element column vector, returns the +## @deftypefn {Function File} {[@var{G}, @var{y}] =} planerot (@var{x}) +## Given a two-element column vector, return the ## @tex ## $2 \times 2$ orthogonal matrix ## @end tex @@ -31,8 +31,16 @@ ## @end deftypefn function [G, y] = planerot (x) + + if (nargin != 1) + print_usage (); + elseif (! (isvector (x) && numel (x) == 2)) + error ("planerot: X must be a 2-element vector"); + endif + G = givens (x(1), x(2)); y = G * x(:); + endfunction @@ -42,7 +50,8 @@ %! assert (g, [x(1) x(2); -x(2) x(1)] / sqrt (x(1)^2 + x(2)^2), 2e-8); %! assert (y(2), 0, 2e-8); -%!error planerot ([0]) -%!error planerot ([0 0 0]) %!error planerot () +%!error planerot (1,2) +%!error <X must be a 2-element vector> planerot (ones (2,2)) +%!error <X must be a 2-element vector> planerot ([0 0 0])