42 lines
		
	
	
		
			863 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			863 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| 
								 | 
							
								program prob
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  implicit real*8 (a-h,o-z)
							 | 
						||
| 
								 | 
							
								  integer*8 binomial
							 | 
						||
| 
								 | 
							
								  integer x,s,XX,NN
							 | 
						||
| 
								 | 
							
								  real*8 hypergeo
							 | 
						||
| 
								 | 
							
								  character arg*8
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  nargs=iargc()
							 | 
						||
| 
								 | 
							
								  if(nargs.ne.4) then
							 | 
						||
| 
								 | 
							
								     print*,'Usage:    prob  x  N  X  s'
							 | 
						||
| 
								 | 
							
								     print*,'Example:  prob 35 63 40 40'
							 | 
						||
| 
								 | 
							
								     go to 999
							 | 
						||
| 
								 | 
							
								  endif
							 | 
						||
| 
								 | 
							
								  call getarg(1,arg)
							 | 
						||
| 
								 | 
							
								  read(arg,*) x
							 | 
						||
| 
								 | 
							
								  call getarg(2,arg)
							 | 
						||
| 
								 | 
							
								  read(arg,*) NN
							 | 
						||
| 
								 | 
							
								  call getarg(3,arg)
							 | 
						||
| 
								 | 
							
								  read(arg,*) XX
							 | 
						||
| 
								 | 
							
								  call getarg(4,arg)
							 | 
						||
| 
								 | 
							
								  read(arg,*) s
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								!  print*,binomial(5, 3)             ! 10
							 | 
						||
| 
								 | 
							
								!  print*,binomial(40, 19)           ! 131282408400
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  write(*,1010) x,NN,XX,s
							 | 
						||
| 
								 | 
							
								1010 format(//' x=',i2,'   N=',i2,'   X=',i2,'   s=',i2)
							 | 
						||
| 
								 | 
							
								  write(*,1012) 
							 | 
						||
| 
								 | 
							
								1012 format(/' x    P(x|N,X,s)  P(>=x|N,X,s) '/  &
							 | 
						||
| 
								 | 
							
								             '-------------------------------')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  hsum=0.d0
							 | 
						||
| 
								 | 
							
								  do ix=x,XX
							 | 
						||
| 
								 | 
							
								     h=hypergeo(ix,NN,XX,s)
							 | 
						||
| 
								 | 
							
								     hsum=hsum + h
							 | 
						||
| 
								 | 
							
								     write(*,1020) ix,h,hsum
							 | 
						||
| 
								 | 
							
								1020 format(i3,2d13.4)
							 | 
						||
| 
								 | 
							
								  enddo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								999 end program prob
							 |