home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1997 #3
/
amigamamagazinepolishissue03-1
/
ma_1995
/
08
/
ami036b.txt
< prev
next >
Wrap
Text File
|
1997-04-07
|
7KB
|
454 lines
<l>
; obliczanie widma na liczbach zespolonych dla 1024 pr.
; (c) copyright 1995 by: LECH BALCERZAK vel WILLIAM MOBIUS
; Procedury tu umieszczone mogâ byê stosowane wyîâcznie
; do wîasnych potrzeb. Wykorzystanie ich do dziaîalnoôci
; zarobkowej wymaga zgody autora.
x_adr dc.l 0
jx_adr dc.l 0
start
movem.l d0-a6,-(sp)
move.l x_adr(PC),a4
move.l jx_adr(PC),a5
move.w #512*4,a2
move.w #4095,d5
move.w #-25,d6
bsr.w fft_computing
move.w #256*4,a2
move.w #4095,d5
move.w #-50,d6
bsr.b fft_computing
move.w #128*4,a2
move.w #4094,d5
move.w #-100,d6
bsr.b fft_computing
move.w #64*4,a2
move.w #4091,d5
move.w #-200,d6
bsr.b fft_computing
move.w #32*4,a2
move.w #4076,d5
move.w #-401,d6
bsr.b fft_computing
move.w #16*4,a2
move.w #4017,d5
move.w #-799,d6
bsr.b fft_computing
move.w #8*4,a2
move.w #3784,d5
move.w #-1567,d6
bsr.b fft_computing
move.w #4*4,a2
move.w #2896,d5
move.w #-2896,d6
bsr.b fft_computing
move.w #2*4,a2
move.w #0,d5
move.w #-4096,d6
bsr.b fft_computing
move.w #1*4,a2
move.w #-4096,d5
move.w #0,d6
bsr.b fft_computing
bsr.w fft_sort
bsr.w fft_skal
movem.l (sp)+,d0-a6
rts
fft_computing
move.w #4096,d0
move.w #0,d1
move.w #1,a3
next_j
move.w a3,d3
subq.w #1,d3
next_i
move.w d3,d4
add.w a2,d4
move.w 2(a4,d3.w),d2
add.w 2(a4,d4.w),d2
move.w d2,a6
move.w 2(a5,d3.w),d2
add.w 2(a5,d4.w),d2
move.w d2,a1
move.w 2(a4,d3.w),d2
sub.w 2(a4,d4.w),d2
move.w d2,a0
muls d0,d2
asr.l #8,d2
asr.l #4,d2
move.w 2(a5,d3.w),d7
sub.w 2(a5,d4.w),d7
muls d1,d7
asr.l #8,d7
asr.l #4,d7
sub.w d7,d2
move.w d2,2(a4,d4.w)
move.w 2(a5,d3.w),d2
sub.w 2(a5,d4.w),d2
muls d0,d2
asr.l #8,d2
asr.l #4,d2
move.w a0,d7
muls d1,d7
asr.l #8,d7
asr.l #4,d7
add.w d7,d2
move.w d2,2(a5,d4.w)
move.w a6,2(a4,d3.w)
move.w a1,2(a5,d3.w)
add.w a2,d3
add.w a2,d3
cmp.w #1024*4,d3
bcs.b next_i
move.w d0,d2
muls d5,d2
asr.l #8,d2
asr.l #4,d2
move.w d1,d7
muls d6,d7
asr.l #8,d7
asr.l #4,d7
sub.w d7,d2
move.w d2,a0
move.w d1,d2
muls d5,d2
asr.l #8,d2
asr.l #4,d2
move.w d0,d7
muls d6,d7
asr.l #8,d7
asr.l #4,d7
add.w d7,d2
move.w d2,d1
move.w a0,d0
addq.w #4,a3
move.w a3,d7
cmp.w a2,d7
bls.w next_j
rts
fft_sort
lea sort_tab(PC),a3
next_double
move.w (a3)+,d0
bmi.b end_sort
move.w (a3)+,d1
move.w 2(a4,d0.w),d2
move.w 2(a4,d1.w),2(a4,d0.w)
move.w d2,2(a4,d1.w)
move.w 2(a5,d0.w),d2
move.w 2(a5,d1.w),2(a5,d0.w)
move.w d2,2(a5,d1.w)
bra.b next_double
end_sort
rts
fft_skal
moveq.l #0,d0
next_skal
move.w 2(a4,d0.w),d1
asr.w #5,d1
ext.l d1
move.l d1,(a4,d0.w)
move.w 2(a5,d0.w),d1
asr.w #5,d1
ext.l d1
move.l d1,(a5,d0.w)
add.w #4,d0
cmp.w #513*4,d0
bcs.b next_skal
rts
sort_tab
dc.w 4,2048,8,1024,12,3072,16,512,20,2560,24,1536,28,3584
dc.w 32,256,36,2304,40,1280,44,3328,48,768,52,2816,56,1792
dc.w 60,3840,64,128,68,2176,72,1152,76,3200,80,640,84,2688
dc.w 88,1664,92,3712,96,384,100,2432,104,1408,108,3456,112,896
dc.w 116,2944,120,1920,124,3968,132,2112,136,1088,140,3136
dc.w 144,576,148,2624,152,1600,156,3648,160,320,164,2368
dc.w 168,1344,172,3392,176,832,180,2880,184,1856,188,3904
dc.w 196,2240,200,1216,204,3264,208,704,212,2752,216,1728
dc.w 220,3776,224,448,228,2496,232,1472,236,3520,240,960
dc.w 244,3008,248,1984,252,4032,260,2080,264,1056,268,3104
dc.w 272,544,276,2592,280,1568,284,3616,292,2336,296,1312
dc.w 300,3360,304,800,308,2848,312,1824,316,3872,324,2208
dc.w 328,1184,332,3232,336,672,340,2720,344,1696,348,3744
dc.w 352,416,356,2464,360,1440,364,3488,368,928,372,2976
dc.w 376,1952,380,4000,388,2144,392,1120,396,3168,400,608
dc.w 404,2656,408,1632,412,3680,420,2400,424,1376,428,3424
dc.w 432,864,436,2912,440,1888,444,3936,452,2272,456,1248
dc.w 460,3296,464,736,468,2784,472,1760,476,3808,484,2528
dc.w 488,1504,492,3552,496,992,500,3040,504,2016,508,4064
dc.w 516,2064,520,1040,524,3088,532,2576,536,1552,540,3600
dc.w 548,2320,552,1296,556,3344,560,784,564,2832,568,1808
dc.w 572,3856,580,2192,584,1168,588,3216,592,656,596,2704
dc.w 600,1680,604,3728,612,2448,616,1424,620,3472,624,912
dc.w 628,2960,632,1936,636,3984,644,2128,648,1104,652,3152
dc.w 660,2640,664,1616,668,3664,676,2384,680,1360,684,3408
dc.w 688,848,692,2896,696,1872,700,3920,708,2256,712,1232
dc.w 716,3280,724,2768,728,1744,732,3792,740,2512,744,1488
dc.w 748,3536,752,976,756,3024,760,2000,764,4048,772,2096
dc.w 776,1072,780,3120,788,2608,792,1584,796,3632,804,2352
dc.w 808,1328,812,3376,820,2864,824,1840,828,3888,836,2224
dc.w 840,1200,844,3248,852,2736,856,1712,860,3760,868,2480
dc.w 872,1456,876,3504,880,944,884,2992,888,1968,892,4016
dc.w 900,2160,904,1136,908,3184,916,2672,920,1648,924,3696
dc.w 932,2416,936,1392,940,3440,948,2928,952,1904,956,3952
dc.w 964,2288,968,1264,972,3312,980,2800,984,1776,988,3824
dc.w 996,2544,1000,1520,1004,3568,1012,3056,1016,2032
dc.w 1020,4080,1028,2056,1036,3080,1044,2568,1048,1544
dc.w 1052,3592,1060,2312,1064,1288,1068,3336,1076,2824
dc.w 1080,1800,1084,3848,1092,2184,1096,1160,1100,3208
dc.w 1108,2696,1112,1672,1116,3720,1124,2440,1128,1416
dc.w 1132,3464,1140,2952,1144,1928,1148,3976,1156,2120
dc.w 1164,3144,1172,2632,1176,1608,1180,3656,1188,2376
dc.w 1192,1352,1196,3400,1204,2888,1208,1864,1212,3912
dc.w 1220,2248,1228,3272,1236,2760,1240,1736,1244,3784
dc.w 1252,2504,1256,1480,1260,3528,1268,3016,1272,1992
dc.w 1276,4040,1284,2088,1292,3112,1300,2600,1304,1576
dc.w 1308,3624,1316,2344,1324,3368,1332,2856,1336,1832
dc.w 1340,3880,1348,2216,1356,3240,1364,2728,1368,1704
dc.w 1372,3752,1380,2472,1384,1448,1388,3496,1396,2984
dc.w 1400,1960,1404,4008,1412,2152,1420,3176,1428,2664
dc.w 1432,1640,1436,3688,1444,2408,1452,3432,1460,2920
dc.w 1464,1896,1468,3944,1476,2280,1484,3304,1492,2792
dc.w 1496,1768,1500,3816,1508,2536,1516,3560,1524,3048
dc.w 1528,2024,1532,4072,1540,2072,1548,3096,1556,2584
dc.w 1564,3608,1572,2328,1580,3352,1588,2840,1592,1816
dc.w 1596,3864,1604,2200,1612,3224,1620,2712,1624,1688
dc.w 1628,3736,1636,2456,1644,3480,1652,2968,1656,1944
dc.w 1660,3992,1668,2136,1676,3160,1684,2648,1692,3672
dc.w 1700,2392,1708,3416,1716,2904,1720,1880,1724,3928
dc.w 1732,2264,1740,3288,1748,2776,1756,3800,1764,2520
dc.w 1772,3544,1780,3032,1784,2008,1788,4056,1796,2104
dc.w 1804,3128,1812,2616,1820,3640,1828,2360,1836,3384
dc.w 1844,2872,1852,3896,1860,2232,1868,3256,1876,2744
dc.w 1884,3768,1892,2488,1900,3512,1908,3000,1912,1976
dc.w 1916,4024,1924,2168,1932,3192,1940,2680,1948,3704
dc.w 1956,2424,1964,3448,1972,2936,1980,3960,1988,2296
dc.w 1996,3320,2004,2808,2012,3832,2020,2552,2028,3576
dc.w 2036,3064,2044,4088,-1