[DEV] add v1.76.0

This commit is contained in:
2021-10-05 21:37:46 +02:00
parent a97e9ae7d4
commit d0115b733d
45133 changed files with 4744437 additions and 1026325 deletions

View File

@@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Log Gamma</title>
<link rel="stylesheet" href="../../math.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Math Toolkit 2.6.0">
<link rel="home" href="../../index.html" title="Math Toolkit 3.0.0">
<link rel="up" href="../sf_gamma.html" title="Gamma Functions">
<link rel="prev" href="tgamma.html" title="Gamma">
<link rel="next" href="digamma.html" title="Digamma">
@@ -37,14 +37,14 @@
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&amp;);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&amp;);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">int</span><span class="special">*</span> <span class="identifier">sign</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">int</span><span class="special">*</span> <span class="identifier">sign</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&amp;);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">lgamma</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">int</span><span class="special">*</span> <span class="identifier">sign</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&amp;);</span>
<span class="special">}}</span> <span class="comment">// namespaces</span>
</pre>
@@ -56,33 +56,24 @@
The <a href="http://en.wikipedia.org/wiki/Gamma_function" target="_top">lgamma function</a>
is defined by:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/lgamm1.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/lgamm1.svg"></span>
</p></blockquote></div>
<p>
The second form of the function takes a pointer to an integer, which if non-null
is set on output to the sign of tgamma(z).
</p>
<p>
The final <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
The final <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
be used to control the behaviour of the function: how it handles errors,
what level of precision to use etc. Refer to the <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">policy
what level of precision to use etc. Refer to the <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">policy
documentation for more details</a>.
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/lgamma.svg" align="middle"></span>
</p>
<p>
There are effectively two versions of this function internally: a fully generic
version that is slow, but reasonably accurate, and a much more efficient
approximation that is used where the number of digits in the significand
of T correspond to a certain <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
approximation</a>. In practice, any built-in floating-point type you will
encounter has an appropriate <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
approximation</a> defined for it. It is also possible, given enough machine
time, to generate further <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a>'s
using the program libs/math/tools/lanczos_generator.cpp.
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../graphs/lgamma.svg" align="middle"></span>
</p></blockquote></div>
<p>
The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
type calculation rules</em></span></a>: the result is of type <code class="computeroutput"><span class="keyword">double</span></code> if T is an integer type, or type T
@@ -106,7 +97,7 @@
error can be guaranteed.
</p>
<div class="table">
<a name="math_toolkit.sf_gamma.lgamma.table_lgamma"></a><p class="title"><b>Table&#160;6.3.&#160;Error rates for lgamma</b></p>
<a name="math_toolkit.sf_gamma.lgamma.table_lgamma"></a><p class="title"><b>Table 8.3. Error rates for lgamma</b></p>
<div class="table-contents"><table class="table" summary="Error rates for lgamma">
<colgroup>
<col>
@@ -120,22 +111,22 @@
</th>
<th>
<p>
Microsoft Visual C++ version 12.0<br> Win32<br> double
GNU C++ version 7.1.0<br> linux<br> double
</p>
</th>
<th>
<p>
GNU C++ version 5.1.0<br> linux<br> double
GNU C++ version 7.1.0<br> linux<br> long double
</p>
</th>
<th>
<p>
GNU C++ version 5.1.0<br> linux<br> long double
Sun compiler version 0x5150<br> Sun Solaris<br> long double
</p>
</th>
<th>
<p>
Sun compiler version 0x5130<br> Sun Solaris<br> long double
Microsoft Visual C++ version 14.1<br> Win32<br> double
</p>
</th>
</tr></thead>
@@ -148,29 +139,28 @@
</td>
<td>
<p>
<span class="blue">Max = 0.914&#949; (Mean = 0.167&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.958&#949; (Mean = 0.38&#949;))
<span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
2.1:</em></span> Max = 33.6ε (Mean = 2.78ε))<br> (<span class="emphasis"><em>Rmath
3.2.3:</em></span> Max = 1.55ε (Mean = 0.592ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0&#949; (Mean = 0&#949;)</span><br> <br> (<span class="emphasis"><em>GSL
1.16:</em></span> Max = 33.6&#949; (Mean = 2.78&#949;))<br> (<span class="emphasis"><em>Rmath
3.0.2:</em></span> Max = 1.55&#949; (Mean = 0.592&#949;))<br> (<span class="emphasis"><em>Cephes:</em></span>
Max = 1.55&#949; (Mean = 0.512&#949;))
<span class="blue">Max = 0.991ε (Mean = 0.308ε)</span><br> <br>
(<span class="emphasis"><em>&lt;cmath&gt;:</em></span> Max = 1.67ε (Mean = 0.487ε))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 1.67ε (Mean = 0.487ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0.991&#949; (Mean = 0.311&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;tr1/cmath&gt;:</em></span> Max = 1.67&#949; (Mean = 0.487&#949;))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 1.67&#949; (Mean = 0.487&#949;))
<span class="blue">Max = 0.991ε (Mean = 0.383ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 1.36ε (Mean = 0.476ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0.991&#949; (Mean = 0.383&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 1.36&#949; (Mean = 0.476&#949;))
<span class="blue">Max = 0.914ε (Mean = 0.175ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.958ε (Mean = 0.38ε))
</p>
</td>
</tr>
@@ -182,29 +172,28 @@
</td>
<td>
<p>
<span class="blue">Max = 0.964&#949; (Mean = 0.462&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.962&#949; (Mean = 0.372&#949;))
<span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
2.1:</em></span> Max = 5.21ε (Mean = 1.57ε))<br> (<span class="emphasis"><em>Rmath
3.2.3:</em></span> Max = 0ε (Mean = 0ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0&#949; (Mean = 0&#949;)</span><br> <br> (<span class="emphasis"><em>GSL
1.16:</em></span> Max = 5.21&#949; (Mean = 1.57&#949;))<br> (<span class="emphasis"><em>Rmath
3.0.2:</em></span> Max = 0&#949; (Mean = 0&#949;))<br> (<span class="emphasis"><em>Cephes:</em></span>
Max = 1.16&#949; (Mean = 0.341&#949;))
<span class="blue">Max = 1.42ε (Mean = 0.566ε)</span><br> <br>
(<span class="emphasis"><em>&lt;cmath&gt;:</em></span> Max = 0.964ε (Mean = 0.543ε))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.964ε (Mean = 0.543ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 1.42&#949; (Mean = 0.566&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;tr1/cmath&gt;:</em></span> Max = 0.964&#949; (Mean = 0.543&#949;))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.964&#949; (Mean = 0.543&#949;))
<span class="blue">Max = 1.42ε (Mean = 0.566ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.964ε (Mean = 0.543ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 1.42&#949; (Mean = 0.566&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.964&#949; (Mean = 0.543&#949;))
<span class="blue">Max = 0.964ε (Mean = 0.462ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.96 (Mean = 0.372ε))
</p>
</td>
</tr>
@@ -216,29 +205,28 @@
</td>
<td>
<p>
<span class="blue">Max = 0.867&#949; (Mean = 0.468&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.906&#949; (Mean = 0.565&#949;))
<span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
2.1:</em></span> Max = 442ε (Mean = 88.8ε))<br> (<span class="emphasis"><em>Rmath
3.2.3:</em></span> Max = 7.99e+04ε (Mean = 1.68e+04ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0&#949; (Mean = 0&#949;)</span><br> <br> (<span class="emphasis"><em>GSL
1.16:</em></span> Max = 442&#949; (Mean = 88.8&#949;))<br> (<span class="emphasis"><em>Rmath
3.0.2:</em></span> Max = 7.99e+04&#949; (Mean = 1.68e+04&#949;))<br> (<span class="emphasis"><em>Cephes:</em></span>
Max = 1.14e+05&#949; (Mean = 2.64e+04&#949;))
<span class="blue">Max = 0.948ε (Mean = 0.36ε)</span><br> <br>
(<span class="emphasis"><em>&lt;cmath&gt;:</em></span> Max = 0.615ε (Mean = 0.096ε))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.615ε (Mean = 0.096ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0.948&#949; (Mean = 0.36&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;tr1/cmath&gt;:</em></span> Max = 0.615&#949; (Mean = 0.096&#949;))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.615&#949; (Mean = 0.096&#949;))
<span class="blue">Max = 0.948ε (Mean = 0.36ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 1.71ε (Mean = 0.581ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0.866&#949; (Mean = 0.355&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 1.71&#949; (Mean = 0.581&#949;))
<span class="blue">Max = 0.86 (Mean = 0.468ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.906ε (Mean = 0.565ε))
</p>
</td>
</tr>
@@ -250,29 +238,28 @@
</td>
<td>
<p>
<span class="blue">Max = 0.591&#949; (Mean = 0.159&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.741&#949; (Mean = 0.473&#949;))
<span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
2.1:</em></span> Max = 1.17e+03ε (Mean = 274ε))<br> (<span class="emphasis"><em>Rmath
3.2.3:</em></span> Max = 2.63e+05ε (Mean = 5.84e+04ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0&#949; (Mean = 0&#949;)</span><br> <br> (<span class="emphasis"><em>GSL
1.16:</em></span> Max = 1.17e+03&#949; (Mean = 274&#949;))<br> (<span class="emphasis"><em>Rmath
3.0.2:</em></span> Max = 2.63e+05&#949; (Mean = 5.84e+04&#949;))<br> (<span class="emphasis"><em>Cephes:</em></span>
Max = 5.08e+05&#949; (Mean = 9.04e+04&#949;))
<span class="blue">Max = 0.878ε (Mean = 0.242ε)</span><br> <br>
(<span class="emphasis"><em>&lt;cmath&gt;:</em></span> Max = 0.741ε (Mean = 0.263ε))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.741ε (Mean = 0.263ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0.878&#949; (Mean = 0.242&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;tr1/cmath&gt;:</em></span> Max = 0.741&#949; (Mean = 0.263&#949;))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.741&#949; (Mean = 0.263&#949;))
<span class="blue">Max = 0.878ε (Mean = 0.242ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.598ε (Mean = 0.235ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0.878&#949; (Mean = 0.241&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.598&#949; (Mean = 0.235&#949;))
<span class="blue">Max = 0.591ε (Mean = 0.159ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.741ε (Mean = 0.473ε))
</p>
</td>
</tr>
@@ -284,29 +271,28 @@
</td>
<td>
<p>
<span class="blue">Max = 4.22&#949; (Mean = 1.33&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.997&#949; (Mean = 0.444&#949;))
<span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
2.1:</em></span> Max = 24.9ε (Mean = 4.6ε))<br> (<span class="emphasis"><em>Rmath
3.2.3:</em></span> Max = 4.22ε (Mean = 1.26ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0&#949; (Mean = 0&#949;)</span><br> <br> (<span class="emphasis"><em>GSL
1.16:</em></span> Max = 24.9&#949; (Mean = 4.6&#949;))<br> (<span class="emphasis"><em>Rmath
3.0.2:</em></span> Max = 2.41e+05&#949; (Mean = 4.29e+04&#949;))<br> (<span class="emphasis"><em>Cephes:</em></span>
Max = 0.997&#949; (Mean = 0.429&#949;))
<span class="blue">Max = 3.81ε (Mean = 1.01ε)</span><br> <br>
(<span class="emphasis"><em>&lt;cmath&gt;:</em></span> Max = 0.997ε (Mean = 0.412ε))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.997ε (Mean = 0.412ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 3.81&#949; (Mean = 1.01&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;tr1/cmath&gt;:</em></span> Max = 3.01&#949; (Mean = 0.86&#949;))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 3.01&#949; (Mean = 0.86&#949;))
<span class="blue">Max = 3.81ε (Mean = 1.01ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 3.04ε (Mean = 1.01ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 3.81&#949; (Mean = 1.01&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 3.04&#949; (Mean = 1.01&#949;))
<span class="blue">Max = 4.22ε (Mean = 1.33ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.997ε (Mean = 0.444ε))
</p>
</td>
</tr>
@@ -318,36 +304,53 @@
</td>
<td>
<p>
<span class="blue">Max = 0.821&#949; (Mean = 0.419&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 249&#949; (Mean = 43.1&#949;))
<span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
2.1:</em></span> Max = 7.02ε (Mean = 1.47ε))<br> (<span class="emphasis"><em>Rmath
3.2.3:</em></span> Max = 250ε (Mean = 60.9ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0&#949; (Mean = 0&#949;)</span><br> <br> (<span class="emphasis"><em>GSL
1.16:</em></span> Max = 7.02&#949; (Mean = 1.47&#949;))<br> (<span class="emphasis"><em>Rmath
3.0.2:</em></span> Max = 4.08e+04&#949; (Mean = 7.26e+03&#949;))<br> (<span class="emphasis"><em>Cephes:</em></span>
Max = 1.64&#949; (Mean = 0.693&#949;))
<span class="blue">Max = 0.821ε (Mean = 0.513ε)</span><br> <br>
(<span class="emphasis"><em>&lt;cmath&gt;:</em></span> Max = 1.58ε (Mean = 0.672ε))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 1.58ε (Mean = 0.672ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0.821&#949; (Mean = 0.513&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;tr1/cmath&gt;:</em></span> Max = 1.58&#949; (Mean = 0.672&#949;))<br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 1.58&#949; (Mean = 0.672&#949;))
<span class="blue">Max = 1.59ε (Mean = 0.587ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.821ε (Mean = 0.674ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 1.59&#949; (Mean = 0.587&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 0.821&#949; (Mean = 0.674&#949;))
<span class="blue">Max = 0.821ε (Mean = 0.419ε)</span><br> <br>
(<span class="emphasis"><em>&lt;math.h&gt;:</em></span> Max = 249ε (Mean = 43.1ε))
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break"><h5>
<br class="table-break"><p>
The following error plot are based on an exhaustive search of the functions
domain, MSVC-15.5 at <code class="computeroutput"><span class="keyword">double</span></code>
precision, and GCC-7.1/Ubuntu for <code class="computeroutput"><span class="keyword">long</span>
<span class="keyword">double</span></code> and <code class="computeroutput"><span class="identifier">__float128</span></code>.
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../graphs/lgamma__double.svg" align="middle"></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../graphs/lgamma__80_bit_long_double.svg" align="middle"></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../graphs/lgamma____float128.svg" align="middle"></span>
</p></blockquote></div>
<h5>
<a name="math_toolkit.sf_gamma.lgamma.h3"></a>
<span class="phrase"><a name="math_toolkit.sf_gamma.lgamma.testing"></a></span><a class="link" href="lgamma.html#math_toolkit.sf_gamma.lgamma.testing">Testing</a>
</h5>
@@ -366,9 +369,10 @@
The generic version of this function is implemented using Sterling's approximation
for large arguments:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/gamma6.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/gamma6.svg"></span>
</p></blockquote></div>
<p>
For small arguments, the logarithm of tgamma is used.
</p>
@@ -376,20 +380,22 @@
For negative <span class="emphasis"><em>z</em></span> the logarithm version of the reflection
formula is used:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/lgamm3.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/lgamm3.svg"></span>
</p></blockquote></div>
<p>
For types of known precision, the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
approximation</a> is used, a traits class <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">lanczos</span><span class="special">::</span><span class="identifier">lanczos_traits</span></code>
maps type T to an appropriate approximation. The logarithmic version of the
<a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos approximation</a> is:
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/lgamm4.svg"></span>
</p></blockquote></div>
<p>
<span class="inlinemediaobject"><img src="../../../equations/lgamm4.svg"></span>
</p>
<p>
Where L<sub>e,g</sub> &#160; is the Lanczos sum, scaled by e<sup>g</sup>.
Where L<sub>e,g</sub> is the Lanczos sum, scaled by e<sup>g</sup>.
</p>
<p>
As before the reflection formula is used for <span class="emphasis"><em>z &lt; 0</em></span>.
@@ -410,7 +416,7 @@
</pre>
<p>
Where Y is a constant, and R(z-2) is the rational approximation: optimised
so that it's absolute error is tiny compared to Y. In addition small values
so that its absolute error is tiny compared to Y. In addition, small values
of z greater than 3 can handled by argument reduction using the recurrence
relation:
</p>
@@ -454,27 +460,29 @@
also be fed into log1p. Crucially, all of the terms tend to zero, as <span class="emphasis"><em>z
-&gt; 1</em></span>:
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/lgamm5.svg"></span>
</p></blockquote></div>
<p>
<span class="inlinemediaobject"><img src="../../../equations/lgamm5.svg"></span>
</p>
<p>
The C<sub>k</sub> &#160; terms in the above are the same as in the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
The C<sub>k</sub> terms in the above are the same as in the <a class="link" href="../lanczos.html" title="The Lanczos Approximation">Lanczos
approximation</a>.
</p>
<p>
A similar rearrangement can be performed at <span class="emphasis"><em>z = 2</em></span>:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/lgamm6.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/lgamm6.svg"></span>
</p></blockquote></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010, 2012-2014, 2017 Nikhar
Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan R&#229;de, Gautam
Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker
and Xiaogang Zhang<p>
<td align="right"><div class="copyright-footer">Copyright © 2006-2021 Nikhar Agrawal, Anton Bikineev, Matthew Borland,
Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno
Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde,
Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle
Walker and Xiaogang Zhang<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>