--- /dev/null
+*
+* $Id$
+*
+* $Log$
+* Revision 1.1.1.1 1996/04/01 15:03:24 mclareni
+* Mathlib gen
+*
+*
+#include "gen/pilot.h"
+ SUBROUTINE INTGRL (NDIM,INTDEG,NPOINT,FUNINT,ERROR)
+C*NS INTEGER NDIM, INTDEG, INTPNT
+ INTEGER NDIM, INTDEG
+ REAL ERROR
+ COMMON /ISTRGE/ MXRGNS,ISTOR(12000)
+ COMMON /RSTRGE/ RSTSZE,RSTOR(18001)
+ INTEGER RSTSZE
+ COMMON /BUKSZE/ MAXWRD
+ INTEGER MAXWRD
+ COMMON /TRESZE/ ENTREE,ENTBUC
+ INTEGER ENTREE,ENTBUC
+ COMMON /LIMITS/ GMINUS(10),GPLUS(10)
+ COMMON /PRINT/ IPRINT
+ COMMON /FUNN/ NFUN, NFOPT, NFCUT
+ INTEGER NFUN, NFOPT, NFCUT
+ COMMON /QUADRE/ DEGREE
+ INTEGER DEGREE
+ REAL UMINUS(10),UPLUS(10)
+ INTEGER PARENT,PTR,NTOT,NIBUC,BUCPTR
+ DOUBLE PRECISION FINT,ERRSQ
+ EXTERNAL FUN
+ IF(ENTBUC.GT.1) GOTO 20
+ WRITE(6,10)
+ 10 FORMAT(' FUNINT CALLED BEFORE PARTN.')
+ STOP
+ 20 IF(INTDEG.LE.1) GOTO 30
+ IF(INTDEG.EQ.2) NFUN=NFUN+ENTBUC*(NDIM+1)
+ IF(INTDEG.EQ.3) NFUN=NFUN+ENTBUC*2*NDIM
+ IF(INTDEG.EQ.5) NFUN=NFUN+ENTBUC*(2*NDIM**2+1)
+ 30 ISCR=MXRGNS*(MAXWRD+1)
+ FUNINT=0.0E+0
+ ERROR=FUNINT
+ BUCPTR=MXRGNS+1
+ IF(INTDEG.NE.1) GOTO 50
+ NTOT=NPOINT*ENTBUC
+ J=BUCPTR+1
+ ERRTOT=0.0E+0
+ DO 40 I=1,ENTBUC
+ ERRTOT=ERRTOT+SQRT(RSTOR(J))
+ J=J+MAXWRD
+ 40 CONTINUE
+ 50 DO 180 IBUC=1,ENTBUC
+ PARENT=1
+ DO 60 J=1,NDIM
+ UMINUS(J)=GMINUS(J)
+ UPLUS(J)=GPLUS(J)
+ 60 CONTINUE
+ CALL BOUNDS(IBUC,PARENT,ISTOR,RSTOR,UMINUS,UPLUS)
+ IF(INTDEG.GE.0) GOTO 70
+ CALL USRINT(UMINUS,UPLUS,RSTOR(BUCPTR),RSTOR(BUCPTR+1),RFINT,RERR
+ 1SQ)
+ FUNINT=FUNINT+RFINT
+ ERROR=ERROR+RERRSQ
+ BUCPTR=BUCPTR+MAXWRD
+ GOTO 180
+ 70 IF(DEGREE.NE.1) GOTO 80
+ CELVOL=RSTOR(BUCPTR+6)
+ GOTO 100
+ 80 CELVOL=1.0E+0
+ DO 90 J=1,NDIM
+ CELVOL=CELVOL*(UPLUS(J)-UMINUS(J))
+ 90 CONTINUE
+ 100 IF(INTDEG.LE.1) GOTO 110
+ FUNINT=FUNINT+QUAD(NDIM,INTDEG,UMINUS,UPLUS,FUN)*CELVOL
+ GOTO 180
+ 110 IF(INTDEG.NE.1) GOTO 120
+ NIBUC=INT(SQRT(RSTOR(BUCPTR+1))*NTOT/ERRTOT+0.5)
+ IF(NIBUC.GE.5) GOTO 130
+ FUNINT=FUNINT+RSTOR(BUCPTR)
+ ERROR=ERROR+RSTOR(BUCPTR+1)
+ BUCPTR=BUCPTR+MAXWRD
+ GOTO 180
+ 120 NIBUC=NPOINT
+ CALL QUASI(XX,NDIM,NIBUC,-NPOINT)
+ 130 PTR=ISCR
+ FINT=0.0E+0
+ ERRSQ=FINT
+ DO 170 J=1,NIBUC
+ IF(INTDEG.NE.1) GOTO 140
+ CALL RANUMS(RSTOR(PTR+1),NDIM)
+ GOTO 150
+ 140 CALL QUASI(RSTOR(PTR+1),NDIM,1,NIBUC)
+ 150 DO 160 I=1,NDIM
+ RSTOR(I+PTR)=(UPLUS(I)-UMINUS(I))*RSTOR(I+PTR)+UMINUS(I)
+ 160 CONTINUE
+ F=FUN(NDIM,RSTOR(PTR+1))
+ FINT=FINT+F
+ IF(ABS(F).GT.1.0E-37) ERRSQ=ERRSQ+F**2
+ 170 CONTINUE
+ FINT=FINT/NIBUC
+ ERRSQ=ERRSQ/NIBUC
+ ERRSQ=ERRSQ-FINT**2
+ FINT=FINT*CELVOL
+ ERRSQ=ERRSQ*CELVOL**2
+ IF(INTDEG.EQ.0) ERRSQ=RSTOR(BUCPTR+1)/NIBUC
+ ERRSQ=ERRSQ/NIBUC
+ FUNINT=FUNINT+FINT
+ ERROR=ERROR+ERRSQ
+ NFUN=NFUN+NIBUC
+ RSTOR(BUCPTR)=FINT
+ BUCPTR=BUCPTR+MAXWRD
+ 180 CONTINUE
+ IF(ERROR.GT.0) ERROR=SQRT(ERROR)
+ IF(IPRINT.LE.0) GOTO 200
+ WRITE(6,190) FUNINT,ERROR,NFUN
+ 190 FORMAT(' INTEGRAL ESTIMATE = ',G13.5,' +/-',G13.5/1X,
+ 1 I10,' TOTAL INTEGRAND EVALUATIONS')
+ 200 RETURN
+ END