Re: StartUp`Elliptic` fix

*To*: mathgroup at yoda.physics.unc.edu*Subject*: Re: StartUp`Elliptic` fix*From*: withoff*Date*: Sat, 7 Nov 92 10:52:48 CST

> Colleagues, > Jerry Keiper recently send out a bug fix for the > StartUp`Elliptic` package. So that I don't have to recompute > a really long calculation. . . will the error in > StartUp`Elliptic` affect the computation of > > ExpIntegralE[1, (anything) ] > > ? I don't have the time to track down whether ExpIntegralE > uses JacobiAmplitude, which is changed in the bug fix. > It will be unfortunate if I have to retract the paper I just > submitted. > > Thanks, > Vic Sparrow > Penn State Graduate Program in Acoustics > sparrow at helmholtz.psu.edu No, changing JacobiAmplitude will not normally have any effect on evaluation of ExpIntegralE[1, (anything) ]. (Of course if "(anything)" involves JacobiAmplitude, as in ExpIntegralE[1, JacobiAmplitude[1, .5]] this won't be true, but presumably you can rule out that case.) One way to think about the question of whether changing one special function will affect results from another is to separate the special functions into "basic" functions and "derived" functions. The "basic" functions are computed using simple arithmetic operations, series expansions, and so forth, while the "derived" functions are evaluated in terms of "basic" functions. Changing a "basic" function can affect a lot of things, while changing a "derived" function will not. In all but a few cases, ExpIntegralE is computed using a simple identity involving the Gamma function. This can be seen by adding a rule that announces when Gamma is being evaluated: In[6]:= a:Gamma[___] := Null /; Print["evaluating ", HoldForm[a]] In[7]:= ExpIntegralE[1, 2.3] evaluating Gamma[0, 2.3] Out[7]= 0.0325023 ExpIntegralE is an example of a "derived" function. Gamma is an example of a "basic" function. The same trick can be used with JacobiAmplitude to find out whether or not JacobiAmplitude is being evaluated as part of another computation. JacobiAmplitude is not normally evaluated as part of computing ExpIntegralE. JacobiAmplitude is a "derived" function. The definition in terms of other functions can be found in the StartUp`Elliptic` package. Except for the inverse of EllipticF, which is defined in terms of JacobiAmplitude, changing JacobiAmplitude doesn't affect anything other than JacobiAmplitude itself. Dave Withoff withoff at wri.com