	PROGRAM CMP
C
C*  This program computes scores, analytic derivative and finite difference
C*  derivatives.
C
	REAL	P(3), B(3)
	REAL    scorcp(3), scorcb(3)
	db = .02
	dp = .02

	WRITE (6,*) ' Enter F, H, O, N'
	READ (5,*) frcs, hits, obs, nn
C*
	alpha = obs / FLOAT (nn)
	bias = frcs / obs
        pod = hits / obs
        rn = FLOAT (nn)
C
	WRITE (6,*) ' B, P, alpha = ', bias, pod, alpha
C
C*  Bias adjusted threat score.
C
	P(1) = pod - dp
	P(2) = pod
	P(3) = pod + dp
	B(1) = bias - db
	B(2) = bias
	B(3) = bias + db
	DO i = 1, 3
	    ddcb = 1. + (1. - P(i))**(1./B(2))
	    ddcp = 1. + (1. - P(2))**(1./B(i))
	    scorcb (i) = (1. - (1. - P(i))**(1./B(2)))/ddcb
	    scorcp (i) = (1. - (1. - P(2))**(1./B(i)))/ddcp
	    If ( i .eq. 2 ) THEN
	        dd = 1. + (1. - P(i))**(1./B(i))
	        scor = (1. - (1. - P(i))**(1./B(i)))/dd
		dsdb = 1. / ( dd * dd * B(i) * B(i) )
	        dsdb = dsdb * 2.*((1. - P(i))**(1./B(i)))*alog(1.-P(i))
		dsdp = 1. / ( dd * dd * B(i) )
	        dsdp = dsdp * 2. * (1. - P(i))**((1./B(i))-1.)
		acpr = (P(i)-1.)*alog(1.-P(i)) / B(i)
	    END IF
	END DO
	fdsdb = (scorcp(3) - scorcp(1)) / (2.*db)
	fdsdp = (scorcb(3) - scorcb(1)) / (2.*dp)
	cprb1 = (P(2) - 1.) * alog(1.-P(2)) 
C*
	WRITE (6,*) ' Bias adjusted Thrt Score = ', scor
	WRITE (6,*) ' Analytic dsdb = ', dsdb
	WRITE (6,*) ' Finite diff dsdb = ', fdsdb
	WRITE (6,*) ' Analytic dsdp = ', dsdp
	WRITE (6,*) ' Finite diff dsdp = ', fdsdp
	WRITE (6,*) ' CPR = ', -dsdb/dsdp
	WRITE (6,*) ' Analytic CPR = ', acpr
	WRITE (6,*) ' CPR (B=1) = ', cprb1
C*
	STOP
	END
