WeRead Powered by ReaderPub
Giant brains; or, Machines that think cover

Giant brains; or, Machines that think

Chapter 90: Multiplying
Open in WeRead

Explore more books like this:

About This Book

The author surveys early automatic and sequence-controlled computing machines, explains how they process information and argues about whether such devices can be said to think. He describes major examples, the inner workings and design trade-offs, and offers excursions into language, symbols, logic, and basic mathematics to make principles accessible to nontechnical readers. The book also compares mechanized information processing with human brain functions and considers future designs and societal implications, offering supplementary material and references for readers who want deeper technical or mathematical detail.

Chapter 6
ACCURACY TO 23 DIGITS:
HARVARD’S IBM AUTOMATIC
SEQUENCE-CONTROLLED CALCULATOR

One of the first giant brains to be finished was the machine in the Computation Laboratory at Harvard University called the IBM Automatic Sequence-Controlled Calculator. This great mechanical brain started work in April 1944 and has been running 24 hours a day almost all the time ever since. It has produced quantities of information for the United States Navy. Although many problems that have been placed on it have been classified by the Navy as confidential, the machine itself is fully public. The way it was working on Sept. 1, 1945, has been thoroughly described in a 540-page book published in 1946, Volume I of the Annals of the Harvard Computation Laboratory, entitled Manual of Operation of the Automatic Sequence-Controlled Calculator. Since then the machine has been improved in many ways.

This machine does thousands of calculating steps, one after another, according to a scheme fixed ahead of time. This property is what gives the machine its name: automatic, since the individual operations are automatic, once the punched tape fixing the chain of operations has been put on the machine, and sequence-controlled, since control over the sequence of its operations has been built into the machine.

ORIGIN AND DEVELOPMENT

More than a hundred years ago, an English mathematician and actuary, Charles Babbage (1792-1871), designed a machine—or engine as he called it—that would carry out the sequences of mathematical operations. In the 1830’s he received a government grant to build an analytical engine whereby long chains of calculations could be performed. But he was unsuccessful, because the refined physical devices necessary for quantities of digital calculation were not yet developed. Only in the 1930’s did these physical devices become sufficiently versatile and reliable for a calculator of hundreds of thousands of parts to be successful.

The Automatic Sequence-Controlled Calculator at Harvard was largely the concept of Professor Howard H. Aiken of Harvard. It was built through a partnership of efforts, ideas, and engineering between him and the International Business Machines Corporation, in the years 1937 to 1944. The calculator was a gift from IBM to Harvard University. Some very useful additional control units, named the Subsidiary Sequence Mechanism, were built at the Harvard Computation Laboratory in 1947 and joined to the machine.

Fig. 1. Scheme of Harvard IBM Automatic
Sequence-Controlled Calculator.

GENERAL ORGANIZATION

The machine (see Fig. 1) is about 50 feet long, 8 feet high, and about 2 feet wide. It consists of 22 panels; 17 of them are set in a straight line, and the last 5 are at the rear of the machine. In the scheme of the machine shown in Fig. 1, the details you would see in a photograph have been left out. Instead you see the sections of the machine that are important because of what they do: input, memory, control, and output. Why do we not see a section labeled “computer”? Because in this mechanical brain the computing part of the machine is closely joined to the memory: every storage register can add and subtract. We shall soon discuss these sections of the machine more fully.

PHYSICAL DEVICES

Now in order for any brain to work, physical devices must be used. For example, in the human body, a nerve is the physical device that carries information from one part of the body to another. In the Harvard machine, an insulated wire is the physical device that carries information from one part of the machine to another. One side of every panel in the Harvard machine is heavily laden with a great network of wires. Between the panels, you can see in many places cables as thick as your arm and containing hundreds of wires. More than 500 miles of wire are used.

The physical devices in the Harvard machine are numerous, as we would expect. It is perhaps not surprising that this machine has more than 760,000 parts. But, curiously enough, there are only 7 main kinds of physical devices in the major part of the machine. They are: wire, two-position switches, two-position relays (see Chapter 2), ten-position switches, ten-position relays, buttons, and cam contacts (see below). These are the devices that handle information in the form of electrical impulses. They can be combined by electrical circuits in a great variety of ways. There are, of course, other kinds of physical devices that are important, but they are not numerous, and they have rather simple duties. Looking at the machine, you can see three examples easily. Physical devices of the first kind convert punched holes into electrical impulses: 2 card feeds, 4 tape feeds. Those of the second kind convert electrical impulses into punched holes: 1 card punch, 1 tape punch. Those of the third kind convert electrical impulses into printed characters: 2 electric typewriters. We can think of a fourth kind of physical device that would be a help, but, at present writing, it does not yet exist: a device that converts printed characters into electrical impulses.

The Harvard machine, of course, is complicated. But it is complicated because of the variety of ways in which relatively simple devices have been connected together to make a machine that thinks.

Switches

A two-position switch (see Fig. 2) turned by hand connects a wire to either one of 2 others. These 2 positions may stand for “yes” and “no,” 0 and 1, etc. There are many two-position switches in the machine. A ten-position switch or dial switch (see Fig. 3) turned by hand connects the wire running into the center of the switch with a wire at any one of ten positions 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 around the edge. There are over 1400 dial switches in the machine. How does turning the pointer on the top of the dial make connection between the center wire and the edge wire? Under the face of the dial is the part that works, a short rod of metal fastened to the pointer (shown with dashes in Fig. 3). When the pointer turns, this rod also turns, making the desired connection.

 

Fig. 2.Two-position switch.

Fig. 3. Dial switch.

Relays

Two-position relays—more often called just relays (see Chapter 2)—do the automatic routing of the electrical impulses that cause computing to take place. Each relay may take 2 positions, open or closed, and these positions may stand for 0 and 1. There are more than 3000 relays in the Harvard machine.

A magnet pulling one way and a spring pulling the other way are sufficient in an ordinary relay to give 2 positions, “on” and “off,” “yes” and “no,” 0 and 1. But how do we make a relay that can hold any one of 10 positions? Figure 4 shows one scheme for a ten-position relay. The arm can take any one of 10 positions, connecting the contact Common to any one of the contacts O, 1, 2, 3, 4, 5, 6, 7, 8, and 9 so that current can flow. The gear turns all the time. When an impulse comes in on the Pickup line, the clutch connects the arm to the gear. When an impulse comes in on the Drop-out line, the clutch disconnects the arm from the gear. For example, suppose that the ten-position relay is stopped at contact 2, as shown. Suppose that we now pick up the relay, hold it just long enough to turn 3 steps, and then drop it out. The relay will now rest at contact 5.

Fig. 4. Scheme of a ten-position relay,
or counter position.

Fig. 5. Scheme of a
counter wheel.

In the Harvard machine, the ten-position relays, much like the scheme shown, do the same work as counter wheels (Fig. 5) in an ordinary desk calculating machine, and so they are often spoken of as counter positions in the Harvard machine. They are very useful in the machine not only because they express the 10 decimal digits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 but also because adding and subtracting numbers is accomplished by turning them through the proper number of steps. In fact, an additional impulse is provided when the counter position turns from 9 to 0, for purposes of carry. A group of 24 counter positions makes up each storage counter—or storage register—in the machine. There are 2200 of these counter positions. Each is connected to a continuously running gear on a small shaft (Fig. 6). All these shafts are connected by other gears and shafts to a main drive shaft, and they are driven by a 5-horsepower motor at the back of the machine. When a counter position is supposed to step, a clutch connects the drive to the running gear, and the counter position steps. When the counter position is supposed to stay unchanged, the clutch is disconnected and the driving gear runs free. In fact, when you first approach the Harvard machine, about the first thing you are aware of is the running of these gears and the intermittent whirring and clicking of the counter positions as they step. The machine gives a fine impression of being busy!

Fig. 6. Scheme of counter 16.

Timing Contacts

A button (see Fig. 7) is a device for closing an electric circuit when and only when you push it. A simple example is the button for ringing a bell: you push the button, a circuit is closed, and something happens. When you let go, the circuit is opened. The Harvard machine has a button for starting, a button for stopping, and many others.

Fig. 7. Button.

Fig. 8. Cam, with 5 lobes and contact.

A cam contact (see Fig. 8) is an automatic device for closing an electric circuit for just a short interval of time. When the lobes on the cam strike the contact, it closes and current flows. When the lobes have gone by, the spring pushes open the contact, and no current flows. Just as a two-position relay is the automatic equivalent of a two-position switch, and a ten-position relay is the automatic equivalent of a ten-position switch, so a cam contact is the automatic equivalent of a button.

All the cams in the machine have 20 pockets where small round metal lobes may or may not be inserted. Each cam makes a full turn once in ³/₁₀ of a second and is in time with all the others. Thus we can time all the electrical circuits in the machine in units of ³/₂₀₀ of a second.

NUMBERS

Numbers in the machine regularly consist of 23 decimal digits. The 24th numerical position at the left in any register contains only 0 for a positive number and only 9 for a negative number. Nines complements (see Supplement 2) are used for negative numbers. For example,-00284 is represented as 999715, supposing that we had 5-digit numbers instead of 23-digit numbers. The sum of two nines complements is automatically corrected so that it is still a correct nines complement. The device that accomplishes this is called end-around-carry (see Supplement 2). The decimal point is fixed for each problem; in other words, in any problem, the decimal point is consistently kept in one place, usually between the 15th and 16th decimal columns from the right.

HOW INFORMATION GOES
INTO THE MACHINE

Numerical information may go into the machine in any one of 3 ways: (1) by regular IBM punch cards, using standard IBM card feeds (panel 16); (2) by hand-set dial switches (panels 1, 2); and (3) by long loops of punched tape placed on the value tape feeds (panels 12 to 14). Three sets of 24 columns each punched on a regular IBM punch card can be used to send 3 numbers and their signs into the machine in one machine cycle. This is the fastest way for giving numbers to the machine, but the most limited; for the cards must be referred to in order and can be referred to automatically only once. Also, there is the risk that they may be out of order. A card may be passed through the machine without reading; this saves some sorting in preparing cards for the machine. Machines for preparing the cards are regular IBM key punches, and machines for sorting them after preparation are regular IBM card sorters.

In panels 1 and 2 there are 60 registers by which unchanging numbers like 1, or 3.14159265···, or 7.65 may be put into the machine. These are called the constant registers. Each constant register consists of 24 dial switches and contains 23 digits and a sign, 0 if positive and 9 if negative. Whenever the mathematician says a certain constant is needed for a problem, the operator of the machine walks over to these panels, and, while the machine is turned off, sets the dial switches for the number, one by one, by hand. If we need 40 constants of 10 digits each for a problem, then the operator sets 400 dial switches by hand and makes certain that the remaining 14 switches in each of the 40 constant registers used are either at 0 or 9, depending on the sign of the number. Only then can he return to start the machine.

Fig. 9. Value tape code.

The third means by which numerical information can be put into the machine is the value tape feeds, in panels 12, 13, and 14. Here the machine can consult tables of numbers. The numbers are punched on paper tape 24 holes wide, made of punch-card stock. Tapes for the value tape feeds may be prepared by hand or by the machine itself using punch cards or machine calculation. The tapes use equally spaced arguments (see Supplement 2). The tape punch changes the decimal digits in its keyboard into the following punching code (see Fig. 9):

 0  0000    5  1100
1 1000 6 1010
2 0010 7 1001
3 0010 8 0110
4 0001 9 0101

Here the 1 denotes a punched hole and 0 no punched hole, and the 4 columns from left to right of the code correspond to 4 rows of the paper tape from bottom to top. To make sure the value tape is correct, the machine itself can read the value tape and check it mathematically or compare it with punch-card values.

HOW INFORMATION COMES
OUT OF THE MACHINE

Information comes out of the machine in any one of three ways: (1) by punching on IBM cards with a regular IBM card punch that is built into the machine (panel 17), (2) by typing on paper sheets with electric typewriters (panels 16 and 17), and (3) by punching paper tape 24 holes wide of the same kind as is fed into the machine.

Usually, one of the electric typewriters is used to print a result for a visual check and to print it before the machine makes a specified check of the value. Then, about 10 seconds later, after the result has been checked as specified in the machine, the checked result is printed by the second typewriter. In the second typewriter, a special one-use carbon ribbon of paper is used to produce copy for publication by a photographic process.

The card punch writes a number more rapidly than an electric typewriter. This extra speed is sometimes very useful. However, the punch’s chief purpose is to record intermediate results on punch cards. Then, if there is a machine failure, and if the problem has been well organized, the problem may be run over from these intermediate results, instead of requiring a return to the original starting information. The tape punch used for preparing tape by hand can also be operated by cable from the machine.

HOW INFORMATION IS HANDLED
IN THE MACHINE

The machine is a mechanical brain. So, between taking in information and putting out information, the machine does some “thinking.” It does this thinking according to instructions. The instructions go into the machine as: (1) the setting of switches, or (2) the pressing of buttons, or (3) the wiring of plugboards, or (4) feeding in tape punched with holes. The instructions are remembered in the machine in these 4 ways, and we can call these sets of devices the control of the machine.

To illustrate: One of the buttons pressed for every problem is the Start Key: when you press it, the machine starts to work on the problem. One of the switches with which you give instructions is a switch that turns electric typewriter 1 on or off. One of the plugboards contains some hubs by which you can tell the machine how many figures to choose in the quotient when dividing, for clearly you do not need a quotient of 23 figures every time the machine divides. You can have 5 choices in any one problem; you can specify them by plugging, and you can call for any one of 5 choices of quotient size from time to time during the problem. In many cases, when we wish the machine to do the same thing for all of a single problem and do it whenever the occasion arises, we can put the instruction into the wiring of a plugboard. We use plugboard wiring, for example, in fixing the decimal point in multiplication, so that the product will read out properly, and in guiding the operation of the typewriters, so that printing will take place in the columns where we want it.

Sequence of Steps

The most important part of the control of the machine is the sequence-tape feed and its sequence-control tape. These tell the machine a great part of what operations are to be performed.

Fig. 10. Sequence-control tape code.

At the end of the room where the machine is, there is the special tape punch mentioned above. It holds a big spool of card stock that is thin, flexible, smooth, and tough. With one keyboard we may prepare value tape. With another keyboard we prepare the sequence-control tape. The tape (see Fig. 10) contains places for 24 round punched holes in each row. Some and only some of these holes are punched. Each row of punched holes is equivalent to an instruction to the machine and is called a line of coding or coding line. In general, the instruction has the form:

  • Take a number out of Register A;
  • put the number into Register B;
  • and perform operation C.

The first group of 8 holes at the left is called the A field or the out-field. Here we tell the machine where a number is to be taken from. The middle group of 8 holes is called the B field or the in-field. Here we tell the machine where a number is to be put. The last group of 8 holes is called the C field or the miscellaneous field. Here we tell the machine part or all of the operation that is to be performed.

To illustrate (see Fig. 10), we have holes 3, 2, 1 punched in the A field, holes 3, 2 punched in the B field, and hole 7 punched in the C field. Now 321 is the code—or machine language, or machine call number—for storage counter 7; 32 is the code for storage counter 6; and 7 in the C field is the code (in this case, and generally) for “Add, and read the next line of coding.” So, if we punch out this line of coding and put the tape on the machine, we tell the machine to read the number in counter 7, add it into counter 6, and proceed to the next line of coding and read that.

The holes in each group of 8 holes from left to right are numbered: 8, 7, 6, 5, 4, 3, 2, 1. The code 631, for example, means that holes 6, 3, 1 are punched and that no holes are punched at 8, 7, 5, 4, 2. Since it is more natural, the code is read from left to right, or 631, instead of from right to left in the sequence 136.

The devices in the machine have in-codes, used in the in-field, and out-codes, used in the out-field. For each of the 72 regular storage counters, the in-code and the out-code are the same. The first 8 storage counters have the codes 1, 2, 21, 3, 31, 32, 321, 4, 41; the last 2 storage counters, the 71st and the 72nd, have the codes 7321, 74.

The constant registers—often called constant switches, or just switches—naturally have only out-codes, since numbers can be entered into the constant registers only by setting dial switches by hand. The first 8 constant registers have the out-codes 741, 742, 7421, 743, 7431, 7432, 74321, 75, and the 59th and 60th constant registers have the out-codes 821, 83.

Transferring, Adding, and Clearing

Each storage counter has the property that any number transferred into it is added into it. For example, the instruction

  • Take the number in switch 741;
  • transfer it into storage register 321

is coded:

741, 321, 7

The 7 in the third column is an instruction to the sequence-tape feed to turn up to the next coding line and read it. If any number is already stored in register 321, the content of 741 will be added to it, and the total will then be stored in 321.

Resetting or clearing a regular storage register is accomplished by a coding that is a departure from the usual scheme of “out” and “in.” The instruction

  • Clear register 321;
  • read the next coding line

is coded:

321, 321, 7

Similarly, you can clear any other regular storage register if you repeat its code in the out-and in-fields. However, a few of the storage registers in the machine have special reset codes, and these may occur in any of the three fields A, B, C.

As the result of a recent modification of the machine, you can easily double the number in any storage register. For example, the instruction

  • Double the number in register 321;
  • read the next coding line

is coded:

321, 321, 743

Subtracting

If the number in switch 741 is to be subtracted from the number in storage counter 321, the instruction is changed into:

  • Take the negative of the number in switch 741;
  • transfer it into storage register 321;
  • read the next line of coding

The coding line becomes:

741, 321, 732

By putting 32 in the C field, we cause the number in switch 741 to be subtracted from whatever number is in register 321.

We have 2 more choices in adding and subtracting. The value of the number without regard to sign—in other words, its absolute value (see Supplement 2)—may be added or subtracted. The instruction

Add the absolute value of

is expressed by a C field code 2, and the instruction

Add the negative of the absolute value of

is expressed by a C field code 1.

Multiplying

When we wish to multiply one number by another and get a product, we have 3 numbers. We tell the machine about each of these numbers on a separate line of coding. Multiplication is signaled by sending a number into the multiplicand counter. The multiplicand counter has an in-code 761. If the multiplicand is in 321, the instruction is:

  • Take the number in 321;
  • enter it as multiplicand;
  • read the next coding line

The coding is:

321, 761, 7

On the third following coding line, the multiplier is sent into the multiplier counter. If the multiplier is in switch 741, the instruction is:

  • Take the number in 741;
  • enter it as multiplier;
  • read the next coding line

The coding is:

741, ——, 7

We do not punch anything in the middle field: the machine is “educated” and “knows” that it has started a multiplication and needs a multiplier, and it expects this multiplier in the third coding line. To have no code for the multiplier counter is, of course, a departure from the general rule, but it saves some punching and permits the use of this space for certain other codes, thus saving some operating time.

We need not confuse the 761 in-code for the multiplicand counter with the 761 out-code, which happens to be the out-code of the 25th constant register, because neither can occur in the other’s field. We may, of course, use other registers besides 321 and 741 for supplying the multiplicand and multiplier.

To get the product and put it into any storage counter D, we use two lines of coding one right after the other:

——  ——  6421

8761    D    ——

The product counter has the out-code 8761. When the product is desired, it is called for, transferred into counter D, and the multiplication unit is automatically cleared. It takes time, however, for the machine to perform a multiplication. That is the reason for the preceding coding line and the 6421 in the C field. While the multiplication is going on, we can instruct the machine to do other things that we want done. We can insert or interpose coding lines in between the multiplier line and the product line. For example, if we have a multiplier of 10 digits, we can insert 8 coding lines and maybe more. The 6421 code essentially tells the machine to finish both the multiplication and the interposed instructions, and, as soon as the later one of these two tasks is finished, to transfer out the product to counter D.

Up to the middle of 1946, the wiring of the machine was a little different and less convenient. When the product was obtained by the multiplication unit, it had to be accepted and transferred at once into one of the 72 storage registers.

Dividing

Division is called for by first sending the divisor into the divisor counter, and this has a code 76 in the B field. If the divisor is in counter 321, the instruction may be:

  • Take the number in 321;
  • enter it as divisor;
  • read the next coding line

The coding will then be:

321, 76, 7

Three coding lines later, the dividend is called for, and the coding, if the dividend is in switch 7431, is:

7431, ——, 7

We can send the quotient, when ready, into any desired counter Q by the following two lines of coding:

——  ——  642

876      Q   ——

In the same way as with multiplication, we can insert a number of coding lines in between the dividend line and the first quotient line.

Both multiplication and division are carried out in the same unit of the machine, the multiply-divide unit. The machine first constructs a table of the multiples of the multiplicand or divisor: 1 times, 2 times, 3 times, ···, 9 times. In multiplication this table is then used by selecting multiples according to the digits of the multiplier one after another. In division the table is used by comparing multiples of the divisor against the dividend and successive remainders, finding which will go and which will not. Since the numbers in the machine are normally of 15 to 23 digits, any particular multiple will be used, on the average, several times, and so this process is relatively efficient. Actually the multiplicand and the divisor go into the same counter. Division, however, has the code 76 and multiplication the code 761, and so the difference is essentially an operation code not in the third or C field.

Consulting a Table

When we desire the machine to consult a table of values (i.e., a functionsee Supplement 2), we punch the table with its arguments and function values on a tape, and we put the tape on a value tape feed mechanism. The instruction to the machine may be:

  • Take the number in register A;
  • find the value of the function for this number,
  • and enter it in register B.

The coding is:

—— —— 73
A 7654 61
—— —— 762
—— —— 543
—— —— 75431
841 7654 ——
A 763 6421
8762 B 73
—— 8763 7

Without explaining this coding line by line, we can say that this is what happens:

The machine reads the argument in register A. The machine reads the argument in the table at which the value tape feed is resting.

It subtracts them, and thereby determines how far away the desired argument is.

The machine then turns the tape that required distance.

It checks that the new argument is the wanted argument.

It reads the value of the function entered at that point on the function tape.

Selecting

There is a storage counter in the machine that is called the selection counter. The selection counter is counter 70 and has the code 732. It has all the properties of an ordinary storage counter and, in addition, one extra property: depending on the sign of the number stored in the selection counter, it is possible to select whether some other number shall be treated positively or negatively. In other words, addition of a number anywhere in the machine may take place either positively or negatively, if the number stored in the selection counter is positive or negative, respectively.

For example, suppose that x is the number in the selection counter. Suppose that y is the number in some other counter A. Suppose that z is the number in counter B. Suppose that we use the coding:

A, B, 7432

What we get in B, because of the 7432 in the third or C field, is z plus y if x is positive or zero, and z minus y if x is negative. In the language of the algebra of logic (see Chapter 9 and Supplement 2), where T( ...) is “the truth value of ...,” the number in b equals:

z + y·T(x ≥ 0) - y·T(x < 0)

(The nines complement of 0, namely 999···9 to 24 digits, is treated by the machine as negative.)

Why do we need an operation like this in a mechanical brain? Among other reasons, what we want to do with a number, in mathematics, often depends on its sign. It may happen that a table is, for negative arguments, the negative of what it is for positive arguments; in other words, F(-x) =-F(x). This is true, for instance, for a table of cubes {F(x) = x³} or for a table of trigonometric tangents (see Supplement 2). If so, we certainly do not want to take the time and trouble to list the whole table. We put down only half the table and then, if x is negative, use the negative of the value in the table. In order to apply such a time-saving rule when using the machine, we need the selection counter or its equivalent.

Checking

There is another special counter in the machine that is called the check counter. It also has all the properties of an ordinary storage counter and, in addition, one extra property: If the sign of the number stored in the check counter on a certain coding line is negative, then on the next coding line the machine may be stopped. In other words, suppose that the check counter stores a certain tolerance t. Suppose, under the instructions we give the machine, that it calculates a positive number x that ought to be less than this tolerance. Suppose that something may go wrong and that x actually may be greater than t. Then we put a check into our instructions. We tell the machine:

  • When you have found x, subtract it from t.
  • If the result is positive, go ahead.
  • If the result is negative or zero, stop!

Here is the coding. Suppose that the tolerance t is in switch 751. Suppose that the number x to be checked is in counter 4321. Then the instructions and coding are:

Clear the check counter 7
Put in the tolerance, from switch 751 751 74 7
Subtract the absolute value of the number to be checked   4321 74 71
Stop, O Mechanical Brain, if your result be negative! 64

An operation like this is very useful in a mechanical brain. It enables the calculation to be interrupted if something has gone wrong. Of course, other operations of checking besides this one are used—for example, inspecting for reasonableness the results printed on typewriter 1.

Other Operations

There are other operations in the machine. There are two pairs of storage registers that can be coupled together so that we can handle problems requiring numbers of 46 digits instead of 23. Registers 64 and 65 can be coupled, and registers 68 and 69 can be coupled. There is another storage counter, No. 71, that has an extra property. We can read out the number it holds times 1, or times 10¹², or times 10⁻¹², as may be called for. As a result of this counter, we can do problems requiring 144 registers storing numbers of 11 digits each, instead of 72 registers storing 23 digits each. Bigger statistical problems can be handled, for example.

There are some minor sequences of operations, or subroutines, that can be called for by a single code. The subroutine may be a whole set of additions, subtractions, multiplications, divisions, and choices, having a single purpose: to compute some number by a process of rapid approximation (see Supplement 2). There are built-in subroutines for some special mathematical functions: the logarithm of a number to the base 10, the exponential of a number to the base 10, and the sine of a number. (See Supplement 2.)

There are also 10 changeable subroutines, each of 22 coding lines, which can be called in, when wanted, by the main sequence-control tape or by each other. These subroutines constitute the Subsidiary Sequence Mechanism, and are extremely useful. They have A, B, and C fields just like the main sequence-control, but they are given information by plugging with short lengths of wire instead of by feeding punched paper tape.

RAPID APPROXIMATION FOR A LOGARITHM

Up to this point in this chapter the author has tried to tell the facts about the Harvard machine in plain words. But for reading this section, a little knowledge of calculus is necessary. (See also Supplement 2.) If you wish, skip this section and go on to the next one.

What is the process that the machine uses to compute any desired logarithm to 23 digits? Suppose that we take for an example the process by which the machine computes log10 49.3724. We choose a 6-digit number for simplicity; the machine would handle a 23-digit number in the same way. The process uses 2 fundamental equations involving the logarithm: the sum relation

log (a·b·c···) = log a + log b + log c···

and the series relation

logₑ(1 + h) = h h² + h³ - h  + ···, │h│ < 1
2 3 4

The error in this series is less than the first neglected term. Now, the machine stores the base 10 logarithms (to 23 decimal places) of the following 36 numbers:

1 1.1 1.01 1.001
2 1.2 1.02 1.002
... ... ... ...
9 1.9 1.09 1.009

First, the number 49.3724 is examined in a counter called the Logarithm-In-Out counter, and the position of the decimal point is determined, giving the characteristic of the logarithm. The number 49.3724 has the characteristic 1. Next, 4 successive divisions are performed, in which the 4 divisors are (1) the first digit of the number, (2) the first 2 digits of the quotient, (3) the first 3 digits of the next quotient, and (4) the first 4 digits of the subsequent quotient; thus,

4.93724  = 1.23431
4
1.23431  = 1.02860
1.2
1.02860  = 1.00843
1.02
1.00843  = 1.00043
1.008

For simplicity we have kept only 6 digits, although the machine, of course, would keep 23. It is interesting to note that the machine is able to sense digits and thus determine the 4 divisors; this is an arithmetical and numerical process and one that cannot be done in ordinary algebra. We now have:

log₁₀ 49.3724 = 1 + log₁₀ 4 + log₁₀ 1.2 + log₁₀ 1.02
+ log₁₀ 1.008 + log₁₀ 1.00043

To compute log₁₀ 1.00043 to 21 decimals we use

log₁₀e · h - h²  +  h³  -  h  +  h  -  h
2 3 4 5 6

with h = 0.00043. Only 6 terms of the series relation are needed. For, the error is less than h⁷/7, which is less than 10⁻²¹/7, since h < ¹/₁₀₀₀. The machine uses the series relation in the form

log₁₀ (1 + h) = {([{(ch + c) h + c}h + c]h + c)h + c}h

where

c₁ = M, c₂ = -M/2, c₃ = M/3, ···,

and M = log₁₀_e= 0.434294···.

The 6 values of the c’s are also stored in the machine. When any logarithm is to be computed, the sum of the characteristic, of the 4 logarithms of the successive divisors, and of the first 6 terms of the series relation gives the logarithm. The maximum time required is 90 seconds.

AN APPRAISAL OF THE CALCULATOR

The IBM Automatic Sequence-Controlled Calculator at Harvard is a landmark in the development of machines that think. Its capacity for many problems for which it is suited is far beyond the capacity of a hundred human computers.

Speed

The time required in the machine for adding, subtracting, transferring, or clearing numbers is ³/₁₀ of a second. This is the time of one machine cycle or of reading one coding line. Multiplication takes at the most 6 seconds, and an average of 4 seconds. Division takes at the most 16 seconds, and an average of 11 seconds. Each, however, requires only 3 lines of coding, or ⁹/₁₀ of a second’s attention from the sequence mechanism; interposed operations fill the rest of the time. To calculate a logarithm, an exponential, or a sine to the full number of digits obtainable by means of the automatic subroutine takes at the most 90, 66, and 60 seconds, respectively. To get three 24-digit numbers from feeding a punch card takes ⅓ second. To punch a number takes from ½ second up to 3 seconds. To print a number takes from 1½ seconds up to 7 seconds.

Cost and Value

The cost of the machine was somewhere near 3 or 4 hundred thousand dollars, if we leave out some of the cost of research and development, which would have been done whether or not this particular machine had ever been built. A staff of 10 men, consisting of 4 mathematicians, 4 operators, and 2 maintenance men, are needed to keep the machine running 24 hours a day. This might represent, if capitalized, another 1 or 2 hundred thousand dollars. If a capital value of $500,000 is taken as equivalent to $50,000 a year, then the cost of the machine in operation 24 hours a day is in the neighborhood of $150 a day or $6 an hour.

The value of the machine, however, is very much greater. If 100 human beings with desk calculators were set to work 8 hours a day at $1.50 an hour, the cost would be $1200 a day, or 8 times as much. Yet it is very doubtful that the work they could produce would equal that turned out by the machine, either in quality or quantity, when the machine is well suited to the problem.

Reliability

By reliability we mean the extent to which the results produced by the machine can be relied on to be right. The machine contains no built-in device for making its operations reliable. So, if we wish to check a multiplication, for example, we can do the multiplication a second time, interchanging the multiplier and the multiplicand. But if, say, digit 16 of the product were not transferring correctly, we would get the same wrong result both ways and we would not have a sufficient check. Thus, when we set up a problem for the machine to do, one of the big tasks we have is checking. We have to work out ways of making sure that the result, when we get it, is right and ways of instructing the machine to make the tests we want. This is not a new task. Whenever you or I set out to solve a problem, we have to make sure—usually by doing the problem twice, and preferably by doing it a different way the second time—that our answer, when we get it, is correct. One of the chief tasks for the mathematician, in making a sequence-control tape for the machine, is to put into it sufficient checks to make sure that the results are correct.

We can use a number of different kinds of partial checks: the check counter; differences, and smoothness (see Supplement 2); watching the results printed on typewriter 1; mathematical checks; comparison with known specific values; etc.

In actual experience on the machine, human failures, such as failure to state the problem exactly or failure to put it on the machine correctly, have given about as much trouble as mechanical failures. The machine operates without mechanical failure about 90 to 95 per cent of the time. The balance of the time the machine is idle while being serviced or repaired. The machine is serviced by mechanics trained and supervised at Harvard.

Often when we change the machine from one problem to another problem, we find some kind of trouble. Consequently, we need to work out in detail the first part of any calculation placed on the machine. We then compare the results step by step with the results produced by the machine. Any mathematician working with the machine needs considerable training in order to diagnose trouble quickly and guide the maintenance men to the place where repair or replacement is needed. Once you find the trouble, you can fix it easily. Without disturbing the soldered connections, you can easily pull out from its socket a relay that is misbehaving and plug in a new relay. With a screwdriver you can change a counter position—detach it from its socket and replace it by another one that is working correctly.

One “bug” that will long be remembered around the Laboratory was a case involving a 5 that would incorrectly come in to a number every now and then. It did not happen often—only once in a while. After a week of search the bug was finally located: the insulation on a wire that carried a 5 had worn through in one spot, and once in a while this wire would shake against a post that could carry current and took in the 5!

Efficiency

In many respects, this machine is efficient and well-balanced. Its reading and writing speed is close to its calculating speed. We can punch or print a result on the average for every 10 additions or 1½ multiplications. The memory of 72 numbers in the machine is extremely useful; a smaller memory is a serious limitation on the achievements of a computing machine. The machine can do many kinds of arithmetic and logic. It is well educated and can compute automatically some rather complicated mathematical functions, like logarithm or sine. It has done difficult and important problems. It has computed and tabulated (see Supplement 2) Bessel functions, definite integrals, etc. It can solve differential equations (see Chapter 5) and many other problems in mathematics, physics, and engineering.

On the other hand, no calculator will ever again be built just like this one, useful though it is. Electronic computing is easily 100 times as fast as relay computing; nearly every future calculator will do its computing electronically. Many other improvements will be made. For example, in this calculator, there are 72 addition-subtraction mechanisms, yet only one of these can be used at a time. Also, the machine has only one combined multiply-divide unit. So we have to organize any computation with few multiplications, and with still fewer divisions, for they take longer still.

Until 1947, we had to organize any computation in this calculator into one single fixed sequence of operations. In other words, there was no way to move from one subroutine to another subroutine depending on some indication that turned up in our computation. Recently, the Harvard Computation Laboratory decided to remedy this condition and provided the Subsidiary Sequence Mechanism equivalent to 10 subroutines of 22 lines of coding each. These are on relays and plug wires and may be called for by the sequence-control tape or by each other. This provision has added greatly to the efficiency of the calculator.

Whatever else can be said about the Harvard IBM Automatic Sequence-Controlled Calculator, it must be said that this was the first general-purpose mechanical brain using numbers in digit form and able to do arithmetic and logic in hundreds of thousands of steps one after another. And great credit must go to Professor Howard H. Aiken of Harvard and the men of International Business Machines Corporation who made this great mechanical brain come into existence.