#! /bin/sh /usr/share/dpatch/dpatch-run ## 216-use-cernlib-gamma-not-intrinsic.dpatch by Kevin B. McCarty ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Force use of mathlib gamma function in mathlib tests. ## DP: Built-in libc gamma function may not be sufficiently precise, ## DP: see, e.g., http://gcc.gnu.org/ml/fortran/2007-10/msg00096.html etc. @DPATCH@ diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/c/algama.F cernlib-2006.dfsg.2/src/mathlib/gen/c/algama.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/c/algama.F 1996-04-01 07:01:54.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/c/algama.F 2008-01-29 10:02:41.000000000 -0800 @@ -10,6 +10,7 @@ #if (defined(CERNLIB_DOUBLE))&&(!defined(CERNLIB_IBM)) FUNCTION ALGAMA(X) DOUBLE PRECISION DLGAMA,D + EXTERNAL DLGAMA ENTRY ALOGAM(X) diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/c/alogam.F cernlib-2006.dfsg.2/src/mathlib/gen/c/alogam.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/c/alogam.F 1996-04-01 07:01:54.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/c/alogam.F 2008-01-29 10:03:54.000000000 -0800 @@ -9,6 +9,7 @@ #include "gen/pilot.h" #if (defined(CERNLIB_DOUBLE))&&(defined(CERNLIB_IBM)) FUNCTION ALOGAM(X) + EXTERNAL ALGAMA ALOGAM = ALGAMA(X) END #endif diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/c/bsja64.F cernlib-2006.dfsg.2/src/mathlib/gen/c/bsja64.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/c/bsja64.F 1996-04-01 07:02:08.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/c/bsja64.F 2008-01-29 10:00:11.000000000 -0800 @@ -21,9 +21,11 @@ #if defined(CERNLIB_DOUBLE) PARAMETER (NAMEJ = 'BSJA/DBSJA', 1 NAMEI = 'BSIA/DBSIA') + EXTERNAL DGAMMA #endif #if !defined(CERNLIB_DOUBLE) PARAMETER (NAMEJ = 'BSJA', NAMEI = 'BSIA') + EXTERNAL GAMMA #endif LOGICAL LJA,LIA,LEV,LER DIMENSION B(0:*),BA(0:100),RR(0:100) diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/c/cbsja64.F cernlib-2006.dfsg.2/src/mathlib/gen/c/cbsja64.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/c/cbsja64.F 1996-04-01 07:02:09.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/c/cbsja64.F 2008-01-29 10:00:11.000000000 -0800 @@ -21,9 +21,11 @@ CHARACTER NAME*(*) #if defined(CERNLIB_DOUBLE) PARAMETER (NAME = 'CBSJA/WBSJA') + EXTERNAL DGAMMA #endif #if !defined(CERNLIB_DOUBLE) PARAMETER (NAME = 'CBSJA') + EXTERNAL GAMMA #endif LOGICAL LER DIMENSION CB(0:*),CBA(0:100),RR(0:100) diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/c/dlogam.F cernlib-2006.dfsg.2/src/mathlib/gen/c/dlogam.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/c/dlogam.F 1996-04-01 07:01:55.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/c/dlogam.F 2008-01-29 10:04:25.000000000 -0800 @@ -9,6 +9,7 @@ #include "gen/pilot.h" #if defined(CERNLIB_IBM) FUNCTION DLOGAM(X) + EXTERNAL DLGAMA #include "gen/imp64.inc" DLOGAM = DLGAMA(X) END diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/c/gagnc64.F cernlib-2006.dfsg.2/src/mathlib/gen/c/gagnc64.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/c/gagnc64.F 1996-04-01 07:02:05.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/c/gagnc64.F 2008-01-29 10:04:48.000000000 -0800 @@ -25,9 +25,11 @@ CHARACTER NAME*(*) CHARACTER*80 ERRTXT #if !defined(CERNLIB_DOUBLE) + EXTERNAL ALGAMA PARAMETER (NAME = 'RGAGNC') #endif #if defined(CERNLIB_DOUBLE) + EXTERNAL DLGAMA PARAMETER (NAME = 'RGAGNC/DGAGNC') #endif diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/c/gapnc64.F cernlib-2006.dfsg.2/src/mathlib/gen/c/gapnc64.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/c/gapnc64.F 1996-04-01 07:02:05.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/c/gapnc64.F 2008-01-29 10:03:35.000000000 -0800 @@ -24,9 +24,11 @@ CHARACTER NAME*(*) CHARACTER*80 ERRTXT #if !defined(CERNLIB_DOUBLE) + EXTERNAL ALGAMA PARAMETER (NAME = 'RGAPNC') #endif #if defined(CERNLIB_DOUBLE) + EXTERNAL DLGAMA PARAMETER (NAME = 'RGAPNC/DGAPNC') #endif PARAMETER (EPS = 5D-14) diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/c/rrizet64.F cernlib-2006.dfsg.2/src/mathlib/gen/c/rrizet64.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/c/rrizet64.F 1996-04-01 07:02:00.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/c/rrizet64.F 2008-01-29 10:00:11.000000000 -0800 @@ -14,12 +14,14 @@ C CHARACTER*(*) NAME PARAMETER(NAME='RRIZET/DRIZET') + EXTERNAL DGAMMA #endif #if !defined(CERNLIB_DOUBLE) FUNCTION RRIZET(X) C CHARACTER*(*) NAME PARAMETER(NAME='RRIZET') + EXTERNAL GAMMA #endif C DIMENSION P1(0:8),P2(0:8),P3(0:9),P4(0:8) diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/g/gamdis.F cernlib-2006.dfsg.2/src/mathlib/gen/g/gamdis.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/g/gamdis.F 1996-04-01 07:02:43.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/g/gamdis.F 2008-01-29 10:00:11.000000000 -0800 @@ -28,6 +28,8 @@ PARAMETER (Z1 = 1, HALF = Z1/2, QUAR = Z1/4) PARAMETER (C1 = 3*Z1/2, KMAX = 300) + EXTERNAL GAMMA + DATA C 1/ 0.5772157,-0.6558781,-0.0420026, 0.1665386,-0.0421977, 2 -0.0096220, 0.0072189,-0.0011652,-0.0002152, 0.0001281, diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/tests/c302m.F cernlib-2006.dfsg.2/src/mathlib/gen/tests/c302m.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/tests/c302m.F 1996-04-01 07:01:13.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/tests/c302m.F 2008-01-29 10:00:11.000000000 -0800 @@ -36,6 +36,7 @@ #include "gen/imp64.inc" REAL GAMMA + EXTERNAL GAMMA, DGAMMA CHARACTER*6 TFUNC(2) #include "iorc.inc" C diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/tests/c310m.F cernlib-2006.dfsg.2/src/mathlib/gen/tests/c310m.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/tests/c310m.F 1996-04-01 07:01:14.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/tests/c310m.F 2008-01-29 10:02:19.000000000 -0800 @@ -36,6 +36,7 @@ #include "imp64r.inc" REAL ALGAMA + EXTERNAL ALGAMA C Set maximum error allowed for test to be considered successful DIMENSION TOL(2),TOLIBM(2) @@ -50,6 +51,7 @@ #if defined(CERNLIB_DOUBLE) DIMENSION Y(7),T(7) REAL RT(7) + EXTERNAL DLGAMA #endif #if !defined(CERNLIB_DOUBLE) REAL Y(7),T(7) diff -urNad cernlib-2006.dfsg.2~/src/mathlib/gen/tests/e408m.F cernlib-2006.dfsg.2/src/mathlib/gen/tests/e408m.F --- cernlib-2006.dfsg.2~/src/mathlib/gen/tests/e408m.F 1998-11-05 02:41:34.000000000 -0800 +++ cernlib-2006.dfsg.2/src/mathlib/gen/tests/e408m.F 2008-01-29 10:00:11.000000000 -0800 @@ -44,6 +44,12 @@ DATA TXT(2) /'EXP(-X**2) (-1 <= X <= 1) LUKE 3.2.2(8)'/ DATA TXT(3) /'J_1(X) (-1 <= X <= 1) LUKE 9.7(7)'/ +#if defined(CERNLIB_DOUBLE) + EXTERNAL DGAMMA +#else + EXTERNAL GAMMA +#endif + #if !defined(CERNLIB_WINNT) && !defined(CERNLIB_LINUX) # if defined(CERNLIB_DOUBLE) GVSUM(N,B,C) = DVSUM(N,B,C)