Home » Recent acquisitions » Acorn ADFS disks » adfs_ArchimedesWorld_199201.adf » January92 » !AWJan92/Goodies/ProgTheARM/FFT4

!AWJan92/Goodies/ProgTheARM/FFT4

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Recent acquisitions » Acorn ADFS disks » adfs_ArchimedesWorld_199201.adf » January92
Filename: !AWJan92/Goodies/ProgTheARM/FFT4
Read OK:
File size: 08AF bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > FFT4
   20
   30MODE 12
   40
   50N%=128
   60
   70n2%=2*N%
   80
   90DIM data(n2%)
  100REPEAT
  110K=RND(20)
  120J=RND(50)+50
  130CLS
  140PRINT"Frequencies: "K,J
  150
  160GCOL7
  170
  180FOR I%=0TO N%-1
  190  ii%=2*I%+1
  200  data(ii%)   = SINRAD(I%*K) + SINRAD(I%*J)
  210  data(ii%+1) = 0
  220  MOVE 4*I%,512
  230  DRAW 4*I%,512+256*data(ii%)
  240NEXT
  250
  260PROCfour1(N%,1)
  270
  280GCOL1
  290
  300FOR I%=0 TO (N%-1) DIV 2
  310  ii%=2*I%+1
  320  MOVE 8*I%,0
  330  DRAW 8*I%,8*ABS(data(ii%))
  340NEXT
  350
  360GCOL2
  370
  380FOR I%=0 TO (N%-1) DIV 2
  390  ii%=2*I%+1
  400  MOVE 640+8*I%,0
  410  DRAW 640+8*I%,8*ABS(data(ii%))
  420NEXT
  430
  440
  450REM Do the inverse and draw it again
  460
  470PROCfour1(N%,-1)
  480
  490GCOL3
  500
  510FOR I%=0TO N%-1
  520  ii%=2*I%+1
  530  MOVE 640+4*I%,512
  540  DRAW 640+4*I%,512+256*data(ii%)/N%
  550NEXT
  551QQ=GET
  560UNTIL.
  570
  580END
  590
  600
  610REM data() accessed by refernece
  620DEFPROCfour1(nn%,isign%)
  630
  640LOCALii%,jj%,n%,mmax%,m%,j%,istep%,i%
  650LOCALwtemp,wr,wpr,wpi,wi,theta
  660LOCALtempr,tempi,wrs,wis
  670
  680LOCALs
  690
  700n%=2*nn%
  710j%=1
  720REM This is the bit-reversal section of the routine
  730FOR ii%=1 TO nn%
  740  i%=2*ii%-1
  750  IF j% > i% THEN
  760    REM Swap the real and imarinary parts of the two
  770    tempr      = data(j%) : tempi      = data(j%+1)
  780    data(j%)   = data(i%) : data(j%+1) = data(i%+1)
  790    data(i%)   = tempr    : data(i%+1) = tempi
  800  ENDIF
  810  m% = n% DIV 2
  820  WHILE (m%>=2) AND (j%>m%)
  830    j% = j% - m%
  840    m% = m% DIV 2
  850  ENDWHILE
  860  j% = j% + m%
  870NEXT
  880
  890mmax% = 2
  900
  910REM Now the Danielson-Lanczos recurrence
  920
  930WHILE n% > mmax%
  940  istep% = 2*mmax%
  950  theta  = 2 * PI / (isign%*mmax%)
  960
  970        s=SIN(0.5*theta)
  980  wpr    = -2.0 * s*s
  990  wpi    = SIN(theta)
 1000
 1010  wr = 1.0
 1020  wi = 0.0
 1030  FOR ii% = 1 TO mmax% DIV 2
 1040    m% = 2*ii%-1
 1050    wrs = wr
 1060    wis = wi
 1070    FOR jj%=0 TO (n%-m%) DIV istep%
 1080      i% = m% + jj%*istep%
 1090      j% = i%+mmax%
 1100      tempr = wrs*data(j%)   - wis*data(j%+1)
 1110      tempi = wrs*data(j%+1) + wis*data(j%)
 1120      data(j%)   = data(i%)   - tempr
 1130      data(j%+1) = data(i%+1) - tempi
 1140      data(i%)   = data(i%)   + tempr
 1150      data(i%+1) = data(i%+1) + tempi
 1160    NEXT
 1170    wtemp = wr
 1180    wr = wr*wpr -    wi*wpi + wr
 1190    wi = wi*wpr + wtemp*wpi  +wi
 1200  NEXT
 1210  mmax% = istep%
 1220ENDWHILE
 1230ENDPROC
 1240
 1250
 1260
 1270
 1280
 1290
 1300
 1310
 1320
 1330
 1340
 1350
 1360
 1370
 1380
 1390

� > FFT4

� 12
(
2
N%=128
<
Fn2%=2*N%
P
Z� data(n2%)
d�
nK=�(20)
xJ=�(50)+50
��
��"Frequencies: "K,J
�
��7
�
�� I%=0� N%-1
�  ii%=2*I%+1
�'  data(ii%)   = ��(I%*K) + ��(I%*J)
�  data(ii%+1) = 0
�  � 4*I%,512
�  � 4*I%,512+256*data(ii%)
��
�
�four1(N%,1)

�1
"
,� I%=0 � (N%-1) � 2
6  ii%=2*I%+1
@  � 8*I%,0
J  � 8*I%,8*�(data(ii%))
T�
^
h�2
r
|� I%=0 � (N%-1) � 2
�  ii%=2*I%+1
�  � 640+8*I%,0
�  � 640+8*I%,8*�(data(ii%))
��
�
�
�&� Do the inverse and draw it again
�
��four1(N%,-1)
�
��3
�
�� I%=0� N%-1
  ii%=2*I%+1
  � 640+4*I%,512
%  � 640+4*I%,512+256*data(ii%)/N%
&�
'QQ=�
0�.
:
D�
N
X
b"� data() accessed by refernece
l��four1(nn%,isign%)
v
�%�ii%,jj%,n%,mmax%,m%,j%,istep%,i%
��wtemp,wr,wpr,wpi,wi,theta
��tempr,tempi,wrs,wis
�
��s
�
�n%=2*nn%
�j%=1
�5� This is the bit-reversal section of the routine
�� ii%=1 � nn%
�  i%=2*ii%-1
�  � j% > i% �
�6    � Swap the real and imarinary parts of the two
7    tempr      = data(j%) : tempi      = data(j%+1)
7    data(j%)   = data(i%) : data(j%+1) = data(i%+1)
2    data(i%)   = tempr    : data(i%+1) = tempi
   �
*  m% = n% � 2
4  ȕ (m%>=2) � (j%>m%)
>    j% = j% - m%
H    m% = m% � 2
R  �
\  j% = j% + m%
f�
p
z
mmax% = 2
�
�*� Now the Danielson-Lanczos recurrence
�
�ȕ n% > mmax%
�  istep% = 2*mmax%
�%  theta  = 2 * � / (isign%*mmax%)
�
�        s=�(0.5*theta)
�  wpr    = -2.0 * s*s
�  wpi    = �(theta)
�
�  wr = 1.0
�  wi = 0.0
  � ii% = 1 � mmax% � 2
    m% = 2*ii%-1
    wrs = wr
$    wis = wi
."    � jj%=0 � (n%-m%) � istep%
8      i% = m% + jj%*istep%
B      j% = i%+mmax%
L1      tempr = wrs*data(j%)   - wis*data(j%+1)
V/      tempi = wrs*data(j%+1) + wis*data(j%)
`)      data(j%)   = data(i%)   - tempr
j)      data(j%+1) = data(i%+1) - tempi
t)      data(i%)   = data(i%)   + tempr
~)      data(i%+1) = data(i%+1) + tempi
�	    �
�    wtemp = wr
�$    wr = wr*wpr -    wi*wpi + wr
�$    wi = wi*wpr + wtemp*wpi  +wi
�  �
�  mmax% = istep%
��
��
�
�
�
�





(
2
<
F
P
Z
d
n
�
00000000  0d 00 0a 0c f4 20 3e 20  46 46 54 34 0d 00 14 04  |..... > FFT4....|
00000010  0d 00 1e 08 eb 20 31 32  0d 00 28 04 0d 00 32 0a  |..... 12..(...2.|
00000020  4e 25 3d 31 32 38 0d 00  3c 04 0d 00 46 0c 6e 32  |N%=128..<...F.n2|
00000030  25 3d 32 2a 4e 25 0d 00  50 04 0d 00 5a 0f de 20  |%=2*N%..P...Z.. |
00000040  64 61 74 61 28 6e 32 25  29 0d 00 64 05 f5 0d 00  |data(n2%)..d....|
00000050  6e 0b 4b 3d b3 28 32 30  29 0d 00 78 0e 4a 3d b3  |n.K=.(20)..x.J=.|
00000060  28 35 30 29 2b 35 30 0d  00 82 05 db 0d 00 8c 17  |(50)+50.........|
00000070  f1 22 46 72 65 71 75 65  6e 63 69 65 73 3a 20 22  |."Frequencies: "|
00000080  4b 2c 4a 0d 00 96 04 0d  00 a0 06 e6 37 0d 00 aa  |K,J.........7...|
00000090  04 0d 00 b4 10 e3 20 49  25 3d 30 b8 20 4e 25 2d  |...... I%=0. N%-|
000000a0  31 0d 00 be 10 20 20 69  69 25 3d 32 2a 49 25 2b  |1....  ii%=2*I%+|
000000b0  31 0d 00 c8 27 20 20 64  61 74 61 28 69 69 25 29  |1...'  data(ii%)|
000000c0  20 20 20 3d 20 b5 b2 28  49 25 2a 4b 29 20 2b 20  |   = ..(I%*K) + |
000000d0  b5 b2 28 49 25 2a 4a 29  0d 00 d2 15 20 20 64 61  |..(I%*J)....  da|
000000e0  74 61 28 69 69 25 2b 31  29 20 3d 20 30 0d 00 dc  |ta(ii%+1) = 0...|
000000f0  10 20 20 ec 20 34 2a 49  25 2c 35 31 32 0d 00 e6  |.  . 4*I%,512...|
00000100  1e 20 20 df 20 34 2a 49  25 2c 35 31 32 2b 32 35  |.  . 4*I%,512+25|
00000110  36 2a 64 61 74 61 28 69  69 25 29 0d 00 f0 05 ed  |6*data(ii%).....|
00000120  0d 00 fa 04 0d 01 04 10  f2 66 6f 75 72 31 28 4e  |.........four1(N|
00000130  25 2c 31 29 0d 01 0e 04  0d 01 18 06 e6 31 0d 01  |%,1).........1..|
00000140  22 04 0d 01 2c 17 e3 20  49 25 3d 30 20 b8 20 28  |"...,.. I%=0 . (|
00000150  4e 25 2d 31 29 20 81 20  32 0d 01 36 10 20 20 69  |N%-1) . 2..6.  i|
00000160  69 25 3d 32 2a 49 25 2b  31 0d 01 40 0e 20 20 ec  |i%=2*I%+1..@.  .|
00000170  20 38 2a 49 25 2c 30 0d  01 4a 1b 20 20 df 20 38  | 8*I%,0..J.  . 8|
00000180  2a 49 25 2c 38 2a 94 28  64 61 74 61 28 69 69 25  |*I%,8*.(data(ii%|
00000190  29 29 0d 01 54 05 ed 0d  01 5e 04 0d 01 68 06 e6  |))..T....^...h..|
000001a0  32 0d 01 72 04 0d 01 7c  17 e3 20 49 25 3d 30 20  |2..r...|.. I%=0 |
000001b0  b8 20 28 4e 25 2d 31 29  20 81 20 32 0d 01 86 10  |. (N%-1) . 2....|
000001c0  20 20 69 69 25 3d 32 2a  49 25 2b 31 0d 01 90 12  |  ii%=2*I%+1....|
000001d0  20 20 ec 20 36 34 30 2b  38 2a 49 25 2c 30 0d 01  |  . 640+8*I%,0..|
000001e0  9a 1f 20 20 df 20 36 34  30 2b 38 2a 49 25 2c 38  |..  . 640+8*I%,8|
000001f0  2a 94 28 64 61 74 61 28  69 69 25 29 29 0d 01 a4  |*.(data(ii%))...|
00000200  05 ed 0d 01 ae 04 0d 01  b8 04 0d 01 c2 26 f4 20  |.............&. |
00000210  44 6f 20 74 68 65 20 69  6e 76 65 72 73 65 20 61  |Do the inverse a|
00000220  6e 64 20 64 72 61 77 20  69 74 20 61 67 61 69 6e  |nd draw it again|
00000230  0d 01 cc 04 0d 01 d6 11  f2 66 6f 75 72 31 28 4e  |.........four1(N|
00000240  25 2c 2d 31 29 0d 01 e0  04 0d 01 ea 06 e6 33 0d  |%,-1).........3.|
00000250  01 f4 04 0d 01 fe 10 e3  20 49 25 3d 30 b8 20 4e  |........ I%=0. N|
00000260  25 2d 31 0d 02 08 10 20  20 69 69 25 3d 32 2a 49  |%-1....  ii%=2*I|
00000270  25 2b 31 0d 02 12 14 20  20 ec 20 36 34 30 2b 34  |%+1....  . 640+4|
00000280  2a 49 25 2c 35 31 32 0d  02 1c 25 20 20 df 20 36  |*I%,512...%  . 6|
00000290  34 30 2b 34 2a 49 25 2c  35 31 32 2b 32 35 36 2a  |40+4*I%,512+256*|
000002a0  64 61 74 61 28 69 69 25  29 2f 4e 25 0d 02 26 05  |data(ii%)/N%..&.|
000002b0  ed 0d 02 27 08 51 51 3d  a5 0d 02 30 06 fd 2e 0d  |...'.QQ=...0....|
000002c0  02 3a 04 0d 02 44 05 e0  0d 02 4e 04 0d 02 58 04  |.:...D....N...X.|
000002d0  0d 02 62 22 f4 20 64 61  74 61 28 29 20 61 63 63  |..b". data() acc|
000002e0  65 73 73 65 64 20 62 79  20 72 65 66 65 72 6e 65  |essed by referne|
000002f0  63 65 0d 02 6c 17 dd f2  66 6f 75 72 31 28 6e 6e  |ce..l...four1(nn|
00000300  25 2c 69 73 69 67 6e 25  29 0d 02 76 04 0d 02 80  |%,isign%)..v....|
00000310  25 ea 69 69 25 2c 6a 6a  25 2c 6e 25 2c 6d 6d 61  |%.ii%,jj%,n%,mma|
00000320  78 25 2c 6d 25 2c 6a 25  2c 69 73 74 65 70 25 2c  |x%,m%,j%,istep%,|
00000330  69 25 0d 02 8a 1e ea 77  74 65 6d 70 2c 77 72 2c  |i%.....wtemp,wr,|
00000340  77 70 72 2c 77 70 69 2c  77 69 2c 74 68 65 74 61  |wpr,wpi,wi,theta|
00000350  0d 02 94 18 ea 74 65 6d  70 72 2c 74 65 6d 70 69  |.....tempr,tempi|
00000360  2c 77 72 73 2c 77 69 73  0d 02 9e 04 0d 02 a8 06  |,wrs,wis........|
00000370  ea 73 0d 02 b2 04 0d 02  bc 0c 6e 25 3d 32 2a 6e  |.s........n%=2*n|
00000380  6e 25 0d 02 c6 08 6a 25  3d 31 0d 02 d0 35 f4 20  |n%....j%=1...5. |
00000390  54 68 69 73 20 69 73 20  74 68 65 20 62 69 74 2d  |This is the bit-|
000003a0  72 65 76 65 72 73 61 6c  20 73 65 63 74 69 6f 6e  |reversal section|
000003b0  20 6f 66 20 74 68 65 20  72 6f 75 74 69 6e 65 0d  | of the routine.|
000003c0  02 da 11 e3 20 69 69 25  3d 31 20 b8 20 6e 6e 25  |.... ii%=1 . nn%|
000003d0  0d 02 e4 10 20 20 69 25  3d 32 2a 69 69 25 2d 31  |....  i%=2*ii%-1|
000003e0  0d 02 ee 11 20 20 e7 20  6a 25 20 3e 20 69 25 20  |....  . j% > i% |
000003f0  8c 0d 02 f8 36 20 20 20  20 f4 20 53 77 61 70 20  |....6    . Swap |
00000400  74 68 65 20 72 65 61 6c  20 61 6e 64 20 69 6d 61  |the real and ima|
00000410  72 69 6e 61 72 79 20 70  61 72 74 73 20 6f 66 20  |rinary parts of |
00000420  74 68 65 20 74 77 6f 0d  03 02 37 20 20 20 20 74  |the two...7    t|
00000430  65 6d 70 72 20 20 20 20  20 20 3d 20 64 61 74 61  |empr      = data|
00000440  28 6a 25 29 20 3a 20 74  65 6d 70 69 20 20 20 20  |(j%) : tempi    |
00000450  20 20 3d 20 64 61 74 61  28 6a 25 2b 31 29 0d 03  |  = data(j%+1)..|
00000460  0c 37 20 20 20 20 64 61  74 61 28 6a 25 29 20 20  |.7    data(j%)  |
00000470  20 3d 20 64 61 74 61 28  69 25 29 20 3a 20 64 61  | = data(i%) : da|
00000480  74 61 28 6a 25 2b 31 29  20 3d 20 64 61 74 61 28  |ta(j%+1) = data(|
00000490  69 25 2b 31 29 0d 03 16  32 20 20 20 20 64 61 74  |i%+1)...2    dat|
000004a0  61 28 69 25 29 20 20 20  3d 20 74 65 6d 70 72 20  |a(i%)   = tempr |
000004b0  20 20 20 3a 20 64 61 74  61 28 69 25 2b 31 29 20  |   : data(i%+1) |
000004c0  3d 20 74 65 6d 70 69 0d  03 20 07 20 20 cd 0d 03  |= tempi.. .  ...|
000004d0  2a 11 20 20 6d 25 20 3d  20 6e 25 20 81 20 32 0d  |*.  m% = n% . 2.|
000004e0  03 34 1a 20 20 c8 95 20  28 6d 25 3e 3d 32 29 20  |.4.  .. (m%>=2) |
000004f0  80 20 28 6a 25 3e 6d 25  29 0d 03 3e 14 20 20 20  |. (j%>m%)..>.   |
00000500  20 6a 25 20 3d 20 6a 25  20 2d 20 6d 25 0d 03 48  | j% = j% - m%..H|
00000510  13 20 20 20 20 6d 25 20  3d 20 6d 25 20 81 20 32  |.    m% = m% . 2|
00000520  0d 03 52 07 20 20 ce 0d  03 5c 12 20 20 6a 25 20  |..R.  ...\.  j% |
00000530  3d 20 6a 25 20 2b 20 6d  25 0d 03 66 05 ed 0d 03  |= j% + m%..f....|
00000540  70 04 0d 03 7a 0d 6d 6d  61 78 25 20 3d 20 32 0d  |p...z.mmax% = 2.|
00000550  03 84 04 0d 03 8e 2a f4  20 4e 6f 77 20 74 68 65  |......*. Now the|
00000560  20 44 61 6e 69 65 6c 73  6f 6e 2d 4c 61 6e 63 7a  | Danielson-Lancz|
00000570  6f 73 20 72 65 63 75 72  72 65 6e 63 65 0d 03 98  |os recurrence...|
00000580  04 0d 03 a2 11 c8 95 20  6e 25 20 3e 20 6d 6d 61  |....... n% > mma|
00000590  78 25 0d 03 ac 16 20 20  69 73 74 65 70 25 20 3d  |x%....  istep% =|
000005a0  20 32 2a 6d 6d 61 78 25  0d 03 b6 25 20 20 74 68  | 2*mmax%...%  th|
000005b0  65 74 61 20 20 3d 20 32  20 2a 20 af 20 2f 20 28  |eta  = 2 * . / (|
000005c0  69 73 69 67 6e 25 2a 6d  6d 61 78 25 29 0d 03 c0  |isign%*mmax%)...|
000005d0  04 0d 03 ca 1a 20 20 20  20 20 20 20 20 73 3d b5  |.....        s=.|
000005e0  28 30 2e 35 2a 74 68 65  74 61 29 0d 03 d4 19 20  |(0.5*theta).... |
000005f0  20 77 70 72 20 20 20 20  3d 20 2d 32 2e 30 20 2a  | wpr    = -2.0 *|
00000600  20 73 2a 73 0d 03 de 17  20 20 77 70 69 20 20 20  | s*s....  wpi   |
00000610  20 3d 20 b5 28 74 68 65  74 61 29 0d 03 e8 04 0d  | = .(theta).....|
00000620  03 f2 0e 20 20 77 72 20  3d 20 31 2e 30 0d 03 fc  |...  wr = 1.0...|
00000630  0e 20 20 77 69 20 3d 20  30 2e 30 0d 04 06 1b 20  |.  wi = 0.0.... |
00000640  20 e3 20 69 69 25 20 3d  20 31 20 b8 20 6d 6d 61  | . ii% = 1 . mma|
00000650  78 25 20 81 20 32 0d 04  10 14 20 20 20 20 6d 25  |x% . 2....    m%|
00000660  20 3d 20 32 2a 69 69 25  2d 31 0d 04 1a 10 20 20  | = 2*ii%-1....  |
00000670  20 20 77 72 73 20 3d 20  77 72 0d 04 24 10 20 20  |  wrs = wr..$.  |
00000680  20 20 77 69 73 20 3d 20  77 69 0d 04 2e 22 20 20  |  wis = wi..."  |
00000690  20 20 e3 20 6a 6a 25 3d  30 20 b8 20 28 6e 25 2d  |  . jj%=0 . (n%-|
000006a0  6d 25 29 20 81 20 69 73  74 65 70 25 0d 04 38 1e  |m%) . istep%..8.|
000006b0  20 20 20 20 20 20 69 25  20 3d 20 6d 25 20 2b 20  |      i% = m% + |
000006c0  6a 6a 25 2a 69 73 74 65  70 25 0d 04 42 17 20 20  |jj%*istep%..B.  |
000006d0  20 20 20 20 6a 25 20 3d  20 69 25 2b 6d 6d 61 78  |    j% = i%+mmax|
000006e0  25 0d 04 4c 31 20 20 20  20 20 20 74 65 6d 70 72  |%..L1      tempr|
000006f0  20 3d 20 77 72 73 2a 64  61 74 61 28 6a 25 29 20  | = wrs*data(j%) |
00000700  20 20 2d 20 77 69 73 2a  64 61 74 61 28 6a 25 2b  |  - wis*data(j%+|
00000710  31 29 0d 04 56 2f 20 20  20 20 20 20 74 65 6d 70  |1)..V/      temp|
00000720  69 20 3d 20 77 72 73 2a  64 61 74 61 28 6a 25 2b  |i = wrs*data(j%+|
00000730  31 29 20 2b 20 77 69 73  2a 64 61 74 61 28 6a 25  |1) + wis*data(j%|
00000740  29 0d 04 60 29 20 20 20  20 20 20 64 61 74 61 28  |)..`)      data(|
00000750  6a 25 29 20 20 20 3d 20  64 61 74 61 28 69 25 29  |j%)   = data(i%)|
00000760  20 20 20 2d 20 74 65 6d  70 72 0d 04 6a 29 20 20  |   - tempr..j)  |
00000770  20 20 20 20 64 61 74 61  28 6a 25 2b 31 29 20 3d  |    data(j%+1) =|
00000780  20 64 61 74 61 28 69 25  2b 31 29 20 2d 20 74 65  | data(i%+1) - te|
00000790  6d 70 69 0d 04 74 29 20  20 20 20 20 20 64 61 74  |mpi..t)      dat|
000007a0  61 28 69 25 29 20 20 20  3d 20 64 61 74 61 28 69  |a(i%)   = data(i|
000007b0  25 29 20 20 20 2b 20 74  65 6d 70 72 0d 04 7e 29  |%)   + tempr..~)|
000007c0  20 20 20 20 20 20 64 61  74 61 28 69 25 2b 31 29  |      data(i%+1)|
000007d0  20 3d 20 64 61 74 61 28  69 25 2b 31 29 20 2b 20  | = data(i%+1) + |
000007e0  74 65 6d 70 69 0d 04 88  09 20 20 20 20 ed 0d 04  |tempi....    ...|
000007f0  92 12 20 20 20 20 77 74  65 6d 70 20 3d 20 77 72  |..    wtemp = wr|
00000800  0d 04 9c 24 20 20 20 20  77 72 20 3d 20 77 72 2a  |...$    wr = wr*|
00000810  77 70 72 20 2d 20 20 20  20 77 69 2a 77 70 69 20  |wpr -    wi*wpi |
00000820  2b 20 77 72 0d 04 a6 24  20 20 20 20 77 69 20 3d  |+ wr...$    wi =|
00000830  20 77 69 2a 77 70 72 20  2b 20 77 74 65 6d 70 2a  | wi*wpr + wtemp*|
00000840  77 70 69 20 20 2b 77 69  0d 04 b0 07 20 20 ed 0d  |wpi  +wi....  ..|
00000850  04 ba 14 20 20 6d 6d 61  78 25 20 3d 20 69 73 74  |...  mmax% = ist|
00000860  65 70 25 0d 04 c4 05 ce  0d 04 ce 05 e1 0d 04 d8  |ep%.............|
00000870  04 0d 04 e2 04 0d 04 ec  04 0d 04 f6 04 0d 05 00  |................|
00000880  04 0d 05 0a 04 0d 05 14  04 0d 05 1e 04 0d 05 28  |...............(|
00000890  04 0d 05 32 04 0d 05 3c  04 0d 05 46 04 0d 05 50  |...2...<...F...P|
000008a0  04 0d 05 5a 04 0d 05 64  04 0d 05 6e 04 0d ff     |...Z...d...n...|
000008af