msta2 Function

public function msta2(x, n, Mp) result(nn)

Determine the starting point for backward recurrence such that all Jn(x) has MP significant digits

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: x

Argument of Jn(x)

integer, intent(in) :: n

Order of Jn(x)

integer, intent(in) :: Mp

Significant digit

Return Value integer

Starting point


Calls

proc~~msta2~~CallsGraph proc~msta2 specfun_module::msta2 proc~envj specfun_module::envj proc~msta2->proc~envj

Called by

proc~~msta2~~CalledByGraph proc~msta2 specfun_module::msta2 proc~cikna specfun_module::cikna proc~cikna->proc~msta2 proc~ciknb specfun_module::ciknb proc~ciknb->proc~msta2 proc~cikva specfun_module::cikva proc~cikva->proc~msta2 proc~cikvb specfun_module::cikvb proc~cikvb->proc~msta2 proc~cjynb specfun_module::cjynb proc~cjynb->proc~msta2 proc~cjyva specfun_module::cjyva proc~cjyva->proc~msta2 proc~cjyvb specfun_module::cjyvb proc~cjyvb->proc~msta2 proc~ikna specfun_module::ikna proc~ikna->proc~msta2 proc~iknb specfun_module::iknb proc~iknb->proc~msta2 proc~ikv specfun_module::ikv proc~ikv->proc~msta2 proc~jyna specfun_module::jyna proc~jyna->proc~msta2 proc~jynbh specfun_module::jynbh proc~jynbh->proc~msta2 proc~jyv specfun_module::jyv proc~jyv->proc~msta2 proc~lamn specfun_module::lamn proc~lamn->proc~msta2 proc~lamv specfun_module::lamv proc~lamv->proc~msta2 proc~rctj specfun_module::rctj proc~rctj->proc~msta2 proc~sphi specfun_module::sphi proc~sphi->proc~msta2 proc~sphj specfun_module::sphj proc~sphj->proc~msta2 proc~ch12n specfun_module::ch12n proc~ch12n->proc~ciknb proc~ch12n->proc~cjynb proc~jynb specfun_module::jynb proc~jynb->proc~jynbh proc~jyndd specfun_module::jyndd proc~jyndd->proc~jynbh proc~rmn1 specfun_module::rmn1 proc~rmn1->proc~sphj proc~jyzo specfun_module::jyzo proc~jyzo->proc~jyndd proc~mtu12 specfun_module::mtu12 proc~mtu12->proc~jynb proc~rmn2so specfun_module::rmn2so proc~rmn2so->proc~rmn1 proc~rswfo specfun_module::rswfo proc~rswfo->proc~rmn1 proc~rswfo->proc~rmn2so proc~rswfp specfun_module::rswfp proc~rswfp->proc~rmn1

Source Code

   function msta2(x,n,Mp) result(nn)

      real(wp),intent(in) :: x !! Argument of Jn(x)
      integer,intent(in) :: n !! Order of Jn(x)
      integer,intent(in) :: Mp !! Significant digit
      integer :: nn !! Starting point

      real(wp) :: a0 , ejn , f , f0 , f1 , hmp , obj
      integer :: it , n0 , n1

      a0 = abs(x)
      hmp = 0.5_wp*Mp
      ejn = envj(n,a0)
      if ( ejn<=hmp ) then
         obj = Mp
         n0 = int(1.1_wp*a0) + 1
      else
         obj = hmp + ejn
         n0 = n
      endif
      f0 = envj(n0,a0) - obj
      n1 = n0 + 5
      f1 = envj(n1,a0) - obj
      do it = 1 , 20
         nn = n1 - (n1-n0)/(1.0_wp-f0/f1)
         f = envj(nn,a0) - obj
         if ( abs(nn-n1)<1 ) exit
         n0 = n1
         f0 = f1
         n1 = nn
         f1 = f
      enddo
      nn = nn + 10

   end function msta2