4

The first programmable, electronic, general-purpose digital computer, ENIAC had a "square rooter":

five of the accumulators were controlled by a special divider/square-rooter unit to perform up to 40 division operations per second or three square root operations per second.

Some later architectures, PDP-11 for instance, did not include the square root instruction in its floating point instruction set, only FADD, FSUB, FMUL, FDIV.

What was the first architecture with a hardware divider which did not include a square-rooter (and what was the software implementation of the square root function, if known)?

4
  • 1
    The one I normally see in software implementations is Heron's algorithm. I've seen it in at least 2 manuals but this was in the late 70s, early 80s. Can't really remember where I saw them. Possibly ICL, Data General, Prime, Harris or Zortech. I just remember the convergence being particularly quick.
    – cup
    Nov 10, 2021 at 19:28
  • @cup Heron's formula is helpful as the last few steps for precision doubling; it is the formula for the initial approximation which is of interest. Using the formula starting with a naïve approximation like (x/2) is very inefficient.
    – Leo B.
    Nov 10, 2021 at 20:38
  • I remember one of my first programming exercises was calculating square root using Newton's method. Of course Fortran has sqrt built in, but we weren't supposed to use it. Nov 11, 2021 at 11:46
  • This is how square root is calculated in hardware: projectf.io/posts/square-root-in-verilog
    – Leo B.
    Dec 3, 2021 at 2:45

2 Answers 2

6

Beside the detail, that the ENIAC wasn't 'programmable' in today's sense, but wired like a tabulator? Also, it wasn't 'with' a FPU, but only a FPU - if that's applicable at all, as ENIACs format wasn't float, but chunks of 10 digits up to interpretation.

It was more of a configurable calculator than a computer in today's sense. Machines like the ENIAC as essentially located before the development of computers like we know them They are more like the final steps of calculators than the first steps of computers.

Which also makes any question about 'first' even more blurry, as very early machines had various ways to handle float like numbers. The only machine(s) which are without any doubt like today are Zuses designs (Z1, 1936; Z3, 1941) as being programmable by data and using a full floating point implementation. Sadly, Zuse already included a square root function :))

Having said that, the fist candidate of a machine handling something like float without square root would be

  • the English EDSAC of 1948 using a fractional format

A direct follow up and replacement of the ENIAC is of course

  • the US EDVAC of 1951 using a full floating point, but without build in square root.
6
  • EDSAC did not have a hardware divider either, so I would tend to discount it; but EDVAC would be a good candidate. It is interesting that they have figured out that computing square roots in software was more practical than in hardware so quickly.
    – Leo B.
    Nov 10, 2021 at 20:25
  • @LeoB. Keep in mind, the ENIAC was developed as faster replacement of mechanical tabulating machinery, and here square root was about the latest and most sophisticated addition. So if they wanted to convince anyone of financing their design, it had to be able to do everything the competition did. Only after the first machines existed it was clear to everyone (read: non engineers) how much greater the usability is by going electronic..
    – Raffzahn
    Nov 10, 2021 at 20:30
  • 1
    EDSAC "something like float"? I think not. It was a fixed-point machine, fixed-point being the antithesis to floating-point. (We get confused in modern languages: it should be integer versus real, or fixed versus floating, but we talk about integer versus floating, for some odd reason). Nov 10, 2021 at 23:58
  • @Raffzahn That was clever marketing. An interesting parallel is the Soviet M-20 (vacuum tube, later reimplemented transistorized as BESM-4) which had the sqrt instruction, only twice as slow as division, vs its successor the BESM-6, which did not have the hardware square root but was much faster.
    – Leo B.
    Nov 11, 2021 at 0:31
  • 2
    Note that the Z1 did not have a square root instruction. This was only added with the Z3 by cleverly reusing the division circuitry.
    – fuz
    Nov 16, 2021 at 9:05
8

Asking about "the first architecture with an FPU" invites question-begging. Did the Zuse Z1, which used floating-point numbers for all arithmetic, "have an FPU"?

The ENIAC did not have an FPU; it used a ten-digit decimal notation, with no floating-point features.

The IBM 704 had one as standard equipment in 1954. It had various floating-point add, subtract, multiply and divide instructions, but no square-root function.

The IBM 650, around the same time, had an optional floating-point module. As best I can tell, it too supported only addition, subtraction, multiplication, and division.

To answer the question more definitively, we'll need to agree on exactly what constitutes "a floating-point unit".

2
  • NB "CPU/FPU" in the title. I've reformulated the question.
    – Leo B.
    Nov 10, 2021 at 20:34
  • The 704 is a strong contender for 'the first', at least as far as mainstream computers go. Nov 11, 2021 at 0:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.