Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates > by-pkgid > f3eb4c16ba6256fe5a10e54bf649f01f > files > 1230

python-mpmath-doc-0.17-1.fc13.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Elliptic functions &mdash; mpmath v0.17 documentation</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '0.17',
        COLLAPSE_MODINDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <link rel="top" title="mpmath v0.17 documentation" href="../index.html" />
    <link rel="up" title="Mathematical functions" href="index.html" />
    <link rel="next" title="Zeta functions, L-series and polylogarithms" href="zeta.html" />
    <link rel="prev" title="Hypergeometric functions" href="hypergeometric.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../modindex.html" title="Global Module Index"
             accesskey="M">modules</a> |</li>
        <li class="right" >
          <a href="zeta.html" title="Zeta functions, L-series and polylogarithms"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="hypergeometric.html" title="Hypergeometric functions"
             accesskey="P">previous</a> |</li>
        <li><a href="../index.html">mpmath v0.17 documentation</a> &raquo;</li>
          <li><a href="index.html" accesskey="U">Mathematical functions</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="module-mpmath.functions.elliptic">
<h1>Elliptic functions<a class="headerlink" href="#module-mpmath.functions.elliptic" title="Permalink to this headline">¶</a></h1>
<p>Elliptic functions historically comprise the elliptic integrals
and their inverses, and originate from the problem of computing the
arc length of an ellipse. From a more modern point of view,
an elliptic function is defined as a doubly periodic function, i.e.
a function which satisfies</p>
<div class="math">
<p><img src="../_images/math/533f8172f1693cd09ab3475f09392497da271a9a.png" alt="f(z + 2 \omega_1) = f(z + 2 \omega_2) = f(z)" /></p>
</div><p>for some half-periods <img class="math" src="../_images/math/178ef0c25cb393195368ae91e70341404562e677.png" alt="\omega_1, \omega_2"/> with
<img class="math" src="../_images/math/a84d1ba8341d6e90f45b25504738e0578a4990e6.png" alt="\mathrm{Im}[\omega_1 / \omega_2] &gt; 0"/>. The canonical elliptic
functions are the Jacobi elliptic functions. More broadly, this section
includes  quasi-doubly periodic functions (such as the Jacobi theta
functions) and other functions useful in the study of elliptic functions.</p>
<p>Many different conventions for the arguments of
elliptic functions are in use. It is even standard to use
different parameterizations for different functions in the same
text or software (and mpmath is no exception).
The usual parameters are the elliptic nome <img class="math" src="../_images/math/0615acc3725de21025457e7d6f7694dab8e2f758.png" alt="q"/>, which usually
must satisfy <img class="math" src="../_images/math/1ac3bec0deb1b3d8164b2938edd7bb85d132b005.png" alt="|q| &lt; 1"/>; the elliptic parameter <img class="math" src="../_images/math/f5047d1e0cbb50ec208923a22cd517c55100fa7b.png" alt="m"/> (an arbitrary
complex number); the elliptic modulus <img class="math" src="../_images/math/8c325612684d41304b9751c175df7bcc0f61f64f.png" alt="k"/> (an arbitrary complex
number); and the half-period ratio <img class="math" src="../_images/math/1dc1c0119a604b91be9142370dc3159b6a9bbcb9.png" alt="\tau"/>, which usually must
satisfy <img class="math" src="../_images/math/a7ef44075cbdf48282414af0ac84fababad983c7.png" alt="\mathrm{Im}[\tau] &gt; 0"/>.
These quantities can be expressed in terms of each other
using the following relations:</p>
<div class="math">
<p><img src="../_images/math/96994da31f5c27b534e8ef8ace6e04575cc929b6.png" alt="m = k^2" /></p>
</div><div class="math">
<p><img src="../_images/math/e528643f8b8c0916afe47632f7d93db8c3bdcbd4.png" alt="\tau = -i \frac{K(1-m)}{K(m)}" /></p>
</div><div class="math">
<p><img src="../_images/math/c2ab4584cc120f5e9e012b0390f291f7513bebc7.png" alt="q = e^{i \pi \tau}" /></p>
</div><div class="math">
<p><img src="../_images/math/96d65506a243f533894b3f53e6f1022dccb1d278.png" alt="k = \frac{\vartheta_2^4(q)}{\vartheta_3^4(q)}" /></p>
</div><p>In addition, an alternative definition is used for the nome in
number theory, which we here denote by q-bar:</p>
<div class="math">
<p><img src="../_images/math/f3353b80b5e43440a63a9ad9dd0bdc470851e693.png" alt="\bar{q} = q^2 = e^{2 i \pi \tau}" /></p>
</div><p>For convenience, mpmath provides functions to convert
between the various parameters (<a title="mpmath.qfrom" class="reference internal" href="#mpmath.qfrom"><tt class="xref docutils literal"><span class="pre">qfrom()</span></tt></a>, <a title="mpmath.mfrom" class="reference internal" href="#mpmath.mfrom"><tt class="xref docutils literal"><span class="pre">mfrom()</span></tt></a>,
<a title="mpmath.kfrom" class="reference internal" href="#mpmath.kfrom"><tt class="xref docutils literal"><span class="pre">kfrom()</span></tt></a>, <a title="mpmath.taufrom" class="reference internal" href="#mpmath.taufrom"><tt class="xref docutils literal"><span class="pre">taufrom()</span></tt></a>, <a title="mpmath.qbarfrom" class="reference internal" href="#mpmath.qbarfrom"><tt class="xref docutils literal"><span class="pre">qbarfrom()</span></tt></a>).</p>
<p><strong>References</strong></p>
<ol class="arabic simple">
<li><a class="reference external" href="../references.html#abramowitzstegun">[AbramowitzStegun]</a></li>
<li><a class="reference external" href="../references.html#whittakerwatson">[WhittakerWatson]</a></li>
</ol>
<div class="section" id="elliptic-arguments">
<h2>Elliptic arguments<a class="headerlink" href="#elliptic-arguments" title="Permalink to this headline">¶</a></h2>
<div class="section" id="qfrom">
<h3><tt class="xref docutils literal"><span class="pre">qfrom()</span></tt><a class="headerlink" href="#qfrom" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.qfrom">
<tt class="descclassname">mpmath.</tt><tt class="descname">qfrom</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.qfrom" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the elliptic nome <img class="math" src="../_images/math/0615acc3725de21025457e7d6f7694dab8e2f758.png" alt="q"/>, given any of <img class="math" src="../_images/math/a91b73688d1dfb846a77bd40b5563b4eb22f8947.png" alt="q, m, k, \tau, \bar{q}"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">qfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="mf">0.25</span><span class="p">)</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">qfrom</span><span class="p">(</span><span class="n">m</span><span class="o">=</span><span class="n">mfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">qfrom</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="n">kfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">qfrom</span><span class="p">(</span><span class="n">tau</span><span class="o">=</span><span class="n">taufrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">(0.25 + 0.0j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">qfrom</span><span class="p">(</span><span class="n">qbar</span><span class="o">=</span><span class="n">qbarfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.25</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="qbarfrom">
<h3><tt class="xref docutils literal"><span class="pre">qbarfrom()</span></tt><a class="headerlink" href="#qbarfrom" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.qbarfrom">
<tt class="descclassname">mpmath.</tt><tt class="descname">qbarfrom</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.qbarfrom" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the number-theoretic nome <img class="math" src="../_images/math/3a42c26147ee1dc5cfa07f69a86e903ea55cb1c6.png" alt="\bar q"/>, given any of
<img class="math" src="../_images/math/a91b73688d1dfb846a77bd40b5563b4eb22f8947.png" alt="q, m, k, \tau, \bar{q}"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">qbarfrom</span><span class="p">(</span><span class="n">qbar</span><span class="o">=</span><span class="mf">0.25</span><span class="p">)</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">qbarfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="n">qfrom</span><span class="p">(</span><span class="n">qbar</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">qbarfrom</span><span class="p">(</span><span class="n">m</span><span class="o">=</span><span class="n">extraprec</span><span class="p">(</span><span class="mi">20</span><span class="p">)(</span><span class="n">mfrom</span><span class="p">)(</span><span class="n">qbar</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>  <span class="c"># ill-conditioned</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">qbarfrom</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="n">extraprec</span><span class="p">(</span><span class="mi">20</span><span class="p">)(</span><span class="n">kfrom</span><span class="p">)(</span><span class="n">qbar</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>  <span class="c"># ill-conditioned</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">qbarfrom</span><span class="p">(</span><span class="n">tau</span><span class="o">=</span><span class="n">taufrom</span><span class="p">(</span><span class="n">qbar</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">(0.25 + 0.0j)</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="mfrom">
<h3><tt class="xref docutils literal"><span class="pre">mfrom()</span></tt><a class="headerlink" href="#mfrom" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.mfrom">
<tt class="descclassname">mpmath.</tt><tt class="descname">mfrom</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.mfrom" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the elliptic parameter <img class="math" src="../_images/math/f5047d1e0cbb50ec208923a22cd517c55100fa7b.png" alt="m"/>, given any of
<img class="math" src="../_images/math/a91b73688d1dfb846a77bd40b5563b4eb22f8947.png" alt="q, m, k, \tau, \bar{q}"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mfrom</span><span class="p">(</span><span class="n">m</span><span class="o">=</span><span class="mf">0.25</span><span class="p">)</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="n">qfrom</span><span class="p">(</span><span class="n">m</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mfrom</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="n">kfrom</span><span class="p">(</span><span class="n">m</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mfrom</span><span class="p">(</span><span class="n">tau</span><span class="o">=</span><span class="n">taufrom</span><span class="p">(</span><span class="n">m</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">(0.25 + 0.0j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mfrom</span><span class="p">(</span><span class="n">qbar</span><span class="o">=</span><span class="n">qbarfrom</span><span class="p">(</span><span class="n">m</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.25</span>
</pre></div>
</div>
<p>As <img class="math" src="../_images/math/9db120b46ade50f2e63c13d506a8ec951e8c6f92.png" alt="q \to 1"/> and <img class="math" src="../_images/math/1f896ba0411e32a5403f664679bc7b6c717b1854.png" alt="q \to -1"/>, <img class="math" src="../_images/math/f5047d1e0cbb50ec208923a22cd517c55100fa7b.png" alt="m"/> rapidly approaches
<img class="math" src="../_images/math/dce34f4dfb2406144304ad0d6106c5382ddd1446.png" alt="1"/> and <img class="math" src="../_images/math/afac538740054d4786c170ef0123850adea5cdf9.png" alt="-\infty"/> respectively:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">mfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="mf">0.75</span><span class="p">)</span>
<span class="go">0.9999999999999798332943533</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=-</span><span class="mf">0.75</span><span class="p">)</span>
<span class="go">-49586681013729.32611558353</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>
<span class="go">-inf</span>
</pre></div>
</div>
<p>The inverse nome as a function of <img class="math" src="../_images/math/0615acc3725de21025457e7d6f7694dab8e2f758.png" alt="q"/> has an integer
Taylor series expansion:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">taylor</span><span class="p">(</span><span class="k">lambda</span> <span class="n">q</span><span class="p">:</span> <span class="n">mfrom</span><span class="p">(</span><span class="n">q</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
<span class="go">[0.0, 16.0, -128.0, 704.0, -3072.0, 11488.0, -38400.0, 117632.0]</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="kfrom">
<h3><tt class="xref docutils literal"><span class="pre">kfrom()</span></tt><a class="headerlink" href="#kfrom" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.kfrom">
<tt class="descclassname">mpmath.</tt><tt class="descname">kfrom</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.kfrom" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the elliptic modulus <img class="math" src="../_images/math/8c325612684d41304b9751c175df7bcc0f61f64f.png" alt="k"/>, given any of
<img class="math" src="../_images/math/a91b73688d1dfb846a77bd40b5563b4eb22f8947.png" alt="q, m, k, \tau, \bar{q}"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kfrom</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="mf">0.25</span><span class="p">)</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kfrom</span><span class="p">(</span><span class="n">m</span><span class="o">=</span><span class="n">mfrom</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="n">qfrom</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kfrom</span><span class="p">(</span><span class="n">tau</span><span class="o">=</span><span class="n">taufrom</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">(0.25 + 0.0j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kfrom</span><span class="p">(</span><span class="n">qbar</span><span class="o">=</span><span class="n">qbarfrom</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.25</span>
</pre></div>
</div>
<p>As <img class="math" src="../_images/math/9db120b46ade50f2e63c13d506a8ec951e8c6f92.png" alt="q \to 1"/> and <img class="math" src="../_images/math/1f896ba0411e32a5403f664679bc7b6c717b1854.png" alt="q \to -1"/>, <img class="math" src="../_images/math/8c325612684d41304b9751c175df7bcc0f61f64f.png" alt="k"/> rapidly approaches
<img class="math" src="../_images/math/dce34f4dfb2406144304ad0d6106c5382ddd1446.png" alt="1"/> and <img class="math" src="../_images/math/e357ce6be647b77d5509d0e90837fef3e945cd8d.png" alt="i \infty"/> respectively:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">kfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="mf">0.75</span><span class="p">)</span>
<span class="go">0.9999999999999899166471767</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=-</span><span class="mf">0.75</span><span class="p">)</span>
<span class="go">(0.0 + 7041781.096692038332790615j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kfrom</span><span class="p">(</span><span class="n">q</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>
<span class="go">(0.0 + +infj)</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="taufrom">
<h3><tt class="xref docutils literal"><span class="pre">taufrom()</span></tt><a class="headerlink" href="#taufrom" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.taufrom">
<tt class="descclassname">mpmath.</tt><tt class="descname">taufrom</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.taufrom" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the elliptic half-period ratio <img class="math" src="../_images/math/1dc1c0119a604b91be9142370dc3159b6a9bbcb9.png" alt="\tau"/>, given any of
<img class="math" src="../_images/math/a91b73688d1dfb846a77bd40b5563b4eb22f8947.png" alt="q, m, k, \tau, \bar{q}"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">taufrom</span><span class="p">(</span><span class="n">tau</span><span class="o">=</span><span class="mf">0.5</span><span class="n">j</span><span class="p">)</span>
<span class="go">(0.0 + 0.5j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">taufrom</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="n">qfrom</span><span class="p">(</span><span class="n">tau</span><span class="o">=</span><span class="mf">0.5</span><span class="n">j</span><span class="p">))</span>
<span class="go">(0.0 + 0.5j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">taufrom</span><span class="p">(</span><span class="n">m</span><span class="o">=</span><span class="n">mfrom</span><span class="p">(</span><span class="n">tau</span><span class="o">=</span><span class="mf">0.5</span><span class="n">j</span><span class="p">))</span>
<span class="go">(0.0 + 0.5j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">taufrom</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="n">kfrom</span><span class="p">(</span><span class="n">tau</span><span class="o">=</span><span class="mf">0.5</span><span class="n">j</span><span class="p">))</span>
<span class="go">(0.0 + 0.5j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">taufrom</span><span class="p">(</span><span class="n">qbar</span><span class="o">=</span><span class="n">qbarfrom</span><span class="p">(</span><span class="n">tau</span><span class="o">=</span><span class="mf">0.5</span><span class="n">j</span><span class="p">))</span>
<span class="go">(0.0 + 0.5j)</span>
</pre></div>
</div>
</dd></dl>

</div>
</div>
<div class="section" id="legendre-elliptic-integrals">
<h2>Legendre elliptic integrals<a class="headerlink" href="#legendre-elliptic-integrals" title="Permalink to this headline">¶</a></h2>
<div class="section" id="ellipk">
<h3><tt class="xref docutils literal"><span class="pre">ellipk()</span></tt><a class="headerlink" href="#ellipk" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.ellipk">
<tt class="descclassname">mpmath.</tt><tt class="descname">ellipk</tt><big>(</big><em>m</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.ellipk" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the complete elliptic integral of the first kind,
<img class="math" src="../_images/math/1665d5b15ea171ee4ac16d99f646ade489216dfe.png" alt="K(m)"/>, defined by</p>
<div class="math">
<p><img src="../_images/math/24bc31755f6c275567377d790b11e8fb4bfe4280.png" alt="K(m) = \int_0^{\pi/2} \frac{dt}{\sqrt{1-m \sin^2 t}} \, = \,
\frac{\pi}{2} \,_2F_1\left(\frac{1}{2}, \frac{1}{2}, 1, m\right)." /></p>
</div><p>Note that the argument is the parameter <img class="math" src="../_images/math/cb19452d1ea001143cb433f0705278859f021e2a.png" alt="m = k^2"/>,
not the modulus <img class="math" src="../_images/math/8c325612684d41304b9751c175df7bcc0f61f64f.png" alt="k"/> which is sometimes used.</p>
<p><strong>Plots</strong></p>
<div class="highlight-python"><div class="highlight"><pre><span class="c"># Complete elliptic integrals K(m) and E(m)</span>
<span class="n">plot</span><span class="p">([</span><span class="n">ellipk</span><span class="p">,</span> <span class="n">ellipe</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">3</span><span class="p">],</span> <span class="n">points</span><span class="o">=</span><span class="mi">600</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/ellipk.png" src="../_images/ellipk.png" />
<p><strong>Examples</strong></p>
<p>Values and limits include:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipk</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="go">1.570796326794896619231322</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipk</span><span class="p">(</span><span class="n">inf</span><span class="p">)</span>
<span class="go">(0.0 + 0.0j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipk</span><span class="p">(</span><span class="o">-</span><span class="n">inf</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipk</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="go">+inf</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipk</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1.31102877714605990523242</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipk</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
<span class="go">(1.31102877714605990523242 - 1.31102877714605990523242j)</span>
</pre></div>
</div>
<p>Verifying the defining integral and hypergeometric
representation:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ellipk</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">1.85407467730137191843385</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">quad</span><span class="p">(</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="mf">0.5</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span><span class="o">**-</span><span class="mf">0.5</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="p">])</span>
<span class="go">1.85407467730137191843385</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="o">*</span><span class="n">hyp2f1</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">1.85407467730137191843385</span>
</pre></div>
</div>
<p>Evaluation is supported for arbitrary complex <img class="math" src="../_images/math/f5047d1e0cbb50ec208923a22cd517c55100fa7b.png" alt="m"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ellipk</span><span class="p">(</span><span class="mi">3</span><span class="o">+</span><span class="mi">4</span><span class="n">j</span><span class="p">)</span>
<span class="go">(0.9111955638049650086562171 + 0.6313342832413452438845091j)</span>
</pre></div>
</div>
<p>A definite integral:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">quad</span><span class="p">(</span><span class="n">ellipk</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
<span class="go">2.0</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="ellipf">
<h3><tt class="xref docutils literal"><span class="pre">ellipf()</span></tt><a class="headerlink" href="#ellipf" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.ellipf">
<tt class="descclassname">mpmath.</tt><tt class="descname">ellipf</tt><big>(</big><em>phi</em>, <em>m</em><big>)</big><a class="headerlink" href="#mpmath.ellipf" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the Legendre incomplete elliptic integral of the first kind</p>
<blockquote>
<div class="math">
<p><img src="../_images/math/cef2aab913d0702fd07e34a04636a5adab620c48.png" alt="F(\phi,m) = \int_0^{\phi} \frac{dt}{\sqrt{1-m \sin^2 t}}" /></p>
</div></blockquote>
<p>or equivalently</p>
<div class="math">
<p><img src="../_images/math/abeba8d557076548c92c2e82980cf043c786846e.png" alt="F(\phi,m) = \int_0^{\sin z}
\frac{dt}{\left(\sqrt{1-t^2}\right)\left(\sqrt{1-mt^2}\right)}." /></p>
</div><p>The function reduces to a complete elliptic integral of the first kind
(see <a title="mpmath.ellipk" class="reference internal" href="#mpmath.ellipk"><tt class="xref docutils literal"><span class="pre">ellipk()</span></tt></a>) when <img class="math" src="../_images/math/cb165bb419a3b9316db921e9f050a8a8905521a6.png" alt="\phi = \frac{\pi}{2}"/>; that is,</p>
<div class="math">
<p><img src="../_images/math/85e515410817bdd91c57e196c5853946db7c5e01.png" alt="F\left(\frac{\pi}{2}, m\right) = K(m)." /></p>
</div><p>In the defining integral, it is assumed that the principal branch
of the square root is taken and that the path of integration avoids
crossing any branch cuts. Outside <img class="math" src="../_images/math/5e349edb3ab0ea5c5c7adc0ccffb39ae650362b7.png" alt="-\pi/2 \le \Re(z) \le \pi/2"/>,
the function extends quasi-periodically as</p>
<div class="math">
<p><img src="../_images/math/2bfb34eb927e461fde7be479fe854774d5ebe367.png" alt="F(\phi + n \pi, m) = 2 n K(m) + F(\phi,m), n \in \mathbb{Z}." /></p>
</div><p><strong>Plots</strong></p>
<div class="highlight-python"><div class="highlight"><pre><span class="c"># Elliptic integral F(z,m) for some different m</span>
<span class="n">f1</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellipf</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="n">f2</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellipf</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="o">-</span><span class="mf">0.5</span><span class="p">)</span>
<span class="n">f3</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellipf</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="n">f4</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellipf</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="mf">0.5</span><span class="p">)</span>
<span class="n">f5</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellipf</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="n">plot</span><span class="p">([</span><span class="n">f1</span><span class="p">,</span><span class="n">f2</span><span class="p">,</span><span class="n">f3</span><span class="p">,</span><span class="n">f4</span><span class="p">,</span><span class="n">f5</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">pi</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">])</span>
</pre></div>
</div>
<img alt="../_images/ellipf.png" src="../_images/ellipf.png" />
<p><strong>Examples</strong></p>
<p>Basic values and limits:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span> <span class="n">ellipf</span><span class="p">(</span><span class="mi">2</span><span class="o">+</span><span class="mi">3</span><span class="n">j</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="go">1.0</span>
<span class="go">(2.0 + 3.0j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span> <span class="n">log</span><span class="p">(</span><span class="n">sec</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">tan</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span>
<span class="go">1.226191170883517070813061</span>
<span class="go">1.226191170883517070813061</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.5</span><span class="p">);</span> <span class="n">ellipk</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">1.415737208425956198892166</span>
<span class="go">1.415737208425956198892166</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="o">+</span><span class="n">eps</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="n">ellipf</span><span class="p">(</span><span class="o">-</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="n">eps</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="go">+inf</span>
<span class="go">+inf</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="mf">1.5</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="go">3.340677542798311003320813</span>
</pre></div>
</div>
<p>Comparing with numerical integration:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">z</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">1.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="n">m</span><span class="p">)</span>
<span class="go">0.5287219202206327872978255</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">quad</span><span class="p">(</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">m</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">),</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">z</span><span class="p">])</span>
<span class="go">0.5287219202206327872978255</span>
</pre></div>
</div>
<p>The arguments may be complex numbers:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="mi">3</span><span class="n">j</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">)</span>
<span class="go">(0.0 + 1.713602407841590234804143j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="mi">3</span><span class="o">+</span><span class="mi">4</span><span class="n">j</span><span class="p">,</span> <span class="mi">5</span><span class="o">-</span><span class="mi">6</span><span class="n">j</span><span class="p">)</span>
<span class="go">(1.269131241950351323305741 - 0.3561052815014558335412538j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="mi">2</span><span class="o">+</span><span class="mi">3</span><span class="n">j</span><span class="p">,</span> <span class="mf">1.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">k</span> <span class="o">=</span> <span class="mi">1011</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="n">z</span><span class="o">+</span><span class="n">pi</span><span class="o">*</span><span class="n">k</span><span class="p">,</span><span class="n">m</span><span class="p">);</span> <span class="n">ellipf</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="n">m</span><span class="p">)</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">k</span><span class="o">*</span><span class="n">ellipk</span><span class="p">(</span><span class="n">m</span><span class="p">)</span>
<span class="go">(4086.184383622179764082821 - 3003.003538923749396546871j)</span>
<span class="go">(4086.184383622179764082821 - 3003.003538923749396546871j)</span>
</pre></div>
</div>
<p>For <img class="math" src="../_images/math/d951f09ece5acca30e8786115055165850cc0f02.png" alt="|\Re(z)| &lt; \pi/2"/>, the function can be expressed as a
hypergeometric series of two variables
(see <a title="mpmath.appellf1" class="reference external" href="hypergeometric.html#mpmath.appellf1"><tt class="xref docutils literal"><span class="pre">appellf1()</span></tt></a>):</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">z</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipf</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="n">m</span><span class="p">)</span>
<span class="go">0.5050887275786480788831083</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sin</span><span class="p">(</span><span class="n">z</span><span class="p">)</span><span class="o">*</span><span class="n">appellf1</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">1.5</span><span class="p">,</span><span class="n">sin</span><span class="p">(</span><span class="n">z</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span><span class="n">m</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">z</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="go">0.5050887275786480788831083</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="ellipe">
<h3><tt class="xref docutils literal"><span class="pre">ellipe()</span></tt><a class="headerlink" href="#ellipe" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.ellipe">
<tt class="descclassname">mpmath.</tt><tt class="descname">ellipe</tt><big>(</big><em>*args</em><big>)</big><a class="headerlink" href="#mpmath.ellipe" title="Permalink to this definition">¶</a></dt>
<dd><p>Called with a single argument <img class="math" src="../_images/math/f5047d1e0cbb50ec208923a22cd517c55100fa7b.png" alt="m"/>, evaluates the Legendre complete
elliptic integral of the second kind, <img class="math" src="../_images/math/024ee2b592ac8c90f9998bcd1d98bbc365e936f1.png" alt="E(m)"/>, defined by</p>
<blockquote>
<div class="math">
<p><img src="../_images/math/0b3b32a77ec2ef5a5c1b71055d08b8db33972115.png" alt="E(m) = \int_0^{\pi/2} \sqrt{1-m \sin^2 t} \, dt \,=\,
\frac{\pi}{2}
\,_2F_1\left(\frac{1}{2}, -\frac{1}{2}, 1, m\right)." /></p>
</div></blockquote>
<p>Called with two arguments <img class="math" src="../_images/math/24970ef86eae7331977f7170cd105c3eb0c11e2a.png" alt="\phi, m"/>, evaluates the incomplete elliptic
integral of the second kind</p>
<blockquote>
<div class="math">
<p><img src="../_images/math/8e2646cdd75c927199c18567d3d4cbf469601b19.png" alt="E(\phi,m) = \int_0^{\phi} \sqrt{1-m \sin^2 t} \, dt =
            \int_0^{\sin z}
            \frac{\sqrt{1-mt^2}}{\sqrt{1-t^2}} \, dt." /></p>
</div></blockquote>
<p>The incomplete integral reduces to a complete integral when
<img class="math" src="../_images/math/cb165bb419a3b9316db921e9f050a8a8905521a6.png" alt="\phi = \frac{\pi}{2}"/>; that is,</p>
<div class="math">
<p><img src="../_images/math/fbb189178c35f6810865686b2d9a083a220101ca.png" alt="E\left(\frac{\pi}{2}, m\right) = E(m)." /></p>
</div><p>In the defining integral, it is assumed that the principal branch
of the square root is taken and that the path of integration avoids
crossing any branch cuts. Outside <img class="math" src="../_images/math/5e349edb3ab0ea5c5c7adc0ccffb39ae650362b7.png" alt="-\pi/2 \le \Re(z) \le \pi/2"/>,
the function extends quasi-periodically as</p>
<div class="math">
<p><img src="../_images/math/fd752948f11202fec6df4c7d23796c46553b02c6.png" alt="E(\phi + n \pi, m) = 2 n E(m) + F(\phi,m), n \in \mathbb{Z}." /></p>
</div><p><strong>Plots</strong></p>
<div class="highlight-python"><div class="highlight"><pre><span class="c"># Elliptic integral E(z,m) for some different m</span>
<span class="n">f1</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellipe</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span>
<span class="n">f2</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellipe</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="n">f3</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellipe</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="n">f4</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellipe</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="n">f5</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellipe</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
<span class="n">plot</span><span class="p">([</span><span class="n">f1</span><span class="p">,</span><span class="n">f2</span><span class="p">,</span><span class="n">f3</span><span class="p">,</span><span class="n">f4</span><span class="p">,</span><span class="n">f5</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">pi</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">])</span>
</pre></div>
</div>
<img alt="../_images/ellipe.png" src="../_images/ellipe.png" />
<p><strong>Examples for the complete integral</strong></p>
<p>Basic values and limits:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="go">1.570796326794896619231322</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1.910098894513856008952381</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
<span class="go">(0.5990701173677961037199612 + 0.5990701173677961037199612j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="n">inf</span><span class="p">)</span>
<span class="go">(0.0 + +infj)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="o">-</span><span class="n">inf</span><span class="p">)</span>
<span class="go">+inf</span>
</pre></div>
</div>
<p>Verifying the defining integral and hypergeometric
representation:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">1.350643881047675502520175</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">quad</span><span class="p">(</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="n">sqrt</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="mf">0.5</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">),</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="p">])</span>
<span class="go">1.350643881047675502520175</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="o">*</span><span class="n">hyp2f1</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">1.350643881047675502520175</span>
</pre></div>
</div>
<p>Evaluation is supported for arbitrary complex <img class="math" src="../_images/math/f5047d1e0cbb50ec208923a22cd517c55100fa7b.png" alt="m"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mf">0.5</span><span class="o">+</span><span class="mf">0.25</span><span class="n">j</span><span class="p">)</span>
<span class="go">(1.360868682163129682716687 - 0.1238733442561786843557315j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">3</span><span class="o">+</span><span class="mi">4</span><span class="n">j</span><span class="p">)</span>
<span class="go">(1.499553520933346954333612 - 1.577879007912758274533309j)</span>
</pre></div>
</div>
<p>A definite integral:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">quad</span><span class="p">(</span><span class="n">ellipe</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span>
<span class="go">1.333333333333333333333333</span>
</pre></div>
</div>
<p><strong>Examples for the incomplete integral</strong></p>
<p>Basic values and limits:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="go">1.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">2</span><span class="o">+</span><span class="mi">3</span><span class="n">j</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="go">(2.0 + 3.0j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span> <span class="n">sin</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="go">0.8414709848078965066525023</span>
<span class="go">0.8414709848078965066525023</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.5</span><span class="p">);</span> <span class="n">ellipe</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">1.751771275694817862026502</span>
<span class="go">1.751771275694817862026502</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="n">ellipe</span><span class="p">(</span><span class="o">-</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="go">1.0</span>
<span class="go">-1.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mf">1.5</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="go">0.9974949866040544309417234</span>
</pre></div>
</div>
<p>Comparing with numerical integration:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">z</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">1.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="n">m</span><span class="p">)</span>
<span class="go">0.4740152182652628394264449</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">quad</span><span class="p">(</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="n">sqrt</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">m</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">),</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">z</span><span class="p">])</span>
<span class="go">0.4740152182652628394264449</span>
</pre></div>
</div>
<p>The arguments may be complex numbers:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">3</span><span class="n">j</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">)</span>
<span class="go">(0.0 + 7.551991234890371873502105j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="mi">3</span><span class="o">+</span><span class="mi">4</span><span class="n">j</span><span class="p">,</span> <span class="mi">5</span><span class="o">-</span><span class="mi">6</span><span class="n">j</span><span class="p">)</span>
<span class="go">(24.15299022574220502424466 + 75.2503670480325997418156j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">k</span> <span class="o">=</span> <span class="mi">35</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="mi">2</span><span class="o">+</span><span class="mi">3</span><span class="n">j</span><span class="p">,</span> <span class="mf">1.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="n">z</span><span class="o">+</span><span class="n">pi</span><span class="o">*</span><span class="n">k</span><span class="p">,</span><span class="n">m</span><span class="p">);</span> <span class="n">ellipe</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="n">m</span><span class="p">)</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">k</span><span class="o">*</span><span class="n">ellipe</span><span class="p">(</span><span class="n">m</span><span class="p">)</span>
<span class="go">(48.30138799412005235090766 + 17.47255216721987688224357j)</span>
<span class="go">(48.30138799412005235090766 + 17.47255216721987688224357j)</span>
</pre></div>
</div>
<p>For <img class="math" src="../_images/math/d951f09ece5acca30e8786115055165850cc0f02.png" alt="|\Re(z)| &lt; \pi/2"/>, the function can be expressed as a
hypergeometric series of two variables
(see <a title="mpmath.appellf1" class="reference external" href="hypergeometric.html#mpmath.appellf1"><tt class="xref docutils literal"><span class="pre">appellf1()</span></tt></a>):</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">z</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="n">m</span><span class="p">)</span>
<span class="go">0.4950017030164151928870375</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sin</span><span class="p">(</span><span class="n">z</span><span class="p">)</span><span class="o">*</span><span class="n">appellf1</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">1.5</span><span class="p">,</span><span class="n">sin</span><span class="p">(</span><span class="n">z</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span><span class="n">m</span><span class="o">*</span><span class="n">sin</span><span class="p">(</span><span class="n">z</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="go">0.4950017030164151928870376</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="ellippi">
<h3><tt class="xref docutils literal"><span class="pre">ellippi()</span></tt><a class="headerlink" href="#ellippi" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.ellippi">
<tt class="descclassname">mpmath.</tt><tt class="descname">ellippi</tt><big>(</big><em>*args</em><big>)</big><a class="headerlink" href="#mpmath.ellippi" title="Permalink to this definition">¶</a></dt>
<dd><p>Called with three arguments <img class="math" src="../_images/math/1274029e7bc6430bb707966ea48c1a2cb83f736d.png" alt="n, \phi, m"/>, evaluates the Legendre
incomplete elliptic integral of the third kind</p>
<div class="math">
<p><img src="../_images/math/d24e70e72e0de8ecdcfe5d91ecf5c0498588c88e.png" alt="\Pi(n; \phi, m) = \int_0^{\phi}
    \frac{dt}{(1-n \sin^2 t) \sqrt{1-m \sin^2 t}} =
    \int_0^{\sin \phi}
    \frac{dt}{(1-nt^2) \sqrt{1-t^2} \sqrt{1-mt^2}}." /></p>
</div><p>Called with two arguments <img class="math" src="../_images/math/c5be19edae9196ae8f8106e8133e0bf69ca909c8.png" alt="n, m"/>, evaluates the complete
elliptic integral of the third kind
<img class="math" src="../_images/math/0fa582bfee51ae4091ed0dafd79b14e274d0e51c.png" alt="\Pi(n,m) = \Pi(n; \frac{\pi}{2},m)"/>.</p>
<p>In the defining integral, it is assumed that the principal branch
of the square root is taken and that the path of integration avoids
crossing any branch cuts. Outside <img class="math" src="../_images/math/5e349edb3ab0ea5c5c7adc0ccffb39ae650362b7.png" alt="-\pi/2 \le \Re(z) \le \pi/2"/>,
the function extends quasi-periodically as</p>
<div class="math">
<p><img src="../_images/math/6b30c7c209cf75b4a0ef8fda32e896dc526bce29.png" alt="\Pi(n,\phi+k\pi,m) = 2k\Pi(n,m) + \Pi(n,\phi,m), k \in \mathbb{Z}." /></p>
</div><p><strong>Plots</strong></p>
<div class="highlight-python"><div class="highlight"><pre><span class="c"># Elliptic integral Pi(n,z,m) for some different n, m</span>
<span class="n">f1</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellippi</span><span class="p">(</span><span class="mf">0.9</span><span class="p">,</span><span class="n">z</span><span class="p">,</span><span class="mf">0.9</span><span class="p">)</span>
<span class="n">f2</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellippi</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span><span class="n">z</span><span class="p">,</span><span class="mf">0.5</span><span class="p">)</span>
<span class="n">f3</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellippi</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span><span class="n">z</span><span class="p">,</span><span class="o">-</span><span class="mf">0.9</span><span class="p">)</span>
<span class="n">f4</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellippi</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span><span class="n">z</span><span class="p">,</span><span class="mf">0.5</span><span class="p">)</span>
<span class="n">f5</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">ellippi</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">z</span><span class="p">,</span><span class="mf">0.5</span><span class="p">)</span>
<span class="n">plot</span><span class="p">([</span><span class="n">f1</span><span class="p">,</span><span class="n">f2</span><span class="p">,</span><span class="n">f3</span><span class="p">,</span><span class="n">f4</span><span class="p">,</span><span class="n">f5</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">pi</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">])</span>
</pre></div>
</div>
<img alt="../_images/ellippi.png" src="../_images/ellippi.png" />
<p><strong>Examples for the complete integral</strong></p>
<p>Some basic values and limits:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">5</span><span class="p">);</span> <span class="n">ellipk</span><span class="p">(</span><span class="o">-</span><span class="mi">5</span><span class="p">)</span>
<span class="go">0.9555039270640439337379334</span>
<span class="go">0.9555039270640439337379334</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="n">inf</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="n">inf</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="nb">abs</span><span class="p">(</span><span class="n">ellippi</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span>
<span class="go">+inf</span>
<span class="gp">&gt;&gt;&gt; </span><span class="nb">abs</span><span class="p">(</span><span class="n">ellippi</span><span class="p">(</span><span class="mf">0.25</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
<span class="go">+inf</span>
</pre></div>
</div>
<p>Evaluation in terms of simpler functions:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.25</span><span class="p">);</span> <span class="n">ellipe</span><span class="p">(</span><span class="mf">0.25</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="mf">0.25</span><span class="p">)</span>
<span class="go">1.956616279119236207279727</span>
<span class="go">1.956616279119236207279727</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span> <span class="n">pi</span><span class="o">/</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">sqrt</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">))</span>
<span class="go">(0.0 - 1.11072073453959156175397j)</span>
<span class="go">(0.0 - 1.11072073453959156175397j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span> <span class="n">pi</span><span class="o">/</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">4</span><span class="p">))</span>
<span class="go">0.7853981633974483096156609</span>
<span class="go">0.7853981633974483096156609</span>
</pre></div>
</div>
<p><strong>Examples for the incomplete integral</strong></p>
<p>Basic values and limits:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mf">0.25</span><span class="p">,</span><span class="o">-</span><span class="mf">0.5</span><span class="p">);</span> <span class="n">ellippi</span><span class="p">(</span><span class="mf">0.25</span><span class="p">,</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="o">-</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">1.622944760954741603710555</span>
<span class="go">1.622944760954741603710555</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="n">inf</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.5</span><span class="p">);</span> <span class="n">ellipf</span><span class="p">(</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">0.2513040086544925794134591</span>
<span class="go">0.2513040086544925794134591</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span> <span class="p">(</span><span class="n">log</span><span class="p">(</span><span class="n">sec</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">tan</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span><span class="o">+</span><span class="n">sec</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">tan</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span>
<span class="go">2.054332933256248668692452</span>
<span class="go">2.054332933256248668692452</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mf">0.25</span><span class="p">,</span> <span class="mi">53</span><span class="o">*</span><span class="n">pi</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="mf">0.75</span><span class="p">);</span> <span class="mi">53</span><span class="o">*</span><span class="n">ellippi</span><span class="p">(</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.75</span><span class="p">)</span>
<span class="go">135.240868757890840755058</span>
<span class="go">135.240868757890840755058</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span><span class="n">pi</span><span class="o">/</span><span class="mi">4</span><span class="p">,</span><span class="mf">0.5</span><span class="p">);</span> <span class="mi">2</span><span class="o">*</span><span class="n">ellipe</span><span class="p">(</span><span class="n">pi</span><span class="o">/</span><span class="mi">4</span><span class="p">,</span><span class="mf">0.5</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="o">/</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="go">0.9190227391656969903987269</span>
<span class="go">0.9190227391656969903987269</span>
</pre></div>
</div>
<p>Complex arguments are supported:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ellippi</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">5</span><span class="o">+</span><span class="mi">6</span><span class="n">j</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">pi</span><span class="p">,</span> <span class="o">-</span><span class="mi">7</span><span class="o">-</span><span class="mi">8</span><span class="n">j</span><span class="p">)</span>
<span class="go">(-0.3612856620076747660410167 + 0.5217735339984807829755815j)</span>
</pre></div>
</div>
</dd></dl>

</div>
</div>
<div class="section" id="carlson-symmetric-elliptic-integrals">
<h2>Carlson symmetric elliptic integrals<a class="headerlink" href="#carlson-symmetric-elliptic-integrals" title="Permalink to this headline">¶</a></h2>
<div class="section" id="elliprf">
<h3><tt class="xref docutils literal"><span class="pre">elliprf()</span></tt><a class="headerlink" href="#elliprf" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.elliprf">
<tt class="descclassname">mpmath.</tt><tt class="descname">elliprf</tt><big>(</big><em>x</em>, <em>y</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.elliprf" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the Carlson symmetric elliptic integral of the first kind</p>
<div class="math">
<p><img src="../_images/math/2ce2deb0b65b3721d5d863917d10ae5e3d7b3da7.png" alt="R_F(x,y,z) = \frac{1}{2}
    \int_0^{\infty} \frac{dt}{\sqrt{(t+x)(t+y)(t+z)}}" /></p>
</div><p>which is defined for <img class="math" src="../_images/math/9da3283d000a7986dc95e18e0375b529f5b1edac.png" alt="x,y,z \notin (-\infty,0)"/>, and with
at most one of <img class="math" src="../_images/math/accc80fdf164cef264f56a82b6f9f6add320fe05.png" alt="x,y,z"/> being zero.</p>
<p>For real <img class="math" src="../_images/math/a75ceb298935ae043127348517c77c774d8e3011.png" alt="x,y,z \ge 0"/>, the principal square root is taken in the integrand.
For complex <img class="math" src="../_images/math/accc80fdf164cef264f56a82b6f9f6add320fe05.png" alt="x,y,z"/>, the principal square root is taken as <img class="math" src="../_images/math/fa44caf5ce301cf881acb2a018523fb7333d2d73.png" alt="t \to \infty"/>
and as <img class="math" src="../_images/math/76a9c7714322b8986a689db59cce9238f69b5857.png" alt="t \to 0"/> non-principal branches are chosen as necessary so as to
make the integrand continuous.</p>
<p><strong>Examples</strong></p>
<p>Some basic values and limits:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span> <span class="n">pi</span><span class="o">/</span><span class="mi">2</span>
<span class="go">1.570796326794896619231322</span>
<span class="go">1.570796326794896619231322</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">inf</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span>
<span class="go">0.5</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span> <span class="n">elliprf</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span> <span class="n">elliprf</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span> <span class="n">elliprf</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="go">+inf</span>
<span class="go">+inf</span>
<span class="go">+inf</span>
<span class="go">+inf</span>
</pre></div>
</div>
<p>Representing complete elliptic integrals in terms of <img class="math" src="../_images/math/7499c85f329a4af02da5baec1094bbc1eab44e44.png" alt="R_F"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">m</span> <span class="o">=</span> <span class="n">mpf</span><span class="p">(</span><span class="mf">0.75</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipk</span><span class="p">(</span><span class="n">m</span><span class="p">);</span> <span class="n">elliprf</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="o">-</span><span class="n">m</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="go">2.156515647499643235438675</span>
<span class="go">2.156515647499643235438675</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipe</span><span class="p">(</span><span class="n">m</span><span class="p">);</span> <span class="n">elliprf</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="o">-</span><span class="n">m</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="n">m</span><span class="o">*</span><span class="n">elliprd</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="o">-</span><span class="n">m</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">3</span>
<span class="go">1.211056027568459524803563</span>
<span class="go">1.211056027568459524803563</span>
</pre></div>
</div>
<p>Some symmetries and argument transformations:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">);</span> <span class="n">elliprf</span><span class="p">(</span><span class="n">y</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">z</span><span class="p">);</span> <span class="n">elliprf</span><span class="p">(</span><span class="n">z</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">x</span><span class="p">)</span>
<span class="go">0.5840828416771517066928492</span>
<span class="go">0.5840828416771517066928492</span>
<span class="go">0.5840828416771517066928492</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">k</span> <span class="o">=</span> <span class="n">mpf</span><span class="p">(</span><span class="mi">100000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="n">k</span><span class="o">*</span><span class="n">x</span><span class="p">,</span><span class="n">k</span><span class="o">*</span><span class="n">y</span><span class="p">,</span><span class="n">k</span><span class="o">*</span><span class="n">z</span><span class="p">);</span> <span class="n">k</span><span class="o">**</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">)</span> <span class="o">*</span> <span class="n">elliprf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="go">0.001847032121923321253219284</span>
<span class="go">0.001847032121923321253219284</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">l</span> <span class="o">=</span> <span class="n">sqrt</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="n">y</span><span class="p">)</span> <span class="o">+</span> <span class="n">sqrt</span><span class="p">(</span><span class="n">y</span><span class="o">*</span><span class="n">z</span><span class="p">)</span> <span class="o">+</span> <span class="n">sqrt</span><span class="p">(</span><span class="n">z</span><span class="o">*</span><span class="n">x</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">);</span> <span class="mi">2</span><span class="o">*</span><span class="n">elliprf</span><span class="p">(</span><span class="n">x</span><span class="o">+</span><span class="n">l</span><span class="p">,</span><span class="n">y</span><span class="o">+</span><span class="n">l</span><span class="p">,</span><span class="n">z</span><span class="o">+</span><span class="n">l</span><span class="p">)</span>
<span class="go">0.5840828416771517066928492</span>
<span class="go">0.5840828416771517066928492</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">((</span><span class="n">x</span><span class="o">+</span><span class="n">l</span><span class="p">)</span><span class="o">/</span><span class="mi">4</span><span class="p">,(</span><span class="n">y</span><span class="o">+</span><span class="n">l</span><span class="p">)</span><span class="o">/</span><span class="mi">4</span><span class="p">,(</span><span class="n">z</span><span class="o">+</span><span class="n">l</span><span class="p">)</span><span class="o">/</span><span class="mi">4</span><span class="p">)</span>
<span class="go">0.5840828416771517066928492</span>
</pre></div>
</div>
<p>Comparing with numerical integration:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="go">0.5840828416771517066928492</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="mf">0.5</span><span class="o">*</span><span class="p">((</span><span class="n">t</span><span class="o">+</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">t</span><span class="o">+</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">t</span><span class="o">+</span><span class="n">z</span><span class="p">))</span><span class="o">**</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">q</span> <span class="o">=</span> <span class="n">extradps</span><span class="p">(</span><span class="mi">25</span><span class="p">)(</span><span class="n">quad</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">q</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">0.5840828416771517066928492</span>
</pre></div>
</div>
<p>With the following arguments, the square root in the integrand becomes
discontinuous at <img class="math" src="../_images/math/96140d8d6781d1aee99a494b0bd27408ee8dd7f2.png" alt="t = 1/2"/> if the principal branch is used. To obtain
the right value, <img class="math" src="../_images/math/c3cef30254d867ed235c9a4e5198ba3fb580ede6.png" alt="-\sqrt{r}"/> must be taken instead of <img class="math" src="../_images/math/6a3e9006ecc9debb184b411a0fb4e94a291b9b62.png" alt="\sqrt{r}"/>
on <img class="math" src="../_images/math/6aafdfcbc567225fee212d00de14d1f68c6d5786.png" alt="t \in (0, 1/2)"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span> <span class="o">=</span> <span class="n">j</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">j</span><span class="p">,</span><span class="mi">0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="go">(0.7961258658423391329305694 - 1.213856669836495986430094j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="o">-</span><span class="n">q</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mf">0.5</span><span class="p">])</span> <span class="o">+</span> <span class="n">q</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="p">[</span><span class="mf">0.5</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">(0.7961258658423391329305694 - 1.213856669836495986430094j)</span>
</pre></div>
</div>
<p>The so-called <em>first lemniscate constant</em>, a transcendental number:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">elliprf</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
<span class="go">1.31102877714605990523242</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">extradps</span><span class="p">(</span><span class="mi">25</span><span class="p">)(</span><span class="n">quad</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">t</span><span class="o">**</span><span class="mi">4</span><span class="p">),</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span>
<span class="go">1.31102877714605990523242</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">gamma</span><span class="p">(</span><span class="s">&#39;1/4&#39;</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">pi</span><span class="p">))</span>
<span class="go">1.31102877714605990523242</span>
</pre></div>
</div>
<p><strong>References</strong></p>
<ol class="arabic simple">
<li><a class="reference external" href="../references.html#carlson">[Carlson]</a></li>
<li><a class="reference external" href="../references.html#dlmf">[DLMF]</a> Chapter 19. Elliptic Integrals</li>
</ol>
</dd></dl>

</div>
<div class="section" id="elliprc">
<h3><tt class="xref docutils literal"><span class="pre">elliprc()</span></tt><a class="headerlink" href="#elliprc" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.elliprc">
<tt class="descclassname">mpmath.</tt><tt class="descname">elliprc</tt><big>(</big><em>x</em>, <em>y</em>, <em>pv=True</em><big>)</big><a class="headerlink" href="#mpmath.elliprc" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the degenerate Carlson symmetric elliptic integral
of the first kind</p>
<div class="math">
<p><img src="../_images/math/5073723749e75fab9ce2dce264f936d83dec4e54.png" alt="R_C(x,y) = R_F(x,y,y) =
    \frac{1}{2} \int_0^{\infty} \frac{dt}{(t+y) \sqrt{(t+x)}}." /></p>
</div><p>If <img class="math" src="../_images/math/7192a0165224d843092ab9cde361c52ccafb7ea4.png" alt="y \in (-\infty,0)"/>, either a value defined by continuity,
or with <em>pv=True</em> the Cauchy principal value, can be computed.</p>
<p>If <img class="math" src="../_images/math/5baeb2af7bb8343f4481411ae135111a7457ad29.png" alt="x \ge 0, y &gt; 0"/>, the value can be expressed in terms of
elementary functions as</p>
<div class="math">
<p><img src="../_images/math/439d316af221044946e8a85e2d32880262ec7856.png" alt="R_C(x,y) = 
\begin{cases}
  \dfrac{1}{\sqrt{y-x}}
    \cos^{-1}\left(\sqrt{\dfrac{x}{y}}\right),   &amp; x &lt; y \\
  \dfrac{1}{\sqrt{y}},                          &amp; x = y \\
  \dfrac{1}{\sqrt{x-y}}
    \cosh^{-1}\left(\sqrt{\dfrac{x}{y}}\right),  &amp; x &gt; y \\
\end{cases}." /></p>
</div><p><strong>Examples</strong></p>
<p>Some special values and limits:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprc</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="o">*</span><span class="mi">4</span><span class="p">;</span> <span class="n">elliprc</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="mi">2</span><span class="p">;</span> <span class="o">+</span><span class="n">pi</span>
<span class="go">3.141592653589793238462643</span>
<span class="go">3.141592653589793238462643</span>
<span class="go">3.141592653589793238462643</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprc</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="go">+inf</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprc</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span>
<span class="go">0.2</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprc</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">inf</span><span class="p">);</span> <span class="n">elliprc</span><span class="p">(</span><span class="n">inf</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span> <span class="n">elliprc</span><span class="p">(</span><span class="n">inf</span><span class="p">,</span><span class="n">inf</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="go">0.0</span>
<span class="go">0.0</span>
</pre></div>
</div>
<p>Comparing with the elementary closed-form solution:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">elliprc</span><span class="p">(</span><span class="s">&#39;1/3&#39;</span><span class="p">,</span> <span class="s">&#39;1/5&#39;</span><span class="p">);</span> <span class="n">sqrt</span><span class="p">(</span><span class="mf">7.5</span><span class="p">)</span><span class="o">*</span><span class="n">acosh</span><span class="p">(</span><span class="n">sqrt</span><span class="p">(</span><span class="s">&#39;5/3&#39;</span><span class="p">))</span>
<span class="go">2.041630778983498390751238</span>
<span class="go">2.041630778983498390751238</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprc</span><span class="p">(</span><span class="s">&#39;1/5&#39;</span><span class="p">,</span> <span class="s">&#39;1/3&#39;</span><span class="p">);</span> <span class="n">sqrt</span><span class="p">(</span><span class="mf">7.5</span><span class="p">)</span><span class="o">*</span><span class="n">acos</span><span class="p">(</span><span class="n">sqrt</span><span class="p">(</span><span class="s">&#39;3/5&#39;</span><span class="p">))</span>
<span class="go">1.875180765206547065111085</span>
<span class="go">1.875180765206547065111085</span>
</pre></div>
</div>
<p>Comparing with numerical integration:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">q</span> <span class="o">=</span> <span class="n">extradps</span><span class="p">(</span><span class="mi">25</span><span class="p">)(</span><span class="n">quad</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprc</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="n">pv</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="go">0.3333969101113672670749334</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprc</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="n">pv</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
<span class="go">(0.3333969101113672670749334 + 0.7024814731040726393156375j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mf">0.5</span><span class="o">*</span><span class="n">q</span><span class="p">(</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="p">(</span><span class="n">sqrt</span><span class="p">(</span><span class="n">t</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">t</span><span class="o">-</span><span class="mi">3</span><span class="p">)),</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">3</span><span class="o">-</span><span class="n">j</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">(0.3333969101113672670749334 + 0.7024814731040726393156375j)</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="elliprj">
<h3><tt class="xref docutils literal"><span class="pre">elliprj()</span></tt><a class="headerlink" href="#elliprj" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.elliprj">
<tt class="descclassname">mpmath.</tt><tt class="descname">elliprj</tt><big>(</big><em>x</em>, <em>y</em>, <em>z</em>, <em>p</em><big>)</big><a class="headerlink" href="#mpmath.elliprj" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the Carlson symmetric elliptic integral of the third kind</p>
<div class="math">
<p><img src="../_images/math/95a615e641af9317428a8261a045c19c4a9eb761.png" alt="R_J(x,y,z,p) = \frac{3}{2}
    \int_0^{\infty} \frac{dt}{(t+p)\sqrt{(t+x)(t+y)(t+z)}}." /></p>
</div><p>Like <a title="mpmath.elliprf" class="reference internal" href="#mpmath.elliprf"><tt class="xref docutils literal"><span class="pre">elliprf()</span></tt></a>, the branch of the square root in the integrand
is defined so as to be continuous along the path of integration for
complex values of the arguments.</p>
<p><strong>Examples</strong></p>
<p>Some values and limits:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprj</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprj</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">);</span> <span class="mi">1</span><span class="o">/</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span>
<span class="go">0.3535533905932737622004222</span>
<span class="go">0.3535533905932737622004222</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprj</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
<span class="go">1.067937989667395702268688</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mi">3</span><span class="o">*</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">gamma</span><span class="p">(</span><span class="s">&#39;5/4&#39;</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="o">-</span><span class="n">pi</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">gamma</span><span class="p">(</span><span class="s">&#39;1/4&#39;</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">pi</span><span class="p">))</span>
<span class="go">1.067937989667395702268688</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprj</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">);</span> <span class="mi">3</span><span class="o">*</span><span class="n">pi</span><span class="o">*</span><span class="p">(</span><span class="mi">2</span><span class="o">-</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span><span class="o">/</span><span class="mi">4</span>
<span class="go">1.380226776765915172432054</span>
<span class="go">1.380226776765915172432054</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprj</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span> <span class="n">elliprj</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span> <span class="n">elliprj</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="go">+inf</span>
<span class="go">+inf</span>
<span class="go">+inf</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprj</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">inf</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span> <span class="n">elliprj</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">inf</span><span class="p">)</span>
<span class="go">0.0</span>
<span class="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">elliprj</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">j</span><span class="p">,</span> <span class="mi">1</span><span class="o">-</span><span class="n">j</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
<span class="go">0.8505007163686739432927844</span>
</pre></div>
</div>
<p>Scale transformation:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">,</span><span class="n">p</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">k</span> <span class="o">=</span> <span class="n">mpf</span><span class="p">(</span><span class="mi">100000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprj</span><span class="p">(</span><span class="n">k</span><span class="o">*</span><span class="n">x</span><span class="p">,</span><span class="n">k</span><span class="o">*</span><span class="n">y</span><span class="p">,</span><span class="n">k</span><span class="o">*</span><span class="n">z</span><span class="p">,</span><span class="n">k</span><span class="o">*</span><span class="n">p</span><span class="p">);</span> <span class="n">k</span><span class="o">**</span><span class="p">(</span><span class="o">-</span><span class="mf">1.5</span><span class="p">)</span><span class="o">*</span><span class="n">elliprj</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">,</span><span class="n">p</span><span class="p">)</span>
<span class="go">4.521291677592745527851168e-9</span>
<span class="go">4.521291677592745527851168e-9</span>
</pre></div>
</div>
<p>Comparing with numerical integration:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">elliprj</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span>
<span class="go">0.2398480997495677621758617</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="p">((</span><span class="n">t</span><span class="o">+</span><span class="mi">4</span><span class="p">)</span><span class="o">*</span><span class="n">sqrt</span><span class="p">((</span><span class="n">t</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">t</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">t</span><span class="o">+</span><span class="mi">3</span><span class="p">)))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mf">1.5</span><span class="o">*</span><span class="n">quad</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">0.2398480997495677621758617</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprj</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="o">+</span><span class="mi">1</span><span class="n">j</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="o">-</span><span class="mi">2</span><span class="n">j</span><span class="p">)</span>
<span class="go">(0.216888906014633498739952 + 0.04081912627366673332369512j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="p">((</span><span class="n">t</span><span class="o">+</span><span class="mi">4</span><span class="o">-</span><span class="mi">2</span><span class="n">j</span><span class="p">)</span><span class="o">*</span><span class="n">sqrt</span><span class="p">((</span><span class="n">t</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">t</span><span class="o">+</span><span class="mi">2</span><span class="o">+</span><span class="mi">1</span><span class="n">j</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">t</span><span class="o">+</span><span class="mi">3</span><span class="p">)))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mf">1.5</span><span class="o">*</span><span class="n">quad</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">(0.216888906014633498739952 + 0.04081912627366673332369511j)</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="elliprd">
<h3><tt class="xref docutils literal"><span class="pre">elliprd()</span></tt><a class="headerlink" href="#elliprd" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.elliprd">
<tt class="descclassname">mpmath.</tt><tt class="descname">elliprd</tt><big>(</big><em>x</em>, <em>y</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.elliprd" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the degenerate Carlson symmetric elliptic integral
of the third kind or Carlson elliptic integral of the
second kind <img class="math" src="../_images/math/d5138a92cfa026ebb10c536141157f6a85d500bc.png" alt="R_D(x,y,z) = R_J(x,y,z,z)"/>.</p>
<p>See <a title="mpmath.elliprj" class="reference internal" href="#mpmath.elliprj"><tt class="xref docutils literal"><span class="pre">elliprj()</span></tt></a> for additional information.</p>
<p><strong>Examples</strong></p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprd</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
<span class="go">0.2904602810289906442326534</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprj</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
<span class="go">0.2904602810289906442326534</span>
</pre></div>
</div>
<p>The so-called <em>second lemniscate constant</em>, a transcendental number:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">elliprd</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">3</span>
<span class="go">0.5990701173677961037199612</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">extradps</span><span class="p">(</span><span class="mi">25</span><span class="p">)(</span><span class="n">quad</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="n">t</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">t</span><span class="o">**</span><span class="mi">4</span><span class="p">),</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">])</span>
<span class="go">0.5990701173677961037199612</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">gamma</span><span class="p">(</span><span class="s">&#39;3/4&#39;</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="o">/</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">pi</span><span class="p">)</span>
<span class="go">0.5990701173677961037199612</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="elliprg">
<h3><tt class="xref docutils literal"><span class="pre">elliprg()</span></tt><a class="headerlink" href="#elliprg" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.elliprg">
<tt class="descclassname">mpmath.</tt><tt class="descname">elliprg</tt><big>(</big><em>x</em>, <em>y</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.elliprg" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the Carlson completely symmetric elliptic integral
of the second kind</p>
<div class="math">
<p><img src="../_images/math/ff1baa05c040f368e34c2f3c3c0b58211af14429.png" alt="R_G(x,y,z) = \frac{1}{4} \int_0^{\infty}
    \frac{t}{\sqrt{(t+x)(t+y)(t+z)}}
    \left( \frac{x}{t+x} + \frac{y}{t+y} + \frac{z}{t+z}\right) dt." /></p>
</div><p><strong>Examples</strong></p>
<p>Evaluation for real and complex arguments:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprg</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="mi">4</span><span class="p">;</span> <span class="o">+</span><span class="n">pi</span>
<span class="go">3.141592653589793238462643</span>
<span class="go">3.141592653589793238462643</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">elliprg</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="go">0.6753219405238377512600874</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">elliprg</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">j</span><span class="p">,</span> <span class="mi">1</span><span class="o">-</span><span class="n">j</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span>
<span class="go">1.172431327676416604532822</span>
</pre></div>
</div>
<p>A double integral that can be evaluated in terms of <img class="math" src="../_images/math/436a0b303206b4d357ff9db947c757012dcacac9.png" alt="R_G"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">t</span><span class="p">,</span><span class="n">u</span><span class="p">):</span>
<span class="gp">... </span>    <span class="n">st</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">t</span><span class="p">);</span> <span class="n">ct</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
<span class="gp">... </span>    <span class="n">su</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">u</span><span class="p">);</span> <span class="n">cu</span> <span class="o">=</span> <span class="n">fp</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">u</span><span class="p">)</span>
<span class="gp">... </span>    <span class="k">return</span> <span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="p">(</span><span class="n">st</span><span class="o">*</span><span class="n">cu</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="n">y</span><span class="o">*</span><span class="p">(</span><span class="n">st</span><span class="o">*</span><span class="n">su</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="n">z</span><span class="o">*</span><span class="n">ct</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span><span class="o">**</span><span class="mf">0.5</span> <span class="o">*</span> <span class="n">st</span>
<span class="gp">...</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nprint</span><span class="p">(</span><span class="n">mpf</span><span class="p">(</span><span class="n">fp</span><span class="o">.</span><span class="n">quad</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">fp</span><span class="o">.</span><span class="n">pi</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="n">fp</span><span class="o">.</span><span class="n">pi</span><span class="p">])</span><span class="o">/</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">fp</span><span class="o">.</span><span class="n">pi</span><span class="p">)),</span> <span class="mi">13</span><span class="p">)</span>
<span class="go">1.725503028069</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nprint</span><span class="p">(</span><span class="n">elliprg</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">),</span> <span class="mi">13</span><span class="p">)</span>
<span class="go">1.725503028069</span>
</pre></div>
</div>
</dd></dl>

</div>
</div>
<div class="section" id="jacobi-theta-functions">
<h2>Jacobi theta functions<a class="headerlink" href="#jacobi-theta-functions" title="Permalink to this headline">¶</a></h2>
<div class="section" id="jtheta">
<h3><tt class="xref docutils literal"><span class="pre">jtheta()</span></tt><a class="headerlink" href="#jtheta" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.jtheta">
<tt class="descclassname">mpmath.</tt><tt class="descname">jtheta</tt><big>(</big><em>n</em>, <em>z</em>, <em>q</em>, <em>derivative=0</em><big>)</big><a class="headerlink" href="#mpmath.jtheta" title="Permalink to this definition">¶</a></dt>
<dd><p>Computes the Jacobi theta function <img class="math" src="../_images/math/c3cf9a7b93535d07185603a625973776a711146a.png" alt="\vartheta_n(z, q)"/>, where
<img class="math" src="../_images/math/2ccb96c3451d351085035d873b42734c582c37c6.png" alt="n = 1, 2, 3, 4"/>, defined by the infinite series:</p>
<div class="math">
<p><img src="../_images/math/1d6462a4086bcc70c1df40c08d404d346f144106.png" alt="\vartheta_1(z,q) = 2 q^{1/4} \sum_{n=0}^{\infty}
  (-1)^n q^{n^2+n\,} \sin((2n+1)z)

\vartheta_2(z,q) = 2 q^{1/4} \sum_{n=0}^{\infty}
  q^{n^{2\,} + n} \cos((2n+1)z)

\vartheta_3(z,q) = 1 + 2 \sum_{n=1}^{\infty}
  q^{n^2\,} \cos(2 n z)

\vartheta_4(z,q) = 1 + 2 \sum_{n=1}^{\infty}
  (-q)^{n^2\,} \cos(2 n z)" /></p>
</div><p>The theta functions are functions of two variables:</p>
<ul class="simple">
<li><img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/> is the <em>argument</em>, an arbitrary real or complex number</li>
<li><img class="math" src="../_images/math/0615acc3725de21025457e7d6f7694dab8e2f758.png" alt="q"/> is the <em>nome</em>, which must be a real or complex number
in the unit disk (i.e. <img class="math" src="../_images/math/1ac3bec0deb1b3d8164b2938edd7bb85d132b005.png" alt="|q| &lt; 1"/>). For <img class="math" src="../_images/math/90857d9871b7c3fa3da5e460b4dcf28e15010383.png" alt="|q| \ll 1"/>, the
series converge very quickly, so the Jacobi theta functions
can efficiently be evaluated to high precision.</li>
</ul>
<p>The compact notations <img class="math" src="../_images/math/31facbaea3148747a34c271634f575a0b8f375d6.png" alt="\vartheta_n(q) = \vartheta_n(0,q)"/>
and <img class="math" src="../_images/math/3b667cd19acc01190a00fd75c54ae6c7dac96149.png" alt="\vartheta_n = \vartheta_n(0,q)"/> are also frequently
encountered. Finally, Jacobi theta functions are frequently
considered as functions of the half-period ratio <img class="math" src="../_images/math/1dc1c0119a604b91be9142370dc3159b6a9bbcb9.png" alt="\tau"/>
and then usually denoted by <img class="math" src="../_images/math/8504614f9cdc6601ddec06319e3750c7fa1ed274.png" alt="\vartheta_n(z|\tau)"/>.</p>
<p>Optionally, <tt class="docutils literal"><span class="pre">jtheta(n,</span> <span class="pre">z,</span> <span class="pre">q,</span> <span class="pre">derivative=d)</span></tt> with <img class="math" src="../_images/math/a0224701c4b2abd86b0caed6287a52296cfa468e.png" alt="d &gt; 0"/> computes
a <img class="math" src="../_images/math/96ab646de7704969b91c76a214126b45f2b07b25.png" alt="d"/>-th derivative with respect to <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/>.</p>
<p><strong>Examples and basic properties</strong></p>
<p>Considered as functions of <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/>, the Jacobi theta functions may be
viewed as generalizations of the ordinary trigonometric functions
cos and sin. They are periodic functions:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="s">&#39;0.2&#39;</span><span class="p">)</span>
<span class="go">0.2945120798627300045053104</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mf">0.25</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">pi</span><span class="p">,</span> <span class="s">&#39;0.2&#39;</span><span class="p">)</span>
<span class="go">0.2945120798627300045053104</span>
</pre></div>
</div>
<p>Indeed, the series defining the theta functions are essentially
trigonometric Fourier series. The coefficients can be retrieved
using <a title="mpmath.fourier" class="reference external" href="../calculus/approximation.html#mpmath.fourier"><tt class="xref docutils literal"><span class="pre">fourier()</span></tt></a>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">10</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nprint</span><span class="p">(</span><span class="n">fourier</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">),</span> <span class="p">[</span><span class="o">-</span><span class="n">pi</span><span class="p">,</span> <span class="n">pi</span><span class="p">],</span> <span class="mi">4</span><span class="p">))</span>
<span class="go">([0.0, 1.68179, 0.0, 0.420448, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0])</span>
</pre></div>
</div>
<p>The Jacobi theta functions are also so-called quasiperiodic
functions of <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/> and <img class="math" src="../_images/math/1dc1c0119a604b91be9142370dc3159b6a9bbcb9.png" alt="\tau"/>, meaning that for fixed <img class="math" src="../_images/math/1dc1c0119a604b91be9142370dc3159b6a9bbcb9.png" alt="\tau"/>,
<img class="math" src="../_images/math/c3cf9a7b93535d07185603a625973776a711146a.png" alt="\vartheta_n(z, q)"/> and <img class="math" src="../_images/math/8033b3c805ad08f4434c5ce0f3a1e63e8e319a8d.png" alt="\vartheta_n(z+\pi \tau, q)"/> are the same
except for an exponential factor:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">tau</span> <span class="o">=</span> <span class="mi">3</span><span class="o">*</span><span class="n">j</span><span class="o">/</span><span class="mi">10</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">q</span> <span class="o">=</span> <span class="n">exp</span><span class="p">(</span><span class="n">pi</span><span class="o">*</span><span class="n">j</span><span class="o">*</span><span class="n">tau</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="mi">10</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">z</span><span class="o">+</span><span class="n">tau</span><span class="o">*</span><span class="n">pi</span><span class="p">,</span> <span class="n">q</span><span class="p">)</span>
<span class="go">(-0.682420280786034687520568 + 1.526683999721399103332021j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="o">-</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">j</span><span class="o">*</span><span class="n">z</span><span class="p">)</span><span class="o">/</span><span class="n">q</span> <span class="o">*</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="n">q</span><span class="p">)</span>
<span class="go">(-0.682420280786034687520568 + 1.526683999721399103332021j)</span>
</pre></div>
</div>
<p>The Jacobi theta functions satisfy a huge number of other
functional equations, such as the following identity (valid for
any <img class="math" src="../_images/math/0615acc3725de21025457e7d6f7694dab8e2f758.png" alt="q"/>):</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">q</span> <span class="o">=</span> <span class="n">mpf</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="o">/</span><span class="mi">10</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">q</span><span class="p">)</span><span class="o">**</span><span class="mi">4</span>
<span class="go">6.823744089352763305137427</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">q</span><span class="p">)</span><span class="o">**</span><span class="mi">4</span> <span class="o">+</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">q</span><span class="p">)</span><span class="o">**</span><span class="mi">4</span>
<span class="go">6.823744089352763305137427</span>
</pre></div>
</div>
<p>Extensive listings of identities satisfied by the Jacobi theta
functions can be found in standard reference works.</p>
<p>The Jacobi theta functions are related to the gamma function
for special arguments:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">exp</span><span class="p">(</span><span class="o">-</span><span class="n">pi</span><span class="p">))</span>
<span class="go">1.086434811213308014575316</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">pi</span><span class="o">**</span><span class="p">(</span><span class="mi">1</span><span class="o">/</span><span class="mf">4.</span><span class="p">)</span> <span class="o">/</span> <span class="n">gamma</span><span class="p">(</span><span class="mi">3</span><span class="o">/</span><span class="mf">4.</span><span class="p">)</span>
<span class="go">1.086434811213308014575316</span>
</pre></div>
</div>
<p><a title="mpmath.jtheta" class="reference internal" href="#mpmath.jtheta"><tt class="xref docutils literal"><span class="pre">jtheta()</span></tt></a> supports arbitrary precision evaluation and complex
arguments:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">50</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="mf">0.5</span><span class="p">)</span>
<span class="go">2.0549510717571539127004115835148878097035750653737</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">1</span><span class="o">+</span><span class="mi">2</span><span class="n">j</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">j</span><span class="p">)</span><span class="o">/</span><span class="mi">5</span><span class="p">)</span>
<span class="go">(7.180331760146805926356634 - 1.634292858119162417301683j)</span>
</pre></div>
</div>
<p>Evaluation of derivatives:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="n">diff</span><span class="p">(</span><span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">),</span> <span class="mi">7</span><span class="p">)</span>
<span class="go">1.209857192844475388637236</span>
<span class="go">1.209857192844475388637236</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span> <span class="n">diff</span><span class="p">(</span><span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">),</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="go">-0.2598718791650217206533052</span>
<span class="go">-0.2598718791650217206533052</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="n">diff</span><span class="p">(</span><span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">),</span> <span class="mi">7</span><span class="p">)</span>
<span class="go">-1.150231437070259644461474</span>
<span class="go">-1.150231437070259644461474</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span> <span class="n">diff</span><span class="p">(</span><span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">),</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="go">-0.6226636990043777445898114</span>
<span class="go">-0.6226636990043777445898114</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="n">diff</span><span class="p">(</span><span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">),</span> <span class="mi">7</span><span class="p">)</span>
<span class="go">-0.9990312046096634316587882</span>
<span class="go">-0.9990312046096634316587882</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span> <span class="n">diff</span><span class="p">(</span><span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">),</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="go">-0.1530388693066334936151174</span>
<span class="go">-0.1530388693066334936151174</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="n">diff</span><span class="p">(</span><span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">),</span> <span class="mi">7</span><span class="p">)</span>
<span class="go">0.9820995967262793943571139</span>
<span class="go">0.9820995967262793943571139</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span> <span class="n">diff</span><span class="p">(</span><span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">jtheta</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">),</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="go">0.3936902850291437081667755</span>
<span class="go">0.3936902850291437081667755</span>
</pre></div>
</div>
<p><strong>Possible issues</strong></p>
<p>For <img class="math" src="../_images/math/e7f46a50bae4c4ba199b8f1eba5497c4d8751d40.png" alt="|q| \ge 1"/> or <img class="math" src="../_images/math/22a257eca6d85bb59e15945d8ac6309a92cbe915.png" alt="\Im(\tau) \le 0"/>, <a title="mpmath.jtheta" class="reference internal" href="#mpmath.jtheta"><tt class="xref docutils literal"><span class="pre">jtheta()</span></tt></a> raises
<tt class="docutils literal"><span class="pre">ValueError</span></tt>. This exception is also raised for <img class="math" src="../_images/math/f3e0d75c3450ca8f389d08d904ed1fc695734539.png" alt="|q|"/> extremely
close to 1 (or equivalently <img class="math" src="../_images/math/1dc1c0119a604b91be9142370dc3159b6a9bbcb9.png" alt="\tau"/> very close to 0), since the
series would converge too slowly:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">jtheta</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mf">0.99999999</span> <span class="o">*</span> <span class="n">exp</span><span class="p">(</span><span class="mf">0.5</span><span class="o">*</span><span class="n">j</span><span class="p">))</span>
<span class="gt">Traceback (most recent call last):</span>
  <span class="c">...</span>
<span class="nc">ValueError</span>: <span class="n-Identifier">abs(q) &gt; THETA_Q_LIM = 1.000000</span>
</pre></div>
</div>
</dd></dl>

</div>
</div>
<div class="section" id="jacobi-elliptic-functions">
<h2>Jacobi elliptic functions<a class="headerlink" href="#jacobi-elliptic-functions" title="Permalink to this headline">¶</a></h2>
<div class="section" id="ellipfun">
<h3><tt class="xref docutils literal"><span class="pre">ellipfun()</span></tt><a class="headerlink" href="#ellipfun" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.ellipfun">
<tt class="descclassname">mpmath.</tt><tt class="descname">ellipfun</tt><big>(</big><em>kind</em>, <em>u=None</em>, <em>m=None</em>, <em>q=None</em>, <em>k=None</em>, <em>tau=None</em><big>)</big><a class="headerlink" href="#mpmath.ellipfun" title="Permalink to this definition">¶</a></dt>
<dd><p>Computes any of the Jacobi elliptic functions, defined
in terms of Jacobi theta functions as</p>
<div class="math">
<p><img src="../_images/math/2a7acf8a95adedaf6afb65b54ea5ddb5ded87379.png" alt="\mathrm{sn}(u,m) = \frac{\vartheta_3(0,q)}{\vartheta_2(0,q)}
    \frac{\vartheta_1(t,q)}{\vartheta_4(t,q)}

\mathrm{cn}(u,m) = \frac{\vartheta_4(0,q)}{\vartheta_2(0,q)}
    \frac{\vartheta_2(t,q)}{\vartheta_4(t,q)}

\mathrm{dn}(u,m) = \frac{\vartheta_4(0,q)}{\vartheta_3(0,q)}
    \frac{\vartheta_3(t,q)}{\vartheta_4(t,q)}," /></p>
</div><p>or more generally computes a ratio of two such functions. Here
<img class="math" src="../_images/math/ddc26af4580eedb32c3ceb081d263eac3333d4f6.png" alt="t = u/\vartheta_3(0,q)^2"/>, and <img class="math" src="../_images/math/f43979d77d5a097ee3837758752d428a0e6af2e9.png" alt="q = q(m)"/> denotes the nome (see
<tt class="xref docutils literal"><span class="pre">nome()</span></tt>). Optionally, you can specify the nome directly
instead of <img class="math" src="../_images/math/f5047d1e0cbb50ec208923a22cd517c55100fa7b.png" alt="m"/> by passing <tt class="docutils literal"><span class="pre">q=&lt;value&gt;</span></tt>, or you can directly
specify the elliptic parameter <img class="math" src="../_images/math/8c325612684d41304b9751c175df7bcc0f61f64f.png" alt="k"/> with <tt class="docutils literal"><span class="pre">k=&lt;value&gt;</span></tt>.</p>
<p>The first argument should be a two-character string specifying the
function using any combination of <tt class="docutils literal"><span class="pre">'s'</span></tt>, <tt class="docutils literal"><span class="pre">'c'</span></tt>, <tt class="docutils literal"><span class="pre">'d'</span></tt>, <tt class="docutils literal"><span class="pre">'n'</span></tt>. These
letters respectively denote the basic functions
<img class="math" src="../_images/math/9ff6cec40b3994b7b3ef044b7afc2ac53c30d948.png" alt="\mathrm{sn}(u,m)"/>, <img class="math" src="../_images/math/a77093951daa4f61fe9ba30ef262144435796f5b.png" alt="\mathrm{cn}(u,m)"/>, <img class="math" src="../_images/math/c1b9eaa599398f0f645821e088b51b880cc0b13c.png" alt="\mathrm{dn}(u,m)"/>, and <img class="math" src="../_images/math/dce34f4dfb2406144304ad0d6106c5382ddd1446.png" alt="1"/>.
The identifier specifies the ratio of two such functions.
For example, <tt class="docutils literal"><span class="pre">'ns'</span></tt> identifies the function</p>
<div class="math">
<p><img src="../_images/math/1364d2acd9a7ab094fbd4a19a353581deb5a2e44.png" alt="\mathrm{ns}(u,m) = \frac{1}{\mathrm{sn}(u,m)}" /></p>
</div><p>and <tt class="docutils literal"><span class="pre">'cd'</span></tt> identifies the function</p>
<div class="math">
<p><img src="../_images/math/71fd80ce68755eb1585a0ba0ae6d908f2689047f.png" alt="\mathrm{cd}(u,m) = \frac{\mathrm{cn}(u,m)}{\mathrm{dn}(u,m)}." /></p>
</div><p>If called with only the first argument, a function object
evaluating the chosen function for given arguments is returned.</p>
<p><strong>Examples</strong></p>
<p>Basic evaluation:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipfun</span><span class="p">(</span><span class="s">&#39;cd&#39;</span><span class="p">,</span> <span class="mf">3.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">)</span>
<span class="go">-0.9891101840595543931308394</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ellipfun</span><span class="p">(</span><span class="s">&#39;cd&#39;</span><span class="p">,</span> <span class="mf">3.5</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="mf">0.25</span><span class="p">)</span>
<span class="go">0.07111979240214668158441418</span>
</pre></div>
</div>
<p>The sn-function is doubly periodic in the complex plane with periods
<img class="math" src="../_images/math/06f1dddb3f8dc6bc1be20dfa3d96014ffb755016.png" alt="4 K(m)"/> and <img class="math" src="../_images/math/61df763bbb98a23963bd7678ac9a2449d93cb9d8.png" alt="2 i K(1-m)"/> (see <a title="mpmath.ellipk" class="reference internal" href="#mpmath.ellipk"><tt class="xref docutils literal"><span class="pre">ellipk()</span></tt></a>):</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">sn</span> <span class="o">=</span> <span class="n">ellipfun</span><span class="p">(</span><span class="s">&#39;sn&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sn</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">)</span>
<span class="go">0.9628981775982774425751399</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sn</span><span class="p">(</span><span class="mi">2</span><span class="o">+</span><span class="mi">4</span><span class="o">*</span><span class="n">ellipk</span><span class="p">(</span><span class="mf">0.25</span><span class="p">),</span> <span class="mf">0.25</span><span class="p">)</span>
<span class="go">0.9628981775982774425751399</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">sn</span><span class="p">(</span><span class="mi">2</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">j</span><span class="o">*</span><span class="n">ellipk</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="mf">0.25</span><span class="p">),</span> <span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.9628981775982774425751399</span>
</pre></div>
</div>
<p>The cn-function is doubly periodic with periods <img class="math" src="../_images/math/06f1dddb3f8dc6bc1be20dfa3d96014ffb755016.png" alt="4 K(m)"/> and <img class="math" src="../_images/math/97c78b4046b5cc8c8e69da51ed3a0bb91e5c66e1.png" alt="4 i K(1-m)"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">cn</span> <span class="o">=</span> <span class="n">ellipfun</span><span class="p">(</span><span class="s">&#39;cn&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">cn</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">)</span>
<span class="go">-0.2698649654510865792581416</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">cn</span><span class="p">(</span><span class="mi">2</span><span class="o">+</span><span class="mi">4</span><span class="o">*</span><span class="n">ellipk</span><span class="p">(</span><span class="mf">0.25</span><span class="p">),</span> <span class="mf">0.25</span><span class="p">)</span>
<span class="go">-0.2698649654510865792581416</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">cn</span><span class="p">(</span><span class="mi">2</span><span class="o">+</span><span class="mi">4</span><span class="o">*</span><span class="n">j</span><span class="o">*</span><span class="n">ellipk</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="mf">0.25</span><span class="p">),</span> <span class="mf">0.25</span><span class="p">))</span>
<span class="go">-0.2698649654510865792581416</span>
</pre></div>
</div>
<p>The dn-function is doubly periodic with periods <img class="math" src="../_images/math/19581a1a0b61aa8752b5fc45e389f124d430cdeb.png" alt="2 K(m)"/> and <img class="math" src="../_images/math/97c78b4046b5cc8c8e69da51ed3a0bb91e5c66e1.png" alt="4 i K(1-m)"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">dn</span> <span class="o">=</span> <span class="n">ellipfun</span><span class="p">(</span><span class="s">&#39;dn&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">dn</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">)</span>
<span class="go">0.8764740583123262286931578</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">dn</span><span class="p">(</span><span class="mi">2</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">ellipk</span><span class="p">(</span><span class="mf">0.25</span><span class="p">),</span> <span class="mf">0.25</span><span class="p">)</span>
<span class="go">0.8764740583123262286931578</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">dn</span><span class="p">(</span><span class="mi">2</span><span class="o">+</span><span class="mi">4</span><span class="o">*</span><span class="n">j</span><span class="o">*</span><span class="n">ellipk</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="mf">0.25</span><span class="p">),</span> <span class="mf">0.25</span><span class="p">))</span>
<span class="go">0.8764740583123262286931578</span>
</pre></div>
</div>
</dd></dl>

</div>
</div>
<div class="section" id="modular-functions">
<h2>Modular functions<a class="headerlink" href="#modular-functions" title="Permalink to this headline">¶</a></h2>
<div class="section" id="kleinj">
<h3><tt class="xref docutils literal"><span class="pre">kleinj()</span></tt><a class="headerlink" href="#kleinj" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.kleinj">
<tt class="descclassname">mpmath.</tt><tt class="descname">kleinj</tt><big>(</big><em>tau=None</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.kleinj" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the Klein j-invariant, which is a modular function defined for
<img class="math" src="../_images/math/1dc1c0119a604b91be9142370dc3159b6a9bbcb9.png" alt="\tau"/> in the upper half-plane as</p>
<div class="math">
<p><img src="../_images/math/d356bb7eb198ba53c25f1b335f1cd41b3b965e77.png" alt="J(\tau) = \frac{g_2^3(\tau)}{g_2^3(\tau) - 27 g_3^2(\tau)}" /></p>
</div><p>where <img class="math" src="../_images/math/a6053907b455e0ef20a366e07f007ac4fc0eb002.png" alt="g_2"/> and <img class="math" src="../_images/math/c40081c7061430d2ce8156fd4073dbedaee3ad36.png" alt="g_3"/> are the modular invariants of the Weierstrass
elliptic function,</p>
<div class="math">
<p><img src="../_images/math/a5367db3d178d46f1927197378b78c49ab0fc8ba.png" alt="g_2(\tau) = 60 \sum_{(m,n) \in \mathbb{Z}^2 \setminus (0,0)} (m \tau+n)^{-4}

g_3(\tau) = 140 \sum_{(m,n) \in \mathbb{Z}^2 \setminus (0,0)} (m \tau+n)^{-6}." /></p>
</div><p>An alternative, common notation is that of the j-function
<img class="math" src="../_images/math/0e9150aee4bd61b1224ab7d9482f1889f5a71803.png" alt="j(\tau) = 1728 J(\tau)"/>.</p>
<p><strong>Plots</strong></p>
<div class="highlight-python"><div class="highlight"><pre><span class="c"># Klein J-function as function of the number-theoretic nome</span>
<span class="n">fp</span><span class="o">.</span><span class="n">cplot</span><span class="p">(</span><span class="k">lambda</span> <span class="n">q</span><span class="p">:</span> <span class="n">fp</span><span class="o">.</span><span class="n">kleinj</span><span class="p">(</span><span class="n">qbar</span><span class="o">=</span><span class="n">q</span><span class="p">),</span> <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">],</span> <span class="n">points</span><span class="o">=</span><span class="mi">50000</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/kleinj.png" src="../_images/kleinj.png" />
<div class="highlight-python"><div class="highlight"><pre><span class="c"># Klein J-function as function of the half-period ratio</span>
<span class="n">fp</span><span class="o">.</span><span class="n">cplot</span><span class="p">(</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="n">fp</span><span class="o">.</span><span class="n">kleinj</span><span class="p">(</span><span class="n">tau</span><span class="o">=</span><span class="n">t</span><span class="p">),</span> <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mf">1.5</span><span class="p">],</span> <span class="n">points</span><span class="o">=</span><span class="mi">50000</span><span class="p">)</span>
</pre></div>
</div>
<img alt="../_images/kleinj2.png" src="../_images/kleinj2.png" />
<p><strong>Examples</strong></p>
<p>Verifying the functional equation <img class="math" src="../_images/math/5e35bfbbf1629282b4f88402550c537ff5f362d8.png" alt="J(\tau) = J(\tau+1) = J(-\tau^{-1})"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">mpmath</span> <span class="kn">import</span> <span class="o">*</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span> <span class="n">mp</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="bp">True</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">tau</span> <span class="o">=</span> <span class="mf">0.625</span><span class="o">+</span><span class="mf">0.75</span><span class="o">*</span><span class="n">j</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">tau</span> <span class="o">=</span> <span class="mf">0.625</span><span class="o">+</span><span class="mf">0.75</span><span class="o">*</span><span class="n">j</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kleinj</span><span class="p">(</span><span class="n">tau</span><span class="p">)</span>
<span class="go">(-0.1507492166511182267125242 + 0.07595948379084571927228948j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kleinj</span><span class="p">(</span><span class="n">tau</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<span class="go">(-0.1507492166511182267125242 + 0.07595948379084571927228948j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">kleinj</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="o">/</span><span class="n">tau</span><span class="p">)</span>
<span class="go">(-0.1507492166511182267125242 + 0.07595948379084571927228946j)</span>
</pre></div>
</div>
<p>The j-function has a famous Laurent series expansion in terms of the nome
<img class="math" src="../_images/math/bf527e68a0e92e9bce3a32ca38e006f145e0da19.png" alt="\bar{q}"/>, <img class="math" src="../_images/math/faa281e95775b6d3a4eb51c27dd2626503f54f26.png" alt="j(\tau) = \bar{q}^{-1} + 744 + 196884\bar{q} + \ldots"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">15</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">taylor</span><span class="p">(</span><span class="k">lambda</span> <span class="n">q</span><span class="p">:</span> <span class="mi">1728</span><span class="o">*</span><span class="n">q</span><span class="o">*</span><span class="n">kleinj</span><span class="p">(</span><span class="n">qbar</span><span class="o">=</span><span class="n">q</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">singular</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="go">[1.0, 744.0, 196884.0, 21493760.0, 864299970.0, 20245856256.0]</span>
</pre></div>
</div>
<p>The j-function admits exact evaluation at special algebraic points
related to the Heegner numbers 1, 2, 3, 7, 11, 19, 43, 67, 163:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="nd">@extraprec</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="gp">... </span><span class="k">def</span> <span class="nf">h</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
<span class="gp">... </span>    <span class="n">v</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">sqrt</span><span class="p">(</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">j</span><span class="p">)</span>
<span class="gp">... </span>    <span class="k">if</span> <span class="n">n</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">:</span>
<span class="gp">... </span>        <span class="n">v</span> <span class="o">*=</span> <span class="mf">0.5</span>
<span class="gp">... </span>    <span class="k">return</span> <span class="n">v</span>
<span class="gp">...</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mp</span><span class="o">.</span><span class="n">dps</span> <span class="o">=</span> <span class="mi">25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">11</span><span class="p">,</span><span class="mi">19</span><span class="p">,</span><span class="mi">43</span><span class="p">,</span><span class="mi">67</span><span class="p">,</span><span class="mi">163</span><span class="p">]:</span>
<span class="gp">... </span>    <span class="n">n</span><span class="p">,</span> <span class="n">chop</span><span class="p">(</span><span class="mi">1728</span><span class="o">*</span><span class="n">kleinj</span><span class="p">(</span><span class="n">h</span><span class="p">(</span><span class="n">n</span><span class="p">)))</span>
<span class="gp">...</span>
<span class="go">(1, 1728.0)</span>
<span class="go">(2, 8000.0)</span>
<span class="go">(3, 0.0)</span>
<span class="go">(7, -3375.0)</span>
<span class="go">(11, -32768.0)</span>
<span class="go">(19, -884736.0)</span>
<span class="go">(43, -884736000.0)</span>
<span class="go">(67, -147197952000.0)</span>
<span class="go">(163, -262537412640768000.0)</span>
</pre></div>
</div>
<p>Also at other special points, the j-function assumes explicit
algebraic values, e.g.:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="mi">1728</span><span class="o">*</span><span class="n">kleinj</span><span class="p">(</span><span class="n">j</span><span class="o">*</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">5</span><span class="p">)))</span>
<span class="go">1264538.909475140509320227</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">identify</span><span class="p">(</span><span class="n">cbrt</span><span class="p">(</span><span class="n">_</span><span class="p">))</span>      <span class="c"># note: not simplified</span>
<span class="go">&#39;((100+sqrt(13520))/2)&#39;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="p">(</span><span class="mi">50</span><span class="o">+</span><span class="mi">26</span><span class="o">*</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">5</span><span class="p">))</span><span class="o">**</span><span class="mi">3</span>
<span class="go">1264538.909475140509320227</span>
</pre></div>
</div>
</dd></dl>

</div>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
            <h3><a href="../index.html">Table Of Contents</a></h3>
            <ul>
<li><a class="reference external" href="#">Elliptic functions</a><ul>
<li><a class="reference external" href="#elliptic-arguments">Elliptic arguments</a><ul>
<li><a class="reference external" href="#qfrom"><tt class="docutils literal"><span class="pre">qfrom()</span></tt></a></li>
<li><a class="reference external" href="#qbarfrom"><tt class="docutils literal"><span class="pre">qbarfrom()</span></tt></a></li>
<li><a class="reference external" href="#mfrom"><tt class="docutils literal"><span class="pre">mfrom()</span></tt></a></li>
<li><a class="reference external" href="#kfrom"><tt class="docutils literal"><span class="pre">kfrom()</span></tt></a></li>
<li><a class="reference external" href="#taufrom"><tt class="docutils literal"><span class="pre">taufrom()</span></tt></a></li>
</ul>
</li>
<li><a class="reference external" href="#legendre-elliptic-integrals">Legendre elliptic integrals</a><ul>
<li><a class="reference external" href="#ellipk"><tt class="docutils literal"><span class="pre">ellipk()</span></tt></a></li>
<li><a class="reference external" href="#ellipf"><tt class="docutils literal"><span class="pre">ellipf()</span></tt></a></li>
<li><a class="reference external" href="#ellipe"><tt class="docutils literal"><span class="pre">ellipe()</span></tt></a></li>
<li><a class="reference external" href="#ellippi"><tt class="docutils literal"><span class="pre">ellippi()</span></tt></a></li>
</ul>
</li>
<li><a class="reference external" href="#carlson-symmetric-elliptic-integrals">Carlson symmetric elliptic integrals</a><ul>
<li><a class="reference external" href="#elliprf"><tt class="docutils literal"><span class="pre">elliprf()</span></tt></a></li>
<li><a class="reference external" href="#elliprc"><tt class="docutils literal"><span class="pre">elliprc()</span></tt></a></li>
<li><a class="reference external" href="#elliprj"><tt class="docutils literal"><span class="pre">elliprj()</span></tt></a></li>
<li><a class="reference external" href="#elliprd"><tt class="docutils literal"><span class="pre">elliprd()</span></tt></a></li>
<li><a class="reference external" href="#elliprg"><tt class="docutils literal"><span class="pre">elliprg()</span></tt></a></li>
</ul>
</li>
<li><a class="reference external" href="#jacobi-theta-functions">Jacobi theta functions</a><ul>
<li><a class="reference external" href="#jtheta"><tt class="docutils literal"><span class="pre">jtheta()</span></tt></a></li>
</ul>
</li>
<li><a class="reference external" href="#jacobi-elliptic-functions">Jacobi elliptic functions</a><ul>
<li><a class="reference external" href="#ellipfun"><tt class="docutils literal"><span class="pre">ellipfun()</span></tt></a></li>
</ul>
</li>
<li><a class="reference external" href="#modular-functions">Modular functions</a><ul>
<li><a class="reference external" href="#kleinj"><tt class="docutils literal"><span class="pre">kleinj()</span></tt></a></li>
</ul>
</li>
</ul>
</li>
</ul>

            <h4>Previous topic</h4>
            <p class="topless"><a href="hypergeometric.html"
                                  title="previous chapter">Hypergeometric functions</a></p>
            <h4>Next topic</h4>
            <p class="topless"><a href="zeta.html"
                                  title="next chapter">Zeta functions, L-series and polylogarithms</a></p>
            <h3>This Page</h3>
            <ul class="this-page-menu">
              <li><a href="../_sources/functions/elliptic.txt"
                     rel="nofollow">Show Source</a></li>
            </ul>
          <div id="searchbox" style="display: none">
            <h3>Quick search</h3>
              <form class="search" action="../search.html" method="get">
                <input type="text" name="q" size="18" />
                <input type="submit" value="Go" />
                <input type="hidden" name="check_keywords" value="yes" />
                <input type="hidden" name="area" value="default" />
              </form>
              <p class="searchtip" style="font-size: 90%">
              Enter search terms or a module, class or function name.
              </p>
          </div>
          <script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../modindex.html" title="Global Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="zeta.html" title="Zeta functions, L-series and polylogarithms"
             >next</a> |</li>
        <li class="right" >
          <a href="hypergeometric.html" title="Hypergeometric functions"
             >previous</a> |</li>
        <li><a href="../index.html">mpmath v0.17 documentation</a> &raquo;</li>
          <li><a href="index.html" >Mathematical functions</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
      &copy; Copyright 2010, Fredrik Johansson.
      Last updated on Feb 06, 2011.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
    </div>
  </body>
</html>