Imported Upstream version 4.6.0
[debian/atlc] / src / non_gui / elliptic_integral.c
1 /* atlc - arbitrary transmission line calculator, for the analysis of
2 transmission lines are directional couplers. 
3
4 Copyright (C) 2002. Dr. David Kirkby, PhD (G8WRB).
5
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either package_version 2
9 of the License, or (at your option) any later package_version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
19 USA.
20
21 Dr. David Kirkby, e-mail drkirkby at ntlworld.com 
22
23 */
24
25 #include "config.h"
26
27 #include "definitions.h"
28
29 /* The following function computes:
30
31 r=K(k)/K'(k) where
32 K is the complete elliptic integral of the first kind,
33 K' is the complementary complete elliptic integral of the first kind
34
35 This simple routine was given to my by Dan  - it is one hell
36 of a lot simplier than the routine in the numerical recipes book
37
38 */
39
40 double K_over_Kdash(double k)
41 {
42   double kp, r, kf;
43   kp = sqrt(1.0-pow(k,2.0));
44   r = 1.0;
45   kf=(1.0+k)/(1.0+kp);
46   while(kf != 1.0)
47   {
48     r = r*kf;
49     k = 2.0*sqrt(k)/(1.0+k);
50     kp = 2.0*sqrt(kp)/(1.0+kp);
51     kf=(1.0+k)/(1.0+kp);
52   }
53   return(r);
54 }