Mercurial > octave-libgccjit
diff scripts/linear-algebra/istril.m @ 18900:49961d67e4b9
Add new matrix functions (isdiag, isbanded, istril, istriu) (bug #42688).
* NEWS: Announce new functions.
* scripts/linear-algebra/module.mk: Add new functions to build system.
* scripts/linear-algebra/isdiag.m: New function.
* scripts/linear-algebra/isbanded.m: New function.
* scripts/linear-algebra/istril.m: New function.
* scripts/linear-algebra/istriu.m: New function.
* numbers.txi: Add new functions to manual.
author | Massimiliano Fasi <massimiliano.fasi@gmail.com> |
---|---|
date | Sat, 05 Jul 2014 10:09:56 +0200 |
parents | |
children | 9addb5ad9426 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/linear-algebra/istril.m Sat Jul 05 10:09:56 2014 +0200 @@ -0,0 +1,61 @@ +## Copyright (C) 2014 Massimiliano Fasi +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} istril (@var{x}) +## Return true if @var{x} is a lower triangular matrix. +## +## A lower triangular matrix has nonzero entries only on the main diagonal +## and below. +## @seealso{istriu, isbanded, isdiag, tril} +## @end deftypefn + +## Author: Massimiliano Fasi + +function retval = istril (A) + + if (nargin != 1) + print_usage (); + endif + + retval = (isnumeric (A) || islogical (A)) && ndims (A) == 2; + if (retval) + [i, j] = find (A); + retval = all (i >= j); + endif + +endfunction + + +%!assert (! istril ("string")) +%!assert (istril ([])) +%!assert (! istril (zeros (2,2,2))) + +%!assert (istril (1)) +%!assert (! istril ([1, 1])) +%!assert (istril ([1; 1])) +%!assert (istril (eye (10))) +%!assert (istril (speye (100))) + +%!assert (istril (tril (randn (10)))) +%!assert (! istril (randn (10))) + +%% Test input validation +%!error istril () +%!error istril (1,2) +