* * $Id$ * * $Log$ * Revision 1.1.1.2 1996/10/30 08:27:34 cernlib * Version 7.04 * * Revision 1.1.1.1 1996/04/12 15:29:02 plothow * Version 7.01 * * #include "pdf/pilot.h" C FUNCTION AUGETFV(X,FVL) C LOGARITHMIC INTERPOLATOR - WATCH OUT FOR NEGATIVE C FUNCTIONS AND/OR X VALUES OUTSIDE THE RANGE 0 TO 1. C NOTE: DIMENSION OF FVL IS OVERWRITTEN BY VALUE USED C IN MAIN ROUTINE. DIMENSION FVL(25),XGRID(25) DATA NX,XGRID/25,.001,.002,.004,.008,.016,.032,.064,.1,.15, *.2,.25,.3,.35,.4,.45,.5,.55,.6,.65,.7,.75,.8,.85,.9,.95/ AUGETFV=0. DO 1 I=1,NX IF(X.LT.XGRID(I)) GO TO 2 1 CONTINUE 2 I=I-1 IF(I.EQ.0) THEN I=I+1 ELSE IF(I.GT.23) THEN I=23 ENDIF J=I+1 K=J+1 AXI= LOG(XGRID(I)) BXI= LOG(1.-XGRID(I)) AXJ= LOG(XGRID(J)) BXJ= LOG(1.-XGRID(J)) AXK= LOG(XGRID(K)) BXK= LOG(1.-XGRID(K)) FI= LOG(ABS(FVL(I)) +1.E-15) FJ= LOG(ABS(FVL(J)) +1.E-16) FK= LOG(ABS(FVL(K)) +1.E-17) DET=AXI*(BXJ-BXK)+AXJ*(BXK-BXI)+AXK*(BXI-BXJ) ALOGA=(FI*(AXJ*BXK-AXK*BXJ)+FJ*(AXK*BXI-AXI*BXK)+FK*(AXI*BXJ-AXJ* $ BXI))/DET ALPHA=(FI*(BXJ-BXK)+FJ*(BXK-BXI)+FK*(BXI-BXJ))/DET BETA=(FI*(AXK-AXJ)+FJ*(AXI-AXK)+FK*(AXJ-AXI))/DET IF(ABS(ALPHA).GT.99..OR.ABS(BETA).GT.99..OR.ABS(ALOGA).GT.99.) 1RETURN C IF(ALPHA.GT.50..OR.BETA.GT.50.) THEN C WRITE(6,2001) X,FVL C 2001 FORMAT(8E12.4) C WRITE(6,2001) ALPHA,BETA,ALOGA,DET C ENDIF AUGETFV=EXP(ALOGA)*X**ALPHA*(1.-X)**BETA RETURN END