<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="cbrt_8c_source.html#l00067">67</a> of file <aclass="el"href="cbrt_8c_source.html">cbrt.c</a>.</p>
<p>References <aclass="el"href="cbrt_8c_source.html#l00047">B1</a>, <aclass="el"href="cbrt_8c_source.html#l00048">B2</a>, <aclass="el"href="cbrt_8c_source.html#l00051">C</a>, <aclass="el"href="cbrt_8c_source.html#l00052">D</a>, <aclass="el"href="cbrt_8c_source.html#l00053">E</a>, <aclass="el"href="cbrt_8c_source.html#l00054">F</a>, and <aclass="el"href="cbrt_8c_source.html#l00055">G</a>.</p>
<divclass="fragment"><divclass="line"><aname="l00068"></a><spanclass="lineno"> 68</span> {</div><divclass="line"><aname="l00069"></a><spanclass="lineno"> 69</span> <aclass="code"href="real_2prim_8h.html#ae91287c8a5f73a8a22a100f50dc4de77">sword</a> hx, lx, ht;</div><divclass="line"><aname="l00070"></a><spanclass="lineno"> 70</span> <spanclass="keywordtype">double</span> r,s,t=0.0,w;</div><divclass="line"><aname="l00071"></a><spanclass="lineno"> 71</span> <aclass="code"href="real_2prim_8h.html#a6e60fe0e0f9f8801507e15fe2d893751">uword</a> sign;</div><divclass="line"><aname="l00072"></a><spanclass="lineno"> 72</span> </div><divclass="line"><aname="l00073"></a><spanclass="lineno"> 73</span> <aclass="code"href="real_2prim_8h.html#ae62ee08d06ab4cc06d61dc1246b73195">GET_HIGH_WORD</a>(hx,x); <spanclass="comment">/* high word of x */</span></div><divclass="line"><aname="l00074"></a><spanclass="lineno"> 74</span>  sign=hx&0x80000000; <spanclass="comment">/* sign= sign(x) */</span></div><divclass="line"><aname="l00075"></a><spanclass="lineno"> 75</span>  hx ^=sign;</div><divclass="line"><aname="l00076"></a><spanclass="lineno"> 76</span> <spanclass="keywordflow">if</span>(hx>=0x7ff00000) <spanclass="keywordflow">return</span>(x+x); <spanclass="comment">/* cbrt(NaN,INF) is itself */</span></div><divclass="line"><aname="l00077"></a><spanclass="lineno"> 77</span> <aclass="code"href="real_2prim_8h.html#adee023704c856ea8f310e8e3fd765a22">GET_LOW_WORD</a>(lx, x);</div><divclass="line"><aname="l00078"></a><spanclass="lineno"> 78</span> <spanclass="keywordflow">if</span>((hx|lx)==0)</div><divclass="line"><aname="l00079"></a><spanclass="lineno"> 79</span> <spanclass="keywordflow">return</span>(x); <spanclass="comment">/* cbrt(0) is itself */</span></div><divclass="line"><aname="l00080"></a><spanclass="lineno"> 80</span> </div><divclass="line"><aname="l00081"></a><spanclass="lineno"> 81</span> <aclass="code"href="real_2prim_8h.html#a6ca54776127e20149f84c290bf52f89e">SET_HIGH_WORD</a>(x,hx); <spanclass="comment">/* x <- |x| */</span></div><divclass="line"><aname="l00082"></a><spanclass="lineno"> 82</span> <spanclass="comment">/* rough cbrt to 5 bits */</span></div><divclass="line"><aname="l00083"></a><spanclass="lineno"> 83</span> <spanclass="keywordflow">if</span>(hx<0x00100000) <spanclass="comment">/* subnormal number */</span></div><divclass="line"><aname="l00084"></a><spanclass="lineno"> 84</span>  {</div><divclass="line"><aname="l00085"></a><spanclass="lineno"> 85</span> <aclass="code"href="real_2prim_8h.html#a6ca54776127e20149f84c290bf52f89e">SET_HIGH_WORD</a>(t,0x43500000); <spanclass="comment">/* set t= 2**54 */</span></div><divclass="line"><aname="l00086"></a><spanclass="lineno"> 86</span>  t*=x;</div><divclass="line"><aname="l00087"></a><spanclass="lineno"> 87</span> <aclass="code"href="real_2prim_8h.html#ae62ee08d06ab4cc06d61dc1246b73195">GET_HIGH_WORD</a>(ht,t);</div><divclass="line"><aname="l00088"></a><spanclass="lineno"> 88</span> <aclass="code"href="real_2prim_8h.html#a6ca54776127e20149f84c290bf52f89e">SET_HIGH_WORD</a>(t,ht/3+<aclass="code"href="cbrt_8c.html#a63d271d6b952319d904e32c7319dbacd">B2</a>);</div><divclass="line"><aname="l00089"></a><spanclass="lineno"> 89</span>  }</div><divclass="line"><aname="l00090"></a><spanclass="lineno"> 90</span> <spanclass="keywordflow">else</span></div><divclass="line"><aname="l00091"></a><spanclass="lineno"> 91</span> <aclass="code"href="real_2prim_8h.html#a6ca54776127e20149f84c290bf52f89e">SET_HIGH_WORD</a>(t,hx/3+<aclass="code"href="cbrt_8c.html#a0340375b1c4fd28d44d3d8f2c21ef4c2">B1</a>);</div><divclass="line"><aname="l00092"></a><spanclass="lineno"> 92</span> </
<divclass="ttc"id="real_2prim_8h_html_ae62ee08d06ab4cc06d61dc1246b73195"><divclass="ttname"><ahref="real_2prim_8h.html#ae62ee08d06ab4cc06d61dc1246b73195">GET_HIGH_WORD</a></div><divclass="ttdeci">#define GET_HIGH_WORD(i, d)</div><divclass="ttdoc">Get the more significant 32 bit int from a double. </div><divclass="ttdef"><b>Definition:</b><ahref="real_2prim_8h_source.html#l00165">prim.h:165</a></div></div>
<divclass="ttc"id="real_2prim_8h_html_adee023704c856ea8f310e8e3fd765a22"><divclass="ttname"><ahref="real_2prim_8h.html#adee023704c856ea8f310e8e3fd765a22">GET_LOW_WORD</a></div><divclass="ttdeci">#define GET_LOW_WORD(i, d)</div><divclass="ttdoc">Get the less significant 32 bit int from a double. </div><divclass="ttdef"><b>Definition:</b><ahref="real_2prim_8h_source.html#l00176">prim.h:176</a></div></div>
<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="real_2prim_8h_html_a6e60fe0e0f9f8801507e15fe2d893751"><divclass="ttname"><ahref="real_2prim_8h.html#a6e60fe0e0f9f8801507e15fe2d893751">uword</a></div><divclass="ttdeci">unsigned int uword</div><divclass="ttdoc">32 bit unsigned integer. </div><divclass="ttdef"><b>Definition:</b><ahref="real_2prim_8h_source.html#l00101">prim.h:101</a></div></div>
<divclass="ttc"id="real_2prim_8h_html_af4776e0b45c17da39fce08bc7b211a03"><divclass="ttname"><ahref="real_2prim_8h.html#af4776e0b45c17da39fce08bc7b211a03">SET_LOW_WORD</a></div><divclass="ttdeci">#define SET_LOW_WORD(d, v)</div><divclass="ttdoc">Set the less significant 32 bits of a double from an int. </div><divclass="ttdef"><b>Definition:</b><ahref="real_2prim_8h_source.html#l00211">prim.h:211</a></div></div>
<divclass="ttc"id="real_2prim_8h_html_a6ca54776127e20149f84c290bf52f89e"><divclass="ttname"><ahref="real_2prim_8h.html#a6ca54776127e20149f84c290bf52f89e">SET_HIGH_WORD</a></div><divclass="ttdeci">#define SET_HIGH_WORD(d, v)</div><divclass="ttdoc">Set the more significant 32 bits of a double from an int. </div><divclass="ttdef"><b>Definition:</b><ahref="real_2prim_8h_source.html#l00199">prim.h:199</a></div></div>