Blob Blame History Raw
#! /bin/sh /usr/share/dpatch/dpatch-run
## 216-use-cernlib-gamma-not-intrinsic.dpatch by Kevin B. McCarty <kmccarty@debian.org>
##
## 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)