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
 |