amath/doc/html/atan2_8c.html

407 lines
40 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/atan2.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('atan2_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">atan2.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 atan2.c:</div>
<div class="dyncontent">
<div class="center"><img src="atan2_8c__incl.png" border="0" usemap="#lib_2real_2atan2_8c" alt=""/></div>
<map name="lib_2real_2atan2_8c" id="lib_2real_2atan2_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="atan2_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:a349377202ca14f79eb335b1a421fe4d8"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="atan2_8c.html#a349377202ca14f79eb335b1a421fe4d8">atan2</a> (double y, double x)</td></tr>
<tr class="separator:a349377202ca14f79eb335b1a421fe4d8"><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:a4f41fc56ffc7d06df51b6fbccd8c0846"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a> = 1.0e-300</td></tr>
<tr class="separator:a4f41fc56ffc7d06df51b6fbccd8c0846"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a554f7b66b1ba49443447eb746978c268"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="atan2_8c.html#a554f7b66b1ba49443447eb746978c268">zero</a> = 0.0</td></tr>
<tr class="separator:a554f7b66b1ba49443447eb746978c268"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1417df9542e56520aafedb53e1112a59"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="atan2_8c.html#a1417df9542e56520aafedb53e1112a59">pi_o_4</a> = 7.8539816339744827900E-01</td></tr>
<tr class="separator:a1417df9542e56520aafedb53e1112a59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e2886167c3870717e15666048afd36a"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="atan2_8c.html#a5e2886167c3870717e15666048afd36a">pi_o_2</a> = 1.5707963267948965580E+00</td></tr>
<tr class="separator:a5e2886167c3870717e15666048afd36a"><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="atan2_8c.html#a43016d873124d39034edb8cd164794db">pi</a> = 3.1415926535897931160E+00</td></tr>
<tr class="separator:a43016d873124d39034edb8cd164794db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8cbe1b78ca704e98ce9f3905455f870"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="atan2_8c.html#ac8cbe1b78ca704e98ce9f3905455f870">pi_lo</a> = 1.2246467991473531772E-16</td></tr>
<tr class="separator:ac8cbe1b78ca704e98ce9f3905455f870"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a349377202ca14f79eb335b1a421fe4d8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double atan2 </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>x</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="atan2_8c_source.html#l00086">86</a> of file <a class="el" href="atan2_8c_source.html">atan2.c</a>.</p>
<p>References <a class="el" href="atan_8c_source.html#l00109">atan()</a>, <a class="el" href="atan2_8c_source.html#l00083">pi</a>, <a class="el" href="atan2_8c_source.html#l00084">pi_lo</a>, <a class="el" href="atan2_8c_source.html#l00082">pi_o_2</a>, <a class="el" href="atan2_8c_source.html#l00081">pi_o_4</a>, <a class="el" href="atan2_8c_source.html#l00079">tiny</a>, and <a class="el" href="atan2_8c_source.html#l00080">zero</a>.</p>
<p>Referenced by <a class="el" href="clog_8c_source.html#l00046">clog()</a>, and <a class="el" href="cpow_8c_source.html#l00046">cpow()</a>.</p>
<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">double</span> z;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="real_2prim_8h.html#ae91287c8a5f73a8a22a100f50dc4de77">sword</a> k,m,hx,hy,ix,iy;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="real_2prim_8h.html#a6e60fe0e0f9f8801507e15fe2d893751">uword</a> lx,ly;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="real_2prim_8h.html#a6dadc713499e14ba3088a55409a18983">EXTRACT_WORDS</a>(hx,lx,x);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; ix = hx&amp;0x7fffffff;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="real_2prim_8h.html#a6dadc713499e14ba3088a55409a18983">EXTRACT_WORDS</a>(hy,ly,y);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; iy = hy&amp;0x7fffffff;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span>(((ix|((lx|-lx)&gt;&gt;31))&gt;0x7ff00000)||</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; ((iy|((ly|-ly)&gt;&gt;31))&gt;0x7ff00000)) <span class="comment">/* x or y is NaN */</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span> x+y;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span>(((hx-0x3ff00000)|lx)==0) <span class="keywordflow">return</span> <a class="code" href="math_8h.html#a1e2f8f6d64eaa95131bc63fee34970ea">atan</a>(y); <span class="comment">/* x=1.0 */</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; m = ((hy&gt;&gt;31)&amp;1)|((hx&gt;&gt;30)&amp;2); <span class="comment">/* 2*sign(x)+sign(y) */</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">/* when y = 0 */</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span>((iy|ly)==0) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">switch</span>(m) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> y; <span class="comment">/* atan(+-0,+anything)=+-0 */</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> <a class="code" href="atan2_8c.html#a43016d873124d39034edb8cd164794db">pi</a>+<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a>;<span class="comment">/* atan(+0,-anything) = pi */</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> -<a class="code" href="atan2_8c.html#a43016d873124d39034edb8cd164794db">pi</a>-<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a>;<span class="comment">/* atan(-0,-anything) =-pi */</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">/* when x = 0 */</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span>((ix|lx)==0) <span class="keywordflow">return</span> (hy&lt;0)? -<a class="code" href="atan2_8c.html#a5e2886167c3870717e15666048afd36a">pi_o_2</a>-<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a>: <a class="code" href="atan2_8c.html#a5e2886167c3870717e15666048afd36a">pi_o_2</a>+<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">/* when x is INF */</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span>(ix==0x7ff00000) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(iy==0x7ff00000) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">switch</span>(m) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <a class="code" href="atan2_8c.html#a1417df9542e56520aafedb53e1112a59">pi_o_4</a>+<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a>;<span class="comment">/* atan(+INF,+INF) */</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> -<a class="code" href="atan2_8c.html#a1417df9542e56520aafedb53e1112a59">pi_o_4</a>-<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a>;<span class="comment">/* atan(-INF,+INF) */</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> 3.0*<a class="code" href="atan2_8c.html#a1417df9542e56520aafedb53e1112a59">pi_o_4</a>+<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a>;<span class="comment">/*atan(+INF,-INF)*/</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> -3.0*<a class="code" href="atan2_8c.html#a1417df9542e56520aafedb53e1112a59">pi_o_4</a>-<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a>;<span class="comment">/*atan(-INF,-INF)*/</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">switch</span>(m) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> <a class="code" href="atan2_8c.html#a554f7b66b1ba49443447eb746978c268">zero</a> ; <span class="comment">/* atan(+...,+INF) */</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> -<a class="code" href="atan2_8c.html#a554f7b66b1ba49443447eb746978c268">zero</a> ; <span class="comment">/* atan(-...,+INF) */</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> <a class="code" href="atan2_8c.html#a43016d873124d39034edb8cd164794db">pi</a>+<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a> ; <span class="comment">/* atan(+...,-INF) */</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> -<a class="code" href="atan2_8c.html#a43016d873124d39034edb8cd164794db">pi</a>-<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a> ; <span class="comment">/* atan(-...,-INF) */</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">/* when y is INF */</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span>(iy==0x7ff00000) <span class="keywordflow">return</span> (hy&lt;0)? -<a class="code" href="atan2_8c.html#a5e2886167c3870717e15666048afd36a">pi_o_2</a>-tiny: <a class="code" href="atan2_8c.html#a5e2886167c3870717e15666048afd36a">pi_o_2</a>+<a class="code" href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">/* compute y/x */</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; k = (iy-ix)&gt;&gt;20;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span>(k &gt; 60) z=<a class="code" href="atan2_8c.html#a5e2886167c3870717e15666048afd36a">pi_o_2</a>+0.5*<a class="code" href="atan2_8c.html#ac8cbe1b78ca704e98ce9f3905455f870">pi_lo</a>; <span class="comment">/* |y/x| &gt; 2**60 */</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(hx&lt;0&amp;&amp;k&lt;-60) z=0.0; <span class="comment">/* |y|/x &lt; -2**60 */</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">else</span> z=<a class="code" href="math_8h.html#a1e2f8f6d64eaa95131bc63fee34970ea">atan</a>(<a class="code" href="math_8h.html#a8fb5c0b9b43a108724b355136d29d2f9">fabs</a>(y/x)); <span class="comment">/* safe to do y/x */</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">switch</span> (m) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> z ; <span class="comment">/* atan(+,+) */</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="real_2prim_8h.html#a6e60fe0e0f9f8801507e15fe2d893751">uword</a> zh;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="real_2prim_8h.html#ae62ee08d06ab4cc06d61dc1246b73195">GET_HIGH_WORD</a>(zh,z);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="real_2prim_8h.html#a6ca54776127e20149f84c290bf52f89e">SET_HIGH_WORD</a>(z, zh ^ 0x80000000);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> z ; <span class="comment">/* atan(-,+) */</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> <a class="code" href="atan2_8c.html#a43016d873124d39034edb8cd164794db">pi</a>-(z-<a class="code" href="atan2_8c.html#ac8cbe1b78ca704e98ce9f3905455f870">pi_lo</a>);<span class="comment">/* atan(+,-) */</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">default</span>: <span class="comment">/* case 3 */</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> (z-<a class="code" href="atan2_8c.html#ac8cbe1b78ca704e98ce9f3905455f870">pi_lo</a>)-<a class="code" href="atan2_8c.html#a43016d873124d39034edb8cd164794db">pi</a>;<span class="comment">/* atan(-,-) */</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div><div class="ttc" id="atan2_8c_html_a43016d873124d39034edb8cd164794db"><div class="ttname"><a href="atan2_8c.html#a43016d873124d39034edb8cd164794db">pi</a></div><div class="ttdeci">static const double pi</div><div class="ttdef"><b>Definition:</b> <a href="atan2_8c_source.html#l00083">atan2.c:83</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="real_2prim_8h_html_a6dadc713499e14ba3088a55409a18983"><div class="ttname"><a href="real_2prim_8h.html#a6dadc713499e14ba3088a55409a18983">EXTRACT_WORDS</a></div><div class="ttdeci">#define EXTRACT_WORDS(ix0, ix1, d)</div><div class="ttdoc">Get two 32 bit ints from a double. </div><div class="ttdef"><b>Definition:</b> <a href="real_2prim_8h_source.html#l00153">prim.h:153</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="math_8h_html_a8fb5c0b9b43a108724b355136d29d2f9"><div class="ttname"><a href="math_8h.html#a8fb5c0b9b43a108724b355136d29d2f9">fabs</a></div><div class="ttdeci">double fabs(double x)</div><div class="ttdoc">Returns the absolute value of x. </div><div class="ttdef"><b>Definition:</b> <a href="fabs_8c_source.html#l00051">fabs.c:51</a></div></div>
<div class="ttc" id="atan2_8c_html_ac8cbe1b78ca704e98ce9f3905455f870"><div class="ttname"><a href="atan2_8c.html#ac8cbe1b78ca704e98ce9f3905455f870">pi_lo</a></div><div class="ttdeci">static const double pi_lo</div><div class="ttdef"><b>Definition:</b> <a href="atan2_8c_source.html#l00084">atan2.c:84</a></div></div>
<div class="ttc" id="real_2prim_8h_html_a6e60fe0e0f9f8801507e15fe2d893751"><div class="ttname"><a href="real_2prim_8h.html#a6e60fe0e0f9f8801507e15fe2d893751">uword</a></div><div class="ttdeci">unsigned int uword</div><div class="ttdoc">32 bit unsigned integer. </div><div class="ttdef"><b>Definition:</b> <a href="real_2prim_8h_source.html#l00101">prim.h:101</a></div></div>
<div class="ttc" id="atan2_8c_html_a5e2886167c3870717e15666048afd36a"><div class="ttname"><a href="atan2_8c.html#a5e2886167c3870717e15666048afd36a">pi_o_2</a></div><div class="ttdeci">static const double pi_o_2</div><div class="ttdef"><b>Definition:</b> <a href="atan2_8c_source.html#l00082">atan2.c:82</a></div></div>
<div class="ttc" id="atan2_8c_html_a4f41fc56ffc7d06df51b6fbccd8c0846"><div class="ttname"><a href="atan2_8c.html#a4f41fc56ffc7d06df51b6fbccd8c0846">tiny</a></div><div class="ttdeci">static const double tiny</div><div class="ttdef"><b>Definition:</b> <a href="atan2_8c_source.html#l00079">atan2.c:79</a></div></div>
<div class="ttc" id="math_8h_html_a1e2f8f6d64eaa95131bc63fee34970ea"><div class="ttname"><a href="math_8h.html#a1e2f8f6d64eaa95131bc63fee34970ea">atan</a></div><div class="ttdeci">double atan(double x)</div><div class="ttdoc">Inverse trigonometric tangent function. </div><div class="ttdef"><b>Definition:</b> <a href="atan_8c_source.html#l00109">atan.c:109</a></div></div>
<div class="ttc" id="atan2_8c_html_a554f7b66b1ba49443447eb746978c268"><div class="ttname"><a href="atan2_8c.html#a554f7b66b1ba49443447eb746978c268">zero</a></div><div class="ttdeci">static const double zero</div><div class="ttdef"><b>Definition:</b> <a href="atan2_8c_source.html#l00080">atan2.c:80</a></div></div>
<div class="ttc" id="atan2_8c_html_a1417df9542e56520aafedb53e1112a59"><div class="ttname"><a href="atan2_8c.html#a1417df9542e56520aafedb53e1112a59">pi_o_4</a></div><div class="ttdeci">static const double pi_o_4</div><div class="ttdef"><b>Definition:</b> <a href="atan2_8c_source.html#l00081">atan2.c:81</a></div></div>
<div class="ttc" id="real_2prim_8h_html_a6ca54776127e20149f84c290bf52f89e"><div class="ttname"><a href="real_2prim_8h.html#a6ca54776127e20149f84c290bf52f89e">SET_HIGH_WORD</a></div><div class="ttdeci">#define SET_HIGH_WORD(d, v)</div><div class="ttdoc">Set the more significant 32 bits of a double from an int. </div><div class="ttdef"><b>Definition:</b> <a href="real_2prim_8h_source.html#l00199">prim.h:199</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="atan2_8c_a349377202ca14f79eb335b1a421fe4d8_cgraph.png" border="0" usemap="#atan2_8c_a349377202ca14f79eb335b1a421fe4d8_cgraph" alt=""/></div>
<map name="atan2_8c_a349377202ca14f79eb335b1a421fe4d8_cgraph" id="atan2_8c_a349377202ca14f79eb335b1a421fe4d8_cgraph">
<area shape="rect" id="node2" href="atan_8c.html#a1e2f8f6d64eaa95131bc63fee34970ea" title="Inverse trigonometric tangent function. " alt="" coords="108,5,155,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="atan2_8c_a349377202ca14f79eb335b1a421fe4d8_icgraph.png" border="0" usemap="#atan2_8c_a349377202ca14f79eb335b1a421fe4d8_icgraph" alt=""/></div>
<map name="atan2_8c_a349377202ca14f79eb335b1a421fe4d8_icgraph" id="atan2_8c_a349377202ca14f79eb335b1a421fe4d8_icgraph">
<area shape="rect" id="node2" href="clog_8c.html#a888b8eb5ccc46411e68f6d7b99035888" title="Natural logarithm of a complex number. " alt="" coords="111,411,158,437"/>
<area shape="rect" id="node34" href="cpow_8c.html#a2c8af642928f3ec79a10a52983981ffa" title="Complex number raised to a power. " alt="" coords="108,715,161,741"/>
<area shape="rect" id="node3" href="cacos_8c.html#ac182d6022bdabf7f2b6eccb6a0ea497b" title="Inverse cosine of complex number. " alt="" coords="262,5,319,32"/>
<area shape="rect" id="node5" href="cacosh_8c.html#a451ef5c81d4091e547e52a9a03af260d" title="Inverse hyperbolic cosine of complex number. " alt="" coords="259,56,323,83"/>
<area shape="rect" id="node7" href="cacot_8c.html#a9fe610b52824ffaa0764c77e462c9815" title="Inverse cotangent of complex number. " alt="" coords="263,107,318,133"/>
<area shape="rect" id="node9" href="cacoth_8c.html#ab9d5fbd365098aa6a35e8599e13d7adb" title="Inverse hyperbolic cotangent of complex number. " alt="" coords="260,157,321,184"/>
<area shape="rect" id="node11" href="cacsc_8c.html#aa8a49b2418f7bbcf0a8f72a15fbb4984" title="Inverse cosecant of complex number. " alt="" coords="262,208,319,235"/>
<area shape="rect" id="node13" href="cacsch_8c.html#a1a3241a96a0225c9ef3113f5e5c48acf" title="Inverse hyperbolic cosecant of complex number. " alt="" coords="259,259,323,285"/>
<area shape="rect" id="node15" href="casec_8c.html#ae509596503bb6ea1142d470882e074a7" title="Inverse secant expressed using complex logarithms: " alt="" coords="262,309,319,336"/>
<area shape="rect" id="node17" href="casech_8c.html#ad47f8259620b339981f876087f195cb4" title="Inverse hyperbolic secant of complex numbers. " alt="" coords="259,360,323,387"/>
<area shape="rect" id="node19" href="casin_8c.html#a411c00ad70bc1b91a5de261b64d0f131" title="Inverse sine of complex number. " alt="" coords="264,411,317,437"/>
<area shape="rect" id="node21" href="casinh_8c.html#a333c9aa02a58163693f67e1d47aa9887" title="Inverse hyperbolic sine of complex number. " alt="" coords="261,461,321,488"/>
<area shape="rect" id="node23" href="catan_8c.html#aa4ec5b4617afd43de3b6c7a11e850f04" title="Inverse tangent of complex number. " alt="" coords="263,512,318,539"/>
<area shape="rect" id="node25" href="catanh_8c.html#a0808614b4e465dc4b4827382a9f77447" title="Inverse hyperbolic tangent of complex number. " alt="" coords="260,563,321,589"/>
<area shape="rect" id="node27" href="ccbrt_8c.html#a9411d07785a32ac077d24d6c8a5c5554" title="Cube root of complex number. " alt="" coords="265,613,316,640"/>
<area shape="rect" id="node29" href="clog10_8c.html#a5e20d88f7f7f17d510ddf62f269c8343" title="Base 10 logarithmic value of complex number. " alt="" coords="261,664,321,691"/>
<area shape="rect" id="node31" href="clogb_8c.html#a3951e04bc6370fb9fd7b0ff2c2558d7b" title="Base 2 logarithmic value of complex number. " alt="" coords="264,715,317,741"/>
<area shape="rect" id="node33" href="structComplexNumber.html#af2b337a76672ec647dbe707d3287d6df" title="ComplexNumber::Log" alt="" coords="216,765,365,792"/>
<area shape="rect" id="node4" href="structComplexNumber.html#a5f9bdc56dba5fc8cdf8afb8cd232e7e4" title="ComplexNumber::ArcCosine" alt="" coords="441,5,631,32"/>
<area shape="rect" id="node6" href="structComplexNumber.html#a9d1b26167fb3e3c84e18b724bcfbb48a" title="ComplexNumber::HypArcCosine" alt="" coords="429,56,643,83"/>
<area shape="rect" id="node8" href="structComplexNumber.html#a412a4480826c808d9358ccc84f24a75f" title="ComplexNumber::ArcCotangent" alt="" coords="432,107,640,133"/>
<area shape="rect" id="node10" href="structComplexNumber.html#acf624375cf09c48f5209ec3605ca01f6" title="ComplexNumber::HypArcCotangent" alt="" coords="420,157,652,184"/>
<area shape="rect" id="node12" href="structComplexNumber.html#a904a9af5470b037c1931d7d090410c94" title="ComplexNumber::ArcCosecant" alt="" coords="434,208,638,235"/>
<area shape="rect" id="node14" href="structComplexNumber.html#af53cdbbf59f07f40118cf05a51cf3d0a" title="ComplexNumber::HypArcCosecant" alt="" coords="422,259,650,285"/>
<area shape="rect" id="node16" href="structComplexNumber.html#a66cb3904e4b3127f0e3714ba23a0c981" title="ComplexNumber::ArcSecant" alt="" coords="441,309,631,336"/>
<area shape="rect" id="node18" href="structComplexNumber.html#af0d9ceb661b6bf3052d3806c84ab6faf" title="ComplexNumber::HypArcSecant" alt="" coords="429,360,643,387"/>
<area shape="rect" id="node20" href="structComplexNumber.html#ab52b2cfd9cd0ba862346408c580e385c" title="ComplexNumber::ArcSine" alt="" coords="449,411,623,437"/>
<area shape="rect" id="node22" href="structComplexNumber.html#a0081fb3057a6ab825ac0b3dbea62406b" title="ComplexNumber::HypArcSine" alt="" coords="437,461,635,488"/>
<area shape="rect" id="node24" href="structComplexNumber.html#a69dc018433e7409d5b6b6d87568ae232" title="ComplexNumber::ArcTangent" alt="" coords="439,512,633,539"/>
<area shape="rect" id="node26" href="structComplexNumber.html#a9c1090310f2f9e656467625e0137c8dc" title="ComplexNumber::HypArcTangent" alt="" coords="427,563,645,589"/>
<area shape="rect" id="node28" href="structComplexNumber.html#a1589eac796ec230625298d196fe84c25" title="ComplexNumber::CubeRoot" alt="" coords="443,613,629,640"/>
<area shape="rect" id="node30" href="structComplexNumber.html#a77a7c95712136b6beeded79210a18c00" title="ComplexNumber::Log10" alt="" coords="455,664,617,691"/>
<area shape="rect" id="node32" href="structComplexNumber.html#ae8ff446ea20c3b1e4dfa979eaed9ea86" title="ComplexNumber::Log2" alt="" coords="458,715,614,741"/>
<area shape="rect" id="node35" href="structComplexNumber.html#a0ab40e1cbe5c25629fe62643ed8b9352" title="ComplexNumber::Raise" alt="" coords="209,816,372,843"/>
<area shape="rect" id="node36" href="structRealNumber.html#aaf9c066a4b9e9d845edefd40f614a517" title="Expontation function. " alt="" coords="467,816,605,843"/>
</map>
</div>
</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<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.1415926535897931160E+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="atan2_8c_source.html#l00083">83</a> of file <a class="el" href="atan2_8c_source.html">atan2.c</a>.</p>
<p>Referenced by <a class="el" href="atan2_8c_source.html#l00086">atan2()</a>.</p>
</div>
</div>
<a class="anchor" id="ac8cbe1b78ca704e98ce9f3905455f870"></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_lo = 1.2246467991473531772E-16</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="atan2_8c_source.html#l00084">84</a> of file <a class="el" href="atan2_8c_source.html">atan2.c</a>.</p>
<p>Referenced by <a class="el" href="atan2_8c_source.html#l00086">atan2()</a>.</p>
</div>
</div>
<a class="anchor" id="a5e2886167c3870717e15666048afd36a"></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_o_2 = 1.5707963267948965580E+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="atan2_8c_source.html#l00082">82</a> of file <a class="el" href="atan2_8c_source.html">atan2.c</a>.</p>
<p>Referenced by <a class="el" href="atan2_8c_source.html#l00086">atan2()</a>.</p>
</div>
</div>
<a class="anchor" id="a1417df9542e56520aafedb53e1112a59"></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_o_4 = 7.8539816339744827900E-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="atan2_8c_source.html#l00081">81</a> of file <a class="el" href="atan2_8c_source.html">atan2.c</a>.</p>
<p>Referenced by <a class="el" href="atan2_8c_source.html#l00086">atan2()</a>.</p>
</div>
</div>
<a class="anchor" id="a4f41fc56ffc7d06df51b6fbccd8c0846"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double tiny = 1.0e-300</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="atan2_8c_source.html#l00079">79</a> of file <a class="el" href="atan2_8c_source.html">atan2.c</a>.</p>
<p>Referenced by <a class="el" href="atan2_8c_source.html#l00086">atan2()</a>.</p>
</div>
</div>
<a class="anchor" id="a554f7b66b1ba49443447eb746978c268"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double zero = 0.0</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="atan2_8c_source.html#l00080">80</a> of file <a class="el" href="atan2_8c_source.html">atan2.c</a>.</p>
<p>Referenced by <a class="el" href="atan2_8c_source.html#l00086">atan2()</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="atan2_8c.html">atan2.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>