Skip to content

JacobiNS ​

The Jacobi elliptic function ns⁡(u,m)=1/sn⁡(u,m)\operatorname{ns}(u,m) = 1/\operatorname{sn}(u,m) (Glaisher's notation), in Wolfram/mpmath's m=k2m=k^2 convention.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageJacobiNS!
JacobiNS(u, m)the Jacobi elliptic function ns, argument u, parameter m.
SageMathjacobi_ns(u, m)mpmathellipfun('ns', u, m=m)Juliaenumeratio_jacobi(:ns, u, m)
Typed signatures
TypePackageApplies
(number, number) -> numberanalyticalways

Domain: Special functions

Details
  • m=k2m = k^2, the same convention EllipticK / EllipticF use.
  • ns⁡(u,m)=1/sn⁡(u,m)\operatorname{ns}(u,m) = 1/\operatorname{sn}(u,m) — JacobiSN shares this head's numeric kernel and exact-value coverage (m outside [0,1] via the reciprocal- and imaginary-modulus transformations, complex u, a genuinely complex m declined).
  • ns has a pole at u = 0 (sn(0,m) = 0, for any m).
  • Numeric only — a symbolic argument stays unevaluated; a floating-point argument (or N()) evaluates directly.
  • N(x, d) past a double's digits runs the same AGM in BigDecimal for real uu and 0<m<10 < m < 1; complex uu and other mm stay unevaluated there rather than print a double's digits as more.
  • Derivatives of every order in uu and in mm are closed forms in sn, cn, dn and the Jacobi epsilon E(u,m)=Z(u,m)+u E(m)/K(m)\mathcal{E}(u,m)=Z(u,m)+u\,E(m)/K(m) (DLMF 22.13): D, Series in uu at 00 or at a symbolic point, and Series in mm at m=0m=0 all give concrete coefficients. The mm-derivatives evaluate numerically for real uu and mm between 0 and 1. At the pole u=0u=0 the series in uu is the Laurent series, its coefficients polynomials in mm.

Plot

Examples

1 more kept as data, checked against the oracles
Basic #

A floating-point argument evaluates directly to a decimal

live ↗
InN(JacobiNS(0.3,0.5))N(\mathrm{JacobiNS}(0.3, 0.5))Out3.408 168 381 792 332 33.408\,168\,381\,792\,332\,3

Known value · mpmath 1.3.0 ellipfun

Scope #

m less than 0, via the imaginary-modulus transformation

live ↗
InN(JacobiNS(0.3,−2))N(\mathrm{JacobiNS}(0.3, -2))Out3.289 220 683 752 634 83.289\,220\,683\,752\,634\,8

The derivative in the parameter m, in closed form through the Jacobi zeta

live ↗
IndJacobiNS(u,m)dm\frac{\mathrm{d}\mathrm{JacobiNS}(u, m)}{\mathrm{d}m}Out(uEllipticE(m)EllipticK(m)+JacobiZN(u,m))JacobiDN(u,m)JacobiCN(u,m)2m×(1−m)JacobiSN(u,m)2−uJacobiDN(u,m)JacobiCN(u,m)2mJacobiSN(u,m)2−JacobiCN(u,m)22(1−m)JacobiSN(u,m)\frac{(\frac{u\mathrm{EllipticE}(m)}{\mathrm{EllipticK}(m)}+\mathrm{JacobiZN}(u, m))\mathrm{JacobiDN}(u, m)\mathrm{JacobiCN}(u, m)}{2m×(1-m)\mathrm{JacobiSN}(u, m)^2}-\frac{u\mathrm{JacobiDN}(u, m)\mathrm{JacobiCN}(u, m)}{2m\mathrm{JacobiSN}(u, m)^2}-\frac{\mathrm{JacobiCN}(u, m)^2}{2(1-m)\mathrm{JacobiSN}(u, m)}

The Laurent series at the pole u = 0, its coefficients polynomials in m

live ↗
InSeries⁡(JacobiNS(u,m),u,0,4)\operatorname{Series}(\mathrm{JacobiNS}(u, m), u, 0, 4)Out1u+u×(m6+16)+(7m2360−11m180+7360)u3+O(u5)\frac{1}{u}+u×(\frac{m}{6}+\frac{1}{6})+(\frac{7m^2}{360}-\frac{11m}{180}+\frac{7}{360})u^3+O\left(u^5\right)

The series in the parameter m at m = 0, its coefficients trigonometric in z

live ↗
InSeries⁡(JacobiNS(z,m),m,0,2)\operatorname{Series}(\mathrm{JacobiNS}(z, m), m, 0, 2)Out1sin⁡(z)+m×(4zcos⁡(z)−sin⁡(z)−sin⁡(3z))16sin⁡(z)2+(24z2+8cos⁡(2z)z2−4zsin⁡(2z)+4zsin⁡(4z)+5cos⁡(4z)−5)m2512sin⁡(z)3+O(m3)\frac{1}{\sin(z)}+\frac{m×(4z\cos(z)-\sin(z)-\sin(3z))}{16\sin(z)^2}+\frac{(24z^2+8\cos(2z)z^2-4z\sin(2z)+4z\sin(4z)+5\cos(4z)-5)m^2}{512\sin(z)^3}+O\left(m^3\right)
Properties #

u = 0 is a pole, for any m

live ↗
InJacobiNS(0,m)\mathrm{JacobiNS}(0, m)Out∞~\tilde∞
live ↗
InN(JacobiNS(21/24i,−1))N(\mathrm{JacobiNS}(\frac{2^{1/2}}{4}i, -1))Out−2.832 847 693 433 667i-2.832\,847\,693\,433\,667i

Known value · Wolfram MathematicalFunctionData, JacobiNS, Landen's transformation

live ↗
InN(JacobiNS(12(1+21/22),(1−21/2/2)2(1+21/2/2)2))N(\mathrm{JacobiNS}(\frac{1}{2}(1+\frac{2^{1/2}}{2}), \frac{(1-2^{1/2}/2)^2}{(1+2^{1/2}/2)^2}))Out1.329 988 245 674 117 91.329\,988\,245\,674\,117\,9

Known value · Wolfram MathematicalFunctionData, JacobiNS, Gauss' transformation

live ↗
InN(JacobiNS(2i,−1))N(\mathrm{JacobiNS}(\sqrt{2}i, -1))Out−1.010 704 144 622 302 2i-1.010\,704\,144\,622\,302\,2i

Known value · Wolfram MathematicalFunctionData, JacobiNS, Landen's transformation

live ↗
InN(JacobiNS(2(1+22),(1−21/2/2)2(1+21/2/2)2))N(\mathrm{JacobiNS}(2(1+\frac{\sqrt{2}}{2}), \frac{(1-2^{1/2}/2)^2}{(1+2^{1/2}/2)^2}))Out−4.057 304 661 287 208-4.057\,304\,661\,287\,208

Known value · Wolfram MathematicalFunctionData, JacobiNS, Gauss' transformation

Possible issues #

Symbolic arguments are left unevaluated rather than guessed at

live ↗
InJacobiNS(u,m)\mathrm{JacobiNS}(u, m)OutJacobiNS(u,m)\mathrm{JacobiNS}(u, m)

Same gap as JacobiCD (the true value is tracked there, not repeated per head): u this far out has no argument reduction against its real period, so the guard in exceedsDoublePrecision's sibling (periodsExceedDouble, ce-patches/support/precise.ts) declines rather than return a wrong value.

live ↗
InN(JacobiNS(1016,23))N(\mathrm{JacobiNS}(10^{16}, \frac{2}{3}))OutJacobiNS(10 000 000 000 000 000.0,0.666 666 666 666 666 666 667)\mathrm{JacobiNS}(10\,000\,000\,000\,000\,000.0, 0.666\,666\,666\,666\,666\,666\,667)
About
Examples13
Checked againstWolfram Language 12 agree1 differSageMath 8 agree2 differ2 unevaluated1 errormpmath 7 agree1 unevaluatedJulia 7 agree1 unevaluated
CrosswalkWolfram LanguageSageMathmpmathJulia

Implementation

mappedmpmathpackages/oracle/src/mappings.ts
mappedsagepackages/oracle/src/mappings.ts
mappedjuliapackages/oracle/src/mappings.ts

See also: JacobiSN, JacobiSC, JacobiSD