<trclass="memdesc:a907297107e93ea9c8a0c8409a8e65079"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Inverse hyperbolic sine function. <ahref="#a907297107e93ea9c8a0c8409a8e65079">More...</a><br/></td></tr>
</pre><dlclass="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 <aclass="el"href="asinh_8c_source.html#l00073">73</a> of file <aclass="el"href="asinh_8c_source.html">asinh.c</a>.</p>
<p>References <aclass="el"href="asinh_8c_source.html#l00050">huge</a>, <aclass="el"href="asinh_8c_source.html#l00049">ln2</a>, <aclass="el"href="log1p_8c_source.html#l00125">log1p()</a>, <aclass="el"href="asinh_8c_source.html#l00048">one</a>, and <aclass="el"href="sqrt_8c_source.html#l00127">sqrt()</a>.</p>
<p>Referenced by <aclass="el"href="real_8cpp_source.html#l00507">RealNumber::HypArcCosecant()</a>, and <aclass="el"href="real_8cpp_source.html#l00497">RealNumber::HypArcSine()</a>.</p>
<divclass="fragment"><divclass="line"><aname="l00074"></a><spanclass="lineno"> 74</span> {</div><divclass="line"><aname="l00075"></a><spanclass="lineno"> 75</span> <spanclass="keywordtype">double</span> t,w;</div><divclass="line"><aname="l00076"></a><spanclass="lineno"> 76</span> <aclass="code"href="real_2prim_8h.html#ae91287c8a5f73a8a22a100f50dc4de77">sword</a> hx,ix;</div><divclass="line"><aname="l00077"></a><spanclass="lineno"> 77</span> <aclass="code"href="real_2prim_8h.html#ae62ee08d06ab4cc06d61dc1246b73195">GET_HIGH_WORD</a>(hx,x);</div><divclass="line"><aname="l00078"></a><spanclass="lineno"> 78</span>  ix = hx&0x7fffffff;</div><divclass="line"><aname="l00079"></a><spanclass="lineno"> 79</span> <spanclass="keywordflow">if</span>(ix>=0x7ff00000) <spanclass="keywordflow">return</span> x+x; <spanclass="comment">/* x is inf or NaN */</span></div><divclass="line"><aname="l00080"></a><spanclass="lineno"> 80</span> <spanclass="keywordflow">if</span>(ix< 0x3e300000) { <spanclass="comment">/* |x|<2**-28 */</span></div><divclass="line"><aname="l00081"></a><spanclass="lineno"> 81</span> <spanclass="keywordflow">if</span>(<aclass="code"href="asinh_8c.html#acbd466133274923cc0785707fbdeea9a">huge</a>+x><aclass="code"href="asinh_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a>) <spanclass="keywordflow">return</span> x; <spanclass="comment">/* return x inexact except 0 */</span></div><divclass="line"><aname="l00082"></a><spanclass="lineno"> 82</span>  }</div><divclass="line"><aname="l00083"></a><spanclass="lineno"> 83</span> <spanclass="keywordflow">if</span>(ix>0x41b00000) { <spanclass="comment">/* |x| > 2**28 */</span></div><divclass="line"><aname="l00084"></a><spanclass="lineno"> 84</span>  w = <aclass="code"href="math_8h.html#adb302c9aafbaa5e180d9f60ee954bb82">log</a>(<aclass="code"href="math_8h.html#a8fb5c0b9b43a108724b355136d29d2f9">fabs</a>(x))+<aclass="code"href="asinh_8c.html#a703f4fc93e5a57058ce6ba2ba196918d">ln2</a>;</div><divclass="line"><aname="l00085"></a><spanclass="lineno"> 85</span>  } <spanclass="keywordflow">else</span><spanclass="keywordflow">if</span> (ix>0x40000000) { <spanclass="comment">/* 2**28 > |x| > 2.0 */</span></div><divclass="line"><aname="l00086"></a><spanclass="lineno"> 86</span>  t = <aclass="code"href="math_8h.html#a8fb5c0b9b43a108724b355136d29d2f9">fabs</a>(x);</div><divclass="line"><aname="l00087"></a><spanclass="lineno"> 87</span>  w = <aclass="code"href="math_8h.html#adb302c9aafbaa5e180d9f60ee954bb82">log</a>(2.0*t+<aclass="code"href="asinh_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a>/(<aclass="code"href="math_8h.html#ab87521a75ef827a85807f89a6c10629a">sqrt</a>(x*x+<aclass="code"href="asinh_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a>)+t));</div><divclass="line"><aname="l00088"></a><spanclass="lineno"> 88</span>  } <spanclass="keywordflow">else</span> { <spanclass="comment">/* 2.0 > |x| > 2**-28 */</span></div><divclass="line"><aname="l00089"></a><spanclass="lineno"> 89</span>  t = x*x;</div><divclass="line"><aname="l00090"></a><spanclass="lineno"> 90</span>  w =<aclass="code"href="math_8h.html#ac2aac20ab1347498e6e4f209148fea84">log1p</a>(<aclass="code"href="math_8h.html#a8fb5c0b9b43a108724b355136d29d2f9">fabs</a>(x)+t/(<aclass="code"href="asinh_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a>+<aclass="code"href="math_8h.html#ab87521a75ef827a85807f89a6c10629a">sqrt</a>(<aclass="code"href="asinh_8c.html#ada85e349d35971b32c8ea4238881ff8b">one</a>+t)));</div><divclass="line"><aname="l00091"></a><spanclass="lineno"> 91</span>  }</div><divclass="line"><aname="l00092"></a><spanclass="lineno"> 92</span> <spanclass="keywordflow">if</span>(hx>0) <spanclass="keywordflow">return</span> w;</div><divclass="lin
<divclass="ttc"id="real_2prim_8h_html_ae91287c8a5f73a8a22a100f50dc4de77"><divclass="ttname"><ahref="real_2prim_8h.html#ae91287c8a5f73a8a22a100f50dc4de77">sword</a></div><divclass="ttdeci">signed int sword</div><divclass="ttdoc">32 bit signed integer. </div><divclass="ttdef"><b>Definition:</b><ahref="real_2prim_8h_source.html#l00107">prim.h:107</a></div></div>
<divclass="ttc"id="math_8h_html_a8fb5c0b9b43a108724b355136d29d2f9"><divclass="ttname"><ahref="math_8h.html#a8fb5c0b9b43a108724b355136d29d2f9">fabs</a></div><divclass="ttdeci">double fabs(double x)</div><divclass="ttdoc">Returns the absolute value of x. </div><divclass="ttdef"><b>Definition:</b><ahref="fabs_8c_source.html#l00051">fabs.c:51</a></div></div>
<areashape="rect"id="node3"href="structRealNumber.html#a304a0afc690e5378aef03aa3d76425a2"title="Inverse hyperbolic sine function. "alt=""coords="121,56,295,83"/>