aa205a2821
* Weierstrass $\wp$: `weierp` * inverse Weierstrass $\wp$: `weierpinv` * derivative of Weierstrass $\wp$: `weierpprime` * Weierstrass zeta: `weierzeta` * Weierstrass sigma: `weiersigma` Also adds parameter conversion functions: * Weierstrass invariants $g_2, g_3$: `weierinvariants` * half-periods $\omega_1, \omega_2$: `weierhalfperiods` The idea for this PR was inspired by the `pyweierstrass` package by @stla / Stéphane Laurent: * https://pyweierstrass.readthedocs.io/en/latest/ * https://github.com/stla/pyweierstrass The code implementation in this PR is different to that in `pyweierstrass` although both packages derive from similar well known mathematical formulas. Differences between `pyweierstrass` and this `mpmath` implementation include but are not limited to: * function names adapted to `mpmath` conventions; * tau normalization: `tau` specifies the normalized period lattice `(1, tau)`, corresponding to half-periods `(1/2, tau/2)`; this differs from `pyweierstrass`, where `tau` denotes half-periods `(1, tau)`; * support for disambiguating inverse values of Weierstrass $\wp$ by optionally passing the corresponding derivative value; * internal refactoring of helper functions for integration with `mpmath`. Dedicated to Stéphane Laurent who opened the original PR to request this functionality in `mpmath` and whose `pyweierstrass` package provided great utility to the author of this PR in the years since. Co-authored-by: Stéphane Laurent <stla@users.noreply.github.com> Closes #612