home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 September / Macworld (1997-09).dmg / Serious Software / Cherwell Scientific Demos / pro Fit / pro Fit 5.0 demo (68k).sea / pro Fit 5.0 demo (68k) / External Modules / External modules sources / C / FFT.c next >
MacBinary  |  1996-04-28  |  11.0 KB  |  [TEXT/KAHL]

view JSON data     |     view as text     |     open on a Mac     |     open on a PC

This file was processed as: MacBinary (archive/macBinary).

You can browse this item here: FFT.c

ConfidenceProgramDetectionMatch TypeSupport
66% dexvert Compact Compressed (Unix) (archive/compact) ext Supported
10% dexvert MacBinary (archive/macBinary) fallback Supported
10% dexvert Jesper Olsen Module (music/jesperOlsen) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Sun Apr 28 15:59:46 1996, modified Sun Apr 28 15:59:46 1996, creator Think C, type ASCII, 10519 bytes "FFT.c" , at 0x2997 410 bytes resource default (weak)
99% file data default
49% TrID Macintosh plain text (MacBinary) default
33% TrID TTComp archive compressed (bin-2K) default (weak)
16% TrID MacBinary 2 default (weak)
0% TrID Sybase iAnywhere database files default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[KAHL]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 05 46 46 54 2e 63 00 | 00 00 00 00 00 00 00 00 |..FFT.c.|........|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4b 41 48 | 4c 01 00 00 00 00 00 00 |.TEXTKAH|L.......|
|00000050| 00 00 00 00 00 29 17 00 | 00 01 9a ad a9 7e b2 ad |.....)..|.....~..|
|00000060| a9 7e b2 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.~......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 d2 a1 00 00 |........|........|
|00000080| 2f 2a 0d 20 2a 20 54 68 | 69 73 20 75 6e 69 74 20 |/*. * Th|is unit |
|00000090| 63 6f 6e 74 61 69 6e 73 | 20 74 68 65 20 66 75 6e |contains| the fun|
|000000a0| 63 74 69 6f 6e 20 27 66 | 66 74 27 20 77 68 69 63 |ction 'f|ft' whic|
|000000b0| 68 2c 20 74 6f 67 65 74 | 68 65 72 20 77 69 74 68 |h, toget|her with|
|000000c0| 20 33 35 30 20 61 64 64 | 69 74 69 6f 6e 61 6c 0d | 350 add|itional.|
|000000d0| 20 2a 20 70 72 6f 67 72 | 61 6d 73 20 75 73 65 66 | * progr|ams usef|
|000000e0| 75 6c 20 69 6e 20 73 63 | 69 65 6e 74 69 66 69 63 |ul in sc|ientific|
|000000f0| 20 77 6f 72 6b 2c 20 69 | 73 20 66 6f 75 6e 64 20 | work, i|s found |
|00000100| 69 6e 20 74 68 65 20 62 | 6f 6f 6b 20 27 4e 75 6d |in the b|ook 'Num|
|00000110| 65 72 69 63 61 6c 20 52 | 65 63 69 70 65 73 3a 0d |erical R|ecipes:.|
|00000120| 20 2a 20 54 68 65 20 41 | 72 74 20 6f 66 20 53 63 | * The A|rt of Sc|
|00000130| 69 65 6e 74 69 66 69 63 | 20 43 6f 6d 70 75 74 69 |ientific| Computi|
|00000140| 6e 67 27 2c 20 61 76 61 | 69 6c 61 62 6c 65 20 66 |ng', ava|ilable f|
|00000150| 72 6f 6d 20 43 61 6d 62 | 72 69 64 67 65 20 55 6e |rom Camb|ridge Un|
|00000160| 69 76 65 72 73 69 74 79 | 20 50 72 65 73 73 2e 0d |iversity| Press..|
|00000170| 20 2a 20 49 74 20 69 73 | 20 75 73 65 64 20 68 65 | * It is| used he|
|00000180| 72 65 20 62 79 20 70 65 | 72 6d 69 73 73 69 6f 6e |re by pe|rmission|
|00000190| 20 6f 66 20 74 68 65 20 | 61 75 74 68 6f 72 73 2e | of the |authors.|
|000001a0| 0d 20 2a 2f 0d 20 0d 20 | 0d 2f 2a 2a 2a 2a 2a 2a |. */. . |./******|
|000001b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000001c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000001d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000001e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000001f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000200| 2a 2f 0d 2f 2a 20 46 46 | 54 2e 63 20 20 20 20 20 |*/./* FF|T.c |
|00000210| 20 20 20 09 09 20 20 20 | 20 20 20 20 20 20 20 20 | .. | |
|00000220| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000230| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000240| 20 20 20 20 20 20 20 20 | 20 20 20 20 09 20 20 20 | | . |
|00000250| 20 20 20 20 2a 2f 0d 2f | 2a 20 20 20 20 20 20 20 | */./|* |
|00000260| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000270| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000280| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000290| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000002a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2a 2f | | */|
|000002b0| 0d 2f 2a 20 56 65 72 73 | 69 6f 6e 20 32 36 2e 39 |./* Vers|ion 26.9|
|000002c0| 2e 39 34 20 20 09 20 20 | 20 20 20 20 20 20 20 20 |.94 . | |
|000002d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000002e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000002f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000300| 20 20 20 20 20 2a 2f 0d | 2f 2a 2a 2a 2a 2a 2a 2a | */.|/*******|
|00000310| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000320| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000330| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000340| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000350| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000360| 2f 0d 0d 23 69 6e 63 6c | 75 64 65 20 22 70 72 6f |/..#incl|ude "pro|
|00000370| 46 69 74 5f 69 6e 74 65 | 72 66 61 63 65 2e 68 22 |Fit_inte|rface.h"|
|00000380| 0d 23 69 6e 63 6c 75 64 | 65 20 3c 6d 61 74 68 2e |.#includ|e <math.|
|00000390| 68 3e 0d 0d 0d 0d 73 74 | 61 74 69 63 20 64 6f 75 |h>....st|atic dou|
|000003a0| 62 6c 65 20 73 71 72 28 | 64 6f 75 62 6c 65 20 78 |ble sqr(|double x|
|000003b0| 29 20 7b 72 65 74 75 72 | 6e 20 28 78 2a 78 29 3b |) {retur|n (x*x);|
|000003c0| 7d 0d 0d 73 74 61 74 69 | 63 20 76 6f 69 64 20 66 |}..stati|c void f|
|000003d0| 66 74 20 28 64 6f 75 62 | 6c 65 2a 20 78 2c 20 69 |ft (doub|le* x, i|
|000003e0| 6e 74 20 6e 75 6d 2c 63 | 68 61 72 20 69 6e 76 65 |nt num,c|har inve|
|000003f0| 72 73 65 29 0d 09 7b 0d | 09 09 6c 6f 6e 67 20 69 |rse)..{.|..long i|
|00000400| 69 2c 20 6a 6a 2c 20 6e | 2c 20 6d 6d 61 78 2c 20 |i, jj, n|, mmax, |
|00000410| 6d 2c 20 6a 2c 20 69 73 | 74 65 70 2c 20 69 3b 0d |m, j, is|tep, i;.|
|00000420| 09 09 64 6f 75 62 6c 65 | 20 77 74 65 6d 70 2c 20 |..double| wtemp, |
|00000430| 77 72 2c 20 77 70 72 2c | 20 77 70 69 2c 20 77 69 |wr, wpr,| wpi, wi|
|00000440| 2c 20 74 68 65 74 61 2c | 20 74 65 6d 70 72 2c 20 |, theta,| tempr, |
|00000450| 74 65 6d 70 69 3b 0d 09 | 0d 09 09 6e 20 3d 20 6e |tempi;..|...n = n|
|00000460| 75 6d 3b 0d 09 09 6a 20 | 3d 20 31 3b 0d 09 09 66 |um;...j |= 1;...f|
|00000470| 6f 72 20 28 69 69 20 3d | 20 31 3b 69 69 3c 3d 20 |or (ii =| 1;ii<= |
|00000480| 28 6e 20 2f 20 32 29 3b | 69 69 2b 2b 29 20 0d 09 |(n / 2);|ii++) ..|
|00000490| 09 09 7b 0d 09 09 09 09 | 69 20 3d 20 32 20 2a 20 |..{.....|i = 2 * |
|000004a0| 69 69 20 2d 20 31 3b 0d | 09 09 09 09 69 66 20 28 |ii - 1;.|....if (|
|000004b0| 6a 20 3e 20 69 29 20 0d | 09 09 09 09 09 7b 0d 09 |j > i) .|.....{..|
|000004c0| 09 09 09 09 09 74 65 6d | 70 72 20 3d 20 78 5b 6a |.....tem|pr = x[j|
|000004d0| 5d 3b 0d 09 09 09 09 09 | 09 74 65 6d 70 69 20 3d |];......|.tempi =|
|000004e0| 20 78 5b 6a 20 2b 20 31 | 5d 3b 0d 09 09 09 09 09 | x[j + 1|];......|
|000004f0| 09 78 5b 6a 5d 20 3d 20 | 78 5b 69 5d 3b 0d 09 09 |.x[j] = |x[i];...|
|00000500| 09 09 09 09 78 5b 6a 20 | 2b 20 31 5d 20 3d 20 78 |....x[j |+ 1] = x|
|00000510| 5b 69 20 2b 20 31 5d 3b | 0d 09 09 09 09 09 09 78 |[i + 1];|.......x|
|00000520| 5b 69 5d 20 3d 20 74 65 | 6d 70 72 3b 0d 09 09 09 |[i] = te|mpr;....|
|00000530| 09 09 09 78 5b 69 20 2b | 20 31 5d 20 3d 20 74 65 |...x[i +| 1] = te|
|00000540| 6d 70 69 3b 0d 09 09 09 | 09 09 7d 0d 09 09 09 09 |mpi;....|..}.....|
|00000550| 6d 20 3d 20 6e 20 2f 20 | 32 3b 0d 09 09 09 09 77 |m = n / |2;.....w|
|00000560| 68 69 6c 65 20 28 28 6d | 20 3e 3d 20 32 29 20 26 |hile ((m| >= 2) &|
|00000570| 26 20 28 6a 20 3e 20 6d | 29 29 20 0d 09 09 09 09 |& (j > m|)) .....|
|00000580| 09 7b 0d 09 09 09 09 09 | 09 6a 20 3d 20 6a 20 2d |.{......|.j = j -|
|00000590| 20 6d 3b 0d 09 09 09 09 | 09 09 6d 20 3d 20 6d 20 | m;.....|..m = m |
|000005a0| 2f 20 32 3b 0d 09 09 09 | 09 09 7d 0d 09 09 09 09 |/ 2;....|..}.....|
|000005b0| 6a 20 3d 20 6a 20 2b 20 | 6d 3b 0d 09 09 09 09 69 |j = j + |m;.....i|
|000005c0| 66 20 28 54 65 73 74 53 | 74 6f 70 28 29 29 20 09 |f (TestS|top()) .|
|000005d0| 09 2f 2f 20 74 65 73 74 | 20 69 66 20 70 72 6f 46 |.// test| if proF|
|000005e0| 69 74 20 6f 72 20 61 20 | 75 73 65 72 20 74 72 69 |it or a |user tri|
|000005f0| 65 73 20 74 6f 20 73 74 | 6f 70 20 74 68 65 20 70 |es to st|op the p|
|00000600| 72 6f 67 72 61 6d 20 7d | 0d 09 09 09 09 09 67 6f |rogram }|......go|
|00000610| 74 6f 20 65 6e 64 3b 0d | 09 09 09 7d 09 09 2f 2f |to end;.|...}..//|
|00000620| 66 6f 72 20 69 69 20 3d | 20 31 20 74 6f 20 28 6e |for ii =| 1 to (n|
|00000630| 20 64 69 76 20 32 29 20 | 64 6f 20 7d 0d 0d 09 09 | div 2) |do }....|
|00000640| 6d 6d 61 78 20 3d 20 32 | 3b 0d 09 09 77 68 69 6c |mmax = 2|;...whil|
|00000650| 65 20 28 6e 20 3e 20 6d | 6d 61 78 29 20 0d 09 09 |e (n > m|max) ...|
|00000660| 09 7b 0d 09 09 09 09 69 | 73 74 65 70 20 3d 20 32 |.{.....i|step = 2|
|00000670| 20 2a 20 6d 6d 61 78 3b | 0d 09 09 09 09 74 68 65 | * mmax;|.....the|
|00000680| 74 61 20 3d 20 36 2e 32 | 38 33 31 38 35 33 30 37 |ta = 6.2|83185307|
|00000690| 39 35 39 20 2f 20 6d 6d | 61 78 3b 0d 09 09 09 09 |959 / mm|ax;.....|
|000006a0| 69 66 20 28 69 6e 76 65 | 72 73 65 29 20 0d 09 09 |if (inve|rse) ...|
|000006b0| 09 09 09 74 68 65 74 61 | 20 3d 20 2d 74 68 65 74 |...theta| = -thet|
|000006c0| 61 3b 0d 09 09 09 09 77 | 70 72 20 3d 20 2d 32 20 |a;.....w|pr = -2 |
|000006d0| 2a 20 73 71 72 28 73 69 | 6e 28 30 2e 35 20 2a 20 |* sqr(si|n(0.5 * |
|000006e0| 74 68 65 74 61 29 29 3b | 0d 09 09 09 09 77 70 69 |theta));|.....wpi|
|000006f0| 20 3d 20 73 69 6e 28 74 | 68 65 74 61 29 3b 0d 09 | = sin(t|heta);..|
|00000700| 09 09 09 77 72 20 3d 20 | 31 3b 0d 09 09 09 09 77 |...wr = |1;.....w|
|00000710| 69 20 3d 20 30 3b 0d 09 | 09 09 09 66 6f 72 20 28 |i = 0;..|...for (|
|00000720| 69 69 20 3d 20 31 3b 69 | 69 3c 3d 20 28 6d 6d 61 |ii = 1;i|i<= (mma|
|00000730| 78 20 2f 20 32 29 3b 69 | 69 2b 2b 29 20 0d 09 09 |x / 2);i|i++) ...|
|00000740| 09 09 09 7b 0d 09 09 09 | 09 09 09 6d 20 3d 20 32 |...{....|...m = 2|
|00000750| 20 2a 20 69 69 20 2d 20 | 31 3b 0d 09 09 09 09 09 | * ii - |1;......|
|00000760| 09 66 6f 72 20 28 6a 6a | 20 3d 20 30 3b 6a 6a 3c |.for (jj| = 0;jj<|
|00000770| 3d 20 28 28 6e 20 2d 20 | 6d 29 20 2f 20 69 73 74 |= ((n - |m) / ist|
|00000780| 65 70 29 3b 6a 6a 2b 2b | 29 20 0d 09 09 09 09 09 |ep);jj++|) ......|
|00000790| 09 09 7b 0d 09 09 09 09 | 09 09 09 09 69 20 3d 20 |..{.....|....i = |
|000007a0| 6d 20 2b 20 6a 6a 20 2a | 20 69 73 74 65 70 3b 0d |m + jj *| istep;.|
|000007b0| 09 09 09 09 09 09 09 09 | 6a 20 3d 20 69 20 2b 20 |........|j = i + |
|000007c0| 6d 6d 61 78 3b 0d 09 09 | 09 09 09 09 09 09 74 65 |mmax;...|......te|
|000007d0| 6d 70 72 20 3d 20 77 72 | 20 2a 20 78 5b 6a 5d 20 |mpr = wr| * x[j] |
|000007e0| 2d 20 77 69 20 2a 20 78 | 5b 6a 20 2b 20 31 5d 3b |- wi * x|[j + 1];|
|000007f0| 0d 09 09 09 09 09 09 09 | 09 74 65 6d 70 69 20 3d |........|.tempi =|
|00000800| 20 77 72 20 2a 20 78 5b | 6a 20 2b 20 31 5d 20 2b | wr * x[|j + 1] +|
|00000810| 20 77 69 20 2a 20 78 5b | 6a 5d 3b 0d 09 09 09 09 | wi * x[|j];.....|
|00000820| 09 09 09 09 78 5b 6a 5d | 20 3d 20 78 5b 69 5d 20 |....x[j]| = x[i] |
|00000830| 2d 20 74 65 6d 70 72 3b | 0d 09 09 09 09 09 09 09 |- tempr;|........|
|00000840| 09 78 5b 6a 20 2b 20 31 | 5d 20 3d 20 78 5b 69 20 |.x[j + 1|] = x[i |
|00000850| 2b 20 31 5d 20 2d 20 74 | 65 6d 70 69 3b 0d 09 09 |+ 1] - t|empi;...|
|00000860| 09 09 09 09 09 09 78 5b | 69 5d 20 3d 20 78 5b 69 |......x[|i] = x[i|
|00000870| 5d 20 2b 20 74 65 6d 70 | 72 3b 0d 09 09 09 09 09 |] + temp|r;......|
|00000880| 09 09 09 78 5b 69 20 2b | 20 31 5d 20 3d 20 78 5b |...x[i +| 1] = x[|
|00000890| 69 20 2b 20 31 5d 20 2b | 20 74 65 6d 70 69 3b 0d |i + 1] +| tempi;.|
|000008a0| 09 09 09 09 09 09 09 7d | 09 09 2f 2f 20 66 6f 72 |.......}|..// for|
|000008b0| 20 6a 6a 20 3a 3d 20 30 | 20 74 6f 20 28 28 6e 20 | jj := 0| to ((n |
|000008c0| 2d 20 6d 29 20 64 69 76 | 20 69 73 74 65 70 29 20 |- m) div| istep) |
|000008d0| 64 6f 20 7d 0d 09 09 09 | 09 09 09 77 74 65 6d 70 |do }....|...wtemp|
|000008e0| 20 3d 20 77 72 3b 0d 09 | 09 09 09 09 09 77 72 20 | = wr;..|.....wr |
|000008f0| 3d 20 77 72 20 2b 20 77 | 72 20 2a 20 77 70 72 20 |= wr + w|r * wpr |
|00000900| 2d 20 77 69 20 2a 20 77 | 70 69 3b 0d 09 09 09 09 |- wi * w|pi;.....|
|00000910| 09 09 77 69 20 3d 20 77 | 69 20 2b 20 77 69 20 2a |..wi = w|i + wi *|
|00000920| 20 77 70 72 20 2b 20 77 | 74 65 6d 70 20 2a 20 77 | wpr + w|temp * w|
|00000930| 70 69 3b 0d 09 09 09 09 | 09 09 69 66 20 28 54 65 |pi;.....|..if (Te|
|00000940| 73 74 53 74 6f 70 28 29 | 29 20 09 2f 2f 74 65 73 |stStop()|) .//tes|
|00000950| 74 20 69 66 20 70 72 6f | 46 69 74 20 6f 72 20 61 |t if pro|Fit or a|
|00000960| 20 75 73 65 72 20 74 72 | 69 65 73 20 74 6f 20 73 | user tr|ies to s|
|00000970| 74 6f 70 20 74 68 65 20 | 70 72 6f 67 72 61 6d 20 |top the |program |
|00000980| 7d 0d 09 09 09 09 09 09 | 09 67 6f 74 6f 20 65 6e |}.......|.goto en|
|00000990| 64 3b 0d 09 09 09 09 09 | 7d 09 2f 2f 20 66 6f 72 |d;......|}.// for|
|000009a0| 20 69 69 20 3a 3d 20 31 | 20 74 6f 20 28 6d 6d 61 | ii := 1| to (mma|
|000009b0| 78 20 64 69 76 20 32 29 | 20 64 6f 20 7d 0d 09 09 |x div 2)| do }...|
|000009c0| 09 09 6d 6d 61 78 20 3d | 20 69 73 74 65 70 3b 0d |..mmax =| istep;.|
|000009d0| 09 09 09 7d 09 09 2f 2f | 20 77 68 69 6c 65 20 6e |...}..//| while n|
|000009e0| 3e 6d 6d 61 78 20 7d 0d | 09 09 09 65 6e 64 3a 3b |>mmax }.|...end:;|
|000009f0| 0d 09 7d 09 09 2f 2f 20 | 66 66 74 20 7d 0d 0d 0d |..}..// |fft }...|
|00000a00| 73 74 61 74 69 63 09 76 | 6f 69 64 20 73 68 69 66 |static.v|oid shif|
|00000a10| 74 46 46 54 20 28 64 6f | 75 62 6c 65 2a 20 78 2c |tFFT (do|uble* x,|
|00000a20| 20 6c 6f 6e 67 20 6e 70 | 29 0d 09 7b 0d 09 09 64 | long np|)..{...d|
|00000a30| 6f 75 62 6c 65 20 78 78 | 3b 0d 09 09 6c 6f 6e 67 |ouble xx|;...long|
|00000a40| 20 69 3b 0d 09 09 66 6f | 72 20 28 69 20 3d 20 31 | i;...fo|r (i = 1|
|00000a50| 3b 69 3c 3d 20 6e 70 3b | 69 2b 2b 29 20 0d 09 09 |;i<= np;|i++) ...|
|00000a60| 09 7b 0d 09 09 09 09 78 | 78 20 3d 20 78 5b 69 5d |.{.....x|x = x[i]|
|00000a70| 3b 0d 09 09 09 09 78 5b | 69 5d 20 3d 20 78 5b 69 |;.....x[|i] = x[i|
|00000a80| 20 2b 20 6e 70 5d 3b 0d | 09 09 09 09 78 5b 69 20 | + np];.|....x[i |
|00000a90| 2b 20 6e 70 5d 20 3d 20 | 78 78 3b 0d 09 09 09 7d |+ np] = |xx;....}|
|00000aa0| 0d 09 7d 09 2f 2f 20 73 | 68 69 66 74 46 46 54 20 |..}.// s|hiftFFT |
|00000ab0| 7d 0d 0d 73 74 61 74 69 | 63 20 76 6f 69 64 20 43 |}..stati|c void C|
|00000ac0| 6c 65 61 6e 55 70 52 75 | 6e 28 64 6f 75 62 6c 65 |leanUpRu|n(double|
|00000ad0| 2a 20 78 29 0d 7b 09 53 | 74 6f 70 45 78 65 63 75 |* x).{.S|topExecu|
|00000ae0| 74 69 6f 6e 28 29 3b 0d | 09 69 66 20 28 78 21 3d |tion();.|.if (x!=|
|00000af0| 30 29 20 20 7b 53 79 73 | 42 65 65 70 28 31 29 3b |0) {Sys|Beep(1);|
|00000b00| 44 69 73 70 6f 73 65 50 | 74 72 28 28 50 74 72 29 |DisposeP|tr((Ptr)|
|00000b10| 20 78 29 3b 78 3d 30 3b | 7d 0d 7d 0d 0d 0d 0d 2f | x);x=0;|}.}..../|
|00000b20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000b30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000b40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000b50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000b60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000b70| 2a 2a 2a 2a 2a 2a 2a 2f | 0d 0d 76 6f 69 64 20 53 |*******/|..void S|
|00000b80| 65 74 55 70 20 28 09 73 | 68 6f 72 74 2a 20 63 6f |etUp (.s|hort* co|
|00000b90| 6e 73 74 20 6d 6f 64 75 | 6c 65 4b 69 6e 64 2c 09 |nst modu|leKind,.|
|00000ba0| 09 2f 2a 20 73 65 74 20 | 6d 6f 64 75 6c 65 4b 69 |./* set |moduleKi|
|00000bb0| 6e 64 20 74 6f 20 69 73 | 46 75 6e 63 74 69 6f 6e |nd to is|Function|
|00000bc0| 20 6f 72 20 69 73 50 72 | 6f 67 72 61 6d 20 2a 2f | or isPr|ogram */|
|00000bd0| 0d 09 09 09 09 53 74 72 | 32 35 35 20 6e 61 6d 65 |.....Str|255 name|
|00000be0| 2c 09 09 09 09 09 2f 2a | 20 74 68 65 20 6e 61 6d |,...../*| the nam|
|00000bf0| 65 20 6f 66 20 74 68 65 | 20 70 72 6f 67 72 61 6d |e of the| program|
|00000c00| 20 6f 72 20 66 75 6e 63 | 74 69 6f 6e 20 28 70 61 | or func|tion (pa|
|00000c10| 73 63 61 6c 20 73 74 72 | 69 6e 67 29 20 2a 2f 0d |scal str|ing) */.|
|00000c20| 09 09 09 09 6c 6f 6e 67 | 2a 20 63 6f 6e 73 74 20 |....long|* const |
|00000c30| 72 65 71 75 69 72 65 64 | 47 6c 6f 62 61 6c 73 2c |required|Globals,|
|00000c40| 09 2f 2a 20 74 68 65 20 | 6e 75 6d 62 65 72 20 6f |./* the |number o|
|00000c50| 66 20 62 79 74 65 73 20 | 74 6f 20 62 65 20 61 6c |f bytes |to be al|
|00000c60| 6c 6f 63 61 74 65 64 20 | 69 6e 20 45 78 74 4d 6f |located |in ExtMo|
|00000c70| 64 75 6c 65 73 50 61 72 | 61 6d 42 6c 6f 63 6b 2e |dulesPar|amBlock.|
|00000c80| 67 6c 6f 62 61 6c 73 20 | 2a 2f 0d 09 09 09 09 09 |globals |*/......|
|00000c90| 09 09 09 09 09 09 09 2f | 2a 20 73 65 74 20 72 65 |......./|* set re|
|00000ca0| 71 75 69 72 65 64 47 6c | 6f 62 61 6c 73 20 74 6f |quiredGl|obals to|
|00000cb0| 20 30 20 69 66 20 79 6f | 75 20 64 6f 6e 27 74 20 | 0 if yo|u don't |
|00000cc0| 75 73 65 20 74 68 69 73 | 20 66 65 61 74 75 72 65 |use this| feature|
|00000cd0| 20 2a 2f 0d 09 09 09 09 | 45 78 74 4d 6f 64 75 6c | */.....|ExtModul|
|00000ce0| 65 73 50 61 72 61 6d 42 | 6c 6f 63 6b 2a 20 70 62 |esParamB|lock* pb|
|00000cf0| 29 09 09 2f 2a 20 74 68 | 65 20 63 6f 6d 70 6c 65 |)../* th|e comple|
|00000d00| 74 65 20 70 61 72 61 6d | 65 74 65 72 20 62 6c 6f |te param|eter blo|
|00000d10| 63 6b 20 70 61 73 73 65 | 64 20 62 79 20 70 72 6f |ck passe|d by pro|
|00000d20| 20 46 69 74 20 74 6f 20 | 74 68 65 20 2a 2f 0d 09 | Fit to |the */..|
|00000d30| 09 09 09 09 09 09 09 09 | 09 09 09 2f 2a 20 72 6f |........|.../* ro|
|00000d40| 75 74 69 6e 65 73 20 64 | 65 66 69 6e 65 64 20 69 |utines d|efined i|
|00000d50| 6e 20 74 68 69 73 20 66 | 69 6c 65 2e 20 49 6e 20 |n this f|ile. In |
|00000d60| 6d 6f 73 74 20 63 61 73 | 65 73 20 69 74 20 63 61 |most cas|es it ca|
|00000d70| 6e 20 62 65 20 69 67 6e | 6f 72 65 64 20 2a 2f 0d |n be ign|ored */.|
|00000d80| 2f 2a 20 53 65 74 55 70 | 20 69 73 20 63 61 6c 6c |/* SetUp| is call|
|00000d90| 65 64 20 6f 6e 63 65 20 | 77 68 65 6e 20 74 68 65 |ed once |when the|
|00000da0| 20 65 78 74 65 72 6e 61 | 6c 20 6d 6f 64 75 6c 65 | externa|l module|
|00000db0| 20 69 73 20 6c 69 6e 6b | 65 64 20 74 6f 20 70 72 | is link|ed to pr|
|00000dc0| 6f 46 69 74 20 2a 2f 0d | 7b 0d 09 2a 6d 6f 64 75 |oFit */.|{..*modu|
|00000dd0| 6c 65 4b 69 6e 64 3d 69 | 73 50 72 6f 67 72 61 6d |leKind=i|sProgram|
|00000de0| 3b 09 09 09 09 09 09 2f | 2a 20 77 65 20 64 65 66 |;....../|* we def|
|00000df0| 69 6e 65 20 61 20 70 72 | 6f 67 72 61 6d 20 2a 2f |ine a pr|ogram */|
|00000e00| 0d 09 53 65 74 50 61 73 | 63 61 6c 53 74 72 28 6e |..SetPas|calStr(n|
|00000e10| 61 6d 65 2c 22 5c 70 43 | 6f 6d 70 6c 65 78 20 46 |ame,"\pC|omplex F|
|00000e20| 46 54 22 2c 32 35 35 29 | 3b 09 09 2f 2a 20 77 69 |FT",255)|;../* wi|
|00000e30| 74 68 20 74 68 65 20 6e | 61 6d 65 20 22 43 6f 6d |th the n|ame "Com|
|00000e40| 70 6c 65 78 20 46 46 54 | 22 20 2a 2f 0d 09 2a 72 |plex FFT|" */..*r|
|00000e50| 65 71 75 69 72 65 64 47 | 6c 6f 62 61 6c 73 3d 30 |equiredG|lobals=0|
|00000e60| 3b 09 09 09 09 09 09 09 | 2f 2a 20 77 65 20 64 65 |;.......|/* we de|
|00000e70| 66 69 6e 65 20 6e 6f 20 | 67 6c 6f 62 61 6c 73 20 |fine no |globals |
|00000e80| 2a 2f 0d 7d 0d 0d 0d 2f | 2a 2a 2a 2a 2a 2a 2a 2a |*/.}.../|********|
|00000e90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ea0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000eb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ec0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ed0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2f |********|*******/|
|00000ee0| 0d 0d 76 6f 69 64 20 49 | 6e 69 74 69 61 6c 69 7a |..void I|nitializ|
|00000ef0| 65 50 72 6f 67 20 28 45 | 78 74 4d 6f 64 75 6c 65 |eProg (E|xtModule|
|00000f00| 73 50 61 72 61 6d 42 6c | 6f 63 6b 2a 20 70 62 29 |sParamBl|ock* pb)|
|00000f10| 0d 09 2f 2a 20 43 61 6e | 20 62 65 20 6c 65 66 74 |../* Can| be left|
|00000f20| 20 65 6d 74 70 79 20 69 | 66 20 6e 6f 74 20 6e 65 | emtpy i|f not ne|
|00000f30| 65 64 65 64 2e 20 2a 2f | 0d 09 2f 2a 20 63 61 6c |eded. */|../* cal|
|00000f40| 6c 65 64 20 77 68 65 6e | 20 74 68 65 20 65 78 74 |led when| the ext|
|00000f50| 65 72 6e 61 6c 20 6d 6f | 64 75 6c 65 20 69 73 20 |ernal mo|dule is |
|00000f60| 6c 69 6e 6b 65 64 20 74 | 6f 20 70 72 6f 46 69 74 |linked t|o proFit|
|00000f70| 20 61 66 74 65 72 20 53 | 65 74 55 70 20 77 61 73 | after S|etUp was|
|00000f80| 20 63 61 6c 6c 65 64 20 | 2a 2f 0d 09 2f 2a 20 63 | called |*/../* c|
|00000f90| 61 6e 20 62 65 20 75 73 | 65 64 20 74 6f 20 69 6e |an be us|ed to in|
|00000fa0| 69 74 69 74 69 61 6c 69 | 7a 65 20 67 6c 6f 62 61 |ititiali|ze globa|
|00000fb0| 6c 20 76 61 72 69 61 62 | 6c 65 73 2c 20 65 74 63 |l variab|les, etc|
|00000fc0| 2e 20 2a 2f 0d 7b 09 09 | 70 62 2d 3e 76 5b 30 5d |. */.{..|pb->v[0]|
|00000fd0| 20 3d 20 30 3b 09 2f 2f | 75 73 65 20 69 74 20 61 | = 0;.//|use it a|
|00000fe0| 73 20 62 6f 6f 6c 65 61 | 6e 20 76 61 6c 75 65 20 |s boolea|n value |
|00000ff0| 74 6f 20 74 65 73 74 20 | 66 6f 72 20 74 68 65 20 |to test |for the |
|00001000| 66 69 72 73 74 20 74 69 | 6d 65 20 74 68 69 73 20 |first ti|me this |
|00001010| 70 72 6f 67 72 61 6d 20 | 72 75 6e 73 20 7d 0d 09 |program |runs }..|
|00001020| 09 70 62 2d 3e 76 5b 31 | 5d 20 3d 20 36 34 3b 09 |.pb->v[1|] = 64;.|
|00001030| 2f 2f 74 68 65 73 65 20 | 61 72 65 20 74 68 65 20 |//these |are the |
|00001040| 64 65 66 61 75 6c 74 20 | 76 61 6c 75 65 73 20 66 |default |values f|
|00001050| 6f 72 20 74 68 65 20 64 | 69 61 6c 6f 67 20 62 6f |or the d|ialog bo|
|00001060| 78 20 61 73 6b 69 6e 67 | 20 66 6f 72 20 64 61 74 |x asking| for dat|
|00001070| 61 4e 72 2c 20 43 6f 6c | 75 6d 6e 4e 72 73 20 0d |aNr, Col|umnNrs .|
|00001080| 09 09 70 62 2d 3e 76 5b | 32 5d 20 3d 20 31 3b 0d |..pb->v[|2] = 1;.|
|00001090| 09 09 70 62 2d 3e 76 5b | 33 5d 20 3d 20 34 3b 0d |..pb->v[|3] = 4;.|
|000010a0| 09 09 70 62 2d 3e 76 5b | 34 5d 20 3d 20 30 3b 0d |..pb->v[|4] = 0;.|
|000010b0| 09 09 70 62 2d 3e 76 5b | 35 5d 20 3d 20 30 3b 0d |..pb->v[|5] = 0;.|
|000010c0| 7d 0d 0d 0d 0d 2f 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |}..../**|********|
|000010d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000010e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000010f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001100| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001110| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2f 0d 0d |********|*****/..|
|00001120| 76 6f 69 64 20 52 75 6e | 28 45 78 74 4d 6f 64 75 |void Run|(ExtModu|
|00001130| 6c 65 73 50 61 72 61 6d | 42 6c 6f 63 6b 2a 20 70 |lesParam|Block* p|
|00001140| 62 29 0d 2f 2a 20 70 72 | 6f 20 46 69 74 20 63 61 |b)./* pr|o Fit ca|
|00001150| 6c 6c 73 20 74 68 69 73 | 20 66 75 6e 63 74 69 6f |lls this| functio|
|00001160| 6e 20 77 68 65 6e 20 74 | 68 65 20 6e 61 6d 65 20 |n when t|he name |
|00001170| 6f 66 20 74 68 65 20 70 | 72 6f 67 72 61 6d 20 69 |of the p|rogram i|
|00001180| 73 20 63 68 6f 73 65 6e | 20 66 72 6f 6d 20 74 68 |s chosen| from th|
|00001190| 65 20 2a 2f 0d 2f 2a 20 | 52 75 6e 20 50 72 6f 67 |e */./* |Run Prog|
|000011a0| 72 61 6d 20 73 75 62 6d | 65 6e 75 20 69 6e 20 74 |ram subm|enu in t|
|000011b0| 68 65 20 6d 65 6e 75 20 | 43 61 6c 63 20 2a 2f 0d |he menu |Calc */.|
|000011c0| 7b 09 09 09 49 6e 70 75 | 74 52 65 63 20 72 3b 0d |{...Inpu|tRec r;.|
|000011d0| 09 09 09 64 6f 75 62 6c | 65 09 65 78 31 3d 70 62 |...doubl|e.ex1=pb|
|000011e0| 2d 3e 76 5b 31 5d 2c 0d | 09 09 09 09 09 65 78 32 |->v[1],.|.....ex2|
|000011f0| 3d 70 62 2d 3e 76 5b 32 | 5d 2c 0d 09 09 09 09 09 |=pb->v[2|],......|
|00001200| 65 78 33 3d 70 62 2d 3e | 76 5b 33 5d 2c 0d 09 09 |ex3=pb->|v[3],...|
|00001210| 09 09 09 65 78 34 3d 70 | 62 2d 3e 76 5b 34 5d 2c |...ex4=p|b->v[4],|
|00001220| 0d 09 09 09 09 09 65 78 | 35 3d 70 62 2d 3e 76 5b |......ex|5=pb->v[|
|00001230| 35 5d 2c 0d 09 09 09 09 | 09 78 30 2c 20 78 69 6e |5],.....|.x0, xin|
|00001240| 63 2c 20 79 30 2c 20 79 | 69 6e 63 2c 20 79 6f 66 |c, y0, y|inc, yof|
|00001250| 66 3b 0d 09 09 09 6c 6f | 6e 67 20 69 2c 20 78 43 |f;....lo|ng i, xC|
|00001260| 6f 6c 2c 20 79 43 6f 6c | 3b 0d 09 09 09 64 6f 75 |ol, yCol|;....dou|
|00001270| 62 6c 65 2a 20 78 3d 30 | 3b 09 09 2f 2f 20 70 6f |ble* x=0|;..// po|
|00001280| 69 6e 74 65 72 20 74 6f | 20 74 68 65 20 64 61 74 |inter to| the dat|
|00001290| 61 20 61 72 72 61 79 20 | 7d 0d 09 09 09 6c 6f 6e |a array |}....lon|
|000012a0| 67 20 6e 72 44 61 74 61 | 3b 09 09 2f 2f 20 74 68 |g nrData|;..// th|
|000012b0| 65 20 6e 75 6d 62 65 72 | 20 6f 66 20 64 61 74 61 |e number| of data|
|000012c0| 20 28 69 6e 74 65 67 65 | 72 20 70 6f 77 65 72 20 | (intege|r power |
|000012d0| 6f 66 20 32 29 20 7d 0d | 09 09 09 63 68 61 72 20 |of 2) }.|...char |
|000012e0| 69 6e 76 65 72 73 65 3b | 09 2f 2f 20 66 61 6c 73 |inverse;|.// fals|
|000012f0| 65 20 69 66 20 6e 6f 72 | 6d 61 6c 20 46 46 54 20 |e if nor|mal FFT |
|00001300| 73 68 6f 75 6c 64 20 62 | 65 20 64 6f 6e 65 2c 20 |should b|e done, |
|00001310| 74 72 75 65 20 66 6f 72 | 20 72 65 76 65 72 73 65 |true for| reverse|
|00001320| 20 46 46 54 20 7d 0d 09 | 09 09 73 68 6f 72 74 20 | FFT }..|..short |
|00001330| 61 6e 73 77 65 72 3b 0d | 09 09 0d 09 09 69 66 20 |answer;.|.....if |
|00001340| 28 70 62 2d 3e 76 5b 30 | 5d 20 3d 3d 20 30 29 0d |(pb->v[0|] == 0).|
|00001350| 09 09 09 7b 09 09 2f 2f | 20 74 68 69 73 20 69 73 |...{..//| this is|
|00001360| 20 74 68 65 20 66 69 72 | 73 74 20 74 69 6d 65 20 | the fir|st time |
|00001370| 74 68 69 73 20 70 72 6f | 67 72 61 6d 20 72 75 6e |this pro|gram run|
|00001380| 73 20 7d 0d 09 09 09 09 | 70 62 2d 3e 76 5b 30 5d |s }.....|pb->v[0]|
|00001390| 20 3d 20 31 3b 0d 09 09 | 09 2f 2f 5c 70 20 69 6e | = 1;...|.//\p in|
|000013a0| 73 74 72 75 63 74 73 20 | 74 68 65 20 63 6f 6d 70 |structs |the comp|
|000013b0| 69 6c 65 72 20 74 6f 20 | 70 72 6f 64 75 63 65 20 |iler to |produce |
|000013c0| 61 20 70 61 73 63 61 6c | 20 73 74 72 69 6e 67 0d |a pascal| string.|
|000013d0| 09 09 09 09 69 66 20 28 | 41 73 6b 42 6f 78 28 26 |....if (|AskBox(&|
|000013e0| 61 6e 73 77 65 72 2c 22 | 5c 70 44 6f 20 79 6f 75 |answer,"|\pDo you|
|000013f0| 20 77 61 6e 74 20 74 6f | 20 67 65 74 20 73 6f 6d | want to| get som|
|00001400| 65 20 69 6e 66 6f 72 6d | 61 74 69 6f 6e 20 6f 6e |e inform|ation on|
|00001410| 20 74 68 69 73 20 70 72 | 6f 67 72 61 6d 20 69 6e | this pr|ogram in|
|00001420| 20 74 68 65 20 52 65 73 | 75 6c 74 73 20 77 69 6e | the Res|ults win|
|00001430| 64 6f 77 20 3f 22 29 29 | 0d 09 09 09 09 09 72 65 |dow ?"))|......re|
|00001440| 74 75 72 6e 3b 09 09 09 | 09 2f 2f 20 73 74 6f 70 |turn;...|.// stop|
|00001450| 20 62 75 74 74 6f 6e 20 | 70 72 65 73 73 65 64 20 | button |pressed |
|00001460| 0d 09 09 09 09 65 6c 73 | 65 20 0d 09 09 09 09 20 |.....els|e ..... |
|00001470| 20 7b 69 66 20 28 61 6e | 73 77 65 72 20 3d 3d 20 | {if (an|swer == |
|00001480| 31 29 20 09 2f 2f 79 65 | 73 20 62 75 74 74 6f 6e |1) .//ye|s button|
|00001490| 20 70 72 65 73 73 65 64 | 20 7d 0d 09 09 09 09 09 | pressed| }......|
|000014a0| 7b 0d 09 09 09 09 09 09 | 57 72 69 74 65 6c 6e 28 |{.......|Writeln(|
|000014b0| 22 5c 70 46 61 73 74 20 | 46 6f 75 72 69 65 72 20 |"\pFast |Fourier |
|000014c0| 54 72 61 6e 73 66 6f 72 | 6d 3a 20 63 6f 6e 76 65 |Transfor|m: conve|
|000014d0| 72 74 73 20 62 65 74 77 | 65 65 6e 20 64 61 74 61 |rts betw|een data|
|000014e0| 2e 22 29 3b 0d 09 09 09 | 09 09 09 57 72 69 74 65 |.");....|...Write|
|000014f0| 6c 6e 28 22 5c 70 69 6e | 20 74 68 65 20 27 74 69 |ln("\pin| the 'ti|
|00001500| 6d 65 20 64 6f 6d 61 69 | 6e 27 20 61 6e 64 20 64 |me domai|n' and d|
|00001510| 61 74 61 20 69 6e 20 74 | 68 65 20 27 66 72 65 71 |ata in t|he 'freq|
|00001520| 75 65 6e 63 79 20 64 6f | 6d 61 69 6e 27 22 29 3b |uency do|main'");|
|00001530| 0d 09 09 09 09 09 09 57 | 72 69 74 65 6c 6e 28 22 |.......W|riteln("|
|00001540| 5c 70 22 29 3b 0d 09 09 | 09 09 09 09 57 72 69 74 |\p");...|....Writ|
|00001550| 65 6c 6e 28 22 5c 70 54 | 68 65 20 64 61 74 61 20 |eln("\pT|he data |
|00001560| 69 6e 20 74 68 65 20 74 | 69 6d 65 20 64 6f 6d 61 |in the t|ime doma|
|00001570| 69 6e 20 69 73 20 61 72 | 72 61 6e 67 65 64 20 69 |in is ar|ranged i|
|00001580| 6e 22 29 3b 0d 09 09 09 | 09 09 09 57 72 69 74 65 |n");....|...Write|
|00001590| 6c 6e 28 22 5c 70 74 68 | 72 65 65 20 63 6f 6c 75 |ln("\pth|ree colu|
|000015a0| 6d 6e 73 3a 22 29 3b 0d | 09 09 09 09 09 09 57 72 |mns:");.|......Wr|
|000015b0| 69 74 65 6c 6e 28 22 5c | 70 20 20 31 73 74 20 63 |iteln("\|p 1st c|
|000015c0| 6f 6c 75 6d 6e 3a 20 74 | 68 65 20 74 69 6d 65 20 |olumn: t|he time |
|000015d0| 66 6f 72 20 65 61 63 68 | 20 64 61 74 61 20 70 6f |for each| data po|
|000015e0| 69 6e 74 22 29 3b 0d 09 | 09 09 09 09 09 57 72 69 |int");..|.....Wri|
|000015f0| 74 65 6c 6e 28 22 5c 70 | 20 20 32 6e 64 20 63 6f |teln("\p| 2nd co|
|00001600| 6c 75 6d 6e 3a 20 74 68 | 65 20 72 65 61 6c 20 76 |lumn: th|e real v|
|00001610| 61 6c 75 65 20 6f 66 20 | 65 61 63 68 20 64 61 74 |alue of |each dat|
|00001620| 61 20 70 6f 69 6e 74 22 | 29 3b 0d 09 09 09 09 09 |a point"|);......|
|00001630| 09 57 72 69 74 65 6c 6e | 28 22 5c 70 20 20 32 72 |.Writeln|("\p 2r|
|00001640| 64 20 63 6f 6c 75 6d 6e | 3a 20 74 68 65 20 69 6d |d column|: the im|
|00001650| 61 67 69 6e 61 72 79 20 | 76 61 6c 75 65 20 6f 66 |aginary |value of|
|00001660| 20 65 61 63 68 20 64 61 | 74 61 20 70 6f 69 6e 74 | each da|ta point|
|00001670| 22 29 3b 0d 09 09 09 09 | 09 09 57 72 69 74 65 6c |");.....|..Writel|
|00001680| 6e 28 22 5c 70 54 68 65 | 20 64 61 74 61 20 69 6e |n("\pThe| data in|
|00001690| 20 74 68 65 20 74 69 6d | 65 20 64 6f 6d 61 69 6e | the tim|e domain|
|000016a0| 20 69 73 20 61 6c 73 6f | 20 61 72 72 61 6e 67 65 | is also| arrange|
|000016b0| 64 20 69 6e 22 29 3b 0d | 09 09 09 09 09 09 57 72 |d in");.|......Wr|
|000016c0| 69 74 65 6c 6e 28 22 5c | 70 74 68 72 65 65 20 63 |iteln("\|pthree c|
|000016d0| 6f 6c 75 6d 6e 73 3a 22 | 29 3b 0d 09 09 09 09 09 |olumns:"|);......|
|000016e0| 09 57 72 69 74 65 6c 6e | 28 22 5c 70 20 20 31 73 |.Writeln|("\p 1s|
|000016f0| 74 20 63 6f 6c 75 6d 6e | 3a 20 74 68 65 20 66 72 |t column|: the fr|
|00001700| 65 71 75 65 6e 63 79 20 | 66 6f 72 20 65 61 63 68 |equency |for each|
|00001710| 20 64 61 74 61 20 70 6f | 69 6e 74 22 29 3b 0d 09 | data po|int");..|
|00001720| 09 09 09 09 09 57 72 69 | 74 65 6c 6e 28 22 5c 70 |.....Wri|teln("\p|
|00001730| 20 20 32 6e 64 20 63 6f | 6c 75 6d 6e 3a 20 74 68 | 2nd co|lumn: th|
|00001740| 65 20 72 65 61 6c 20 76 | 61 6c 75 65 20 6f 66 20 |e real v|alue of |
|00001750| 65 61 63 68 20 64 61 74 | 61 20 70 6f 69 6e 74 22 |each dat|a point"|
|00001760| 29 3b 0d 09 09 09 09 09 | 09 57 72 69 74 65 6c 6e |);......|.Writeln|
|00001770| 28 22 5c 70 20 20 32 72 | 64 20 63 6f 6c 75 6d 6e |("\p 2r|d column|
|00001780| 3a 20 74 68 65 20 69 6d | 61 67 69 6e 61 72 79 20 |: the im|aginary |
|00001790| 6f 66 20 76 61 6c 75 65 | 20 65 61 63 68 20 64 61 |of value| each da|
|000017a0| 74 61 20 70 6f 69 6e 74 | 22 29 3b 0d 09 09 09 09 |ta point|");.....|
|000017b0| 09 09 57 72 69 74 65 6c | 6e 28 22 5c 70 22 29 3b |..Writel|n("\p");|
|000017c0| 0d 09 09 09 09 09 09 57 | 72 69 74 65 6c 6e 28 22 |.......W|riteln("|
|000017d0| 5c 70 57 68 65 6e 20 72 | 75 6e 6e 69 6e 67 20 74 |\pWhen r|unning t|
|000017e0| 68 65 20 70 72 6f 67 72 | 61 6d 2c 20 79 6f 75 20 |he progr|am, you |
|000017f0| 6d 75 73 74 20 73 70 65 | 63 69 66 79 20 74 68 65 |must spe|cify the|
|00001800| 22 29 3b 0d 09 09 09 09 | 09 09 57 72 69 74 65 6c |");.....|..Writel|
|00001810| 6e 28 22 5c 70 6e 75 6d | 62 65 72 20 6f 66 20 64 |n("\pnum|ber of d|
|00001820| 61 74 61 20 70 6f 69 6e | 74 73 20 28 62 65 74 77 |ata poin|ts (betw|
|00001830| 65 65 6e 20 34 20 61 6e | 64 20 34 30 39 36 29 2e |een 4 an|d 4096).|
|00001840| 22 29 3b 0d 09 09 09 09 | 09 09 57 72 69 74 65 6c |");.....|..Writel|
|00001850| 6e 28 22 5c 70 54 68 65 | 20 6e 75 6d 62 65 72 20 |n("\pThe| number |
|00001860| 6f 66 20 64 61 74 61 20 | 70 6f 69 6e 74 73 20 73 |of data |points s|
|00001870| 68 6f 75 6c 64 20 62 65 | 20 61 20 70 6f 77 65 72 |hould be| a power|
|00001880| 20 6f 66 20 32 2e 22 29 | 3b 0d 09 09 09 09 09 09 | of 2.")|;.......|
|00001890| 57 72 69 74 65 6c 6e 28 | 22 5c 70 49 66 20 69 74 |Writeln(|"\pIf it|
|000018a0| 20 69 73 20 6e 6f 74 20 | 61 20 70 6f 77 65 72 20 | is not |a power |
|000018b0| 6f 66 20 32 2c 20 69 74 | 20 69 73 20 72 6f 75 6e |of 2, it| is roun|
|000018c0| 64 65 64 20 74 6f 20 74 | 68 65 22 29 3b 0d 09 09 |ded to t|he");...|
|000018d0| 09 09 09 09 57 72 69 74 | 65 6c 6e 28 22 5c 70 6e |....Writ|eln("\pn|
|000018e0| 65 78 74 20 70 6f 77 65 | 72 20 6f 66 20 32 2e 22 |ext powe|r of 2."|
|000018f0| 29 3b 0d 09 09 09 09 09 | 09 57 72 69 74 65 6c 6e |);......|.Writeln|
|00001900| 28 22 5c 70 49 66 20 79 | 6f 75 20 72 75 6e 20 61 |("\pIf y|ou run a|
|00001910| 6e 20 46 46 54 2c 20 73 | 65 74 20 27 46 69 72 73 |n FFT, s|et 'Firs|
|00001920| 74 20 69 6e 70 75 74 20 | 63 6f 6c 75 6d 6e 27 22 |t input |column'"|
|00001930| 29 3b 0d 09 09 09 09 09 | 09 57 72 69 74 65 6c 6e |);......|.Writeln|
|00001940| 28 22 5c 70 74 6f 20 74 | 68 65 20 74 69 6d 65 20 |("\pto t|he time |
|00001950| 63 6f 6c 75 6d 6e 20 6f | 66 20 74 68 65 20 64 61 |column o|f the da|
|00001960| 74 61 20 70 6f 69 6e 74 | 73 20 69 6e 20 74 68 65 |ta point|s in the|
|00001970| 22 29 3b 0d 09 09 09 09 | 09 09 57 72 69 74 65 6c |");.....|..Writel|
|00001980| 6e 28 22 5c 70 74 69 6d | 65 20 64 6f 6d 61 69 6e |n("\ptim|e domain|
|00001990| 2c 20 27 46 69 72 73 74 | 20 6f 75 74 70 75 74 20 |, 'First| output |
|000019a0| 63 6f 6c 75 6d 6e 27 20 | 74 6f 20 74 68 65 22 29 |column' |to the")|
|000019b0| 3b 0d 09 09 09 09 09 09 | 57 72 69 74 65 6c 6e 28 |;.......|Writeln(|
|000019c0| 22 5c 70 66 72 65 71 75 | 65 6e 63 79 20 63 6f 6c |"\pfrequ|ency col|
|000019d0| 75 6d 6e 20 6f 66 20 74 | 68 65 20 64 61 74 61 20 |umn of t|he data |
|000019e0| 70 6f 69 6e 74 73 20 69 | 6e 20 74 68 65 22 29 3b |points i|n the");|
|000019f0| 0d 09 09 09 09 09 09 57 | 72 69 74 65 6c 6e 28 22 |.......W|riteln("|
|00001a00| 5c 70 66 72 65 71 75 65 | 6e 63 79 20 64 6f 6d 61 |\pfreque|ncy doma|
|00001a10| 69 6e 2e 22 29 3b 0d 09 | 09 09 09 09 09 57 72 69 |in.");..|.....Wri|
|00001a20| 74 65 6c 6e 28 22 5c 70 | 49 66 20 79 6f 75 20 72 |teln("\p|If you r|
|00001a30| 75 6e 20 61 6e 20 69 6e | 76 65 72 73 65 20 46 46 |un an in|verse FF|
|00001a40| 54 2c 20 73 65 74 20 27 | 46 69 72 73 74 20 69 6e |T, set '|First in|
|00001a50| 70 75 74 20 63 6f 6c 75 | 6d 6e 27 22 29 3b 0d 09 |put colu|mn'");..|
|00001a60| 09 09 09 09 09 57 72 69 | 74 65 6c 6e 28 22 5c 70 |.....Wri|teln("\p|
|00001a70| 74 6f 20 74 68 65 20 66 | 72 65 71 75 65 6e 63 79 |to the f|requency|
|00001a80| 20 63 6f 6c 75 6d 6e 20 | 6f 66 20 74 68 65 20 64 | column |of the d|
|00001a90| 61 74 61 20 70 6f 69 6e | 74 73 20 69 6e 20 74 68 |ata poin|ts in th|
|00001aa0| 65 22 29 3b 0d 09 09 09 | 09 09 09 57 72 69 74 65 |e");....|...Write|
|00001ab0| 6c 6e 28 22 5c 70 66 72 | 65 71 75 65 6e 63 79 20 |ln("\pfr|equency |
|00001ac0| 64 6f 6d 61 69 6e 2c 20 | 27 46 69 72 73 74 20 6f |domain, |'First o|
|00001ad0| 75 74 70 75 74 20 63 6f | 6c 75 6d 6e 27 20 74 6f |utput co|lumn' to|
|00001ae0| 20 74 68 65 22 29 3b 0d | 09 09 09 09 09 09 57 72 | the");.|......Wr|
|00001af0| 69 74 65 6c 6e 28 22 5c | 70 74 69 6d 65 20 63 6f |iteln("\|ptime co|
|00001b00| 6c 75 6d 6e 20 6f 66 20 | 74 68 65 20 64 61 74 61 |lumn of |the data|
|00001b10| 20 70 6f 69 6e 74 73 20 | 69 6e 20 74 68 65 22 29 | points |in the")|
|00001b20| 3b 0d 09 09 09 09 09 09 | 57 72 69 74 65 6c 6e 28 |;.......|Writeln(|
|00001b30| 22 5c 70 74 69 6d 65 20 | 64 6f 6d 61 69 6e 2e 22 |"\ptime |domain."|
|00001b40| 29 3b 0d 09 09 09 09 09 | 09 57 72 69 74 65 6c 6e |);......|.Writeln|
|00001b50| 28 22 5c 70 27 4f 66 66 | 73 65 74 20 6f 66 20 46 |("\p'Off|set of F|
|00001b60| 46 54 27 20 64 65 66 69 | 6e 65 73 20 61 6e 20 61 |FT' defi|nes an a|
|00001b70| 64 64 69 74 69 76 65 20 | 63 6f 6e 73 74 61 6e 74 |dditive |constant|
|00001b80| 20 66 6f 72 22 29 3b 0d | 09 09 09 09 09 09 57 72 | for");.|......Wr|
|00001b90| 69 74 65 6c 6e 28 22 5c | 70 74 68 65 20 66 72 65 |iteln("\|pthe fre|
|00001ba0| 71 75 65 6e 63 79 20 76 | 61 6c 75 65 73 2e 22 29 |quency v|alues.")|
|00001bb0| 3b 0d 09 09 09 09 09 09 | 72 65 74 75 72 6e 3b 0d |;.......|return;.|
|00001bc0| 09 09 09 09 09 7d 0d 09 | 09 09 09 20 20 7d 0d 09 |.....}..|... }..|
|00001bd0| 09 09 7d 0d 0d 09 09 72 | 5b 30 5d 2e 78 20 3d 26 |..}....r|[0].x =&|
|00001be0| 65 78 31 3b 0d 09 09 72 | 5b 30 5d 2e 73 20 3d 20 |ex1;...r|[0].s = |
|00001bf0| 22 5c 70 4e 75 6d 62 65 | 72 20 6f 66 20 64 61 74 |"\pNumbe|r of dat|
|00001c00| 61 20 70 6f 69 6e 74 73 | 22 3b 0d 09 09 72 5b 31 |a points|";...r[1|
|00001c10| 5d 2e 78 20 3d 20 26 65 | 78 32 3b 0d 09 09 72 5b |].x = &e|x2;...r[|
|00001c20| 31 5d 2e 73 20 3d 20 22 | 5c 70 24 43 46 69 72 73 |1].s = "|\p$CFirs|
|00001c30| 74 20 69 6e 70 75 74 20 | 63 6f 6c 75 6d 6e 22 3b |t input |column";|
|00001c40| 0d 09 09 72 5b 32 5d 2e | 78 20 3d 20 26 65 78 33 |...r[2].|x = &ex3|
|00001c50| 3b 0d 09 09 72 5b 32 5d | 2e 73 20 3d 20 22 5c 70 |;...r[2]|.s = "\p|
|00001c60| 24 43 46 69 72 73 74 20 | 6f 75 74 70 75 74 20 63 |$CFirst |output c|
|00001c70| 6f 6c 75 6d 6e 22 3b 0d | 09 09 72 5b 33 5d 2e 78 |olumn";.|..r[3].x|
|00001c80| 20 3d 20 26 65 78 34 3b | 0d 09 09 72 5b 33 5d 2e | = &ex4;|...r[3].|
|00001c90| 73 20 3d 20 22 5c 70 4f | 66 66 73 65 74 20 6f 66 |s = "\pO|ffset of|
|00001ca0| 20 46 46 54 22 3b 0d 09 | 09 72 5b 34 5d 2e 78 20 | FFT";..|.r[4].x |
|00001cb0| 3d 20 26 65 78 35 3b 0d | 09 09 72 5b 34 5d 2e 73 |= &ex5;.|..r[4].s|
|00001cc0| 20 3d 20 22 5c 70 24 58 | 49 6e 76 65 72 73 65 20 | = "\p$X|Inverse |
|00001cd0| 46 46 54 22 3b 0d 09 09 | 69 66 20 28 49 6e 70 75 |FFT";...|if (Inpu|
|00001ce0| 74 42 6f 78 28 35 2c 20 | 26 72 29 29 20 72 65 74 |tBox(5, |&r)) ret|
|00001cf0| 75 72 6e 3b 09 2f 2f 20 | 69 66 20 73 6f 6d 65 74 |urn;.// |if somet|
|00001d00| 68 69 6e 67 20 69 73 20 | 6e 6f 74 20 6f 6b 20 77 |hing is |not ok w|
|00001d10| 65 20 71 75 69 74 20 0d | 09 09 65 6c 73 65 0d 09 |e quit .|..else..|
|00001d20| 09 09 7b 09 2f 2f 20 69 | 66 20 65 76 65 72 79 74 |..{.// i|f everyt|
|00001d30| 68 69 6e 67 20 69 73 20 | 6f 6b 20 77 65 20 64 6f |hing is |ok we do|
|00001d40| 20 73 6f 6d 65 74 68 69 | 6e 67 20 0d 0d 09 09 09 | somethi|ng .....|
|00001d50| 09 65 78 31 20 3d 20 66 | 61 62 73 28 65 78 31 29 |.ex1 = f|abs(ex1)|
|00001d60| 3b 0d 09 09 09 09 69 66 | 20 28 28 65 78 31 20 3e |;.....if| ((ex1 >|
|00001d70| 20 34 30 39 36 29 20 7c | 7c 20 28 65 78 31 20 3c | 4096) ||| (ex1 <|
|00001d80| 20 34 29 29 20 72 65 74 | 75 72 6e 3b 0d 09 09 09 | 4)) ret|urn;....|
|00001d90| 09 69 20 3d 20 65 78 31 | 3b 0d 09 09 09 09 6e 72 |.i = ex1|;.....nr|
|00001da0| 44 61 74 61 20 3d 20 34 | 3b 0d 09 09 09 09 77 68 |Data = 4|;.....wh|
|00001db0| 69 6c 65 20 28 32 2a 6e | 72 44 61 74 61 3c 3d 69 |ile (2*n|rData<=i|
|00001dc0| 29 20 6e 72 44 61 74 61 | 20 2a 3d 20 32 3b 0d 09 |) nrData| *= 2;..|
|00001dd0| 09 09 09 65 78 32 20 3d | 20 66 61 62 73 28 65 78 |...ex2 =| fabs(ex|
|00001de0| 32 29 3b 0d 09 09 09 09 | 69 66 20 28 28 65 78 32 |2);.....|if ((ex2|
|00001df0| 20 3e 20 39 37 29 20 7c | 7c 20 28 65 78 32 20 3c | > 97) ||| (ex2 <|
|00001e00| 20 31 29 29 20 20 72 65 | 74 75 72 6e 3b 0d 09 09 | 1)) re|turn;...|
|00001e10| 09 09 78 43 6f 6c 20 3d | 20 28 65 78 32 29 3b 0d |..xCol =| (ex2);.|
|00001e20| 09 09 09 09 65 78 33 20 | 3d 20 66 61 62 73 28 65 |....ex3 |= fabs(e|
|00001e30| 78 33 29 3b 0d 09 09 09 | 09 69 66 20 28 28 65 78 |x3);....|.if ((ex|
|00001e40| 33 20 3e 20 39 37 29 20 | 7c 7c 20 28 65 78 33 20 |3 > 97) ||| (ex3 |
|00001e50| 3c 20 31 29 29 20 20 72 | 65 74 75 72 6e 3b 0d 09 |< 1)) r|eturn;..|
|00001e60| 09 09 09 79 43 6f 6c 20 | 3d 20 65 78 33 3b 0d 09 |...yCol |= ex3;..|
|00001e70| 09 09 09 79 6f 66 66 20 | 3d 20 65 78 34 3b 0d 09 |...yoff |= ex4;..|
|00001e80| 09 09 09 69 6e 76 65 72 | 73 65 20 3d 20 28 65 78 |...inver|se = (ex|
|00001e90| 35 20 21 3d 20 30 29 3b | 0d 09 09 09 09 70 62 2d |5 != 0);|.....pb-|
|00001ea0| 3e 76 5b 31 5d 20 3d 20 | 6e 72 44 61 74 61 3b 09 |>v[1] = |nrData;.|
|00001eb0| 2f 2f 74 68 65 73 65 20 | 61 72 65 20 74 68 65 20 |//these |are the |
|00001ec0| 64 65 66 61 75 6c 74 20 | 76 61 6c 75 65 73 20 66 |default |values f|
|00001ed0| 6f 72 20 74 68 65 20 64 | 69 61 6c 6f 67 20 62 6f |or the d|ialog bo|
|00001ee0| 78 20 61 73 6b 69 6e 67 | 20 66 6f 72 20 64 61 74 |x asking| for dat|
|00001ef0| 61 4e 72 2c 20 43 6f 6c | 75 6d 6e 4e 72 73 20 0d |aNr, Col|umnNrs .|
|00001f00| 09 09 09 09 70 62 2d 3e | 76 5b 32 5d 20 3d 20 65 |....pb->|v[2] = e|
|00001f10| 78 32 3b 0d 09 09 09 09 | 70 62 2d 3e 76 5b 33 5d |x2;.....|pb->v[3]|
|00001f20| 20 3d 20 65 78 33 3b 0d | 09 09 09 09 70 62 2d 3e | = ex3;.|....pb->|
|00001f30| 76 5b 34 5d 20 3d 20 65 | 78 34 3b 0d 09 09 09 09 |v[4] = e|x4;.....|
|00001f40| 70 62 2d 3e 76 5b 35 5d | 20 3d 20 69 6e 76 65 72 |pb->v[5]| = inver|
|00001f50| 73 65 3b 0d 0d 09 09 09 | 09 78 20 3d 20 28 64 6f |se;.....|.x = (do|
|00001f60| 75 62 6c 65 2a 29 20 4e | 65 77 50 74 72 28 73 69 |uble*) N|ewPtr(si|
|00001f70| 7a 65 6f 66 28 64 6f 75 | 62 6c 65 29 2a 28 32 4c |zeof(dou|ble)*(2L|
|00001f80| 2a 6e 72 44 61 74 61 2b | 31 29 29 3b 09 09 09 2f |*nrData+|1));.../|
|00001f90| 2f 20 70 72 65 70 61 72 | 65 20 6d 65 6d 6f 72 79 |/ prepar|e memory|
|00001fa0| 20 66 6f 72 20 64 61 74 | 61 20 0d 09 09 09 09 69 | for dat|a .....i|
|00001fb0| 66 20 28 78 20 3d 3d 20 | 30 29 20 72 65 74 75 72 |f (x == |0) retur|
|00001fc0| 6e 3b 0d 0d 0d 09 09 09 | 09 69 66 20 28 54 65 73 |n;......|.if (Tes|
|00001fd0| 74 44 61 74 61 28 31 2c | 78 43 6f 6c 29 29 20 0d |tData(1,|xCol)) .|
|00001fe0| 09 09 09 09 09 7b 0d 09 | 09 09 09 09 09 78 30 20 |.....{..|.....x0 |
|00001ff0| 3d 20 47 65 74 44 61 74 | 61 28 31 2c 78 43 6f 6c |= GetDat|a(1,xCol|
|00002000| 29 3b 0d 09 09 09 09 09 | 09 69 66 20 28 54 65 73 |);......|.if (Tes|
|00002010| 74 44 61 74 61 28 32 2c | 78 43 6f 6c 29 29 0d 09 |tData(2,|xCol))..|
|00002020| 09 09 09 09 09 09 78 69 | 6e 63 20 3d 47 65 74 44 |......xi|nc =GetD|
|00002030| 61 74 61 28 32 2c 78 43 | 6f 6c 29 20 2d 20 78 30 |ata(2,xC|ol) - x0|
|00002040| 3b 0d 09 09 09 09 09 7d | 0d 0d 09 09 09 09 0d 09 |;......}|........|
|00002050| 09 09 09 66 6f 72 20 28 | 69 20 3d 20 31 3b 69 3c |...for (|i = 1;i<|
|00002060| 3d 20 6e 72 44 61 74 61 | 3b 69 2b 2b 29 09 09 09 |= nrData|;i++)...|
|00002070| 2f 2f 20 72 65 61 64 20 | 64 61 74 61 20 66 72 6f |// read |data fro|
|00002080| 6d 20 77 69 6e 64 6f 77 | 20 0d 09 09 09 09 09 7b |m window| ......{|
|00002090| 0d 09 09 09 09 09 09 69 | 66 20 28 54 65 73 74 44 |.......i|f (TestD|
|000020a0| 61 74 61 28 69 2c 78 43 | 6f 6c 20 2b 20 31 29 29 |ata(i,xC|ol + 1))|
|000020b0| 09 2f 2f 74 65 73 74 20 | 69 66 20 64 61 74 61 20 |.//test |if data |
|000020c0| 76 61 6c 75 65 20 69 73 | 20 6f 6b 20 7d 0d 09 09 |value is| ok }...|
|000020d0| 09 09 09 09 09 78 5b 32 | 20 2a 20 69 20 2d 20 31 |.....x[2| * i - 1|
|000020e0| 5d 20 3d 20 47 65 74 44 | 61 74 61 28 69 2c 78 43 |] = GetD|ata(i,xC|
|000020f0| 6f 6c 20 2b 20 31 29 3b | 0d 09 09 09 09 09 09 65 |ol + 1);|.......e|
|00002100| 6c 73 65 0d 09 09 09 09 | 09 09 09 78 5b 32 20 2a |lse.....|...x[2 *|
|00002110| 20 69 20 2d 20 31 5d 20 | 3d 20 30 3b 0d 09 09 09 | i - 1] |= 0;....|
|00002120| 09 09 09 69 66 20 28 54 | 65 73 74 44 61 74 61 28 |...if (T|estData(|
|00002130| 69 2c 78 43 6f 6c 20 2b | 20 32 29 29 0d 09 09 09 |i,xCol +| 2))....|
|00002140| 09 09 09 09 78 5b 32 20 | 2a 20 69 5d 20 3d 20 47 |....x[2 |* i] = G|
|00002150| 65 74 44 61 74 61 28 69 | 2c 78 43 6f 6c 20 2b 20 |etData(i|,xCol + |
|00002160| 32 29 3b 0d 09 09 09 09 | 09 09 65 6c 73 65 0d 09 |2);.....|..else..|
|00002170| 09 09 09 09 09 09 78 5b | 32 20 2a 20 69 5d 20 3d |......x[|2 * i] =|
|00002180| 20 30 3b 0d 09 09 09 09 | 09 09 69 66 20 28 54 65 | 0;.....|..if (Te|
|00002190| 73 74 53 74 6f 70 28 29 | 29 20 7b 43 6c 65 61 6e |stStop()|) {Clean|
|000021a0| 55 70 52 75 6e 28 78 29 | 3b 72 65 74 75 72 6e 3b |UpRun(x)|;return;|
|000021b0| 7d 0d 09 09 09 09 09 7d | 0d 09 09 09 09 0d 09 09 |}......}|........|
|000021c0| 09 09 66 66 74 28 78 2c | 20 32 20 2a 20 6e 72 44 |..fft(x,| 2 * nrD|
|000021d0| 61 74 61 2c 20 69 6e 76 | 65 72 73 65 29 3b 09 2f |ata, inv|erse);./|
|000021e0| 2f 20 66 66 74 20 63 61 | 6c 63 75 6c 61 74 69 6f |/ fft ca|lculatio|
|000021f0| 6e 73 20 7d 0d 09 09 09 | 09 79 69 6e 63 20 3d 20 |ns }....|.yinc = |
|00002200| 31 20 2f 20 28 78 69 6e | 63 2a 6e 72 44 61 74 61 |1 / (xin|c*nrData|
|00002210| 29 20 3b 0d 09 09 09 09 | 69 66 20 28 21 69 6e 76 |) ;.....|if (!inv|
|00002220| 65 72 73 65 29 20 0d 09 | 09 09 09 09 7b 0d 09 09 |erse) ..|....{...|
|00002230| 09 09 09 09 73 68 69 66 | 74 46 46 54 28 78 2c 20 |....shif|tFFT(x, |
|00002240| 6e 72 44 61 74 61 29 3b | 0d 09 09 09 09 09 09 79 |nrData);|.......y|
|00002250| 30 20 3d 20 79 6f 66 66 | 20 2d 20 31 20 2f 20 78 |0 = yoff| - 1 / x|
|00002260| 69 6e 63 20 2f 20 32 3b | 0d 09 09 09 09 09 7d 0d |inc / 2;|......}.|
|00002270| 09 09 09 09 65 6c 73 65 | 0d 09 09 09 09 09 7b 0d |....else|......{.|
|00002280| 09 09 09 09 09 09 79 30 | 20 3d 20 79 6f 66 66 3b |......y0| = yoff;|
|00002290| 0d 09 09 09 09 09 09 66 | 6f 72 20 28 69 20 3d 20 |.......f|or (i = |
|000022a0| 31 3b 69 3c 3d 20 6e 72 | 44 61 74 61 20 2f 20 32 |1;i<= nr|Data / 2|
|000022b0| 3b 69 2b 2b 29 20 0d 09 | 09 09 09 09 09 09 7b 0d |;i++) ..|......{.|
|000022c0| 09 09 09 09 09 09 09 09 | 78 5b 34 20 2a 20 69 20 |........|x[4 * i |
|000022d0| 2d 20 33 5d 20 3d 20 78 | 5b 34 20 2a 20 69 20 2d |- 3] = x|[4 * i -|
|000022e0| 20 33 5d 20 2f 20 6e 72 | 44 61 74 61 3b 0d 09 09 | 3] / nr|Data;...|
|000022f0| 09 09 09 09 09 09 78 5b | 34 20 2a 20 69 20 2d 20 |......x[|4 * i - |
|00002300| 32 5d 20 3d 20 78 5b 34 | 20 2a 20 69 20 2d 20 32 |2] = x[4| * i - 2|
|00002310| 5d 20 2f 20 6e 72 44 61 | 74 61 3b 0d 09 09 09 09 |] / nrDa|ta;.....|
|00002320| 09 09 09 09 78 5b 34 20 | 2a 20 69 20 2d 20 31 5d |....x[4 |* i - 1]|
|00002330| 20 3d 20 2d 78 5b 34 20 | 2a 20 69 20 2d 20 31 5d | = -x[4 |* i - 1]|
|00002340| 20 2f 20 6e 72 44 61 74 | 61 3b 0d 09 09 09 09 09 | / nrDat|a;......|
|00002350| 09 09 09 78 5b 34 20 2a | 20 69 5d 20 3d 20 2d 78 |...x[4 *| i] = -x|
|00002360| 5b 34 20 2a 20 69 5d 20 | 2f 20 6e 72 44 61 74 61 |[4 * i] |/ nrData|
|00002370| 3b 0d 09 09 09 09 09 09 | 09 7d 0d 09 09 09 09 09 |;.......|.}......|
|00002380| 7d 0d 09 09 09 09 69 66 | 20 28 54 65 73 74 53 74 |}.....if| (TestSt|
|00002390| 6f 70 28 29 20 29 20 7b | 43 6c 65 61 6e 55 70 52 |op() ) {|CleanUpR|
|000023a0| 75 6e 28 78 29 3b 72 65 | 74 75 72 6e 3b 7d 0d 09 |un(x);re|turn;}..|
|000023b0| 09 09 09 53 65 74 43 6f | 6c 4e 61 6d 65 28 79 43 |...SetCo|lName(yC|
|000023c0| 6f 6c 2c 22 5c 70 66 72 | 65 71 75 65 6e 63 79 22 |ol,"\pfr|equency"|
|000023d0| 29 3b 0d 09 09 09 09 53 | 65 74 43 6f 6c 4e 61 6d |);.....S|etColNam|
|000023e0| 65 28 79 43 6f 6c 20 2b | 20 31 2c 22 5c 70 46 46 |e(yCol +| 1,"\pFF|
|000023f0| 54 20 72 65 61 6c 22 29 | 3b 0d 09 09 09 09 53 65 |T real")|;.....Se|
|00002400| 74 43 6f 6c 4e 61 6d 65 | 28 79 43 6f 6c 20 2b 20 |tColName|(yCol + |
|00002410| 32 2c 20 22 5c 70 46 46 | 54 20 69 6d 61 67 2e 22 |2, "\pFF|T imag."|
|00002420| 29 3b 0d 09 09 09 09 66 | 6f 72 20 28 69 20 3d 20 |);.....f|or (i = |
|00002430| 31 3b 20 69 3c 3d 20 6e | 72 44 61 74 61 3b 69 2b |1; i<= n|rData;i+|
|00002440| 2b 29 09 09 09 2f 2f 20 | 6f 75 74 70 75 74 20 6f |+)...// |output o|
|00002450| 66 20 64 61 74 61 20 69 | 6e 74 6f 20 77 69 6e 64 |f data i|nto wind|
|00002460| 6f 77 20 7d 0d 09 09 09 | 09 09 7b 0d 09 09 09 09 |ow }....|..{.....|
|00002470| 09 09 53 65 74 44 61 74 | 61 28 69 2c 79 43 6f 6c |..SetDat|a(i,yCol|
|00002480| 2c 20 79 30 20 2b 20 28 | 69 20 2d 20 31 2e 30 29 |, y0 + (|i - 1.0)|
|00002490| 20 2a 20 79 69 6e 63 29 | 3b 0d 09 09 09 09 09 09 | * yinc)|;.......|
|000024a0| 53 65 74 44 61 74 61 28 | 69 2c 79 43 6f 6c 20 2b |SetData(|i,yCol +|
|000024b0| 20 31 2c 20 78 5b 32 20 | 2a 20 69 20 2d 20 31 5d | 1, x[2 |* i - 1]|
|000024c0| 29 3b 0d 09 09 09 09 09 | 09 53 65 74 44 61 74 61 |);......|.SetData|
|000024d0| 28 69 2c 79 43 6f 6c 20 | 2b 20 32 2c 20 78 5b 32 |(i,yCol |+ 2, x[2|
|000024e0| 20 2a 20 69 5d 29 3b 0d | 09 09 09 09 09 09 69 66 | * i]);.|......if|
|000024f0| 20 28 54 65 73 74 53 74 | 6f 70 28 29 20 29 20 20 | (TestSt|op() ) |
|00002500| 7b 43 6c 65 61 6e 55 70 | 52 75 6e 28 78 29 3b 72 |{CleanUp|Run(x);r|
|00002510| 65 74 75 72 6e 3b 7d 0d | 09 09 09 09 09 7d 0d 0d |eturn;}.|.....}..|
|00002520| 09 09 09 09 69 66 20 28 | 78 20 21 3d 20 30 29 20 |....if (|x != 0) |
|00002530| 0d 09 09 09 09 7b 09 44 | 69 73 70 6f 73 50 74 72 |.....{.D|isposPtr|
|00002540| 28 28 50 74 72 29 20 78 | 29 3b 0d 09 09 09 09 09 |((Ptr) x|);......|
|00002550| 78 3d 30 3b 0d 09 09 09 | 09 7d 09 09 2f 2f 20 77 |x=0;....|.}..// w|
|00002560| 65 20 64 6f 6e 27 74 20 | 6e 65 65 64 20 74 68 65 |e don't |need the|
|00002570| 20 6d 65 6d 6f 72 79 20 | 61 6e 79 20 6d 6f 72 65 | memory |any more|
|00002580| 20 7d 0d 09 09 09 7d 0d | 7d 0d 0d 2f 2a 2a 2a 2a | }....}.|}../****|
|00002590| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000025a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000025b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000025c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000025d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000025e0| 2a 2a 2a 2f 0d 0d 76 6f | 69 64 20 43 6c 65 61 6e |***/..vo|id Clean|
|000025f0| 55 70 20 28 45 78 74 4d | 6f 64 75 6c 65 73 50 61 |Up (ExtM|odulesPa|
|00002600| 72 61 6d 42 6c 6f 63 6b | 2a 20 70 62 29 0d 09 2f |ramBlock|* pb)../|
|00002610| 2a 20 63 61 6c 6c 65 64 | 20 77 68 65 6e 20 74 68 |* called| when th|
|00002620| 65 20 66 75 6e 63 74 69 | 6f 6e 20 6f 72 20 70 72 |e functi|on or pr|
|00002630| 6f 67 72 61 6d 20 69 73 | 20 72 65 6d 6f 76 65 64 |ogram is| removed|
|00002640| 20 66 72 6f 6d 20 70 72 | 6f 20 46 69 74 27 73 20 | from pr|o Fit's |
|00002650| 6d 65 6e 75 73 20 2a 2f | 0d 09 2f 2a 20 69 6e 20 |menus */|../* in |
|00002660| 6d 6f 73 74 20 63 61 73 | 65 73 2c 20 74 68 69 73 |most cas|es, this|
|00002670| 20 66 75 6e 63 74 69 6f | 6e 20 63 61 6e 20 62 65 | functio|n can be|
|00002680| 20 65 6d 70 74 79 20 2a | 2f 0d 7b 0d 7d 0d 0d 0d | empty *|/.{.}...|
|00002690| 0d 0d 0d 0d 0d 0d 2f 2a | 2a 2a 2a 2a 2a 2a 2a 2a |....../*|********|
|000026a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000026b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000026c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000026d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000026e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2f 0d |********|******/.|
|000026f0| 09 09 09 09 09 09 2f 2a | 20 66 6f 72 20 66 75 6e |....../*| for fun|
|00002700| 63 74 69 6f 6e 73 2c 20 | 6e 6f 74 20 75 73 65 64 |ctions, |not used|
|00002710| 20 68 65 72 65 3a 20 2a | 2f 0d 2f 2a 2a 2a 2a 2a | here: *|/./*****|
|00002720| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002730| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002740| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002750| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002760| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002770| 2a 2a 2f 0d 0d 76 6f 69 | 64 20 49 6e 69 74 69 61 |**/..voi|d Initia|
|00002780| 6c 69 7a 65 46 75 6e 63 | 20 28 42 6f 6f 6c 65 61 |lizeFunc| (Boolea|
|00002790| 6e 2a 20 63 6f 6e 73 74 | 20 68 61 73 44 65 72 69 |n* const| hasDeri|
|000027a0| 76 61 74 69 76 65 73 2c | 20 53 74 72 32 35 35 20 |vatives,| Str255 |
|000027b0| 64 65 73 63 72 31 73 74 | 4c 69 6e 65 2c 20 53 74 |descr1st|Line, St|
|000027c0| 72 32 35 35 20 64 65 73 | 63 72 32 6e 64 4c 69 6e |r255 des|cr2ndLin|
|000027d0| 65 2c 09 09 0d 09 09 09 | 09 09 73 68 6f 72 74 2a |e,......|..short*|
|000027e0| 20 63 6f 6e 73 74 20 6e | 75 6d 62 65 72 4f 66 50 | const n|umberOfP|
|000027f0| 61 72 61 6d 73 2c 20 44 | 65 66 61 75 6c 74 50 61 |arams, D|efaultPa|
|00002800| 72 61 6d 49 6e 66 6f 2a | 20 63 6f 6e 73 74 20 61 |ramInfo*| const a|
|00002810| 30 2c 20 45 78 74 4d 6f | 64 75 6c 65 73 50 61 72 |0, ExtMo|dulesPar|
|00002820| 61 6d 42 6c 6f 63 6b 2a | 20 70 62 29 0d 7b 7d 0d |amBlock*| pb).{}.|
|00002830| 76 6f 69 64 20 46 75 6e | 63 20 28 09 64 6f 75 62 |void Fun|c (.doub|
|00002840| 6c 65 20 78 2c 20 50 61 | 72 61 6d 41 72 72 61 79 |le x, Pa|ramArray|
|00002850| 20 61 2c 09 64 6f 75 62 | 6c 65 2a 20 63 6f 6e 73 | a,.doub|le* cons|
|00002860| 74 20 79 2c 20 45 78 74 | 4d 6f 64 75 6c 65 73 50 |t y, Ext|ModulesP|
|00002870| 61 72 61 6d 42 6c 6f 63 | 6b 2a 20 70 62 29 09 09 |aramBloc|k* pb)..|
|00002880| 0d 7b 7d 0d 76 6f 69 64 | 20 44 65 72 69 76 61 74 |.{}.void| Derivat|
|00002890| 69 76 65 73 28 64 6f 75 | 62 6c 65 20 78 2c 20 50 |ives(dou|ble x, P|
|000028a0| 61 72 61 6d 41 72 72 61 | 79 20 61 2c 20 50 61 72 |aramArra|y a, Par|
|000028b0| 61 6d 41 72 72 61 79 20 | 64 79 64 61 2c 20 45 78 |amArray |dyda, Ex|
|000028c0| 74 4d 6f 64 75 6c 65 73 | 50 61 72 61 6d 42 6c 6f |tModules|ParamBlo|
|000028d0| 63 6b 2a 20 70 62 29 0d | 7b 7d 0d 73 68 6f 72 74 |ck* pb).|{}.short|
|000028e0| 20 43 68 65 63 6b 28 73 | 68 6f 72 74 20 70 61 72 | Check(s|hort par|
|000028f0| 61 6d 4e 6f 2c 20 44 65 | 66 61 75 6c 74 50 61 72 |amNo, De|faultPar|
|00002900| 61 6d 49 6e 66 6f 2a 20 | 63 6f 6e 73 74 20 61 30 |amInfo* |const a0|
|00002910| 2c 20 45 78 74 4d 6f 64 | 75 6c 65 73 50 61 72 61 |, ExtMod|ulesPara|
|00002920| 6d 42 6c 6f 63 6b 2a 20 | 70 62 29 0d 7b 72 65 74 |mBlock* |pb).{ret|
|00002930| 75 72 6e 20 6f 6b 3b 7d | 0d 76 6f 69 64 20 46 69 |urn ok;}|.void Fi|
|00002940| 72 73 74 20 28 50 61 72 | 61 6d 41 72 72 61 79 20 |rst (Par|amArray |
|00002950| 61 2c 20 45 78 74 4d 6f | 64 75 6c 65 73 50 61 72 |a, ExtMo|dulesPar|
|00002960| 61 6d 42 6c 6f 63 6b 2a | 20 70 62 29 0d 7b 7d 0d |amBlock*| pb).{}.|
|00002970| 76 6f 69 64 20 4c 61 73 | 74 20 28 45 78 74 4d 6f |void Las|t (ExtMo|
|00002980| 64 75 6c 65 73 50 61 72 | 61 6d 42 6c 6f 63 6b 2a |dulesPar|amBlock*|
|00002990| 20 70 62 29 0d 7b 7d 00 | 00 00 00 00 00 00 00 00 | pb).{}.|........|
|000029a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000029b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000029c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000029d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000029e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000029f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002a00| 00 00 01 00 00 00 01 54 | 00 00 00 54 00 00 00 46 |.......T|...T...F|
|00002a10| 26 02 32 92 d1 ae 32 03 | 20 14 b0 ab 00 34 67 02 |&.2...2.| ....4g.|
|00002a20| 66 48 4a ab b1 02 67 30 | 20 2c 5e 01 b0 ab b1 03 |fHJ...g0| ,^.....|
|00002a30| 05 46 46 54 2e 63 02 00 | 00 00 54 45 58 54 4b 41 |.FFT.c..|..TEXTKA|
|00002a40| 48 4c 01 00 00 64 00 00 | 00 00 00 00 30 44 00 00 |HL...d..|....0D..|
|00002a50| 00 00 54 45 58 54 4b 41 | 48 4c 01 00 00 64 00 00 |..TEXTKA|HL...d..|
|00002a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002a70| 00 00 aa 1f a9 bf 00 00 | 29 17 00 00 01 9a a8 9f |........|).......|
|00002a80| 65 72 00 12 08 01 00 00 | 0a 00 31 03 00 00 00 00 |er......|..1.....|
|00002a90| 02 32 50 00 0b 63 11 fe | 94 5c 11 0f 18 02 1a 2e |.2P..c..|.\......|
|00002aa0| 00 13 12 28 6e 00 08 12 | 70 00 26 40 03 7e 00 3d |...(n...|p.&@.~.=|
|00002ab0| 47 ff ae 76 23 01 42 10 | 76 23 c0 01 ff a6 11 2d |G..v#.B.|v#.....-|
|00002ac0| 6e 4f 01 ff c8 57 01 ff | 94 12 2f 0c 4e ba 02 01 |nO...W..|../.N...|
|00002ad0| e2 38 00 6d 01 66 58 11 | 2c 2e 5f 02 4a 05 66 14 |.8.m.fX.|,._.J.f.|
|00002ae0| 15 2f 06 48 6e fe 94 2f | 0c 4e ad 01 2f b2 c5 68 |./.Hn../|.N../..h|
|00002af0| 4f 01 66 38 2a 01 1c 02 | cc 01 4a 05 68 4f 01 66 |O.f8*...|..J.hO.f|
|00002b00| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 00 00 00 |...H..Mo|naco....|
|00002b10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002b20| 00 00 00 00 00 00 00 03 | 00 04 00 57 00 03 02 b1 |........|...W....|
|00002b30| 02 7b 00 57 00 03 02 b1 | 02 7b ad a9 38 f9 00 00 |.{.W....|.{..8...|
|00002b40| 16 d5 00 00 16 d5 00 00 | 14 22 00 00 00 00 00 04 |........|."......|
|00002b50| 00 01 00 01 00 00 01 00 | 00 00 01 54 00 00 00 54 |........|...T...T|
|00002b60| 00 00 00 46 00 e8 0d 10 | 1c a6 00 00 00 1c 00 46 |...F....|.......F|
|00002b70| 00 01 4d 50 53 52 00 00 | 00 12 4d 57 42 42 00 00 |..MPSR..|..MWBB..|
|00002b80| 00 1e 03 ed ff ff 00 00 | 00 00 00 00 00 00 03 f0 |........|........|
|00002b90| ff ff 00 00 00 4c 00 00 | 00 00 00 00 00 00 00 00 |.....L..|........|
|00002ba0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002bb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002bf0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+