WSJT-X/lib/ftrsd/ftrsd_paper/mfsk.f90

34 lines
785 B
Fortran

program mfsk
! Compute probability of symbol error for non-coherent MFSK
implicit real*16 (a-h,o-z)
integer*8 binomial
integer x,s,XX,NN,M
real*16 hypergeo, snr, term, sum
character arg*8
nargs=iargc()
if(nargs.ne.1) then
print*,'Probability of symbol error for noncoherent MFSK'
print*,'Usage: prob M'
print*,'Example: prob 64'
go to 999
endif
call getarg(1,arg)
read(arg,*) M
write(*,1012)
1012 format('Es/No P(symbol error)'/ &
'----------------------')
do isnr=0,20
esno=10**(isnr/2.0/10.0)
hsum=0.d0
do k=1,M-1
h=binomial(M-1,k)
h=h*((-1)**(k+1))/(k+1)
h=h*exp(-esno*k/(k+1))
hsum=hsum + h
enddo
write(*,'(f4.1,4x,e10.4)') isnr/2.0, hsum
enddo
999 end program mfsk