From: Erik L. <eri...@gm...> - 2025-07-08 21:21:19
|
Hi Ethan, In amos_airy.c, you write: * The cexint_() routine is also from the AMOS collection, but is not part * of the Bessel function subset and not included in libopenspecfun. * I could not find source for a version of the source that splits the * real and imaginary parts of the arguments as with the zxxxx.f Bessel * routines; this one accepts and returns a CMPLX argument rather than separate * real and imaginary parts. * D. E. Amos, ALGORITHM 683 A Portable FORTRAN Subroutine * for Exponential Integrals of a Complex Argument * ACM Trans. Math. Software 16:178-182 (1990) This confuses me for two reasons: - You invoke CEXINT as a double precision function, even though this Fortran function is single precision. - The algorithm 683 you quote DOES provide a separate double precision function, ZEXINT. Moreover, that function does exactly what you were looking for, namely taking and returning separate real and imaginary parts. I changed f_amos_cexint to use ZEXINT (just for my own edification) and it works properly. However, before submitting it, I wonder what am I missing? Thank you, Erik |