real(4) function bess4(m)
integer numar_termeni(3,0:100) 
common numar_termeni

b =0.0
do_7: do k =0,100
t=(-.25)**k/fact4(k)/fact4(k+m)

if(abs(t) <= 1E-15) then
    if(m==2) write(*,*) 'Precizie: 7'
    write(*, '(I2, t4, I3, t17, 1pE13.6)') m, k, t
numar_termeni(1,m) =k
exit do_7
endif

b =b+t
enddo do_7

bess4 = b/2.0**m
end
!----------------------------------

real(8) function bess8(m)
implicit real(8) (a-h,o-z)
integer numar_termeni(3,0:100)
common numar_termeni

b =0D0
do_16: do k =0,100
t=(-.25D0)**k/fact8(k)/fact8(k+m)

 if(dabs(t) <= 1D-15) then
 numar_termeni(2,m) =k
 exit do_16
 endif

b =b+t
enddo do_16

bess8 = b/2D0**m
end
!----------------------------------

real(16) function bess16(m)
implicit real(16) (a-h,o-z)
integer numar_termeni(3,0:100) 
common numar_termeni

b =0Q0
do_34: do k =0,100
t=(-.25q0)**k/fact16(k)/fact16(k+m)

 if(qabs(t) <= 1D-15) then
 numar_termeni(3,m) =k
 exit do_34
 endif

b=b+t
enddo do_34 
bess16 = b/2D0**m
end