1
C/MEMBR ADD NAME=SNELL,SSI=0
2
subroutine snell(dsn2,du, dk, dq)
4
c calculation of the jacobi's elliptic function sn(u,k)
6
c external calculation of the parameter necessary
8
c dq = exp(-pi*k'/k) ... (jacobi's nome)
11
double precision dpi, domi
12
double precision de, dz, dpi2, dq, dm, du, dk, dc, dqq, dh, dq1,
15
domi=2.0d+0*dlamch('p')
16
dpi=4.0d+0*atan(1.0d+0)
18
data de, dz /1.0d+0,2.0d+0/
21
if (abs(dq).ge.de) go to 30
33
dh = (de-dq1)/(de-dq2)
35
dh = dh*(de-dz*dq2*dc+dq2*dq2)
36
dh = dh/(de-dz*dq1*dc+dq1*dq1)
40
if (dh.lt.domi) go to 20