jyndd Subroutine

public subroutine jyndd(n, x, Bjn, Djn, Fjn, Byn, Dyn, Fyn)

Compute Bessel functions Jn(x) and Yn(x), and their first and second derivatives

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n

Order of Jn(x) and Yn(x)

real(kind=wp), intent(in) :: x

Argument of Jn(x) and Yn(x) ( x > 0 )

real(kind=wp), intent(out) :: Bjn

Jn(x)

real(kind=wp), intent(out) :: Djn

Jn'(x)

real(kind=wp), intent(out) :: Fjn

Jn"(x)

real(kind=wp), intent(out) :: Byn

Yn(x)

real(kind=wp), intent(out) :: Dyn

Yn'(x)

real(kind=wp), intent(out) :: Fyn

Yn"(x)


Calls

proc~~jyndd~~CallsGraph proc~jyndd specfun_module::jyndd proc~jynbh specfun_module::jynbh proc~jyndd->proc~jynbh proc~msta1 specfun_module::msta1 proc~jynbh->proc~msta1 proc~msta2 specfun_module::msta2 proc~jynbh->proc~msta2 proc~envj specfun_module::envj proc~msta1->proc~envj proc~msta2->proc~envj

Called by

proc~~jyndd~~CalledByGraph proc~jyndd specfun_module::jyndd proc~jyzo specfun_module::jyzo proc~jyzo->proc~jyndd

Source Code

      subroutine jyndd(n,x,Bjn,Djn,Fjn,Byn,Dyn,Fyn)

      real(wp),intent(in) :: x !! Argument of Jn(x) and Yn(x) ( x > 0 )
      integer,intent(in) :: n !! Order of Jn(x) and Yn(x)
      real(wp),intent(out) :: Bjn !! `Jn(x)`
      real(wp),intent(out) :: Djn !! `Jn'(x)`
      real(wp),intent(out) :: Fjn !! `Jn"(x)`
      real(wp),intent(out) :: Byn !! `Yn(x)`
      real(wp),intent(out) :: Dyn !! `Yn'(x)`
      real(wp),intent(out) :: Fyn !! `Yn"(x)`

      real(wp),dimension(2) :: bj , by
      integer :: nm

      call jynbh(n+1,n,x,nm,bj,by)
      ! Compute derivatives by differentiation formulas
      Bjn = bj(1)
      Byn = by(1)
      Djn = -bj(2) + n*bj(1)/x
      Dyn = -by(2) + n*by(1)/x
      Fjn = (n*n/(x*x)-1.0_wp)*Bjn - Djn/x
      Fyn = (n*n/(x*x)-1.0_wp)*Byn - Dyn/x

      end subroutine jyndd