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* Equitable 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. + B(2) - P(i) - alpha*B(2) ddcp = 1. + B(i) - P(2) - alpha*B(i) scorcb(i) = ( P(i) - alpha * B(2) ) / ddcb scorcp(i) = ( P(2) - alpha * B(i) ) / ddcp If ( i .eq. 2 ) THEN dd = 1. + B(i) - P(i) - alpha*B(i) scor = ( P(i) - alpha * B(i) ) / dd dsdb = 1. / ( dd * dd ) dsdb = dsdb * ( 2.*alpha*P(i) - P(i) - alpha ) dsdp = 1. / ( dd * dd ) dsdp = dsdp * (1. + B(i) - 2.*alpha*B(i)) acpr = P(i)+alpha-2.*alpha*P(i) acpr = acpr / (B(i)+1.-2.*alpha*B(i)) END IF END DO fdsdb = (scorcp(3) - scorcp(1)) / (2.*db) fdsdp = (scorcb(3) - scorcb(1)) / (2.*dp) cprb1 = (alpha + P(2) - 2.*alpha*P(2))/ (2. * (1. - alpha)) C* WRITE (6,*) ' Equit. 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