Sophie

Sophie

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

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>Hypergeometric 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="Elliptic functions" href="elliptic.html" />
    <link rel="prev" title="Orthogonal polynomials" href="orthogonal.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="elliptic.html" title="Elliptic functions"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="orthogonal.html" title="Orthogonal polynomials"
             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="hypergeometric-functions">
<h1>Hypergeometric functions<a class="headerlink" href="#hypergeometric-functions" title="Permalink to this headline">¶</a></h1>
<p>The functions listed in <a class="reference external" href="expintegrals.html"><em>Exponential integrals and error functions</em></a>, <a class="reference external" href="bessel.html"><em>Bessel functions and related functions</em></a> and
<a class="reference external" href="orthogonal.html"><em>Orthogonal polynomials</em></a>, and many other functions as well, are merely
particular instances of the generalized hypergeometric function <img class="math" src="../_images/math/405161549f551ae4e04876e9405fd9a40873733d.png" alt="\,_pF_q"/>.
The functions listed in the following section enable efficient
direct evaluation of the underlying hypergeometric series, as
well as linear combinations, limits with respect to parameters,
and analytic continuations thereof. Extensions to twodimensional
series are also provided. See also the basic or q-analog of
the hypergeometric series in <a class="reference external" href="qfunctions.html"><em>q-functions</em></a>.</p>
<p>For convenience, most of the hypergeometric series of low order are
provided as standalone functions. They can equivalently be evaluated using
<a title="mpmath.hyper" class="reference internal" href="#mpmath.hyper"><tt class="xref docutils literal"><span class="pre">hyper()</span></tt></a>. As will be demonstrated in the respective docstrings,
all the <tt class="docutils literal"><span class="pre">hyp#f#</span></tt> functions implement analytic continuations and/or asymptotic
expansions with respect to the argument <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/>, thereby permitting evaluation
for <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/> anywhere in the complex plane. Functions of higher degree can be
computed via <a title="mpmath.hyper" class="reference internal" href="#mpmath.hyper"><tt class="xref docutils literal"><span class="pre">hyper()</span></tt></a>, but generally only in rapidly convergent
instances.</p>
<p>Most hypergeometric and hypergeometric-derived functions accept optional
keyword arguments to specify options for <tt class="xref docutils literal"><span class="pre">hypercomb()</span></tt> or
<tt class="xref docutils literal"><span class="pre">hyper()</span></tt>. Some useful options are <em>maxprec</em>, <em>maxterms</em>,
<em>zeroprec</em>, <em>accurate_small</em>, <em>hmag</em>, <em>force_series</em>,
<em>asymp_tol</em> and <em>eliminate</em>. These options give control over what to
do in case of slow convergence, extreme loss of accuracy or
evaluation at zeros (these two cases cannot generally be
distinguished from each other automatically),
and singular parameter combinations.</p>
<div class="section" id="common-hypergeometric-series">
<h2>Common hypergeometric series<a class="headerlink" href="#common-hypergeometric-series" title="Permalink to this headline">¶</a></h2>
<div class="section" id="hyp0f1">
<h3><tt class="xref docutils literal"><span class="pre">hyp0f1()</span></tt><a class="headerlink" href="#hyp0f1" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hyp0f1">
<tt class="descclassname">mpmath.</tt><tt class="descname">hyp0f1</tt><big>(</big><em>a</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.hyp0f1" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the hypergeometric function <img class="math" src="../_images/math/6f7286e42826f1679e79de9429560a0d924791f1.png" alt="\,_0F_1"/>, sometimes known as the
confluent limit function, defined as</p>
<div class="math">
<p><img src="../_images/math/457cc0f086c7585d6ff68333252769954a3a0603.png" alt="\,_0F_1(a,z) = \sum_{k=0}^{\infty} \frac{1}{(a)_k} \frac{z^k}{k!}." /></p>
</div><p>This function satisfies the differential equation <img class="math" src="../_images/math/b8016bf152ac73658fcb67fdd870abe8913ff556.png" alt="z f''(z) + a f'(z) = f(z)"/>,
and is related to the Bessel function of the first kind (see <a title="mpmath.besselj" class="reference external" href="bessel.html#mpmath.besselj"><tt class="xref docutils literal"><span class="pre">besselj()</span></tt></a>).</p>
<p><tt class="docutils literal"><span class="pre">hyp0f1(a,z)</span></tt> is equivalent to <tt class="docutils literal"><span class="pre">hyper([],[a],z)</span></tt>; see documentation for
<a title="mpmath.hyper" class="reference internal" href="#mpmath.hyper"><tt class="xref docutils literal"><span class="pre">hyper()</span></tt></a> for more information.</p>
<p><strong>Examples</strong></p>
<p>Evaluation for arbitrary 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">hyp0f1</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">1.130318207984970054415392</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp0f1</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">1234567</span><span class="p">)</span>
<span class="go">6.27287187546220705604627e+964</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp0f1</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">1000000</span><span class="n">j</span><span class="p">)</span>
<span class="go">(3.905169561300910030267132e+606 + 3.807708544441684513934213e+606j)</span>
</pre></div>
</div>
<p>Evaluation is supported for arbitrarily large values of <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/>,
using asymptotic expansions:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyp0f1</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="o">**</span><span class="mi">50</span><span class="p">)</span>
<span class="go">2.131705322874965310390701e+8685889638065036553022565</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp0f1</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">10</span><span class="o">**</span><span class="mi">50</span><span class="p">)</span>
<span class="go">1.115945364792025420300208e-13</span>
</pre></div>
</div>
<p>Verifying the differential equation:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="mf">2.5</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">z</span><span class="p">:</span> <span class="n">hyp0f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</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="gp">... </span>    <span class="n">chop</span><span class="p">(</span><span class="n">z</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">f</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="o">+</span> <span class="n">a</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">f</span><span class="p">,</span><span class="n">z</span><span class="p">)</span> <span class="o">-</span> <span class="n">f</span><span class="p">(</span><span class="n">z</span><span class="p">))</span>
<span class="gp">...</span>
<span class="go">0.0</span>
<span class="go">0.0</span>
<span class="go">0.0</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="hyp1f1">
<h3><tt class="xref docutils literal"><span class="pre">hyp1f1()</span></tt><a class="headerlink" href="#hyp1f1" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hyp1f1">
<tt class="descclassname">mpmath.</tt><tt class="descname">hyp1f1</tt><big>(</big><em>a</em>, <em>b</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.hyp1f1" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the confluent hypergeometric function of the first kind,</p>
<div class="math">
<p><img src="../_images/math/42abb27709b665b9960744fb30acde08356a25a1.png" alt="\,_1F_1(a,b,z) = \sum_{k=0}^{\infty} \frac{(a)_k}{(b)_k} \frac{z^k}{k!}," /></p>
</div><p>also known as Kummer&#8217;s function and sometimes denoted by <img class="math" src="../_images/math/079306a273b2e1e7d00b4ac1845e86b89b6abd80.png" alt="M(a,b,z)"/>. This
function gives one solution to the confluent (Kummer&#8217;s) differential equation</p>
<div class="math">
<p><img src="../_images/math/6b308cd303a13f3caeefe6421ffc15a59ff7d2b1.png" alt="z f''(z) + (b-z) f'(z) - af(z) = 0." /></p>
</div><p>A second solution is given by the <img class="math" src="../_images/math/e2bbebb3bd73f1ae5c64098ab0244f739abf7ca4.png" alt="U"/> function; see <a title="mpmath.hyperu" class="reference external" href="bessel.html#mpmath.hyperu"><tt class="xref docutils literal"><span class="pre">hyperu()</span></tt></a>.
Solutions are also given in an alternate form by the Whittaker
functions (<a title="mpmath.whitm" class="reference external" href="bessel.html#mpmath.whitm"><tt class="xref docutils literal"><span class="pre">whitm()</span></tt></a>, <a title="mpmath.whitw" class="reference external" href="bessel.html#mpmath.whitw"><tt class="xref docutils literal"><span class="pre">whitw()</span></tt></a>).</p>
<p><tt class="docutils literal"><span class="pre">hyp1f1(a,b,z)</span></tt> is equivalent
to <tt class="docutils literal"><span class="pre">hyper([a],[b],z)</span></tt>; see documentation for <a title="mpmath.hyper" class="reference internal" href="#mpmath.hyper"><tt class="xref docutils literal"><span class="pre">hyper()</span></tt></a> for more
information.</p>
<p><strong>Examples</strong></p>
<p>Evaluation for real and complex values of the argument <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/>, with
fixed parameters <img class="math" src="../_images/math/551d75423e2e2e95b8048ee19d3c502573eab9e1.png" alt="a = 2, b = -1/3"/>:</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">hyp1f1</span><span class="p">(</span><span class="mi">2</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">3</span><span class="p">),</span> <span class="mf">3.25</span><span class="p">)</span>
<span class="go">-2815.956856924817275640248</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f1</span><span class="p">(</span><span class="mi">2</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">3</span><span class="p">),</span> <span class="o">-</span><span class="mf">3.25</span><span class="p">)</span>
<span class="go">-1.145036502407444445553107</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f1</span><span class="p">(</span><span class="mi">2</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">3</span><span class="p">),</span> <span class="mi">1000</span><span class="p">)</span>
<span class="go">-8.021799872770764149793693e+441</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f1</span><span class="p">(</span><span class="mi">2</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">3</span><span class="p">),</span> <span class="o">-</span><span class="mi">1000</span><span class="p">)</span>
<span class="go">0.000003131987633006813594535331</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f1</span><span class="p">(</span><span class="mi">2</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">3</span><span class="p">),</span> <span class="mi">100</span><span class="o">+</span><span class="mi">100</span><span class="n">j</span><span class="p">)</span>
<span class="go">(-3.189190365227034385898282e+48 - 1.106169926814270418999315e+49j)</span>
</pre></div>
</div>
<p>Parameters may be complex:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f1</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="o">-</span><span class="mi">1</span><span class="o">+</span><span class="n">j</span><span class="p">,</span> <span class="mi">10</span><span class="n">j</span><span class="p">)</span>
<span class="go">(261.8977905181045142673351 + 160.8930312845682213562172j)</span>
</pre></div>
</div>
<p>Arbitrarily large values of <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/> are supported:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f1</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">10</span><span class="o">**</span><span class="mi">20</span><span class="p">)</span>
<span class="go">3.890569218254486878220752e+43429448190325182745</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f1</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="o">-</span><span class="mi">10</span><span class="o">**</span><span class="mi">20</span><span class="p">)</span>
<span class="go">6.0e-60</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f1</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">10</span><span class="o">**</span><span class="mi">20</span><span class="o">*</span><span class="n">j</span><span class="p">)</span>
<span class="go">(-1.935753855797342532571597e-20 - 2.291911213325184901239155e-20j)</span>
</pre></div>
</div>
<p>Verifying the differential equation:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="mf">1.5</span><span class="p">,</span> <span class="mi">2</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">z</span><span class="p">:</span> <span class="n">hyp1f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">10</span><span class="p">,</span> <span class="mi">3</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="gp">... </span>    <span class="n">chop</span><span class="p">(</span><span class="n">z</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">f</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="o">+</span> <span class="p">(</span><span class="n">b</span><span class="o">-</span><span class="n">z</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">f</span><span class="p">,</span><span class="n">z</span><span class="p">)</span> <span class="o">-</span> <span class="n">a</span><span class="o">*</span><span class="n">f</span><span class="p">(</span><span class="n">z</span><span class="p">))</span>
<span class="gp">...</span>
<span class="go">0.0</span>
<span class="go">0.0</span>
<span class="go">0.0</span>
<span class="go">0.0</span>
</pre></div>
</div>
<p>An integral representation:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="mf">1.5</span><span class="p">,</span> <span class="mi">3</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="mf">1.5</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="go">2.269381460919952778587441</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">g</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="n">exp</span><span class="p">(</span><span class="n">z</span><span class="o">*</span><span class="n">t</span><span class="p">)</span><span class="o">*</span><span class="n">t</span><span class="o">**</span><span class="p">(</span><span class="n">a</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">t</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="n">b</span><span class="o">-</span><span class="n">a</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">gammaprod</span><span class="p">([</span><span class="n">b</span><span class="p">],[</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="o">-</span><span class="n">a</span><span class="p">])</span><span class="o">*</span><span class="n">quad</span><span class="p">(</span><span class="n">g</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.269381460919952778587441</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="hyp1f2">
<h3><tt class="xref docutils literal"><span class="pre">hyp1f2()</span></tt><a class="headerlink" href="#hyp1f2" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hyp1f2">
<tt class="descclassname">mpmath.</tt><tt class="descname">hyp1f2</tt><big>(</big><em>a1</em>, <em>b1</em>, <em>b2</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.hyp1f2" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the hypergeometric function <img class="math" src="../_images/math/f5c04fd479f49c4a6769a121c500e5cef642569a.png" alt="\,_1F_2(a_1,a_2;b_1,b_2; z)"/>.
The call <tt class="docutils literal"><span class="pre">hyp1f2(a1,b1,b2,z)</span></tt> is equivalent to
<tt class="docutils literal"><span class="pre">hyper([a1],[b1,b2],z)</span></tt>.</p>
<p>Evaluation works for complex and arbitrarily large 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">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span> <span class="o">=</span> <span class="mf">1.5</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">3</span><span class="p">),</span> <span class="mf">2.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="mi">10</span><span class="o">**</span><span class="mi">20</span><span class="p">)</span>
<span class="go">-1.159388148811981535941434e+8685889639</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="o">-</span><span class="mi">10</span><span class="o">**</span><span class="mi">20</span><span class="p">)</span>
<span class="go">-12.60262607892655945795907</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="mi">10</span><span class="o">**</span><span class="mi">20</span><span class="o">*</span><span class="n">j</span><span class="p">)</span>
<span class="go">(4.237220401382240876065501e+6141851464 - 2.950930337531768015892987e+6141851464j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp1f2</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="o">-</span><span class="mi">2</span><span class="n">j</span><span class="p">,</span> <span class="mf">0.5</span><span class="n">j</span><span class="p">,</span> <span class="mi">10</span><span class="o">-</span><span class="mi">20</span><span class="n">j</span><span class="p">)</span>
<span class="go">(135881.9905586966432662004 - 86681.95885418079535738828j)</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="hyp2f0">
<h3><tt class="xref docutils literal"><span class="pre">hyp2f0()</span></tt><a class="headerlink" href="#hyp2f0" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hyp2f0">
<tt class="descclassname">mpmath.</tt><tt class="descname">hyp2f0</tt><big>(</big><em>a</em>, <em>b</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.hyp2f0" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the hypergeometric function <img class="math" src="../_images/math/8b49fdd59c5eec8dbc5c7cff519b70d040456796.png" alt="\,_2F_0"/>, defined formally by the
series</p>
<div class="math">
<p><img src="../_images/math/45cce43e5a69cbc0f122c3e30cd69e17e32688de.png" alt="\,_2F_0(a,b;;z) = \sum_{n=0}^{\infty} (a)_n (b)_n \frac{z^n}{n!}." /></p>
</div><p>This series usually does not converge. For small enough <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/>, it can be viewed
as an asymptotic series that may be summed directly with an appropriate
truncation. When this is not the case, <a title="mpmath.hyp2f0" class="reference internal" href="#mpmath.hyp2f0"><tt class="xref docutils literal"><span class="pre">hyp2f0()</span></tt></a> gives a regularized sum,
or equivalently, it uses a representation in terms of the
hypergeometric U function [1]. The series also converges when either <img class="math" src="../_images/math/c7d457e388298246adb06c587bccd419ea67f7e8.png" alt="a"/> or <img class="math" src="../_images/math/8136a7ef6a03334a7246df9097e5bcc31ba33fd2.png" alt="b"/>
is a nonpositive integer, as it then terminates into a polynomial
after <img class="math" src="../_images/math/5ab0d6b0f629cdfba5b6ce68695ff0c5a2d6fd8d.png" alt="-a"/> or <img class="math" src="../_images/math/2fa30e2beb1820f6b39f6251023709c8165cefc6.png" alt="-b"/> terms.</p>
<p><strong>Examples</strong></p>
<p>Evaluation is supported for arbitrary 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">hyp2f0</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="mf">1.25</span><span class="p">,</span> <span class="o">-</span><span class="mi">100</span><span class="p">)</span>
<span class="go">0.07095851870980052763312791</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f0</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="mf">1.25</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
<span class="go">(-0.03254379032170590665041131 + 0.07269254613282301012735797j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f0</span><span class="p">(</span><span class="o">-</span><span class="mf">0.75</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">4</span><span class="n">j</span><span class="p">)</span>
<span class="go">(-0.3579987031082732264862155 - 3.052951783922142735255881j)</span>
</pre></div>
</div>
<p>Even with real arguments, the regularized value of 2F0 is often complex-valued,
but the imaginary part decreases exponentially as <img class="math" src="../_images/math/dadc522a6eb22c620b2d549edf51b1aedb17590f.png" alt="z \to 0"/>. In the following
example, the first call uses complex evaluation while the second has a small
enough <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/> to evaluate using the direct series and thus the returned value
is strictly real (this should be taken to indicate that the imaginary
part is less than <tt class="docutils literal"><span class="pre">eps</span></tt>):</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">hyp2f0</span><span class="p">(</span><span class="mf">1.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.05</span><span class="p">)</span>
<span class="go">(1.04166637647907 + 8.34584913683906e-8j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f0</span><span class="p">(</span><span class="mf">1.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.0005</span><span class="p">)</span>
<span class="go">1.00037535207621</span>
</pre></div>
</div>
<p>The imaginary part can be retrieved by increasing the working precision:</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">80</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nprint</span><span class="p">(</span><span class="n">hyp2f0</span><span class="p">(</span><span class="mf">1.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.009</span><span class="p">)</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
<span class="go">1.23828e-46</span>
</pre></div>
</div>
<p>In the polynomial case (the series terminating), 2F0 can evaluate exactly:</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">hyp2f0</span><span class="p">(</span><span class="o">-</span><span class="mi">6</span><span class="p">,</span><span class="o">-</span><span class="mi">6</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
<span class="go">291793.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">identify</span><span class="p">(</span><span class="n">hyp2f0</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="mf">0.25</span><span class="p">))</span>
<span class="go">&#39;(5/8)&#39;</span>
</pre></div>
</div>
<p>The coefficients of the polynomials can be recovered using Taylor expansion:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">nprint</span><span class="p">(</span><span class="n">taylor</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">hyp2f0</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="n">x</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">))</span>
<span class="go">[1.0, -1.5, 2.25, -1.875, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nprint</span><span class="p">(</span><span class="n">taylor</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">hyp2f0</span><span class="p">(</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="n">x</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">))</span>
<span class="go">[1.0, -2.0, 4.5, -7.5, 6.5625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]</span>
</pre></div>
</div>
<p>[1] <a class="reference external" href="http://www.math.ucla.edu/~cbm/aands/page_504.htm">http://www.math.ucla.edu/~cbm/aands/page_504.htm</a></p>
</dd></dl>

</div>
<div class="section" id="hyp2f1">
<h3><tt class="xref docutils literal"><span class="pre">hyp2f1()</span></tt><a class="headerlink" href="#hyp2f1" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hyp2f1">
<tt class="descclassname">mpmath.</tt><tt class="descname">hyp2f1</tt><big>(</big><em>a</em>, <em>b</em>, <em>c</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.hyp2f1" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the Gauss hypergeometric function <img class="math" src="../_images/math/88949b5db676bcd9b635abe892e514d84a12f031.png" alt="\,_2F_1"/> (often simply referred to as
<em>the</em> hypergeometric function), defined for <img class="math" src="../_images/math/ade74672574211fc62154f7bf7e7d46c5d62a377.png" alt="|z| &lt; 1"/> as</p>
<div class="math">
<p><img src="../_images/math/6c48c7846124bb3d0c4b5df010917ea5a55145cc.png" alt="\,_2F_1(a,b,c,z) = \sum_{k=0}^{\infty}
    \frac{(a)_k (b)_k}{(c)_k} \frac{z^k}{k!}." /></p>
</div><p>and for <img class="math" src="../_images/math/ce22fc4b843c9a372ec1f6c428859ed4265d5d4a.png" alt="|z| \ge 1"/> by analytic continuation, with a branch cut on <img class="math" src="../_images/math/e639292c6bac8afec032be76b34b4505b4e249c0.png" alt="(1, \infty)"/>
when necessary.</p>
<p>Special cases of this function include many of the orthogonal polynomials as
well as the incomplete beta function and other functions. Properties of the
Gauss hypergeometric function are documented comprehensively in many references,
for example Abramowitz &amp; Stegun, section 15.</p>
<p>The implementation supports the analytic continuation as well as evaluation
close to the unit circle where <img class="math" src="../_images/math/47bbb73d5bb3bc0b65a6f0699f30cf8e0f80a5a6.png" alt="|z| \approx 1"/>. The syntax <tt class="docutils literal"><span class="pre">hyp2f1(a,b,c,z)</span></tt>
is equivalent to <tt class="docutils literal"><span class="pre">hyper([a,b],[c],z)</span></tt>.</p>
<p><strong>Examples</strong></p>
<p>Evaluation with <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/> inside, outside and on the unit circle, for
fixed parameters:</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">hyp2f1</span><span class="p">(</span><span class="mi">2</span><span class="p">,</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">4</span><span class="p">,</span> <span class="mf">0.75</span><span class="p">)</span>
<span class="go">1.303703703703703703703704</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="mi">2</span><span class="p">,</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">4</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.75</span><span class="p">)</span>
<span class="go">0.7431290566046919177853916</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="mi">2</span><span class="p">,</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">4</span><span class="p">,</span> <span class="mf">1.75</span><span class="p">)</span>
<span class="go">(1.418075801749271137026239 - 1.114976146679907015775102j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="mi">2</span><span class="p">,</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">4</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="go">1.6</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="mi">2</span><span class="p">,</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">4</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="go">0.8235498012182875315037882</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="mi">2</span><span class="p">,</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">4</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span>
<span class="go">(0.9144026291433065674259078 + 0.2050415770437884900574923j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="mi">2</span><span class="p">,</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">4</span><span class="p">,</span> <span class="mi">2</span><span class="o">+</span><span class="n">j</span><span class="p">)</span>
<span class="go">(0.9274013540258103029011549 + 0.7455257875808100868984496j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="mi">2</span><span class="p">,</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">4</span><span class="p">,</span> <span class="mf">0.25</span><span class="n">j</span><span class="p">)</span>
<span class="go">(0.9931169055799728251931672 + 0.06154836525312066938147793j)</span>
</pre></div>
</div>
<p>Evaluation with complex parameter values:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</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="mf">0.75</span><span class="p">,</span> <span class="mi">10</span><span class="n">j</span><span class="p">,</span> <span class="mi">1</span><span class="o">+</span><span class="mi">5</span><span class="n">j</span><span class="p">)</span>
<span class="go">(0.8834833319713479923389638 + 0.7053886880648105068343509j)</span>
</pre></div>
</div>
<p>Evaluation with <img class="math" src="../_images/math/5990d6cf0dcf5df54109c8d7814b7b8676659cef.png" alt="z = 1"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="o">-</span><span class="mf">2.5</span><span class="p">,</span> <span class="mf">3.5</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.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="o">-</span><span class="mf">2.5</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">1</span><span class="p">)</span>
<span class="go">0.06926406926406926406926407</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</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="mi">1</span><span class="p">)</span>
<span class="go">+inf</span>
</pre></div>
</div>
<p>Evaluation for huge arguments:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span> <span class="mf">1.75</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="s">&#39;1e100&#39;</span><span class="p">)</span>
<span class="go">(7.883714220959876246415651e+32 + 1.365499358305579597618785e+33j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span> <span class="mf">1.75</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="s">&#39;1e1000000&#39;</span><span class="p">)</span>
<span class="go">(7.883714220959876246415651e+333332 + 1.365499358305579597618785e+333333j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span> <span class="mf">1.75</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="s">&#39;1e1000000j&#39;</span><span class="p">)</span>
<span class="go">(1.365499358305579597618785e+333333 - 7.883714220959876246415651e+333332j)</span>
</pre></div>
</div>
<p>An integral representation:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">z</span> <span class="o">=</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">2.5</span><span class="p">,</span> <span class="mf">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">g</span> <span class="o">=</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="p">(</span><span class="n">b</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">t</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="n">c</span><span class="o">-</span><span class="n">b</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">*</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="n">z</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="o">-</span><span class="n">a</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">gammaprod</span><span class="p">([</span><span class="n">c</span><span class="p">],[</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="o">-</span><span class="n">b</span><span class="p">])</span> <span class="o">*</span> <span class="n">quad</span><span class="p">(</span><span class="n">g</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.9480458814362824478852618</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="go">0.9480458814362824478852618</span>
</pre></div>
</div>
<p>Verifying the hypergeometric differential equation:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">z</span><span class="p">:</span> <span class="n">hyp2f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">z</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">z</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">f</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="o">+</span> <span class="p">(</span><span class="n">c</span><span class="o">-</span><span class="p">(</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">z</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">f</span><span class="p">,</span><span class="n">z</span><span class="p">)</span> <span class="o">-</span> <span class="n">a</span><span class="o">*</span><span class="n">b</span><span class="o">*</span><span class="n">f</span><span class="p">(</span><span class="n">z</span><span class="p">))</span>
<span class="go">0.0</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="hyp2f2">
<h3><tt class="xref docutils literal"><span class="pre">hyp2f2()</span></tt><a class="headerlink" href="#hyp2f2" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hyp2f2">
<tt class="descclassname">mpmath.</tt><tt class="descname">hyp2f2</tt><big>(</big><em>a1</em>, <em>a2</em>, <em>b1</em>, <em>b2</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.hyp2f2" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the hypergeometric function <img class="math" src="../_images/math/a8ba59c8aad45362c14812205346428d854e00bd.png" alt="\,_2F_2(a_1,a_2;b_1,b_2; z)"/>.
The call <tt class="docutils literal"><span class="pre">hyp2f2(a1,a2,b1,b2,z)</span></tt> is equivalent to
<tt class="docutils literal"><span class="pre">hyper([a1,a2],[b1,b2],z)</span></tt>.</p>
<p>Evaluation works for complex and arbitrarily large 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">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span> <span class="o">=</span> <span class="mf">1.5</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">3</span><span class="p">),</span> <span class="mf">2.25</span><span class="p">,</span> <span class="mi">4</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="mi">10</span><span class="o">**</span><span class="mi">20</span><span class="p">)</span>
<span class="go">-5.275758229007902299823821e+43429448190325182663</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="o">-</span><span class="mi">10</span><span class="o">**</span><span class="mi">20</span><span class="p">)</span>
<span class="go">2561445.079983207701073448</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="mi">10</span><span class="o">**</span><span class="mi">20</span><span class="o">*</span><span class="n">j</span><span class="p">)</span>
<span class="go">(2218276.509664121194836667 - 1280722.539991603850462856j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f2</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="o">-</span><span class="mi">2</span><span class="n">j</span><span class="p">,</span> <span class="mf">0.5</span><span class="n">j</span><span class="p">,</span> <span class="mi">4</span><span class="n">j</span><span class="p">,</span> <span class="mi">10</span><span class="o">-</span><span class="mi">20</span><span class="n">j</span><span class="p">)</span>
<span class="go">(80500.68321405666957342788 - 20346.82752982813540993502j)</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="hyp2f3">
<h3><tt class="xref docutils literal"><span class="pre">hyp2f3()</span></tt><a class="headerlink" href="#hyp2f3" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hyp2f3">
<tt class="descclassname">mpmath.</tt><tt class="descname">hyp2f3</tt><big>(</big><em>a1</em>, <em>a2</em>, <em>b1</em>, <em>b2</em>, <em>b3</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.hyp2f3" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the hypergeometric function <img class="math" src="../_images/math/e23ee0d83a0f608ed3b9e75f24825279851405e2.png" alt="\,_2F_3(a_1,a_2;b_1,b_2,b_3; z)"/>.
The call <tt class="docutils literal"><span class="pre">hyp2f3(a1,a2,b1,b2,b3,z)</span></tt> is equivalent to
<tt class="docutils literal"><span class="pre">hyper([a1,a2],[b1,b2,b3],z)</span></tt>.</p>
<p>Evaluation works for arbitrarily large 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">a1</span><span class="p">,</span><span class="n">a2</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">b3</span> <span class="o">=</span> <span class="mf">1.5</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">3</span><span class="p">),</span> <span class="mf">2.25</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</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="gp">&gt;&gt;&gt; </span><span class="n">hyp2f3</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="n">a2</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">b3</span><span class="p">,</span><span class="mi">10</span><span class="o">**</span><span class="mi">20</span><span class="p">)</span>
<span class="go">-4.169178177065714963568963e+8685889590</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f3</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="n">a2</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">b3</span><span class="p">,</span><span class="o">-</span><span class="mi">10</span><span class="o">**</span><span class="mi">20</span><span class="p">)</span>
<span class="go">7064472.587757755088178629</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f3</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="n">a2</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">b3</span><span class="p">,</span><span class="mi">10</span><span class="o">**</span><span class="mi">20</span><span class="o">*</span><span class="n">j</span><span class="p">)</span>
<span class="go">(-5.163368465314934589818543e+6141851415 + 1.783578125755972803440364e+6141851416j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f3</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="o">-</span><span class="mi">2</span><span class="n">j</span><span class="p">,</span> <span class="mf">0.5</span><span class="n">j</span><span class="p">,</span> <span class="mi">4</span><span class="n">j</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">j</span><span class="p">,</span> <span class="mi">10</span><span class="o">-</span><span class="mi">20</span><span class="n">j</span><span class="p">)</span>
<span class="go">(-2280.938956687033150740228 + 13620.97336609573659199632j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f3</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="o">-</span><span class="mi">2</span><span class="n">j</span><span class="p">,</span> <span class="mf">0.5</span><span class="n">j</span><span class="p">,</span> <span class="mi">4</span><span class="n">j</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="o">-</span><span class="n">j</span><span class="p">,</span> <span class="mi">10000000</span><span class="o">-</span><span class="mi">20000000</span><span class="n">j</span><span class="p">)</span>
<span class="go">(4.849835186175096516193e+3504 - 3.365981529122220091353633e+3504j)</span>
</pre></div>
</div>
</dd></dl>

</div>
<div class="section" id="hyp3f2">
<h3><tt class="xref docutils literal"><span class="pre">hyp3f2()</span></tt><a class="headerlink" href="#hyp3f2" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hyp3f2">
<tt class="descclassname">mpmath.</tt><tt class="descname">hyp3f2</tt><big>(</big><em>a1</em>, <em>a2</em>, <em>a3</em>, <em>b1</em>, <em>b2</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.hyp3f2" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the generalized hypergeometric function <img class="math" src="../_images/math/7c995e1fce566eae381916b3f209ecbde83ce7f7.png" alt="\,_3F_2"/>, defined for <img class="math" src="../_images/math/ade74672574211fc62154f7bf7e7d46c5d62a377.png" alt="|z| &lt; 1"/>
as</p>
<div class="math">
<p><img src="../_images/math/a02d545e700862e863edfb6bf42a61c20f402da9.png" alt="\,_3F_2(a_1,a_2,a_3,b_1,b_2,z) = \sum_{k=0}^{\infty}
    \frac{(a_1)_k (a_2)_k (a_3)_k}{(b_1)_k (b_2)_k} \frac{z^k}{k!}." /></p>
</div><p>and for <img class="math" src="../_images/math/ce22fc4b843c9a372ec1f6c428859ed4265d5d4a.png" alt="|z| \ge 1"/> by analytic continuation. The analytic structure of this
function is similar to that of <img class="math" src="../_images/math/88949b5db676bcd9b635abe892e514d84a12f031.png" alt="\,_2F_1"/>, generally with a singularity at
<img class="math" src="../_images/math/5990d6cf0dcf5df54109c8d7814b7b8676659cef.png" alt="z = 1"/> and a branch cut on <img class="math" src="../_images/math/e639292c6bac8afec032be76b34b4505b4e249c0.png" alt="(1, \infty)"/>.</p>
<p>Evaluation is supported inside, on, and outside
the circle of convergence <img class="math" src="../_images/math/83147269611ed30c50eb2ddeb1b275003b3ab032.png" alt="|z| = 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">hyp3f2</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="mi">5</span><span class="p">,</span><span class="mf">0.25</span><span class="p">)</span>
<span class="go">1.083533123380934241548707</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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">2</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="p">,</span><span class="mi">5</span><span class="p">,</span><span class="o">-</span><span class="mi">10</span><span class="o">+</span><span class="mi">10</span><span class="n">j</span><span class="p">)</span>
<span class="go">(0.1574651066006004632914361 - 0.03194209021885226400892963j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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="mi">5</span><span class="p">,</span><span class="o">-</span><span class="mi">10</span><span class="p">)</span>
<span class="go">0.3071141169208772603266489</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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="mi">5</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span>
<span class="go">(-0.4857045320523947050581423 - 0.5988311440454888436888028j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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="mi">1</span><span class="p">,</span><span class="mi">2</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">1.157370995096772047567631</span>
<span class="gp">&gt;&gt;&gt; </span><span class="p">(</span><span class="mi">8</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">ln2</span><span class="p">)</span><span class="o">/</span><span class="mi">3</span>
<span class="go">1.157370995096772047567631</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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="mf">0.5</span><span class="n">j</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">2</span><span class="n">j</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="go">(1.74518490615029486475959 + 0.1454701525056682297614029j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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="mf">0.5</span><span class="n">j</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">2</span><span class="n">j</span><span class="p">,</span><span class="n">sqrt</span><span class="p">(</span><span class="n">j</span><span class="p">))</span>
<span class="go">(0.9829816481834277511138055 - 0.4059040020276937085081127j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</span><span class="p">(</span><span class="o">-</span><span class="mi">3</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">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1.41</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</span><span class="p">(</span><span class="o">-</span><span class="mi">3</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">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
<span class="go">2.12</span>
</pre></div>
</div>
<p>Evaluation very close to the unit circle:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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="mi">5</span><span class="p">,</span><span class="s">&#39;1.0001&#39;</span><span class="p">)</span>
<span class="go">(1.564877796743282766872279 - 3.76821518787438186031973e-11j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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="mi">5</span><span class="p">,</span><span class="s">&#39;1+0.0001j&#39;</span><span class="p">)</span>
<span class="go">(1.564747153061671573212831 + 0.0001305757570366084557648482j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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="mi">5</span><span class="p">,</span><span class="s">&#39;0.9999&#39;</span><span class="p">)</span>
<span class="go">1.564616644881686134983664</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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="mi">5</span><span class="p">,</span><span class="s">&#39;-0.9999&#39;</span><span class="p">)</span>
<span class="go">0.7823896253461678060196207</span>
</pre></div>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Evaluation for <img class="math" src="../_images/math/cb9fdb0109880d84a63c9757afd06ea821fe1b53.png" alt="|z-1|"/> small can currently be inaccurate or slow
for some parameter combinations.</p>
</div>
<p>For various parameter combinations, <img class="math" src="../_images/math/7c995e1fce566eae381916b3f209ecbde83ce7f7.png" alt="\,_3F_2"/> admits representation in terms
of hypergeometric functions of lower degree, or in terms of
simpler functions:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">z</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="o">-</span><span class="mi">1</span><span class="p">),</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="mi">1</span><span class="p">)]:</span>
<span class="gp">... </span>    <span class="n">hyp2f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">a</span><span class="o">+</span><span class="n">b</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="o">**</span><span class="mi">2</span>
<span class="gp">... </span>    <span class="n">hyp3f2</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">a</span><span class="p">,</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="n">b</span><span class="p">,</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">+</span><span class="mf">0.5</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="n">a</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">b</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="gp">...</span>
<span class="go">0.4246104461966439006086308</span>
<span class="go">0.4246104461966439006086308</span>
<span class="go">7.111111111111111111111111</span>
<span class="go">7.111111111111111111111111</span>

<span class="gp">&gt;&gt;&gt; </span><span class="n">z</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="gp">&gt;&gt;&gt; </span><span class="n">hyp3f2</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">1.5</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="n">z</span><span class="p">)</span>
<span class="go">(0.7621440939243342419729144 + 0.4249117735058037649915723j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mi">4</span><span class="o">*</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">ellipe</span><span class="p">(</span><span class="n">z</span><span class="p">))</span><span class="o">/</span><span class="p">(</span><span class="n">pi</span><span class="o">*</span><span class="n">z</span><span class="p">)</span>
<span class="go">(0.7621440939243342419729144 + 0.4249117735058037649915723j)</span>
</pre></div>
</div>
</dd></dl>

</div>
</div>
<div class="section" id="generalized-hypergeometric-functions">
<h2>Generalized hypergeometric functions<a class="headerlink" href="#generalized-hypergeometric-functions" title="Permalink to this headline">¶</a></h2>
<div class="section" id="hyper">
<h3><tt class="xref docutils literal"><span class="pre">hyper()</span></tt><a class="headerlink" href="#hyper" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hyper">
<tt class="descclassname">mpmath.</tt><tt class="descname">hyper</tt><big>(</big><em>a_s</em>, <em>b_s</em>, <em>z</em><big>)</big><a class="headerlink" href="#mpmath.hyper" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the generalized hypergeometric function</p>
<div class="math">
<p><img src="../_images/math/80b5506302d3e2227a13b9fc50c7947888a89793.png" alt="\,_pF_q(a_1,\ldots,a_p; b_1,\ldots,b_q; z) =
\sum_{n=0}^\infty \frac{(a_1)_n (a_2)_n \ldots (a_p)_n}
   {(b_1)_n(b_2)_n\ldots(b_q)_n} \frac{z^n}{n!}" /></p>
</div><p>where <img class="math" src="../_images/math/47746f330c175a38d98099f8002410481661e696.png" alt="(x)_n"/> denotes the rising factorial (see <a title="mpmath.rf" class="reference external" href="gamma.html#mpmath.rf"><tt class="xref docutils literal"><span class="pre">rf()</span></tt></a>).</p>
<p>The parameters lists <tt class="docutils literal"><span class="pre">a_s</span></tt> and <tt class="docutils literal"><span class="pre">b_s</span></tt> may contain integers,
real numbers, complex numbers, as well as exact fractions given in
the form of tuples <img class="math" src="../_images/math/e148d95e9a2349eff0d0ccd1ec50ace5fa25269b.png" alt="(p, q)"/>. <a title="mpmath.hyper" class="reference internal" href="#mpmath.hyper"><tt class="xref docutils literal"><span class="pre">hyper()</span></tt></a> is optimized to handle
integers and fractions more efficiently than arbitrary
floating-point parameters (since rational parameters are by
far the most common).</p>
<p><strong>Examples</strong></p>
<p>Verifying that <a title="mpmath.hyper" class="reference internal" href="#mpmath.hyper"><tt class="xref docutils literal"><span class="pre">hyper()</span></tt></a> gives the sum in the definition, by
comparison with <a title="mpmath.nsum" class="reference external" href="../calculus/sums_limits.html#mpmath.nsum"><tt class="xref docutils literal"><span class="pre">nsum()</span></tt></a>:</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">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">d</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">x</span> <span class="o">=</span> <span class="mf">0.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</span><span class="p">([</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">],[</span><span class="n">c</span><span class="p">,</span><span class="n">d</span><span class="p">],</span><span class="n">x</span><span class="p">)</span>
<span class="go">1.078903941164934876086237</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fn</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">rf</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">/</span><span class="n">rf</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">/</span><span class="n">rf</span><span class="p">(</span><span class="n">d</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="n">n</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nsum</span><span class="p">(</span><span class="n">fn</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">1.078903941164934876086237</span>
</pre></div>
</div>
<p>The parameters can be any combination of integers, fractions,
floats and complex numbers:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="n">e</span> <span class="o">=</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">2</span><span class="p">),</span> <span class="n">pi</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="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="mf">0.2</span><span class="n">j</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</span><span class="p">([</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">],[</span><span class="n">c</span><span class="p">,</span><span class="n">d</span><span class="p">,</span><span class="n">e</span><span class="p">],</span><span class="n">x</span><span class="p">)</span>
<span class="go">(0.9923571616434024810831887 - 0.005753848733883879742993122j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span><span class="p">,</span> <span class="n">e</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">mpf</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="gp">&gt;&gt;&gt; </span><span class="n">fn</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">rf</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">/</span><span class="n">rf</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">/</span><span class="n">rf</span><span class="p">(</span><span class="n">d</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">/</span><span class="n">rf</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">x</span><span class="o">**</span><span class="n">n</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nsum</span><span class="p">(</span><span class="n">fn</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.9923571616434024810831887 - 0.005753848733883879742993122j)</span>
</pre></div>
</div>
<p>The <img class="math" src="../_images/math/ffebb10456df346fb9bd1e876c93ca6d08ed897d.png" alt="\,_0F_0"/> and <img class="math" src="../_images/math/e9fb7275512d4188da58ea699a561756550b5114.png" alt="\,_1F_0"/> series are just elementary functions:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span> <span class="n">z</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="n">pi</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</span><span class="p">([],[],</span><span class="n">z</span><span class="p">)</span>
<span class="go">23.14069263277926900572909</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">exp</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
<span class="go">23.14069263277926900572909</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</span><span class="p">([</span><span class="n">a</span><span class="p">],[],</span><span class="n">z</span><span class="p">)</span>
<span class="go">(-0.09069132879922920160334114 + 0.3283224323946162083579656j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="p">(</span><span class="mi">1</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="n">a</span><span class="p">)</span>
<span class="go">(-0.09069132879922920160334114 + 0.3283224323946162083579656j)</span>
</pre></div>
</div>
<p>If any <img class="math" src="../_images/math/bea4d576937a04ec200b1037fc8ee33e8f744cb1.png" alt="a_k"/> coefficient is a nonpositive integer, the series terminates
into a finite polynomial:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="o">-</span><span class="mi">3</span><span class="p">],[</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">],</span><span class="mi">1</span><span class="p">)</span>
<span class="go">0.7904761904761904761904762</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">identify</span><span class="p">(</span><span class="n">_</span><span class="p">)</span>
<span class="go">&#39;(83/105)&#39;</span>
</pre></div>
</div>
<p>If any <img class="math" src="../_images/math/b6bdec4394870e8a713538ce428bea9d41c8775f.png" alt="b_k"/> is a nonpositive integer, the function is undefined (unless the
series terminates before the division by zero occurs):</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="o">-</span><span class="mi">3</span><span class="p">],[</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">],</span><span class="mi">1</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
  <span class="c">...</span>
<span class="nc">ZeroDivisionError</span>: <span class="n-Identifier">pole in hypergeometric series</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="o">-</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="mi">5</span><span class="p">],</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1.1</span>
</pre></div>
</div>
<p>Except for polynomial cases, the radius of convergence <img class="math" src="../_images/math/eff43e84f8a3bcf7b6965f0a3248bc4d3a9d0cd4.png" alt="R"/> of the hypergeometric
series is either <img class="math" src="../_images/math/15c1bc30f2d6af887a97e34320eca5015ac69d6a.png" alt="R = \infty"/> (if <img class="math" src="../_images/math/0e1fd965d851b1c8737295f1a5bc7f3462150544.png" alt="p \le q"/>), <img class="math" src="../_images/math/b8d403ff11f7c159633466e7157001edcabbc5d8.png" alt="R = 1"/> (if <img class="math" src="../_images/math/4570811b9cc3df8c73a397f9c611e1f5e320031c.png" alt="p = q+1"/>), or
<img class="math" src="../_images/math/f5dacc8403b2a564811baeb68316fabb2e309c47.png" alt="R = 0"/> (if <img class="math" src="../_images/math/b4698ca8d24bd2dabbbfc9b3ac90975d055c0e7f.png" alt="p &gt; q+1"/>).</p>
<p>The analytic continuations of the functions with <img class="math" src="../_images/math/4570811b9cc3df8c73a397f9c611e1f5e320031c.png" alt="p = q+1"/>, i.e. <img class="math" src="../_images/math/88949b5db676bcd9b635abe892e514d84a12f031.png" alt="\,_2F_1"/>,
<img class="math" src="../_images/math/7c995e1fce566eae381916b3f209ecbde83ce7f7.png" alt="\,_3F_2"/>,  <img class="math" src="../_images/math/78e467ac66cfd4e6d10365293bc7c6c6bd6e8345.png" alt="\,_4F_3"/>, etc, are all implemented and therefore these functions
can be evaluated for <img class="math" src="../_images/math/ce22fc4b843c9a372ec1f6c428859ed4265d5d4a.png" alt="|z| \ge 1"/>. The shortcuts <a title="mpmath.hyp2f1" class="reference internal" href="#mpmath.hyp2f1"><tt class="xref docutils literal"><span class="pre">hyp2f1()</span></tt></a>, <a title="mpmath.hyp3f2" class="reference internal" href="#mpmath.hyp3f2"><tt class="xref docutils literal"><span class="pre">hyp3f2()</span></tt></a>
are available to handle the most common cases (see their documentation),
but functions of higher degree are also supported via <a title="mpmath.hyper" class="reference internal" href="#mpmath.hyper"><tt class="xref docutils literal"><span class="pre">hyper()</span></tt></a>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">],</span> <span class="mi">1</span><span class="p">)</span>   <span class="c"># 4F3 at finite-valued branch point</span>
<span class="go">1.141783505526870731311423</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</span><span class="p">([</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">],</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">1</span><span class="p">)</span>   <span class="c"># 4F3 at pole</span>
<span class="go">+inf</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="mi">5</span><span class="p">],</span> <span class="p">[</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">],</span> <span class="mi">10</span><span class="p">)</span>    <span class="c"># 5F4</span>
<span class="go">(1.543998916527972259717257 - 0.5876309929580408028816365j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">],</span> <span class="p">[</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="mi">11</span><span class="p">],</span> <span class="mi">1</span><span class="n">j</span><span class="p">)</span>   <span class="c"># 6F5</span>
<span class="go">(0.9996565821853579063502466 + 0.0129721075905630604445669j)</span>
</pre></div>
</div>
<p>Near <img class="math" src="../_images/math/5990d6cf0dcf5df54109c8d7814b7b8676659cef.png" alt="z = 1"/> with noninteger parameters:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</span><span class="p">([</span><span class="s">&#39;1/3&#39;</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="s">&#39;3/2&#39;</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="s">&#39;1/5&#39;</span><span class="p">,</span><span class="s">&#39;11/6&#39;</span><span class="p">,</span><span class="s">&#39;41/8&#39;</span><span class="p">],</span> <span class="mi">1</span><span class="p">)</span>
<span class="go">2.219433352235586121250027</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</span><span class="p">([</span><span class="s">&#39;1/3&#39;</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="s">&#39;3/2&#39;</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="s">&#39;1/5&#39;</span><span class="p">,</span><span class="s">&#39;11/6&#39;</span><span class="p">,</span><span class="s">&#39;5/4&#39;</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">eps1</span> <span class="o">=</span> <span class="n">extradps</span><span class="p">(</span><span class="mi">6</span><span class="p">)(</span><span class="k">lambda</span><span class="p">:</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">mpf</span><span class="p">(</span><span class="s">&#39;1e-6&#39;</span><span class="p">))()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</span><span class="p">([</span><span class="s">&#39;1/3&#39;</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="s">&#39;3/2&#39;</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="s">&#39;1/5&#39;</span><span class="p">,</span><span class="s">&#39;11/6&#39;</span><span class="p">,</span><span class="s">&#39;5/4&#39;</span><span class="p">],</span> <span class="n">eps1</span><span class="p">)</span>
<span class="go">2923978034.412973409330956</span>
</pre></div>
</div>
<p>Please note that, as currently implemented, evaluation of <img class="math" src="../_images/math/176cc744317162af05f807c6ee8f3ba09faf3081.png" alt="\,_pF_{p-1}"/>
with <img class="math" src="../_images/math/cfd2a3325b5cadd3241426c21a4f829e915aa864.png" alt="p \ge 3"/> may be slow or inaccurate when <img class="math" src="../_images/math/cb9fdb0109880d84a63c9757afd06ea821fe1b53.png" alt="|z-1|"/> is small,
for some parameter values.</p>
<p>When <img class="math" src="../_images/math/b4698ca8d24bd2dabbbfc9b3ac90975d055c0e7f.png" alt="p &gt; q+1"/>, <tt class="docutils literal"><span class="pre">hyper</span></tt> computes the (iterated) Borel sum of the divergent
series. For <img class="math" src="../_images/math/8b49fdd59c5eec8dbc5c7cff519b70d040456796.png" alt="\,_2F_0"/> the Borel sum has an analytic solution and can be
computed efficiently (see <a title="mpmath.hyp2f0" class="reference internal" href="#mpmath.hyp2f0"><tt class="xref docutils literal"><span class="pre">hyp2f0()</span></tt></a>). For higher degrees, the functions
is evaluated first by attempting to sum it directly as an asymptotic
series (this only works for tiny <img class="math" src="../_images/math/77888cf7d3c4635b8bc8c06ee89dc2a2d2f86538.png" alt="|z|"/>), and then by evaluating the Borel
regularized sum using numerical integration. Except for
special parameter combinations, this can be extremely slow.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="mf">0.5</span><span class="p">)</span>          <span class="c"># regularization of 2F0</span>
<span class="go">(1.340965419580146562086448 + 0.8503366631752726568782447j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mf">0.5</span><span class="p">)</span>     <span class="c"># regularization of 4F1</span>
<span class="go">(1.108287213689475145830699 + 0.5327107430640678181200491j)</span>
</pre></div>
</div>
<p>With the following magnitude of argument, the asymptotic series for <img class="math" src="../_images/math/c780d570354901e2dff5b579dd08ff706859fe7c.png" alt="\,_3F_1"/>
gives only a few digits. Using Borel summation, <tt class="docutils literal"><span class="pre">hyper</span></tt> can produce
a value with full accuracy:</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">hyper</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="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mf">5.25</span><span class="p">],</span> <span class="s">&#39;0.08&#39;</span><span class="p">,</span> <span class="n">force_series</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
  <span class="c">...</span>
<span class="nc">NoConvergence</span>: <span class="n-Identifier">Hypergeometric series converges too slowly. Try increasing maxterms.</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mf">5.25</span><span class="p">],</span> <span class="s">&#39;0.08&#39;</span><span class="p">,</span> <span class="n">asymp_tol</span><span class="o">=</span><span class="mf">1e-4</span><span class="p">)</span>
<span class="go">1.0725535790737</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mf">5.25</span><span class="p">],</span> <span class="s">&#39;0.08&#39;</span><span class="p">)</span>
<span class="go">(1.07269542893559 + 5.54668863216891e-5j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mf">5.25</span><span class="p">],</span> <span class="s">&#39;-0.08&#39;</span><span class="p">,</span> <span class="n">asymp_tol</span><span class="o">=</span><span class="mf">1e-4</span><span class="p">)</span>
<span class="go">0.946344925484879</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</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="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mf">5.25</span><span class="p">],</span> <span class="s">&#39;-0.08&#39;</span><span class="p">)</span>
<span class="go">0.946312503737771</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">hyper</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="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mf">5.25</span><span class="p">],</span> <span class="s">&#39;-0.08&#39;</span><span class="p">)</span>
<span class="go">0.9463125037377662296700858</span>
</pre></div>
</div>
<p>Note that with the positive <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/> value, there is a complex part in the
correct result, which falls below the tolerance of the asymptotic series.</p>
</dd></dl>

</div>
<div class="section" id="hypercomb">
<h3><tt class="xref docutils literal"><span class="pre">hypercomb()</span></tt><a class="headerlink" href="#hypercomb" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hypercomb">
<tt class="descclassname">mpmath.</tt><tt class="descname">hypercomb</tt><big>(</big><em>ctx</em>, <em>function</em>, <em>params=</em><span class="optional">[</span><span class="optional">]</span>, <em>discard_known_zeros=True</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.hypercomb" title="Permalink to this definition">¶</a></dt>
<dd><p>Computes a weighted combination of hypergeometric functions</p>
<div class="math">
<p><img src="../_images/math/2ea79e6c0c8b2fee90804955879fd6ab0b711f2c.png" alt="\sum_{r=1}^N \left[ \prod_{k=1}^{l_r} {w_{r,k}}^{c_{r,k}}
\frac{\prod_{k=1}^{m_r} \Gamma(\alpha_{r,k})}{\prod_{k=1}^{n_r}
\Gamma(\beta_{r,k})}
\,_{p_r}F_{q_r}(a_{r,1},\ldots,a_{r,p}; b_{r,1},
\ldots, b_{r,q}; z_r)\right]." /></p>
</div><p>Typically the parameters are linear combinations of a small set of base
parameters; <a title="mpmath.hypercomb" class="reference internal" href="#mpmath.hypercomb"><tt class="xref docutils literal"><span class="pre">hypercomb()</span></tt></a> permits computing a correct value in
the case that some of the <img class="math" src="../_images/math/10f32377ac67d94f764f12a15ea987e88c85d3e1.png" alt="\alpha"/>, <img class="math" src="../_images/math/fdb63b9e51abe6bbb16acfb5d7b773ddbb5bf4a8.png" alt="\beta"/>, <img class="math" src="../_images/math/8136a7ef6a03334a7246df9097e5bcc31ba33fd2.png" alt="b"/> turn out to be
nonpositive integers, or if division by zero occurs for some <img class="math" src="../_images/math/6fd36d8b01815d26deddb339e925374219817cb2.png" alt="w^c"/>,
assuming that there are opposing singularities that cancel out.
The limit is computed by evaluating the function with the base
parameters perturbed, at a higher working precision.</p>
<p>The first argument should be a function that takes the perturbable
base parameters <tt class="docutils literal"><span class="pre">params</span></tt> as input and returns <img class="math" src="../_images/math/fc97ef67268cd4e91bacdf12b8901d7036c9a056.png" alt="N"/> tuples
<tt class="docutils literal"><span class="pre">(w,</span> <span class="pre">c,</span> <span class="pre">alpha,</span> <span class="pre">beta,</span> <span class="pre">a,</span> <span class="pre">b,</span> <span class="pre">z)</span></tt>, where the coefficients <tt class="docutils literal"><span class="pre">w</span></tt>, <tt class="docutils literal"><span class="pre">c</span></tt>,
gamma factors <tt class="docutils literal"><span class="pre">alpha</span></tt>, <tt class="docutils literal"><span class="pre">beta</span></tt>, and hypergeometric coefficients
<tt class="docutils literal"><span class="pre">a</span></tt>, <tt class="docutils literal"><span class="pre">b</span></tt> each should be lists of numbers, and <tt class="docutils literal"><span class="pre">z</span></tt> should be a single
number.</p>
<p><strong>Examples</strong></p>
<p>The following evaluates</p>
<div class="math">
<p><img src="../_images/math/9b711f253a2abc1bf33fb508c022517a889e9499.png" alt="(a-1) \frac{\Gamma(a-3)}{\Gamma(a-4)} \,_1F_1(a,a-1,z) = e^z(a-4)(a+z-1)" /></p>
</div><p>with <img class="math" src="../_images/math/b566d955cf318d5985af18886957ebd4884dc672.png" alt="a=1, z=3"/>. There is a zero factor, two gamma function poles, and
the 1F1 function is singular; all singularities cancel out to give a finite
value:</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">15</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">hypercomb</span><span class="p">(</span><span class="k">lambda</span> <span class="n">a</span><span class="p">:</span> <span class="p">[([</span><span class="n">a</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">a</span><span class="o">-</span><span class="mi">3</span><span class="p">],[</span><span class="n">a</span><span class="o">-</span><span class="mi">4</span><span class="p">],[</span><span class="n">a</span><span class="p">],[</span><span class="n">a</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span><span class="mi">3</span><span class="p">)],</span> <span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="go">-180.769832308689</span>
<span class="gp">&gt;&gt;&gt; </span><span class="o">-</span><span class="mi">9</span><span class="o">*</span><span class="n">exp</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="go">-180.769832308689</span>
</pre></div>
</div>
</dd></dl>

</div>
</div>
<div class="section" id="meijer-g-function">
<h2>Meijer G-function<a class="headerlink" href="#meijer-g-function" title="Permalink to this headline">¶</a></h2>
<div class="section" id="meijerg">
<h3><tt class="xref docutils literal"><span class="pre">meijerg()</span></tt><a class="headerlink" href="#meijerg" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.meijerg">
<tt class="descclassname">mpmath.</tt><tt class="descname">meijerg</tt><big>(</big><em>a_s</em>, <em>b_s</em>, <em>z</em>, <em>r=1</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.meijerg" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the Meijer G-function, defined as</p>
<div class="math">
<p><img src="../_images/math/70f5f4ec976a900ce1257a8cf5b4270730cdf2ce.png" alt="G^{m,n}_{p,q} \left( \left. \begin{matrix}
     a_1, \dots, a_n ; a_{n+1} \dots a_p \\
     b_1, \dots, b_m ; b_{m+1} \dots b_q
\end{matrix}\; \right| \; z ; r \right) =
\frac{1}{2 \pi i} \int_L
\frac{\prod_{j=1}^m \Gamma(b_j+s) \prod_{j=1}^n\Gamma(1-a_j-s)}
     {\prod_{j=n+1}^{p}\Gamma(a_j+s) \prod_{j=m+1}^q \Gamma(1-b_j-s)}
     z^{-s/r} ds" /></p>
</div><p>for an appropriate choice of the contour <img class="math" src="../_images/math/859ccf4cd60c7bc6b8fa1afc9a42dc811a826d6f.png" alt="L"/> (see references).</p>
<p>There are <img class="math" src="../_images/math/36f73fc1312ee0349b3f3a0f3bd9eb5504339011.png" alt="p"/> elements <img class="math" src="../_images/math/0785f19824c8b23ab3dfe000b471994078fdf589.png" alt="a_j"/>.
The argument <em>a_s</em> should be a pair of lists, the first containing the
<img class="math" src="../_images/math/174fadd07fd54c9afe288e96558c92e0c1da733a.png" alt="n"/> elements <img class="math" src="../_images/math/569dfaaa349865afdd281028e2f06fc9196fb822.png" alt="a_1, \ldots, a_n"/> and the second containing
the <img class="math" src="../_images/math/303bba596bb43ea6131cd9e2fa03b9d5c18d370d.png" alt="p-n"/> elements <img class="math" src="../_images/math/dcceefde45cb82670b1fb1c4736fbb005f745801.png" alt="a_{n+1}, \ldots a_p"/>.</p>
<p>There are <img class="math" src="../_images/math/0615acc3725de21025457e7d6f7694dab8e2f758.png" alt="q"/> elements <img class="math" src="../_images/math/dfbbf3e10280b5771976f3342b10181e4b31d4fd.png" alt="b_j"/>.
The argument <em>b_s</em> should be a pair of lists, the first containing the
<img class="math" src="../_images/math/f5047d1e0cbb50ec208923a22cd517c55100fa7b.png" alt="m"/> elements <img class="math" src="../_images/math/cf15d9cf8d622617639ff135a580744eebdc4a0f.png" alt="b_1, \ldots, b_m"/> and the second containing
the <img class="math" src="../_images/math/c8178f00a466c2769b4adf41c3413785eaca9352.png" alt="q-m"/> elements <img class="math" src="../_images/math/38ae4a08d3030a25f6df4c01668c48ee0d07f0a7.png" alt="b_{m+1}, \ldots b_q"/>.</p>
<p>The implicit tuple <img class="math" src="../_images/math/a6189e14703f052149675258ce197157446a42f8.png" alt="(m, n, p, q)"/> constitutes the order or degree of the
Meijer G-function, and is determined by the lengths of the coefficient
vectors. Confusingly, the indices in this tuple appear in a different order
from the coefficients, but this notation is standard. The many examples
given below should hopefully clear up any potential confusion.</p>
<p><strong>Algorithm</strong></p>
<p>The Meijer G-function is evaluated as a combination of hypergeometric series.
There are two versions of the function, which can be selected with
the optional <em>series</em> argument.</p>
<p><em>series=1</em> uses a sum of <img class="math" src="../_images/math/f5047d1e0cbb50ec208923a22cd517c55100fa7b.png" alt="m"/> <img class="math" src="../_images/math/b2ef42176cbca68d16f361c35be6c582ce3d6d18.png" alt="\,_pF_{q-1}"/> functions of <img class="math" src="../_images/math/b13f21416d84e13708696f34dea81026cda583c9.png" alt="z"/></p>
<p><em>series=2</em> uses a sum of <img class="math" src="../_images/math/174fadd07fd54c9afe288e96558c92e0c1da733a.png" alt="n"/> <img class="math" src="../_images/math/f21d5655fcf9a44c557e4c9fd04b8d4539530558.png" alt="\,_qF_{p-1}"/> functions of <img class="math" src="../_images/math/d13313d0c14b154544f20ab44394efcae6445964.png" alt="1/z"/></p>
<p>The default series is chosen based on the degree and <img class="math" src="../_images/math/77888cf7d3c4635b8bc8c06ee89dc2a2d2f86538.png" alt="|z|"/> in order
to be consistent with Mathematica&#8217;s. This definition of the Meijer G-function
has a discontinuity at <img class="math" src="../_images/math/83147269611ed30c50eb2ddeb1b275003b3ab032.png" alt="|z| = 1"/> for some orders, which can
be avoided by explicitly specifying a series.</p>
<p>Keyword arguments are forwarded to <a title="mpmath.hypercomb" class="reference internal" href="#mpmath.hypercomb"><tt class="xref docutils literal"><span class="pre">hypercomb()</span></tt></a>.</p>
<p><strong>Examples</strong></p>
<p>Many standard functions are special cases of the Meijer G-function
(possibly rescaled and/or with branch cut corrections). We define
some test parameters:</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">a</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">b</span> <span class="o">=</span> <span class="n">mpf</span><span class="p">(</span><span class="mf">1.5</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="n">mpf</span><span class="p">(</span><span class="mf">2.25</span><span class="p">)</span>
</pre></div>
</div>
<p>The exponential function:
<img class="math" src="../_images/math/2bb647e460be14f3897edfea28d379948f46f500.png" alt="e^z = G^{1,0}_{0,1} \left( \left. \begin{matrix} - \\ 0 \end{matrix} \;
\right| \; -z \right)"/></p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</span><span class="p">([[],[]],</span> <span class="p">[[</span><span class="mi">0</span><span class="p">],[]],</span> <span class="o">-</span><span class="n">z</span><span class="p">)</span>
<span class="go">9.487735836358525720550369</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">exp</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
<span class="go">9.487735836358525720550369</span>
</pre></div>
</div>
<p>The natural logarithm:
<img class="math" src="../_images/math/6da0e4a82b38b5888899b43c4463a3895245472d.png" alt="\log(1+z) = G^{1,2}_{2,2} \left( \left. \begin{matrix} 1, 1 \\ 1, 0
\end{matrix} \; \right| \; -z \right)"/></p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</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="mi">1</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">1.178654996341646117219023</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">+</span><span class="n">z</span><span class="p">)</span>
<span class="go">1.178654996341646117219023</span>
</pre></div>
</div>
<p>A rational function:
<img class="math" src="../_images/math/de2eb16a20a18430c66502b66e2e9a4ec65d330a.png" alt="\frac{z}{z+1} = G^{1,2}_{2,2} \left( \left. \begin{matrix} 1, 1 \\ 1, 1
\end{matrix} \; \right| \; z \right)"/></p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</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="mi">1</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="go">0.6923076923076923076923077</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span><span class="o">/</span><span class="p">(</span><span class="n">z</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<span class="go">0.6923076923076923076923077</span>
</pre></div>
</div>
<p>The sine and cosine functions:</p>
<p><img class="math" src="../_images/math/a39b1e59922bb1fdd0e6a882c9acfe2791a99055.png" alt="\frac{1}{\sqrt \pi} \sin(2 \sqrt z) = G^{1,0}_{0,2} \left( \left. \begin{matrix}
- \\ \frac{1}{2}, 0 \end{matrix} \; \right| \; z \right)"/></p>
<p><img class="math" src="../_images/math/61f597dbc69796cbe25e658174ee68769cfc9f06.png" alt="\frac{1}{\sqrt \pi} \cos(2 \sqrt z) = G^{1,0}_{0,2} \left( \left. \begin{matrix}
- \\ 0, \frac{1}{2} \end{matrix} \; \right| \; z \right)"/></p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</span><span class="p">([[],[]],</span> <span class="p">[[</span><span class="mf">0.5</span><span class="p">],[</span><span class="mi">0</span><span class="p">]],</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="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="go">0.4389807929218676682296453</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">sqrt</span><span class="p">(</span><span class="n">pi</span><span class="p">)</span>
<span class="go">0.4389807929218676682296453</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</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="p">(</span><span class="n">z</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="go">-0.3544090145996275423331762</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">cos</span><span class="p">(</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">pi</span><span class="p">)</span>
<span class="go">-0.3544090145996275423331762</span>
</pre></div>
</div>
<p>Bessel functions:</p>
<p><img class="math" src="../_images/math/349c51218691768338bea5a13508845780ed5a76.png" alt="J_a(2 \sqrt z) = G^{1,0}_{0,2} \left( \left.
\begin{matrix} - \\ \frac{a}{2}, -\frac{a}{2}
\end{matrix} \; \right| \; z \right)"/></p>
<p><img class="math" src="../_images/math/33cc28f924683d7df2e4a26bd0a5571fe9063ba1.png" alt="Y_a(2 \sqrt z) = G^{2,0}_{1,3} \left( \left.
\begin{matrix} \frac{-a-1}{2} \\ \frac{a}{2}, -\frac{a}{2}, \frac{-a-1}{2}
\end{matrix} \; \right| \; z \right)"/></p>
<p><img class="math" src="../_images/math/4f1aaf8f8f15b497a533224e81e34dba4905509e.png" alt="(-z)^{a/2} z^{-a/2} I_a(2 \sqrt z) = G^{1,0}_{0,2} \left( \left.
\begin{matrix} - \\ \frac{a}{2}, -\frac{a}{2}
\end{matrix} \; \right| \; -z \right)"/></p>
<p><img class="math" src="../_images/math/2aecafc49c22f32742d55ca91ae1bd9380bbceb3.png" alt="2 K_a(2 \sqrt z) = G^{2,0}_{0,2} \left( \left.
\begin{matrix} - \\ \frac{a}{2}, -\frac{a}{2}
\end{matrix} \; \right| \; z \right)"/></p>
<p>As the example with the Bessel <em>I</em> function shows, a branch
factor is required for some arguments when inverting the square root.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</span><span class="p">([[],[]],</span> <span class="p">[[</span><span class="n">a</span><span class="o">/</span><span class="mi">2</span><span class="p">],[</span><span class="o">-</span><span class="n">a</span><span class="o">/</span><span class="mi">2</span><span class="p">]],</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="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="go">0.5059425789597154858527264</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">besselj</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="go">0.5059425789597154858527264</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</span><span class="p">([[],[(</span><span class="o">-</span><span class="n">a</span><span class="o">-</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="p">[[</span><span class="n">a</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="o">-</span><span class="n">a</span><span class="o">/</span><span class="mi">2</span><span class="p">],[(</span><span class="o">-</span><span class="n">a</span><span class="o">-</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="p">(</span><span class="n">z</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="go">0.1853868950066556941442559</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">bessely</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">z</span><span class="p">)</span>
<span class="go">0.1853868950066556941442559</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</span><span class="p">([[],[]],</span> <span class="p">[[</span><span class="n">a</span><span class="o">/</span><span class="mi">2</span><span class="p">],[</span><span class="o">-</span><span class="n">a</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">z</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="go">(0.8685913322427653875717476 + 2.096964974460199200551738j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="p">(</span><span class="o">-</span><span class="n">z</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="n">a</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="n">z</span><span class="o">**</span><span class="p">(</span><span class="n">a</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span> <span class="o">*</span> <span class="n">besseli</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">z</span><span class="p">)</span>
<span class="go">(0.8685913322427653875717476 + 2.096964974460199200551738j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mf">0.5</span><span class="o">*</span><span class="n">meijerg</span><span class="p">([[],[]],</span> <span class="p">[[</span><span class="n">a</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="o">-</span><span class="n">a</span><span class="o">/</span><span class="mi">2</span><span class="p">],[]],</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="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="go">0.09334163695597828403796071</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">besselk</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">z</span><span class="p">)</span>
<span class="go">0.09334163695597828403796071</span>
</pre></div>
</div>
<p>Error functions:</p>
<p><img class="math" src="../_images/math/5931e81728823d8984359313cc437f393830491b.png" alt="\sqrt{\pi} z^{2(a-1)} \mathrm{erfc}(z) = G^{2,0}_{1,2} \left( \left.
\begin{matrix} a \\ a-1, a-\frac{1}{2}
\end{matrix} \; \right| \; z, \frac{1}{2} \right)"/></p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</span><span class="p">([[],[</span><span class="n">a</span><span class="p">]],</span> <span class="p">[[</span><span class="n">a</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">a</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="go">0.00172839843123091957468712</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sqrt</span><span class="p">(</span><span class="n">pi</span><span class="p">)</span> <span class="o">*</span> <span class="n">z</span><span class="o">**</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">a</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span> <span class="o">*</span> <span class="n">erfc</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
<span class="go">0.00172839843123091957468712</span>
</pre></div>
</div>
<p>A Meijer G-function of higher degree, (1,1,2,3):</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</span><span class="p">([[</span><span class="n">a</span><span class="p">],[</span><span class="n">b</span><span class="p">]],</span> <span class="p">[[</span><span class="n">a</span><span class="p">],[</span><span class="n">b</span><span class="p">,</span><span class="n">a</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="go">1.55984467443050210115617</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sin</span><span class="p">((</span><span class="n">b</span><span class="o">-</span><span class="n">a</span><span class="p">)</span><span class="o">*</span><span class="n">pi</span><span class="p">)</span><span class="o">/</span><span class="n">pi</span><span class="o">*</span><span class="p">(</span><span class="n">exp</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="o">*</span><span class="n">z</span><span class="o">**</span><span class="p">(</span><span class="n">a</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1.55984467443050210115617</span>
</pre></div>
</div>
<p>A Meijer G-function of still higher degree, (4,1,2,4), that can
be expanded as a messy combination of exponential integrals:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</span><span class="p">([[</span><span class="n">a</span><span class="p">],[</span><span class="mi">2</span><span class="o">*</span><span class="n">b</span><span class="o">-</span><span class="n">a</span><span class="p">]],</span> <span class="p">[[</span><span class="n">b</span><span class="p">,</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="o">-</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">a</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="n">b</span><span class="p">],[]],</span> <span class="n">z</span><span class="p">)</span>
<span class="go">0.3323667133658557271898061</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="mi">4</span><span class="o">**</span><span class="p">(</span><span class="n">a</span><span class="o">-</span><span class="n">b</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">sqrt</span><span class="p">(</span><span class="n">pi</span><span class="p">)</span><span class="o">*</span><span class="n">gamma</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">b</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">a</span><span class="p">)</span><span class="o">*</span><span class="n">z</span><span class="o">**</span><span class="n">a</span><span class="o">*</span>\
<span class="gp">... </span>    <span class="n">expint</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">b</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">a</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="o">-</span><span class="n">z</span><span class="p">))</span><span class="o">*</span><span class="n">expint</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">b</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="n">a</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="n">z</span><span class="p">)))</span>
<span class="go">0.3323667133658557271898061</span>
</pre></div>
</div>
<p>In the following case, different series give different values:</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="n">meijerg</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="mi">3</span><span class="p">],[</span><span class="mf">0.5</span><span class="p">]],</span><span class="o">-</span><span class="mi">2</span><span class="p">))</span>
<span class="go">-0.06417628097442437076207337</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">meijerg</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="mi">3</span><span class="p">],[</span><span class="mf">0.5</span><span class="p">]],</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span><span class="n">series</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="go">0.1428699426155117511873047</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">meijerg</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="mi">3</span><span class="p">],[</span><span class="mf">0.5</span><span class="p">]],</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span><span class="n">series</span><span class="o">=</span><span class="mi">2</span><span class="p">))</span>
<span class="go">-0.06417628097442437076207337</span>
</pre></div>
</div>
<p><strong>References</strong></p>
<ol class="arabic simple">
<li><a class="reference external" href="http://en.wikipedia.org/wiki/Meijer_G-function">http://en.wikipedia.org/wiki/Meijer_G-function</a></li>
<li><a class="reference external" href="http://mathworld.wolfram.com/MeijerG-Function.html">http://mathworld.wolfram.com/MeijerG-Function.html</a></li>
<li><a class="reference external" href="http://functions.wolfram.com/HypergeometricFunctions/MeijerG/">http://functions.wolfram.com/HypergeometricFunctions/MeijerG/</a></li>
<li><a class="reference external" href="http://functions.wolfram.com/HypergeometricFunctions/MeijerG1/">http://functions.wolfram.com/HypergeometricFunctions/MeijerG1/</a></li>
</ol>
</dd></dl>

</div>
</div>
<div class="section" id="bilateral-hypergeometric-series">
<h2>Bilateral hypergeometric series<a class="headerlink" href="#bilateral-hypergeometric-series" title="Permalink to this headline">¶</a></h2>
<div class="section" id="bihyper">
<h3><tt class="xref docutils literal"><span class="pre">bihyper()</span></tt><a class="headerlink" href="#bihyper" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.bihyper">
<tt class="descclassname">mpmath.</tt><tt class="descname">bihyper</tt><big>(</big><em>a_s</em>, <em>b_s</em>, <em>z</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.bihyper" title="Permalink to this definition">¶</a></dt>
<dd><p>Evaluates the bilateral hypergeometric series</p>
<div class="math">
<p><img src="../_images/math/75a6680a08d19b12ed51c10c3f2435c188d4eebe.png" alt="\,_AH_B(a_1, \ldots, a_k; b_1, \ldots, b_B; z) =
    \sum_{n=-\infty}^{\infty}
    \frac{(a_1)_n \ldots (a_A)_n}
         {(b_1)_n \ldots (b_B)_n} \, z^n" /></p>
</div><p>where, for direct convergence, <img class="math" src="../_images/math/1f78f9368d4ac4bebfb371b8a27e702460e7cde9.png" alt="A = B"/> and <img class="math" src="../_images/math/83147269611ed30c50eb2ddeb1b275003b3ab032.png" alt="|z| = 1"/>, although a
regularized sum exists more generally by considering the
bilateral series as a sum of two ordinary hypergeometric
functions. In order for the series to make sense, none of the
parameters may be integers.</p>
<p><strong>Examples</strong></p>
<p>The value of <img class="math" src="../_images/math/2844ba9a78fde87de07cedb648598c0f39562f8b.png" alt="\,_2H_2"/> at <img class="math" src="../_images/math/5990d6cf0dcf5df54109c8d7814b7b8676659cef.png" alt="z = 1"/> is given by Dougall&#8217;s formula:</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">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">d</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="mf">2.25</span><span class="p">,</span> <span class="mf">3.25</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">bihyper</span><span class="p">([</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">],[</span><span class="n">c</span><span class="p">,</span><span class="n">d</span><span class="p">],</span><span class="mi">1</span><span class="p">)</span>
<span class="go">-14.49118026212345786148847</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">gammaprod</span><span class="p">([</span><span class="n">c</span><span class="p">,</span><span class="n">d</span><span class="p">,</span><span class="mi">1</span><span class="o">-</span><span class="n">a</span><span class="p">,</span><span class="mi">1</span><span class="o">-</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="o">+</span><span class="n">d</span><span class="o">-</span><span class="n">a</span><span class="o">-</span><span class="n">b</span><span class="o">-</span><span class="mi">1</span><span class="p">],[</span><span class="n">c</span><span class="o">-</span><span class="n">a</span><span class="p">,</span><span class="n">d</span><span class="o">-</span><span class="n">a</span><span class="p">,</span><span class="n">c</span><span class="o">-</span><span class="n">b</span><span class="p">,</span><span class="n">d</span><span class="o">-</span><span class="n">b</span><span class="p">])</span>
<span class="go">-14.49118026212345786148847</span>
</pre></div>
</div>
<p>The regularized function <img class="math" src="../_images/math/3222a62429532793a7e70886b2046b1d0a3b80da.png" alt="\,_1H_0"/> can be expressed as the
sum of one <img class="math" src="../_images/math/8b49fdd59c5eec8dbc5c7cff519b70d040456796.png" alt="\,_2F_0"/> function and one <img class="math" src="../_images/math/ba4af6c1dfcc5d743f9d1fe0958e045fe27b68db.png" alt="\,_1F_1"/> function:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="n">mpf</span><span class="p">(</span><span class="mf">0.25</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">z</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">bihyper</span><span class="p">([</span><span class="n">a</span><span class="p">],</span> <span class="p">[],</span> <span class="n">z</span><span class="p">)</span>
<span class="go">(0.2454393389657273841385582 + 0.2454393389657273841385582j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</span><span class="p">([</span><span class="n">a</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="o">+</span> <span class="p">(</span><span class="n">hyper</span><span class="p">([</span><span class="mi">1</span><span class="p">],[</span><span class="mi">1</span><span class="o">-</span><span class="n">a</span><span class="p">],</span><span class="o">-</span><span class="mi">1</span><span class="o">/</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="go">(0.2454393389657273841385582 + 0.2454393389657273841385582j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper</span><span class="p">([</span><span class="n">a</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="o">+</span> <span class="n">hyper</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="n">a</span><span class="p">],</span><span class="o">-</span><span class="mi">1</span><span class="o">/</span><span class="n">z</span><span class="p">)</span><span class="o">/</span><span class="n">z</span><span class="o">/</span><span class="p">(</span><span class="n">a</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="go">(0.2454393389657273841385582 + 0.2454393389657273841385582j)</span>
</pre></div>
</div>
<p><strong>References</strong></p>
<ol class="arabic simple">
<li><a class="reference external" href="../references.html#slater">[Slater]</a> (chapter 6: &#8220;Bilateral Series&#8221;, pp. 180-189)</li>
<li><a class="reference external" href="../references.html#wikipedia">[Wikipedia]</a> <a class="reference external" href="http://en.wikipedia.org/wiki/Bilateral_hypergeometric_series">http://en.wikipedia.org/wiki/Bilateral_hypergeometric_series</a></li>
</ol>
</dd></dl>

</div>
</div>
<div class="section" id="hypergeometric-functions-of-two-variables">
<h2>Hypergeometric functions of two variables<a class="headerlink" href="#hypergeometric-functions-of-two-variables" title="Permalink to this headline">¶</a></h2>
<div class="section" id="hyper2d">
<h3><tt class="xref docutils literal"><span class="pre">hyper2d()</span></tt><a class="headerlink" href="#hyper2d" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.hyper2d">
<tt class="descclassname">mpmath.</tt><tt class="descname">hyper2d</tt><big>(</big><em>a</em>, <em>b</em>, <em>x</em>, <em>y</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.hyper2d" title="Permalink to this definition">¶</a></dt>
<dd><p>Sums the generalized 2D hypergeometric series</p>
<div class="math">
<p><img src="../_images/math/ce76cd3b14eaffb614a64a4f8a008eb900a40a41.png" alt="\sum_{m=0}^{\infty} \sum_{n=0}^{\infty}
    \frac{P((a),m,n)}{Q((b),m,n)}
    \frac{x^m y^n} {m! n!}" /></p>
</div><p>where <img class="math" src="../_images/math/3899beb48bad9c42b07f765f181cc8145b6152a9.png" alt="(a) = (a_1,\ldots,a_r)"/>, <img class="math" src="../_images/math/165a21b99d0564a3d2d9039fd2cc62b72fdc845a.png" alt="(b) = (b_1,\ldots,b_s)"/> and where
<img class="math" src="../_images/math/4b4cade9ca8a2c8311fafcf040bc5b15ca507f52.png" alt="P"/> and <img class="math" src="../_images/math/9866e3a998d628ba0941eb4fea0666ac391d149a.png" alt="Q"/> are products of rising factorials such as <img class="math" src="../_images/math/7df8e99d9a9bc7fa7c2eb9b557e110f138fa31b6.png" alt="(a_j)_n"/> or
<img class="math" src="../_images/math/72278312e535c9dc6445cf7fc22d4cfc7e8b3e18.png" alt="(a_j)_{m+n}"/>. <img class="math" src="../_images/math/4b4cade9ca8a2c8311fafcf040bc5b15ca507f52.png" alt="P"/> and <img class="math" src="../_images/math/9866e3a998d628ba0941eb4fea0666ac391d149a.png" alt="Q"/> are specified in the form of dicts, with
the <img class="math" src="../_images/math/f5047d1e0cbb50ec208923a22cd517c55100fa7b.png" alt="m"/> and <img class="math" src="../_images/math/174fadd07fd54c9afe288e96558c92e0c1da733a.png" alt="n"/> dependence as keys and parameter lists as values.
The supported rising factorials are given in the following table
(note that only a few are supported in <img class="math" src="../_images/math/9866e3a998d628ba0941eb4fea0666ac391d149a.png" alt="Q"/>):</p>
<table border="1" class="docutils">
<colgroup>
<col width="31%" />
<col width="49%" />
<col width="21%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Key</th>
<th class="head">Rising factorial</th>
<th class="head"><img class="math" src="../_images/math/9866e3a998d628ba0941eb4fea0666ac391d149a.png" alt="Q"/></th>
</tr>
</thead>
<tbody valign="top">
<tr><td><tt class="docutils literal"><span class="pre">'m'</span></tt></td>
<td><img class="math" src="../_images/math/c1e309838a1c414c56cc399eb90c3fe926c6eafa.png" alt="(a_j)_m"/></td>
<td>Yes</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">'n'</span></tt></td>
<td><img class="math" src="../_images/math/7df8e99d9a9bc7fa7c2eb9b557e110f138fa31b6.png" alt="(a_j)_n"/></td>
<td>Yes</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">'m+n'</span></tt></td>
<td><img class="math" src="../_images/math/72278312e535c9dc6445cf7fc22d4cfc7e8b3e18.png" alt="(a_j)_{m+n}"/></td>
<td>Yes</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">'m-n'</span></tt></td>
<td><img class="math" src="../_images/math/9cf6a6b149df316b665937ee68f44c8bb4c65271.png" alt="(a_j)_{m-n}"/></td>
<td>No</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">'n-m'</span></tt></td>
<td><img class="math" src="../_images/math/1822cdab4ffa344af249b27090e213ac2e16152b.png" alt="(a_j)_{n-m}"/></td>
<td>No</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">'2m+n'</span></tt></td>
<td><img class="math" src="../_images/math/f965ddcb862005b06e70be2ed1ca96d52b4747b1.png" alt="(a_j)_{2m+n}"/></td>
<td>No</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">'2m-n'</span></tt></td>
<td><img class="math" src="../_images/math/c7e232e4ea6fe31fffd4a4daae27b4fe6ff93dee.png" alt="(a_j)_{2m-n}"/></td>
<td>No</td>
</tr>
<tr><td><tt class="docutils literal"><span class="pre">'2n-m'</span></tt></td>
<td><img class="math" src="../_images/math/f1220a48a2c348f426396ae14c092f8e1395772a.png" alt="(a_j)_{2n-m}"/></td>
<td>No</td>
</tr>
</tbody>
</table>
<p>For example, the Appell F1 and F4 functions</p>
<div class="math">
<p><img src="../_images/math/49fe5fc5a05075893dee39a34f19b14f782c225f.png" alt="F_1 = \sum_{m=0}^{\infty} \sum_{n=0}^{\infty}
      \frac{(a)_{m+n} (b)_m (c)_n}{(d)_{m+n}}
      \frac{x^m y^n}{m! n!}

F_4 = \sum_{m=0}^{\infty} \sum_{n=0}^{\infty}
      \frac{(a)_{m+n} (b)_{m+n}}{(c)_m (d)_{n}}
      \frac{x^m y^n}{m! n!}" /></p>
</div><p>can be represented respectively as</p>
<blockquote>
<p><tt class="docutils literal"><span class="pre">hyper2d({'m+n':[a],</span> <span class="pre">'m':[b],</span> <span class="pre">'n':[c]},</span> <span class="pre">{'m+n':[d]},</span> <span class="pre">x,</span> <span class="pre">y)</span></tt></p>
<p><tt class="docutils literal"><span class="pre">hyper2d({'m+n':[a,b]},</span> <span class="pre">{'m':[c],</span> <span class="pre">'n':[d]},</span> <span class="pre">x,</span> <span class="pre">y)</span></tt></p>
</blockquote>
<p>More generally, <a title="mpmath.hyper2d" class="reference internal" href="#mpmath.hyper2d"><tt class="xref docutils literal"><span class="pre">hyper2d()</span></tt></a> can evaluate any of the 34 distinct
convergent second-order (generalized Gaussian) hypergeometric
series enumerated by Horn, as well as the Kampe de Feriet
function.</p>
<p>The series is computed by rewriting it so that the inner
series (i.e. the series containing <img class="math" src="../_images/math/174fadd07fd54c9afe288e96558c92e0c1da733a.png" alt="n"/> and <img class="math" src="../_images/math/092e364e1d9d19ad5fffb0b46ef4cc7f2da02c1c.png" alt="y"/>) has the form of an
ordinary generalized hypergeometric series and thereby can be
evaluated efficiently using <a title="mpmath.hyper" class="reference internal" href="#mpmath.hyper"><tt class="xref docutils literal"><span class="pre">hyper()</span></tt></a>. If possible,
manually swapping <img class="math" src="../_images/math/26eeb5258ca5099acf8fe96b2a1049c48c89a5e6.png" alt="x"/> and <img class="math" src="../_images/math/092e364e1d9d19ad5fffb0b46ef4cc7f2da02c1c.png" alt="y"/> and the corresponding parameters
can sometimes give better results.</p>
<p><strong>Examples</strong></p>
<p>Two separable cases: a product of two geometric series, and a
product of two Gaussian hypergeometric 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">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">mpf</span><span class="p">(</span><span class="mf">0.25</span><span class="p">),</span> <span class="n">mpf</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper2d</span><span class="p">({</span><span class="s">&#39;m&#39;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s">&#39;n&#39;</span><span class="p">:</span><span class="mi">1</span><span class="p">},</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="go">2.666666666666666666666667</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mi">1</span><span class="o">/</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">x</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">y</span><span class="p">)</span>
<span class="go">2.666666666666666666666667</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper2d</span><span class="p">({</span><span class="s">&#39;m&#39;</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="s">&#39;n&#39;</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="p">{</span><span class="s">&#39;m&#39;</span><span class="p">:[</span><span class="mi">5</span><span class="p">],</span><span class="s">&#39;n&#39;</span><span class="p">:[</span><span class="mi">6</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="go">4.164358531238938319669856</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</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">5</span><span class="p">,</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">hyp2f1</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">6</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
<span class="go">4.164358531238938319669856</span>
</pre></div>
</div>
<p>Some more series that can be done in closed form:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hyper2d</span><span class="p">({</span><span class="s">&#39;m&#39;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s">&#39;n&#39;</span><span class="p">:</span><span class="mi">1</span><span class="p">},{</span><span class="s">&#39;m+n&#39;</span><span class="p">:</span><span class="mi">1</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="go">2.013417124712514809623881</span>
<span class="gp">&gt;&gt;&gt; </span><span class="p">(</span><span class="n">exp</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">x</span><span class="o">-</span><span class="n">exp</span><span class="p">(</span><span class="n">y</span><span class="p">)</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">x</span><span class="o">-</span><span class="n">y</span><span class="p">)</span>
<span class="go">2.013417124712514809623881</span>
</pre></div>
</div>
<p>Six of the 34 Horn functions, G1-G3 and H1-H3:</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">10</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">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mf">0.0625</span><span class="p">,</span> <span class="mf">0.125</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">a1</span><span class="p">,</span><span class="n">a2</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">c2</span><span class="p">,</span><span class="n">d</span> <span class="o">=</span> <span class="mf">1.1</span><span class="p">,</span><span class="o">-</span><span class="mf">1.2</span><span class="p">,</span><span class="o">-</span><span class="mf">1.3</span><span class="p">,</span><span class="o">-</span><span class="mf">1.4</span><span class="p">,</span><span class="mf">1.5</span><span class="p">,</span><span class="o">-</span><span class="mf">1.6</span><span class="p">,</span><span class="mf">1.7</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper2d</span><span class="p">({</span><span class="s">&#39;m+n&#39;</span><span class="p">:</span><span class="n">a1</span><span class="p">,</span><span class="s">&#39;n-m&#39;</span><span class="p">:</span><span class="n">b1</span><span class="p">,</span><span class="s">&#39;m-n&#39;</span><span class="p">:</span><span class="n">b2</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="c"># G1</span>
<span class="go">1.139090746</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nsum</span><span class="p">(</span><span class="k">lambda</span> <span class="n">m</span><span class="p">,</span><span class="n">n</span><span class="p">:</span> <span class="n">rf</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="n">m</span><span class="o">+</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">b1</span><span class="p">,</span><span class="n">n</span><span class="o">-</span><span class="n">m</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">b2</span><span class="p">,</span><span class="n">m</span><span class="o">-</span><span class="n">n</span><span class="p">)</span><span class="o">*</span>\
<span class="gp">... </span>    <span class="n">x</span><span class="o">**</span><span class="n">m</span><span class="o">*</span><span class="n">y</span><span class="o">**</span><span class="n">n</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">m</span><span class="p">)</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">n</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="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">1.139090746</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper2d</span><span class="p">({</span><span class="s">&#39;m&#39;</span><span class="p">:</span><span class="n">a1</span><span class="p">,</span><span class="s">&#39;n&#39;</span><span class="p">:</span><span class="n">a2</span><span class="p">,</span><span class="s">&#39;n-m&#39;</span><span class="p">:</span><span class="n">b1</span><span class="p">,</span><span class="s">&#39;m-n&#39;</span><span class="p">:</span><span class="n">b2</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="c"># G2</span>
<span class="go">0.9503682696</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nsum</span><span class="p">(</span><span class="k">lambda</span> <span class="n">m</span><span class="p">,</span><span class="n">n</span><span class="p">:</span> <span class="n">rf</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="n">m</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">a2</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">b1</span><span class="p">,</span><span class="n">n</span><span class="o">-</span><span class="n">m</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">b2</span><span class="p">,</span><span class="n">m</span><span class="o">-</span><span class="n">n</span><span class="p">)</span><span class="o">*</span>\
<span class="gp">... </span>    <span class="n">x</span><span class="o">**</span><span class="n">m</span><span class="o">*</span><span class="n">y</span><span class="o">**</span><span class="n">n</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">m</span><span class="p">)</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">n</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="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">0.9503682696</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper2d</span><span class="p">({</span><span class="s">&#39;2n-m&#39;</span><span class="p">:</span><span class="n">a1</span><span class="p">,</span><span class="s">&#39;2m-n&#39;</span><span class="p">:</span><span class="n">a2</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="c"># G3</span>
<span class="go">1.029372029</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nsum</span><span class="p">(</span><span class="k">lambda</span> <span class="n">m</span><span class="p">,</span><span class="n">n</span><span class="p">:</span> <span class="n">rf</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="n">n</span><span class="o">-</span><span class="n">m</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">a2</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="n">m</span><span class="o">-</span><span class="n">n</span><span class="p">)</span><span class="o">*</span>\
<span class="gp">... </span>    <span class="n">x</span><span class="o">**</span><span class="n">m</span><span class="o">*</span><span class="n">y</span><span class="o">**</span><span class="n">n</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">m</span><span class="p">)</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">n</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="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">1.029372029</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper2d</span><span class="p">({</span><span class="s">&#39;m-n&#39;</span><span class="p">:</span><span class="n">a1</span><span class="p">,</span><span class="s">&#39;m+n&#39;</span><span class="p">:</span><span class="n">b1</span><span class="p">,</span><span class="s">&#39;n&#39;</span><span class="p">:</span><span class="n">c1</span><span class="p">},{</span><span class="s">&#39;m&#39;</span><span class="p">:</span><span class="n">d</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="c"># H1</span>
<span class="go">-1.605331256</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nsum</span><span class="p">(</span><span class="k">lambda</span> <span class="n">m</span><span class="p">,</span><span class="n">n</span><span class="p">:</span> <span class="n">rf</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="n">m</span><span class="o">-</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">b1</span><span class="p">,</span><span class="n">m</span><span class="o">+</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">/</span><span class="n">rf</span><span class="p">(</span><span class="n">d</span><span class="p">,</span><span class="n">m</span><span class="p">)</span><span class="o">*</span>\
<span class="gp">... </span>    <span class="n">x</span><span class="o">**</span><span class="n">m</span><span class="o">*</span><span class="n">y</span><span class="o">**</span><span class="n">n</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">m</span><span class="p">)</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">n</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="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">-1.605331256</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper2d</span><span class="p">({</span><span class="s">&#39;m-n&#39;</span><span class="p">:</span><span class="n">a1</span><span class="p">,</span><span class="s">&#39;m&#39;</span><span class="p">:</span><span class="n">b1</span><span class="p">,</span><span class="s">&#39;n&#39;</span><span class="p">:[</span><span class="n">c1</span><span class="p">,</span><span class="n">c2</span><span class="p">]},{</span><span class="s">&#39;m&#39;</span><span class="p">:</span><span class="n">d</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="c"># H2</span>
<span class="go">-2.35405404</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nsum</span><span class="p">(</span><span class="k">lambda</span> <span class="n">m</span><span class="p">,</span><span class="n">n</span><span class="p">:</span> <span class="n">rf</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="n">m</span><span class="o">-</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">b1</span><span class="p">,</span><span class="n">m</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">c2</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">/</span><span class="n">rf</span><span class="p">(</span><span class="n">d</span><span class="p">,</span><span class="n">m</span><span class="p">)</span><span class="o">*</span>\
<span class="gp">... </span>    <span class="n">x</span><span class="o">**</span><span class="n">m</span><span class="o">*</span><span class="n">y</span><span class="o">**</span><span class="n">n</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">m</span><span class="p">)</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">n</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="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">-2.35405404</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyper2d</span><span class="p">({</span><span class="s">&#39;2m+n&#39;</span><span class="p">:</span><span class="n">a1</span><span class="p">,</span><span class="s">&#39;n&#39;</span><span class="p">:</span><span class="n">b1</span><span class="p">},{</span><span class="s">&#39;m+n&#39;</span><span class="p">:</span><span class="n">c1</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="c"># H3</span>
<span class="go">0.974479074</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">nsum</span><span class="p">(</span><span class="k">lambda</span> <span class="n">m</span><span class="p">,</span><span class="n">n</span><span class="p">:</span> <span class="n">rf</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="n">m</span><span class="o">+</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">rf</span><span class="p">(</span><span class="n">b1</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">/</span><span class="n">rf</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="n">m</span><span class="o">+</span><span class="n">n</span><span class="p">)</span><span class="o">*</span>\
<span class="gp">... </span>    <span class="n">x</span><span class="o">**</span><span class="n">m</span><span class="o">*</span><span class="n">y</span><span class="o">**</span><span class="n">n</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">m</span><span class="p">)</span><span class="o">/</span><span class="n">fac</span><span class="p">(</span><span class="n">n</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="p">[</span><span class="mi">0</span><span class="p">,</span><span class="n">inf</span><span class="p">])</span>
<span class="go">0.974479074</span>
</pre></div>
</div>
<p><strong>References</strong></p>
<ol class="arabic simple">
<li><a class="reference external" href="../references.html#srivastavakarlsson">[SrivastavaKarlsson]</a></li>
<li><a class="reference external" href="../references.html#weisstein">[Weisstein]</a> <a class="reference external" href="http://mathworld.wolfram.com/HornFunction.html">http://mathworld.wolfram.com/HornFunction.html</a></li>
<li><a class="reference external" href="../references.html#weisstein">[Weisstein]</a> <a class="reference external" href="http://mathworld.wolfram.com/AppellHypergeometricFunction.html">http://mathworld.wolfram.com/AppellHypergeometricFunction.html</a></li>
</ol>
</dd></dl>

</div>
<div class="section" id="appellf1">
<h3><tt class="xref docutils literal"><span class="pre">appellf1()</span></tt><a class="headerlink" href="#appellf1" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.appellf1">
<tt class="descclassname">mpmath.</tt><tt class="descname">appellf1</tt><big>(</big><em>a</em>, <em>b1</em>, <em>b2</em>, <em>c</em>, <em>x</em>, <em>y</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.appellf1" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the Appell F1 hypergeometric function of two variables,</p>
<div class="math">
<p><img src="../_images/math/2a732d5aa33892d5768d4c5ab48008ce0ce48ba3.png" alt="F_1(a,b_1,b_2,c,x,y) = \sum_{m=0}^{\infty} \sum_{n=0}^{\infty}
    \frac{(a)_{m+n} (b_1)_m (b_2)_n}{(c)_{m+n}}
    \frac{x^m y^n}{m! n!}." /></p>
</div><p>This series is only generally convergent when <img class="math" src="../_images/math/796af557812a3e6b3f7bff6d89875f9d7721d320.png" alt="|x| &lt; 1"/> and <img class="math" src="../_images/math/2ed3e7ac75dead4473c6f269222e43c92fecf057.png" alt="|y| &lt; 1"/>,
although <a title="mpmath.appellf1" class="reference internal" href="#mpmath.appellf1"><tt class="xref docutils literal"><span class="pre">appellf1()</span></tt></a> can evaluate an analytic continuation
with respecto to either variable, and sometimes both.</p>
<p><strong>Examples</strong></p>
<p>Evaluation is supported for real and complex parameters:</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">appellf1</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="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="mf">0.25</span><span class="p">)</span>
<span class="go">1.154700538379251529018298</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf1</span><span class="p">(</span><span class="mi">1</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="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="mf">0.5</span><span class="n">j</span><span class="p">)</span>
<span class="go">(1.138403860350148085179415 + 1.510544741058517621110615j)</span>
</pre></div>
</div>
<p>For some integer parameters, the F1 series reduces to a polynomial:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">appellf1</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="o">-</span><span class="mi">3</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">5</span><span class="p">)</span>
<span class="go">-816.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf1</span><span class="p">(</span><span class="o">-</span><span class="mi">5</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">1</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span>
<span class="go">-20528.0</span>
</pre></div>
</div>
<p>The analytic continuation with respect to either <img class="math" src="../_images/math/26eeb5258ca5099acf8fe96b2a1049c48c89a5e6.png" alt="x"/> or <img class="math" src="../_images/math/092e364e1d9d19ad5fffb0b46ef4cc7f2da02c1c.png" alt="y"/>,
and sometimes with respect to both, can be evaluated:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">appellf1</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="mi">5</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">(0.0006231042714165329279738662 + 0.0000005769149277148425774499857j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf1</span><span class="p">(</span><span class="s">&#39;1.1&#39;</span><span class="p">,</span> <span class="s">&#39;0.3&#39;</span><span class="p">,</span> <span class="s">&#39;0.2+2j&#39;</span><span class="p">,</span> <span class="s">&#39;0.4&#39;</span><span class="p">,</span> <span class="s">&#39;0.2&#39;</span><span class="p">,</span> <span class="mf">1.5</span><span class="o">+</span><span class="mi">3</span><span class="n">j</span><span class="p">)</span>
<span class="go">(-0.1782604566893954897128702 + 0.002472407104546216117161499j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf1</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="mi">10</span><span class="p">,</span><span class="mi">12</span><span class="p">)</span>
<span class="go">-0.07122993830066776374929313</span>
</pre></div>
</div>
<p>For certain arguments, F1 reduces to an ordinary hypergeometric function:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">appellf1</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">5</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.25</span><span class="p">)</span>
<span class="go">1.547902270302684019335555</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mi">4</span><span class="o">*</span><span class="n">hyp2f1</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">5</span><span class="p">,</span><span class="s">&#39;1/3&#39;</span><span class="p">)</span><span class="o">/</span><span class="mi">3</span>
<span class="go">1.547902270302684019335555</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf1</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="mi">0</span><span class="p">,</span><span class="mf">1.5</span><span class="p">)</span>
<span class="go">(-1.717202506168937502740238 - 2.792526803190927323077905j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</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">4</span><span class="p">,</span><span class="mf">1.5</span><span class="p">)</span>
<span class="go">(-1.717202506168937502740238 - 2.792526803190927323077905j)</span>
</pre></div>
</div>
<p>The F1 function satisfies a system of partial differential equations:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">mpf</span><span class="p">,</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="mf">0.25</span><span class="p">,</span><span class="mf">1.125</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="o">-</span><span class="mf">0.25</span><span class="p">])</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">x</span><span class="p">,</span><span class="n">y</span><span class="p">:</span> <span class="n">appellf1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c</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="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>     <span class="n">y</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>     <span class="p">(</span><span class="n">c</span><span class="o">-</span><span class="p">(</span><span class="n">a</span><span class="o">+</span><span class="n">b1</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">b1</span><span class="o">*</span><span class="n">y</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">a</span><span class="o">*</span><span class="n">b1</span><span class="o">*</span><span class="n">F</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="go">0.0</span>
<span class="go">&gt;&gt;&gt;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">y</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>     <span class="n">x</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>     <span class="p">(</span><span class="n">c</span><span class="o">-</span><span class="p">(</span><span class="n">a</span><span class="o">+</span><span class="n">b2</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">b2</span><span class="o">*</span><span class="n">x</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">a</span><span class="o">*</span><span class="n">b2</span><span class="o">*</span><span class="n">F</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="go">0.0</span>
</pre></div>
</div>
<p>The Appell F1 function allows for closed-form evaluation of various
integrals, such as any integral of the form
<img class="math" src="../_images/math/f09e177e8480fe9aeb8ffbf5dcf43994407b5967.png" alt="\int x^r (x+a)^p (x+b)^q dx"/>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">integral</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">p</span><span class="p">,</span><span class="n">q</span><span class="p">,</span><span class="n">r</span><span class="p">,</span><span class="n">x1</span><span class="p">,</span><span class="n">x2</span><span class="p">):</span>
<span class="gp">... </span>    <span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">p</span><span class="p">,</span><span class="n">q</span><span class="p">,</span><span class="n">r</span><span class="p">,</span><span class="n">x1</span><span class="p">,</span><span class="n">x2</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">mpmathify</span><span class="p">,</span> <span class="p">[</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">p</span><span class="p">,</span><span class="n">q</span><span class="p">,</span><span class="n">r</span><span class="p">,</span><span class="n">x1</span><span class="p">,</span><span class="n">x2</span><span class="p">])</span>
<span class="gp">... </span>    <span class="n">f</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">**</span><span class="n">r</span> <span class="o">*</span> <span class="p">(</span><span class="n">x</span><span class="o">+</span><span class="n">a</span><span class="p">)</span><span class="o">**</span><span class="n">p</span> <span class="o">*</span> <span class="p">(</span><span class="n">x</span><span class="o">+</span><span class="n">b</span><span class="p">)</span><span class="o">**</span><span class="n">q</span>
<span class="gp">... </span>    <span class="k">def</span> <span class="nf">F</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="gp">... </span>        <span class="n">v</span> <span class="o">=</span> <span class="n">x</span><span class="o">**</span><span class="p">(</span><span class="n">r</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">r</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">a</span><span class="o">+</span><span class="n">x</span><span class="p">)</span><span class="o">**</span><span class="n">p</span> <span class="o">*</span> <span class="p">(</span><span class="n">b</span><span class="o">+</span><span class="n">x</span><span class="p">)</span><span class="o">**</span><span class="n">q</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">x</span><span class="o">/</span><span class="n">a</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="o">-</span><span class="n">p</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">x</span><span class="o">/</span><span class="n">b</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="o">-</span><span class="n">q</span><span class="p">)</span>
<span class="gp">... </span>        <span class="n">v</span> <span class="o">*=</span> <span class="n">appellf1</span><span class="p">(</span><span class="n">r</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="n">p</span><span class="p">,</span><span class="o">-</span><span class="n">q</span><span class="p">,</span><span class="mi">2</span><span class="o">+</span><span class="n">r</span><span class="p">,</span><span class="o">-</span><span class="n">x</span><span class="o">/</span><span class="n">a</span><span class="p">,</span><span class="o">-</span><span class="n">x</span><span class="o">/</span><span class="n">b</span><span class="p">)</span>
<span class="gp">... </span>        <span class="k">return</span> <span class="n">v</span>
<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;Num. quad: </span><span class="si">%s</span><span class="s">&quot;</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="n">x1</span><span class="p">,</span><span class="n">x2</span><span class="p">]))</span>
<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;Appell F1: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">F</span><span class="p">(</span><span class="n">x2</span><span class="p">)</span><span class="o">-</span><span class="n">F</span><span class="p">(</span><span class="n">x1</span><span class="p">)))</span>
<span class="gp">...</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">integral</span><span class="p">(</span><span class="s">&#39;1/5&#39;</span><span class="p">,</span><span class="s">&#39;4/3&#39;</span><span class="p">,</span><span class="s">&#39;-2&#39;</span><span class="p">,</span><span class="s">&#39;3&#39;</span><span class="p">,</span><span class="s">&#39;1/2&#39;</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">Num. quad: 9.073335358785776206576981</span>
<span class="go">Appell F1: 9.073335358785776206576981</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">integral</span><span class="p">(</span><span class="s">&#39;3/2&#39;</span><span class="p">,</span><span class="s">&#39;4/3&#39;</span><span class="p">,</span><span class="s">&#39;-2&#39;</span><span class="p">,</span><span class="s">&#39;3&#39;</span><span class="p">,</span><span class="s">&#39;1/2&#39;</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">Num. quad: 1.092829171999626454344678</span>
<span class="go">Appell F1: 1.092829171999626454344678</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">integral</span><span class="p">(</span><span class="s">&#39;3/2&#39;</span><span class="p">,</span><span class="s">&#39;4/3&#39;</span><span class="p">,</span><span class="s">&#39;-2&#39;</span><span class="p">,</span><span class="s">&#39;3&#39;</span><span class="p">,</span><span class="s">&#39;1/2&#39;</span><span class="p">,</span><span class="mi">12</span><span class="p">,</span><span class="mi">25</span><span class="p">)</span>
<span class="go">Num. quad: 1106.323225040235116498927</span>
<span class="go">Appell F1: 1106.323225040235116498927</span>
</pre></div>
</div>
<p>Also incomplete elliptic integrals fall into this category [1]:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">E</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="gp">... </span>    <span class="k">if</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="n">ae</span><span class="p">(</span><span class="n">z</span><span class="p">):</span>
<span class="gp">... </span>        <span class="k">return</span> <span class="n">ellipe</span><span class="p">(</span><span class="n">m</span><span class="p">)</span>
<span class="gp">... </span>    <span class="k">return</span> <span class="mi">2</span><span class="o">*</span><span class="nb">round</span><span class="p">(</span><span class="n">re</span><span class="p">(</span><span class="n">z</span><span class="p">)</span><span class="o">/</span><span class="n">pi</span><span class="p">)</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="o">+</span> <span class="n">mpf</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">**</span><span class="nb">round</span><span class="p">(</span><span class="n">re</span><span class="p">(</span><span class="n">z</span><span class="p">)</span><span class="o">/</span><span class="n">pi</span><span class="p">)</span><span class="o">*</span>\
<span class="gp">... </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="gp">...</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">1</span><span class="p">,</span> <span class="mf">0.5</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">E</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="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">pi</span><span class="o">/</span><span class="mi">4</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="mi">4</span><span class="p">,</span><span class="n">z</span><span class="p">])</span>
<span class="go">0.9273298836244400669659042</span>
<span class="go">0.9273298836244400669659042</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">3</span><span class="p">,</span> <span class="mi">2</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">E</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="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">pi</span><span class="o">/</span><span class="mi">4</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="mi">4</span><span class="p">,</span><span class="n">z</span><span class="p">])</span>
<span class="go">(1.057495752337234229715836 + 1.198140234735592207439922j)</span>
<span class="go">(1.057495752337234229715836 + 1.198140234735592207439922j)</span>
</pre></div>
</div>
<p><strong>References</strong></p>
<ol class="arabic simple">
<li><a class="reference external" href="../references.html#wolframfunctions">[WolframFunctions]</a> <a class="reference external" href="http://functions.wolfram.com/EllipticIntegrals/EllipticE2/26/01/">http://functions.wolfram.com/EllipticIntegrals/EllipticE2/26/01/</a></li>
<li><a class="reference external" href="../references.html#srivastavakarlsson">[SrivastavaKarlsson]</a></li>
<li><a class="reference external" href="../references.html#cabralrosetti">[CabralRosetti]</a></li>
<li><a class="reference external" href="../references.html#vidunas">[Vidunas]</a></li>
<li><a class="reference external" href="../references.html#slater">[Slater]</a></li>
</ol>
</dd></dl>

</div>
<div class="section" id="appellf2">
<h3><tt class="xref docutils literal"><span class="pre">appellf2()</span></tt><a class="headerlink" href="#appellf2" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.appellf2">
<tt class="descclassname">mpmath.</tt><tt class="descname">appellf2</tt><big>(</big><em>a</em>, <em>b1</em>, <em>b2</em>, <em>c1</em>, <em>c2</em>, <em>x</em>, <em>y</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.appellf2" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the Appell F2 hypergeometric function of two variables</p>
<div class="math">
<p><img src="../_images/math/00e5b982963d0a68beb322fe29f7866cce013948.png" alt="F_2(a,b_1,b_2,c_1,c_2,x,y) = \sum_{m=0}^{\infty} \sum_{n=0}^{\infty}
    \frac{(a)_{m+n} (b_1)_m (b_2)_n}{(c_1)_m (c_2)_n}
    \frac{x^m y^n}{m! n!}." /></p>
</div><p>The series is generally absolutely convergent for <img class="math" src="../_images/math/809c0fff80598e4ae0f9dfba5aa1ac4bfe5c8f16.png" alt="|x| + |y| &lt; 1"/>.</p>
<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">appellf2</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="mi">5</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.125</span><span class="p">)</span>
<span class="go">1.257417193533135344785602</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf2</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="p">,</span><span class="o">-</span><span class="mi">4</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">2</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
<span class="go">-42.8</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf2</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="o">-</span><span class="mf">0.25</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="mf">0.25</span><span class="n">j</span><span class="p">,</span><span class="mf">0.25</span><span class="p">)</span>
<span class="go">(0.9880539519421899867041719 + 0.01497616165031102661476978j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">appellf2</span><span class="p">(</span><span class="mi">1</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">3</span><span class="n">j</span><span class="p">,</span><span class="o">-</span><span class="mi">3</span><span class="n">j</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">1.201311219287411337955192</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf2</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">4</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mf">0.125</span><span class="p">,</span><span class="mi">16</span><span class="p">)</span>
<span class="go">(-0.09455532250274744282125152 - 0.7647282253046207836769297j)</span>
</pre></div>
</div>
<p>A transformation formula:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">c2</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">mpf</span><span class="p">,</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="mf">0.5</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">1.625</span><span class="p">,</span><span class="o">-</span><span class="mf">0.125</span><span class="p">,</span><span class="mf">0.125</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">c2</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="go">0.2299211717841180783309688</span>
<span class="gp">&gt;&gt;&gt; </span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">x</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="o">-</span><span class="n">a</span><span class="p">)</span><span class="o">*</span><span class="n">appellf2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">c1</span><span class="o">-</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">c2</span><span class="p">,</span><span class="n">x</span><span class="o">/</span><span class="p">(</span><span class="n">x</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="n">y</span><span class="o">/</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">x</span><span class="p">))</span>
<span class="go">0.2299211717841180783309688</span>
</pre></div>
</div>
<p>A system of partial differential equations satisfied by F2:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">c2</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">mpf</span><span class="p">,</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="mf">0.25</span><span class="p">,</span><span class="mf">1.125</span><span class="p">,</span><span class="mf">1.5</span><span class="p">,</span><span class="mf">0.0625</span><span class="p">,</span><span class="o">-</span><span class="mf">0.0625</span><span class="p">])</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">x</span><span class="p">,</span><span class="n">y</span><span class="p">:</span> <span class="n">appellf2</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">c2</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="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">x</span><span class="o">*</span><span class="n">y</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>     <span class="p">(</span><span class="n">c1</span><span class="o">-</span><span class="p">(</span><span class="n">a</span><span class="o">+</span><span class="n">b1</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">b1</span><span class="o">*</span><span class="n">y</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">a</span><span class="o">*</span><span class="n">b1</span><span class="o">*</span><span class="n">F</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="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">y</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">x</span><span class="o">*</span><span class="n">y</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>     <span class="p">(</span><span class="n">c2</span><span class="o">-</span><span class="p">(</span><span class="n">a</span><span class="o">+</span><span class="n">b2</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">b2</span><span class="o">*</span><span class="n">x</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">a</span><span class="o">*</span><span class="n">b2</span><span class="o">*</span><span class="n">F</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="go">0.0</span>
</pre></div>
</div>
<p><strong>References</strong></p>
<p>See references for <a title="mpmath.appellf1" class="reference internal" href="#mpmath.appellf1"><tt class="xref docutils literal"><span class="pre">appellf1()</span></tt></a>.</p>
</dd></dl>

</div>
<div class="section" id="appellf3">
<h3><tt class="xref docutils literal"><span class="pre">appellf3()</span></tt><a class="headerlink" href="#appellf3" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.appellf3">
<tt class="descclassname">mpmath.</tt><tt class="descname">appellf3</tt><big>(</big><em>a1</em>, <em>a2</em>, <em>b1</em>, <em>b2</em>, <em>c</em>, <em>x</em>, <em>y</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.appellf3" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the Appell F3 hypergeometric function of two variables</p>
<div class="math">
<p><img src="../_images/math/101e334f31e2ad44352ed766aa9cacf90e412c00.png" alt="F_3(a_1,a_2,b_1,b_2,c,x,y) = \sum_{m=0}^{\infty} \sum_{n=0}^{\infty}
    \frac{(a_1)_m (a_2)_n (b_1)_m (b_2)_n}{(c)_{m+n}}
    \frac{x^m y^n}{m! n!}." /></p>
</div><p>The series is generally absolutely convergent for <img class="math" src="../_images/math/9488ba20f1aac3603eab4deadb174ef3ccd17b8f.png" alt="|x| &lt; 1, |y| &lt; 1"/>.</p>
<p><strong>Examples</strong></p>
<p>Evaluation for various parameters and variables:</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">appellf3</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="mi">5</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.25</span><span class="p">)</span>
<span class="go">2.221557778107438938158705</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf3</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="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span> <span class="n">hyp2f1</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">5</span><span class="p">,</span><span class="mi">6</span><span class="p">)</span>
<span class="go">(-0.5189554589089861284537389 - 0.1454441043328607980769742j)</span>
<span class="go">(-0.5189554589089861284537389 - 0.1454441043328607980769742j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf3</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="mi">3</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">4</span><span class="p">,</span><span class="mi">6</span><span class="p">)</span>
<span class="go">-17.4</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf3</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">3</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">4</span><span class="p">,</span><span class="mi">6</span><span class="p">)</span>
<span class="go">(17.7876136773677356641825 + 19.54768762233649126154534j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf3</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">3</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">6</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span>
<span class="go">(85.02054175067929402953645 + 148.4402528821177305173599j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">appellf3</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="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="mi">3</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">1.719992169545200286696007</span>
</pre></div>
</div>
<p>Many transformations and evaluations for special combinations
of the parameters are possible, e.g.:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">mpf</span><span class="p">,</span> <span class="p">[</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.125</span><span class="p">,</span><span class="mf">0.125</span><span class="p">,</span><span class="o">-</span><span class="mf">0.125</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf3</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">c</span><span class="o">-</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="o">-</span><span class="n">b</span><span class="p">,</span><span class="n">c</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="go">1.093432340896087107444363</span>
<span class="gp">&gt;&gt;&gt; </span><span class="p">(</span><span class="mi">1</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">a</span><span class="o">+</span><span class="n">b</span><span class="o">-</span><span class="n">c</span><span class="p">)</span><span class="o">*</span><span class="n">hyp2f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">x</span><span class="o">+</span><span class="n">y</span><span class="o">-</span><span class="n">x</span><span class="o">*</span><span class="n">y</span><span class="p">)</span>
<span class="go">1.093432340896087107444363</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">appellf3</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="mi">3</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="o">-</span><span class="n">x</span><span class="p">)</span>
<span class="go">0.01568646277445385390945083</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">polylog</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="go">0.01568646277445385390945083</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">a1</span><span class="p">,</span><span class="n">a2</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">x</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">mpf</span><span class="p">,</span> <span class="p">[</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.125</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">4.25</span><span class="p">,</span><span class="mf">0.125</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf3</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="n">a2</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="go">1.03947361709111140096947</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">gammaprod</span><span class="p">([</span><span class="n">c</span><span class="p">,</span><span class="n">c</span><span class="o">-</span><span class="n">a2</span><span class="o">-</span><span class="n">b2</span><span class="p">],[</span><span class="n">c</span><span class="o">-</span><span class="n">a2</span><span class="p">,</span><span class="n">c</span><span class="o">-</span><span class="n">b2</span><span class="p">])</span><span class="o">*</span><span class="n">hyp3f2</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">c</span><span class="o">-</span><span class="n">a2</span><span class="o">-</span><span class="n">b2</span><span class="p">,</span><span class="n">c</span><span class="o">-</span><span class="n">a2</span><span class="p">,</span><span class="n">c</span><span class="o">-</span><span class="n">b2</span><span class="p">,</span><span class="n">x</span><span class="p">)</span>
<span class="go">1.03947361709111140096947</span>
</pre></div>
</div>
<p>The Appell F3 function satisfies a pair of partial
differential equations:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a1</span><span class="p">,</span><span class="n">a2</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">mpf</span><span class="p">,</span> <span class="p">[</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.125</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.625</span><span class="p">,</span><span class="mf">0.0625</span><span class="p">,</span><span class="o">-</span><span class="mf">0.0625</span><span class="p">])</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">x</span><span class="p">,</span><span class="n">y</span><span class="p">:</span> <span class="n">appellf3</span><span class="p">(</span><span class="n">a1</span><span class="p">,</span><span class="n">a2</span><span class="p">,</span><span class="n">b1</span><span class="p">,</span><span class="n">b2</span><span class="p">,</span><span class="n">c</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="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>     <span class="n">y</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>    <span class="p">(</span><span class="n">c</span><span class="o">-</span><span class="p">(</span><span class="n">a1</span><span class="o">+</span><span class="n">b1</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>    <span class="n">a1</span><span class="o">*</span><span class="n">b1</span><span class="o">*</span><span class="n">F</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="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">y</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>    <span class="n">x</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>    <span class="p">(</span><span class="n">c</span><span class="o">-</span><span class="p">(</span><span class="n">a2</span><span class="o">+</span><span class="n">b2</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>    <span class="n">a2</span><span class="o">*</span><span class="n">b2</span><span class="o">*</span><span class="n">F</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="go">0.0</span>
</pre></div>
</div>
<p><strong>References</strong></p>
<p>See references for <a title="mpmath.appellf1" class="reference internal" href="#mpmath.appellf1"><tt class="xref docutils literal"><span class="pre">appellf1()</span></tt></a>.</p>
</dd></dl>

</div>
<div class="section" id="appellf4">
<h3><tt class="xref docutils literal"><span class="pre">appellf4()</span></tt><a class="headerlink" href="#appellf4" title="Permalink to this headline">¶</a></h3>
<dl class="function">
<dt id="mpmath.appellf4">
<tt class="descclassname">mpmath.</tt><tt class="descname">appellf4</tt><big>(</big><em>a</em>, <em>b</em>, <em>c1</em>, <em>c2</em>, <em>x</em>, <em>y</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#mpmath.appellf4" title="Permalink to this definition">¶</a></dt>
<dd><p>Gives the Appell F4 hypergeometric function of two variables</p>
<div class="math">
<p><img src="../_images/math/95644627816dbc2ad38f14324bd5a165c4051175.png" alt="F_4(a,b,c_1,c_2,x,y) = \sum_{m=0}^{\infty} \sum_{n=0}^{\infty}
    \frac{(a)_{m+n} (b)_{m+n}}{(c_1)_m (c_2)_n}
    \frac{x^m y^n}{m! n!}." /></p>
</div><p>The series is generally absolutely convergent for
<img class="math" src="../_images/math/c79b149b2bd313e918c00bae596419459149f173.png" alt="\sqrt{|x|} + \sqrt{|y|} &lt; 1"/>.</p>
<p><strong>Examples</strong></p>
<p>Evaluation for various parameters and 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">appellf4</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">2</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.125</span><span class="p">)</span>
<span class="go">1.286182069079718313546608</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf4</span><span class="p">(</span><span class="o">-</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="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span>
<span class="go">34.8</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf4</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</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="mf">0.25</span><span class="n">j</span><span class="p">,</span><span class="o">-</span><span class="mf">0.125</span><span class="n">j</span><span class="p">)</span>
<span class="go">(-0.2585967215437846642163352 + 2.436102233553582711818743j)</span>
</pre></div>
</div>
<p>Reduction to <img class="math" src="../_images/math/88949b5db676bcd9b635abe892e514d84a12f031.png" alt="\,_2F_1"/> in a special case:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">mpf</span><span class="p">,</span> <span class="p">[</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.25</span><span class="p">,</span><span class="mf">0.125</span><span class="p">,</span><span class="mf">0.125</span><span class="p">,</span><span class="o">-</span><span class="mf">0.125</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">appellf4</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">-</span><span class="n">c</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">x</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">y</span><span class="p">),</span><span class="n">y</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">x</span><span class="p">))</span>
<span class="go">1.129143488466850868248364</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">hyp2f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">hyp2f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">-</span><span class="n">c</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">y</span><span class="p">)</span>
<span class="go">1.129143488466850868248364</span>
</pre></div>
</div>
<p>A system of partial differential equations satisfied by F4:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">c2</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">mpf</span><span class="p">,</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="mf">0.25</span><span class="p">,</span><span class="mf">1.125</span><span class="p">,</span><span class="mf">0.0625</span><span class="p">,</span><span class="o">-</span><span class="mf">0.0625</span><span class="p">])</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">x</span><span class="p">,</span><span class="n">y</span><span class="p">:</span> <span class="n">appellf4</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="n">c1</span><span class="p">,</span><span class="n">c2</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="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">y</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="mi">2</span><span class="o">*</span><span class="n">x</span><span class="o">*</span><span class="n">y</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>     <span class="p">(</span><span class="n">c1</span><span class="o">-</span><span class="p">(</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="p">((</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">a</span><span class="o">*</span><span class="n">b</span><span class="o">*</span><span class="n">F</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="go">0.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">chop</span><span class="p">(</span><span class="n">y</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">x</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="mi">2</span><span class="o">*</span><span class="n">x</span><span class="o">*</span><span class="n">y</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">+</span>
<span class="gp">... </span>     <span class="p">(</span><span class="n">c2</span><span class="o">-</span><span class="p">(</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="p">((</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="n">diff</span><span class="p">(</span><span class="n">F</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="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span> <span class="o">-</span>
<span class="gp">... </span>     <span class="n">a</span><span class="o">*</span><span class="n">b</span><span class="o">*</span><span class="n">F</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="go">0.0</span>
</pre></div>
</div>
<p><strong>References</strong></p>
<p>See references for <a title="mpmath.appellf1" class="reference internal" href="#mpmath.appellf1"><tt class="xref docutils literal"><span class="pre">appellf1()</span></tt></a>.</p>
</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="#">Hypergeometric functions</a><ul>
<li><a class="reference external" href="#common-hypergeometric-series">Common hypergeometric series</a><ul>
<li><a class="reference external" href="#hyp0f1"><tt class="docutils literal"><span class="pre">hyp0f1()</span></tt></a></li>
<li><a class="reference external" href="#hyp1f1"><tt class="docutils literal"><span class="pre">hyp1f1()</span></tt></a></li>
<li><a class="reference external" href="#hyp1f2"><tt class="docutils literal"><span class="pre">hyp1f2()</span></tt></a></li>
<li><a class="reference external" href="#hyp2f0"><tt class="docutils literal"><span class="pre">hyp2f0()</span></tt></a></li>
<li><a class="reference external" href="#hyp2f1"><tt class="docutils literal"><span class="pre">hyp2f1()</span></tt></a></li>
<li><a class="reference external" href="#hyp2f2"><tt class="docutils literal"><span class="pre">hyp2f2()</span></tt></a></li>
<li><a class="reference external" href="#hyp2f3"><tt class="docutils literal"><span class="pre">hyp2f3()</span></tt></a></li>
<li><a class="reference external" href="#hyp3f2"><tt class="docutils literal"><span class="pre">hyp3f2()</span></tt></a></li>
</ul>
</li>
<li><a class="reference external" href="#generalized-hypergeometric-functions">Generalized hypergeometric functions</a><ul>
<li><a class="reference external" href="#hyper"><tt class="docutils literal"><span class="pre">hyper()</span></tt></a></li>
<li><a class="reference external" href="#hypercomb"><tt class="docutils literal"><span class="pre">hypercomb()</span></tt></a></li>
</ul>
</li>
<li><a class="reference external" href="#meijer-g-function">Meijer G-function</a><ul>
<li><a class="reference external" href="#meijerg"><tt class="docutils literal"><span class="pre">meijerg()</span></tt></a></li>
</ul>
</li>
<li><a class="reference external" href="#bilateral-hypergeometric-series">Bilateral hypergeometric series</a><ul>
<li><a class="reference external" href="#bihyper"><tt class="docutils literal"><span class="pre">bihyper()</span></tt></a></li>
</ul>
</li>
<li><a class="reference external" href="#hypergeometric-functions-of-two-variables">Hypergeometric functions of two variables</a><ul>
<li><a class="reference external" href="#hyper2d"><tt class="docutils literal"><span class="pre">hyper2d()</span></tt></a></li>
<li><a class="reference external" href="#appellf1"><tt class="docutils literal"><span class="pre">appellf1()</span></tt></a></li>
<li><a class="reference external" href="#appellf2"><tt class="docutils literal"><span class="pre">appellf2()</span></tt></a></li>
<li><a class="reference external" href="#appellf3"><tt class="docutils literal"><span class="pre">appellf3()</span></tt></a></li>
<li><a class="reference external" href="#appellf4"><tt class="docutils literal"><span class="pre">appellf4()</span></tt></a></li>
</ul>
</li>
</ul>
</li>
</ul>

            <h4>Previous topic</h4>
            <p class="topless"><a href="orthogonal.html"
                                  title="previous chapter">Orthogonal polynomials</a></p>
            <h4>Next topic</h4>
            <p class="topless"><a href="elliptic.html"
                                  title="next chapter">Elliptic functions</a></p>
            <h3>This Page</h3>
            <ul class="this-page-menu">
              <li><a href="../_sources/functions/hypergeometric.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="elliptic.html" title="Elliptic functions"
             >next</a> |</li>
        <li class="right" >
          <a href="orthogonal.html" title="Orthogonal polynomials"
             >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>