* Bug 16062 fixed: tbx_make(Dir,'*') for all sections despite custom builder
[scilab.git] / scilab / modules / special_functions / macros / %k.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 [K]=%k(m)
14     //K=%k(m)
15     //Calculates Jacobi's complete elliptic integral
16     //of the first kind:
17     //  K = integral from 0 to 1 of
18     //      [(1-t**2)(1-m*t**2)]**(-1/2)
19     //m is allowed to be a vector
20     //Ref :Abramowitz and Stegun page 598
21     //  m :Parameter used in calculating the elliptic
22     //    :integral where 0<m<1.
23     //  K :Value of the elliptic integral from 0 to 1
24     //    :on the real axis.
25     //
26     //!
27
28     [n1,n2]=size(m);
29     un=ones(n1,n2);
30     a=un;
31     b=sqrt(un-m);
32     c=sqrt(m);
33     while max(abs(c)) > %eps,
34         an=0.5*(a+b);
35         bn=sqrt(a.*b);
36         cn=0.5*(a-b);
37         a=an;
38         b=bn;
39         c=cn;
40     end,
41     K=%pi*un./(2*a);
42 endfunction