amath/doc/html/acos_8c.html

602 lines
41 KiB
HTML

<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>amath: lib/real/acos.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">amath
&#160;<span id="projectnumber">1.6.2</span>
</div>
<div id="projectbrief">Simple command line calculator</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</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>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('acos_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">acos.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="real_2prim_8h_source.html">prim.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="math_8h_source.html">math.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for acos.c:</div>
<div class="dyncontent">
<div class="center"><img src="acos_8c__incl.png" border="0" usemap="#lib_2real_2acos_8c" alt=""/></div>
<map name="lib_2real_2acos_8c" id="lib_2real_2acos_8c">
<area shape="rect" id="node2" href="real_2prim_8h.html" title="prim.h" alt="" coords="5,80,64,107"/>
<area shape="rect" id="node3" href="math_8h.html" title="Functions in math library for handling real numbers. " alt="" coords="89,80,151,107"/>
</map>
</div>
</div>
<p><a href="acos_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ae93afe22ff34c79ee97ea3eaf77557db"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#ae93afe22ff34c79ee97ea3eaf77557db">acos</a> (double x)</td></tr>
<tr class="memdesc:ae93afe22ff34c79ee97ea3eaf77557db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inverse trigonometric cosine function. <a href="#ae93afe22ff34c79ee97ea3eaf77557db">More...</a><br /></td></tr>
<tr class="separator:ae93afe22ff34c79ee97ea3eaf77557db"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ada85e349d35971b32c8ea4238881ff8b"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a> = 1.00000000000000000000e+00</td></tr>
<tr class="separator:ada85e349d35971b32c8ea4238881ff8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43016d873124d39034edb8cd164794db"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#a43016d873124d39034edb8cd164794db">pi</a> = 3.14159265358979311600e+00</td></tr>
<tr class="separator:a43016d873124d39034edb8cd164794db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb7fbaa5c31ee6a1e6a06cfafc7b4722"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#afb7fbaa5c31ee6a1e6a06cfafc7b4722">pio2_hi</a> = 1.57079632679489655800e+00</td></tr>
<tr class="separator:afb7fbaa5c31ee6a1e6a06cfafc7b4722"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c04e4a8938bd8c06dbcc267cf2d1653"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#a4c04e4a8938bd8c06dbcc267cf2d1653">pio2_lo</a> = 6.12323399573676603587e-17</td></tr>
<tr class="separator:a4c04e4a8938bd8c06dbcc267cf2d1653"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a598e19e166b484e6636a5d2af921178e"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#a598e19e166b484e6636a5d2af921178e">pS0</a> = 1.66666666666666657415e-01</td></tr>
<tr class="separator:a598e19e166b484e6636a5d2af921178e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acabe4dc2fe4ed1ed9dd22dbfcc2a4a55"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#acabe4dc2fe4ed1ed9dd22dbfcc2a4a55">pS1</a> = -3.25565818622400915405e-01</td></tr>
<tr class="separator:acabe4dc2fe4ed1ed9dd22dbfcc2a4a55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06b3d163437b4041ac67f2cda1cc445d"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#a06b3d163437b4041ac67f2cda1cc445d">pS2</a> = 2.01212532134862925881e-01</td></tr>
<tr class="separator:a06b3d163437b4041ac67f2cda1cc445d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa40612ec8cdb54cc05424e143875d6c"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#aaa40612ec8cdb54cc05424e143875d6c">pS3</a> = -4.00555345006794114027e-02</td></tr>
<tr class="separator:aaa40612ec8cdb54cc05424e143875d6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4579924a5221b8718a2d834daea875c1"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#a4579924a5221b8718a2d834daea875c1">pS4</a> = 7.91534994289814532176e-04</td></tr>
<tr class="separator:a4579924a5221b8718a2d834daea875c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fe8ee6da9411328a5a01cc83cb5cafe"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#a6fe8ee6da9411328a5a01cc83cb5cafe">pS5</a> = 3.47933107596021167570e-05</td></tr>
<tr class="separator:a6fe8ee6da9411328a5a01cc83cb5cafe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb566f87cc1d33877c7a4a30d0abc813"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#afb566f87cc1d33877c7a4a30d0abc813">qS1</a> = -2.40339491173441421878e+00</td></tr>
<tr class="separator:afb566f87cc1d33877c7a4a30d0abc813"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed4dd3ffd10de8fb416b8066211fc27d"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#aed4dd3ffd10de8fb416b8066211fc27d">qS2</a> = 2.02094576023350569471e+00</td></tr>
<tr class="separator:aed4dd3ffd10de8fb416b8066211fc27d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb1b119c3d6cf33d182bd48155186510"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#abb1b119c3d6cf33d182bd48155186510">qS3</a> = -6.88283971605453293030e-01</td></tr>
<tr class="separator:abb1b119c3d6cf33d182bd48155186510"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6b27b738027128ae51618db2d6e4c81"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="acos_8c.html#ae6b27b738027128ae51618db2d6e4c81">qS4</a> = 7.70381505559019352791e-02</td></tr>
<tr class="separator:ae6b27b738027128ae51618db2d6e4c81"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ae93afe22ff34c79ee97ea3eaf77557db"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double acos </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>x</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Inverse trigonometric cosine function. </p>
<dl class="section version"><dt>Version</dt><dd>1.3 </dd></dl>
<dl class="section date"><dt>Date</dt><dd>95/01/18</dd></dl>
<pre>
Method :
acos(x) = pi/2 - asin(x)
acos(-x) = pi/2 + asin(x)
For |x|&lt;=0.5
acos(x) = pi/2 - (x + x*x^2*R(x^2)) (see <a class="el" href="asin_8c.html">asin.c</a>)
For x&gt;0.5
acos(x) = pi/2 - (pi/2 - 2asin(sqrt((1-x)/2)))
= 2asin(sqrt((1-x)/2))
= 2s + 2s*z*R(z) ...z=(1-x)/2, s=sqrt(z)
= 2f + (2c + 2s*z*R(z))
where f=hi part of s, and c = (z-f*f)/(s+f) is the correction term
for f so that f+c ~ sqrt(z).
For x&lt;-0.5
acos(x) = pi - 2asin(sqrt((1-|x|)/2))
= pi - 0.5*(s+s*z*R(z)), where z=(1-|x|)/2,s=sqrt(z)</pre><pre>Special cases:
if x is NaN, return x itself;
if |x|&gt;1, return NaN with invalid signal.</pre><pre>Function needed: sqrt
</pre> <dl class="section copyright"><dt>Copyright</dt><dd>Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. Developed at SunSoft, a Sun Microsystems, Inc. business. Permission to use, copy, modify, and distribute this software is freely granted, provided that this notice is preserved. </dd></dl>
<p>Definition at line <a class="el" href="acos_8c_source.html#l00096">96</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>References <a class="el" href="acos_8c_source.html#l00048">one</a>, <a class="el" href="acos_8c_source.html#l00049">pi</a>, <a class="el" href="acos_8c_source.html#l00050">pio2_hi</a>, <a class="el" href="acos_8c_source.html#l00051">pio2_lo</a>, <a class="el" href="acos_8c_source.html#l00052">pS0</a>, <a class="el" href="acos_8c_source.html#l00053">pS1</a>, <a class="el" href="acos_8c_source.html#l00054">pS2</a>, <a class="el" href="acos_8c_source.html#l00055">pS3</a>, <a class="el" href="acos_8c_source.html#l00056">pS4</a>, <a class="el" href="acos_8c_source.html#l00057">pS5</a>, <a class="el" href="acos_8c_source.html#l00058">qS1</a>, <a class="el" href="acos_8c_source.html#l00059">qS2</a>, <a class="el" href="acos_8c_source.html#l00060">qS3</a>, <a class="el" href="acos_8c_source.html#l00061">qS4</a>, and <a class="el" href="sqrt_8c_source.html#l00127">sqrt()</a>.</p>
<p>Referenced by <a class="el" href="real_8cpp_source.html#l00417">RealNumber::ArcCosine()</a>, and <a class="el" href="real_8cpp_source.html#l00427">RealNumber::ArcSecant()</a>.</p>
<div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">double</span> z,p,q,r,w,s,c,df;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="real_2prim_8h.html#ae91287c8a5f73a8a22a100f50dc4de77">sword</a> hx,ix;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="real_2prim_8h.html#ae62ee08d06ab4cc06d61dc1246b73195">GET_HIGH_WORD</a>(hx,x);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; ix = hx&amp;0x7fffffff;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span>(ix&gt;=0x3ff00000) { <span class="comment">/* |x| &gt;= 1 */</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="real_2prim_8h.html#ae91287c8a5f73a8a22a100f50dc4de77">sword</a> lx;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="real_2prim_8h.html#adee023704c856ea8f310e8e3fd765a22">GET_LOW_WORD</a>(lx,x);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span>(((ix-0x3ff00000)|lx)==0) { <span class="comment">/* |x|==1 */</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(hx&gt;0) <span class="keywordflow">return</span> 0.0; <span class="comment">/* acos(1) = 0 */</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="acos_8c.html#a43016d873124d39034edb8cd164794db">pi</a>+2.0*<a class="code" href="acos_8c.html#a4c04e4a8938bd8c06dbcc267cf2d1653">pio2_lo</a>; <span class="comment">/* acos(-1)= pi */</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> (x-x)/(x-x); <span class="comment">/* acos(|x|&gt;1) is NaN */</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span>(ix&lt;0x3fe00000) { <span class="comment">/* |x| &lt; 0.5 */</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span>(ix&lt;=0x3c600000) <span class="keywordflow">return</span> <a class="code" href="acos_8c.html#afb7fbaa5c31ee6a1e6a06cfafc7b4722">pio2_hi</a>+<a class="code" href="acos_8c.html#a4c04e4a8938bd8c06dbcc267cf2d1653">pio2_lo</a>;<span class="comment">/*if|x|&lt;2**-57*/</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; z = x*x;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; p = z*(<a class="code" href="acos_8c.html#a598e19e166b484e6636a5d2af921178e">pS0</a>+z*(<a class="code" href="acos_8c.html#acabe4dc2fe4ed1ed9dd22dbfcc2a4a55">pS1</a>+z*(<a class="code" href="acos_8c.html#a06b3d163437b4041ac67f2cda1cc445d">pS2</a>+z*(<a class="code" href="acos_8c.html#aaa40612ec8cdb54cc05424e143875d6c">pS3</a>+z*(<a class="code" href="acos_8c.html#a4579924a5221b8718a2d834daea875c1">pS4</a>+z*<a class="code" href="acos_8c.html#a6fe8ee6da9411328a5a01cc83cb5cafe">pS5</a>)))));</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; q = <a class="code" href="acos_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a>+z*(<a class="code" href="acos_8c.html#afb566f87cc1d33877c7a4a30d0abc813">qS1</a>+z*(<a class="code" href="acos_8c.html#aed4dd3ffd10de8fb416b8066211fc27d">qS2</a>+z*(<a class="code" href="acos_8c.html#abb1b119c3d6cf33d182bd48155186510">qS3</a>+z*<a class="code" href="acos_8c.html#ae6b27b738027128ae51618db2d6e4c81">qS4</a>)));</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; r = p/q;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <a class="code" href="acos_8c.html#afb7fbaa5c31ee6a1e6a06cfafc7b4722">pio2_hi</a> - (x - (<a class="code" href="acos_8c.html#a4c04e4a8938bd8c06dbcc267cf2d1653">pio2_lo</a>-x*r));</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (hx&lt;0) { <span class="comment">/* x &lt; -0.5 */</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; z = (<a class="code" href="acos_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a>+x)*0.5;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; p = z*(<a class="code" href="acos_8c.html#a598e19e166b484e6636a5d2af921178e">pS0</a>+z*(<a class="code" href="acos_8c.html#acabe4dc2fe4ed1ed9dd22dbfcc2a4a55">pS1</a>+z*(<a class="code" href="acos_8c.html#a06b3d163437b4041ac67f2cda1cc445d">pS2</a>+z*(<a class="code" href="acos_8c.html#aaa40612ec8cdb54cc05424e143875d6c">pS3</a>+z*(<a class="code" href="acos_8c.html#a4579924a5221b8718a2d834daea875c1">pS4</a>+z*<a class="code" href="acos_8c.html#a6fe8ee6da9411328a5a01cc83cb5cafe">pS5</a>)))));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; q = <a class="code" href="acos_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a>+z*(<a class="code" href="acos_8c.html#afb566f87cc1d33877c7a4a30d0abc813">qS1</a>+z*(<a class="code" href="acos_8c.html#aed4dd3ffd10de8fb416b8066211fc27d">qS2</a>+z*(<a class="code" href="acos_8c.html#abb1b119c3d6cf33d182bd48155186510">qS3</a>+z*<a class="code" href="acos_8c.html#ae6b27b738027128ae51618db2d6e4c81">qS4</a>)));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; s = <a class="code" href="math_8h.html#ab87521a75ef827a85807f89a6c10629a">sqrt</a>(z);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; r = p/q;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; w = r*s-<a class="code" href="acos_8c.html#a4c04e4a8938bd8c06dbcc267cf2d1653">pio2_lo</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <a class="code" href="acos_8c.html#a43016d873124d39034edb8cd164794db">pi</a> - 2.0*(s+w);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; } <span class="keywordflow">else</span> { <span class="comment">/* x &gt; 0.5 */</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; z = (<a class="code" href="acos_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a>-x)*0.5;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; s = <a class="code" href="math_8h.html#ab87521a75ef827a85807f89a6c10629a">sqrt</a>(z);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; df = s;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="real_2prim_8h.html#af4776e0b45c17da39fce08bc7b211a03">SET_LOW_WORD</a>(df,0);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; c = (z-df*df)/(s+df);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; p = z*(<a class="code" href="acos_8c.html#a598e19e166b484e6636a5d2af921178e">pS0</a>+z*(<a class="code" href="acos_8c.html#acabe4dc2fe4ed1ed9dd22dbfcc2a4a55">pS1</a>+z*(<a class="code" href="acos_8c.html#a06b3d163437b4041ac67f2cda1cc445d">pS2</a>+z*(<a class="code" href="acos_8c.html#aaa40612ec8cdb54cc05424e143875d6c">pS3</a>+z*(<a class="code" href="acos_8c.html#a4579924a5221b8718a2d834daea875c1">pS4</a>+z*<a class="code" href="acos_8c.html#a6fe8ee6da9411328a5a01cc83cb5cafe">pS5</a>)))));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; q = <a class="code" href="acos_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a>+z*(<a class="code" href="acos_8c.html#afb566f87cc1d33877c7a4a30d0abc813">qS1</a>+z*(<a class="code" href="acos_8c.html#aed4dd3ffd10de8fb416b8066211fc27d">qS2</a>+z*(<a class="code" href="acos_8c.html#abb1b119c3d6cf33d182bd48155186510">qS3</a>+z*<a class="code" href="acos_8c.html#ae6b27b738027128ae51618db2d6e4c81">qS4</a>)));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; r = p/q;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; w = r*s+c;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> 2.0*(df+w);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="ttc" id="acos_8c_html_a43016d873124d39034edb8cd164794db"><div class="ttname"><a href="acos_8c.html#a43016d873124d39034edb8cd164794db">pi</a></div><div class="ttdeci">static const double pi</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00049">acos.c:49</a></div></div>
<div class="ttc" id="acos_8c_html_a06b3d163437b4041ac67f2cda1cc445d"><div class="ttname"><a href="acos_8c.html#a06b3d163437b4041ac67f2cda1cc445d">pS2</a></div><div class="ttdeci">static const double pS2</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00054">acos.c:54</a></div></div>
<div class="ttc" id="real_2prim_8h_html_ae62ee08d06ab4cc06d61dc1246b73195"><div class="ttname"><a href="real_2prim_8h.html#ae62ee08d06ab4cc06d61dc1246b73195">GET_HIGH_WORD</a></div><div class="ttdeci">#define GET_HIGH_WORD(i, d)</div><div class="ttdoc">Get the more significant 32 bit int from a double. </div><div class="ttdef"><b>Definition:</b> <a href="real_2prim_8h_source.html#l00165">prim.h:165</a></div></div>
<div class="ttc" id="acos_8c_html_a4579924a5221b8718a2d834daea875c1"><div class="ttname"><a href="acos_8c.html#a4579924a5221b8718a2d834daea875c1">pS4</a></div><div class="ttdeci">static const double pS4</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00056">acos.c:56</a></div></div>
<div class="ttc" id="acos_8c_html_afb7fbaa5c31ee6a1e6a06cfafc7b4722"><div class="ttname"><a href="acos_8c.html#afb7fbaa5c31ee6a1e6a06cfafc7b4722">pio2_hi</a></div><div class="ttdeci">static const double pio2_hi</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00050">acos.c:50</a></div></div>
<div class="ttc" id="real_2prim_8h_html_adee023704c856ea8f310e8e3fd765a22"><div class="ttname"><a href="real_2prim_8h.html#adee023704c856ea8f310e8e3fd765a22">GET_LOW_WORD</a></div><div class="ttdeci">#define GET_LOW_WORD(i, d)</div><div class="ttdoc">Get the less significant 32 bit int from a double. </div><div class="ttdef"><b>Definition:</b> <a href="real_2prim_8h_source.html#l00176">prim.h:176</a></div></div>
<div class="ttc" id="real_2prim_8h_html_ae91287c8a5f73a8a22a100f50dc4de77"><div class="ttname"><a href="real_2prim_8h.html#ae91287c8a5f73a8a22a100f50dc4de77">sword</a></div><div class="ttdeci">signed int sword</div><div class="ttdoc">32 bit signed integer. </div><div class="ttdef"><b>Definition:</b> <a href="real_2prim_8h_source.html#l00107">prim.h:107</a></div></div>
<div class="ttc" id="acos_8c_html_a6fe8ee6da9411328a5a01cc83cb5cafe"><div class="ttname"><a href="acos_8c.html#a6fe8ee6da9411328a5a01cc83cb5cafe">pS5</a></div><div class="ttdeci">static const double pS5</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00057">acos.c:57</a></div></div>
<div class="ttc" id="math_8h_html_ab87521a75ef827a85807f89a6c10629a"><div class="ttname"><a href="math_8h.html#ab87521a75ef827a85807f89a6c10629a">sqrt</a></div><div class="ttdeci">double sqrt(double x)</div><div class="ttdoc">Square root function. </div><div class="ttdef"><b>Definition:</b> <a href="sqrt_8c_source.html#l00127">sqrt.c:127</a></div></div>
<div class="ttc" id="acos_8c_html_a598e19e166b484e6636a5d2af921178e"><div class="ttname"><a href="acos_8c.html#a598e19e166b484e6636a5d2af921178e">pS0</a></div><div class="ttdeci">static const double pS0</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00052">acos.c:52</a></div></div>
<div class="ttc" id="acos_8c_html_ada85e349d35971b32c8ea4238881ff8b"><div class="ttname"><a href="acos_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a></div><div class="ttdeci">static const double one</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00048">acos.c:48</a></div></div>
<div class="ttc" id="acos_8c_html_ae6b27b738027128ae51618db2d6e4c81"><div class="ttname"><a href="acos_8c.html#ae6b27b738027128ae51618db2d6e4c81">qS4</a></div><div class="ttdeci">static const double qS4</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00061">acos.c:61</a></div></div>
<div class="ttc" id="real_2prim_8h_html_af4776e0b45c17da39fce08bc7b211a03"><div class="ttname"><a href="real_2prim_8h.html#af4776e0b45c17da39fce08bc7b211a03">SET_LOW_WORD</a></div><div class="ttdeci">#define SET_LOW_WORD(d, v)</div><div class="ttdoc">Set the less significant 32 bits of a double from an int. </div><div class="ttdef"><b>Definition:</b> <a href="real_2prim_8h_source.html#l00211">prim.h:211</a></div></div>
<div class="ttc" id="acos_8c_html_abb1b119c3d6cf33d182bd48155186510"><div class="ttname"><a href="acos_8c.html#abb1b119c3d6cf33d182bd48155186510">qS3</a></div><div class="ttdeci">static const double qS3</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00060">acos.c:60</a></div></div>
<div class="ttc" id="acos_8c_html_afb566f87cc1d33877c7a4a30d0abc813"><div class="ttname"><a href="acos_8c.html#afb566f87cc1d33877c7a4a30d0abc813">qS1</a></div><div class="ttdeci">static const double qS1</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00058">acos.c:58</a></div></div>
<div class="ttc" id="acos_8c_html_aaa40612ec8cdb54cc05424e143875d6c"><div class="ttname"><a href="acos_8c.html#aaa40612ec8cdb54cc05424e143875d6c">pS3</a></div><div class="ttdeci">static const double pS3</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00055">acos.c:55</a></div></div>
<div class="ttc" id="acos_8c_html_aed4dd3ffd10de8fb416b8066211fc27d"><div class="ttname"><a href="acos_8c.html#aed4dd3ffd10de8fb416b8066211fc27d">qS2</a></div><div class="ttdeci">static const double qS2</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00059">acos.c:59</a></div></div>
<div class="ttc" id="acos_8c_html_a4c04e4a8938bd8c06dbcc267cf2d1653"><div class="ttname"><a href="acos_8c.html#a4c04e4a8938bd8c06dbcc267cf2d1653">pio2_lo</a></div><div class="ttdeci">static const double pio2_lo</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00051">acos.c:51</a></div></div>
<div class="ttc" id="acos_8c_html_acabe4dc2fe4ed1ed9dd22dbfcc2a4a55"><div class="ttname"><a href="acos_8c.html#acabe4dc2fe4ed1ed9dd22dbfcc2a4a55">pS1</a></div><div class="ttdeci">static const double pS1</div><div class="ttdef"><b>Definition:</b> <a href="acos_8c_source.html#l00053">acos.c:53</a></div></div>
</div><!-- fragment -->
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="acos_8c_ae93afe22ff34c79ee97ea3eaf77557db_cgraph.png" border="0" usemap="#acos_8c_ae93afe22ff34c79ee97ea3eaf77557db_cgraph" alt=""/></div>
<map name="acos_8c_ae93afe22ff34c79ee97ea3eaf77557db_cgraph" id="acos_8c_ae93afe22ff34c79ee97ea3eaf77557db_cgraph">
<area shape="rect" id="node2" href="sqrt_8c.html#ab87521a75ef827a85807f89a6c10629a" title="Square root function. " alt="" coords="104,5,148,32"/>
</map>
</div>
</p>
<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="acos_8c_ae93afe22ff34c79ee97ea3eaf77557db_icgraph.png" border="0" usemap="#acos_8c_ae93afe22ff34c79ee97ea3eaf77557db_icgraph" alt=""/></div>
<map name="acos_8c_ae93afe22ff34c79ee97ea3eaf77557db_icgraph" id="acos_8c_ae93afe22ff34c79ee97ea3eaf77557db_icgraph">
<area shape="rect" id="node2" href="structRealNumber.html#a6e03b5a208301e30e0e26099ae5787e6" title="Inverse trigonometric cosine function. " alt="" coords="104,5,268,32"/>
<area shape="rect" id="node3" href="structRealNumber.html#a9720848058718946a9215b66a69ea05c" title="Inverse trigonometric secant function. " alt="" coords="104,56,268,83"/>
</map>
</div>
</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="ada85e349d35971b32c8ea4238881ff8b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double one = 1.00000000000000000000e+00</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00048">48</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="a43016d873124d39034edb8cd164794db"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double pi = 3.14159265358979311600e+00</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00049">49</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="afb7fbaa5c31ee6a1e6a06cfafc7b4722"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double pio2_hi = 1.57079632679489655800e+00</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00050">50</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="a4c04e4a8938bd8c06dbcc267cf2d1653"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double pio2_lo = 6.12323399573676603587e-17</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00051">51</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="a598e19e166b484e6636a5d2af921178e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double pS0 = 1.66666666666666657415e-01</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00052">52</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="acabe4dc2fe4ed1ed9dd22dbfcc2a4a55"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double pS1 = -3.25565818622400915405e-01</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00053">53</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="a06b3d163437b4041ac67f2cda1cc445d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double pS2 = 2.01212532134862925881e-01</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00054">54</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="aaa40612ec8cdb54cc05424e143875d6c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double pS3 = -4.00555345006794114027e-02</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00055">55</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="a4579924a5221b8718a2d834daea875c1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double pS4 = 7.91534994289814532176e-04</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00056">56</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="a6fe8ee6da9411328a5a01cc83cb5cafe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double pS5 = 3.47933107596021167570e-05</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00057">57</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="afb566f87cc1d33877c7a4a30d0abc813"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double qS1 = -2.40339491173441421878e+00</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00058">58</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="aed4dd3ffd10de8fb416b8066211fc27d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double qS2 = 2.02094576023350569471e+00</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00059">59</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="abb1b119c3d6cf33d182bd48155186510"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double qS3 = -6.88283971605453293030e-01</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00060">60</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
<a class="anchor" id="ae6b27b738027128ae51618db2d6e4c81"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double qS4 = 7.70381505559019352791e-02</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="acos_8c_source.html#l00061">61</a> of file <a class="el" href="acos_8c_source.html">acos.c</a>.</p>
<p>Referenced by <a class="el" href="acos_8c_source.html#l00096">acos()</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_97aefd0d527b934f1d99a682da8fe6a9.html">lib</a></li><li class="navelem"><a class="el" href="dir_ca194a09c7a767aed9138a74a7cf8e10.html">real</a></li><li class="navelem"><a class="el" href="acos_8c.html">acos.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>