272f64400704888ae7598e9d6b740647d4fdae1f
[scilab.git] / scilab / modules / signal_processing / macros / %sn.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA - F.D
3 //
4 // Copyright (C) 2012 - 2016 - Scilab Enterprises
5 //
6 // This file is hereby licensed under the terms of the GNU GPL v2.0,
7 // pursuant to article 5.3.4 of the CeCILL v.2.1.
8 // This file was originally licensed under the terms of the CeCILL v2.1,
9 // and continues to be available under such terms.
10 // For more information, see the COPYING file which you should have received
11 // along with this program.
12
13 function [y]=%sn(x,m)
14     //Jacobi 's elliptic function with parameter m
15     //which computes the inverse of the elliptic
16     //integral for the parameter m.
17     //x may be a vector.
18     //The amplitude is computed in fortran and apply
19     //the addition formulas for elliptic functions
20     //  x :A point inside the fundamental rectangle
21     //    :defined by the elliptic integral
22     //  m :Parameter of the elliptic integral (0<m<1)
23     //  y :Result
24     //
25     //!
26
27     [n1,n2]=size(x);
28     n=n1*n2;
29     a=amell(real(x),sqrt(m));
30     s=sin(a);
31     c=cos(a);
32     d=sqrt(ones(n1,n2)-m*s.*s);
33     m1=1-m;
34     a1=amell(imag(x),sqrt(m1));
35     s1=sin(a1);
36     c1=cos(a1);
37     d1=sqrt(ones(n1,n2)-m1*s1.*s1);
38     y=(s.*d1+%i*c.*d.*s1.*c1)./(c1.*c1+m*s.*s.*s1.*s1);
39 endfunction