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

📄 fft32.cpp

📁 这是我本人编写的一个32位定点小数运算的函数库。对于没有浮点运算器的场合
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#else
                return (long) value * (long)numer/(long)denom;
#endif
}
*/
/*
        fix_dot() - dot product of two long arrays
*/

/*
long fix_dot32(long *hpa, long *pb, long n)
{
        long *pa;
        long sum;
        register long a,b;
        unsigned long seg,off;

        sum = 0L;
        while(n--) {
                a = *pa++;
                b = *pb++;
                a=dosFIX_MPY32(a,b);
                sum += a;
        }

        return (long)sum;
#ifdef  DOS
        asm     push    ds
        asm     lds     si,hpa
        asm     les     di,pb
        asm     xor     bx,bx

        asm     xor     cx,cx

loop:   
        asm     lodsw
.
        asm     imul    word ptr es:[di]
        asm     add     bx,ax
        asm     adc     cx,dx
        asm     jo      overflow
        asm     add     di,2
        asm     dec     word ptr n
        asm     jg      loop

        asm     add     bx,bx
        asm     adc     cx,cx
        asm     jo      overflow

        asm     pop     ds
        return _CX;

overflow:
        asm     mov     cx,7FFFH
        asm     adc     cx,0

        asm     pop     ds
        return _CX;
#endif

}
*/

#if N_WAVE != 1024
        ERROR: N_WAVE != 1024
#endif
long Sinewave32[1024] = {
	0, 13176712, 26352928, 39528151, 52701887, 65873638,
	79042909, 92209205, 105372028, 118530885, 131685278, 144834714,
	157978697, 171116733, 184248325, 197372981, 210490206, 223599506,
	236700388, 249792358, 262874923, 275947592, 289009871, 302061269,
	315101295, 328129457, 341145265, 354148230, 367137861, 380113669,
	393075166, 406021865, 418953276, 431868915, 444768294, 457650927,
	470516330, 483364019, 496193509, 509004318, 521795963, 534567963,
	547319836, 560051104, 572761285, 585449903, 598116479, 610760536,
	623381598, 635979190, 648552838, 661102068, 673626408, 686125387,
	698598533, 711045377, 723465451, 735858287, 748223418, 760560380,
	772868706, 785147934, 797397602, 809617249, 821806413, 833964638,
	846091463, 858186435, 870249095, 882278992, 894275671, 906238681,
	918167572, 930061894, 941921200, 953745043, 965532978, 977284562,
	988999351, 1000676905, 1012316784, 1023918550, 1035481766, 1047005996,
	1058490808, 1069935768, 1081340445, 1092704411, 1104027237, 1115308496,
	1126547765, 1137744621, 1148898640, 1160009405, 1171076495, 1182099496,
	1193077991, 1204011567, 1214899813, 1225742318, 1236538675, 1247288478,
	1257991320, 1268646800, 1279254516, 1289814068, 1300325060, 1310787095,
	1321199781, 1331562723, 1341875533, 1352137822, 1362349204, 1372509294,
	1382617710, 1392674072, 1402678000, 1412629117, 1422527051, 1432371426,
	1442161874, 1451898025, 1461579514, 1471205974, 1480777044, 1490292364,
	1499751576, 1509154322, 1518500250, 1527789007, 1537020244, 1546193612,
	1555308768, 1564365367, 1573363068, 1582301533, 1591180426, 1599999411,
	1608758157, 1617456335, 1626093616, 1634669676, 1643184191, 1651636841,
	1660027308, 1668355276, 1676620432, 1684822463, 1692961062, 1701035922,
	1709046739, 1716993211, 1724875040, 1732691928, 1740443581, 1748129707,
	1755750017, 1763304224, 1770792044, 1778213194, 1785567396, 1792854372,
	1800073849, 1807225553, 1814309216, 1821324572, 1828271356, 1835149306,
	1841958164, 1848697674, 1855367581, 1861967634, 1868497586, 1874957189,
	1881346202, 1887664383, 1893911494, 1900087301, 1906191570, 1912224073,
	1918184581, 1924072871, 1929888720, 1935631910, 1941302225, 1946899451,
	1952423377, 1957873796, 1963250501, 1968553292, 1973781967, 1978936331,
	1984016189, 1989021350, 1993951625, 1998806829, 2003586779, 2008291295,
	2012920201, 2017473321, 2021950484, 2026351522, 2030676269, 2034924562,
	2039096241, 2043191150, 2047209133, 2051150040, 2055013723, 2058800036,
	2062508835, 2066139983, 2069693342, 2073168777, 2076566160, 2079885360,
	2083126254, 2086288720, 2089372638, 2092377892, 2095304370, 2098151960,
	2100920556, 2103610054, 2106220352, 2108751352, 2111202959, 2113575080,
	2115867626, 2118080511, 2120213651, 2122266967, 2124240380, 2126133817,
	2127947206, 2129680480, 2131333572, 2132906420, 2134398966, 2135811153,
	2137142927, 2138394240, 2139565043, 2140655293, 2141664948, 2142593971,
	2143442326, 2144209982, 2144896910, 2145503083, 2146028480, 2146473080,
	2146836866, 2147119825, 2147321946, 2147443222, 2147483647, 2147443222,
	2147321946, 2147119825, 2146836866, 2146473080, 2146028480, 2145503083,
	2144896910, 2144209982, 2143442326, 2142593971, 2141664948, 2140655293,
	2139565043, 2138394240, 2137142927, 2135811153, 2134398966, 2132906420,
	2131333572, 2129680480, 2127947206, 2126133817, 2124240380, 2122266967,
	2120213651, 2118080511, 2115867626, 2113575080, 2111202959, 2108751352,
	2106220352, 2103610054, 2100920556, 2098151960, 2095304370, 2092377892,
	2089372638, 2086288720, 2083126254, 2079885360, 2076566160, 2073168777,
	2069693342, 2066139983, 2062508835, 2058800036, 2055013723, 2051150040,
	2047209133, 2043191150, 2039096241, 2034924562, 2030676269, 2026351522,
	2021950484, 2017473321, 2012920201, 2008291295, 2003586779, 1998806829,
	1993951625, 1989021350, 1984016189, 1978936331, 1973781967, 1968553292,
	1963250501, 1957873796, 1952423377, 1946899451, 1941302225, 1935631910,
	1929888720, 1924072871, 1918184581, 1912224073, 1906191570, 1900087301,
	1893911494, 1887664383, 1881346202, 1874957189, 1868497586, 1861967634,
	1855367581, 1848697674, 1841958164, 1835149306, 1828271356, 1821324572,
	1814309216, 1807225553, 1800073849, 1792854372, 1785567396, 1778213194,
	1770792044, 1763304224, 1755750017, 1748129707, 1740443581, 1732691928,
	1724875040, 1716993211, 1709046739, 1701035922, 1692961062, 1684822463,
	1676620432, 1668355276, 1660027308, 1651636841, 1643184191, 1634669676,
	1626093616, 1617456335, 1608758157, 1599999411, 1591180426, 1582301533,
	1573363068, 1564365367, 1555308768, 1546193612, 1537020244, 1527789007,
	1518500250, 1509154322, 1499751576, 1490292364, 1480777044, 1471205974,
	1461579514, 1451898025, 1442161874, 1432371426, 1422527051, 1412629117,
	1402678000, 1392674072, 1382617710, 1372509294, 1362349204, 1352137822,
	1341875533, 1331562723, 1321199781, 1310787095, 1300325060, 1289814068,
	1279254516, 1268646800, 1257991320, 1247288478, 1236538675, 1225742318,
	1214899813, 1204011567, 1193077991, 1182099496, 1171076495, 1160009405,
	1148898640, 1137744621, 1126547765, 1115308496, 1104027237, 1092704411,
	1081340445, 1069935768, 1058490808, 1047005996, 1035481766, 1023918550,
	1012316784, 1000676905, 988999351, 977284562, 965532978, 953745043,
	941921200, 930061894, 918167572, 906238681, 894275671, 882278992,
	870249095, 858186435, 846091463, 833964638, 821806413, 809617249,
	797397602, 785147934, 772868706, 760560380, 748223418, 735858287,
	723465451, 711045377, 698598533, 686125387, 673626408, 661102068,
	648552838, 635979190, 623381598, 610760536, 598116479, 585449903,
	572761285, 560051104, 547319836, 534567963, 521795963, 509004318,
	496193509, 483364019, 470516330, 457650927, 444768294, 431868915,
	418953276, 406021865, 393075166, 380113669, 367137861, 354148230,
	341145265, 328129457, 315101295, 302061269, 289009871, 275947592,
	262874923, 249792358, 236700388, 223599506, 210490206, 197372981,
	184248325, 171116733, 157978697, 144834714, 131685278, 118530885,
	105372028, 92209205, 79042909, 65873638, 52701887, 39528151,
	26352928, 13176712, 0, -13176711, -26352927, -39528150,
	-52701886, -65873637, -79042908, -92209204, -105372027, -118530884,
	-131685277, -144834713, -157978696, -171116732, -184248324, -197372980,
	-210490205, -223599505, -236700387, -249792357, -262874922, -275947591,
	-289009870, -302061268, -315101294, -328129456, -341145264, -354148229,
	-367137860, -380113668, -393075165, -406021864, -418953275, -431868914,
	-444768293, -457650926, -470516329, -483364018, -496193508, -509004317,
	-521795962, -534567962, -547319835, -560051103, -572761284, -585449902,
	-598116478, -610760535, -623381597, -635979189, -648552837, -661102067,
	-673626407, -686125386, -698598532, -711045376, -723465450, -735858286,
	-748223417, -760560379, -772868705, -785147933, -797397601, -809617248,
	-821806412, -833964637, -846091462, -858186434, -870249094, -882278991,
	-894275670, -906238680, -918167571, -930061893, -941921199, -953745042,
	-965532977, -977284561, -988999350, -1000676904, -1012316783, -1023918549,
	-1035481765, -1047005995, -1058490807, -1069935767, -1081340444, -1092704410,
	-1104027236, -1115308495, -1126547764, -1137744620, -1148898639, -1160009404,
	-1171076494, -1182099495, -1193077990, -1204011566, -1214899812, -1225742317,
	-1236538674, -1247288477, -1257991319, -1268646799, -1279254515, -1289814067,
	-1300325059, -1310787094, -1321199780, -1331562722, -1341875532, -1352137821,
	-1362349203, -1372509293, -1382617709, -1392674071, -1402677999, -1412629116,
	-1422527050, -1432371425, -1442161873, -1451898024, -1461579513, -1471205973,
	-1480777043, -1490292363, -1499751575, -1509154321, -1518500249, -1527789006,
	-1537020243, -1546193611, -1555308767, -1564365366, -1573363067, -1582301532,
	-1591180425, -1599999410, -1608758156, -1617456334, -1626093615, -1634669675,
	-1643184190, -1651636840, -1660027307, -1668355275, -1676620431, -1684822462,
	-1692961061, -1701035921, -1709046738, -1716993210, -1724875039, -1732691927,
	-1740443580, -1748129706, -1755750016, -1763304223, -1770792043, -1778213193,
	-1785567395, -1792854371, -1800073848, -1807225552, -1814309215, -1821324571,
	-1828271355, -1835149305, -1841958163, -1848697673, -1855367580, -1861967633,
	-1868497585, -1874957188, -1881346201, -1887664382, -1893911493, -1900087300,
	-1906191569, -1912224072, -1918184580, -1924072870, -1929888719, -1935631909,
	-1941302224, -1946899450, -1952423376, -1957873795, -1963250500, -1968553291,
	-1973781966, -1978936330, -1984016188, -1989021349, -1993951624, -1998806828,
	-2003586778, -2008291294, -2012920200, -2017473320, -2021950483, -2026351521,
	-2030676268, -2034924561, -2039096240, -2043191149, -2047209132, -2051150039,
	-2055013722, -2058800035, -2062508834, -2066139982, -2069693341, -2073168776,
	-2076566159, -2079885359, -2083126253, -2086288719, -2089372637, -2092377891,
	-2095304369, -2098151959, -2100920555, -2103610053, -2106220351, -2108751351,
	-2111202958, -2113575079, -2115867625, -2118080510, -2120213650, -2122266966,
	-2124240379, -2126133816, -2127947205, -2129680479, -2131333571, -2132906419,
	-2134398965, -2135811152, -2137142926, -2138394239, -2139565042, -2140655292,
	-2141664947, -2142593970, -2143442325, -2144209981, -2144896909, -2145503082,
	-2146028479, -2146473079, -2146836865, -2147119824, -2147321945, -2147443221,
	-2147483647, -2147443221, -2147321945, -2147119824, -2146836865, -2146473079,
	-2146028479, -2145503082, -2144896909, -2144209981, -2143442325, -2142593970,
	-2141664947, -2140655292, -2139565042, -2138394239, -2137142926, -2135811152,
	-2134398965, -2132906419, -2131333571, -2129680479, -2127947205, -2126133816,
	-2124240379, -2122266966, -2120213650, -2118080510, -2115867625, -2113575079,
	-2111202958, -2108751351, -2106220351, -2103610053, -2100920555, -2098151959,
	-2095304369, -2092377891, -2089372637, -2086288719, -2083126253, -2079885359,
	-2076566159, -2073168776, -2069693341, -2066139982, -2062508834, -2058800035,
	-2055013722, -2051150039, -2047209132, -2043191149, -2039096240, -2034924561,
	-2030676268, -2026351521, -2021950483, -2017473320, -2012920200, -2008291294,
	-2003586778, -1998806828, -1993951624, -1989021349, -1984016188, -1978936330,
	-1973781966, -1968553291, -1963250500, -1957873795, -1952423376, -1946899450,
	-1941302224, -1935631909, -1929888719, -1924072870, -1918184580, -1912224072,
	-1906191569, -1900087300, -1893911493, -1887664382, -1881346201, -1874957188,
	-1868497585, -1861967633, -1855367580, -1848697673, -1841958163, -1835149305,
	-1828271355, -1821324571, -1814309215, -1807225552, -1800073848, -1792854371,
	-1785567395, -1778213193, -1770792043, -1763304223, -1755750016, -1748129706,
	-1740443580, -1732691927, -1724875039, -1716993210, -1709046738, -1701035921,
	-1692961061, -1684822462, -1676620431, -1668355275, -1660027307, -1651636840,
	-1643184190, -1634669675, -1626093615, -1617456334, -1608758156, -1599999410,
	-1591180425, -1582301532, -1573363067, -1564365366, -1555308767, -1546193611,
	-1537020243, -1527789006, -1518500249, -1509154321, -1499751575, -1490292363,
	-1480777043, -1471205973, -1461579513, -1451898024, -1442161873, -1432371425,
	-1422527050, -1412629116, -1402677999, -1392674071, -1382617709, -1372509293,
	-1362349203, -1352137821, -1341875532, -1331562722, -1321199780, -1310787094,
	-1300325059, -1289814067, -1279254515, -1268646799, -1257991319, -1247288477,
	-1236538674, -1225742317, -1214899812, -1204011566, -1193077990, -1182099495,
	-1171076494, -1160009404, -1148898639, -1137744620, -1126547764, -1115308495,
	-1104027236, -1092704410, -1081340444, -1069935767, -1058490807, -1047005995,
	-1035481765, -1023918549, -1012316783, -1000676904, -988999350, -977284561,
	-965532977, -953745042, -941921199, -930061893, -918167571, -906238680,
	-894275670, -882278991, -870249094, -858186434, -846091462, -833964637,
	-821806412, -809617248, -797397601, -785147933, -772868705, -760560379,
	-748223417, -735858286, -723465450, -711045376, -698598532, -686125386,
	-673626407, -661102067, -648552837, -635979189, -623381597, -610760535,
	-598116478, -585449902, -572761284, -560051103, -547319835, -534567962,
	-521795962, -509004317, -496193508, -483364018, -470516329, -457650926,
	-444768293, -431868914, -418953275, -406021864, -393075165, -380113668,
	-367137860, -354148229, -341145264, -328129456, -315101294, -302061268,
	-289009870, -275947591, -262874922, -249792357, -236700387, -223599505,
	-210490205, -197372980, -184248324, -171116732, -157978696, -144834713,
	-131685277, -118530884, -105372027, -92209204, -79042908, -65873637,
	-52701886, -39528150, -26352927, -13176711
};
/*
#if N_LOUD != 100
        ERROR: N_LOUD != 100
#endif
long Loudampl[100] = {
  32767,  29203,  26027,  23197,  20674,  18426,  16422,  14636,
  13044,  11626,  10361,   9234,   8230,   7335,   6537,   5826,
   5193,   4628,   4125,   3676,   3276,   2920,   2602,   2319,
   2067,   1842,   1642,   1463,   1304,   1162,   1036,    923,
    823,    733,    653,    582,    519,    462,    412,    367,
    327,    292,    260,    231,    206,    184,    164,    146,
    130,    116,    103,     92,     82,     73,     65,     58,
     51,     46,     41,     36,     32,     29,     26,     23,
     20,     18,     16,     14,     13,     11,     10,      9,
      8,      7,      6,      5,      5,      4,      4,      3,
      3,      2,      2,      2,      2,      1,      1,      1,
      1,      1,      1,      0,      0,      0,      0,      0,
      0,      0,      0,      0,
};
*/

long FixSin32( int x)
{
	if( x>=0) return Sinewave32[x%1024];
	else return -Sinewave32[(-x)%1024];
}

long FixCos32( int x)
{
	return FixSin32(256-x);
}

//#endif

⌨️ 快捷键说明

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