This file is indexed.

/usr/share/doc/geographiclib/html/EllipticFunction_8hpp_source.html is in geographiclib-tools 1.8-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: EllipticFunction.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath">
    <ul>
      <li><a class="el" href="dir_f624aa4962e92581e36e10adf24cfc84.html">include</a>      </li>
      <li><a class="el" href="dir_0f324d7550514966066ff24c6d4b8a42.html">GeographicLib</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="headertitle">
<h1>EllipticFunction.hpp</h1>  </div>
</div>
<div class="contents">
<a href="EllipticFunction_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/**</span>
<a name="l00002"></a>00002 <span class="comment"> * \file EllipticFunction.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::EllipticFunction class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009) &lt;charles@karney.com&gt;</span>
<a name="l00006"></a>00006 <span class="comment"> * and licensed under the LGPL.  For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009 
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP)</span>
<a name="l00011"></a><a class="code" href="EllipticFunction_8hpp.html#a94cb49e5d48fa1a0399e4303f1ad162a">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP &quot;$Id: EllipticFunction.hpp 6866 2010-09-11 02:15:29Z karney $&quot;</span>
<a name="l00012"></a>00012 <span class="preprocessor"></span>
<a name="l00013"></a>00013 <span class="preprocessor">#include &quot;<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>&quot;</span>
<a name="l00014"></a>00014 
<a name="l00015"></a>00015 <span class="keyword">namespace </span>GeographicLib {
<a name="l00016"></a>00016 <span class="comment"></span>
<a name="l00017"></a>00017 <span class="comment">  /**</span>
<a name="l00018"></a>00018 <span class="comment">   * \brief Elliptic functions needed for TransverseMercatorExact</span>
<a name="l00019"></a>00019 <span class="comment">   *</span>
<a name="l00020"></a>00020 <span class="comment">   * This provides the subset of elliptic functions needed for</span>
<a name="l00021"></a>00021 <span class="comment">   * TransverseMercatorExact.  For a given ellipsoid, only parameters \e</span>
<a name="l00022"></a>00022 <span class="comment">   * e&lt;sup&gt;2&lt;/sup&gt; and 1 - \e e&lt;sup&gt;2&lt;/sup&gt; are needed.  This class taken the</span>
<a name="l00023"></a>00023 <span class="comment">   * parameter as a constructor parameters and caches the values of the</span>
<a name="l00024"></a>00024 <span class="comment">   * required complete integrals.  A method is provided for Jacobi elliptic</span>
<a name="l00025"></a>00025 <span class="comment">   * functions and for the incomplete elliptic integral of the second kind in</span>
<a name="l00026"></a>00026 <span class="comment">   * terms of the amplitude.</span>
<a name="l00027"></a>00027 <span class="comment">   *</span>
<a name="l00028"></a>00028 <span class="comment">   * The computation of the elliptic integrals uses the algorithms given in</span>
<a name="l00029"></a>00029 <span class="comment">   * - B. C. Carlson,</span>
<a name="l00030"></a>00030 <span class="comment">   *   &lt;a href=&quot;http://dx.doi.org/10.1007/BF02198293&quot;&gt; Computation of elliptic</span>
<a name="l00031"></a>00031 <span class="comment">   *   integrals&lt;/a&gt;, Numerical Algorithms 10, 13&amp;ndash;26 (1995).</span>
<a name="l00032"></a>00032 <span class="comment">   * .</span>
<a name="l00033"></a>00033 <span class="comment">   * The computation of the Jacobi elliptic functions uses the algorithm given</span>
<a name="l00034"></a>00034 <span class="comment">   * in</span>
<a name="l00035"></a>00035 <span class="comment">   * - R. Bulirsch,</span>
<a name="l00036"></a>00036 <span class="comment">   *   &lt;a href=&quot;http://dx.doi.org/10.1007/BF01397975&quot;&gt; Numerical Calculation of</span>
<a name="l00037"></a>00037 <span class="comment">   *   Elliptic Integrals and Elliptic Functions&lt;/a&gt;, Numericshe Mathematik 7,</span>
<a name="l00038"></a>00038 <span class="comment">   *   78&amp;ndash;90 (1965).</span>
<a name="l00039"></a>00039 <span class="comment">   * .</span>
<a name="l00040"></a>00040 <span class="comment">   * The notation follows Abramowitz and Stegun, Chapters 16 and 17.</span>
<a name="l00041"></a>00041 <span class="comment">   **********************************************************************/</span>
<a name="l00042"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html">00042</a>   <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">EllipticFunction</a> {
<a name="l00043"></a>00043   <span class="keyword">private</span>:
<a name="l00044"></a>00044     <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> real;
<a name="l00045"></a>00045     <span class="keyword">static</span> <span class="keyword">const</span> real tol, tolRF, tolRD, tolRG0, tolJAC, tolJAC1;
<a name="l00046"></a>00046     <span class="keyword">enum</span> { num = 10 }; <span class="comment">// Max depth required for sncndn.  Probably 5 is enough.</span>
<a name="l00047"></a>00047     <span class="keyword">static</span> real RF(real x, real y, real z) <span class="keywordflow">throw</span>();
<a name="l00048"></a>00048     <span class="keyword">static</span> real RD(real x, real y, real z) <span class="keywordflow">throw</span>();
<a name="l00049"></a>00049     <span class="keyword">static</span> real RG0(real x, real y) <span class="keywordflow">throw</span>();
<a name="l00050"></a>00050     <span class="keyword">const</span> real _m, _m1;
<a name="l00051"></a>00051     <span class="keyword">mutable</span> <span class="keywordtype">bool</span> _init;
<a name="l00052"></a>00052     <span class="keyword">mutable</span> real _kc, _ec, _kec;
<a name="l00053"></a>00053     <span class="keywordtype">bool</span> Init() <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00054"></a>00054   <span class="keyword">public</span>:
<a name="l00055"></a>00055 <span class="comment"></span>
<a name="l00056"></a>00056 <span class="comment">    /**</span>
<a name="l00057"></a>00057 <span class="comment">     * Constructor.</span>
<a name="l00058"></a>00058 <span class="comment">     *</span>
<a name="l00059"></a>00059 <span class="comment">     * @param[in] m the parameter which must lie in [0, 1].  (No checking</span>
<a name="l00060"></a>00060 <span class="comment">     *   is done.)</span>
<a name="l00061"></a>00061 <span class="comment">     **********************************************************************/</span>
<a name="l00062"></a>00062     <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#ada122111b55eb0ab9c7b9fafb0a4b1e6">EllipticFunction</a>(real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">m</a>) <span class="keywordflow">throw</span>();
<a name="l00063"></a>00063 <span class="comment"></span>
<a name="l00064"></a>00064 <span class="comment">    /**</span>
<a name="l00065"></a>00065 <span class="comment">     * @return the parameter \e m.</span>
<a name="l00066"></a>00066 <span class="comment">     **********************************************************************/</span>
<a name="l00067"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">00067</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">m</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _m; }
<a name="l00068"></a>00068 <span class="comment"></span>
<a name="l00069"></a>00069 <span class="comment">    /**</span>
<a name="l00070"></a>00070 <span class="comment">     * @return the complementary parameter \e m&#39; = (1 - \e m).</span>
<a name="l00071"></a>00071 <span class="comment">     **********************************************************************/</span>
<a name="l00072"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">00072</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">m1</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _m1; }
<a name="l00073"></a>00073 <span class="comment"></span>
<a name="l00074"></a>00074 <span class="comment">    /**</span>
<a name="l00075"></a>00075 <span class="comment">     * @return the complete integral of first kind, \e K(\e m).</span>
<a name="l00076"></a>00076 <span class="comment">     **********************************************************************/</span>
<a name="l00077"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a6c6c8029d93946b32184ee964525938c">00077</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a6c6c8029d93946b32184ee964525938c">K</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _kc; }
<a name="l00078"></a>00078 <span class="comment"></span>
<a name="l00079"></a>00079 <span class="comment">    /**</span>
<a name="l00080"></a>00080 <span class="comment">     * @return the complete integral of second kind, \e E(\e m).</span>
<a name="l00081"></a>00081 <span class="comment">     **********************************************************************/</span>
<a name="l00082"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">00082</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">E</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _ec; }
<a name="l00083"></a>00083 <span class="comment"></span>
<a name="l00084"></a>00084 <span class="comment">    /**</span>
<a name="l00085"></a>00085 <span class="comment">     * @return the difference \e K(\e m) - \e E(\e m) (which can be computed</span>
<a name="l00086"></a>00086 <span class="comment">     *   directly).</span>
<a name="l00087"></a>00087 <span class="comment">     **********************************************************************/</span>
<a name="l00088"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a12bcdf2c3fc7bcb165318822171328f7">00088</a>     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a12bcdf2c3fc7bcb165318822171328f7">KE</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _kec; }
<a name="l00089"></a>00089 <span class="comment"></span>
<a name="l00090"></a>00090 <span class="comment">    /**</span>
<a name="l00091"></a>00091 <span class="comment">     * The Jacobi elliptic functions.</span>
<a name="l00092"></a>00092 <span class="comment">     *</span>
<a name="l00093"></a>00093 <span class="comment">     * @param[in] x the argument.</span>
<a name="l00094"></a>00094 <span class="comment">     * @param[out] sn sn(&lt;i&gt;x&lt;/i&gt;|&lt;i&gt;m&lt;/i&gt;).</span>
<a name="l00095"></a>00095 <span class="comment">     * @param[out] cn cn(&lt;i&gt;x&lt;/i&gt;|&lt;i&gt;m&lt;/i&gt;).</span>
<a name="l00096"></a>00096 <span class="comment">     * @param[out] dn dn(&lt;i&gt;x&lt;/i&gt;|&lt;i&gt;m&lt;/i&gt;).</span>
<a name="l00097"></a>00097 <span class="comment">     **********************************************************************/</span>
<a name="l00098"></a>00098     <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a0b8d63970c4276503d03d4133ee6c321">sncndn</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>&amp; sn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>&amp; cn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>&amp; dn) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00099"></a>00099 <span class="comment"></span>
<a name="l00100"></a>00100 <span class="comment">    /**</span>
<a name="l00101"></a>00101 <span class="comment">     * The incomplete integral of the second kind.</span>
<a name="l00102"></a>00102 <span class="comment">     *</span>
<a name="l00103"></a>00103 <span class="comment">     * @param[in] phi</span>
<a name="l00104"></a>00104 <span class="comment">     * @return int sqrt(1 -  \e m sin&lt;sup&gt;2&lt;/sup&gt;(\e phi)) \e dphi.</span>
<a name="l00105"></a>00105 <span class="comment">     **********************************************************************/</span>
<a name="l00106"></a>00106     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">E</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> phi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00107"></a>00107 <span class="comment"></span>
<a name="l00108"></a>00108 <span class="comment">    /**</span>
<a name="l00109"></a>00109 <span class="comment">     * The incomplete integral of the second kind in terms of Jacobi elliptic</span>
<a name="l00110"></a>00110 <span class="comment">     * functions</span>
<a name="l00111"></a>00111 <span class="comment">     *</span>
<a name="l00112"></a>00112 <span class="comment">     * @param[in] sn</span>
<a name="l00113"></a>00113 <span class="comment">     * @param[in] cn</span>
<a name="l00114"></a>00114 <span class="comment">     * @param[in] dn</span>
<a name="l00115"></a>00115 <span class="comment">     * @return int dn(\e w)&lt;sup&gt;2&lt;/sup&gt; \e dw (A+S 17.2.10).</span>
<a name="l00116"></a>00116 <span class="comment">     *</span>
<a name="l00117"></a>00117 <span class="comment">     * Instead of specifying the ampltiude \e phi, we provide \e sn = sin(\e</span>
<a name="l00118"></a>00118 <span class="comment">     * phi), \e cn = cos(\e phi), \e dn = sqrt(1 - \e m sin&lt;sup&gt;2&lt;/sup&gt;(\e</span>
<a name="l00119"></a>00119 <span class="comment">     * phi)).</span>
<a name="l00120"></a>00120 <span class="comment">     **********************************************************************/</span>
<a name="l00121"></a>00121     <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">E</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dn) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00122"></a>00122   };
<a name="l00123"></a>00123 
<a name="l00124"></a>00124 
<a name="l00125"></a>00125 } <span class="comment">// namespace GeographicLib</span>
<a name="l00126"></a>00126 
<a name="l00127"></a>00127 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Tue Feb 22 2011 for GeographicLib by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
</body>
</html>