2
0
mirror of https://github.com/boostorg/math.git synced 2026-01-19 04:22:09 +00:00

Update docs with error new graphs.

[CI SKIP]
This commit is contained in:
jzmaddock
2018-03-08 10:56:40 +00:00
parent db9a784005
commit 22f3f97704
65 changed files with 1200 additions and 911 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 28 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 25 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 25 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 25 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -381,7 +381,7 @@ int main()
plot_errors_1d(tgamma_func(), boost::multiprecision::float128(1e-200), boost::multiprecision::float128(150.0), 10000, "tgamma, __float128");
plot_errors_1d(lgamma_func(), boost::multiprecision::float128(1e-200), boost::multiprecision::float128(1000.0), 10000, "lgamma, __float128");
plot_errors_1d(trigamma_func(), boost::multiprecision::float128(1e-200), boost::multiprecision::float128(10.0), 10000, "trigamma, __float128");
plot_errors_1d(erf_func(), -boost::multiprecision::float128(5.0), boost::multiprecision::float128(5.0), 10000, "erf, 80-bit __float128");
plot_errors_1d(erf_func(), -boost::multiprecision::float128(5.0), boost::multiprecision::float128(5.0), 10000, "erf, __float128");
plot_errors_1d(erfc_func(), -boost::multiprecision::float128(5.0), boost::multiprecision::float128(120.0), 10000, "erfc, __float128");
plot_errors_1d(j0_func(), boost::multiprecision::float128(0.0), boost::multiprecision::float128(50.0), 10000, "j0, __float128", boost::multiprecision::float128(50.0));
plot_errors_1d(j1_func(), boost::multiprecision::float128(0.0), boost::multiprecision::float128(50.0), 10000, "j1, __float128", boost::multiprecision::float128(50.0));

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 23 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -122,7 +122,7 @@ This manual is also available in <a href="http://sourceforge.net/projects/boost/
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: March 02, 2018 at 18:04:21 GMT</small></p></td>
<td align="left"><p><small>Last revised: March 08, 2018 at 08:50:23 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>

View File

@@ -24,7 +24,7 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id2312967"></a>Function Index</h2></div></div></div>
<a name="id2307386"></a>Function Index</h2></div></div></div>
<p><a class="link" href="s01.html#idx_id_0">1</a> <a class="link" href="s01.html#idx_id_1">2</a> <a class="link" href="s01.html#idx_id_2">4</a> <a class="link" href="s01.html#idx_id_3">A</a> <a class="link" href="s01.html#idx_id_4">B</a> <a class="link" href="s01.html#idx_id_5">C</a> <a class="link" href="s01.html#idx_id_6">D</a> <a class="link" href="s01.html#idx_id_7">E</a> <a class="link" href="s01.html#idx_id_8">F</a> <a class="link" href="s01.html#idx_id_9">G</a> <a class="link" href="s01.html#idx_id_10">H</a> <a class="link" href="s01.html#idx_id_11">I</a> <a class="link" href="s01.html#idx_id_12">J</a> <a class="link" href="s01.html#idx_id_13">K</a> <a class="link" href="s01.html#idx_id_14">L</a> <a class="link" href="s01.html#idx_id_15">M</a> <a class="link" href="s01.html#idx_id_16">N</a> <a class="link" href="s01.html#idx_id_17">O</a> <a class="link" href="s01.html#idx_id_18">P</a> <a class="link" href="s01.html#idx_id_19">Q</a> <a class="link" href="s01.html#idx_id_20">R</a> <a class="link" href="s01.html#idx_id_21">S</a> <a class="link" href="s01.html#idx_id_22">T</a> <a class="link" href="s01.html#idx_id_23">U</a> <a class="link" href="s01.html#idx_id_24">V</a> <a class="link" href="s01.html#idx_id_25">W</a> <a class="link" href="s01.html#idx_id_26">X</a> <a class="link" href="s01.html#idx_id_27">Y</a> <a class="link" href="s01.html#idx_id_28">Z</a></p>
<div class="variablelist"><dl class="variablelist">
<dt>

View File

@@ -24,7 +24,7 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id2333475"></a>Class Index</h2></div></div></div>
<a name="id2334829"></a>Class Index</h2></div></div></div>
<p><a class="link" href="s02.html#idx_id_32">A</a> <a class="link" href="s02.html#idx_id_33">B</a> <a class="link" href="s02.html#idx_id_34">C</a> <a class="link" href="s02.html#idx_id_35">D</a> <a class="link" href="s02.html#idx_id_36">E</a> <a class="link" href="s02.html#idx_id_37">F</a> <a class="link" href="s02.html#idx_id_38">G</a> <a class="link" href="s02.html#idx_id_39">H</a> <a class="link" href="s02.html#idx_id_40">I</a> <a class="link" href="s02.html#idx_id_43">L</a> <a class="link" href="s02.html#idx_id_44">M</a> <a class="link" href="s02.html#idx_id_45">N</a> <a class="link" href="s02.html#idx_id_46">O</a> <a class="link" href="s02.html#idx_id_47">P</a> <a class="link" href="s02.html#idx_id_48">Q</a> <a class="link" href="s02.html#idx_id_49">R</a> <a class="link" href="s02.html#idx_id_50">S</a> <a class="link" href="s02.html#idx_id_51">T</a> <a class="link" href="s02.html#idx_id_52">U</a> <a class="link" href="s02.html#idx_id_54">W</a></p>
<div class="variablelist"><dl class="variablelist">
<dt>

View File

@@ -24,7 +24,7 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id2337880"></a>Typedef Index</h2></div></div></div>
<a name="id2333864"></a>Typedef Index</h2></div></div></div>
<p><a class="link" href="s03.html#idx_id_61">A</a> <a class="link" href="s03.html#idx_id_62">B</a> <a class="link" href="s03.html#idx_id_63">C</a> <a class="link" href="s03.html#idx_id_64">D</a> <a class="link" href="s03.html#idx_id_65">E</a> <a class="link" href="s03.html#idx_id_66">F</a> <a class="link" href="s03.html#idx_id_67">G</a> <a class="link" href="s03.html#idx_id_68">H</a> <a class="link" href="s03.html#idx_id_69">I</a> <a class="link" href="s03.html#idx_id_72">L</a> <a class="link" href="s03.html#idx_id_74">N</a> <a class="link" href="s03.html#idx_id_75">O</a> <a class="link" href="s03.html#idx_id_76">P</a> <a class="link" href="s03.html#idx_id_78">R</a> <a class="link" href="s03.html#idx_id_79">S</a> <a class="link" href="s03.html#idx_id_80">T</a> <a class="link" href="s03.html#idx_id_81">U</a> <a class="link" href="s03.html#idx_id_82">V</a> <a class="link" href="s03.html#idx_id_83">W</a></p>
<div class="variablelist"><dl class="variablelist">
<dt>

View File

@@ -24,7 +24,7 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id2341013"></a>Macro Index</h2></div></div></div>
<a name="id2336617"></a>Macro Index</h2></div></div></div>
<p><a class="link" href="s04.html#idx_id_91">B</a> <a class="link" href="s04.html#idx_id_95">F</a></p>
<div class="variablelist"><dl class="variablelist">
<dt>

View File

@@ -23,7 +23,7 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id2340159"></a>Index</h2></div></div></div>
<a name="id2341432"></a>Index</h2></div></div></div>
<p><a class="link" href="s05.html#idx_id_116">1</a> <a class="link" href="s05.html#idx_id_117">2</a> <a class="link" href="s05.html#idx_id_118">4</a> <a class="link" href="s05.html#idx_id_119">A</a> <a class="link" href="s05.html#idx_id_120">B</a> <a class="link" href="s05.html#idx_id_121">C</a> <a class="link" href="s05.html#idx_id_122">D</a> <a class="link" href="s05.html#idx_id_123">E</a> <a class="link" href="s05.html#idx_id_124">F</a> <a class="link" href="s05.html#idx_id_125">G</a> <a class="link" href="s05.html#idx_id_126">H</a> <a class="link" href="s05.html#idx_id_127">I</a> <a class="link" href="s05.html#idx_id_128">J</a> <a class="link" href="s05.html#idx_id_129">K</a> <a class="link" href="s05.html#idx_id_130">L</a> <a class="link" href="s05.html#idx_id_131">M</a> <a class="link" href="s05.html#idx_id_132">N</a> <a class="link" href="s05.html#idx_id_133">O</a> <a class="link" href="s05.html#idx_id_134">P</a> <a class="link" href="s05.html#idx_id_135">Q</a> <a class="link" href="s05.html#idx_id_136">R</a> <a class="link" href="s05.html#idx_id_137">S</a> <a class="link" href="s05.html#idx_id_138">T</a> <a class="link" href="s05.html#idx_id_139">U</a> <a class="link" href="s05.html#idx_id_140">V</a> <a class="link" href="s05.html#idx_id_141">W</a> <a class="link" href="s05.html#idx_id_142">X</a> <a class="link" href="s05.html#idx_id_143">Y</a> <a class="link" href="s05.html#idx_id_144">Z</a></p>
<div class="variablelist"><dl class="variablelist">
<dt>

View File

@@ -82,7 +82,10 @@
<p>
In general though, the relative error is low (less than 100 &#949;) for <span class="emphasis"><em>x
&gt; 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x &lt;
0</em></span>.
0</em></span> as the following error plot illustrates:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/ai__double.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.airy.ai.h3"></a>

View File

@@ -79,7 +79,10 @@
<p>
In general though, the relative error is low (less than 100 &#949;) for <span class="emphasis"><em>x
&gt; 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x &lt;
0</em></span>.
0</em></span> as the following error plot illustrates:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/ai_prime__double.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.airy.aip.h3"></a>

View File

@@ -78,7 +78,10 @@
<p>
In general though, the relative error is low (less than 100 &#949;) for <span class="emphasis"><em>x
&gt; 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x &lt;
0</em></span>.
0</em></span> as the following error plot illustrate:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/bi__double.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.airy.bi.h3"></a>

View File

@@ -79,7 +79,10 @@
<p>
In general though, the relative error is low (less than 100 &#949;) for <span class="emphasis"><em>x
&gt; 0</em></span> while only the absolute error is low for <span class="emphasis"><em>x &lt;
0</em></span>.
0</em></span> as the following error plot illustrates:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/bi_prime__double.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.airy.bip.h3"></a>

View File

@@ -37,7 +37,7 @@
<span class="keyword">class</span> <span class="identifier">barycentric_rational</span>
<span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">InputIterator1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">InputIterator2</span><span class="special">&gt;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">InputIterator1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">InputIterator2</span><span class="special">&gt;</span>
<span class="identifier">barycentric_rational</span><span class="special">(</span><span class="identifier">InputIterator1</span> <span class="identifier">start_x</span><span class="special">,</span> <span class="identifier">InputIterator1</span> <span class="identifier">end_x</span><span class="special">,</span> <span class="identifier">InputIterator2</span> <span class="identifier">start_y</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">approximation_order</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
<span class="identifier">barycentric_rational</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Real</span><span class="special">*</span> <span class="keyword">const</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Real</span><span class="special">*</span> <span class="keyword">const</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">approximation_order</span> <span class="special">=</span> <span class="number">3</span><span class="special">);</span>
@@ -68,7 +68,7 @@
This implicitly calls the constructor with approximation order 3, and hence
the accuracy is &#119926;(h<sup>4</sup>). In general, if you require an approximation order <span class="emphasis"><em>d</em></span>,
then the error is &#119926;(h<sup>d+1</sup>). A call to the constructor with an explicit approximation
order could be
order is demonstrated below
</p>
<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">barycentric_rational</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">interpolant</span><span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">data</span><span class="special">(),</span> <span class="identifier">y</span><span class="special">.</span><span class="identifier">data</span><span class="special">(),</span> <span class="identifier">y</span><span class="special">.</span><span class="identifier">size</span><span class="special">(),</span> <span class="number">5</span><span class="special">);</span>
</pre>

View File

@@ -1180,6 +1180,19 @@
and the result checked against our test data: no errors in the test data
were found.
</p>
<p>
The following error plot are based on an exhaustive search of the functions
domain for J0 and Y0, MSVC-15.5 at <code class="computeroutput"><span class="keyword">double</span></code>
precision, other compilers and precisions are very similar - the plots simply
illustrate the relatively large errors as you approach a zero, and the very
low errors elsewhere.
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/j0__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/y0__double.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.bessel.bessel_first.h4"></a>
<span class="phrase"><a name="math_toolkit.bessel.bessel_first.implementation"></a></span><a class="link" href="bessel_first.html#math_toolkit.bessel.bessel_first.implementation">Implementation</a>

View File

@@ -955,7 +955,49 @@
</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 for I0, I1, K0, and K1, 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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/i0__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/i0__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/i0____float128.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/i1__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/i1__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/i1____float128.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/k0__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/k0__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/k0____float128.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/k1__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/k1__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/k1____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.bessel.mbessel.h4"></a>
<span class="phrase"><a name="math_toolkit.bessel.mbessel.implementation"></a></span><a class="link" href="mbessel.html#math_toolkit.bessel.mbessel.implementation">Implementation</a>
</h5>

View File

@@ -27,7 +27,7 @@
<a name="math_toolkit.conventions"></a><a class="link" href="conventions.html" title="Document Conventions">Document Conventions</a>
</h2></div></div></div>
<p>
<a class="indexterm" name="id1446634"></a>
<a class="indexterm" name="id1443465"></a>
</p>
<p>
This documentation aims to use of the following naming and formatting conventions.

View File

@@ -64,13 +64,13 @@
of a function which is known at equally spaced points. The cubic B-spline interpolation
is numerically stable as it uses compactly supported basis functions constructed
via iterative convolution. This is to be contrasted to traditional cubic spline
interpolation is ill-conditioned as the global support of cubic polynomials
causes small changes far from the evaluation point exert a large influence
interpolation which is ill-conditioned as the global support of cubic polynomials
causes small changes far from the evaluation point to exert a large influence
on the calculated value.
</p>
<p>
There are many use cases for interpolating a function at equally spaced points.
One particularly important example is solving ODE's whose coefficients depend
One particularly important example is solving ODEs whose coefficients depend
on data determined from experiment or numerical simulation. Since most ODE
steppers are adaptive, they must be able to sample the coefficients at arbitrary
points; not just at the points we know the values of our function.

View File

@@ -221,7 +221,22 @@
</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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/elliptic_integral_k__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/elliptic_integral_k__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/elliptic_integral_k____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.ellint.ellint_1.h3"></a>
<span class="phrase"><a name="math_toolkit.ellint.ellint_1.testing"></a></span><a class="link" href="ellint_1.html#math_toolkit.ellint.ellint_1.testing">Testing</a>
</h5>

View File

@@ -222,7 +222,22 @@
</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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/elliptic_integral_e__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/elliptic_integral_e__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/elliptic_integral_e____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.ellint.ellint_2.h3"></a>
<span class="phrase"><a name="math_toolkit.ellint.ellint_2.testing"></a></span><a class="link" href="ellint_2.html#math_toolkit.ellint.ellint_2.testing">Testing</a>
</h5>

View File

@@ -302,7 +302,22 @@ is very large, in which case the usual trigonometric function argument-reduction
</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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/elliptic_integral_d__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/elliptic_integral_d__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/elliptic_integral_d____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.ellint.ellint_d.h3"></a>
<span class="phrase"><a name="math_toolkit.ellint.ellint_d.testing"></a></span><a class="link" href="ellint_d.html#math_toolkit.ellint.ellint_d.testing">Testing</a>
</h5>

View File

@@ -217,6 +217,21 @@
SPECFUN along with this implementation increase their error rates very slightly
over the range [4,6].
</p>
<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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/exponential_integral_ei__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/exponential_integral_ei__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/exponential_integral_ei____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.expint.expint_i.h3"></a>
<span class="phrase"><a name="math_toolkit.expint.expint_i.testing"></a></span><a class="link" href="expint_i.html#math_toolkit.expint.expint_i.testing">Testing</a>

View File

@@ -41,7 +41,7 @@
it is rarely done via numerical methods. Instead, transcendental and numerically
defined functions are integrated via Gaussian quadrature, and the defining
problem becomes how to estimate the remainder. Gaussian quadrature alone (without
some form on interval splitting) cannot answer this question.
some form of interval splitting) cannot answer this question.
</p>
<p>
It is possible to compute a Gaussian quadrature of order <span class="emphasis"><em>n</em></span>
@@ -64,10 +64,9 @@
singularities, please refer to the <a class="link" href="double_exponential.html" title="Double-exponential quadrature">double-exponential
integration schemes</a>.
</p>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">quadrature</span><span class="special">/</span><span class="identifier">gauss_kronrod</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">N</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">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">quadrature</span><span class="special">/</span><span class="identifier">gauss_kronrod</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">N</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">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">policy</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">gauss_kronrod</span>
<span class="special">{</span>
<span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">RandomAccessContainer</span><span class="special">&amp;</span> <span class="identifier">abscissa</span><span class="special">();</span>

View File

@@ -27,7 +27,7 @@
<a name="math_toolkit.navigation"></a><a class="link" href="navigation.html" title="Navigation">Navigation</a>
</h2></div></div></div>
<p>
<a class="indexterm" name="id1446470"></a>
<a class="indexterm" name="id1443356"></a>
</p>
<p>
Boost.Math documentation is provided in both HTML and PDF formats.

View File

@@ -382,7 +382,22 @@
</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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/erf__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/erf__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/erf____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.sf_erf.error_function.h3"></a>
<span class="phrase"><a name="math_toolkit.sf_erf.error_function.testing"></a></span><a class="link" href="error_function.html#math_toolkit.sf_erf.error_function.testing">Testing</a>
</h5>

View File

@@ -251,7 +251,22 @@
</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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/erfc__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/erfc__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/erfc____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.sf_erf.error_inv.h3"></a>
<span class="phrase"><a name="math_toolkit.sf_erf.error_inv.testing"></a></span><a class="link" href="error_inv.html#math_toolkit.sf_erf.error_inv.testing">Testing</a>
</h5>

View File

@@ -330,6 +330,21 @@
relative errors very close to these can be arbitrarily large, although absolute
error will remain very low.
</p>
<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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/digamma__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/digamma__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/digamma____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.sf_gamma.digamma.h3"></a>
<span class="phrase"><a name="math_toolkit.sf_gamma.digamma.testing"></a></span><a class="link" href="digamma.html#math_toolkit.sf_gamma.digamma.testing">Testing</a>

View File

@@ -347,7 +347,22 @@
</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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/lgamma__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/lgamma__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/lgamma____float128.svg" align="middle"></span>
</p>
<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>

View File

@@ -430,7 +430,22 @@
</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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/tgamma__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/tgamma__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/tgamma____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.sf_gamma.tgamma.h3"></a>
<span class="phrase"><a name="math_toolkit.sf_gamma.tgamma.testing"></a></span><a class="link" href="tgamma.html#math_toolkit.sf_gamma.tgamma.testing">Testing</a>
</h5>

View File

@@ -145,6 +145,21 @@
As shown above, error rates are generally very low for built in types. For
multiprecision types, error rates are typically in the order of a few epsilon.
</p>
<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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/trigamma__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/trigamma__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/trigamma____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.sf_gamma.trigamma.h3"></a>
<span class="phrase"><a name="math_toolkit.sf_gamma.trigamma.testing"></a></span><a class="link" href="trigamma.html#math_toolkit.sf_gamma.trigamma.testing">Testing</a>

View File

@@ -283,7 +283,22 @@
</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>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/zeta__double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/zeta__80_bit_long_double.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/zeta____float128.svg" align="middle"></span>
</p>
<h5>
<a name="math_toolkit.zetas.zeta.h3"></a>
<span class="phrase"><a name="math_toolkit.zetas.zeta.testing"></a></span><a class="link" href="zeta.html#math_toolkit.zetas.zeta.testing">Testing</a>
</h5>

View File

@@ -49,7 +49,9 @@ This function is implemented entirely in terms of the Bessel functions
__cyl_bessel_j and __cyl_bessel_k - refer to those functions for detailed accuracy information.
In general though, the relative error is low (less than 100 [epsilon]) for /x > 0/ while
only the absolute error is low for /x < 0/.
only the absolute error is low for /x < 0/ as the following error plot illustrates:
[graph ai__double]
[heading Testing]
@@ -101,7 +103,9 @@ This function is implemented entirely in terms of the Bessel functions
__cyl_bessel_i and __cyl_bessel_j - refer to those functions for detailed accuracy information.
In general though, the relative error is low (less than 100 [epsilon]) for /x > 0/ while
only the absolute error is low for /x < 0/.
only the absolute error is low for /x < 0/ as the following error plot illustrate:
[graph bi__double]
[heading Testing]
@@ -153,7 +157,9 @@ This function is implemented entirely in terms of the Bessel functions
__cyl_bessel_j and __cyl_bessel_k - refer to those functions for detailed accuracy information.
In general though, the relative error is low (less than 100 [epsilon]) for /x > 0/ while
only the absolute error is low for /x < 0/.
only the absolute error is low for /x < 0/ as the following error plot illustrates:
[graph ai_prime__double]
[heading Testing]
@@ -205,7 +211,9 @@ This function is implemented entirely in terms of the Bessel functions
__cyl_bessel_i and __cyl_bessel_j - refer to those functions for detailed accuracy information.
In general though, the relative error is low (less than 100 [epsilon]) for /x > 0/ while
only the absolute error is low for /x < 0/.
only the absolute error is low for /x < 0/ as the following error plot illustrates:
[graph bi_prime__double]
[heading Testing]

View File

@@ -78,6 +78,35 @@ problem cases in other libraries:
[table_cyl_bessel_k]
The following error plot are based on an exhaustive search of the functions domain for I0, I1, K0, and K1,
MSVC-15.5 at `double` precision, and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph i0__double]
[graph i0__80_bit_long_double]
[graph i0____float128]
[graph i1__double]
[graph i1__80_bit_long_double]
[graph i1____float128]
[graph k0__double]
[graph k0__80_bit_long_double]
[graph k0____float128]
[graph k1__double]
[graph k1__80_bit_long_double]
[graph k1____float128]
[h4 Implementation]
The following are handled as special cases first:

View File

@@ -99,6 +99,15 @@ by way of double-checking these results, the worst performing __cephes and GSL c
were recomputed using [@http://functions.wolfram.com functions.wolfram.com],
and the result checked against our test data: no errors in the test data were found.
The following error plot are based on an exhaustive search of the functions domain for J0 and Y0,
MSVC-15.5 at `double` precision, other compilers and precisions are very similar - the plots simply
illustrate the relatively large errors as you approach a zero, and the very low errors elsewhere.
[graph j0__double]
[graph y0__double]
[h4 Implementation]
The implementation is mostly about filtering off various special cases:

View File

@@ -44,6 +44,15 @@ For negative arguments there are an infinite number of irrational roots:
relative errors very close to these can be arbitrarily large, although
absolute error will remain very low.
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph digamma__double]
[graph digamma__80_bit_long_double]
[graph digamma____float128]
[h4 Testing]
There are two sets of tests: spot values are computed using

View File

@@ -79,6 +79,15 @@ are relative errors in units of epsilon.
[table_ellint_1]
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph elliptic_integral_k__double]
[graph elliptic_integral_k__80_bit_long_double]
[graph elliptic_integral_k____float128]
[heading Testing]
The tests use a mixture of spot test values calculated using the online
@@ -173,6 +182,15 @@ are relative errors in units of epsilon.
[table_ellint_2]
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph elliptic_integral_e__double]
[graph elliptic_integral_e__80_bit_long_double]
[graph elliptic_integral_e____float128]
[heading Testing]
The tests use a mixture of spot test values calculated using the online
@@ -392,6 +410,17 @@ is very large, in which case the usual trigonometric function argument-reduction
[table_ellint_d]
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph elliptic_integral_d__double]
[graph elliptic_integral_d__80_bit_long_double]
[graph elliptic_integral_d____float128]
[heading Testing]
The tests use a mixture of spot test values calculated using

View File

@@ -66,6 +66,15 @@ than the one shown will have __zero_error.
[table_erfc]
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph erf__double]
[graph erf__80_bit_long_double]
[graph erf____float128]
[h4 Testing]
The tests for these functions come in two parts:

View File

@@ -66,6 +66,15 @@ functions have the same accuracy as the
[table_erfc_inv]
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph erfc__double]
[graph erfc__80_bit_long_double]
[graph erfc____float128]
[h4 Testing]
There are two sets of tests:

View File

@@ -144,6 +144,17 @@ GSL has the greatest difficulty near the positive root of En, while
Cody's SPECFUN along with this implementation increase their
error rates very slightly over the range \[4,6\].
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph exponential_integral_ei__double]
[graph exponential_integral_ei__80_bit_long_double]
[graph exponential_integral_ei____float128]
[h4 Testing]
The tests for these functions come in two parts:

View File

@@ -62,6 +62,15 @@ a low absolute error can be guaranteed.
[table_lgamma]
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph lgamma__double]
[graph lgamma__80_bit_long_double]
[graph lgamma____float128]
[h4 Testing]
The main tests for this function involve comparisons against the logs of

View File

@@ -79,6 +79,16 @@ than the one shown will have __zero_error.
[table_tgamma1pm1]
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph tgamma__double]
[graph tgamma__80_bit_long_double]
[graph tgamma____float128]
[h4 Testing]
The gamma is relatively easy to test: factorials and half-integer factorials

View File

@@ -43,6 +43,15 @@ As shown above, error rates are generally very low for built in types.
For multiprecision types, error rates are typically in the order of a
few epsilon.
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph trigamma__double]
[graph trigamma__80_bit_long_double]
[graph trigamma____float128]
[h4 Testing]
Testing is against Mathematica generated spot values to 35 digit precision.

View File

@@ -48,6 +48,15 @@ than the one shown will have __zero_error.
[table_zeta]
The following error plot are based on an exhaustive search of the functions domain, MSVC-15.5 at `double` precision,
and GCC-7.1/Ubuntu for `long double` and `__float128`.
[graph zeta__double]
[graph zeta__80_bit_long_double]
[graph zeta____float128]
[h4 Testing]
The tests for these functions come in two parts: