* Bug #9385 fixed - The type checking in trigonometric functions has been added.
[scilab.git] / scilab / modules / elementary_functions / macros / secd.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA, Serge Steer
3 // Copyright (C) - 2010 - DIGITEO - Michael Baudin
4 // Copyright (C) - 2011 - DIGITEO - Allan CORNET
5 //
6 // This file must be used under the terms of the CeCILL.
7 // This source file is licensed as described in the file COPYING, which
8 // you should have received as part of this distribution.  The terms
9 // are also available at
10 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11 function x = secd(x)
12
13     rhs = argn(2);
14     if rhs <> 1 then
15         error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"secd", 1));
16     end
17
18     // Secant argument in degree
19     if type(x) <> 1 | ~isreal(x) then
20         error(msprintf(gettext("%s: Wrong type for input argument #%d: Real matrix expected.\n"),"secd",1));
21     end
22
23     n = round(x/90);
24     x = x - n*90;
25     m = pmodulo(n, 4);
26     x(m==0) = 1 ./ cos(%pi/180*x(m==0));
27     x(m==1&x<>0) = -1 ./ sin(%pi/180*x(m==1&x<>0));
28     x(m==1&x==0) = -%inf;
29     x(m==2) = -1 ./ cos(%pi/180*x(m==2));
30     x(m==3&x<>0) = 1 ./ sin(%pi/180*x(m==3&x<>0));
31     x(m==3&x==0) = %inf;
32
33 endfunction