55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| program bodide
 | |
| ! Compute probability of word error for a bounded distance decoder.
 | |
| ! Hardwired for non-coherent 64-FSK and the JT65 RS (63,12) code on GF(64).
 | |
| !
 | |
| ! Let ps be symbol error probability. 
 | |
| ! The probability of getting an error pattern with e symbol errors is:
 | |
| ! ps^e * (1-ps)*(n-e)
 | |
| ! The number of error patterns with e errors is binomial(63,e)
 | |
| ! Overall probability of getting a word with e errors is:
 | |
| ! P(e)= binomial(63,e)* ps^e * (1-ps)*(n-e)
 | |
| ! Probability that word is correct is P(0 to 25 errors) = sum{e=0}^{25} P(e)
 | |
| ! Probability that word is wrong is 1-P(0 to 25 errors) 
 | |
| ! P_word_error=1-( sum_{e=0}^{t} P(e) )
 | |
| !
 | |
|   implicit real*16 (a-h,o-z)
 | |
| 
 | |
|   integer*8 binomial
 | |
|   integer x,s,XX,NN,M
 | |
|   character arg*8
 | |
| 
 | |
|   nargs=iargc()
 | |
|   if(nargs.ne.1) then
 | |
|      print*,'Probability of word error for noncoherent 64-FSK with bounded distance decoding'
 | |
|      print*,'Usage:    bounded_distance   D'
 | |
|      print*,'Example:  bounded_distance  25'
 | |
|      go to 999
 | |
|   endif
 | |
|   call getarg(1,arg)
 | |
|   read(arg,*) nt 
 | |
|   M=64
 | |
|   write(*,1012) 
 | |
| 1012 format('Es/No  P(word error)'/  &
 | |
|              '----------------------')
 | |
|   do isnr=0,40
 | |
|     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
 | |
|     ps=hsum
 | |
|     hsum=0.d0
 | |
|     do i=0,nt
 | |
|       h=binomial(63,i)
 | |
|       h=h*ps**i
 | |
|       h=h*(1-ps)**(63-i)
 | |
|       hsum=hsum+h
 | |
|     enddo
 | |
|     pw=1-hsum
 | |
|     write(*,'(f4.1,4x,e10.4,4x,e10.4)') isnr/2.0, ps, pw
 | |
|   enddo
 | |
| 999 end program bodide 
 | 
