* * $Id$ * * $Log$ * Revision 1.1.1.1 1996/04/01 15:03:23 mclareni * Mathlib gen * * #include "gen/pilot.h" SUBROUTINE DIVON (D,UMINUS,UPLUS,ERROR,NMAX,FUN1,ERRINT) INTEGER D,NMAX REAL UMINUS(D),UPLUS(D),ERROR COMMON /ANSWER/ FINTGL,SPRD,DUMMY(5),NRGN,MAXRGN /FUNN/ NFUN,MO(2) COMMON /Z0001/ ERR,NMIN,MCOUNT /SAMPLE/ NPT /PRSTOP/ NSTOP COMMON /PRINT/ IPRINT /ZEETRM/ ITRMF #include "d151dt.inc" DATA FAC /1.0/ C INITIALISATION OF CONSTANTS CALL DVNBKD C ITRMF=0 IF(NMAX.GT.0) GOTO 30 IF(IPRINT.LE.0) GOTO 20 WRITE(6,10) NMAX 10 FORMAT('0--- DIVON --- ',I5,' FUNCTION EVALUATIONS SPECIFIED.') 20 RETURN 30 IF(IPRINT.LE.0) GOTO 80 WRITE(6,40) IDATE,D,ERROR,NMAX 40 FORMAT('1--- DIVON --- DIVONNE4 (',A8,') MULTIPLE INTEGRATION'/ 11X,I2,' DIMENSIONS, ERROR =',G13.5,', NMAX = ',I8) WRITE(6,50) 50 FORMAT('0INTEGRATION LIMITS :') DO 70 I=1,D WRITE(6,60) I,UMINUS(I),UPLUS(I) 60 FORMAT(' X(',I2,') :',G13.5,' TO',G14.5) 70 CONTINUE 80 NMIN=9999999 MCOUNT=NSTOP ERR=ERROR ITRMF=1 CALL PARTN(D,UMINUS,UPLUS,0.0,NMAX) IF(NFUN+2*NPT*NRGN.LE.NMAX) GOTO 110 IF(IPRINT.LE.0) GOTO 100 WRITE(6,90) 90 FORMAT('0--- DIVON --- NOT ENOUGH FUNCTION EVALUATIONS LEFT' 1/' FOR MORE PRECISE INTEGRAL ESTIMATE.') 100 FUN1=FINTGL ERRINT=SPRD/NPT RETURN 110 ERRR=ABS(ERR) IF(ERR.GT.0.0) ERRR=ERRR*FINTGL NINT=MIN(MAX(2.0*NPT,SPRD*FAC/ERRR),REAL(NMAX-NFUN)/NRGN)+.5 IF(IPRINT.LE.0) GOTO 130 WRITE(6,120) NINT 120 FORMAT('0--- DIVON --- INTEGRAL AND ERROR ESTIMATE WITH',I6, 1 ' POINTS / REGION :') 130 CALL INTGRL(D,0,NINT,FUN1,ERRINT) RETURN END