fix_8cpp-source.html

来自「这个是关于G.726算法的源程序」· HTML 代码 · 共 709 行 · 第 1/5 页

HTML
709
字号
<a name="l00157"></a>00157         intBits += 8,  q &gt;&gt;= 8;<a name="l00158"></a>00158     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;=((uint32)q&gt;&gt;4))<a name="l00159"></a>00159         intBits += 4,  q &gt;&gt;= 4;<a name="l00160"></a>00160     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;=((uint32)q&gt;&gt;2))<a name="l00161"></a>00161         intBits += 2,  q &gt;&gt;= 2;<a name="l00162"></a>00162     <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)b&lt;=((uint32)q&gt;&gt;1))<a name="l00163"></a>00163         intBits += 1,  q &gt;&gt;= 1;<a name="l00164"></a>00164 <a name="l00165"></a>00165 <span class="preprocessor">#if 0   // set true to use loops rather than inline code</span><a name="l00166"></a>00166 <span class="preprocessor"></span><a name="l00167"></a>00167     <span class="keywordflow">if</span>(intBits&gt;14)<a name="l00168"></a>00168         <span class="keywordflow">return</span> (r&lt;0) ? 0x80000000 : 0x7fffffff; <span class="comment">// saturated result</span><a name="l00169"></a>00169 <a name="l00170"></a>00170     <span class="comment">// calculate the integer part of result (bits 31 to 16)</span><a name="l00171"></a>00171     b &lt;&lt;= intBits;<a name="l00172"></a>00172     <a class="code" href="group__integers.html#ga5">int32</a> bit = 0x10000&lt;&lt;intBits;<a name="l00173"></a>00173     <span class="keywordflow">while</span>(bit&gt;0x10000)<a name="l00174"></a>00174         {<a name="l00175"></a>00175         <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)<a name="l00176"></a>00176             {<a name="l00177"></a>00177             a -= b;<a name="l00178"></a>00178             r += bit;<a name="l00179"></a>00179             }<a name="l00180"></a>00180         b &gt;&gt;= 1;<a name="l00181"></a>00181         bit &gt;&gt;= 1;<a name="l00182"></a>00182         }<a name="l00183"></a>00183     <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)<a name="l00184"></a>00184         {<a name="l00185"></a>00185         a -= b;<a name="l00186"></a>00186         r += bit;<a name="l00187"></a>00187         }<a name="l00188"></a>00188     bit &gt;&gt;= 1;<a name="l00189"></a>00189 <a name="l00190"></a>00190     <span class="comment">// calculate the fractional part of result (bits 15 to 0)</span><a name="l00191"></a>00191     <span class="keywordflow">do</span><a name="l00192"></a>00192         {<a name="l00193"></a>00193         a &lt;&lt;= 1;<a name="l00194"></a>00194         <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)<a name="l00195"></a>00195             {<a name="l00196"></a>00196             a -= b;<a name="l00197"></a>00197             r += bit;<a name="l00198"></a>00198             }<a name="l00199"></a>00199         bit &gt;&gt;= 1;<a name="l00200"></a>00200         }<a name="l00201"></a>00201     <span class="keywordflow">while</span>(bit);<a name="l00202"></a>00202 <a name="l00203"></a>00203 <span class="preprocessor">#else</span><a name="l00204"></a>00204 <span class="preprocessor"></span><a name="l00205"></a>00205     <span class="comment">// calculate the integer part of result (bits 31 to 16)</span><a name="l00206"></a>00206     <span class="keywordflow">switch</span>(intBits)<a name="l00207"></a>00207         {<a name="l00208"></a>00208         <span class="keywordflow">case</span> 14:<a name="l00209"></a>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))<a name="l00210"></a>00210                 a -= (b&lt;&lt;14), r += 1&lt;&lt;(14+16);<a name="l00211"></a>00211         <span class="keywordflow">case</span> 13:<a name="l00212"></a>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))<a name="l00213"></a>00213                 a -= (b&lt;&lt;13), r += 1&lt;&lt;(13+16);<a name="l00214"></a>00214         <span class="keywordflow">case</span> 12:<a name="l00215"></a>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))<a name="l00216"></a>00216                 a -= (b&lt;&lt;12), r += 1&lt;&lt;(12+16);<a name="l00217"></a>00217         <span class="keywordflow">case</span> 11:<a name="l00218"></a>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))<a name="l00219"></a>00219                 a -= (b&lt;&lt;11), r += 1&lt;&lt;(11+16);<a name="l00220"></a>00220         <span class="keywordflow">case</span> 10:<a name="l00221"></a>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))<a name="l00222"></a>00222                 a -= (b&lt;&lt;10), r += 1&lt;&lt;(10+16);<a name="l00223"></a>00223         <span class="keywordflow">case</span> 9:<a name="l00224"></a>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))<a name="l00225"></a>00225                 a -= (b&lt;&lt;9), r += 1&lt;&lt;(9+16);<a name="l00226"></a>00226         <span class="keywordflow">case</span> 8:<a name="l00227"></a>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))<a name="l00228"></a>00228                 a -= (b&lt;&lt;8), r += 1&lt;&lt;(8+16);<a name="l00229"></a>00229         <span class="keywordflow">case</span> 7:<a name="l00230"></a>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))<a name="l00231"></a>00231                 a -= (b&lt;&lt;7), r += 1&lt;&lt;(7+16);<a name="l00232"></a>00232         <span class="keywordflow">case</span> 6:<a name="l00233"></a>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))<a name="l00234"></a>00234                 a -= (b&lt;&lt;6), r += 1&lt;&lt;(6+16);<a name="l00235"></a>00235         <span class="keywordflow">case</span> 5:<a name="l00236"></a>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))<a name="l00237"></a>00237                 a -= (b&lt;&lt;5), r += 1&lt;&lt;(5+16);<a name="l00238"></a>00238         <span class="keywordflow">case</span> 4:<a name="l00239"></a>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))<a name="l00240"></a>00240                 a -= (b&lt;&lt;4), r += 1&lt;&lt;(4+16);<a name="l00241"></a>00241         <span class="keywordflow">case</span> 3:<a name="l00242"></a>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))<a name="l00243"></a>00243                 a -= (b&lt;&lt;3), r += 1&lt;&lt;(3+16);<a name="l00244"></a>00244         <span class="keywordflow">case</span> 2:<a name="l00245"></a>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))<a name="l00246"></a>00246                 a -= (b&lt;&lt;2), r += 1&lt;&lt;(2+16);<a name="l00247"></a>00247         <span class="keywordflow">case</span> 1:<a name="l00248"></a>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))<a name="l00249"></a>00249                 a -= (b&lt;&lt;1), r += 1&lt;&lt;(1+16);<a name="l00250"></a>00250         <span class="keywordflow">case</span> 0:<a name="l00251"></a>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))<a name="l00252"></a>00252                 a -= (b&lt;&lt;0), r += 1&lt;&lt;(0+16);<a name="l00253"></a>00253             <span class="keywordflow">break</span>;<a name="l00254"></a>00254     <span class="keywordflow">default</span>:<a name="l00255"></a>00255         <span class="comment">// produce saturated result</span><a name="l00256"></a>00256         <span class="keywordflow">return</span> (r&lt;0) ? 0x80000000 : 0x7fffffff; <span class="comment">// saturated result</span><a name="l00257"></a>00257         }<a name="l00258"></a>00258 <a name="l00259"></a>00259     <span class="comment">// calculate the fractional part of result (bits 15 to 0)</span><a name="l00260"></a>00260     a &lt;&lt;= 1;<a name="l00261"></a>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)<a name="l00262"></a>00262         a -= b, r += 1&lt;&lt;15;<a name="l00263"></a>00263     a &lt;&lt;= 1;<a name="l00264"></a>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)<a name="l00265"></a>00265         a -= b, r += 1&lt;&lt;14;<a name="l00266"></a>00266     a &lt;&lt;= 1;<a name="l00267"></a>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)<a name="l00268"></a>00268         a -= b, r += 1&lt;&lt;13;<a name="l00269"></a>00269     a &lt;&lt;= 1;<a name="l00270"></a>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)<a name="l00271"></a>00271         a -= b, r += 1&lt;&lt;12;<a name="l00272"></a>00272     a &lt;&lt;= 1;<a name="l00273"></a>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)<a name="l00274"></a>00274         a -= b, r += 1&lt;&lt;11;<a name="l00275"></a>00275     a &lt;&lt;= 1;<a name="l00276"></a>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)<a name="l00277"></a>00277         a -= b, r += 1&lt;&lt;10;<a name="l00278"></a>00278     a &lt;&lt;= 1;<a name="l00279"></a>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)<a name="l00280"></a>00280         a -= b, r += 1&lt;&lt;9;<a name="l00281"></a>00281     a &lt;&lt;= 1;<a name="l00282"></a>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)<a name="l00283"></a>00283         a -= b, r += 1&lt;&lt;8;<a name="l00284"></a>00284     a &lt;&lt;= 1;<a name="l00285"></a>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)<a name="l00286"></a>00286         a -= b, r += 1&lt;&lt;7;<a name="l00287"></a>00287     a &lt;&lt;= 1;<a name="l00288"></a>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)<a name="l00289"></a>00289         a -= b, r += 1&lt;&lt;6;<a name="l00290"></a>00290     a &lt;&lt;= 1;<a name="l00291"></a>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)<a name="l00292"></a>00292         a -= b, r += 1&lt;&lt;5;<a name="l00293"></a>00293     a &lt;&lt;= 1;<a name="l00294"></a>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)<a name="l00295"></a>00295         a -= b, r += 1&lt;&lt;4;<a name="l00296"></a>00296     a &lt;&lt;= 1;<a name="l00297"></a>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)<a name="l00298"></a>00298         a -= b, r += 1&lt;&lt;3;

⌨️ 快捷键说明

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