# Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world.

### Overvew of the Jacobi Elliptic Functions

There are twelve Jacobi Elliptic functions, of which the three copolar functions sn, cn and dn are the most important as the other nine can be computed from these three [2] [3] [4].

These functions each take two arguments: a parameter, and a variable as described below.

Like all elliptic functions these can be parameterised in a number of ways:

• In terms of a parameter m.
• In terms of the elliptic modulus k where m = k2.
• In terms of the modular angle α, where m = sin2α.

In our implementation, these functions all take the elliptic modulus k as the parameter.

In addition the variable u is sometimes expressed as an amplitude φ, in our implementation we always use u.

Finally note that our functions all take the elliptic modulus as the first argument - this is for alignment with the Elliptic Integrals.

There are twenve functions for computing the twelve individual Jacobi elliptic functions: jacobi_cd, jacobi_cn, jacobi_cs, jacobi_dc, jacobi_dn, jacobi_ds, jacobi_nc, jacobi_nd, jacobi_ns, jacobi_sc, jacobi_sd and jacobi_sn.

They are all called as for example:

```jacobi_cs(k, u);
```

Note however that these individual functions are all really thin wrappers around the function jacobi_elliptic which calculates the three copolar functions sn, cn and dn in a single function call. Thus if you need more than one of these functions for a given set of arguments, it's most efficient to use jacobi_elliptic.

 Copyright © 2006-2010, 2012-2014, 2017 Nikhar Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker and Xiaogang Zhang Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)