rgsl/
jacobian_elliptic.rs

1//
2// A rust binding for the GSL library by Guillaume Gomez (guillaume1.gomez@gmail.com)
3//
4
5/*!
6The Jacobian Elliptic functions are defined in Abramowitz & Stegun, Chapter 16.
7!*/
8
9use crate::Value;
10
11/// This function computes the Jacobian elliptic functions sn(u|m), cn(u|m), dn(u|m) by descending
12/// Landen transformations.
13///
14/// Returns `(sn, cn, dn)`.
15#[doc(alias = "gsl_sf_elljac_e")]
16pub fn elljac_e(u: f64, m: f64) -> Result<(f64, f64, f64), Value> {
17    let mut sn = 0.;
18    let mut cn = 0.;
19    let mut dn = 0.;
20    let ret = unsafe { crate::sys::gsl_sf_elljac_e(u, m, &mut sn, &mut cn, &mut dn) };
21    result_handler!(ret, (sn, cn, dn))
22}