* * $Id: dgs56p.F,v 1.1.1.1 1996/04/01 15:02:14 mclareni Exp $ * * $Log: dgs56p.F,v $ * Revision 1.1.1.1 1996/04/01 15:02:14 mclareni * Mathlib gen * * #include "gen/pilot.h" SUBROUTINE DGS56P(F,A,B,RES,ERR) #if !defined(CERNLIB_DOUBLE) #include "gen/imp128.inc" CHARACTER*6 NAME NAME = 'DGS56P' CALL MTLPRT(NAME,'D106', +'not available on this machine - see documentation') RETURN END #endif #if defined(CERNLIB_DOUBLE) IMPLICIT DOUBLE PRECISION (A-H,O-Z) PARAMETER (R1 = 1, HF = R1/2) DIMENSION X5(5),W5(5),X6(6),W6(6) DATA (X5(I),W5(I),I=1,5) 1/4.6910077030668004D-02, 1.1846344252809454D-01, 2 2.3076534494715846D-01, 2.3931433524968324D-01, 3 5.0000000000000000D-01, 2.8444444444444444D-01, 4 7.6923465505284154D-01, 2.3931433524968324D-01, 5 9.5308992296933200D-01, 1.1846344252809454D-01/ DATA (X6(I),W6(I),I=1,6) 1/3.3765242898423989D-02, 8.5662246189585178D-02, 2 1.6939530676686775D-01, 1.8038078652406930D-01, 3 3.8069040695840155D-01, 2.3395696728634552D-01, 4 6.1930959304159845D-01, 2.3395696728634552D-01, 5 8.3060469323313225D-01, 1.8038078652406930D-01, 6 9.6623475710157601D-01, 8.5662246189585178D-02/ RANG=B-A E5=0 E6=0 DO 1 I = 1,5 E5=E5+W5(I)*F(A+RANG*X5(I)) E6=E6+W6(I)*F(A+RANG*X6(I)) 1 CONTINUE E6=E6+W6(6)*F(A+RANG*X6(6)) RES=HF*(E6+E5)*RANG ERR=ABS((E6-E5)*RANG) RETURN END #endif