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
 | 
