[ANN] weierstrass-functions


I’ve just released weierstrass-functions on Hackage. This library allows to evaluate some special functions:

  • Weierstrass p function and its inverse
  • Weierstrass sigma function
  • Weierstrass zeta function
  • Eisenstein series E2, E4, E6
  • Dedekind eta function
  • Klein j function and its inverse
  • Modular lambda function
  • Modular discriminant function

Congrats! Looks cool, but weierstrass functions are unknown to me.

Have you ideas to how this library could be used? It’d be cool to try something out.
They sound like the kind of function that can be used to describe some obscure game mechanic :slight_smile:

No idea ^^

I used these functions to make beautiful pictures. But for a true life application, I don’t know.


Does it include Jacobi elliptic functions?

@ziggurism The Jacobi elliptic functions are implemented in my other library jacobi-elliptic.

elliptic functions are used to do things like compute arc length of a ellipse. maybe useful for analyzing (idealized) celestial orbits?

The arc length of an ellipse is computed with the help of an elliptic integral => use my other library elliptic-integrals.

wow, three different libraries for elliptic functions?

Yes, and also jacobi-theta for the Jacobi theta functions (which is a dependency of jacobi-elliptic and weierstrass-functions).


Like in the obits package? (=

@stla The packages are missing type links in many places. Apparently you Internal-ized too much without a matching re-export.

@wiz Thanks. You mean the Cplx type? That’s the only type I define, I think.

In this package, yes. But there’s the same thing with the other packages too. You can open your packages on Hackage and check if every type is clickable. If it isn’t - you forgot to publish it.

Yes I saw that. I started to remove this type, this is just an alias of Complex Double. Thanks.

1 Like

Btw, is it even required to use Double? The Float precision can’t give a correct result?

(Asking since I’m working with GPU rendering and it is fp32 all around. I try to avoid conversions when it isn’t required to save on allocations and computation.)

With the double precision, the true value (according to Wolfram) is attained up to 10—14 digits. With the float precision this would be less.