Skip to main content
NIST Author Manuscripts logoLink to NIST Author Manuscripts
. Author manuscript; available in PMC: 2021 Jan 1.
Published in final edited form as: J Comput Phys. 2020;405:https://doi.org/10.1016/j.jcp.2019.109169.

Evaluation of Abramowitz functions in the right half of the complex plane

Zydrunas Gimbutas a, Shidong Jiang b, Li-Shi Luo c,d,*
PMCID: PMC7574584  NIHMSID: NIHMS1629752  PMID: 33093685

Abstract

A numerical scheme is developed for the evaluation of Abramowitz functions Jn in the right half of the complex plane. For n = − 1, … , 2, the scheme utilizes series expansions for ∣z∣ < 1, asymptotic expansions for ∣z∣ > R with R determined by the required precision, and least squares Laurent polynomial approximations on each sub-region in the intermediate region 1 ≤ ∣z∣ ≤ R. For n > 2, Jn is evaluated via a forward recurrence relation. The scheme achieves nearly machine precision for n = −1, … , 2 at a cost that is competitive as compared with software packages for the evaluation of other special functions in the complex domain.

Keywords: Abramowitz functions, least squares method, Laurent series

2000 MSC: 33E20, 33F05, 65D15, 65E05, 65F99

1. Introduction

The Abramowitz functions Jn of order n, defined by

Jn(z)=0tnet2ztdt,nZ, (1)

are frequently encountered in kinetic theory (cf., e.g., [8, 17]), where the integral equations resulting from linearization of the Boltzmann equation have these functions (cf., e.g., [8, 17, 26, 21]) as the kernels. The n-th order Abramowitz function Jn satisfies the third order ODE [1, 2]

zJn(n1)Jn+2Jn=0 (2)

and the recurrence relations

Jn(z)=Jn1(z), (3)
2Jn(z)=(n1)Jn2(z)+zJn3(z). (4)

The integral representation (1) also leads to

Jn(z¯)=Jn(z)¯. (5)

Research on Abramowitz functions is rather limited. In [2], about two pages of Section 27.5 are devoted to Abramowitz functions, which contain series and asymptotic expansions, originally developed in [1, 25, 38]. In [10], numerical computation of Abramowitz functions is discussed when z is a positive real number, and, in particular, it is shown that the recurrence relation for Jn is stable in both directions. In [27], a more efficient and reliable numerical algorithm using Chebyshev expansions has been developed for the evaluation of Jn (n = 0, 1, 2) when z is a positive real number.

For time-dependent or time-harmonic problems in kinetic theory, evaluation of Abramowitz functions with complex arguments is often required. However, we are not aware of any work on the evaluation of Abramowitz functions in complex domains.

In this paper, we develop an efficient and accurate numerical scheme for the evaluation of Abramowitz functions when its argument z is in the right half of the complex plane (denoted as C+¯={zCRe(z)0}) for n ≥ −1. We first note that Chebyshev expansions are not good representations in the complex domain since Chebyshev polynomials are orthogonal polynomials only when the argument is real. Second, when ∣z∣ is small, say, less than r for some r > 0, a series expansion can be used to evaluate Jn(z) accurately with small number of terms. Third, when ∣z∣ is large, say, greater than R for some R > 0, the truncated asymptotic expansion can be used to evaluate Jn(z) accurately.

We now consider the intermediate region D={zC+¯rzR}, where neither the series expansion nor the asymptotic expansion can be used to achieve the required precision. Since 0 and ∞ are the only singular points of the ODE (2) satisfied by Jn, standard ODE theory [20, Chapter 16] together with the series expansion (7) shows that Jn(z) = fn(z) + gn(z) ln z where f and g are entire functions. Thus, Jn admits an infinite Laurent series representation in D by theory of complex variables [5]. One may naturally ask whether Jn(z) can be well approximated by a truncated Laurent series in D. It turns out that such approximation requires excessively large number of terms to achieve high accuracy. Furthermore, this global approximation is extremely ill-conditioned due to the fact that Jn behaves like an exponential function asymptotically, making its dynamic range too large to be resolved numerically with high accuracy and rendering the scheme useless.

We propose two techniques to deal with the extreme ill-conditioning associated with the global approximation of Jn in D. First, we extract out the leading factor in the asymptotic expansion of Jn(z) and make a change of variable as follows:

Jn(z)=π3(ν3)n2eνUn(ν),ν=3(z2)23. (6)

It has been shown in [1, 25] that Un(ν) also satisfies a third order ordinary differential equation (ODE) with 0 a regular singular point and ∞ an irregular singular point. Thus, Un(ν) is analytic for zD and therefore can be represented by an infinite Laurent series in ν in the transformed domain. The main advantage of working with Un(ν) instead of Jn(z) is that Un(ν) has much smaller dynamic range and thus admits more accurate and efficient approximation.

Next, we divide the intermediate region D into several sub-regions Di={zC+¯rizri+1} (i = 0, … , M – 1, r0 = r, rM = R). By symmetry, we may further restrict ourself to consider the quarter-annulus domain Qi={zCRe(z)0,Im(z)0,rizri+1} (i = 0, … , M – 1, r0 = r, rM = R). On each sub-region Qi, we approximate Un(ν) via a Laurent polynomial [24] in ν where the coefficients are obtained by solving a least squares problem. Here the linear system is set up by matching the function values with the values of the Laurent polynomial approximation on a set of N points on the boundary of Qi. The least squares problem is still ill-conditioned and the conditioning becomes worse as N increases, but its solution can be used to produce very accurate approximation to the function being approximated.

Here, we would like to remark that recently least squares method has been applied to construct accurate and stable approximation for many classes of functions. In [7], it is used together with method of fundamental solutions to solve boundary value problems for the Helmholtz equation. In [15], it is used to construct rational approximation for functions on the unit circle. In [4, 3], it is shown that a wide class of functions can be approximated in an accurate and well-conditioned manner using frames and the least squares method. The least squares method is used in [16] to construct efficient and accurate sum-of-Gaussians approximations for a class of kernels in mathematical physics and in [6, 35] to construct sum-of-poles approximations for certain functions. Needless to say, the least squares problem itself has to be solved using suitable algorithms. Many such algorithms exist (see, for example, [11, 14, 18, 28, 32]).

For n ≥ 3, we apply the recurrence relation (4) to compute Jn(z). We note that the recurrence relation only needs the values of Jn for n = 0, 1, 2. Since many applications in kinetic theory require the evaluation of J−1, we provide the direct evaluation of J−1 as well via our scheme since it is more efficient than using the recurrence relation.

Clearly, the scheme presented in this paper may be applied to the accurate evaluation of a very broad class of special functions in complex domains. Very often these special functions satisfy an ODE with a finite number of singular points. Therefore, they are analytic in complex domains excluding singular points and branch cuts. Complex analysis then ensures that Laurent series is a suitable representation to such functions in the domain. With a careful choice of the domain and suitable transformation, the least squares method becomes a reliable tool for constructing efficient, accurate and stable approximation for these functions.

The paper is organized as follows. Section 2 collects analytical results used in the construction of the algorithm. Section 3 discusses numerical algorithms for the evaluation of Abramowitz functions. Section 4 illustrates the performance and accuracy of the algorithm. The paper is concluded with a short discussion on possible extensions and applications of the work.

2. Analytical apparatus

The series expansion of Jn takes the form

2Jn(z)=k=0(ak(n)lnz+bk(n))zk. (7)

For n = 1, the coefficients can be found in [2, §27.5.4] with a0(1)=a1(1)=0, a2(1)=1, b0(1)=1, b1(1)=π, b2(1)=3(1γ)2, and

ak(1)=2ak2(1)k(k1)(k2),bk(1)=2bk2(1)+(3k26k+2)ak(1)k(k1)(k2),k3, (8)

where γ ≈ 0.577215664901532860606512 is Euler’s constant. For n = −1, 0, the coefficients can be obtained from term-by-term differentiation of (7), together with (3):

ak(n)=(k+1)ak+1(n+1),bk(n)=(k+1)bk+1(n+1)ak+1(n+1),k0. (9)

For n = 2, the coefficients can be obtained from term-by-term integration of (7) together with J2(0)=π4, i.e., a0(2)=0, b0(2)=π2, and

ak(2)=ak1(1)k,bk(2)=bk1(1)k+ak1(1)k2,k1. (10)

We have the following lemma regarding the convergence of the power series k=0ak(n)zk and k=0bk(n)zk in the series expansion (7).

Lemma 1. For n = −1, … , 2, the power series k=0ak(n)zk and k=0bk(n)zk in (7) converge in C.

Proof. For n = 1, direct calculation shows that

a2k1=0,a2k(1)=(1)k2(2k)!(k1)!,k>0. (11)

Thus, the radius of convergence for k=0ak(n)zk is ∞ by the ratio test and the series converges for all complex numbers. We now split k=0bk(n)zk into the odd part and the even part:

k=0bk(1)zk=zk=0b2k+1(1)(z2)k+k=1b2k(1)(z2)k. (12)

For the odd part, direct calculation shows

b2k+1(1)=(2)kb1(1)(2k+1)!(2k1)!!. (13)

Using the root test and Stirling’s formula for factorials [5, p. 201], we observe that the odd part converges for all complex numbers. For the even part, we claim that

b2k(1)<2[(k1)!]3,k1. (14)

We prove (14) by induction. First, (14) holds for k = 1 by direct calculation. Now, assume (14) holds for 2k – 2, i.e.,

b2k2(1)<2[(k2)!]3. (15)

By (11), it is easy to see that

a2k(1)<12k[(k2)!]3,k>1. (16)

using the second equation in (8), we have

b2k(1)2b2k2(1)2k(2k1)(2k2)+3a2k(1)k1+2a2k(1)2k(2k1)(2k2)<2b2k2(1)2k(2k1)(2k2)+1[(k1)!]3<42k(2k1)(2k2)[(k2)!]3+1[(k1)!]3<2[(k1)!]3, (17)

where the first inequality follows from the triangle inequality, the second one follows from (16), the third one follows from the induction assumption. Thus, the even part also converges for all complex numbers by the comparison and root tests, and Stirling’s formula. Finally, the convergence of the power series for n = −1, 0, 2 follows from (9), (10), (11), (13), (14), the comparison and root tests, and Stirling’s formula.

Even though (7) was originally derived under the assumption that z is positive real, it makes sense for any z ≠ 0. Furthermore, it provides a natural analytic continuation [5, p. 283] of Jn to C with the branch cut along negative real axis and the principal branch for ln z chosen to be, say, Im(ln z) ∈ (−π, π].

The asymptotic expansion of Jn is given by [2, §27.5.8]:

Jn(z)π3(ν3)n2eν(c0(n)+c1(n)ν+c2(n)ν2+),z, (18)

where ν = 3(z/2)2/3, c0(n)=1, c1(n)=(3n2+3n1)12, and

12(k+2)ck+2(n)=(12k2+36k3n23n+25)ck+1(n)+12(n2k)(2k+3n)(2k+3+2n)ck(n),k0. (19)

Once again, (18) was originally derived under the assumption that z is real and positive [1, 25]. One may, however, verify that the expansion inside the parentheses on the right hand side of (18) is a formal solution to the third order ODE satisfied by Un in (6). Furthermore, the exponential factor decays when arg z(3π4,3π4). Hence, (18) is valid for any zC+¯asz.

The following lemma is the theoretical foundation of our algorithm.

Lemma 2. Suppose that DC is a closed bounded domain that does not contain the origin and the function f is analytic in D. Let L(z)=k=N1N2ckzk. Then

  1. if ∣f(z) – L(z)∣ ≤ ϵ for z ∈ ∂D, then ∣f(z) – L(z)∣ ≤ ϵ for z ∈ D;

  2. if ∣f(z) – L(z)∣/∣f(z)∣ ≤ ϵ for z ∈ ∂D and f has no zeros in D, then ∣f(z) – L(z)∣/∣f(z)∣ ≤ ϵ for z ∈ D.

Proof. This follows from the analyticity of L(z) on D and the maximum principle [5, p. 133].

3. Numerical Algorithms

3.1. Series and asymptotic expansions

As we have shown in Lemma 1, the coefficients ak(n) and bk(n) in (8)-(10) decay very rapidly and the corresponding series expansions converge for any z ≠ 0. However, they cannot be used for numerical calculation for large ∣z∣ due to cancellation errors and increasing number of terms for achieving the desired precision. Thus, we will use the series expansions only for ∣z∣ < 1 (i.e., r = 1). In this region, both power series k=0ak(n)zk and k=0bk(n)zk converge exponentially fast and very few terms are needed to reach the desired precision.

The coefficients ck(n) in (19) diverge rapidly and the asymptotic expansion (18) has to be truncated in order to be of any use. For any truncated asymptotic expansion, it is well-known that its accuracy increases as ∣z∣ increases. For a prescribed precision ϵmach, one needs to determine Na — the number of terms in the truncated series, and R with ∣z∣ > R the applicable region of the truncated series. This is straightforward to determine numerically. We have found that Na = 18 and R = 120 are sufficient to achieve 10−19 precision for Jn (n = −1, … , 2).

3.2. Construction of the Laurent polynomial approximation for the intermediate region

We now discuss the evaluation of Jn in the intermediate region D={zC+¯rzR}. First, by the conjugate property (5), we only need to discuss the evaluation of Jn in the first quadrant Q={zCrzR,0argzπ2}. As discussed in the introduction, it is very difficult to directly approximate Jn(z) in Q due to its large dynamic range. We use the transformation (6) and consider the approximation of Un(ν) instead, Un has a very small dynamic range. Figure 1 shows Log10 of ∣J2(z)∣ in Q on the left and ∣U2(z) in Q on the right, where the left panel shows that the magnitude of J2(z) ranges from 10−19 to 100, and the right panel shows that the magnitude of U2(z) ranges from 1.0 to 1.7. Other Jn(z) and Un(z) exhibit similar pattern with tighter ranges for ∣Un(z)∣ (n = −1, 0, 1). Thus, we will consider the evaluation of Un(ν) in Q.

Figure 1:

Figure 1:

Dynamic ranges of J2 (z) and U2 (z) in Q. For comparison purpose, both figures are plotted in the variable z.

To this end, we divide Q into several quarter-annulus domains:

Qi={zCrizri+1,0argzπ2},i=0,,M1,r0=1,rM=R. (20)

We will try to approximate Un(ν) in each Qi via a Laurent polynomial

Un(ν)Ln(i)(ν)=k=N1N2dk(i)νk,zQi. (21)

As noted before, Un(ν) satisfies a third order ODE with 0 and ∞ as the only singular points [1, 25]. Thus, Un(ν) is analytic in Qi. By Lemma 2, in order to guarantee the accuracy of the approximation in the whole domain Qi, it is sufficient to ensure the same accuracy is achieved on the boundary of Qi, i.e.,

Un(ν)k=N1N2dk(i)νkϵ,zQi. (22)

The error-bound in (22) is achieved by solving the least squares problem

Ad(i)=f, (23)

where

Ajk=νjk,fj=Un(νj),j=1,,4Nb, (24)

where νj = 3(zj/2)2/3, and zj are chosen to be the images of Gauss-Legendre nodes on each segment of ∂Qi, Nb is chosen to ensure that the error of approximation of Un(ν) by the corresponding Legendre polynomial interpolation on each segment of ∂Qi is bounded by ϵ. The right hand side f in (23) is computed via symbolic software system Mathematica to at least 50 digits. In other words, we do not use the actual analytic Laurent series to approximate Un on each quarter-annulus Qi. Instead, a numerical procedure is applied to find much more efficient “modified” Laurent series for approximating Un on each Qi.

The linear system (23) is ill-conditioned. However, since we always use d(i) in the Laurent polynomial approximation to evaluate Un, we obtain (by the maximum principle) high accuracy in function evaluation in the entire sub-region as long as the residual of the least squares problem (23) is small.

The least squares solver also reveals the numerical rank of A, which is used to obtain the optimal value of NT = N2N1 + 1, the total number of terms in the Laurent polynomial approximation. It is then straightforward to use a simple search to find the value for N1, which completes the algorithm for finding a nearly optimal and highly accurate Laurent polynomial approximation for Un in Qi.

Remark 1. We would like to emphasize that the Laurent polynomial approximation may not be unique, but this non-uniqueness has no effect on the accuracy of the approximation.

Remark 2. We have computed the integrals

In=QJn(z)Jn(z)dz=QJn1(z)Jn(z)dz (25)

for n = −1, … , 2 and found numerically that they are all close to zero. By the argument principle [5, p. 152], we have

In=2πi(ZnPn), (26)

where Zn and Pn denote respectively the number of zeros and poles of Jn(z) inside ∂Q. Since Jn(z) is analytic in Q, it has no poles in Q, i.e., Pn = 0. Thus, the fact that In is very close to zero shows that Zn = 0, that is, jn has no zeros in Q. Further numerical investigation shows that functions ∣Un(ν)∣ (n = −1, … , 2) range from 0.95 to 1.7 on ∂Q. Combining these two facts, we conclude that the absolute error bound on the approximation of Un gives roughly the same relative error bound.

3.3. Evaluation of Jn for n = −1, … , 2

Once the coefficients of Laurent polynomial approximation for each sub-region are obtained and stored, the evaluation of Jn(z) is straightforward. That is, we first compute ∣z∣ to decide on which region the point lies, then use the proper representation to evaluate Jn(z) accordingly. We summarize the algorithm for calculating Jn(z) for zC+¯, n = −1, … , 2 in Algorithm 1.

Algorithm 1 Evaluation of Jn(z) for z ϵ C+¯
procedureABRAM(z,f)Input parameter:zthe comple number for which the AbramowitzfunctionJnis to be evaluated.Output parameter:fthe value of Abramowitz functionJn(z).assertRe(z)0.ifz1thenzis in the series expansion region.Use the series expansion(7)to evaluatef=Jn(z).elseifz120thenzis in the asymptotic region.Setν=3(z2)23.Use the asymptotic expansion(18)to computeUn(ν).Setf=π3(ν3)n2eνUn(ν).elsezis in the intermediate region.Setν=3(z2)23.Use a precomputed Laurent polynomial approximation(21)to com-puteUn(n).Setf=π3(ν3)n2eνUn(ν).endifendprocedure

Remark 3. All these expansions can be converted into a polynomial of certain transformed variable. We use Horner’s method [23, §4.6.4] to evaluate the polynomial in the optimal number of arithmetic operations.

Remark 4. The accuracy of Jn(z) deteriorates as ∣z∣ increases since the condition number of evaluating the exponential function eν is ∣ν∣. This is unavoidable in any numerical scheme as the phenomenon is related to physical ill-conditioning of evaluating Jn(z) for the argument with large magnitude.

3.4. Evaluation of Jn for n > 2

In [10], it is shown that (4) is stable in both directions when z is a positive real number. We have implemented the forward recurrence to evaluate Jn(z) for n > 2. We have not observed any numerical instability during our numerical tests for zC+¯.

4. Numerical results

We have implemented the algorithms in Section 3 and the code is available at https://github.com/zgimbutas/abramowitz. Numerical experiments were performed on a desktop with a 3.10GHz Intel(R) Xeon(R) CPU.

For the series expansion (7), a straightforward calculation shows that 18 terms in bk(n)zk and 9 nonzero terms in ak(n)zk are needed to reach 10−19 precision for Jn (n = −1, … , 2). For the asymptotic expansion (18), we find that it is sufficient to choose Na = 18, R = 120 for 10−19 precision. All coefficients are precomputed with 50 digit precision.

For the intermediate region, we divide ∣z∣ on [1, 120] into three subintervals [1, 3], [3, 15], [15, 120] and Q into Q1, Q2, Q3, respectively. We use IEEE binary128 precision to carry out the precomputation step and solve the least squares problem with 10−20 threshold for the residual. We have found that for Q1 we need N2 = 11, NT = 30 for J0 and J1, N2 = 10, NT = 32 for J−1, and N2 = 11, NT = 32 for J2. For all four functions Jn (n = −1, 0, 1, 2), we need N2 = 0, NT = 30 for Q2 and N2 = 0, NT = 20 for Q3. The coefficients of Laurent polynomial approximations for Jn (n = −1, 0, 1, 2) on Qi (i = 1, 2, 3) are listed in Tables B.4-B.15 in Appendix B.

Remark 5. The coefficients in Tables B.4-B.15 for Q2 and Q3 do not have small norms. However, for Q2, 1ν13(32)(23)=0.254 …; and for Q3, 1ν13(152)(23)0.087. It is easy to see that terms cj(1ν)j decrease as j increases. Alternatively, we could consider the Laurent series of the form c~j(νiν)j with νi = 3(ri/2)(2/3) (ri is the lower bound for ∣z∣ in Qi). Then the coefficient vector c~ will have small norm, as required in [7, 4]. However, this corresponds to the column scaling in the least squares matrix and almost all methods for solving the least squares problems do column normalization. Thus, it has no effect on the accuracy of the solution and stability of the algorithm.

Remark 6. The partition of the sub-regions is by no means optimal or unique. There is an obvious trade-off between the number of sub-regions and the number of terms in the Laurent polynomial approximation. For example, one may use a finer partition for the regions closer to the origin. We have tried to divide the intermediate region into 14 regions with Qi={zC+¯(2)i1z(2)i} (i = 1, … , 14), and we observe that only 20 terms are needed for all regions. However, our numerical experiments indicate that the partition has very mild effect on the overall performance (i.e., speed and accuracy) of the algorithm.

4.1. Accuracy check

We first check the accuracy of Algorithm 1. The reference function values are calculated via Mathematica to at least 50 digit accuracy. The error is measured in terms of maximum relative error, i.e.,

E=maxiJ^n(zi)J¯n(zi)J~n(zi),

where J~n(zi)=eνiJn(zi)(νi=3(zi2)23) is the reference value of the scaled Abramowitz function computed via Mathematica, and J^n(zi) is the value computed via our algorithm. The points zi are sampled randomly with uniform distribution in both its magnitude and angle in C+¯. Table 1 lists the errors for evaluating J~n (n = −1, 0, 1, 2) in various regions, where we observe that the errors are within 10ϵmach with the machine epsilon ϵmach ≈ 2.22 × 10−16 for IEEE double precision. In general, the errors in the first intermediate region Q1 are slightly bigger due to mild cancellation errors.

Table 1:

The relative L error of Algorithm 1 over 100, 000 uniformly distributed random points in C+¯. The reference value is computed via Mathematica to at least 50 digit accuracy. S denotes the series expansion region and A denotes the asymptotic expansion region.

S Q1 Q2 Q3 A
J−1 1.5×10−15 2.1×10−15 4.4×10−16 6.4×10−16 8.6×10−16
J0 1.3×10−15 2.4×10−15 2.2×10−16 2.2×10−16 2.2×10−16
J1 1.1×10−15 2.4×10−15 4.7×10−16 6.0×10−16 8.0×10−16
J2 1.2×10−15 2.9×10−15 5.6×10−16 8.4×10−16 1.2×10−15

For n > 2, extensive numerical experiments indicate that the forward recurrence relation (4) is stable for evaluating Jn in C+¯. The relative errors are shown in Table 2 for a typical run.

Table 2:

The maximum relative error for evaluating J100 using the forward recurrence relation (4) over 100, 000 uniformly distributed random points in the domain {zCRe(z)0,0<z<1000}. The reference values are calculated using Mathematica with 240-digit precision arithmetic.

S Q1 Q2 Q3 A
1.3×10−15 2.9×10−15 1.3×10−15 2.0×10−15 3.7×10−15

4.2. Timing results

Since all three representations (i.e., Laurent polynomials, series and asymptotic expansions) mainly involve polynomials of degree less than 30, the algorithm takes about constant time per function evaluation in C+¯. We have tested the CPU time of Algorithm 1 for evaluating J~n(z) and compared it with that of evaluating the complex error function erf(z)=2π0zet2dt. The complex error function is a well studied special function that has received much attention in the community of scientific computing. See, for example, [9, 12, 13, 19, 29, 30, 31, 33, 34, 36, 37]. Here we use the well-regarded Faddeeva package [22] to evaluate erf(z).

The results are shown in Table 3. First, we note that erf(z) is an entire function which is somewhat simpler than the Abramowitz functions and the Faddeeva package guarantees about 10−13 accuracy. Second, the numbers of terms in all three representations in our algorithm are chosen so that 10−19 precision may be achieved if the calculation were carried out in 80–bit floatingpoint arithmetic (it achieves about 10−15 accuracy in double precision arithmetic as shown in Table 1).

Table 3:

The total CPU time in seconds for evaluating Jn(z) using Algorithm 1 and the error function erf(z) over 1, 000, 000 uniformly distributed random points in 0 ≤ Re(z) ≤ 10, 0 ≤ Im(z) ≤ 10.

J−1(z) J0(z) J1(z) J2(z) erf(z)
T 0.44 0.41 0.44 0.41 0.34

In the asymptotic region, our algorithm is slightly faster than the numbers shown in Table 3, while the Faddeeva package is faster by a factor of about 3. However, the efficiency in the asymptotic region (i.e., the asymptotic expansion) heavily depends on the properties of the given special functions and is thus independent of the algorithm for other regions. Combining all these factors, we may conclude that our algorithm is competitive with the highly optimized Faddeeva package.

5. Conclusions and further discussions

We have designed an efficient and accurate algorithm for the evaluation of Abramowitz functions Jn in the right half of the complex plane. Some useful observations in the design of the algorithm are applicable for evaluating many other special functions in the complex domain. First, it is better to pull out the leading asymptotic factor from the given function when ∣z∣ is large. Second, the maximum principle reduces the dimensionality of the approximation problem by one. Third, the least squares scheme is generally a reliable and accurate method to find an approximation of a prescribed form. That is, analytical representations should be used with caution even if they are available, as they often lead to large cancellation error or very inefficient approximations or both.

Finally, though we have used Laurent polynomials for approximating Abramowitz functions in the intermediate region, there are many other representations for function approximations. This includes truncated series expansion, rational functions (see, for example, [15]), etc. We have actually tested the truncated series expansion in the sub-region (i.e., Q1) closest to the origin for Jn. Our numerical experiments indicate that the performance is about the same as the one presented in this paper.

Acknowledgments

S. Jiang was supported by the National Science Foundation under grant DMS-1720405, and by the Flatiron Institute, a division of the Simons Foundation. L.-S. Luo was supported by the National Science Foundation under grant DMS-1720408. The authors would like to thank Vladimir Rokhlin at Yale University for his unpublished pioneer work on the evaluation of Hankel functions in the complex plane and Manas Rachh at the Flatiron Institute, Simons Foundation for helpful discussions. Certain commercial software products and equipment are identified in this paper to foster understanding. Such identification does not imply recommendation or endorsement by the National Institute of Standards and Technology, nor does it imply that the software products and equipment identified are necessarily the best available for the purpose.

Appendix

Appendix A. Zeros of Jn(z)

We have used NIntegrate in Mathematica to evaluate In defined in (25). When WorkingPrecision is set to 100, ∣In∣ are about 10−59 for n = −1, 0, 1, 2. When it is set to 200, the values of ∣In∣ decrease to 10−160. By the argument priniciple, In can only take integral multiples of 2πi. Thus, the numerical calculation clearly shows that Jn (n = −1, 0, 1, 2) have no zeros in the intermediate region Q. Analytically, we can only show that Jn has no zeros in the sector arg(z)π4. The proof is presented below.

Lemma 3. If z0C is a zero of Jn(z), then also z¯0.

Proof. This simply follows from the conjugate property (5).

Lemma 4. Suppose that n ≥ 0. Then Jn(z) has no zero in the sector argzπ4.

Proof. Let z0=x0+iy0C+¯ be a zero of Jn (z). Then by Lemma 3, z¯0 is also a zero of Jn(z). Consider functions f(t) = Jn(z0t) and g(t)=Jn(z¯0t). Then f(1) = g(1) = 0, and f, g and their derivatives decay exponentially fast to 0 as t → ∞ by the asymptotic expansion (18).

The differential equation (2) implies that

tf(t)(n1)f(t)+2z02f(t)=0, (A.1)
tg(t)(n1)g(t)+2z¯02g(t)=0. (A.2)

Multiplying both sides of (A.1) by g, integrating both sides from 1 to ∞, and performing integration by parts, we obtain

0=1[tfg(n1)fg+2z02fg]dt=tgf11f(g+gt)dt+1[(n1)fg+2z02fg]dt=1[tfgnfg+2z02fg]dt=1[tfg+nfg+2z02fg]dt. (A.3)

Similarly,

0=1[tfg+nfg+2z¯02fg]dt. (A.4)

Moreover,

1[tfgtfg]dt=1td(fg)=tfg1+1fgdt=f(1)g(1)+1fgdt. (A.5)

Adding (A.3), (A.4) and using (A.5) to simplify the result, we obtain

0=f(1)g(1)+(2n+1)1fgdt+2(z02+z¯02)1fgdt. (A.6)

Rearranging (A.6), we have

4(y02x02)1Jn(z0t)2dt=z02Jn(z0)2+(2n+1)z021Jn(z0t)2dt. (A.7)

Since the right side of (A.7) and the integral on its left side are both positive, we must have y02x02>0 and the lemma follows.

Lemma 5. Jn(z) has no zero in D={zC+¯z>R}, where R is sufficiently large.

Proof. Subtracting (A.4) from (A.3), we have

0=1t(fgfg)dt+2(z02z¯02)1fgdt. (A.8)

That is,

4x0y01Jn(z0t)2dt=z021Im(z¯0tJn1(z0t)Jn2(z¯0t))dt. (A.9)

In the domain D, Jn(z) is well approximated by the leading term of its asymptotic expansion. Let z0 = r0e0 with r0 > 0 and θ0 ∈ [−π/2, π/2]. Substituting the leading terms of the asymptotic expansions into both sides of (A.9) and simplifying the resulting expressions, we obtain

sin(2θ0)sin(2θ03). (A.10)

In other words, two sides of (A.9) have opposite sign unless they are both equal to zero, i.e., unless θ0 = 0 or z0 is a positive real number. However, Jn(x) > 0 when x > 0, as seen from its integral representation (1). And the lemma follows.

Appendix B. The coefficients of Laurent polynomial approximations for Jn

We list the coefficients cj of Laurent polynomial approximations for evaluating Jn (n = −1, 0, 1, and 2) on each quarter-annulus domain Qi (i = 1, 2, and 3) in Tables B.4-B.15. That is,

Jn(z)π3(ν3)n2eννN2j=0NT1cj(1ν)j, (B.1)

where ν3(z2)23. (B.1) is obtained by combining (6) and (21), and rewriting the Laurent polynomial as a power series in 1ν by pulling out the factor νN2.

Table B.4:

The coefficients cj (j = 0, … , 31) of the Laurent polynomial approximation given by (B.1) to evaluate J−1(z) to 19-digit precision in Q1{zCRe(z)0,Im(z)0,1z3}. N2 = 10.

real part imaginary part
0.508 404 632 082 606 781 52 × 10−17 −0.174 608 152 994 637 499 48 × 10−15
−0.745 912 235 026 426 206 60 × 10−14 0.124 626 002 002 964 530 12 × 10−13
0.510 342 448 563 248 242 07 × 10−12 −0.294 298 471 469 682 176 69 × 10−12
−0.155 278 534 850 271 007 09 × 10−10 0.263 158 514 306 763 567 96 × 10−12
0.264 414 045 122 879 630 95 × 10−9 0.139 834 751 397 682 449 07 × 10−9
—0.247 487 638 713 530 933 63 × 10−8 —0.374 213 198 230 171 159 33 × 10−8
0.482 268 582 740 909 041 08 × 10−8 0.543 401 289 326 601 410 72 × 10−7
0.216 253 553 725 866 075 08 × 10−6 —0.508 720 998 708 511 613 98 × 10−6
−0.368 717 051 178 481 237 97 × 10−5 0.301 340 166 557 595 939 20 × 10−5
0.346 284 048 895 070 301 60 × 10−4 −0.739 108 230 704 056 172 19 × 10−5
0.999 777 374 590 696 606 94 −0.576 030 836 245 300 251 51 × 10−4
−0.823 278 581 628 196 930 45 × 10−1 0.849 768 580 372 614 021 53 × 10−3
0.619 747 893 545 737 665 66 × 10−3 −0.605 139 381 903 151 159 82 × 10−2
0.566 151 822 947 680 796 37 × 10−1 0.302 907 889 349 127 277 55 × 10−1
−0.135 136 779 991 090 296 79 −0.115 958 015 111 906 821 78
0.209 718 152 961 885 801 67 0.349 173 944 608 271 288 28
−0.135 593 023 999 587 351 43 −0.830 316 528 148 841 088 13
−0.399 898 988 541 072 716 42 0.153 226 178 650 705 161 48 × 101
0.173 982 716 383 338 408 50 × 101 −0.207 207 422 408 323 786 54 × 101
−0.382 180 642 772 971 751 42 × 101 0.166 556 450 780 677 180 66 × 101
0.574 046 443 633 433 309 31 × 101 0.364 413 737 004 387 528 95
−0.602 185 574 538 225 680 30 × 101 −0.366 998 894 320 715 544 24 × 101
0.386 640 982 933 784 632 50 × 101 0.656 323 653 065 047 142 02 × 101
−0.256 979 491 396 712 909 42 −0.717 303 344 007 278 311 01 × 101
−0.261 383 686 683 662 857 52 × 101 0.521 017 298 717 892 892 59 × 101
0.331 280 620 490 481 945 83 × 101 −0.227 447 202 390 353 554 39 × 101
−0.229 475 501 388 204 966 70 × 101 0.218 248 685 401 302 644 77
0.979 988 419 462 684 815 18 0.430 819 146 717 141 565 57
−0.232 732 788 689 187 012 41 −0.308 816 943 645 394 016 56
0.135 738 167 246 491 846 59 × 10−1 0.101 035 914 706 240 915 10
0.647 176 653 107 878 954 82 × 10−2 −0.162 049 762 735 533 721 87 × 10−1
−0.113 530 822 404 964 078 13 × 10−2 0.911 116 455 095 110 768 69 × 10−3

Table B.5:

Similar to Table B.4, cj (j = 0, … , 29) for J−1(z) in Q2={zCRe(z)0,Im(z)0,3z15}. N2 = 0.

real part imaginary part
0.999 999 999 999 961 65301 0.141 806 832 347 584 925 36 × 10−12
−0.833 333 333 158 883 431 56 × 10−1 −0.183 554 755 025 424 015 39 × 10−10
0.347 222 020 992 143 062 18 × 10−2 0.664 295 120 902 317 816 28 × 10−9
0.554 592 179 369 355 251 95 × 10−1 0.192 090 703 259 659 827 96 × 10−7
−0.174 770 093 094 885 488 35 −0.272 358 724 156 552 434 93 × 10−5
0.475 579 850 792 853 198 78 0.123 293 398 001 490 185 87 × 10−3
−0.120 447 196 014 882 443 81 × 101 −0.333 799 891 312 548 583 84 × 10−2
0.241 605 349 770 769 985 85 × 101 0.599 204 046 472 687 860 33 × 10−1
0.714 019 341 240 202 213 24 −0.697 646 996 515 841 414 17
−0.603 675 406 822 103 741 45 × 102 0.386 077 962 390 076 721 58 × 101
0.605 451 350 482 099 861 87 × 103 0.324 292 794 756 158 453 98 × 102
−0.459 463 671 083 445 667 27 × 104 −0.108 419 490 933 568 204 60 × 104
0.283 585 737 521 554 577 24 × 105 0.147 667 142 274 551 196 33 × 105
−0.135 548 409 522 738 422 75 × 106 −0.136 296 993 207 088 386 68 × 106
0.427 223 358 854 162 769 83 × 106 0.936 405 385 625 510 558 57 × 106
−0.187 177 344 190 171 379 32 × 106 −0.490 146 368 535 523 402 06 × 107
−0.766 746 981 331 305 086 47 × 107 0.192 939 969 196 334 868 42 × 108
0.566 216 201 198 774 900 02 × 108 −0.533 796 877 619 324 138 68 × 108
−0.245 446 260 540 985 694 13 × 109 0.769 699 843 063 185 308 11 × 108
0.736 524 060 830 223 396 55 × 109 0.118 988 708 450 170 908 57 × 109
−0.152 002 939 636 990 115 85 × 1010 −0.111 677 447 076 659 508 37 × 1010
0.181 576 363 392 016 524 60 × 1010 0.370 018 124 502 864 503 98 × 1010
0.236 970 051 052 140 740 56 × 109 −0.769 732 352 121 328 283 29 × 1010
−0.605 418 652 742 096 914 12 × 1010 0.105 094 370 501 909 818 95 × 1011
0.134 473 475 911 834 175 29 × 1011 −0.828 696 601 026 570 423 17 × 1010
−0.165 386 003 269 058 328 99 × 1011 0.878 893 331 337 860 555 48 × 109
0.121 080 386 549 490 128 13 × 1011 0.583 201 605 488 309 253 71 × 1010
−0.458 813 237 705 320 160 82 × 1010 −0.645 912 107 582 825 318 47 × 1010
0.335 597 695 613 487 923 57 × 109 0.300 129 749 468 952 920 83 × 1010
0.215 904 420 673 766 075 26 × 109 −0.515 536 276 388 964 358 29 × 109

Table B.6:

Similar to Table B.4, cj (j = 0, …, 19) for J−1(z) in Q3={zCRe(z)0,Im(z)0,15z120}. N2 = 0.

real part imaginary part
0.100 000 000 000 000 002 11 × 101 0.178 673 059 693 174 710 10 × 10−16
−0.833 333 333 333 370 624 47 × 10−1 −0.977 231 664 374 838 609 03 × 10−14
0.347 222 222 196 623 078 73 × 10−2 0.185 750 995 314 155 635 50 × 10−11
0.554 591 050 637 792 915 69 × 10−1 −0.170 367 606 540 725 010 33 × 10−9
−0.174 766 524 353 726 066 09 0.720 973 568 196 242 083 86 × 10−8
0.475 521 803 699 479 611 03 0.458 867 227 971 042 147 45 × 10−7
−0.120 457 482 849 866 306 05 × 101 −0.234 325 765 233 684 458 86 × 10−4
0.244 764 600 694 641 417 08 × 101 0.144 884 043 026 931 818 55 × 10−2
−0.194 435 702 473 795 297 07 −0.512 841 062 799 477 565 51 × 10−1
−0.447 750 705 123 945 998 08 × 102 0.119 733 980 838 481 655 62 × 101
0.421 634 597 094 092 230 79 × 103 −0.187 325 842 170 831 902 17 × 102
−0.309 908 462 261 138 328 47 × 104 0.180 645 013 045 163 968 11 × 103
0.209 138 849 163 905 853 68 × 105 −0.592 962 111 536 245 581 48 × 103
−0.128 959 963 550 548 747 85 × 106 −0.108 214 826 602 820 261 69 × 105
0.670 852 955 256 816 110 41 × 106 0.198 088 627 508 652 376 78 × 106
−0.263 378 771 825 866 161 50 × 107 −0.168 133 321 132 881 930 78 × 107
0.670 963 418 948 175 610 42 × 107 0.859 319 504 013 814 145 32 × 107
−0.765 712 819 081 208 414 43 × 107 −0.265 726 278 587 171 822 34 × 108
−0.598 034 480 268 757 485 09 × 107 0.448 016 842 841 870 047 03 × 108
0.192 093 223 477 658 710 37 × 108 −0.300 660 136 102 592 770 74 × 108

Table B.7:

The coefficients cj (j = 0, … , 29) of the Laurent polynomial approximation given by (B.1) to evaluate J0(z) to 19-digit precision in Q1{zCRe(z)0,Im(z)0,1z3}. N2 = 11.

real part imaginary part
−0.908 326 076 414 336 267 23 × 10−16 −0.129 717 168 574 382 531 77 × 10−15
0.123 898 046 202 308 783 43 × 10−14 0.123 740 863 457 694 755 60 × 10−13
0.189 256 659 364 469 738 63 × 10−12 −0.435 940 424 250 019 098 08 × 10−12
−0.934 361 246 990 827 287 82 × 10−11 0.716 102 401 714 559 472 15 × 10−11
0.210 054 713 734 263 561 92 × 10−9 −0.315 707 201 005 084 973 22 × 10−10
−0.279 214 696 044 122 838 31 × 10−8 −0.102 677 547 667 761 081 85 × 10−8
0.222 106 972 868 927 816 43 × 10−7 0.252 819 612 779 334 845 78 × 10−7
−0.714 946 136 758 798 733 72 × 10−7 −0.307 710 587 817 158 724 27 × 10−6
−0.639 545 392 172 864 365 91 × 10−6 0.242 649 612 156 418 576 61 × 10−5
0.114 775 999 343 307 552 36 × 10−4 −0.126 927 831 114 001 418 26 × 10−4
−0.944 476 013 855 187 381 18 × 10−4 0.365 821 223 604 423 130 63 × 10−4
0.100 052 271 314 163 894 19 × 101 0.425 276 796 329 337 906 45 × 10−4
−0.854 163 396 955 419 739 74 × 10−1 −0.116 682 742 755 977 009 74 × 10−2
0.926 800 887 589 574 990 03 × 10−1 0.755 251 304 311 641 080 91 × 10−2
−0.128 309 621 833 997 329 14 −0.319 992 796 723 225 875 69 × 10−1
0.182 628 019 024 601 056 36 0.101 126 017 894 517 862 53
−0.220 865 249 636 184 775 05 −0.247 947 862 302 196 466 77
0.167 009 795 045 197 070 12 0.475 744 612 834 386 536 40
0.622 308 413 429 398 471 77 × 10−1 −0.705 468 982 760 372 689 06
−0.461 605 904 356 603 013 33 0.774 053 364 314 386 650 12
0.862 829 051 456 672 618 61 −0.548 832 850 036 770 366 33
−0.101 577 254 090 500 611 78 × 101 0.896 535 548 331 156 865 88 × 10−1
0.811 270 429 332 580 731 93 0.342 234 269 766 613 927 85
−0.405 888 707 807 449 413 28 −0.504 149 505 276 123 586 37
0.706 462 957 702 165 180 95 × 10−1 0.390 200 539 029 643 279 00
0.625 762 782 072 074 916 89 × 10−1 −0.186 652 488 193 406 157 55
−0.560 694 637 461 569 905 40 × 10−1 0.513 693 450 241 894 804 53 × 10−1
0.208 545 650 595 933 312 01 × 10−1 −0.496 224 602 988 077 610 80 × 10−2
−0.377 364 113 716 308 568 48 × 10−2 −0.107 066 204 275 949 726 34 × 10−2
0.246 580 628 163 009 904 62 × 10−3 0.247 935 486 569 863 450 25 × 10−3

Table B.8:

Similar to Table B.7, cj (j = 0, … , 29) for J0(z) in Q2{zCRe(z)0,Im(z)0,3z15}. N2 = 0.

real part imaginary part
0.999 999 999 999 886 372 17 −0.866 354 009 393 752 328 46 × 10−13
−0.833 333 333 231 314 999 72 × 10−1 0.225 193 216 710 240 252 50 × 10−10
0.868 055 556 894 298 268 98 × 10−1 −0.207 344 975 804 416 979 38 × 10−8
−0.118 152 065 141 757 379 47 0.963 392 704 416 303 720 77 × 10−7
0.179 693 330 571 877 776 54 −0.230 570 436 517 271 579 18 × 10−5
−0.243 373 421 697 903 758 42 0.980 983 545 245 184 539 57 × 10−5
0.147 644 294 738 726 207 63 × 10−1 0.127 823 214 509 188 570 49 × 10−2
0.233 096 279 379 025 075 55 × 101 −0.510 737 071 722 602 207 79 × 10−1
−0.164 809 814 902 887 641 06 × 102 0.112 915 858 278 761 992 38 × 101
0.923 051 175 444 476 845 20 × 102 −0.172 620 962 517 061 806 00 × 102
−0.516 004 179 227 537 180 15 × 103 0.193 287 527 641 909 072 74 × 103
0.324 649 316 911 391 059 61 × 104 −0.159 010 533 363 178 438 19 × 104
−0.223 140 605 129 205 983 45 × 105 0.905 996 631 238 433 354 41 × 104
0.146 047 082 313 218 996 14 × 106 −0.262 333 230 398 374 376 29 × 105
−0.811 455 137 409 768 033 11 × 106 −0.981 048 077 563 203 440 84 × 105
0.354 579 713 045 832 193 48 × 107 0.182 949 487 040 402 647 18 × 107
−0.110 840 573 517 255 386 29 × 108 −0.131 701 608 090 555 575 56 × 108
0.179 467 425 877 273 553 94 × 108 0.629 866 054 852 320 280 06 × 108
0.358 000 946 662 486 988 96 × 108 −0.216 144 510 814 329 451 59 × 109
−0.373 049 554 275 698 007 21 × 109 0.521 946 990 726 741 182 29 × 109
0.144 794 204 884 510 587 53 × 1010 −0.758 676 929 174 929 413 54 × 109
−0.359 517 888 165 641 668 63 × 1010 0.226 183 986 965 801 840 17 × 108
0.600 011 150 215 066 620 33 × 1010 0.310 062 196 048 266 214 51 × 1010
−0.607 805 483 326 699 743 19 × 1010 −0.878 915 487 267 611 439 21 × 1010
0.155 762 429 613 365 664 25 × 1010 0.138 851 365 499 019 567 58 × 1011
0.552 500 835 985 386 752 66 × 1010 −0.136 224 965 335 758 282 28 × 1011
−0.926 257 609 344 894 116 55 × 1010 0.757 327 801 853 722 127 72 × 1010
0.695 430 356 361 424 397 47 × 1010 −0.128 503 666 477 737 995 33 × 1010
−0.256 305 707 649 161 100 06 × 1010 −0.855 417 514 506 914 240 86 × 109
0.338 633 522 975 537 085 94 × 109 0.369 396 907 511 817 802 09 × 109

Table B.9:

Similar to Table B.7, cj (j = 0, … , 19) for J0(z) in Q3{zCRe(z)0,Im(z)0,15z120}. N2 = 0.

real part imaginary part
0.999 999 999 999 999 969 30 0.175 938 640 339 119 357 46 × 10−16
−0.833 333 333 333 199 009 02 × 10−1 −0.168 461 478 982 929 779 50 × 10−15
0.868 055 555 534 238 161 81 × 10−1 −0.114 533 947 041 601 480 63 × 10−11
−0.118 152 006 023 476 722 98 0.230 483 859 692 902 846 78 × 10−9
0.179 689 507 723 700 402 85 −0.219 453 859 989 587 483 45 × 10−7
−0.243 237 776 508 143 247 72 0.120 879 546 268 738 763 83 × 10−5
0.117 005 703 951 529 384 11 × 10−1 −0.381 038 547 987 292 836 35 × 10−4
0.237 452 068 486 745 862 41 × 101 0.413 464 001 734 930 254 58 × 10−3
−0.167 588 370 665 203 899 57 × 102 0.204 376 305 776 969 609 42 × 10−1
0.889 665 457 654 216 509 42 × 102 −0.120 643 172 387 860 813 73 × 101
−0.394 943 740 653 525 533 20 × 103 0.339 120 804 377 190 498 06 × 102
0.140 598 972 643 933 533 50 × 104 −0.624 748 204 647 099 272 86 × 103
−0.404 513 553 220 860 199 35 × 104 0.808 763 586 506 789 969 96 × 104
0.193 845 431 043 598 119 33 × 105 −0.745 595 997 903 222 393 86 × 105
−0.205 176 883 526 801 360 30 × 106 0.480 862 899 008 954 123 20 × 106
0.170 435 218 408 308 883 84 × 107 −0.205 186 473 609 185 214 09 × 107
−0.877 050 770 331 537 793 72 × 107 0.499 039 829 050 756 294 08 × 107
0.267 971 952 909 986 438 93 × 108 −0.308 748 073 455 144 363 82 × 107
−0.434 487 954 511 809 855 46 × 108 −0.141 981 907 205 855 775 90 × 108
0.266 930 744 198 889 886 36 × 108 0.256 745 115 830 298 117 22 × 108

Table B.10:

The coefficients cj (j = 0, … , 29) of the Laurent polynomial approximation given by (B.1) for evaluation of J1(z) to 19-digit precision in Q1{zCRe(z)0,Im(z)0,1z3}. N2 = 11.

real part imaginary part
0.110 051 983 428 464 857 55 × 10−15 −0.694 974 798 976 949 017 98 × 10−16
−0.102 537 173 909 528 367 50 × 10−13 0.573 447 330 612 984 007 54 × 10−15
0.355 419 807 461 472 502 13 × 10−12 0.171 380 359 477 394 369 87 × 10−12
−0.570 656 634 267 733 169 25 × 10−11 −0.800 977 526 803 848 613 53 × 10−11
0.213 779 424 023 220 328 01 × 10−10 0.177 457 611 434 888 666 34 × 10−9
0.925 041 777 735 636 816 59 × 10−9 −0.234 916 902 824 469 120 66 × 10−8
−0.219 581 322 067 737 848 69 × 10−7 0.187 152 555 411 620 792 36 × 10−7
0.267 441 468 134 350 880 20 × 10−6 −0.605 381 927 275 615 665 71 × 10−7
−0.214 179 643 388 840 263 93 × 10−5 −0.551 667 774 710 601 484 67 × 10−6
0.116 052 298 034 036 980 59 × 10−4 0.100 892 068 271 577 766 27 × 10−4
−0.369 022 862 459 559 263 31 × 10−4 −0.857 345 236 304 648 588 44 × 10−4
0.999 988 860 265 205 370 47 0.499 847 603 957 965 000 59 × 10−3
0.417 648 343 367 488 728 67 −0.217 591 528 352 878 862 50 × 10−2
−0.128 804 358 762 548 012 79 0.723 846 234 663 040 534 06 × 10−2
0.100 017 970 753 934 941 04 −0.182 046 813 784 092 073 36 × 10−1
−0.123 269 945 334 165 195 99 0.324 943 247 688 919 815 32 × 10−1
0.193 908 157 240 139 101 77 −0.310 480 560 080 575 564 12 × 10−1
−0.304 462 209 484 766 030 76 −0.280 943 713 750 866 947 29 × 10−1
0.402 171 783 043 948 309 19 0.187 014 328 290 689 364 87
−0.390 454 113 780 130 146 41 −0.429 651 957 392 473 659 92
0.202 994 860 670 515 644 92 0.642 709 594 134 958 603 86
0.100 869 854 237 938 765 17 −0.677 127 070 547 480 866 83
−0.347 063 116 270 971 730 40 0.489 430 856 309 116 678 32
0.397 171 277 728 308 542 81 −0.203 886 519 877 986 375 36
−0.276 279 701 906 586 144 95 −0.369 206 393 782 648 768 81 × 10−2
0.120 939 113 708 687 558 32 0.671 683 984 139 715 248 04 × 10−1
−0.288 457 249 888 844 212 84 × 10−1 −0.454 423 099 541 989 405 39 × 10−1
0.972 537 936 714 344 693 28 × 10−3 0.152 367 452 768 735 573 99 × 10−1
0.119 899 114 841 701 766 70 × 10−2 −0.254 009 262 500 862 960 20 × 10−2
−0.204 365 653 486 630 713 65 × 10−3 0.146 720 578 798 766 712 50 × 10−3

Table B.11:

Similar to Table B.10, cj (j = 0, … , 29) for J1(z) in Q2{zCRe(z)0,Im(z)0,3z15}. N2 = 0.

real part imaginary part
0.100 000 000 000 015 598 22 × 101 −0.644 325 809 756 137 710 82 × 10−13
0.416 666 666 637 650 457 92 −0.309 292 903 803 165 853 08 × 10−11
−0.121 527 775 756 020 318 81 0.138 478 874 954 507 795 12 × 10−8
0.641 395 990 107 306 846 01 × 10−1 −0.118 041 438 905 059 638 78 × 10−6
0.193 403 338 768 682 509 14 × 10−1 0.525 251 291 036 592 228 82 × 10−5
−0.310 853 962 881 174 583 25 −0.142 099 426 151 803 529 58 × 10−3
0.140 761 123 934 977 405 95 × 101 0.228 432 708 182 397 970 21 × 10−2
−0.530 346 035 828 585 911 37 × 101 −0.125 084 269 021 042 670 53 × 10−1
0.168 439 698 370 425 810 97 × 102 −0.396 338 591 511 731 227 45
−0.308 961 039 620 087 435 37 × 102 0.133 668 672 429 219 894 70 × 102
−0.123 540 786 588 963 380 72 × 103 −0.231 002 965 578 393 101 61 × 103
0.164 860 287 291 898 027 72 × 104 0.277 980 113 167 897 259 15 × 104
−0.793 656 002 819 625 726 17 × 104 −0.250 853 794 383 456 416 90 × 105
−0.178 763 381 620 329 697 92 × 104 0.173 377 113 022 011 027 56 × 106
0.360 421 953 744 320 980 49 × 106 −0.909 323 038 984 623 505 15 × 106
−0.338 183 293 087 006 495 02 × 107 0.342 839 554 438 727 027 45 × 107
0.194 492 028 977 494 948 34 × 108 −0.746 254 995 983 527 439 42 × 107
−0.790 470 833 722 513 988 93 × 108 −0.617 040 364 456 367 436 42 × 107
0.227 878 894 195 504 202 17 × 109 0.135 424 549 695 310 366 97 × 109
−0.415 506 385 950 006 041 77 × 109 −0.654 833 732 803 006 626 71 × 109
0.172 907 123 696 176 881 12 × 109 0.196 648 952 333 792 101 38 × 1010
0.167 637 779 713 995 208 71 × 1010 −0.400 050 752 276 151 932 94 × 1010
−0.630 971 170 189 396 346 89 × 1010 0.514 426 712 304 306 953 93 × 1010
0.126 396 237 086 149 185 40 × 1011 −0.242 505 339 192 332 000 87 × 1010
−0.160 214 248 381 859 378 66 × 1011 −0.510 632 232 601 052 458 52 × 1010
0.121 944 700 391 779 730 74 × 1011 0.128 012 956 581 150 484 67 × 1011
−0.366 175 697 409 280 990 53 × 1010 −0.139 069 953 249 516 583 35 × 1011
−0.208 824 308 492 656 407 04 × 1010 0.823 514 139 103 719 163 18 × 1010
0.222 563 247 596 899 852 06 × 1010 −0.236 069 992 598 179 064 85 × 1010
−0.573 572 754 664 664 525 87 × 109 0.181 001 679 632 682 649 95 × 109

Table B.12:

Similar to Table B.10, cj (j = 0, … , 19) for J1(z) in Q3{zCRe(z)0,Im(z)0,15z120}. N2 = 0.

real part imaginary part
0.100 000 000 000 000 000 88 × 101 −0.371 046 820 944 367 410 73 × 10−16
0.416 666 666 666 656 932 68 0.106 331 057 865 606 799 43 × 10−13
−0.121 527 777 775 325 301 35 −0.817 834 833 097 519 209 64 × 10−12
0.641 396 602 068 443 950 55 × 10−1 −0.532 067 463 095 992 156 52 × 10−10
0.193 403 761 465 063 495 34 × 10−1 0.147 143 090 852 591 082 66 × 10−7
−0.310 929 014 736 007 604 33 −0.128 476 337 578 447 411 59 × 10−5
0.141 082 302 044 215 261 48 × 101 0.640 298 043 092 671 354 69 × 10−4
−0.538 142 870 351 929 351 74 × 101 −0.197 291 639 374 589 200 69 × 10−2
0.180 990 405 065 459 285 10 × 102 0.339 592 660 467 105 515 28 × 10−1
−0.442 225 211 017 710 052 59 × 102 −0.464 431 291 493 640 173 64 × 10−1
−0.492 817 125 056 098 922 21 × 102 −0.146 733 386 982 745 397 90 × 102
0.191 207 310 397 992 978 66 × 104 0.446 546 557 664 915 277 24 × 103
−0.184 802 964 071 395 561 13 × 105 −0.765 292 571 761 824 189 14 × 104
0.119 494 512 833 017 511 33 × 106 0.880 375 481 155 049 965 27 × 105
−0.514 113 640 570 026 638 24 × 106 −0.705 634 002 812 068 307 70 × 106
0.109 735 353 928 198 287 12 × 107 0.390 994 526 691 565 767 03 × 107
0.173 314 355 651 991 350 31 × 107 −0.143 550 076 611 335 737 35 × 108
−0.191 271 957 480 326 461 77 × 108 0.317 572 532 452 279 463 71 × 108
0.508 015 744 433 299 636 57 × 108 −0.337 006 579 463 013 313 33 × 108
−0.479 102 880 592 342 539 94 × 108 0.611 719 070 376 090 119 58 × 107

Table B.13:

The coefficients cj (j = 0, … , 31) of the Laurent polynomial approximation given by (B.1) to evaluate J2(z) to 19-digit precision in Q1={zCRe(z)0,Im(z)0,1z3}. N2 = 11.

real part imaginary part
0.318 666 326 858 196 122 21 × 10−16 0.622 787 389 698 301 379 87 × 10−16
0.233 742 024 881 147 144 31 × 10−15 −0.583 681 868 290 920 313 91 × 10−14
−0.124 647 632 629 216 011 44 × 10−12 0.202 591 995 287 227 709 99 × 10−12
0.549 389 148 673 893 951 95 × 10−11 −0.306 881 697 703 554 016 91 × 10−11
−0.121 585 758 421 062 813 73 × 10−9 0.207 061 195 679 195 922 98 × 10−12
0.160 180 032 739 285 601 65 × 10−8 0.882 168 424 734 363 412 38 × 10−9
−0.119 414 758 814 497 678 65 × 10−7 −0.188 155 398 002 929 243 03 × 10−7
0.153 068 687 903 453 394 46 × 10−7 0.225 670 345 515 736 497 10 × 10−6
0.804 072 544 812 413 845 44 × 10−6 −0.177 728 604 980 304 237 20 × 10−5
−0.114 650 402 869 713 448 49 × 10−4 0.889 930 973 639 227 927 29 × 10−5
0.926 984 174 506 952 816 24 × 10−4 −0.171 530 442 583 568 098 74 × 10−4
0.999 481 719 915 493 824 51 −0.150 461 944 586 964 532 45 × 10−3
0.141 870 622 524 129 318 02 × 101 0.183 491 416 917 293 879 94 × 10−2
−0.126 478 358 733 725 358 21 −0.114 282 767 059 959 086 59 × 10−1
0.186 035 981 114 746 633 25 0.506 468 994 335 975 245 05 × 10−1
–0.287 649 487 485 808 553 21 −0.172 682 434 765 531 714 63
0.376 719 333 723 802 524 36 0.464 960 764 809 206 824 74
–0.286 735 627 303 066 85162 –0.992 159 994 955 746 183 74
−0.252 608 025 036 984 377 99 0.165 119 884 035 805 682 51 × 101
0.141 712 614 729 715 384 18 × 101 −0.203 812 445 017 954 268 09 × 101
−0.294 579 672 497 088 580 73 × 101 0.157 820 772 036 354 306 07 × 101
0.402 844 065 189 415 904 62 × 101 −0.377 233 543 355 642 928 19 × 10−1
−0.381 289 500 139 206 926 43 × 101 −0.199 070 648 765 300 931 67 × 101
0.224 752 491 800 986 001 79 × 101 0.333 439 877 698 488 751 42 × 101
−0.298 455 079 954 699 949 80 −0.323 517 065 419 137 574 06 × 101
−0.895 442 874 444 819 929 84 0.204 544 678 700 893 659 42 × 101
0.101 756 395 675 792 407 08 × 101 −0.774 743 518 505 746 398 68
−0.587 887 788 658 000 930 21 0.835 031 192 819 333 227 86 × 10−1
0.200 093 190 200 811 827 63 0.776 897 300 954 775 936 36 × 10−1
−0.359 654 320 908 390 960 74 × 10−1 −0.437 976 033 677 438 831 19 × 10−1
0.167 694 205 585 345 301 17 × 10−2 0.957 563 654 301 825 227 46 × 10−2
0.272 567 105 531 954 481 21 × 10−3 −0.766 126 822 662 540 928 89 × 10−3

Table B.14:

Similar to Table B.13, cj (j = 0, … , 29) for J2(z) in Q2={zCRe(z)0,Im(z)0,3z15}. N2 = 0.

real part imaginary part
0.999 999 999 999 980 618 08 0.162 482 521 133 093 156 78 × 10−12
0.141 666 666 668 292 754 03 × 101 −0.230 492 784 284 204 436 93 × 10−10
−0.121 527 779 888 094 063 80 0.105 786 214 112 157 548 90 × 10−8
0.185 667 565 930 831 821 16 0.284 242 784 011 271 800 14 × 10−8
−0.351 998 911 746 989 632 56 −0.241 909 745 765 441 133 33 × 10−5
0.745 140 284 771 892 955 14 0.126 275 058 337 217 683 89 × 10−3
−0.156 986 886 654 073 007 95 × 101 −0.369 069 066 997 730 890 97 × 10−2
0.244 026 634 964 360 786 03 × 101 0.711 508 801 323 843 873 16 × 10−1
0.425 647 783 840 440 145 01 × 101 −0.920 280 282 347 422 815 69
−0.866 287 814 850 868 846 13 × 102 0.696 596 700 416 120 258 01 × 101
0.767 804 318 971 574 775 13 × 103 0.123 360 228 557 911 306 38 × 101
−0.560 542 914 138 584 485 09 × 104 −0.868 862 439 778 485 142 46 × 103
0.347 097 600 115 435 632 56 × 105 0.139 974 327 917 219 547 13 × 105
−0.172 687 375 146 298 482 98 × 106 −0.139 229 094 314 962 945 16 × 106
0.611 878 401 649 523 159 07 × 106 0.100 633 027 909 147 705 06 × 107
−0.902 292 802 539 091 436 53 × 106 −0.550 900 707 205 202 075 41 × 107
−0.582 396 935 100 244 393 15 × 107 0.228 100 677 011 447 712 36 × 108
0.555 853 053 034 783 477 57 × 108 −0.682 265 209 957 832 557 32 × 108
−0.263 019 290 324 975 273 08 × 109 0.122 936 418 112 390 372 82 × 109
0.840 529 096 164 811 422 18 × 109 0.211 968 273 244 948 845 33 × 108
−0.186 577 921 546 062 951 88 × 1010 −0.101 312 678 036 070 864 55 × 1010
0.259 153 889 041 130 760 82 × 1010 0.384 271 569 921 601 960 76 × 1010
−0.925 179 224 709 660 621 67 × 109 −0.860 343 020 334 517 826 37 × 1010
−0.510 369 269 351 709 789 03 × 1010 0.126 265 243 143 448 689 26 × 1011
0.136 571 708 191 722 730 67 × 1011 −0.113 016 421 524 042 590 95 × 1011
−0.182 348 154 094 510 081 01 × 1011 0.355 467 235 144 743 314 42 × 1010
0.143 551 216 572 205 965 89 × 1011 0.458 394 235 179 540 658 93 × 1010
−0.610 320 528 375 417 573 28 × 1010 −0.645 093 443 224 018 395 65 × 1010
0.842 751 754 996 283 692 28 × 109 0.327 738 449 951 987 873 42 × 1010
0.158 570 795 668 019 918 82 × 109 −0.605 703 525 454 168 580 98 × 109

Table B.15:

Similar to Table B.13, cj (j = 0, … , 19) for J2(z) in Q3={zCRe(z)0,Im(z)0,15z120}. N2 = 0.

real part imaginary part
0.100 000 000 000 000 002 68 × 101 0.162 743 868 019 552 950 04 × 10−16
0.141 666 666 666 666 076 32 × 101 −0.102 878 834 626 948 767 61 × 10−13
−0.121 527 777 777 735 963 34 0.212 780 643 404 207 813 15 × 10−11
0.185 667 438 382 225 585 48 −0.213 467 395 888 552 059 15 × 10−9
−0.351 994 534 212 129 746 48 0.108 100 209 498 546 703 51 × 10−7
0.745 056 201 785 816 040 77 −0.127 583 354 158 386 725 36 × 10−6
−0.156 944 002 222 837 240 37 × 101 −0.191 947 509 138 627 125 85 × 10−4
0.246 550 589 993 223 561 59 × 101 0.146 930 730 940 053 255 64 × 10−2
0.336 070 891 425 158 927 31 × 101 −0.570 883 175 245 060 610 35 × 10−1
−0.698 533 324 578 313 000 99 × 102 0.143 780 143 817 580 756 90 × 101
0.556 108 184 991 142 516 23 × 103 −0.246 434 105 357 333 767 07 × 102
−0.373 824 599 719 869 186 36 × 104 0.279 932 734 513 352 828 71 × 103
0.238 685 728 413 736 435 77 × 105 −0.177 305 292 583 538 875 68 × 104
−0.144 152 750 317 028 372 09 × 106 −0.956 973 793 342 533 989 76 × 103
0.758 535 918 118 737 569 81 × 106 0.142 715 671 673 830 354 12 × 106
−0.309 728 616 687 691 455 38 × 107 −0.150 030 990 512 279 299 84 × 107
0.853 766 582 377 944 168 73 × 107 0.845 725 298 441 645 188 14 × 107
−0.122 886 685 657 618 339 34 × 108 −0.279 453 101 422 051 076 64 × 108
0.268 699 632 595 193 750 12 × 106 0.499 737 837 887 756 884 47 × 108
0.163 768 535 791 747 020 84 × 108 −0.359 498 303 220 644 799 62 × 108

References

  • [1].Abramowitz M. Evaluation of the integral 0eu2xudu. J. Math. Phys. Camb, 32:188–192, 1953. [Google Scholar]
  • [2].Abramowitz M and Stegun IA. Handbook of Mathematical Functions. Dover, 1965. [Google Scholar]
  • [3].Adcock B and Huybrechs D. Frames and numerical approximation II: generalized sampling. arXiv preprint arXiv:1802.01950, 2018. [Google Scholar]
  • [4].Adcock B and Huybrechs D. Frames and numerical approximation. SIAM Rev., 61(3):443–473, 2019. [Google Scholar]
  • [5].Ahlfors LV. Complex Analysis: An Introduction to the Theory of Analytic Functions of One Complex Variable International Series in Pure and Applied Mathematics. McGraw-Hill Book Co, New York, third edition, 1978. [Google Scholar]
  • [6].Alpert B, Greengard L, and Hagstrom T. Rapid evaluation of nonreflecting boundary kernels for time-domain wave propagation. SIAM J. Numer. Anal, 37(4):1138–1164, 2000. [Google Scholar]
  • [7].Barnett AH and Betcke T. Stability and convergence of the method of fundamental solutions for Helmholtz problems on analytic domains. J. Comput. Phys, 227(14):7003–7026, 2008. [Google Scholar]
  • [8].Cercignani C. Rarefied Gas Dynamics: From Basic Concepts to Actual Calculations. Cambridge University Press, Cambridge, UK, 2000. 9 [Google Scholar]
  • [9].Cody WJ. Algorithm 715: SPECFUN–a portable FORTRAN package of special function routines and test drivers. ACM Trans. Math. Software, 19(1):22–30, 1993. [Google Scholar]
  • [10].Cole RJ and Pescatore C. Evaluation of the integral 0tnet2xtdt. J. Comput. Phys, 32:280–287, 1979. [Google Scholar]
  • [11].Demmel JW. Applied Numerical Linear Algebra Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 1997. [Google Scholar]
  • [12].Gal S and Bachelis B. An accurate elementary mathematical library for the IEEE floating point standard. ACM Trans. Math. Software, 17(1):26–45, 1991. [Google Scholar]
  • [13].Gautschi W. Efficient computation of the complex error function. SIAM J. Numer. Anal, 7:187–198, 1970. [Google Scholar]
  • [14].Golub GH and Van Loan CF. Matrix Computations Johns Hopkins Studies in the Mathematical Sciences. Johns Hopkins University Press, Baltimore, MD, fourth edition, 2013. [Google Scholar]
  • [15].Gonnet P, Pachón R, and Trefethen LN. Robust rational interpolation and least–squares. Electron. Trans. Numer. Anal, 38:146–167, 2011. [Google Scholar]
  • [16].Greengard L, Jiang S, and Zhang Y. The anisotropic truncated kernel method for convolution with free-space Green’s functions. SIAM J. Sci. Comput, 40(6):A3733–A3754, 2018. [Google Scholar]
  • [17].Gross EP and Jackson EA. Kinetic models and the linearized Boltzmann equation. Phys. Fluids, 2(4):432–441, 1959. [Google Scholar]
  • [18].Gu M. Backward perturbation bounds for linear least squares problems. SIAM J. Matrix Anal. Appl, 20(2):363–372, 1999. [Google Scholar]
  • [19].Humlíček J. Optimized computation of the Voigt and complex probability functions. J. Quant. Spectrosc. Radiat. Transfer, 27(4):437–444, 1982. [Google Scholar]
  • [20].Ince E. Ordinary Differential Equations Dover Books on Mathematics. Dover Publications, 1956. [Google Scholar]
  • [21].Jiang S and Luo L-S. Analysis and solutions of the integral equation derived from the linearized BGKW equation for the steady Couette flow. J. Comput. Phys, 316:416–434, 2016. [Google Scholar]
  • [22].Johnson SG. Faddeeva Package. http://ab-initio.mit.edu/wiki/index.php/Faddeeva_Package, 2012. [Google Scholar]
  • [23].Knuth D. The Art of Computer Programming, volume 2 Addison-Wesley, 1997. [Google Scholar]
  • [24].Lang S. Algebra, volume 211 of Graduate Texts in Mathematics. Springer-Verlag, New York, third edition, 2002. [Google Scholar]
  • [25].Laporte O. Absorption coefficients for thermal neutrons. Remarks on the preceding paper of C. T. Zahn. Phys. Rev, 52:72–74, 1937. [Google Scholar]
  • [26].Li W, Luo L-S, and Shen J. Accurate solution and approximations of the linearized BGK equation for steady Couette flow. Comput. Fluids, 111:18–32, 2015. [Google Scholar]
  • [27].Macleod AJ. Chebyshev expansions for Abramowitz functions. Appl. Numer. Math, 10:129–137, 1992. [Google Scholar]
  • [28].Paige CC, Rozložník M, and Strakos Z. Modified Gram-Schmidt (MGS), least squares, and backward stability of MGS-GMRES. SIAM J. Matrix Anal. Appl, 28(1):264–284, 2006. [Google Scholar]
  • [29].Poppe GPM and Wijers CMJ. More efficient computation of the complex error function. ACM Trans. Math. Software, 16(1):38–46, 1990. [Google Scholar]
  • [30].Queipo NV, Haftka RT, Shyy W, Goel T, Vaidyanathan R, and Tucker PK. Surrogate-based analysis and optimization. Prog. Aerosp. Sci, 41(1):1–28, 2005. [Google Scholar]
  • [31].Stegun IA and Zucker R. Automatic computing methods for special functions. IV. Complex error function, Fresnel integrals, and other related functions. J. Res. Nat. Bur. Standards, 86(6):661–686, 1981. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • [32].Trefethen LN and Bau D III. Numerical Linear Algebra Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 1997. [Google Scholar]
  • [33].Wang S and Huang S. Evaluation of the numerical algorithms of the plasma dispersion function. J. Quant. Spectrosc. Radiat. Transfer, 2019. [Google Scholar]
  • [34].Weideman JAC. Computation of the complex error function. SIAM J. Numer. Anal, 31(5):1497–1518, 1994. [Google Scholar]
  • [35].Xu K and Jiang S. A bootstrap method for sum-of-poles approximations. J. Sci. Comput, 55(1):16–39, 2013. [Google Scholar]
  • [36].Zaghloul MR. Algorithm 985: Simple, efficient, and relatively accurate approximation for the evaluation of the Faddeeva function. ACM Trans. Math. Software, 44(2):22, 2017. [Google Scholar]
  • [37].Zaghloul MR and Ali AN. Algorithm 916: computing the Faddeeva and Voigt functions. ACM Trans. Math. Software, 38(2):15, 2011. [Google Scholar]
  • [38].Zahn CT. Absorption coefficients for thermal neutrons. Phys. Rev, 52:67–71, 1937. [Google Scholar]

RESOURCES