fix_8cpp-source.html
来自「这个是关于G.726算法的源程序」· HTML 代码 · 共 709 行 · 第 1/5 页
HTML
709 行
<a name="l00583"></a>00583 <span class="keywordflow">if</span>(angle&(1<<15))<a name="l00584"></a>00584 r = -r;<a name="l00585"></a>00585 <a name="l00586"></a>00586 <span class="keywordflow">return</span> r;<a name="l00587"></a>00587 }<a name="l00588"></a>00588 <a name="l00589"></a>00589 <a name="l00590"></a><a class="code" href="classFix.html#e10">00590</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#e10">Fix::Tan</a>(<a class="code" href="group__fix.html#ga2">fixangle</a> angle)<a name="l00591"></a>00591 {<a name="l00592"></a>00592 <span class="comment">// n = angle in first quadrant</span><a name="l00593"></a>00593 <span class="keywordtype">int</span> n = angle&0x7fff;<a name="l00594"></a>00594 <span class="keywordtype">bool</span> neg = n>0x4000;<a name="l00595"></a>00595 <span class="keywordflow">if</span>(neg) n = 0x8000-n;<a name="l00596"></a>00596 <a name="l00597"></a>00597 <span class="comment">// calculate tangent by interpolation of lookup table values</span><a name="l00598"></a>00598 <a class="code" href="group__integers.html#ga6">uint</a> r;<a name="l00599"></a>00599 <span class="keywordflow">if</span>(n<=0x2000)<a name="l00600"></a>00600 {<a name="l00601"></a>00601 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="group__integers.html#ga5">int32</a> TanTable0000[] =<a name="l00602"></a>00602 {<a name="l00603"></a>00603 0xffe6dcba,<a name="l00604"></a>00604 0x00000000,0x00192346,0x00324e4f,0x004b88e7,0x0064daee,0x007e4c61,0x0097e564,0x00b1ae4d,<a name="l00605"></a>00605 0x00cbafaf,0x00e5f267,0x01007fa7,0x011b6104,0x0136a083,0x015248ae,0x016e649f,0x018b0019,<a name="l00606"></a>00606 0x01a8279a,0x01c5e872,0x01e450e1,0x02037033,0x022356e3,0x024416be,0x0265c311,0x028870db,<a name="l00607"></a>00607 0x02ac3705,0x02d12ea3,0x02f7733e,0x031f232f,0x03486005,0x03734ef8,0x03a01979,0x03ceedd6,<a name="l00608"></a>00608 0x04000000,0x04338a74<a name="l00609"></a>00609 };<a name="l00610"></a>00610 r = <a class="code" href="fix_8cpp.html#a0">Interpolate</a>(TanTable0000,n-0x0000,8);<a name="l00611"></a>00611 <span class="comment">// scale result to 16 bits (from the 26 bit precision used in lookup table)</span><a name="l00612"></a>00612 r = (r+(1<<(10-1)))>>10;<a name="l00613"></a>00613 }<a name="l00614"></a>00614 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(n<=0x2d80)<a name="l00615"></a>00615 {<a name="l00616"></a>00616 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="group__integers.html#ga5">int32</a> TanTable2000[] =<a name="l00617"></a>00617 {<a name="l00618"></a>00618 0x01f395da,<a name="l00619"></a>00619 0x02000000,0x020cb920,0x0219c53a,0x02272890,0x0234e7ab,0x02430762,0x02518ce0,0x02607dac,<a name="l00620"></a>00620 0x026fdfb2,0x027fb948,0x0290113f,0x02a0eee8,0x02b25a22,0x02c45b6c,0x02d6fbf1,0x02ea4598,<a name="l00621"></a>00621 0x02fe431c,0x03130022,0x0328894f,0x033eec66,0x0356386c,0x036e7dc8,0x0387ce70,0x03a23e1b,<a name="l00622"></a>00622 0x03bde277,0x03dad368,0x03f92b57,0x04190786,0x043a8876<a name="l00623"></a>00623 };<a name="l00624"></a>00624 r = <a class="code" href="fix_8cpp.html#a0">Interpolate</a>(TanTable2000,n-0x2000,7);<a name="l00625"></a>00625 <span class="comment">// scale result to 16 bits (from the 25 bit precision used in lookup table)</span><a name="l00626"></a>00626 r = (r+(1<<(9-1)))>>9;<a name="l00627"></a>00627 }<a name="l00628"></a>00628 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(n<=0x35c0)<a name="l00629"></a>00629 {<a name="l00630"></a>00630 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="group__integers.html#ga5">int32</a> TanTable2D80[] =<a name="l00631"></a>00631 {<a name="l00632"></a>00632 0x0204737a,0x020c83c3,0x0214c89d,<a name="l00633"></a>00633 0x021d443b,0x0225f8ef,0x022ee92e,0x02381791,0x024186d9,0x024b39ef,0x025533ea,0x025f7813,<a name="l00634"></a>00634 0x026a09e6,0x0274ed19,0x0280259c,0x028bb7a6,0x0297a7b1,0x02a3fa88,0x02b0b54a,0x02bddd70,<a name="l00635"></a>00635 0x02cb78da,0x02d98dd2,0x02e8231d,0x02f73fff,0x0306ec4e,0x0317307b,0x032815a6,0x0339a5ac,<a name="l00636"></a>00636 0x034beb3d,0x035ef1f2,0x0372c665,0x03877650,0x039d10ad,0x03b3a5d7,0x03cb47bd,0x03e40a0a,<a name="l00637"></a>00637 0x03fe0261<a name="l00638"></a>00638 };<a name="l00639"></a>00639 r = <a class="code" href="fix_8cpp.html#a0">Interpolate</a>(TanTable2D80,n-0x2d80,6);<a name="l00640"></a>00640 <span class="comment">// scale result to 16 bits (from the 24 bit precision used in lookup table)</span><a name="l00641"></a>00641 r = (r+(1<<(8-1)))>>8;<a name="l00642"></a>00642 }<a name="l00643"></a>00643 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(n<=0x39e0)<a name="l00644"></a>00644 {<a name="l00645"></a>00645 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="group__integers.html#ga5">int32</a> TanTable35C0[] =<a name="l00646"></a>00646 {<a name="l00647"></a>00647 0x01ebc1c4,0x01f20505,0x01f86f02,<a name="l00648"></a>00648 0x01ff0130,0x0205bd16,0x020ca44f,0x0213b88a,0x021afb90,0x02226f3e,0x022a158f,0x0231f097,<a name="l00649"></a>00649 0x023a0288,0x02424db5,0x024ad491,0x025399b6,0x025c9fe3,0x0265ea01,0x026f7b26,0x0279569c,<a name="l00650"></a>00650 0x02837fdc,0x028dfa9d,0x0298cace,0x02a3f4a5,0x02af7c9d,0x02bb6780,0x02c7ba6a,0x02d47ad7,<a name="l00651"></a>00651 0x02e1aea3,0x02ef5c1b,0x02fd8a00,0x030c3f99,0x031b84b8,0x032b61d0,0x033be000,0x034d0923,<a name="l00652"></a>00652 0x035ee7ea<a name="l00653"></a>00653 };<a name="l00654"></a>00654 r = <a class="code" href="fix_8cpp.html#a0">Interpolate</a>(TanTable35C0,n-0x35c0,5);<a name="l00655"></a>00655 <span class="comment">// scale result to 16 bits (from the 23 bit precision used in lookup table)</span><a name="l00656"></a>00656 r = (r+(1<<(7-1)))>>7;<a name="l00657"></a>00657 }<a name="l00658"></a>00658 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(n<=0x3c70)<a name="l00659"></a>00659 {<a name="l00660"></a>00660 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="group__integers.html#ga5">int32</a> TanTable39E0[] =<a name="l00661"></a>00661 {<a name="l00662"></a>00662 0x01a22f46,0x01a68491,0x01aaf08f,<a name="l00663"></a>00663 0x01af73f5,0x01b40f80,0x01b8c3f6,0x01bd9224,0x01c27ae2,0x01c77f0f,0x01cc9f96,0x01d1dd6a,<a name="l00664"></a>00664 0x01d7398d,0x01dcb509,0x01e250f7,0x01e80e7b,0x01edeec8,0x01f3f321,0x01fa1cd8,0x02006d4d,<a name="l00665"></a>00665 0x0206e5f6,0x020d885a,0x02145612,0x021b50d0,0x02227a5a,0x0229d48f,0x02316169,0x023922fc,<a name="l00666"></a>00666 0x02411b7b,0x02494d38,0x0251baa7,0x025a6660,0x02635323,0x026c83da,0x0275fb9a,0x027fbdac,<a name="l00667"></a>00667 0x0289cd8b,0x02942eec,0x029ee5c0,0x02a9f63c,0x02b564da,0x02c13664,0x02cd6ff9,0x02da1711,<a name="l00668"></a>00668 0x02e7318b<a name="l00669"></a>00669 };<a name="l00670"></a>00670 r = <a class="code" href="fix_8cpp.html#a0">Interpolate</a>(TanTable39E0,n-0x39e0,4);<a name="l00671"></a>00671 <span class="comment">// scale result to 16 bits (from the 22 bit precision used in lookup table)</span><a name="l00672"></a>00672 r = (r+(1<<(6-1)))>>6;<a name="l00673"></a>00673 }<a name="l00674"></a>00674 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(n<=0x3df0)<a name="l00675"></a>00675 {<a name="l00676"></a>00676 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="group__integers.html#ga5">int32</a> TanTable3C70[] =<a name="l00677"></a>00677 {<a name="l00678"></a>00678 0x0169dabd,0x016d0b89,0x01704ac0,<a name="l00679"></a>00679 0x017398c5,0x0176f600,0x017a62d9,0x017ddfbf,0x01816d24,0x01850b7f,0x0188bb49,0x018c7d04,<a name="l00680"></a>00680 0x01905133,0x01943860,0x0198331a,0x019c41f6,0x01a0658d,0x01a49e82,0x01a8ed7c,0x01ad5328,<a name="l00681"></a>00681 0x01b1d03c,0x01b66576,0x01bb139b,0x01bfdb79,0x01c4bde6,0x01c9bbc2,0x01ced5f9,0x01d40d7d,<a name="l00682"></a>00682 0x01d96350,0x01ded87c,0x01e46e1a,0x01ea254f,0x01efff4d,0x01f5fd57,0x01fc20be,0x02026ae5,<a name="l00683"></a>00683 0x0208dd40,0x020f7955,0x021640bf,0x021d352e,0x0224586a,0x022bac51,0x023332de,0x023aee23,<a name="l00684"></a>00684 0x0242e055,0x024b0bc4,0x025372e6,0x025c1852,0x0264fec8,0x026e2932,0x02779aa6,0x0281566b<a name="l00685"></a>00685 };<a name="l00686"></a>00686 r = <a class="code" href="fix_8cpp.html#a0">Interpolate</a>(TanTable3C70,n-0x3c70,3);<a name="l00687"></a>00687 <span class="comment">// scale result to 16 bits (from the 21 bit precision used in lookup table)</span><a name="l00688"></a>00688 r = (r+(1<<(5-1)))>>5;<a name="l00689"></a>00689 }<a name="l00690"></a>00690 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(n<=0x3ebc)<a name="l00691"></a>00691 {<a name="l00692"></a>00692 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="group__integers.html#ga5">int32</a> TanTable3DF0[] =<a name="l00693"></a>00693 {<a name="l00694"></a>00694 0x01396c6c,0x013bcd53,0x013e3784,0x0140ab35,0x014328a0,<a name="l00695"></a>00695 0x0145afff,0x0148418d,0x014add89,0x014d8433,0x015035cd,0x0152f29c,0x0155bae5,0x01588ef2,<a name="l00696"></a>00696 0x015b6f0e,0x015e5b87,0x016154ad,0x01645ad4,0x01676e52,0x016a8f7f,0x016dbeb8,0x0170fc5c,<a name="l00697"></a>00697 0x017448cf,0x0177a477,0x017b0fbd,0x017e8b10,0x018216e2,0x0185b3aa,0x018961e2,0x018d220a,<a name="l00698"></a>00698 0x0190f4a6,0x0194da41,0x0198d368,0x019ce0b1,0x01a102b6,0x01a53a18,0x01a9877e,0x01adeb98,<a name="l00699"></a>00699 0x01b26719,0x01b6fac1,0x01bba753,0x01c06d9e,0x01c54e79,0x01ca4ac3,0x01cf6366,0x01d49958,<a name="l00700"></a>00700 0x01d9ed98,0x01df6132,0x01e4f53d,0x01eaaadf,0x01f0834b,0x01f67fc3,0x01fca197,0x0202ea2c,<a name="l00701"></a>00701 0x02095af4<a name="l00702"></a>00702 };<a name="l00703"></a>00703 r = <a class="code" href="fix_8cpp.html#a0">Interpolate</a>(TanTable3DF0,n-0x3df0,2);<a name="l00704"></a>00704 <span class="comment">// scale result to 16 bits (from the 20 bit precision used in lookup table)</span><a name="l00705"></a>00705 r = (r+(1<<(4-1)))>>4;<a name="l00706"></a>00706 }<a name="l00707"></a>00707 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(n<=0x3f90)<a name="l00708"></a>00708 {<a name="l00709"></a>00709 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="group__integers.html#ga5">int32</a> TanTable3EBC[] =<a name="l00710"></a>00710 {<a name="l00711"></a>00711 0x00ffe079,0x01017516,0x01030eb9,<a name="l00712"></a>00712 0x0104ad7a,0x01065172,0x0107fabb,0x0109a96e,0x010b5da7,0x010d1780,0x010ed715,0x01109c84,<a name="l00713"></a>00713 0x011267ea,0x01143965,0x01161115,0x0117ef18,0x0119d391,0x011bbea1,0x011db06b,0x011fa912,<a name="l00714"></a>00714 0x0121a8bb,0x0123af8b,0x0125bda9,0x0127d33e,0x0129f071,0x012c156d,0x012e425e,0x0130776f,<a name="l00715"></a>00715 0x0132b4cf,0x0134faae,0x0137493b,0x0139a0a9,0x013c012c,0x013e6af8,0x0140de45,0x01435b4b,<a name="l00716"></a>00716 0x0145e245,0x0148736f,0x014b0f06,0x014db54c,0x01506681,0x015322eb,0x0155ead0,0x0158be78,<a name="l00717"></a>00717 0x015b9e30,0x015e8a44,0x01618306,0x016488c8,0x01679be1,0x016abcaa,0x016deb7e,0x017128be,<a name="l00718"></a>00718 0x017474cc,0x0177d00f,0x017b3af1,0x017eb5e0,0x0182414d,0x0185ddb0,0x01898b84,0x018d4b47,<a name="l00719"></a>00719 0x01911d7f,0x019502b5,0x0198fb77,0x019d085b,0x01a129fc,0x01a560f9,0x01a9adfb,0x01ae11b0,<a name="l00720"></a>00720 0x01b28ccd,0x01b72010,0x01bbcc3e,0x01c09224,0x01c5729a,0x01ca6e80,0x01cf86bf,0x01d4bc4c,<a name="l00721"></a>00721 0x01da1028,0x01df835d,0x01e51704,0x01eacc41,0x01f0a448,0x01f6a05b,0x01fcc1cc,0x020309fc,<a name="l00722"></a>00722 0x02097a5f,0x0210147d,0x0216d9f0,0x021dcc68,0x0224edad,0x022c3f9d,0x0233c433,0x023b7d81,<a name="l00723"></a>00723 0x02436dbc,0x024b9734,0x0253fc5f,0x025c9fd4,0x02658453,0x026eacc6,0x027
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?