• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Elliptic Integrals - Carlson Form</title>
5<link rel="stylesheet" href="../../math.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../index.html" title="Math Toolkit 2.12.0">
8<link rel="up" href="../ellint.html" title="Elliptic Integrals">
9<link rel="prev" href="ellint_intro.html" title="Elliptic Integral Overview">
10<link rel="next" href="ellint_1.html" title="Elliptic Integrals of the First Kind - Legendre Form">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="ellint_intro.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ellint_1.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h3 class="title">
27<a name="math_toolkit.ellint.ellint_carlson"></a><a class="link" href="ellint_carlson.html" title="Elliptic Integrals - Carlson Form">Elliptic Integrals
28      - Carlson Form</a>
29</h3></div></div></div>
30<h5>
31<a name="math_toolkit.ellint.ellint_carlson.h0"></a>
32        <span class="phrase"><a name="math_toolkit.ellint.ellint_carlson.synopsis"></a></span><a class="link" href="ellint_carlson.html#math_toolkit.ellint.ellint_carlson.synopsis">Synopsis</a>
33      </h5>
34<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">special_functions</span><span class="special">/</span><span class="identifier">ellint_rf</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
35</pre>
36<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span>
37
38<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</span><span class="special">&gt;</span>
39<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">ellint_rf</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">)</span>
40
41<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</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>
42<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">ellint_rf</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</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>
43
44<span class="special">}}</span> <span class="comment">// namespaces</span>
45</pre>
46<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">special_functions</span><span class="special">/</span><span class="identifier">ellint_rd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
47</pre>
48<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span>
49
50<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</span><span class="special">&gt;</span>
51<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">ellint_rd</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">)</span>
52
53<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</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>
54<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">ellint_rd</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</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>
55
56<span class="special">}}</span> <span class="comment">// namespaces</span>
57</pre>
58<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">special_functions</span><span class="special">/</span><span class="identifier">ellint_rj</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
59</pre>
60<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span>
61
62<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">&gt;</span>
63<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">ellint_rj</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">T4</span> <span class="identifier">p</span><span class="special">)</span>
64
65<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</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>
66<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">ellint_rj</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">T4</span> <span class="identifier">p</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>
67
68<span class="special">}}</span> <span class="comment">// namespaces</span>
69</pre>
70<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">special_functions</span><span class="special">/</span><span class="identifier">ellint_rc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
71</pre>
72<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span>
73
74<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
75<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">ellint_rc</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">)</span>
76
77<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</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>
78<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">ellint_rc</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</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>
79
80<span class="special">}}</span> <span class="comment">// namespaces</span>
81</pre>
82<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">special_functions</span><span class="special">/</span><span class="identifier">ellint_rg</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
83</pre>
84<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span> <span class="special">{</span>
85
86<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</span><span class="special">&gt;</span>
87<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">ellint_rg</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">)</span>
88
89<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</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>
90<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">ellint_rg</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</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>
91
92<span class="special">}}</span> <span class="comment">// namespaces</span>
93</pre>
94<h5>
95<a name="math_toolkit.ellint.ellint_carlson.h1"></a>
96        <span class="phrase"><a name="math_toolkit.ellint.ellint_carlson.description"></a></span><a class="link" href="ellint_carlson.html#math_toolkit.ellint.ellint_carlson.description">Description</a>
97      </h5>
98<p>
99        These functions return Carlson's symmetrical elliptic integrals, the functions
100        have complicated behavior over all their possible domains, but the following
101        graph gives an idea of their behavior:
102      </p>
103<div class="blockquote"><blockquote class="blockquote"><p>
104          <span class="inlinemediaobject"><img src="../../../graphs/ellint_carlson.svg" align="middle"></span>
105
106        </p></blockquote></div>
107<p>
108        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
109        type calculation rules</em></span></a> when the arguments are of different
110        types: otherwise the return is the same type as the arguments.
111      </p>
112<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</span><span class="special">&gt;</span>
113<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">ellint_rf</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">)</span>
114
115<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</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>
116<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">ellint_rf</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</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>
117</pre>
118<p>
119        Returns Carlson's Elliptic Integral <span class="emphasis"><em>R<sub>F</sub></em></span>:
120      </p>
121<div class="blockquote"><blockquote class="blockquote"><p>
122          <span class="inlinemediaobject"><img src="../../../equations/ellint9.svg"></span>
123
124        </p></blockquote></div>
125<p>
126        Requires that all of the arguments are non-negative, and at most one may
127        be zero. Otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
128      </p>
129<p>
130        The final <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
131        be used to control the behaviour of the function: how it handles errors,
132        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
133        documentation for more details</a>.
134      </p>
135<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</span><span class="special">&gt;</span>
136<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">ellint_rd</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">)</span>
137
138<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</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>
139<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">ellint_rd</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</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>
140</pre>
141<p>
142        Returns Carlson's elliptic integral R<sub>D</sub>:
143      </p>
144<div class="blockquote"><blockquote class="blockquote"><p>
145          <span class="inlinemediaobject"><img src="../../../equations/ellint10.svg"></span>
146
147        </p></blockquote></div>
148<p>
149        Requires that x and y are non-negative, with at most one of them zero, and
150        that z &gt;= 0. Otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
151      </p>
152<p>
153        The final <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
154        be used to control the behaviour of the function: how it handles errors,
155        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
156        documentation for more details</a>.
157      </p>
158<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</span><span class="special">&gt;</span>
159<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">ellint_rj</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">T4</span> <span class="identifier">p</span><span class="special">)</span>
160
161<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T4</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>
162<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">ellint_rj</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">,</span> <span class="identifier">T4</span> <span class="identifier">p</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>
163</pre>
164<p>
165        Returns Carlson's elliptic integral R<sub>J</sub>:
166      </p>
167<div class="blockquote"><blockquote class="blockquote"><p>
168          <span class="inlinemediaobject"><img src="../../../equations/ellint11.svg"></span>
169
170        </p></blockquote></div>
171<p>
172        Requires that x, y and z are non-negative, with at most one of them zero,
173        and that <span class="emphasis"><em>p != 0</em></span>. Otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
174      </p>
175<p>
176        The final <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
177        be used to control the behaviour of the function: how it handles errors,
178        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
179        documentation for more details</a>.
180      </p>
181<p>
182        When <span class="emphasis"><em>p &lt; 0</em></span> the function returns the <a href="http://en.wikipedia.org/wiki/Cauchy_principal_value" target="_top">Cauchy
183        principal value</a> using the relation:
184      </p>
185<div class="blockquote"><blockquote class="blockquote"><p>
186          <span class="inlinemediaobject"><img src="../../../equations/ellint17.svg"></span>
187
188        </p></blockquote></div>
189<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
190<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">ellint_rc</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">)</span>
191
192<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</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>
193<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">ellint_rc</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</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>
194</pre>
195<p>
196        Returns Carlson's elliptic integral R<sub>C</sub>:
197      </p>
198<div class="blockquote"><blockquote class="blockquote"><p>
199          <span class="inlinemediaobject"><img src="../../../equations/ellint12.svg"></span>
200
201        </p></blockquote></div>
202<p>
203        Requires that <span class="emphasis"><em>x &gt; 0</em></span> and that <span class="emphasis"><em>y != 0</em></span>.
204        Otherwise returns the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
205      </p>
206<p>
207        The final <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
208        be used to control the behaviour of the function: how it handles errors,
209        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
210        documentation for more details</a>.
211      </p>
212<p>
213        When <span class="emphasis"><em>y &lt; 0</em></span> the function returns the <a href="http://mathworld.wolfram.com/CauchyPrincipalValue.html" target="_top">Cauchy
214        principal value</a> using the relation:
215      </p>
216<div class="blockquote"><blockquote class="blockquote"><p>
217          <span class="inlinemediaobject"><img src="../../../equations/ellint18.svg"></span>
218
219        </p></blockquote></div>
220<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</span><span class="special">&gt;</span>
221<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">ellint_rg</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</span> <span class="identifier">z</span><span class="special">)</span>
222
223<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T3</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>
224<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">ellint_rg</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">T3</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>
225</pre>
226<p>
227        Returns Carlson's elliptic integral <span class="emphasis"><em>R<sub>G</sub>:</em></span>
228      </p>
229<div class="blockquote"><blockquote class="blockquote"><p>
230          <span class="inlinemediaobject"><img src="../../../equations/ellint27.svg"></span>
231
232        </p></blockquote></div>
233<p>
234        Requires that x and y are non-negative, otherwise returns the result of
235        <a class="link" href="../error_handling.html#math_toolkit.error_handling.domain_error">domain_error</a>.
236      </p>
237<p>
238        The final <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
239        be used to control the behaviour of the function: how it handles errors,
240        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
241        documentation for more details</a>.
242      </p>
243<h5>
244<a name="math_toolkit.ellint.ellint_carlson.h2"></a>
245        <span class="phrase"><a name="math_toolkit.ellint.ellint_carlson.testing"></a></span><a class="link" href="ellint_carlson.html#math_toolkit.ellint.ellint_carlson.testing">Testing</a>
246      </h5>
247<p>
248        There are two sets of tests.
249      </p>
250<p>
251        Spot tests compare selected values with test data given in:
252      </p>
253<div class="blockquote"><blockquote class="blockquote"><p>
254          B. C. Carlson, <span class="emphasis"><em><a href="http://arxiv.org/abs/math.CA/9409227" target="_top">Numerical
255          computation of real or complex elliptic integrals</a></em></span>. Numerical
256          Algorithms, Volume 10, Number 1 / March, 1995, pp 13-26.
257        </p></blockquote></div>
258<p>
259        Random test data generated using NTL::RR at 1000-bit precision and our implementation
260        checks for rounding-errors and/or regressions.
261      </p>
262<p>
263        There are also sanity checks that use the inter-relations between the integrals
264        to verify their correctness: see the above Carlson paper for details.
265      </p>
266<h5>
267<a name="math_toolkit.ellint.ellint_carlson.h3"></a>
268        <span class="phrase"><a name="math_toolkit.ellint.ellint_carlson.accuracy"></a></span><a class="link" href="ellint_carlson.html#math_toolkit.ellint.ellint_carlson.accuracy">Accuracy</a>
269      </h5>
270<p>
271        These functions are computed using only basic arithmetic operations, so there
272        isn't much variation in accuracy over differing platforms. Note that only
273        results for the widest floating-point type on the system are given as narrower
274        types have <a class="link" href="../relative_error.html#math_toolkit.relative_error.zero_error">effectively
275        zero error</a>. All values are relative errors in units of epsilon.
276      </p>
277<div class="table">
278<a name="math_toolkit.ellint.ellint_carlson.table_ellint_rc"></a><p class="title"><b>Table 8.58. Error rates for ellint_rc</b></p>
279<div class="table-contents"><table class="table" summary="Error rates for ellint_rc">
280<colgroup>
281<col>
282<col>
283<col>
284<col>
285</colgroup>
286<thead><tr>
287<th>
288              </th>
289<th>
290                <p>
291                  GNU C++ version 7.1.0<br> linux<br> double
292                </p>
293              </th>
294<th>
295                <p>
296                  GNU C++ version 7.1.0<br> linux<br> long double
297                </p>
298              </th>
299<th>
300                <p>
301                  Microsoft Visual C++ version 14.1<br> Win32<br> double
302                </p>
303              </th>
304</tr></thead>
305<tbody><tr>
306<td>
307                <p>
308                  RC: Random data
309                </p>
310              </td>
311<td>
312                <p>
313                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
314                  2.1:</em></span> Max = 2.4ε (Mean = 0.624ε))
315                </p>
316              </td>
317<td>
318                <p>
319                  <span class="blue">Max = 0.995ε (Mean = 0.433ε)</span>
320                </p>
321              </td>
322<td>
323                <p>
324                  <span class="blue">Max = 0.962ε (Mean = 0.407ε)</span>
325                </p>
326              </td>
327</tr></tbody>
328</table></div>
329</div>
330<br class="table-break"><div class="table">
331<a name="math_toolkit.ellint.ellint_carlson.table_ellint_rd"></a><p class="title"><b>Table 8.59. Error rates for ellint_rd</b></p>
332<div class="table-contents"><table class="table" summary="Error rates for ellint_rd">
333<colgroup>
334<col>
335<col>
336<col>
337<col>
338</colgroup>
339<thead><tr>
340<th>
341              </th>
342<th>
343                <p>
344                  GNU C++ version 7.1.0<br> linux<br> double
345                </p>
346              </th>
347<th>
348                <p>
349                  GNU C++ version 7.1.0<br> linux<br> long double
350                </p>
351              </th>
352<th>
353                <p>
354                  Microsoft Visual C++ version 14.1<br> Win32<br> double
355                </p>
356              </th>
357</tr></thead>
358<tbody>
359<tr>
360<td>
361                <p>
362                  RD: Random data
363                </p>
364              </td>
365<td>
366                <p>
367                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
368                  2.1:</em></span> Max = 2.59ε (Mean = 0.878ε))
369                </p>
370              </td>
371<td>
372                <p>
373                  <span class="blue">Max = 2.73ε (Mean = 0.831ε)</span>
374                </p>
375              </td>
376<td>
377                <p>
378                  <span class="blue">Max = 2.16ε (Mean = 0.803ε)</span>
379                </p>
380              </td>
381</tr>
382<tr>
383<td>
384                <p>
385                  RD: y = z
386                </p>
387              </td>
388<td>
389                <p>
390                  <span class="blue">Max = 0.896ε (Mean = 0.022ε)</span><br> <br>
391                  (<span class="emphasis"><em>GSL 2.1:</em></span> Max = 2.88ε (Mean = 0.839ε))
392                </p>
393              </td>
394<td>
395                <p>
396                  <span class="blue">Max = 2.65ε (Mean = 0.82ε)</span>
397                </p>
398              </td>
399<td>
400                <p>
401                  <span class="blue">Max = 16.5ε (Mean = 0.843ε)</span>
402                </p>
403              </td>
404</tr>
405<tr>
406<td>
407                <p>
408                  RD: x = y
409                </p>
410              </td>
411<td>
412                <p>
413                  <span class="blue">Max = 0.824ε (Mean = 0.0272ε)</span><br>
414                  <br> (<span class="emphasis"><em>GSL 2.1:</em></span> Max = 3.74ε (Mean = 0.84ε))
415                </p>
416              </td>
417<td>
418                <p>
419                  <span class="blue">Max = 2.85ε (Mean = 0.865ε)</span>
420                </p>
421              </td>
422<td>
423                <p>
424                  <span class="blue">Max = 3.51ε (Mean = 0.816ε)</span>
425                </p>
426              </td>
427</tr>
428<tr>
429<td>
430                <p>
431                  RD: x = 0, y = z
432                </p>
433              </td>
434<td>
435                <p>
436                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
437                  2.1:</em></span> Max = 2ε (Mean = 0.656ε))
438                </p>
439              </td>
440<td>
441                <p>
442                  <span class="blue">Max = 1.19ε (Mean = 0.522ε)</span>
443                </p>
444              </td>
445<td>
446                <p>
447                  <span class="blue">Max = 1.16ε (Mean = 0.497ε)</span>
448                </p>
449              </td>
450</tr>
451<tr>
452<td>
453                <p>
454                  RD: x = y = z
455                </p>
456              </td>
457<td>
458                <p>
459                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
460                  2.1:</em></span> Max = 1.03ε (Mean = 0.418ε))
461                </p>
462              </td>
463<td>
464                <p>
465                  <span class="blue">Max = 0.998ε (Mean = 0.387ε)</span>
466                </p>
467              </td>
468<td>
469                <p>
470                  <span class="blue">Max = 1.03ε (Mean = 0.418ε)</span>
471                </p>
472              </td>
473</tr>
474<tr>
475<td>
476                <p>
477                  RD: x = 0
478                </p>
479              </td>
480<td>
481                <p>
482                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
483                  2.1:</em></span> Max = 2.85ε (Mean = 0.781ε))
484                </p>
485              </td>
486<td>
487                <p>
488                  <span class="blue">Max = 2.79ε (Mean = 0.883ε)</span>
489                </p>
490              </td>
491<td>
492                <p>
493                  <span class="blue">Max = 2.64ε (Mean = 0.894ε)</span>
494                </p>
495              </td>
496</tr>
497</tbody>
498</table></div>
499</div>
500<br class="table-break"><div class="table">
501<a name="math_toolkit.ellint.ellint_carlson.table_ellint_rg"></a><p class="title"><b>Table 8.60. Error rates for ellint_rg</b></p>
502<div class="table-contents"><table class="table" summary="Error rates for ellint_rg">
503<colgroup>
504<col>
505<col>
506<col>
507<col>
508</colgroup>
509<thead><tr>
510<th>
511              </th>
512<th>
513                <p>
514                  GNU C++ version 7.1.0<br> linux<br> double
515                </p>
516              </th>
517<th>
518                <p>
519                  GNU C++ version 7.1.0<br> linux<br> long double
520                </p>
521              </th>
522<th>
523                <p>
524                  Microsoft Visual C++ version 14.1<br> Win32<br> double
525                </p>
526              </th>
527</tr></thead>
528<tbody>
529<tr>
530<td>
531                <p>
532                  RG: Random Data
533                </p>
534              </td>
535<td>
536                <p>
537                  <span class="blue">Max = 0.983ε (Mean = 0.0172ε)</span><br>
538                  <br> (<span class="emphasis"><em>GSL 2.1:</em></span> Max = 0.983ε (Mean = 0.0172ε))
539                </p>
540              </td>
541<td>
542                <p>
543                  <span class="blue">Max = 3.95ε (Mean = 0.951ε)</span>
544                </p>
545              </td>
546<td>
547                <p>
548                  <span class="blue">Max = 3.65ε (Mean = 0.929ε)</span>
549                </p>
550              </td>
551</tr>
552<tr>
553<td>
554                <p>
555                  RG: two values 0
556                </p>
557              </td>
558<td>
559                <p>
560                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
561                  2.1:</em></span> Max = 0ε (Mean = 0ε))
562                </p>
563              </td>
564<td>
565                <p>
566                  <span class="blue">Max = 0ε (Mean = 0ε)</span>
567                </p>
568              </td>
569<td>
570                <p>
571                  <span class="blue">Max = 0ε (Mean = 0ε)</span>
572                </p>
573              </td>
574</tr>
575<tr>
576<td>
577                <p>
578                  RG: All values the same or zero
579                </p>
580              </td>
581<td>
582                <p>
583                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
584                  2.1:</em></span> Max = 0ε (Mean = 0ε))
585                </p>
586              </td>
587<td>
588                <p>
589                  <span class="blue">Max = 0.992ε (Mean = 0.288ε)</span>
590                </p>
591              </td>
592<td>
593                <p>
594                  <span class="blue">Max = 1.06ε (Mean = 0.348ε)</span>
595                </p>
596              </td>
597</tr>
598<tr>
599<td>
600                <p>
601                  RG: two values the same
602                </p>
603              </td>
604<td>
605                <p>
606                  <span class="blue">Max = 0.594ε (Mean = 0.0103ε)</span><br>
607                  <br> (<span class="emphasis"><em>GSL 2.1:</em></span> Max = 0.594ε (Mean = 0.0103ε))
608                </p>
609              </td>
610<td>
611                <p>
612                  <span class="blue">Max = 1.51ε (Mean = 0.404ε)</span>
613                </p>
614              </td>
615<td>
616                <p>
617                  <span class="blue">Max = 1.96ε (Mean = 0.374ε)</span>
618                </p>
619              </td>
620</tr>
621<tr>
622<td>
623                <p>
624                  RG: one value zero
625                </p>
626              </td>
627<td>
628                <p>
629                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
630                  2.1:</em></span> Max = 0ε (Mean = 0ε))
631                </p>
632              </td>
633<td>
634                <p>
635                  <span class="blue">Max = 2.14ε (Mean = 0.722ε)</span>
636                </p>
637              </td>
638<td>
639                <p>
640                  <span class="blue">Max = 1.96ε (Mean = 0.674ε)</span>
641                </p>
642              </td>
643</tr>
644</tbody>
645</table></div>
646</div>
647<br class="table-break"><div class="table">
648<a name="math_toolkit.ellint.ellint_carlson.table_ellint_rf"></a><p class="title"><b>Table 8.61. Error rates for ellint_rf</b></p>
649<div class="table-contents"><table class="table" summary="Error rates for ellint_rf">
650<colgroup>
651<col>
652<col>
653<col>
654<col>
655</colgroup>
656<thead><tr>
657<th>
658              </th>
659<th>
660                <p>
661                  GNU C++ version 7.1.0<br> linux<br> double
662                </p>
663              </th>
664<th>
665                <p>
666                  GNU C++ version 7.1.0<br> linux<br> long double
667                </p>
668              </th>
669<th>
670                <p>
671                  Microsoft Visual C++ version 14.1<br> Win32<br> double
672                </p>
673              </th>
674</tr></thead>
675<tbody>
676<tr>
677<td>
678                <p>
679                  RF: Random data
680                </p>
681              </td>
682<td>
683                <p>
684                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
685                  2.1:</em></span> Max = 2.73ε (Mean = 0.804ε))
686                </p>
687              </td>
688<td>
689                <p>
690                  <span class="blue">Max = 2.54ε (Mean = 0.674ε)</span>
691                </p>
692              </td>
693<td>
694                <p>
695                  <span class="blue">Max = 2.02ε (Mean = 0.677ε)</span>
696                </p>
697              </td>
698</tr>
699<tr>
700<td>
701                <p>
702                  RF: x = y = z
703                </p>
704              </td>
705<td>
706                <p>
707                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
708                  2.1:</em></span> Max = 0.999ε (Mean = 0.34ε))
709                </p>
710              </td>
711<td>
712                <p>
713                  <span class="blue">Max = 0.991ε (Mean = 0.345ε)</span>
714                </p>
715              </td>
716<td>
717                <p>
718                  <span class="blue">Max = 0.999ε (Mean = 0.34ε)</span>
719                </p>
720              </td>
721</tr>
722<tr>
723<td>
724                <p>
725                  RF: x = y or y = z or x = z
726                </p>
727              </td>
728<td>
729                <p>
730                  <span class="blue">Max = 0.536ε (Mean = 0.00658ε)</span><br>
731                  <br> (<span class="emphasis"><em>GSL 2.1:</em></span> Max = 2.89ε (Mean = 0.749ε))
732                </p>
733              </td>
734<td>
735                <p>
736                  <span class="blue">Max = 1.95ε (Mean = 0.418ε)</span>
737                </p>
738              </td>
739<td>
740                <p>
741                  <span class="blue">Max = 1.21ε (Mean = 0.394ε)</span>
742                </p>
743              </td>
744</tr>
745<tr>
746<td>
747                <p>
748                  RF: x = 0, y = z
749                </p>
750              </td>
751<td>
752                <p>
753                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
754                  2.1:</em></span> Max = 1.29ε (Mean = 0.527ε))
755                </p>
756              </td>
757<td>
758                <p>
759                  <span class="blue">Max = 0.894ε (Mean = 0.338ε)</span>
760                </p>
761              </td>
762<td>
763                <p>
764                  <span class="blue">Max = 0.999ε (Mean = 0.407ε)</span>
765                </p>
766              </td>
767</tr>
768<tr>
769<td>
770                <p>
771                  RF: z = 0
772                </p>
773              </td>
774<td>
775                <p>
776                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
777                  2.1:</em></span> Max = 2.54ε (Mean = 0.781ε))
778                </p>
779              </td>
780<td>
781                <p>
782                  <span class="blue">Max = 1.7ε (Mean = 0.539ε)</span>
783                </p>
784              </td>
785<td>
786                <p>
787                  <span class="blue">Max = 1.89ε (Mean = 0.587ε)</span>
788                </p>
789              </td>
790</tr>
791</tbody>
792</table></div>
793</div>
794<br class="table-break"><div class="table">
795<a name="math_toolkit.ellint.ellint_carlson.table_ellint_rj"></a><p class="title"><b>Table 8.62. Error rates for ellint_rj</b></p>
796<div class="table-contents"><table class="table" summary="Error rates for ellint_rj">
797<colgroup>
798<col>
799<col>
800<col>
801<col>
802</colgroup>
803<thead><tr>
804<th>
805              </th>
806<th>
807                <p>
808                  GNU C++ version 7.1.0<br> linux<br> double
809                </p>
810              </th>
811<th>
812                <p>
813                  GNU C++ version 7.1.0<br> linux<br> long double
814                </p>
815              </th>
816<th>
817                <p>
818                  Microsoft Visual C++ version 14.1<br> Win32<br> double
819                </p>
820              </th>
821</tr></thead>
822<tbody>
823<tr>
824<td>
825                <p>
826                  RJ: Random data
827                </p>
828              </td>
829<td>
830                <p>
831                  <span class="blue">Max = 0.52ε (Mean = 0.0184ε)</span><br> <br>
832                  (<span class="emphasis"><em>GSL 2.1:</em></span> Max = 3.57ε (Mean = 0.704ε) <a class="link" href="../logs_and_tables/logs.html#errors_GNU_C_version_7_1_0_linux_double_ellint_rj_GSL_2_1_RJ_Random_data">And
833                  other failures.</a>)
834                </p>
835              </td>
836<td>
837                <p>
838                  <span class="blue">Max = 186ε (Mean = 6.67ε)</span>
839                </p>
840              </td>
841<td>
842                <p>
843                  <span class="blue">Max = 215ε (Mean = 7.66ε)</span>
844                </p>
845              </td>
846</tr>
847<tr>
848<td>
849                <p>
850                  RJ: 4 Equal Values
851                </p>
852              </td>
853<td>
854                <p>
855                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
856                  2.1:</em></span> Max = 1.03ε (Mean = 0.418ε))
857                </p>
858              </td>
859<td>
860                <p>
861                  <span class="blue">Max = 0.998ε (Mean = 0.387ε)</span>
862                </p>
863              </td>
864<td>
865                <p>
866                  <span class="blue">Max = 1.03ε (Mean = 0.418ε)</span>
867                </p>
868              </td>
869</tr>
870<tr>
871<td>
872                <p>
873                  RJ: 3 Equal Values
874                </p>
875              </td>
876<td>
877                <p>
878                  <span class="blue">Max = 0ε (Mean = 0ε)</span><br> <br> (<span class="emphasis"><em>GSL
879                  2.1:</em></span> Max = 3.96ε (Mean = 1.06ε))
880                </p>
881              </td>
882<td>
883                <p>
884                  <span class="blue">Max = 20.8ε (Mean = 0.986ε)</span>
885                </p>
886              </td>
887<td>
888                <p>
889                  <span class="blue">Max = 39.9ε (Mean = 1.17ε)</span>
890                </p>
891              </td>
892</tr>
893<tr>
894<td>
895                <p>
896                  RJ: 2 Equal Values
897                </p>
898              </td>
899<td>
900                <p>
901                  <span class="blue">Max = 0.6ε (Mean = 0.0228ε)</span><br> <br>
902                  (<span class="emphasis"><em>GSL 2.1:</em></span> Max = 2.57ε (Mean = 0.754ε))
903                </p>
904              </td>
905<td>
906                <p>
907                  <span class="blue">Max = 220ε (Mean = 6.64ε)</span>
908                </p>
909              </td>
910<td>
911                <p>
912                  <span class="blue">Max = 214ε (Mean = 5.28ε)</span>
913                </p>
914              </td>
915</tr>
916<tr>
917<td>
918                <p>
919                  RJ: Equal z and p
920                </p>
921              </td>
922<td>
923                <p>
924                  <span class="blue">Max = 0.742ε (Mean = 0.0166ε)</span><br>
925                  <br> (<span class="emphasis"><em>GSL 2.1:</em></span> Max = 2.62ε (Mean = 0.699ε))
926                </p>
927              </td>
928<td>
929                <p>
930                  <span class="blue">Max = 17.2ε (Mean = 1.16ε)</span>
931                </p>
932              </td>
933<td>
934                <p>
935                  <span class="blue">Max = 16.1ε (Mean = 1.14ε)</span>
936                </p>
937              </td>
938</tr>
939</tbody>
940</table></div>
941</div>
942<br class="table-break"><h5>
943<a name="math_toolkit.ellint.ellint_carlson.h4"></a>
944        <span class="phrase"><a name="math_toolkit.ellint.ellint_carlson.implementation"></a></span><a class="link" href="ellint_carlson.html#math_toolkit.ellint.ellint_carlson.implementation">Implementation</a>
945      </h5>
946<p>
947        The key of Carlson's algorithm [<a class="link" href="ellint_intro.html#ellint_ref_carlson79">Carlson79</a>]
948        is the duplication theorem:
949      </p>
950<div class="blockquote"><blockquote class="blockquote"><p>
951          <span class="inlinemediaobject"><img src="../../../equations/ellint13.svg"></span>
952
953        </p></blockquote></div>
954<p>
955        By applying it repeatedly, <span class="emphasis"><em>x</em></span>, <span class="emphasis"><em>y</em></span>,
956        <span class="emphasis"><em>z</em></span> get closer and closer. When they are nearly equal,
957        the special case equation
958      </p>
959<div class="blockquote"><blockquote class="blockquote"><p>
960          <span class="inlinemediaobject"><img src="../../../equations/ellint16.svg"></span>
961
962        </p></blockquote></div>
963<p>
964        is used. More specifically, <span class="emphasis"><em>[R F]</em></span> is evaluated from
965        a Taylor series expansion to the fifth order. The calculations of the other
966        three integrals are analogous, except for R<sub>C</sub> which can be computed from elementary
967        functions.
968      </p>
969<p>
970        For <span class="emphasis"><em>p &lt; 0</em></span> in <span class="emphasis"><em>R<sub>J</sub>(x, y, z, p)</em></span>
971        and <span class="emphasis"><em>y &lt; 0</em></span> in <span class="emphasis"><em>R<sub>C</sub>(x, y)</em></span>, the integrals
972        are singular and their <a href="http://mathworld.wolfram.com/CauchyPrincipalValue.html" target="_top">Cauchy
973        principal values</a> are returned via the relations:
974      </p>
975<div class="blockquote"><blockquote class="blockquote"><p>
976          <span class="inlinemediaobject"><img src="../../../equations/ellint17.svg"></span>
977
978        </p></blockquote></div>
979<div class="blockquote"><blockquote class="blockquote"><p>
980          <span class="inlinemediaobject"><img src="../../../equations/ellint18.svg"></span>
981
982        </p></blockquote></div>
983</div>
984<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
985<td align="left"></td>
986<td align="right"><div class="copyright-footer">Copyright © 2006-2019 Nikhar
987      Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
988      Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan
989      Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg,
990      Daryle Walker and Xiaogang Zhang<p>
991        Distributed under the Boost Software License, Version 1.0. (See accompanying
992        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>)
993      </p>
994</div></td>
995</tr></table>
996<hr>
997<div class="spirit-nav">
998<a accesskey="p" href="ellint_intro.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ellint.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ellint_1.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
999</div>
1000</body>
1001</html>
1002