home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / DOOG / PCSSP1.ZIP / GAUQUAD.ZIP / DQG32.FOR < prev    next >
Text File  |  1985-11-29  |  3KB  |  78 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE DQG32
  5. C
  6. C        PURPOSE
  7. C           TO COMPUTE INTEGRAL(FCT(X), SUMMED OVER X FROM XL TO XU)
  8. C
  9. C        USAGE
  10. C           CALL DQG32 (XL,XU,FCT,Y)
  11. C           PARAMETER FCT REQUIRES AN EXTERNAL STATEMENT
  12. C
  13. C        DESCRIPTION OF PARAMETERS
  14. C           XL     - DOUBLE PRECISION LOWER BOUND OF THE INTERVAL.
  15. C           XU     - DOUBLE PRECISION UPPER BOUND OF THE INTERVAL.
  16. C           FCT    - THE NAME OF AN EXTERNAL DOUBLE PRECISION FUNCTION
  17. C                    SUBPROGRAM USED.
  18. C           Y      - THE RESULTING DOUBLE PRECISION INTEGRAL VALUE.
  19. C
  20. C        REMARKS
  21. C           NONE
  22. C
  23. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  24. C           THE EXTERNAL DOUBLE PRECISION FUNCTION SUBPROGRAM FCT(X)
  25. C           MUST BE FURNISHED BY THE USER.
  26. C
  27. C        METHOD
  28. C           EVALUATION IS DONE BY MEANS OF 32-POINT GAUSS QUADRATURE
  29. C           FORMULA, WHICH INTEGRATES POLYNOMIALS UP TO DEGREE 63
  30. C           EXACTLY. FOR REFERENCE, SEE
  31. C           V.I.KRYLOV, APPROXIMATE CALCULATION OF INTEGRALS,
  32. C           MACMILLAN, NEW YORK/LONDON, 1962, PP.100-111 AND 337-340.
  33. C
  34. C     ..................................................................
  35. C
  36.       SUBROUTINE DQG32(XL,XU,FCT,Y)
  37. C
  38. C
  39.       DOUBLE PRECISION XL,XU,Y,A,B,C,FCT
  40. C
  41.       A=.5D0*(XU+XL)
  42.       B=XU-XL
  43.       C=.49863193092474078D0*B
  44.       Y=.35093050047350483D-2*(FCT(A+C)+FCT(A-C))
  45.       C=.49280575577263417D0*B
  46.       Y=Y+.8137197365452835D-2*(FCT(A+C)+FCT(A-C))
  47.       C=.48238112779375322D0*B
  48.       Y=Y+.12696032654631030D-1*(FCT(A+C)+FCT(A-C))
  49.       C=.46745303796886984D0*B
  50.       Y=Y+.17136931456510717D-1*(FCT(A+C)+FCT(A-C))
  51.       C=.44816057788302606D0*B
  52.       Y=Y+.21417949011113340D-1*(FCT(A+C)+FCT(A-C))
  53.       C=.42468380686628499D0*B
  54.       Y=Y+.25499029631188088D-1*(FCT(A+C)+FCT(A-C))
  55.       C=.39724189798397120D0*B
  56.       Y=Y+.29342046739267774D-1*(FCT(A+C)+FCT(A-C))
  57.       C=.36609105937014484D0*B
  58.       YY=Y+.53722135057982817D-1*(FCT(A+C)+FCT(A-C))
  59.       C=.21689675381302257D0*B
  60.       Y=Y+.57752834026862801D-1*(FCT(A+C)+FCT(A-C))
  61.       C=.15752133984808169D0*B
  62.       Y=Y+.60835236463901696D-1*(FCT(A+C)+FCT(A-C))
  63.       C=.9555943373680815D-1*B
  64.       Y=Y+.62918728173414148D-1*(FCT(A+C)+FCT(A-C))
  65.       C=.32028446431302813D-1*B
  66.       Y=B*(Y+.63969097673376078D-1*(FCT(A+C)+FCT(A-C)))
  67.       RETURN
  68.       END
  69. U-XL).
  70. C           FOR REFERENCE, SEE
  71. C           (1) FILIPPI, DAS VERFAHREN VON ROMBERG-STI+.46922199540402283D-1*(FCT(A+C)+FCT(A-C))
  72.       C=.7223598079139825D-1*B
  73.       Y=Y+.47819360039637430D-1*(FCT(A+C)+FCT(A-C))
  74.       C=.24153832843869158D-1*B
  75.       Y=B*(Y+.48270044257363900D-1*(FCT(A+C)+FCT(A-C)))
  76.       RETURN
  77.       END
  78.