File EXPI.FT (FORTRAN source file)

Directory of image this file is from
This file as a plain text file

C
C     ..................................................................
C
C        SUBROUTINE EXPI
C
C        PURPOSE
C           COMPUTES THE EXPONENTIAL INTEGRAL -EI(-X)
C
C        USAGE
C           CALL EXPI(X,RES)
C
C        DESCRIPTION OF PARAMETERS
C           X     - ARGUMENT OF EXPONENTIAL INTEGRAL
C           RES   - RESULT VALUE
C           AUX   - RESULTANT AUXILIARY VALUE
C
C        REMARKS
C           X GT 170 (X LT -174) MAY CAUSE UNDERFLOW (OVERFLOW)
C           WITH THE EXPONENTIAL FUNCTION
C           FOR X = 0 THE RESULT VALUE IS SET TO -1.7E38                        0
C
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C           NONE
C
C        METHOD
C           DEFINITION
C           RES=INTEGRAL(EXP(-T)/T, SUMMED OVER T FROM X TO INFINITY).
C           EVALUATION
C           THREE DIFFERENT RATIONAL APPROXIMATIONS ARE USED IN THE
C           RANGES 1 LE X, X LE -9 AND -9 LT X LE -3 RESPECTIVELY,
C           A POLYNOMIAL APPROXIMATION IS USED IN -3 LT X LT 1.
C
C     ..................................................................
C
      SUBROUTINE EXPI(X,RES,AUX)
      IF(X-1.)2,1,1
    1 Y=1./X
      AUX=1.-Y*(((Y+3.377358E0)*Y+2.052156E0)*Y+2.709479E-1)/((((Y*
     11.072553E0+5.716943E0)*Y+6.945239E0)*Y+2.593888E0)*Y+2.709496E-1)
      RES=AUX*Y*EXP(-X)
      RETURN
    2 IF(X+3.)6,6,3
    3 AUX=(((((((7.122452E-7*X-1.766345E-6)*X+2.928433E-5)*X-2.335379E-4
     1)*X+1.664156E-3)*X-1.041576E-2)*X+5.555682E-2)*X-2.500001E-1)*X
     2+9.999999E-1
      RES=-1.7E38                                                               0
      IF(X)4,5,4
    4 RES=X*AUX-ALOG(ABS(X))-5.772157E-1
    5 RETURN
    6 IF(X+9.)8,8,7
    7 AUX=1.-((((5.176245E-2*X+3.061037E0)*X+3.243665E1)*X+2.244234E2)*X
     1+2.486697E2)/((((X+3.995161E0)*X+3.893944E1)*X+2.263818E1)*X
     2+1.807837E2)
      GOTO 9
    8 Y=9./X
      AUX=1.-Y*(((Y+7.659824E-1)*Y-7.271015E-1)*Y-1.080693E0)/((((Y
     1*2.518750E0+1.122927E1)*Y+5.921405E0)*Y-8.666702E0)*Y-9.724216E0)
    9 RES=AUX*EXP(-X)/X
      RETURN
      END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search