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"><</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">></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"><</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> 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"><</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">></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">&)</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"><</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">></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"><</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> 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"><</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">></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">&)</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"><</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">></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"><</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> 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"><</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">></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">&)</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"><</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">></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"><</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> 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"><</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">></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">&)</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"><</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">></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"><</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> 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"><</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">></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">&)</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"><</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> 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"><</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">></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">&)</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"><</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> 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"><</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">></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">&)</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 >= 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"><</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> 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"><</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">></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">&)</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 < 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"><</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> 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"><</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">></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">&)</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 > 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 < 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"><</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> 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"><</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">></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">&)</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 < 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 < 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