function beskn(n,x) use fvn_common implicit none ! This function compute the rank n Bessel Y function ! using recurrence relation : ! Kn+1(x)=2n/x * Kn(x) + Kn-1(x) ! real(sp_kind) :: beskn integer :: n real(sp_kind) :: x real(sp_kind),external :: besk0,besk1 real(sp_kind) :: two_on_x,bknm1,bkn,bktmp integer :: i if (n==0) then beskn=besk0(x) return end if if (n==1) then beskn=besk1(x) return end if if (n < 0) then write(*,*) "Error in beskn, n must be >= 0" stop end if if (x <= 0.) then write(*,*) "Error in beskn, x must be strictly positive" end if two_on_x=2./x bknm1=besk0(x) bkn=besk1(x) do i=1,n-1 bktmp=two_on_x*bkn*i+bknm1 bknm1=bkn bkn=bktmp end do beskn=bktmp end function