⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fix_8cpp-source.html

📁 Tixys source code, include G.711, G.726, IMA-ADPCM etc.
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00198             }00199         bit &gt;&gt;= 1;00200         }00201     <span class="keywordflow">while</span>(bit);00202 00203 <span class="preprocessor">#else</span>00204 <span class="preprocessor"></span>00205     <span class="comment">// calculate the integer part of result (bits 31 to 16)</span>00206     <span class="keywordflow">switch</span>(intBits)00207         {00208         <span class="keywordflow">case</span> 14:00209             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;14))00210                 a -= (b&lt;&lt;14), r += 1&lt;&lt;(14+16);00211         <span class="keywordflow">case</span> 13:00212             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;13))00213                 a -= (b&lt;&lt;13), r += 1&lt;&lt;(13+16);00214         <span class="keywordflow">case</span> 12:00215             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;12))00216                 a -= (b&lt;&lt;12), r += 1&lt;&lt;(12+16);00217         <span class="keywordflow">case</span> 11:00218             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;11))00219                 a -= (b&lt;&lt;11), r += 1&lt;&lt;(11+16);00220         <span class="keywordflow">case</span> 10:00221             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;10))00222                 a -= (b&lt;&lt;10), r += 1&lt;&lt;(10+16);00223         <span class="keywordflow">case</span> 9:00224             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;9))00225                 a -= (b&lt;&lt;9), r += 1&lt;&lt;(9+16);00226         <span class="keywordflow">case</span> 8:00227             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;8))00228                 a -= (b&lt;&lt;8), r += 1&lt;&lt;(8+16);00229         <span class="keywordflow">case</span> 7:00230             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;7))00231                 a -= (b&lt;&lt;7), r += 1&lt;&lt;(7+16);00232         <span class="keywordflow">case</span> 6:00233             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;6))00234                 a -= (b&lt;&lt;6), r += 1&lt;&lt;(6+16);00235         <span class="keywordflow">case</span> 5:00236             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;5))00237                 a -= (b&lt;&lt;5), r += 1&lt;&lt;(5+16);00238         <span class="keywordflow">case</span> 4:00239             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;4))00240                 a -= (b&lt;&lt;4), r += 1&lt;&lt;(4+16);00241         <span class="keywordflow">case</span> 3:00242             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;3))00243                 a -= (b&lt;&lt;3), r += 1&lt;&lt;(3+16);00244         <span class="keywordflow">case</span> 2:00245             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;2))00246                 a -= (b&lt;&lt;2), r += 1&lt;&lt;(2+16);00247         <span class="keywordflow">case</span> 1:00248             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;1))00249                 a -= (b&lt;&lt;1), r += 1&lt;&lt;(1+16);00250         <span class="keywordflow">case</span> 0:00251             <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;&lt;0))00252                 a -= (b&lt;&lt;0), r += 1&lt;&lt;(0+16);00253             <span class="keywordflow">break</span>;00254     <span class="keywordflow">default</span>:00255         <span class="comment">// produce saturated result</span>00256         <span class="keywordflow">return</span> (r&lt;0) ? 0x80000000 : 0x7fffffff; <span class="comment">// saturated result</span>00257         }00258 00259     <span class="comment">// calculate the fractional part of result (bits 15 to 0)</span>00260     a &lt;&lt;= 1;00261     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00262         a -= b, r += 1&lt;&lt;15;00263     a &lt;&lt;= 1;00264     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00265         a -= b, r += 1&lt;&lt;14;00266     a &lt;&lt;= 1;00267     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00268         a -= b, r += 1&lt;&lt;13;00269     a &lt;&lt;= 1;00270     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00271         a -= b, r += 1&lt;&lt;12;00272     a &lt;&lt;= 1;00273     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00274         a -= b, r += 1&lt;&lt;11;00275     a &lt;&lt;= 1;00276     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00277         a -= b, r += 1&lt;&lt;10;00278     a &lt;&lt;= 1;00279     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00280         a -= b, r += 1&lt;&lt;9;00281     a &lt;&lt;= 1;00282     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00283         a -= b, r += 1&lt;&lt;8;00284     a &lt;&lt;= 1;00285     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00286         a -= b, r += 1&lt;&lt;7;00287     a &lt;&lt;= 1;00288     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00289         a -= b, r += 1&lt;&lt;6;00290     a &lt;&lt;= 1;00291     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00292         a -= b, r += 1&lt;&lt;5;00293     a &lt;&lt;= 1;00294     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00295         a -= b, r += 1&lt;&lt;4;00296     a &lt;&lt;= 1;00297     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00298         a -= b, r += 1&lt;&lt;3;00299     a &lt;&lt;= 1;00300     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00301         a -= b, r += 1&lt;&lt;2;00302     a &lt;&lt;= 1;00303     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00304         a -= b, r += 1&lt;&lt;1;00305     a &lt;&lt;= 1;00306     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a&gt;=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)00307         a -= b, r += 1&lt;&lt;0;00308 00309 <span class="preprocessor">#endif</span>00310 <span class="preprocessor"></span>00311     <span class="keywordflow">return</span> (r&lt;0) ? 0x80000000-r : r;00312 00313     }00314 00315 <a name="l00316"></a><a class="code" href="classFix.html#e5">00316</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__fix.html#ga0">fix</a> <a class="code" href="classFix.html#e5">Fix::Sqrt</a>(ufix a)00317     {00318     <a class="code" href="group__fix.html#ga1">ufix</a> r,nr,m;00319 00320     <span class="comment">// calculate integer part (bits 31 to 16)</span>00321     r = 0;00322     m = 0x40000000;00323     <span class="keywordflow">do</span>00324         {00325         nr = r+m;00326         <span class="keywordflow">if</span>(nr&lt;=a)00327             {00328             a -= nr;00329             r = nr+m;00330             }00331         r &gt;&gt;= 1;00332         m &gt;&gt;= 2;00333         }00334     <span class="keywordflow">while</span>(m);00335 00336     <span class="comment">// calculate bits 15 to 8</span>00337     r &lt;&lt;= 8;00338     a &lt;&lt;= 8;00339     m = 0x40;00340     <span class="keywordflow">do</span>00341         {00342         nr = r+m;00343         <span class="keywordflow">if</span>(nr&lt;=a)00344             {00345             a -= nr;00346             r = nr+m;00347             }00348         r &gt;&gt;= 1;00349         m &gt;&gt;= 2;00350         }00351     <span class="keywordflow">while</span>(m);00352 00353     <span class="comment">// calculate bits 7 to 0</span>00354     r &lt;&lt;= 8;00355     a &lt;&lt;= 8;00356     m = 0x40;00357     <span class="keywordflow">do</span>00358         {00359         nr = r+m;00360         <span class="keywordflow">if</span>(nr&lt;=a)00361             {00362             a -= nr;00363             r = nr+m;00364             }00365         r &gt;&gt;= 1;00366         m &gt;&gt;= 2;00367         }00368     <span class="keywordflow">while</span>(m);00369 00370     <span class="comment">// round result</span>00371     <span class="keywordflow">if</span>(r&lt;a)00372         r++;00373     00374     <span class="keywordflow">return</span> r;00375     }00376 00377 <a name="l00378"></a><a class="code" href="classFix.html#e6">00378</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__fix.html#ga0">fix</a> <a class="code" href="classFix.html#e6">Fix::Log2</a>(ufix a)00379     {00380     <span class="comment">// trap 0</span>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -