Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0026/dlgam.ssp
There are 2 other files named dlgam.ssp in the archive. Click here to see a list.
C                                                                       DLGA  10
C     ..................................................................DLGA  20
C                                                                       DLGA  30
C        SUBROUTINE DLGAM                                               DLGA  40
C                                                                       DLGA  50
C        PURPOSE                                                        DLGA  60
C           COMPUTES THE DOUBLE PRECISION NATURAL LOGARITHM OF THE      DLGA  70
C           GAMMA FUNCTION OF A GIVEN DOUBLE PRECISION ARGUMENT.        DLGA  80
C                                                                       DLGA  90
C        USAGE                                                          DLGA 100
C           CALL DLGAM(XX,DLNG,IER)                                     DLGA 110
C                                                                       DLGA 120
C        DESCRIPTION OF PARAMETERS                                      DLGA 130
C           XX   - THE DOUBLE PRECISION ARGUMENT FOR THE LOG GAMMA      DLGA 140
C                  FUNCTION.                                            DLGA 150
C           DLNG - THE RESULTANT DOUBLE PRECISION LOG GAMMA FUNCTION    DLGA 160
C                  VALUE.                                               DLGA 170
C           IER  - RESULTANT ERROR CODE WHERE                           DLGA 180
C                  IER= 0----NO ERROR.                                  DLGA 190
C                  IER=-1----XX IS WITHIN 10**(-9) OF BEING ZERO OR XX  DLGA 200
C                            IS NEGATIVE.  DLNG IS SET TO -1.OD75.      DLGA 210
C                  IER=+1----XX IS GREATER THAN 10**70. DLNG IS SET TO  DLGA 220
C                            +1.OD75.                                   DLGA 230
C                                                                       DLGA 240
C        REMARKS                                                        DLGA 250
C           NONE                                                        DLGA 260
C                                                                       DLGA 270
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED                  DLGA 280
C           NONE                                                        DLGA 290
C                                                                       DLGA 300
C        METHOD                                                         DLGA 310
C           THE EULER-MCLAURIN EXPANSION TO THE SEVENTH DERIVATIVE TERM DLGA 320
C           IS USED, AS GIVEN BY M. ABRAMOWITZ AND I.A. STEGUN,         DLGA 330
C           'HANDBOOK OF MATHEMATICAL FUNCTIONS', U. S. DEPARTMENT OF   DLGA 340
C           COMMERCE, NATIONAL BUREAU OF STANDARDS APPLIED MATHEMATICS  DLGA 350
C           SERIES, 1966, EQUATION 6.1.41.                              DLGA 360
C                                                                       DLGA 370
C     ..................................................................DLGA 380
C                                                                       DLGA 390
      SUBROUTINE DLGAM(XX,DLNG,IER)                                     DLGA 400
      DOUBLE PRECISION XX,ZZ,TERM,RZ2,DLNG                              DLGA 410
      IER=0                                                             DLGA 420
      ZZ=XX                                                             DLGA 430
      IF(XX-1.D10) 2,2,1                                                DLGA 440
    1 IF(XX-1.7D33) 8,9,9                                                DLGA 450
C                                                                       DLGA 460
C        SEE IF XX IS NEAR ZERO OR NEGATIVE                             DLGA 470
C                                                                       DLGA 480
    2 IF(XX-1.D-9) 3,3,4                                                DLGA 490
    3 IER=-1                                                            DLGA 500
      DLNG=-1.7D38                                                       DLGA 510
      GO TO 10                                                          DLGA 520
C                                                                       DLGA 530
C        XX GREATER THAN ZERO AND LESS THAN OR EQUAL TO 1.D+10          DLGA 540
C                                                                       DLGA 550
    4 TERM=1.D0                                                         DLGA 560
    5 IF(ZZ-18.D0) 6,6,7                                                DLGA 570
    6 TERM=TERM*ZZ                                                      DLGA 580
      ZZ=ZZ+1.D0                                                        DLGA 590
      GO TO 5                                                           DLGA 600
    7 RZ2=1.D0/ZZ**2                                                    DLGA 610
      DLNG =(ZZ-0.5D0)*DLOG(ZZ)-ZZ +0.9189385332046727 -DLOG(TERM)+     DLGA 620
     1(1.D0/ZZ)*(.8333333333333333D-1 -(RZ2*(.2777777777777777D-2 +(RZ2*DLGA 630
     2(.7936507936507936D-3 -(RZ2*(.5952380952380952D-3)))))))          DLGA 640
      GO TO 10                                                          DLGA 650
C                                                                       DLGA 660
C        XX GREATER THAN 1.D+10 AND LESS THAN 1.D+70                    DLGA 670
C                                                                       DLGA 680
    8 DLNG=ZZ*(DLOG(ZZ)-1.D0)                                           DLGA 690
      GO TO 10                                                          DLGA 700
C                                                                       DLGA 710
C        XX GREATER THAN OR EQUAL TO 1.D+70                             DLGA 720
C                                                                       DLGA 730
    9 IER=+1                                                            DLGA 740
      DLNG=1.7D38                                                        DLGA 750
   10 RETURN                                                            DLGA 760
      END                                                               DLGA 770