SpectraRust/tlusty/extracted/expint.f
2026-03-19 14:05:33 +08:00

31 lines
935 B
Fortran

FUNCTION EXPINT(X)
C ==================
C
C First exponential integral function E1(X)
C
INCLUDE 'IMPLIC.FOR'
PARAMETER (A1 = -0.57721566,
* A2 = 0.99999193,
* A3 = -0.24991055,
* A4 = 0.05519968,
* A5 = -0.00976004,
* A6 = 0.00107857,
* B1 = 0.2677734343,
* B2 = 8.6347608925,
* B3 = 18.059016973,
* B4 = 8.5733287401,
* C1 = 3.9584969228,
* C2 = 21.0996530827,
* C3 = 25.6329561486,
* C4 = 9.5733223454,
* UN = 1.0)
C
IF(X.LE.UN) THEN
EXPINT=-LOG(X)+A1+X*(A2+X*(A3+X*(A4+X*(A5+X*A6))))
ELSE
EXPINT=EXP(-X)*((B1+X*(B2+X*(B3+X*(B4+X))))/
* (C1+X*(C2+X*(C3+X*(C4+X)))))/X
END IF
RETURN
END