From f6381577e4c6d1ee0448a06800a525492e7d2284 Mon Sep 17 00:00:00 2001 From: Steven Franke Date: Sun, 6 Dec 2015 16:21:47 +0000 Subject: [PATCH] mfsk.f90 calculates prob of symbol error vs Es/No. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6232 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/sfrsd2/sfrsd_paper/mfsk.f90 | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 lib/sfrsd2/sfrsd_paper/mfsk.f90 diff --git a/lib/sfrsd2/sfrsd_paper/mfsk.f90 b/lib/sfrsd2/sfrsd_paper/mfsk.f90 new file mode 100644 index 000000000..dbf3ea488 --- /dev/null +++ b/lib/sfrsd2/sfrsd_paper/mfsk.f90 @@ -0,0 +1,33 @@ +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