Blame view

fvn_fnlib/besyn.f90 822 Bytes
e1aefab23   daniau   git-svn-id: https...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  real(4) function besyn(n,x)
      implicit none
      ! This function compute the rank n Bessel Y function
      ! using recurrence relation :
      ! Yn+1(x)=2n/x * Yn(x) - Yn-1(x)
      !
      integer :: n
      real(4) :: x
  
      real(4),external :: besy0,besy1
      real(4) :: two_on_x,bynm1,byn,bytmp
      integer :: i
  
      if (n==0) then
          besyn=besy0(x)
          return
      end if
      if (n==1) then
          besyn=besy1(x)
          return
      end if
  
      if (n < 0) then
          write(*,*) "Error in besyn, n must be >= 0"
          stop
      end if
      if (x <= 0.) then
          write(*,*) "Error in besyn, x must be strictly positive"
      end if
  
      two_on_x=2./x
      bynm1=besy0(x)
      byn=besy1(x)
  
      do i=1,n-1
          bytmp=two_on_x*byn*i-bynm1
          bynm1=byn
          byn=bytmp
      end do
      besyn=bytmp
  end function