~ubuntu-branches/ubuntu/wily/julia/wily

« back to all changes in this revision

Viewing changes to deps/openlibm/slatec/alngam.f

  • Committer: Package Import Robot
  • Author(s): Sébastien Villemot
  • Date: 2013-01-16 12:29:42 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130116122942-x86e42akjq31repw
Tags: 0.0.0+20130107.gitd9656f41-1
* New upstream snashot
* No longer try to rebuild helpdb.jl.
   + debian/rules: remove helpdb.jl from build-arch rule
   + debian/control: move back python-sphinx to Build-Depends-Indep
* debian/copyright: reflect upstream changes
* Add Build-Conflicts on libatlas3-base (makes linalg tests fail)
* debian/rules: replace obsolete USE_DEBIAN makeflag by a list of
  USE_SYSTEM_* flags
* debian/rules: on non-x86 systems, use libm instead of openlibm
* dpkg-buildflags.patch: remove patch, applied upstream
* Refreshed other patches

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
*DECK ALNGAM
 
2
      FUNCTION ALNGAM (X)
 
3
C***BEGIN PROLOGUE  ALNGAM
 
4
C***PURPOSE  Compute the logarithm of the absolute value of the Gamma
 
5
C            function.
 
6
C***LIBRARY   SLATEC (FNLIB)
 
7
C***CATEGORY  C7A
 
8
C***TYPE      SINGLE PRECISION (ALNGAM-S, DLNGAM-D, CLNGAM-C)
 
9
C***KEYWORDS  ABSOLUTE VALUE, COMPLETE GAMMA FUNCTION, FNLIB, LOGARITHM,
 
10
C             SPECIAL FUNCTIONS
 
11
C***AUTHOR  Fullerton, W., (LANL)
 
12
C***DESCRIPTION
 
13
C
 
14
C ALNGAM(X) computes the logarithm of the absolute value of the
 
15
C gamma function at X.
 
16
C
 
17
C***REFERENCES  (NONE)
 
18
C***ROUTINES CALLED  GAMMA, R1MACH, R9LGMC, XERMSG
 
19
C***REVISION HISTORY  (YYMMDD)
 
20
C   770601  DATE WRITTEN
 
21
C   890531  Changed all specific intrinsics to generic.  (WRB)
 
22
C   890531  REVISION DATE from Version 3.2
 
23
C   891214  Prologue converted to Version 4.0 format.  (BAB)
 
24
C   900315  CALLs to XERROR changed to CALLs to XERMSG.  (THJ)
 
25
C   900326  Removed duplicate information from DESCRIPTION section.
 
26
C           (WRB)
 
27
C   900727  Added EXTERNAL statement.  (WRB)
 
28
C***END PROLOGUE  ALNGAM
 
29
      LOGICAL FIRST
 
30
      EXTERNAL GAMMA
 
31
      SAVE SQ2PIL, SQPI2L, PI, XMAX, DXREL, FIRST
 
32
      DATA SQ2PIL / 0.9189385332 0467274E0/
 
33
      DATA SQPI2L / 0.2257913526 4472743E0/
 
34
      DATA PI     / 3.1415926535 8979324E0/
 
35
      DATA FIRST  /.TRUE./
 
36
C***FIRST EXECUTABLE STATEMENT  ALNGAM
 
37
      IF (FIRST) THEN
 
38
         XMAX = R1MACH(2)/LOG(R1MACH(2))
 
39
         DXREL = SQRT (R1MACH(4))
 
40
      ENDIF
 
41
      FIRST = .FALSE.
 
42
C
 
43
      Y = ABS(X)
 
44
      IF (Y.GT.10.0) GO TO 20
 
45
C
 
46
C LOG (ABS (GAMMA(X))) FOR  ABS(X) .LE. 10.0
 
47
C
 
48
      ALNGAM = LOG (ABS (GAMMA(X)))
 
49
      RETURN
 
50
C
 
51
C LOG (ABS (GAMMA(X))) FOR ABS(X) .GT. 10.0
 
52
C
 
53
 20   IF (Y .GT. XMAX) CALL XERMSG ('SLATEC', 'ALNGAM',
 
54
     +   'ABS(X) SO BIG ALNGAM OVERFLOWS', 2, 2)
 
55
C
 
56
      IF (X.GT.0.) ALNGAM = SQ2PIL + (X-0.5)*LOG(X) - X + R9LGMC(Y)
 
57
      IF (X.GT.0.) RETURN
 
58
C
 
59
      SINPIY = ABS (SIN(PI*Y))
 
60
      IF (SINPIY .EQ. 0.) CALL XERMSG ('SLATEC', 'ALNGAM',
 
61
     +   'X IS A NEGATIVE INTEGER', 3, 2)
 
62
C
 
63
      IF (ABS((X-AINT(X-0.5))/X) .LT. DXREL) CALL XERMSG ('SLATEC',
 
64
     +   'ALNGAM', 'ANSWER LT HALF PRECISION BECAUSE X TOO NEAR ' //
 
65
     +   'NEGATIVE INTEGER', 1, 1)
 
66
C
 
67
      ALNGAM = SQPI2L + (X-0.5)*LOG(Y) - X - LOG(SINPIY) - R9LGMC(Y)
 
68
      RETURN
 
69
C
 
70
      END