📄 fft32.cpp
字号:
#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 + -