+++ /dev/null
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.2 1996/10/30 08:27:52 cernlib
-* Version 7.04
-*
-* Revision 1.1.1.1 1996/04/12 15:29:15 plothow
-* Version 7.01
-*
-*
-#include "pdf/pilot.h"
-#if defined(CERNLIB_SINGLE)
- FUNCTION DBFINT(NARG,ARG,NA,ENT,TABLE)
-#endif
-#if defined(CERNLIB_DOUBLE)
- DOUBLE PRECISION FUNCTION DBFINT(NARG,ARG,NA,ENT,TABLE)
-#endif
-#include "pdf/impdp.inc"
- INTEGER NA(NARG), INDEX(32)
-#include "pdf/expdp.inc"
- + ARG(NARG),ENT(10),TABLE(10),WEIGHT(32)
- DATA ZEROD/0.D0/ONED/1.D0/
-C
- DBFINT = ZEROD
- IF(NARG .LT. 1 .OR. NARG .GT. 5) RETURN
-C
- LMAX = 0
- ISTEP = 1
- KNOTS = 1
- INDEX(1) = 1
- WEIGHT(1) = ONED
- DO 100 N = 1, NARG
- X = ARG(N)
- NDIM = NA(N)
- LOCA = LMAX
- LMIN = LMAX + 1
- LMAX = LMAX + NDIM
- IF(NDIM .GT. 2) GOTO 10
- IF(NDIM .EQ. 1) GOTO 100
- H = X - ENT(LMIN)
- IF(H .EQ. ZEROD) GOTO 90
- ISHIFT = ISTEP
- IF(X-ENT(LMIN+1) .EQ. ZEROD) GOTO 21
- ISHIFT = 0
- ETA = H / (ENT(LMIN+1) - ENT(LMIN))
- GOTO 30
- 10 LOCB = LMAX + 1
- 11 LOCC = (LOCA+LOCB) / 2
- IF(X-ENT(LOCC)) 12, 20, 13
- 12 LOCB = LOCC
- GOTO 14
- 13 LOCA = LOCC
- 14 IF(LOCB-LOCA .GT. 1) GOTO 11
- LOCA = MIN ( MAX (LOCA,LMIN), LMAX-1 )
- ISHIFT = (LOCA - LMIN) * ISTEP
- ETA = (X - ENT(LOCA)) / (ENT(LOCA+1) - ENT(LOCA))
- GOTO 30
- 20 ISHIFT = (LOCC - LMIN) * ISTEP
- 21 DO 22 K = 1, KNOTS
- INDEX(K) = INDEX(K) + ISHIFT
- 22 CONTINUE
- GOTO 90
- 30 DO 31 K = 1, KNOTS
- INDEX(K) = INDEX(K) + ISHIFT
- INDEX(K+KNOTS) = INDEX(K) + ISTEP
- WEIGHT(K+KNOTS) = WEIGHT(K) * ETA
- WEIGHT(K) = WEIGHT(K) - WEIGHT(K+KNOTS)
- 31 CONTINUE
- KNOTS = 2*KNOTS
- 90 ISTEP = ISTEP * NDIM
- 100 CONTINUE
- DO 200 K = 1, KNOTS
- I = INDEX(K)
- DBFINT = DBFINT + WEIGHT(K) * TABLE(I)
- 200 CONTINUE
- RETURN
- END