Elliptic functions of complex argument

Does anyone know a good package where Elliptic functions are implemented for complex values of the argument? May be some C or Fortran package that can be easily called from Julia?

I know that there is the package Elliptic, however the elliptic functions there are defined only for real arguments.

1 Like

It’s not quite what you want but you can compute elliptic integrals in the complex plane:

https://github.com/JuliaApproximation/SingularIntegralEquations.jl/blob/master/examples/ellipticintegral.jl

Keen to hear about elliptic functions. DLMF suggests using theta functions:

https://dlmf.nist.gov/22.20

1 Like

It seems that there is an opened PR in SpecialFunctions which deals with this problem but for some obscure reason is not merged yet.

See ArbNumerics.jl

2 Likes

Interesting. The problem is that I need Jacobi elliptic functions, and the package exports only Weierstrass elliptic function. I know that you can express Jacobi elliptic functions in terms of Weierstrass function, however, I am not sure this is the most efficient way from the computational standpoint.

In general PRs don’t get merged when there are open review comments that haven’t been addressed…

4 Likes

Expanding on that: SpecialFunctions.jl gets a lot of half-baked PRs, and it’s a package with no specific “owner”, many people have merge permission but I don’t think anyone feels confident in merging a PR. Unless it’s :100: . And it’s not clear that it should be home to all special functions.

So a better thing to do is move that PR to its own package EllipticFunctions.jl

3 Likes

The history of the aforementioned PR is as follows: I needed the Jacobi elliptic functions for a project but couldn’t find a suitable Julia package, so I decided to implement them myself and was hoping to make my code available to as wide an audience as possible by getting it into SpecialFunctions.jl. @simonbyrne then pointed out a number of issues in my code (thanks again for that, I learnt a lot!), and I believe all but the ones mentioned in this comment have been resolved. I’d be happy to give a hand resolving the remaining issues, but I no longer need these elliptic functions myself and so I had a hard time finding a justification for spending more time on this. Also, some of the remaining issues require community consensus.

I’m indifferent whether the final code ends up in SpecialFunctions.jl or a separate package, but I do hope that whatever solution we pick can merge the various Julia implementations of elliptic functions into a single package. For reference, these are the three codes that I am aware of:

6 Likes

For people finding this topic, there is now GitHub - stla/EllipticFunctions.jl: Jacobi theta functions which has extensive coverage of Jacobi elliptic functions and related functions and which allows complex arguments. It is not (yet) in the general registry.

4 Likes