<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `/Users/erlendbasso/.cargo/registry/src/github.com-1ecc6299db9ec823/libm-0.2.6/src/math/rem_pio2_large.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>rem_pio2_large.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../../static.files/rustdoc-6827029ac823cab7.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../../static.files/ayu-8af5e100b21cd173.css"><script id="default-settings" ></script><script src="../../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../../static.files/source-script-5cf2e01a42cc9858.js"></script><script defer src="../../../source-files.js"></script><script defer src="../../../static.files/main-c55e1eb52e1886b4.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc source"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"></nav><main><div class="width-limiter"><nav class="sub"><a class="sub-logo-container" href="../../../libm/index.html"><img class="rust-logo" src="../../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="example-wrap"><pre class="src-line-numbers"><a href="#1" id="1">1</a>
<a href="#2" id="2">2</a>
<a href="#3" id="3">3</a>
<a href="#4" id="4">4</a>
<a href="#5" id="5">5</a>
<a href="#6" id="6">6</a>
<a href="#7" id="7">7</a>
<a href="#8" id="8">8</a>
<a href="#9" id="9">9</a>
<a href="#10" id="10">10</a>
<a href="#11" id="11">11</a>
<a href="#12" id="12">12</a>
<a href="#13" id="13">13</a>
<a href="#14" id="14">14</a>
<a href="#15" id="15">15</a>
<a href="#16" id="16">16</a>
<a href="#17" id="17">17</a>
<a href="#18" id="18">18</a>
<a href="#19" id="19">19</a>
<a href="#20" id="20">20</a>
<a href="#21" id="21">21</a>
<a href="#22" id="22">22</a>
<a href="#23" id="23">23</a>
<a href="#24" id="24">24</a>
<a href="#25" id="25">25</a>
<a href="#26" id="26">26</a>
<a href="#27" id="27">27</a>
<a href="#28" id="28">28</a>
<a href="#29" id="29">29</a>
<a href="#30" id="30">30</a>
<a href="#31" id="31">31</a>
<a href="#32" id="32">32</a>
<a href="#33" id="33">33</a>
<a href="#34" id="34">34</a>
<a href="#35" id="35">35</a>
<a href="#36" id="36">36</a>
<a href="#37" id="37">37</a>
<a href="#38" id="38">38</a>
<a href="#39" id="39">39</a>
<a href="#40" id="40">40</a>
<a href="#41" id="41">41</a>
<a href="#42" id="42">42</a>
<a href="#43" id="43">43</a>
<a href="#44" id="44">44</a>
<a href="#45" id="45">45</a>
<a href="#46" id="46">46</a>
<a href="#47" id="47">47</a>
<a href="#48" id="48">48</a>
<a href="#49" id="49">49</a>
<a href="#50" id="50">50</a>
<a href="#51" id="51">51</a>
<a href="#52" id="52">52</a>
<a href="#53" id="53">53</a>
<a href="#54" id="54">54</a>
<a href="#55" id="55">55</a>
<a href="#56" id="56">56</a>
<a href="#57" id="57">57</a>
<a href="#58" id="58">58</a>
<a href="#59" id="59">59</a>
<a href="#60" id="60">60</a>
<a href="#61" id="61">61</a>
<a href="#62" id="62">62</a>
<a href="#63" id="63">63</a>
<a href="#64" id="64">64</a>
<a href="#65" id="65">65</a>
<a href="#66" id="66">66</a>
<a href="#67" id="67">67</a>
<a href="#68" id="68">68</a>
<a href="#69" id="69">69</a>
<a href="#70" id="70">70</a>
<a href="#71" id="71">71</a>
<a href="#72" id="72">72</a>
<a href="#73" id="73">73</a>
<a href="#74" id="74">74</a>
<a href="#75" id="75">75</a>
<a href="#76" id="76">76</a>
<a href="#77" id="77">77</a>
<a href="#78" id="78">78</a>
<a href="#79" id="79">79</a>
<a href="#80" id="80">80</a>
<a href="#81" id="81">81</a>
<a href="#82" id="82">82</a>
<a href="#83" id="83">83</a>
<a href="#84" id="84">84</a>
<a href="#85" id="85">85</a>
<a href="#86" id="86">86</a>
<a href="#87" id="87">87</a>
<a href="#88" id="88">88</a>
<a href="#89" id="89">89</a>
<a href="#90" id="90">90</a>
<a href="#91" id="91">91</a>
<a href="#92" id="92">92</a>
<a href="#93" id="93">93</a>
<a href="#94" id="94">94</a>
<a href="#95" id="95">95</a>
<a href="#96" id="96">96</a>
<a href="#97" id="97">97</a>
<a href="#98" id="98">98</a>
<a href="#99" id="99">99</a>
<a href="#100" id="100">100</a>
<a href="#101" id="101">101</a>
<a href="#102" id="102">102</a>
<a href="#103" id="103">103</a>
<a href="#104" id="104">104</a>
<a href="#105" id="105">105</a>
<a href="#106" id="106">106</a>
<a href="#107" id="107">107</a>
<a href="#108" id="108">108</a>
<a href="#109" id="109">109</a>
<a href="#110" id="110">110</a>
<a href="#111" id="111">111</a>
<a href="#112" id="112">112</a>
<a href="#113" id="113">113</a>
<a href="#114" id="114">114</a>
<a href="#115" id="115">115</a>
<a href="#116" id="116">116</a>
<a href="#117" id="117">117</a>
<a href="#118" id="118">118</a>
<a href="#119" id="119">119</a>
<a href="#120" id="120">120</a>
<a href="#121" id="121">121</a>
<a href="#122" id="122">122</a>
<a href="#123" id="123">123</a>
<a href="#124" id="124">124</a>
<a href="#125" id="125">125</a>
<a href="#126" id="126">126</a>
<a href="#127" id="127">127</a>
<a href="#128" id="128">128</a>
<a href="#129" id="129">129</a>
<a href="#130" id="130">130</a>
<a href="#131" id="131">131</a>
<a href="#132" id="132">132</a>
<a href="#133" id="133">133</a>
<a href="#134" id="134">134</a>
<a href="#135" id="135">135</a>
<a href="#136" id="136">136</a>
<a href="#137" id="137">137</a>
<a href="#138" id="138">138</a>
<a href="#139" id="139">139</a>
<a href="#140" id="140">140</a>
<a href="#141" id="141">141</a>
<a href="#142" id="142">142</a>
<a href="#143" id="143">143</a>
<a href="#144" id="144">144</a>
<a href="#145" id="145">145</a>
<a href="#146" id="146">146</a>
<a href="#147" id="147">147</a>
<a href="#148" id="148">148</a>
<a href="#149" id="149">149</a>
<a href="#150" id="150">150</a>
<a href="#151" id="151">151</a>
<a href="#152" id="152">152</a>
<a href="#153" id="153">153</a>
<a href="#154" id="154">154</a>
<a href="#155" id="155">155</a>
<a href="#156" id="156">156</a>
<a href="#157" id="157">157</a>
<a href="#158" id="158">158</a>
<a href="#159" id="159">159</a>
<a href="#160" id="160">160</a>
<a href="#161" id="161">161</a>
<a href="#162" id="162">162</a>
<a href="#163" id="163">163</a>
<a href="#164" id="164">164</a>
<a href="#165" id="165">165</a>
<a href="#166" id="166">166</a>
<a href="#167" id="167">167</a>
<a href="#168" id="168">168</a>
<a href="#169" id="169">169</a>
<a href="#170" id="170">170</a>
<a href="#171" id="171">171</a>
<a href="#172" id="172">172</a>
<a href="#173" id="173">173</a>
<a href="#174" id="174">174</a>
<a href="#175" id="175">175</a>
<a href="#176" id="176">176</a>
<a href="#177" id="177">177</a>
<a href="#178" id="178">178</a>
<a href="#179" id="179">179</a>
<a href="#180" id="180">180</a>
<a href="#181" id="181">181</a>
<a href="#182" id="182">182</a>
<a href="#183" id="183">183</a>
<a href="#184" id="184">184</a>
<a href="#185" id="185">185</a>
<a href="#186" id="186">186</a>
<a href="#187" id="187">187</a>
<a href="#188" id="188">188</a>
<a href="#189" id="189">189</a>
<a href="#190" id="190">190</a>
<a href="#191" id="191">191</a>
<a href="#192" id="192">192</a>
<a href="#193" id="193">193</a>
<a href="#194" id="194">194</a>
<a href="#195" id="195">195</a>
<a href="#196" id="196">196</a>
<a href="#197" id="197">197</a>
<a href="#198" id="198">198</a>
<a href="#199" id="199">199</a>
<a href="#200" id="200">200</a>
<a href="#201" id="201">201</a>
<a href="#202" id="202">202</a>
<a href="#203" id="203">203</a>
<a href="#204" id="204">204</a>
<a href="#205" id="205">205</a>
<a href="#206" id="206">206</a>
<a href="#207" id="207">207</a>
<a href="#208" id="208">208</a>
<a href="#209" id="209">209</a>
<a href="#210" id="210">210</a>
<a href="#211" id="211">211</a>
<a href="#212" id="212">212</a>
<a href="#213" id="213">213</a>
<a href="#214" id="214">214</a>
<a href="#215" id="215">215</a>
<a href="#216" id="216">216</a>
<a href="#217" id="217">217</a>
<a href="#218" id="218">218</a>
<a href="#219" id="219">219</a>
<a href="#220" id="220">220</a>
<a href="#221" id="221">221</a>
<a href="#222" id="222">222</a>
<a href="#223" id="223">223</a>
<a href="#224" id="224">224</a>
<a href="#225" id="225">225</a>
<a href="#226" id="226">226</a>
<a href="#227" id="227">227</a>
<a href="#228" id="228">228</a>
<a href="#229" id="229">229</a>
<a href="#230" id="230">230</a>
<a href="#231" id="231">231</a>
<a href="#232" id="232">232</a>
<a href="#233" id="233">233</a>
<a href="#234" id="234">234</a>
<a href="#235" id="235">235</a>
<a href="#236" id="236">236</a>
<a href="#237" id="237">237</a>
<a href="#238" id="238">238</a>
<a href="#239" id="239">239</a>
<a href="#240" id="240">240</a>
<a href="#241" id="241">241</a>
<a href="#242" id="242">242</a>
<a href="#243" id="243">243</a>
<a href="#244" id="244">244</a>
<a href="#245" id="245">245</a>
<a href="#246" id="246">246</a>
<a href="#247" id="247">247</a>
<a href="#248" id="248">248</a>
<a href="#249" id="249">249</a>
<a href="#250" id="250">250</a>
<a href="#251" id="251">251</a>
<a href="#252" id="252">252</a>
<a href="#253" id="253">253</a>
<a href="#254" id="254">254</a>
<a href="#255" id="255">255</a>
<a href="#256" id="256">256</a>
<a href="#257" id="257">257</a>
<a href="#258" id="258">258</a>
<a href="#259" id="259">259</a>
<a href="#260" id="260">260</a>
<a href="#261" id="261">261</a>
<a href="#262" id="262">262</a>
<a href="#263" id="263">263</a>
<a href="#264" id="264">264</a>
<a href="#265" id="265">265</a>
<a href="#266" id="266">266</a>
<a href="#267" id="267">267</a>
<a href="#268" id="268">268</a>
<a href="#269" id="269">269</a>
<a href="#270" id="270">270</a>
<a href="#271" id="271">271</a>
<a href="#272" id="272">272</a>
<a href="#273" id="273">273</a>
<a href="#274" id="274">274</a>
<a href="#275" id="275">275</a>
<a href="#276" id="276">276</a>
<a href="#277" id="277">277</a>
<a href="#278" id="278">278</a>
<a href="#279" id="279">279</a>
<a href="#280" id="280">280</a>
<a href="#281" id="281">281</a>
<a href="#282" id="282">282</a>
<a href="#283" id="283">283</a>
<a href="#284" id="284">284</a>
<a href="#285" id="285">285</a>
<a href="#286" id="286">286</a>
<a href="#287" id="287">287</a>
<a href="#288" id="288">288</a>
<a href="#289" id="289">289</a>
<a href="#290" id="290">290</a>
<a href="#291" id="291">291</a>
<a href="#292" id="292">292</a>
<a href="#293" id="293">293</a>
<a href="#294" id="294">294</a>
<a href="#295" id="295">295</a>
<a href="#296" id="296">296</a>
<a href="#297" id="297">297</a>
<a href="#298" id="298">298</a>
<a href="#299" id="299">299</a>
<a href="#300" id="300">300</a>
<a href="#301" id="301">301</a>
<a href="#302" id="302">302</a>
<a href="#303" id="303">303</a>
<a href="#304" id="304">304</a>
<a href="#305" id="305">305</a>
<a href="#306" id="306">306</a>
<a href="#307" id="307">307</a>
<a href="#308" id="308">308</a>
<a href="#309" id="309">309</a>
<a href="#310" id="310">310</a>
<a href="#311" id="311">311</a>
<a href="#312" id="312">312</a>
<a href="#313" id="313">313</a>
<a href="#314" id="314">314</a>
<a href="#315" id="315">315</a>
<a href="#316" id="316">316</a>
<a href="#317" id="317">317</a>
<a href="#318" id="318">318</a>
<a href="#319" id="319">319</a>
<a href="#320" id="320">320</a>
<a href="#321" id="321">321</a>
<a href="#322" id="322">322</a>
<a href="#323" id="323">323</a>
<a href="#324" id="324">324</a>
<a href="#325" id="325">325</a>
<a href="#326" id="326">326</a>
<a href="#327" id="327">327</a>
<a href="#328" id="328">328</a>
<a href="#329" id="329">329</a>
<a href="#330" id="330">330</a>
<a href="#331" id="331">331</a>
<a href="#332" id="332">332</a>
<a href="#333" id="333">333</a>
<a href="#334" id="334">334</a>
<a href="#335" id="335">335</a>
<a href="#336" id="336">336</a>
<a href="#337" id="337">337</a>
<a href="#338" id="338">338</a>
<a href="#339" id="339">339</a>
<a href="#340" id="340">340</a>
<a href="#341" id="341">341</a>
<a href="#342" id="342">342</a>
<a href="#343" id="343">343</a>
<a href="#344" id="344">344</a>
<a href="#345" id="345">345</a>
<a href="#346" id="346">346</a>
<a href="#347" id="347">347</a>
<a href="#348" id="348">348</a>
<a href="#349" id="349">349</a>
<a href="#350" id="350">350</a>
<a href="#351" id="351">351</a>
<a href="#352" id="352">352</a>
<a href="#353" id="353">353</a>
<a href="#354" id="354">354</a>
<a href="#355" id="355">355</a>
<a href="#356" id="356">356</a>
<a href="#357" id="357">357</a>
<a href="#358" id="358">358</a>
<a href="#359" id="359">359</a>
<a href="#360" id="360">360</a>
<a href="#361" id="361">361</a>
<a href="#362" id="362">362</a>
<a href="#363" id="363">363</a>
<a href="#364" id="364">364</a>
<a href="#365" id="365">365</a>
<a href="#366" id="366">366</a>
<a href="#367" id="367">367</a>
<a href="#368" id="368">368</a>
<a href="#369" id="369">369</a>
<a href="#370" id="370">370</a>
<a href="#371" id="371">371</a>
<a href="#372" id="372">372</a>
<a href="#373" id="373">373</a>
<a href="#374" id="374">374</a>
<a href="#375" id="375">375</a>
<a href="#376" id="376">376</a>
<a href="#377" id="377">377</a>
<a href="#378" id="378">378</a>
<a href="#379" id="379">379</a>
<a href="#380" id="380">380</a>
<a href="#381" id="381">381</a>
<a href="#382" id="382">382</a>
<a href="#383" id="383">383</a>
<a href="#384" id="384">384</a>
<a href="#385" id="385">385</a>
<a href="#386" id="386">386</a>
<a href="#387" id="387">387</a>
<a href="#388" id="388">388</a>
<a href="#389" id="389">389</a>
<a href="#390" id="390">390</a>
<a href="#391" id="391">391</a>
<a href="#392" id="392">392</a>
<a href="#393" id="393">393</a>
<a href="#394" id="394">394</a>
<a href="#395" id="395">395</a>
<a href="#396" id="396">396</a>
<a href="#397" id="397">397</a>
<a href="#398" id="398">398</a>
<a href="#399" id="399">399</a>
<a href="#400" id="400">400</a>
<a href="#401" id="401">401</a>
<a href="#402" id="402">402</a>
<a href="#403" id="403">403</a>
<a href="#404" id="404">404</a>
<a href="#405" id="405">405</a>
<a href="#406" id="406">406</a>
<a href="#407" id="407">407</a>
<a href="#408" id="408">408</a>
<a href="#409" id="409">409</a>
<a href="#410" id="410">410</a>
<a href="#411" id="411">411</a>
<a href="#412" id="412">412</a>
<a href="#413" id="413">413</a>
<a href="#414" id="414">414</a>
<a href="#415" id="415">415</a>
<a href="#416" id="416">416</a>
<a href="#417" id="417">417</a>
<a href="#418" id="418">418</a>
<a href="#419" id="419">419</a>
<a href="#420" id="420">420</a>
<a href="#421" id="421">421</a>
<a href="#422" id="422">422</a>
<a href="#423" id="423">423</a>
<a href="#424" id="424">424</a>
<a href="#425" id="425">425</a>
<a href="#426" id="426">426</a>
<a href="#427" id="427">427</a>
<a href="#428" id="428">428</a>
<a href="#429" id="429">429</a>
<a href="#430" id="430">430</a>
<a href="#431" id="431">431</a>
<a href="#432" id="432">432</a>
<a href="#433" id="433">433</a>
<a href="#434" id="434">434</a>
<a href="#435" id="435">435</a>
<a href="#436" id="436">436</a>
<a href="#437" id="437">437</a>
<a href="#438" id="438">438</a>
<a href="#439" id="439">439</a>
<a href="#440" id="440">440</a>
<a href="#441" id="441">441</a>
<a href="#442" id="442">442</a>
<a href="#443" id="443">443</a>
<a href="#444" id="444">444</a>
<a href="#445" id="445">445</a>
<a href="#446" id="446">446</a>
<a href="#447" id="447">447</a>
<a href="#448" id="448">448</a>
<a href="#449" id="449">449</a>
<a href="#450" id="450">450</a>
<a href="#451" id="451">451</a>
<a href="#452" id="452">452</a>
<a href="#453" id="453">453</a>
<a href="#454" id="454">454</a>
<a href="#455" id="455">455</a>
<a href="#456" id="456">456</a>
<a href="#457" id="457">457</a>
<a href="#458" id="458">458</a>
<a href="#459" id="459">459</a>
<a href="#460" id="460">460</a>
<a href="#461" id="461">461</a>
<a href="#462" id="462">462</a>
<a href="#463" id="463">463</a>
<a href="#464" id="464">464</a>
<a href="#465" id="465">465</a>
<a href="#466" id="466">466</a>
<a href="#467" id="467">467</a>
<a href="#468" id="468">468</a>
<a href="#469" id="469">469</a>
<a href="#470" id="470">470</a>
</pre><pre class="rust"><code><span class="attr">#![allow(unused_unsafe)]
</span><span class="comment">/* origin: FreeBSD /usr/src/lib/msun/src/k_rem_pio2.c */
/*
* ====================================================
* 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.
* ====================================================
*/
</span><span class="kw">use </span><span class="kw">super</span>::floor;
<span class="kw">use </span><span class="kw">super</span>::scalbn;
<span class="comment">// initial value for jk
</span><span class="kw">const </span>INIT_JK: [usize; <span class="number">4</span>] = [<span class="number">3</span>, <span class="number">4</span>, <span class="number">4</span>, <span class="number">6</span>];
<span class="comment">// Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi
//
// integer array, contains the (24*i)-th to (24*i+23)-th
// bit of 2/pi after binary point. The corresponding
// floating value is
//
// ipio2[i] * 2^(-24(i+1)).
//
// NB: This table must have at least (e0-3)/24 + jk terms.
// For quad precision (e0 <= 16360, jk = 6), this is 686.
</span><span class="attr">#[cfg(any(target_pointer_width = <span class="string">"32"</span>, target_pointer_width = <span class="string">"16"</span>))]
</span><span class="kw">const </span>IPIO2: [i32; <span class="number">66</span>] = [
<span class="number">0xA2F983</span>, <span class="number">0x6E4E44</span>, <span class="number">0x1529FC</span>, <span class="number">0x2757D1</span>, <span class="number">0xF534DD</span>, <span class="number">0xC0DB62</span>, <span class="number">0x95993C</span>, <span class="number">0x439041</span>, <span class="number">0xFE5163</span>,
<span class="number">0xABDEBB</span>, <span class="number">0xC561B7</span>, <span class="number">0x246E3A</span>, <span class="number">0x424DD2</span>, <span class="number">0xE00649</span>, <span class="number">0x2EEA09</span>, <span class="number">0xD1921C</span>, <span class="number">0xFE1DEB</span>, <span class="number">0x1CB129</span>,
<span class="number">0xA73EE8</span>, <span class="number">0x8235F5</span>, <span class="number">0x2EBB44</span>, <span class="number">0x84E99C</span>, <span class="number">0x7026B4</span>, <span class="number">0x5F7E41</span>, <span class="number">0x3991D6</span>, <span class="number">0x398353</span>, <span class="number">0x39F49C</span>,
<span class="number">0x845F8B</span>, <span class="number">0xBDF928</span>, <span class="number">0x3B1FF8</span>, <span class="number">0x97FFDE</span>, <span class="number">0x05980F</span>, <span class="number">0xEF2F11</span>, <span class="number">0x8B5A0A</span>, <span class="number">0x6D1F6D</span>, <span class="number">0x367ECF</span>,
<span class="number">0x27CB09</span>, <span class="number">0xB74F46</span>, <span class="number">0x3F669E</span>, <span class="number">0x5FEA2D</span>, <span class="number">0x7527BA</span>, <span class="number">0xC7EBE5</span>, <span class="number">0xF17B3D</span>, <span class="number">0x0739F7</span>, <span class="number">0x8A5292</span>,
<span class="number">0xEA6BFB</span>, <span class="number">0x5FB11F</span>, <span class="number">0x8D5D08</span>, <span class="number">0x560330</span>, <span class="number">0x46FC7B</span>, <span class="number">0x6BABF0</span>, <span class="number">0xCFBC20</span>, <span class="number">0x9AF436</span>, <span class="number">0x1DA9E3</span>,
<span class="number">0x91615E</span>, <span class="number">0xE61B08</span>, <span class="number">0x659985</span>, <span class="number">0x5F14A0</span>, <span class="number">0x68408D</span>, <span class="number">0xFFD880</span>, <span class="number">0x4D7327</span>, <span class="number">0x310606</span>, <span class="number">0x1556CA</span>,
<span class="number">0x73A8C9</span>, <span class="number">0x60E27B</span>, <span class="number">0xC08C6B</span>,
];
<span class="attr">#[cfg(target_pointer_width = <span class="string">"64"</span>)]
</span><span class="kw">const </span>IPIO2: [i32; <span class="number">690</span>] = [
<span class="number">0xA2F983</span>, <span class="number">0x6E4E44</span>, <span class="number">0x1529FC</span>, <span class="number">0x2757D1</span>, <span class="number">0xF534DD</span>, <span class="number">0xC0DB62</span>, <span class="number">0x95993C</span>, <span class="number">0x439041</span>, <span class="number">0xFE5163</span>,
<span class="number">0xABDEBB</span>, <span class="number">0xC561B7</span>, <span class="number">0x246E3A</span>, <span class="number">0x424DD2</span>, <span class="number">0xE00649</span>, <span class="number">0x2EEA09</span>, <span class="number">0xD1921C</span>, <span class="number">0xFE1DEB</span>, <span class="number">0x1CB129</span>,
<span class="number">0xA73EE8</span>, <span class="number">0x8235F5</span>, <span class="number">0x2EBB44</span>, <span class="number">0x84E99C</span>, <span class="number">0x7026B4</span>, <span class="number">0x5F7E41</span>, <span class="number">0x3991D6</span>, <span class="number">0x398353</span>, <span class="number">0x39F49C</span>,
<span class="number">0x845F8B</span>, <span class="number">0xBDF928</span>, <span class="number">0x3B1FF8</span>, <span class="number">0x97FFDE</span>, <span class="number">0x05980F</span>, <span class="number">0xEF2F11</span>, <span class="number">0x8B5A0A</span>, <span class="number">0x6D1F6D</span>, <span class="number">0x367ECF</span>,
<span class="number">0x27CB09</span>, <span class="number">0xB74F46</span>, <span class="number">0x3F669E</span>, <span class="number">0x5FEA2D</span>, <span class="number">0x7527BA</span>, <span class="number">0xC7EBE5</span>, <span class="number">0xF17B3D</span>, <span class="number">0x0739F7</span>, <span class="number">0x8A5292</span>,
<span class="number">0xEA6BFB</span>, <span class="number">0x5FB11F</span>, <span class="number">0x8D5D08</span>, <span class="number">0x560330</span>, <span class="number">0x46FC7B</span>, <span class="number">0x6BABF0</span>, <span class="number">0xCFBC20</span>, <span class="number">0x9AF436</span>, <span class="number">0x1DA9E3</span>,
<span class="number">0x91615E</span>, <span class="number">0xE61B08</span>, <span class="number">0x659985</span>, <span class="number">0x5F14A0</span>, <span class="number">0x68408D</span>, <span class="number">0xFFD880</span>, <span class="number">0x4D7327</span>, <span class="number">0x310606</span>, <span class="number">0x1556CA</span>,
<span class="number">0x73A8C9</span>, <span class="number">0x60E27B</span>, <span class="number">0xC08C6B</span>, <span class="number">0x47C419</span>, <span class="number">0xC367CD</span>, <span class="number">0xDCE809</span>, <span class="number">0x2A8359</span>, <span class="number">0xC4768B</span>, <span class="number">0x961CA6</span>,
<span class="number">0xDDAF44</span>, <span class="number">0xD15719</span>, <span class="number">0x053EA5</span>, <span class="number">0xFF0705</span>, <span class="number">0x3F7E33</span>, <span class="number">0xE832C2</span>, <span class="number">0xDE4F98</span>, <span class="number">0x327DBB</span>, <span class="number">0xC33D26</span>,
<span class="number">0xEF6B1E</span>, <span class="number">0x5EF89F</span>, <span class="number">0x3A1F35</span>, <span class="number">0xCAF27F</span>, <span class="number">0x1D87F1</span>, <span class="number">0x21907C</span>, <span class="number">0x7C246A</span>, <span class="number">0xFA6ED5</span>, <span class="number">0x772D30</span>,
<span class="number">0x433B15</span>, <span class="number">0xC614B5</span>, <span class="number">0x9D19C3</span>, <span class="number">0xC2C4AD</span>, <span class="number">0x414D2C</span>, <span class="number">0x5D000C</span>, <span class="number">0x467D86</span>, <span class="number">0x2D71E3</span>, <span class="number">0x9AC69B</span>,
<span class="number">0x006233</span>, <span class="number">0x7CD2B4</span>, <span class="number">0x97A7B4</span>, <span class="number">0xD55537</span>, <span class="number">0xF63ED7</span>, <span class="number">0x1810A3</span>, <span class="number">0xFC764D</span>, <span class="number">0x2A9D64</span>, <span class="number">0xABD770</span>,
<span class="number">0xF87C63</span>, <span class="number">0x57B07A</span>, <span class="number">0xE71517</span>, <span class="number">0x5649C0</span>, <span class="number">0xD9D63B</span>, <span class="number">0x3884A7</span>, <span class="number">0xCB2324</span>, <span class="number">0x778AD6</span>, <span class="number">0x23545A</span>,
<span class="number">0xB91F00</span>, <span class="number">0x1B0AF1</span>, <span class="number">0xDFCE19</span>, <span class="number">0xFF319F</span>, <span class="number">0x6A1E66</span>, <span class="number">0x615799</span>, <span class="number">0x47FBAC</span>, <span class="number">0xD87F7E</span>, <span class="number">0xB76522</span>,
<span class="number">0x89E832</span>, <span class="number">0x60BFE6</span>, <span class="number">0xCDC4EF</span>, <span class="number">0x09366C</span>, <span class="number">0xD43F5D</span>, <span class="number">0xD7DE16</span>, <span class="number">0xDE3B58</span>, <span class="number">0x929BDE</span>, <span class="number">0x2822D2</span>,
<span class="number">0xE88628</span>, <span class="number">0x4D58E2</span>, <span class="number">0x32CAC6</span>, <span class="number">0x16E308</span>, <span class="number">0xCB7DE0</span>, <span class="number">0x50C017</span>, <span class="number">0xA71DF3</span>, <span class="number">0x5BE018</span>, <span class="number">0x34132E</span>,
<span class="number">0x621283</span>, <span class="number">0x014883</span>, <span class="number">0x5B8EF5</span>, <span class="number">0x7FB0AD</span>, <span class="number">0xF2E91E</span>, <span class="number">0x434A48</span>, <span class="number">0xD36710</span>, <span class="number">0xD8DDAA</span>, <span class="number">0x425FAE</span>,
<span class="number">0xCE616A</span>, <span class="number">0xA4280A</span>, <span class="number">0xB499D3</span>, <span class="number">0xF2A606</span>, <span class="number">0x7F775C</span>, <span class="number">0x83C2A3</span>, <span class="number">0x883C61</span>, <span class="number">0x78738A</span>, <span class="number">0x5A8CAF</span>,
<span class="number">0xBDD76F</span>, <span class="number">0x63A62D</span>, <span class="number">0xCBBFF4</span>, <span class="number">0xEF818D</span>, <span class="number">0x67C126</span>, <span class="number">0x45CA55</span>, <span class="number">0x36D9CA</span>, <span class="number">0xD2A828</span>, <span class="number">0x8D61C2</span>,
<span class="number">0x77C912</span>, <span class="number">0x142604</span>, <span class="number">0x9B4612</span>, <span class="number">0xC459C4</span>, <span class="number">0x44C5C8</span>, <span class="number">0x91B24D</span>, <span class="number">0xF31700</span>, <span class="number">0xAD43D4</span>, <span class="number">0xE54929</span>,
<span class="number">0x10D5FD</span>, <span class="number">0xFCBE00</span>, <span class="number">0xCC941E</span>, <span class="number">0xEECE70</span>, <span class="number">0xF53E13</span>, <span class="number">0x80F1EC</span>, <span class="number">0xC3E7B3</span>, <span class="number">0x28F8C7</span>, <span class="number">0x940593</span>,
<span class="number">0x3E71C1</span>, <span class="number">0xB3092E</span>, <span class="number">0xF3450B</span>, <span class="number">0x9C1288</span>, <span class="number">0x7B20AB</span>, <span class="number">0x9FB52E</span>, <span class="number">0xC29247</span>, <span class="number">0x2F327B</span>, <span class="number">0x6D550C</span>,
<span class="number">0x90A772</span>, <span class="number">0x1FE76B</span>, <span class="number">0x96CB31</span>, <span class="number">0x4A1679</span>, <span class="number">0xE27941</span>, <span class="number">0x89DFF4</span>, <span class="number">0x9794E8</span>, <span class="number">0x84E6E2</span>, <span class="number">0x973199</span>,
<span class="number">0x6BED88</span>, <span class="number">0x365F5F</span>, <span class="number">0x0EFDBB</span>, <span class="number">0xB49A48</span>, <span class="number">0x6CA467</span>, <span class="number">0x427271</span>, <span class="number">0x325D8D</span>, <span class="number">0xB8159F</span>, <span class="number">0x09E5BC</span>,
<span class="number">0x25318D</span>, <span class="number">0x3974F7</span>, <span class="number">0x1C0530</span>, <span class="number">0x010C0D</span>, <span class="number">0x68084B</span>, <span class="number">0x58EE2C</span>, <span class="number">0x90AA47</span>, <span class="number">0x02E774</span>, <span class="number">0x24D6BD</span>,
<span class="number">0xA67DF7</span>, <span class="number">0x72486E</span>, <span class="number">0xEF169F</span>, <span class="number">0xA6948E</span>, <span class="number">0xF691B4</span>, <span class="number">0x5153D1</span>, <span class="number">0xF20ACF</span>, <span class="number">0x339820</span>, <span class="number">0x7E4BF5</span>,
<span class="number">0x6863B2</span>, <span class="number">0x5F3EDD</span>, <span class="number">0x035D40</span>, <span class="number">0x7F8985</span>, <span class="number">0x295255</span>, <span class="number">0xC06437</span>, <span class="number">0x10D86D</span>, <span class="number">0x324832</span>, <span class="number">0x754C5B</span>,
<span class="number">0xD4714E</span>, <span class="number">0x6E5445</span>, <span class="number">0xC1090B</span>, <span class="number">0x69F52A</span>, <span class="number">0xD56614</span>, <span class="number">0x9D0727</span>, <span class="number">0x50045D</span>, <span class="number">0xDB3BB4</span>, <span class="number">0xC576EA</span>,
<span class="number">0x17F987</span>, <span class="number">0x7D6B49</span>, <span class="number">0xBA271D</span>, <span class="number">0x296996</span>, <span class="number">0xACCCC6</span>, <span class="number">0x5414AD</span>, <span class="number">0x6AE290</span>, <span class="number">0x89D988</span>, <span class="number">0x50722C</span>,
<span class="number">0xBEA404</span>, <span class="number">0x940777</span>, <span class="number">0x7030F3</span>, <span class="number">0x27FC00</span>, <span class="number">0xA871EA</span>, <span class="number">0x49C266</span>, <span class="number">0x3DE064</span>, <span class="number">0x83DD97</span>, <span class="number">0x973FA3</span>,
<span class="number">0xFD9443</span>, <span class="number">0x8C860D</span>, <span class="number">0xDE4131</span>, <span class="number">0x9D3992</span>, <span class="number">0x8C70DD</span>, <span class="number">0xE7B717</span>, <span class="number">0x3BDF08</span>, <span class="number">0x2B3715</span>, <span class="number">0xA0805C</span>,
<span class="number">0x93805A</span>, <span class="number">0x921110</span>, <span class="number">0xD8E80F</span>, <span class="number">0xAF806C</span>, <span class="number">0x4BFFDB</span>, <span class="number">0x0F9038</span>, <span class="number">0x761859</span>, <span class="number">0x15A562</span>, <span class="number">0xBBCB61</span>,
<span class="number">0xB989C7</span>, <span class="number">0xBD4010</span>, <span class="number">0x04F2D2</span>, <span class="number">0x277549</span>, <span class="number">0xF6B6EB</span>, <span class="number">0xBB22DB</span>, <span class="number">0xAA140A</span>, <span class="number">0x2F2689</span>, <span class="number">0x768364</span>,
<span class="number">0x333B09</span>, <span class="number">0x1A940E</span>, <span class="number">0xAA3A51</span>, <span class="number">0xC2A31D</span>, <span class="number">0xAEEDAF</span>, <span class="number">0x12265C</span>, <span class="number">0x4DC26D</span>, <span class="number">0x9C7A2D</span>, <span class="number">0x9756C0</span>,
<span class="number">0x833F03</span>, <span class="number">0xF6F009</span>, <span class="number">0x8C402B</span>, <span class="number">0x99316D</span>, <span class="number">0x07B439</span>, <span class="number">0x15200C</span>, <span class="number">0x5BC3D8</span>, <span class="number">0xC492F5</span>, <span class="number">0x4BADC6</span>,
<span class="number">0xA5CA4E</span>, <span class="number">0xCD37A7</span>, <span class="number">0x36A9E6</span>, <span class="number">0x9492AB</span>, <span class="number">0x6842DD</span>, <span class="number">0xDE6319</span>, <span class="number">0xEF8C76</span>, <span class="number">0x528B68</span>, <span class="number">0x37DBFC</span>,
<span class="number">0xABA1AE</span>, <span class="number">0x3115DF</span>, <span class="number">0xA1AE00</span>, <span class="number">0xDAFB0C</span>, <span class="number">0x664D64</span>, <span class="number">0xB705ED</span>, <span class="number">0x306529</span>, <span class="number">0xBF5657</span>, <span class="number">0x3AFF47</span>,
<span class="number">0xB9F96A</span>, <span class="number">0xF3BE75</span>, <span class="number">0xDF9328</span>, <span class="number">0x3080AB</span>, <span class="number">0xF68C66</span>, <span class="number">0x15CB04</span>, <span class="number">0x0622FA</span>, <span class="number">0x1DE4D9</span>, <span class="number">0xA4B33D</span>,
<span class="number">0x8F1B57</span>, <span class="number">0x09CD36</span>, <span class="number">0xE9424E</span>, <span class="number">0xA4BE13</span>, <span class="number">0xB52333</span>, <span class="number">0x1AAAF0</span>, <span class="number">0xA8654F</span>, <span class="number">0xA5C1D2</span>, <span class="number">0x0F3F0B</span>,
<span class="number">0xCD785B</span>, <span class="number">0x76F923</span>, <span class="number">0x048B7B</span>, <span class="number">0x721789</span>, <span class="number">0x53A6C6</span>, <span class="number">0xE26E6F</span>, <span class="number">0x00EBEF</span>, <span class="number">0x584A9B</span>, <span class="number">0xB7DAC4</span>,
<span class="number">0xBA66AA</span>, <span class="number">0xCFCF76</span>, <span class="number">0x1D02D1</span>, <span class="number">0x2DF1B1</span>, <span class="number">0xC1998C</span>, <span class="number">0x77ADC3</span>, <span class="number">0xDA4886</span>, <span class="number">0xA05DF7</span>, <span class="number">0xF480C6</span>,
<span class="number">0x2FF0AC</span>, <span class="number">0x9AECDD</span>, <span class="number">0xBC5C3F</span>, <span class="number">0x6DDED0</span>, <span class="number">0x1FC790</span>, <span class="number">0xB6DB2A</span>, <span class="number">0x3A25A3</span>, <span class="number">0x9AAF00</span>, <span class="number">0x9353AD</span>,
<span class="number">0x0457B6</span>, <span class="number">0xB42D29</span>, <span class="number">0x7E804B</span>, <span class="number">0xA707DA</span>, <span class="number">0x0EAA76</span>, <span class="number">0xA1597B</span>, <span class="number">0x2A1216</span>, <span class="number">0x2DB7DC</span>, <span class="number">0xFDE5FA</span>,
<span class="number">0xFEDB89</span>, <span class="number">0xFDBE89</span>, <span class="number">0x6C76E4</span>, <span class="number">0xFCA906</span>, <span class="number">0x70803E</span>, <span class="number">0x156E85</span>, <span class="number">0xFF87FD</span>, <span class="number">0x073E28</span>, <span class="number">0x336761</span>,
<span class="number">0x86182A</span>, <span class="number">0xEABD4D</span>, <span class="number">0xAFE7B3</span>, <span class="number">0x6E6D8F</span>, <span class="number">0x396795</span>, <span class="number">0x5BBF31</span>, <span class="number">0x48D784</span>, <span class="number">0x16DF30</span>, <span class="number">0x432DC7</span>,
<span class="number">0x356125</span>, <span class="number">0xCE70C9</span>, <span class="number">0xB8CB30</span>, <span class="number">0xFD6CBF</span>, <span class="number">0xA200A4</span>, <span class="number">0xE46C05</span>, <span class="number">0xA0DD5A</span>, <span class="number">0x476F21</span>, <span class="number">0xD21262</span>,
<span class="number">0x845CB9</span>, <span class="number">0x496170</span>, <span class="number">0xE0566B</span>, <span class="number">0x015299</span>, <span class="number">0x375550</span>, <span class="number">0xB7D51E</span>, <span class="number">0xC4F133</span>, <span class="number">0x5F6E13</span>, <span class="number">0xE4305D</span>,
<span class="number">0xA92E85</span>, <span class="number">0xC3B21D</span>, <span class="number">0x3632A1</span>, <span class="number">0xA4B708</span>, <span class="number">0xD4B1EA</span>, <span class="number">0x21F716</span>, <span class="number">0xE4698F</span>, <span class="number">0x77FF27</span>, <span class="number">0x80030C</span>,
<span class="number">0x2D408D</span>, <span class="number">0xA0CD4F</span>, <span class="number">0x99A520</span>, <span class="number">0xD3A2B3</span>, <span class="number">0x0A5D2F</span>, <span class="number">0x42F9B4</span>, <span class="number">0xCBDA11</span>, <span class="number">0xD0BE7D</span>, <span class="number">0xC1DB9B</span>,
<span class="number">0xBD17AB</span>, <span class="number">0x81A2CA</span>, <span class="number">0x5C6A08</span>, <span class="number">0x17552E</span>, <span class="number">0x550027</span>, <span class="number">0xF0147F</span>, <span class="number">0x8607E1</span>, <span class="number">0x640B14</span>, <span class="number">0x8D4196</span>,
<span class="number">0xDEBE87</span>, <span class="number">0x2AFDDA</span>, <span class="number">0xB6256B</span>, <span class="number">0x34897B</span>, <span class="number">0xFEF305</span>, <span class="number">0x9EBFB9</span>, <span class="number">0x4F6A68</span>, <span class="number">0xA82A4A</span>, <span class="number">0x5AC44F</span>,
<span class="number">0xBCF82D</span>, <span class="number">0x985AD7</span>, <span class="number">0x95C7F4</span>, <span class="number">0x8D4D0D</span>, <span class="number">0xA63A20</span>, <span class="number">0x5F57A4</span>, <span class="number">0xB13F14</span>, <span class="number">0x953880</span>, <span class="number">0x0120CC</span>,
<span class="number">0x86DD71</span>, <span class="number">0xB6DEC9</span>, <span class="number">0xF560BF</span>, <span class="number">0x11654D</span>, <span class="number">0x6B0701</span>, <span class="number">0xACB08C</span>, <span class="number">0xD0C0B2</span>, <span class="number">0x485551</span>, <span class="number">0x0EFB1E</span>,
<span class="number">0xC37295</span>, <span class="number">0x3B06A3</span>, <span class="number">0x3540C0</span>, <span class="number">0x7BDC06</span>, <span class="number">0xCC45E0</span>, <span class="number">0xFA294E</span>, <span class="number">0xC8CAD6</span>, <span class="number">0x41F3E8</span>, <span class="number">0xDE647C</span>,
<span class="number">0xD8649B</span>, <span class="number">0x31BED9</span>, <span class="number">0xC397A4</span>, <span class="number">0xD45877</span>, <span class="number">0xC5E369</span>, <span class="number">0x13DAF0</span>, <span class="number">0x3C3ABA</span>, <span class="number">0x461846</span>, <span class="number">0x5F7555</span>,
<span class="number">0xF5BDD2</span>, <span class="number">0xC6926E</span>, <span class="number">0x5D2EAC</span>, <span class="number">0xED440E</span>, <span class="number">0x423E1C</span>, <span class="number">0x87C461</span>, <span class="number">0xE9FD29</span>, <span class="number">0xF3D6E7</span>, <span class="number">0xCA7C22</span>,
<span class="number">0x35916F</span>, <span class="number">0xC5E008</span>, <span class="number">0x8DD7FF</span>, <span class="number">0xE26A6E</span>, <span class="number">0xC6FDB0</span>, <span class="number">0xC10893</span>, <span class="number">0x745D7C</span>, <span class="number">0xB2AD6B</span>, <span class="number">0x9D6ECD</span>,
<span class="number">0x7B723E</span>, <span class="number">0x6A11C6</span>, <span class="number">0xA9CFF7</span>, <span class="number">0xDF7329</span>, <span class="number">0xBAC9B5</span>, <span class="number">0x5100B7</span>, <span class="number">0x0DB2E2</span>, <span class="number">0x24BA74</span>, <span class="number">0x607DE5</span>,
<span class="number">0x8AD874</span>, <span class="number">0x2C150D</span>, <span class="number">0x0C1881</span>, <span class="number">0x94667E</span>, <span class="number">0x162901</span>, <span class="number">0x767A9F</span>, <span class="number">0xBEFDFD</span>, <span class="number">0xEF4556</span>, <span class="number">0x367ED9</span>,
<span class="number">0x13D9EC</span>, <span class="number">0xB9BA8B</span>, <span class="number">0xFC97C4</span>, <span class="number">0x27A831</span>, <span class="number">0xC36EF1</span>, <span class="number">0x36C594</span>, <span class="number">0x56A8D8</span>, <span class="number">0xB5A8B4</span>, <span class="number">0x0ECCCF</span>,
<span class="number">0x2D8912</span>, <span class="number">0x34576F</span>, <span class="number">0x89562C</span>, <span class="number">0xE3CE99</span>, <span class="number">0xB920D6</span>, <span class="number">0xAA5E6B</span>, <span class="number">0x9C2A3E</span>, <span class="number">0xCC5F11</span>, <span class="number">0x4A0BFD</span>,
<span class="number">0xFBF4E1</span>, <span class="number">0x6D3B8E</span>, <span class="number">0x2C86E2</span>, <span class="number">0x84D4E9</span>, <span class="number">0xA9B4FC</span>, <span class="number">0xD1EEEF</span>, <span class="number">0xC9352E</span>, <span class="number">0x61392F</span>, <span class="number">0x442138</span>,
<span class="number">0xC8D91B</span>, <span class="number">0x0AFC81</span>, <span class="number">0x6A4AFB</span>, <span class="number">0xD81C2F</span>, <span class="number">0x84B453</span>, <span class="number">0x8C994E</span>, <span class="number">0xCC2254</span>, <span class="number">0xDC552A</span>, <span class="number">0xD6C6C0</span>,
<span class="number">0x96190B</span>, <span class="number">0xB8701A</span>, <span class="number">0x649569</span>, <span class="number">0x605A26</span>, <span class="number">0xEE523F</span>, <span class="number">0x0F117F</span>, <span class="number">0x11B5F4</span>, <span class="number">0xF5CBFC</span>, <span class="number">0x2DBC34</span>,
<span class="number">0xEEBC34</span>, <span class="number">0xCC5DE8</span>, <span class="number">0x605EDD</span>, <span class="number">0x9B8E67</span>, <span class="number">0xEF3392</span>, <span class="number">0xB817C9</span>, <span class="number">0x9B5861</span>, <span class="number">0xBC57E1</span>, <span class="number">0xC68351</span>,
<span class="number">0x103ED8</span>, <span class="number">0x4871DD</span>, <span class="number">0xDD1C2D</span>, <span class="number">0xA118AF</span>, <span class="number">0x462C21</span>, <span class="number">0xD7F359</span>, <span class="number">0x987AD9</span>, <span class="number">0xC0549E</span>, <span class="number">0xFA864F</span>,
<span class="number">0xFC0656</span>, <span class="number">0xAE79E5</span>, <span class="number">0x362289</span>, <span class="number">0x22AD38</span>, <span class="number">0xDC9367</span>, <span class="number">0xAAE855</span>, <span class="number">0x382682</span>, <span class="number">0x9BE7CA</span>, <span class="number">0xA40D51</span>,
<span class="number">0xB13399</span>, <span class="number">0x0ED7A9</span>, <span class="number">0x480569</span>, <span class="number">0xF0B265</span>, <span class="number">0xA7887F</span>, <span class="number">0x974C88</span>, <span class="number">0x36D1F9</span>, <span class="number">0xB39221</span>, <span class="number">0x4A827B</span>,
<span class="number">0x21CF98</span>, <span class="number">0xDC9F40</span>, <span class="number">0x5547DC</span>, <span class="number">0x3A74E1</span>, <span class="number">0x42EB67</span>, <span class="number">0xDF9DFE</span>, <span class="number">0x5FD45E</span>, <span class="number">0xA4677B</span>, <span class="number">0x7AACBA</span>,
<span class="number">0xA2F655</span>, <span class="number">0x23882B</span>, <span class="number">0x55BA41</span>, <span class="number">0x086E59</span>, <span class="number">0x862A21</span>, <span class="number">0x834739</span>, <span class="number">0xE6E389</span>, <span class="number">0xD49EE5</span>, <span class="number">0x40FB49</span>,
<span class="number">0xE956FF</span>, <span class="number">0xCA0F1C</span>, <span class="number">0x8A59C5</span>, <span class="number">0x2BFA94</span>, <span class="number">0xC5C1D3</span>, <span class="number">0xCFC50F</span>, <span class="number">0xAE5ADB</span>, <span class="number">0x86C547</span>, <span class="number">0x624385</span>,
<span class="number">0x3B8621</span>, <span class="number">0x94792C</span>, <span class="number">0x876110</span>, <span class="number">0x7B4C2A</span>, <span class="number">0x1A2C80</span>, <span class="number">0x12BF43</span>, <span class="number">0x902688</span>, <span class="number">0x893C78</span>, <span class="number">0xE4C4A8</span>,
<span class="number">0x7BDBE5</span>, <span class="number">0xC23AC4</span>, <span class="number">0xEAF426</span>, <span class="number">0x8A67F7</span>, <span class="number">0xBF920D</span>, <span class="number">0x2BA365</span>, <span class="number">0xB1933D</span>, <span class="number">0x0B7CBD</span>, <span class="number">0xDC51A4</span>,
<span class="number">0x63DD27</span>, <span class="number">0xDDE169</span>, <span class="number">0x19949A</span>, <span class="number">0x9529A8</span>, <span class="number">0x28CE68</span>, <span class="number">0xB4ED09</span>, <span class="number">0x209F44</span>, <span class="number">0xCA984E</span>, <span class="number">0x638270</span>,
<span class="number">0x237C7E</span>, <span class="number">0x32B90F</span>, <span class="number">0x8EF5A7</span>, <span class="number">0xE75614</span>, <span class="number">0x08F121</span>, <span class="number">0x2A9DB5</span>, <span class="number">0x4D7E6F</span>, <span class="number">0x5119A5</span>, <span class="number">0xABF9B5</span>,
<span class="number">0xD6DF82</span>, <span class="number">0x61DD96</span>, <span class="number">0x023616</span>, <span class="number">0x9F3AC4</span>, <span class="number">0xA1A283</span>, <span class="number">0x6DED72</span>, <span class="number">0x7A8D39</span>, <span class="number">0xA9B882</span>, <span class="number">0x5C326B</span>,
<span class="number">0x5B2746</span>, <span class="number">0xED3400</span>, <span class="number">0x7700D2</span>, <span class="number">0x55F4FC</span>, <span class="number">0x4D5901</span>, <span class="number">0x8071E0</span>,
];
<span class="kw">const </span>PIO2: [f64; <span class="number">8</span>] = [
<span class="number">1.57079625129699707031e+00</span>, <span class="comment">/* 0x3FF921FB, 0x40000000 */
</span><span class="number">7.54978941586159635335e-08</span>, <span class="comment">/* 0x3E74442D, 0x00000000 */
</span><span class="number">5.39030252995776476554e-15</span>, <span class="comment">/* 0x3CF84698, 0x80000000 */
</span><span class="number">3.28200341580791294123e-22</span>, <span class="comment">/* 0x3B78CC51, 0x60000000 */
</span><span class="number">1.27065575308067607349e-29</span>, <span class="comment">/* 0x39F01B83, 0x80000000 */
</span><span class="number">1.22933308981111328932e-36</span>, <span class="comment">/* 0x387A2520, 0x40000000 */
</span><span class="number">2.73370053816464559624e-44</span>, <span class="comment">/* 0x36E38222, 0x80000000 */
</span><span class="number">2.16741683877804819444e-51</span>, <span class="comment">/* 0x3569F31D, 0x00000000 */
</span>];
<span class="comment">// fn rem_pio2_large(x : &[f64], y : &mut [f64], e0 : i32, prec : usize) -> i32
//
// Input parameters:
// x[] The input value (must be positive) is broken into nx
// pieces of 24-bit integers in double precision format.
// x[i] will be the i-th 24 bit of x. The scaled exponent
// of x[0] is given in input parameter e0 (i.e., x[0]*2^e0
// match x's up to 24 bits.
//
// Example of breaking a double positive z into x[0]+x[1]+x[2]:
// e0 = ilogb(z)-23
// z = scalbn(z,-e0)
// for i = 0,1,2
// x[i] = floor(z)
// z = (z-x[i])*2**24
//
// y[] ouput result in an array of double precision numbers.
// The dimension of y[] is:
// 24-bit precision 1
// 53-bit precision 2
// 64-bit precision 2
// 113-bit precision 3
// The actual value is the sum of them. Thus for 113-bit
// precison, one may have to do something like:
//
// long double t,w,r_head, r_tail;
// t = (long double)y[2] + (long double)y[1];
// w = (long double)y[0];
// r_head = t+w;
// r_tail = w - (r_head - t);
//
// e0 The exponent of x[0]. Must be <= 16360 or you need to
// expand the ipio2 table.
//
// prec an integer indicating the precision:
// 0 24 bits (single)
// 1 53 bits (double)
// 2 64 bits (extended)
// 3 113 bits (quad)
//
// Here is the description of some local variables:
//
// jk jk+1 is the initial number of terms of ipio2[] needed
// in the computation. The minimum and recommended value
// for jk is 3,4,4,6 for single, double, extended, and quad.
// jk+1 must be 2 larger than you might expect so that our
// recomputation test works. (Up to 24 bits in the integer
// part (the 24 bits of it that we compute) and 23 bits in
// the fraction part may be lost to cancelation before we
// recompute.)
//
// jz local integer variable indicating the number of
// terms of ipio2[] used.
//
// jx nx - 1
//
// jv index for pointing to the suitable ipio2[] for the
// computation. In general, we want
// ( 2^e0*x[0] * ipio2[jv-1]*2^(-24jv) )/8
// is an integer. Thus
// e0-3-24*jv >= 0 or (e0-3)/24 >= jv
// Hence jv = max(0,(e0-3)/24).
//
// jp jp+1 is the number of terms in PIo2[] needed, jp = jk.
//
// q[] double array with integral value, representing the
// 24-bits chunk of the product of x and 2/pi.
//
// q0 the corresponding exponent of q[0]. Note that the
// exponent for q[i] would be q0-24*i.
//
// PIo2[] double precision array, obtained by cutting pi/2
// into 24 bits chunks.
//
// f[] ipio2[] in floating point
//
// iq[] integer array by breaking up q[] in 24-bits chunk.
//
// fq[] final product of x*(2/pi) in fq[0],..,fq[jk]
//
// ih integer. If >0 it indicates q[] is >= 0.5, hence
// it also indicates the *sign* of the result.
</span><span class="doccomment">/// Return the last three digits of N with y = x - N*pi/2
/// so that |y| < pi/2.
///
/// The method is to compute the integer (mod 8) and fraction parts of
/// (2/pi)*x without doing the full multiplication. In general we
/// skip the part of the product that are known to be a huge integer (
/// more accurately, = 0 mod 8 ). Thus the number of operations are
/// independent of the exponent of the input.
</span><span class="attr">#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
</span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>rem_pio2_large(x: <span class="kw-2">&</span>[f64], y: <span class="kw-2">&mut </span>[f64], e0: i32, prec: usize) -> i32 {
<span class="kw">let </span>x1p24 = f64::from_bits(<span class="number">0x4170000000000000</span>); <span class="comment">// 0x1p24 === 2 ^ 24
</span><span class="kw">let </span>x1p_24 = f64::from_bits(<span class="number">0x3e70000000000000</span>); <span class="comment">// 0x1p_24 === 2 ^ (-24)
</span><span class="attr">#[cfg(all(target_pointer_width = <span class="string">"64"</span>, feature = <span class="string">"checked"</span>))]
</span><span class="macro">assert!</span>(e0 <= <span class="number">16360</span>);
<span class="kw">let </span>nx = x.len();
<span class="kw">let </span><span class="kw-2">mut </span>fw: f64;
<span class="kw">let </span><span class="kw-2">mut </span>n: i32;
<span class="kw">let </span><span class="kw-2">mut </span>ih: i32;
<span class="kw">let </span><span class="kw-2">mut </span>z: f64;
<span class="kw">let </span><span class="kw-2">mut </span>f: [f64; <span class="number">20</span>] = [<span class="number">0.</span>; <span class="number">20</span>];
<span class="kw">let </span><span class="kw-2">mut </span>fq: [f64; <span class="number">20</span>] = [<span class="number">0.</span>; <span class="number">20</span>];
<span class="kw">let </span><span class="kw-2">mut </span>q: [f64; <span class="number">20</span>] = [<span class="number">0.</span>; <span class="number">20</span>];
<span class="kw">let </span><span class="kw-2">mut </span>iq: [i32; <span class="number">20</span>] = [<span class="number">0</span>; <span class="number">20</span>];
<span class="comment">/* initialize jk*/
</span><span class="kw">let </span>jk = <span class="macro">i!</span>(INIT_JK, prec);
<span class="kw">let </span>jp = jk;
<span class="comment">/* determine jx,jv,q0, note that 3>q0 */
</span><span class="kw">let </span>jx = nx - <span class="number">1</span>;
<span class="kw">let </span><span class="kw-2">mut </span>jv = <span class="macro">div!</span>(e0 - <span class="number">3</span>, <span class="number">24</span>);
<span class="kw">if </span>jv < <span class="number">0 </span>{
jv = <span class="number">0</span>;
}
<span class="kw">let </span><span class="kw-2">mut </span>q0 = e0 - <span class="number">24 </span>* (jv + <span class="number">1</span>);
<span class="kw">let </span>jv = jv <span class="kw">as </span>usize;
<span class="comment">/* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */
</span><span class="kw">let </span><span class="kw-2">mut </span>j = (jv <span class="kw">as </span>i32) - (jx <span class="kw">as </span>i32);
<span class="kw">let </span>m = jx + jk;
<span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..=m {
<span class="macro">i!</span>(f, i, =, <span class="kw">if </span>j < <span class="number">0 </span>{
<span class="number">0.
</span>} <span class="kw">else </span>{
<span class="macro">i!</span>(IPIO2, j <span class="kw">as </span>usize) <span class="kw">as </span>f64
});
j += <span class="number">1</span>;
}
<span class="comment">/* compute q[0],q[1],...q[jk] */
</span><span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..=jk {
fw = <span class="number">0f64</span>;
<span class="kw">for </span>j <span class="kw">in </span><span class="number">0</span>..=jx {
fw += <span class="macro">i!</span>(x, j) * <span class="macro">i!</span>(f, jx + i - j);
}
<span class="macro">i!</span>(q, i, =, fw);
}
<span class="kw">let </span><span class="kw-2">mut </span>jz = jk;
<span class="lifetime">'recompute</span>: <span class="kw">loop </span>{
<span class="comment">/* distill q[] into iq[] reversingly */
</span><span class="kw">let </span><span class="kw-2">mut </span>i = <span class="number">0i32</span>;
z = <span class="macro">i!</span>(q, jz);
<span class="kw">for </span>j <span class="kw">in </span>(<span class="number">1</span>..=jz).rev() {
fw = (x1p_24 * z) <span class="kw">as </span>i32 <span class="kw">as </span>f64;
<span class="macro">i!</span>(iq, i <span class="kw">as </span>usize, =, (z - x1p24 * fw) <span class="kw">as </span>i32);
z = <span class="macro">i!</span>(q, j - <span class="number">1</span>) + fw;
i += <span class="number">1</span>;
}
<span class="comment">/* compute n */
</span>z = scalbn(z, q0); <span class="comment">/* actual value of z */
</span>z -= <span class="number">8.0 </span>* floor(z * <span class="number">0.125</span>); <span class="comment">/* trim off integer >= 8 */
</span>n = z <span class="kw">as </span>i32;
z -= n <span class="kw">as </span>f64;
ih = <span class="number">0</span>;
<span class="kw">if </span>q0 > <span class="number">0 </span>{
<span class="comment">/* need iq[jz-1] to determine n */
</span>i = <span class="macro">i!</span>(iq, jz - <span class="number">1</span>) >> (<span class="number">24 </span>- q0);
n += i;
<span class="macro">i!</span>(iq, jz - <span class="number">1</span>, -=, i << (<span class="number">24 </span>- q0));
ih = <span class="macro">i!</span>(iq, jz - <span class="number">1</span>) >> (<span class="number">23 </span>- q0);
} <span class="kw">else if </span>q0 == <span class="number">0 </span>{
ih = <span class="macro">i!</span>(iq, jz - <span class="number">1</span>) >> <span class="number">23</span>;
} <span class="kw">else if </span>z >= <span class="number">0.5 </span>{
ih = <span class="number">2</span>;
}
<span class="kw">if </span>ih > <span class="number">0 </span>{
<span class="comment">/* q > 0.5 */
</span>n += <span class="number">1</span>;
<span class="kw">let </span><span class="kw-2">mut </span>carry = <span class="number">0i32</span>;
<span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..jz {
<span class="comment">/* compute 1-q */
</span><span class="kw">let </span>j = <span class="macro">i!</span>(iq, i);
<span class="kw">if </span>carry == <span class="number">0 </span>{
<span class="kw">if </span>j != <span class="number">0 </span>{
carry = <span class="number">1</span>;
<span class="macro">i!</span>(iq, i, =, <span class="number">0x1000000 </span>- j);
}
} <span class="kw">else </span>{
<span class="macro">i!</span>(iq, i, =, <span class="number">0xffffff </span>- j);
}
}
<span class="kw">if </span>q0 > <span class="number">0 </span>{
<span class="comment">/* rare case: chance is 1 in 12 */
</span><span class="kw">match </span>q0 {
<span class="number">1 </span>=> {
<span class="macro">i!</span>(iq, jz - <span class="number">1</span>, &=, <span class="number">0x7fffff</span>);
}
<span class="number">2 </span>=> {
<span class="macro">i!</span>(iq, jz - <span class="number">1</span>, &=, <span class="number">0x3fffff</span>);
}
<span class="kw">_ </span>=> {}
}
}
<span class="kw">if </span>ih == <span class="number">2 </span>{
z = <span class="number">1. </span>- z;
<span class="kw">if </span>carry != <span class="number">0 </span>{
z -= scalbn(<span class="number">1.</span>, q0);
}
}
}
<span class="comment">/* check if recomputation is needed */
</span><span class="kw">if </span>z == <span class="number">0. </span>{
<span class="kw">let </span><span class="kw-2">mut </span>j = <span class="number">0</span>;
<span class="kw">for </span>i <span class="kw">in </span>(jk..=jz - <span class="number">1</span>).rev() {
j |= <span class="macro">i!</span>(iq, i);
}
<span class="kw">if </span>j == <span class="number">0 </span>{
<span class="comment">/* need recomputation */
</span><span class="kw">let </span><span class="kw-2">mut </span>k = <span class="number">1</span>;
<span class="kw">while </span><span class="macro">i!</span>(iq, jk - k, ==, <span class="number">0</span>) {
k += <span class="number">1</span>; <span class="comment">/* k = no. of terms needed */
</span>}
<span class="kw">for </span>i <span class="kw">in </span>(jz + <span class="number">1</span>)..=(jz + k) {
<span class="comment">/* add q[jz+1] to q[jz+k] */
</span><span class="macro">i!</span>(f, jx + i, =, <span class="macro">i!</span>(IPIO2, jv + i) <span class="kw">as </span>f64);
fw = <span class="number">0f64</span>;
<span class="kw">for </span>j <span class="kw">in </span><span class="number">0</span>..=jx {
fw += <span class="macro">i!</span>(x, j) * <span class="macro">i!</span>(f, jx + i - j);
}
<span class="macro">i!</span>(q, i, =, fw);
}
jz += k;
<span class="kw">continue </span><span class="lifetime">'recompute</span>;
}
}
<span class="kw">break</span>;
}
<span class="comment">/* chop off zero terms */
</span><span class="kw">if </span>z == <span class="number">0. </span>{
jz -= <span class="number">1</span>;
q0 -= <span class="number">24</span>;
<span class="kw">while </span><span class="macro">i!</span>(iq, jz) == <span class="number">0 </span>{
jz -= <span class="number">1</span>;
q0 -= <span class="number">24</span>;
}
} <span class="kw">else </span>{
<span class="comment">/* break z into 24-bit if necessary */
</span>z = scalbn(z, -q0);
<span class="kw">if </span>z >= x1p24 {
fw = (x1p_24 * z) <span class="kw">as </span>i32 <span class="kw">as </span>f64;
<span class="macro">i!</span>(iq, jz, =, (z - x1p24 * fw) <span class="kw">as </span>i32);
jz += <span class="number">1</span>;
q0 += <span class="number">24</span>;
<span class="macro">i!</span>(iq, jz, =, fw <span class="kw">as </span>i32);
} <span class="kw">else </span>{
<span class="macro">i!</span>(iq, jz, =, z <span class="kw">as </span>i32);
}
}
<span class="comment">/* convert integer "bit" chunk to floating-point value */
</span>fw = scalbn(<span class="number">1.</span>, q0);
<span class="kw">for </span>i <span class="kw">in </span>(<span class="number">0</span>..=jz).rev() {
<span class="macro">i!</span>(q, i, =, fw * (<span class="macro">i!</span>(iq, i) <span class="kw">as </span>f64));
fw <span class="kw-2">*</span>= x1p_24;
}
<span class="comment">/* compute PIo2[0,...,jp]*q[jz,...,0] */
</span><span class="kw">for </span>i <span class="kw">in </span>(<span class="number">0</span>..=jz).rev() {
fw = <span class="number">0f64</span>;
<span class="kw">let </span><span class="kw-2">mut </span>k = <span class="number">0</span>;
<span class="kw">while </span>(k <= jp) && (k <= jz - i) {
fw += <span class="macro">i!</span>(PIO2, k) * <span class="macro">i!</span>(q, i + k);
k += <span class="number">1</span>;
}
<span class="macro">i!</span>(fq, jz - i, =, fw);
}
<span class="comment">/* compress fq[] into y[] */
</span><span class="kw">match </span>prec {
<span class="number">0 </span>=> {
fw = <span class="number">0f64</span>;
<span class="kw">for </span>i <span class="kw">in </span>(<span class="number">0</span>..=jz).rev() {
fw += <span class="macro">i!</span>(fq, i);
}
<span class="macro">i!</span>(y, <span class="number">0</span>, =, <span class="kw">if </span>ih == <span class="number">0 </span>{ fw } <span class="kw">else </span>{ -fw });
}
<span class="number">1 </span>| <span class="number">2 </span>=> {
fw = <span class="number">0f64</span>;
<span class="kw">for </span>i <span class="kw">in </span>(<span class="number">0</span>..=jz).rev() {
fw += <span class="macro">i!</span>(fq, i);
}
<span class="comment">// TODO: drop excess precision here once double_t is used
</span>fw = fw <span class="kw">as </span>f64;
<span class="macro">i!</span>(y, <span class="number">0</span>, =, <span class="kw">if </span>ih == <span class="number">0 </span>{ fw } <span class="kw">else </span>{ -fw });
fw = <span class="macro">i!</span>(fq, <span class="number">0</span>) - fw;
<span class="kw">for </span>i <span class="kw">in </span><span class="number">1</span>..=jz {
fw += <span class="macro">i!</span>(fq, i);
}
<span class="macro">i!</span>(y, <span class="number">1</span>, =, <span class="kw">if </span>ih == <span class="number">0 </span>{ fw } <span class="kw">else </span>{ -fw });
}
<span class="number">3 </span>=> {
<span class="comment">/* painful */
</span><span class="kw">for </span>i <span class="kw">in </span>(<span class="number">1</span>..=jz).rev() {
fw = <span class="macro">i!</span>(fq, i - <span class="number">1</span>) + <span class="macro">i!</span>(fq, i);
<span class="macro">i!</span>(fq, i, +=, <span class="macro">i!</span>(fq, i - <span class="number">1</span>) - fw);
<span class="macro">i!</span>(fq, i - <span class="number">1</span>, =, fw);
}
<span class="kw">for </span>i <span class="kw">in </span>(<span class="number">2</span>..=jz).rev() {
fw = <span class="macro">i!</span>(fq, i - <span class="number">1</span>) + <span class="macro">i!</span>(fq, i);
<span class="macro">i!</span>(fq, i, +=, <span class="macro">i!</span>(fq, i - <span class="number">1</span>) - fw);
<span class="macro">i!</span>(fq, i - <span class="number">1</span>, =, fw);
}
fw = <span class="number">0f64</span>;
<span class="kw">for </span>i <span class="kw">in </span>(<span class="number">2</span>..=jz).rev() {
fw += <span class="macro">i!</span>(fq, i);
}
<span class="kw">if </span>ih == <span class="number">0 </span>{
<span class="macro">i!</span>(y, <span class="number">0</span>, =, <span class="macro">i!</span>(fq, <span class="number">0</span>));
<span class="macro">i!</span>(y, <span class="number">1</span>, =, <span class="macro">i!</span>(fq, <span class="number">1</span>));
<span class="macro">i!</span>(y, <span class="number">2</span>, =, fw);
} <span class="kw">else </span>{
<span class="macro">i!</span>(y, <span class="number">0</span>, =, -<span class="macro">i!</span>(fq, <span class="number">0</span>));
<span class="macro">i!</span>(y, <span class="number">1</span>, =, -<span class="macro">i!</span>(fq, <span class="number">1</span>));
<span class="macro">i!</span>(y, <span class="number">2</span>, =, -fw);
}
}
<span class="attr">#[cfg(debug_assertions)]
</span><span class="kw">_ </span>=> <span class="macro">unreachable!</span>(),
<span class="attr">#[cfg(not(debug_assertions))]
</span><span class="kw">_ </span>=> {}
}
n & <span class="number">7
</span>}
</code></pre></div>
</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="libm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.67.1 (d5a82bbd2 2023-02-07)" data-search-js="search-444266647c4dba98.js" data-settings-js="settings-bebeae96e00e4617.js" data-settings-css="settings-af96d9e2fc13e081.css" ></div></body></html>