* G05YAF Example Program Text * Mark 20 Release. NAG Copyright 2001. * .. Parameters .. INTEGER NOUT PARAMETER (NOUT=6) * .. Local Scalars .. DOUBLE PRECISION SUM, VSBL INTEGER I, IDIM, IFAIL, ISKIP, NTIMES LOGICAL FCALL CHARACTER SEQ * .. Local Arrays .. DOUBLE PRECISION QUASI(15) INTEGER IREF(2000) * .. External Functions .. DOUBLE PRECISION FUN EXTERNAL FUN * .. External Subroutines .. EXTERNAL G05YAF * .. Intrinsic Functions .. INTRINSIC DBLE * .. Executable Statements .. WRITE (NOUT,*) 'G05YAF Example Program Results' IDIM = 15 NTIMES = 10000 SEQ = 'S' IF (SEQ.EQ.'N' .OR. SEQ.EQ.'n') THEN ISKIP = 1000 ELSE ISKIP = 0 END IF FCALL = .TRUE. IFAIL = 1 * CALL G05YAF(FCALL,SEQ,ISKIP,IDIM,QUASI,IREF,IFAIL) * IF (IFAIL.EQ.0) THEN SUM = 0.0D0 FCALL = .FALSE. IFAIL = 0 DO 20 I = 1, NTIMES * CALL G05YAF(FCALL,SEQ,ISKIP,IDIM,QUASI,IREF,IFAIL) * SUM = SUM + FUN(IDIM,QUASI) 20 CONTINUE VSBL = SUM/DBLE(NTIMES) WRITE (NOUT,*) WRITE (NOUT,99999) 'Value of integral = ', VSBL ELSE WRITE (NOUT,99998) IFAIL END IF * 99999 FORMAT (1X,A,F8.3) 99998 FORMAT (1X,' ** G05YAF returned with IFAIL = ',I5) END * DOUBLE PRECISION FUNCTION FUN(IDIM,X) * .. Scalar Arguments .. INTEGER IDIM * .. Array Arguments .. DOUBLE PRECISION X(IDIM) * .. Local Scalars .. DOUBLE PRECISION TMP INTEGER J * .. Intrinsic Functions .. INTRINSIC ABS * .. Executable Statements .. TMP = 1.0D0 DO 20 J = 1, IDIM TMP = TMP*ABS(4.0D0*X(J)-2.0D0) 20 CONTINUE FUN = TMP RETURN END