$SPAD/src/input segletes.input

Steven B. Segletes and Timothy Daly

December 3, 2016

Abstract

Segletes [Segletes 09] says that efforts were made since the publication of ARL-TR-1758 [Segletes 98] to improve upon the accuracy of the fits presented in that document. Using the terminology of that report, the fit is actually done on F_{1}(2), where w = 1/x and the function

F_{1} = E_{1}e^{1/w}/w

(i.e. F_{1} = xe^{x}E_{1}). This transformation provides for a function F_{1}(w) which varies smoothly from unity (at w = 0) to zero (as w → ∞). The fits were developed to minimize the largest occurance of the error function

ϵ = [(F_{1})_{fit} − F_{1}]/F_{1}

at any point on the functional domain (0 ≤ w < ∞).

Several fits were developed, with greater accuracy resulting from the use of more parameters. In all cases, the fitted value of F_{1} takes the form

(F_{1})_{fit} = 1/w ∗ ln{1 + w − [w − ln(1 + w)] ∗ f(w)}

Different fitting forms for f are presented below, with the associated values of max(ϵ) and the value of w for which the max(ϵ) occurs.

Contents

2

— * —

)set break resume
)sys rm -f segletes.output
)spool segletes.output
)set message test on
)set message auto off

———-

1 6-Parameter Fit

f(w) = \frac{1 + Aw + (1 − e^{−γ})Bw^{2}}{1 + (A + \frac{5}{3}) w \frac{1 + C_{1}w^{2}}{1 + D_{1}w^{2}} + Bw^{2} \frac{C_{2} + w^{2}}{D_{2} + w^{2}}}

A = 4.69041102625857590D+00 B = 7.76097664114015200D+00 C_{1} = 2.30659438867190370D-01 D_{1} = 2.37827207448962350D-01 C_{2} = 1.40614716699937220D+02 D_{2} = 1.39838508752857140D+02

max(ϵ)=1.709092E-05 at w = 99.782947

— * —

)clear all
--S 1 of 61
A6:=4.69041102625857590
--R
--R
--R   (1)  4.6904110262 585759
--R                                                                  Type: Float
--E 1
--S 2 of 61
B6:=7.76097664114015200
--R
--R
--R   (2)  7.7609766411 40152
--R                                                                  Type: Float
--E 2
--S 3 of 61
C16:=2.30659438867190370E-1
--R

--R
--R   (3)  0.2306594388 6719037
--R                                                                  Type: Float
--E 3
--S 4 of 61
D16:=2.37827207448962350E-1
--R
--R
--R   (4)  0.2378272074 4896235
--R                                                                  Type: Float
--E 4
--S 5 of 61
C26:=1.40614716699937220E+2
--R
--R
--R   (5)  140.6147166999 3722
--R                                                                  Type: Float
--E 5
--S 6 of 61
D26:=1.39838508752857140E+2
--R
--R
--R   (6)  139.8385087528 5714
--R                                                                  Type: Float
--E 6

———-

The constant γ is Euler’s constant which is the limit of the expression

(1 + 1/2 + 1/3 + 1/4 + … + 1/n) − ln(x) = 0.577215664901532860606512090082 …

— * —

--S 7 of 61
Euler:=0.57721566490153286061
--R
--R
--R   (7)  0.5772156649 0153286061
--R                                                                  Type: Float
--E 7
--S 8 of 61
term16(w:DFLOAT):DFLOAT == 1 + A6*w + (1-%e^(-Euler))*B6*w^2
--R

--R   Function declaration term16 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 8
--S 9 of 61
term26(w:DFLOAT):DFLOAT == w*(1+C16*w^2)/(1+D16*w^2)
--R
--R   Function declaration term26 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 9
--S 10 of 61
term36(w:DFLOAT):DFLOAT == B6*w^2*(C26+w^2)/(D26+w^2)
--R
--R   Function declaration term36 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 10
--S 11 of 61
sixfit(w:DFLOAT):DFLOAT == term16(w) / ( 1 + (A6+5/3)*term26(w) + term36(w))
--R
--R   Function declaration sixfit : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 11

———-

2 8-Parameter Fit

f(w) = \frac{1 + Aw + (1 − e^{−γ})Bw^{2}}{1 + (A + \frac{5}{3}) w + Bw^{2} (1 + \frac{C_{1}}{D_{1} + w} + \frac{C_{2}w}{(D_{2} + w)^{2}} + \frac{C_{3}w^{2}}{(D_{3} + w)^{3}} )}

A = 4.99191263403800090D+00 B = 8.55392302479002180D+00 C_{1} = 2.41723456633978670D+00 D_{1} = 3.38951420119681250D+02 C_{2} = -1.22812127267525170D+00 D_{2} = 1.37651629589202030D+02 C_{3} = -5.35044576792352150D-02 D_{3} = 8.67574715486645330D-01

max(ϵ)=3.256059E-06 at w = 14.116516

— * —

--S 12 of 61
A8:=4.99191263403800090
--R
--R
--R   (12)  4.9919126340 380009
--R                                                                  Type: Float
--E 12
--S 13 of 61
B8:=8.55392302479002180
--R
--R
--R   (13)  8.5539230247 900218
--R                                                                  Type: Float
--E 13
--S 14 of 61
C18:=2.41723456633978670
--R
--R
--R   (14)  2.4172345663 397867
--R                                                                  Type: Float
--E 14
--S 15 of 61
D18:=3.38951420119681250E2
--R
--R
--R   (15)  338.9514201196 8125
--R                                                                  Type: Float
--E 15
--S 16 of 61
C28:=-1.22812127267525170
--R
--R
--R   (16)  - 1.2281212726 752517
--R                                                                  Type: Float
--E 16
--S 17 of 61
D28:=1.37651629589202030E2
--R
--R
--R   (17)  137.6516295892 0203
--R                                                                  Type: Float

--E 17
--S 18 of 61
C38:=-5.35044576792352150E-2
--R
--R
--R   (18)  - 0.0535044576 79235215
--R                                                                  Type: Float
--E 18
--S 19 of 61
D38:=8.67574715486645330E-1
--R
--R
--R   (19)  0.8675747154 8664533
--R                                                                  Type: Float
--E 19
--S 20 of 61
term18(w:DFLOAT):DFLOAT == 1 + A8*w + (1-%e^(-Euler))*B8*w^2
--R
--R   Function declaration term18 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 20
--S 21 of 61
term28(w:DFLOAT):DFLOAT == (A8+5/3)*w
--R
--R   Function declaration term28 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 21
--S 22 of 61
term38(w:DFLOAT):DFLOAT == C18/(D18+w)
--R
--R   Function declaration term38 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 22
--S 23 of 61
term48(w:DFLOAT):DFLOAT == C28*w/(D28+w)^2
--R
--R   Function declaration term48 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 23

--S 24 of 61
term58(w:DFLOAT):DFLOAT == C38*w^2/(D38+w)^3
--R
--R   Function declaration term58 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 24
--S 25 of 61
eightfit(w:DFLOAT):DFLOAT ==
    term18(w)/(1+term28(w)+B8*w^2*(1+term38(w)+term48(w)+term58(w)))
--R
--R   Function declaration eightfit : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 25

———-

3 10-Parameter Fit

f(w) = \frac{1 + Aw + B(1 − e^{−γ})w^{2}}{1 + (A + \frac{5}{3}) w \frac{1 + E_{1}w^{2} + C_{1}w^{3}}{1 + G_{1}w^{2} + D_{1}w^{3}} + Bw^{2} \frac{C_{2} + E_{2}w + w^{2}}{D_{2} + G_{2}w + w^{2}}}

A = 7.74823271875959920D+00 B = 2.42331702915707580D+-1 C_{1} = 3.48159341103108960D-03 D_{1} = 1.01421240602993130D-03 C_{2} = 7.77813337451483160D+01 D_{2} = 9.41171735762913930D+01 E_{1} = 9.52872674659433150D-01 G_{1} = 9.43128313648529780D-01 E_{2} = 6.29952753733901360D+01 G_{2} = 6.28722150790988370D+01

max(ϵ)=1.882788E-06 at w = 45.275091

— * —

--S 26 of 61
A10:=7.74823271875959920
--R
--R
--R   (26)  7.7482327187 595992
--R                                                                  Type: Float

--E 26
--S 27 of 61
B10:=2.42331702915707580E1
--R
--R
--R   (27)  24.2331702915 70758
--R                                                                  Type: Float
--E 27
--S 28 of 61
C110:=3.48159341103108960E-3
--R
--R
--R   (28)  0.0034815934 110310896
--R                                                                  Type: Float
--E 28
--S 29 of 61
D110:=1.01421240602993130E-3
--R
--R
--R   (29)  0.0010142124 060299313
--R                                                                  Type: Float
--E 29
--S 30 of 61
C210:=7.77813337451483160E1
--R
--R
--R   (30)  77.7813337451 48316
--R                                                                  Type: Float
--E 30
--S 31 of 61
D210:=9.41171735762913930E1
--R
--R
--R   (31)  94.1171735762 91393
--R                                                                  Type: Float
--E 31
--S 32 of 61
E110:=9.52872674659433150E-1
--R
--R
--R   (32)  0.9528726746 5943315
--R                                                                  Type: Float
--E 32

--S 33 of 61
G110:=9.43128313648529780E-1
--R
--R
--R   (33)  0.9431283136 4852978
--R                                                                  Type: Float
--E 33
--S 34 of 61
E210:=6.29952753733901360E1
--R
--R
--R   (34)  62.9952753733 90136
--R                                                                  Type: Float
--E 34
--S 35 of 61
G210:=6.28722150790988370E1
--R
--R
--R   (35)  62.8722150790 98837
--R                                                                  Type: Float
--E 35
--S 36 of 61
term110(w:DFLOAT):DFLOAT == 1 + A10*w + B10*(1-%e^(-Euler))*w^2
--R
--R   Function declaration term110 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 36
--S 37 of 61
term210(w:DFLOAT):DFLOAT ==
   (A10+5/3)*w*(1+E110*w^2+C110*w^3)/(1+G110*w^2+D110*w^3)
--R
--R   Function declaration term210 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 37
--S 38 of 61
term310(w:DFLOAT):DFLOAT == B10*w^2*(C210+E210*w+w^2)/(D210+G210*w+w^2)
--R
--R   Function declaration term310 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 38
--S 39 of 61

tenfit(w:DFLOAT):DFLOAT == term110(w)/(1+term210(w)+term310(w))
--R
--R   Function declaration tenfit : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 39

———-

4 12-Parameter Fit

f(w) = \frac{1 + Aw + B(1 − e^{−γ})w^{2}}{1 + \frac{A + 5/3 + H_{1}w}{1 + H_{2}w} w \frac{1 + E_{1}w^{2} + C_{1}w^{3}}{1 + G_{1}w^{2} + D_{1}w^{3}} + Bw^{2} \frac{C_{2} + E_{2}w + w^{2}}{D_{2} + G_{2}w + w^{2}}}

A = 6.58272149564893640D+00 B = 1.65978816181933130D+01 C_{1} = 5.14357696611253590D-03 D_{1} = 2.33075091216811960D-03 C_{2} = 7.13737271086793040D+01 D_{2} = 8.03410183545183260D+01 E_{1} = 7.58135938490494650D-01 G_{1} = 7.56175417133594260D-01 E_{2} = 4.63752805419194370D+01 G_{2} = 4.63079462234788510D+01 H_{1} = 2.97036738105914930D-03 H_{2} = 1.92452599275716720D-04

max(ϵ)=3.076770E-07 at w = 0.072472

— * —

--S 40 of 61
A12:=6.58272149564893640
--R
--R
--R   (40)  6.5827214956 489364
--R                                                                  Type: Float
--E 40
--S 41 of 61
B12:=1.65978816181933130E1
--R
--R
--R   (41)  16.5978816181 93313
--R                                                                  Type: Float

--E 41
--S 42 of 61
C112:=5.14357696611253590E-3
--R
--R
--R   (42)  0.0051435769 661125359
--R                                                                  Type: Float
--E 42
--S 43 of 61
D112:=2.33075091216811960E-3
--R
--R
--R   (43)  0.0023307509 121681196
--R                                                                  Type: Float
--E 43
--S 44 of 61
C212:=7.13737271086793040E1
--R
--R
--R   (44)  71.3737271086 79304
--R                                                                  Type: Float
--E 44
--S 45 of 61
D212:=8.03410183545183260E1
--R
--R
--R   (45)  80.3410183545 18326
--R                                                                  Type: Float
--E 45
--S 46 of 61
E112:=7.58135938490494650E-1
--R
--R
--R   (46)  0.7581359384 9049465
--R                                                                  Type: Float
--E 46
--S 47 of 61
G112:=7.56175417133594260E-1
--R
--R
--R   (47)  0.7561754171 3359426
--R                                                                  Type: Float
--E 47

--S 48 of 61
E212:=4.63752805419194370E1
--R
--R
--R   (48)  46.3752805419 19437
--R                                                                  Type: Float
--E 48
--S 49 of 61
G212:=4.63079462234788510E1
--R
--R
--R   (49)  46.3079462234 78851
--R                                                                  Type: Float
--E 49
--S 50 of 61
H112:=2.97036738105914930E-3
--R
--R
--R   (50)  0.0029703673 810591493
--R                                                                  Type: Float
--E 50
--S 51 of 61
H212:=1.92452599275716720E-4
--R
--R
--R   (51)  0.0001924525 9927571672
--R                                                                  Type: Float
--E 51
--S 52 of 61
term112(w:DFLOAT):DFLOAT == 1 + A12*w + B12*(1-%e^(-Euler))*w^2
--R
--R   Function declaration term112 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 52
--S 53 of 61
term212(w:DFLOAT):DFLOAT == (A12+5/3+H112*w)/(1+H212*w)*w
--R
--R   Function declaration term212 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 53
--S 54 of 61
term312(w:DFLOAT):DFLOAT == (1+E112*w^2+C112*w^3)/(1+G112*w^2+D112*w^3)

--R
--R   Function declaration term312 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 54
--S 55 of 61
term412(w:DFLOAT):DFLOAT == B12*w^2*(C212+E212*w+w^2)/(D212+G212*w+w^2)
--R
--R   Function declaration term412 : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 55
--S 56 of 61
twelvefit(w:DFLOAT):DFLOAT == term112(w)/(1+term212(w)*term312(w)+term412(w))
--R
--R   Function declaration twelvefit : DoubleFloat -> DoubleFloat has been
--R      added to workspace.
--R                                                                   Type: Void
--E 56
--S 57 of 61
fit6:=sixfit(0.5)
--R
--R   Compiling function term16 with type DoubleFloat -> DoubleFloat
--R   Compiling function term26 with type DoubleFloat -> DoubleFloat
--R   Compiling function term36 with type DoubleFloat -> DoubleFloat
--R   Compiling function sixfit with type DoubleFloat -> DoubleFloat
--R
--R   (57)  0.685168728102725
--R                                                            Type: DoubleFloat
--E 57
--S 58 of 61
fit8:=eightfit(0.5)
--R
--R   Compiling function term18 with type DoubleFloat -> DoubleFloat
--R   Compiling function term28 with type DoubleFloat -> DoubleFloat
--R   Compiling function term38 with type DoubleFloat -> DoubleFloat
--R   Compiling function term48 with type DoubleFloat -> DoubleFloat
--R   Compiling function term58 with type DoubleFloat -> DoubleFloat
--R   Compiling function eightfit with type DoubleFloat -> DoubleFloat
--R
--R   (58)  0.68509590625222627
--R                                                            Type: DoubleFloat
--E 58
--S 59 of 50
fit10:=tenfit(0.5)

--R
--R   Compiling function term110 with type DoubleFloat -> DoubleFloat
--R   Compiling function term210 with type DoubleFloat -> DoubleFloat
--R   Compiling function term310 with type DoubleFloat -> DoubleFloat
--R   Compiling function tenfit with type DoubleFloat -> DoubleFloat
--R
--R   (59)  0.68509798243459208
--R                                                            Type: DoubleFloat
--E 59
--S 60 of 61
fit12:=twelvefit(0.5)
--R
--R   Compiling function term112 with type DoubleFloat -> DoubleFloat
--R   Compiling function term212 with type DoubleFloat -> DoubleFloat
--R   Compiling function term312 with type DoubleFloat -> DoubleFloat
--R   Compiling function term412 with type DoubleFloat -> DoubleFloat
--R   Compiling function twelvefit with type DoubleFloat -> DoubleFloat
--R
--R   (60)  0.68508904177847973
--R                                                            Type: DoubleFloat
--E 60
--S 61 of 61
[fit12-fit6, fit12-fit8, fit12-fit10]
--R
--R
--R   (61)
--R   [- 7.9686324245265006E-5,- 6.864473746537314E-6,- 8.9406561123439587E-6]
--R                                                      Type: List(DoubleFloat)
--E 61
)spool
)lisp (bye)

———-

References

[Segletes 98] Segletes, S.B. “A compact analytical fit to the exponential integral E_{1}(x) Technical Report ARL-TR-1758, U.S. Army Ballistic Research Laboratory, Aberdeen Proving Ground, MD, September 1998

[Segletes 09] Segletes, S.B. “Improved fits for E_{1}(x) vis-á-vis those presented in ARL-TR-1758 Technical Report ARL-TR-1758, U.S. Army Ballistic Research Laboratory, Aberdeen Proving Ground, MD, September 1998