Index - - Contents - - Previous chapter - Next chapter - - Previous page - Next page

Simpsons Rule for Integration

Wegematic 1000had a library of standard programs, which were stored in the main memory. B.16 was one such program that used Simpsons rule for integration given the function values y_{1}, y_{2},...,y_{n}(odd n), evaluated at equidistant points with separationh. It was written to make the calculation in the following way from left to right:I = [(yThe main program should copy B.16 to work channel III and the ordinates y_{1}+y_{n})/2 + y_{2}+y_{3}+...+y_{n-1}+ y_{2}+y_{4}+...+y_{n-1}](2h/3)_{1}, y_{2},...,y_{n}to work channel I with y_{1}in cell 00 and y_{n}in cell n-1. The ordinates had to be scaled so that the sum before the multiplication did not overflow the capacity of one cell. The value ofhshould be placed in the D register and the A register should contain the number of pointsnand the return address RA likeA: xxNNxxRA(NN = n), and then execute 1140, i.e, a jump to the first cell of work channel III. The code of B.16 was40 c1514dd1 c0 41 bc007701 c1 42 00000000 c2 43 00000000 c3 44 3728c141 c4 45 760017dc c5 46 00000000 c6 47 00000000 c7 48 17c8c150 c8 49 e54a3000 c9 4a 00000000 ca 4b 00000000 cb 4c c158c15c cc 4d e7553000 cd 4e 00000000 ce 4f 00000000 cf 50 4100bd00 d0 51 77001100 d1 52 00000000 d2 53 00000000 d3 54 a1011758 d4 55 aaaaaaab d5 56 00000000 d6 57 00000000 d7 58 bc001758 d8 59 00000000 d9 5a 00000000 da 5b 00000000 db 5c 7700c145 dc 5d 00000000 dd 5e 00000000 de 5f 00000000 dfWe go through some of the code (c. = command, C(Z) content of cell Z):40 c151 Store EE=C(E), for later restoring 51 77EE1100 d1 4dd1 Second address of A stored in d1 51 77EE11RA d1 44 3728 A <-> E, A <- 0. The c. for A <-> E is 36. Adding 1 giving 37 means that the address is also a c. c141 First address of A stored in 41 41 bcNN7701 c1 48 17c8 E <- E-1, jump to c8 if E not 0 else to c8, i.e., just decrease E c150 Store E in 50, (XX=n-1) 50 41XXbd00 d0 4c c158 Store E in 58, 58 bcXX1758 d8 c15c Store E in 5c, 5c 77XXc145 dc 50 41XX Copy y_{n-1+1}to B bd00 Add B and y_{0+1}and store in AB 54 a101 Shift AB one bit right, i.e., divide by 2. We now have (y_{1}+y_{n})/2 in AB 1758 Decrease E (see 48 above) (E=n-2) 58 bcXX AB <- AB + y_{n-1-E+1}, i.e. first y_{2}, then y_{3},... 1758 Decrease E, jump to 58 if E not 0 else next c. 5c 77XX E <- ii=(NN-1). Now AB contains (y_{1}+y_{n})/2 + y_{2}+y_{3}+...+y_{n-1}. ... cont. on next page