Mercurial > hg > octave-nkf
diff scripts/elfun/tand.m @ 6239:82185e38eea8
[project @ 2007-01-10 22:53:58 by jwe]
author | jwe |
---|---|
date | Wed, 10 Jan 2007 22:53:59 +0000 |
parents | |
children | 738c97e101eb |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/scripts/elfun/tand.m @@ -0,0 +1,40 @@ +## Copyright (C) 2006 David Bateman <dbateman@free.fr> +## +## This program 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 2 of the License, or +## (at your option) any later version. +## +## This program 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 this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +## -*- texinfo -*- +## @deftypefn {Function File} {} tand (@var{x}) +## Compute the tangent of an angle in degrees. Returns zero for elements +## of for which @code{@var{x}/180} is an integer and @code{Inf} for elements +## where @code{(@var{x}-90}/180} is an integer. +## @seealso{tan, cosd, sind, acosd, asind, atand} +## @end deftypefn + +function y = tand (x) + if (nargin != 1) + print_usage (); + endif + I0 = x / 180; + I90 = (x-90) / 180; + y = tan (I0 .* pi); + y(I0 == round (I0) & finite (I0)) = 0; + y(I90 == round (I90) & finite (I90)) = Inf; +endfunction; + +%!error(tand()) +%!error(tand(1,2)) +%!assert(tand(10:10:80),tan(pi*[10:10:80]/180),-10*eps) +%!assert(tand([0,180,360]) == 0) +%!assert(tand([90,270]) == Inf)