• Computes at CERN (Re: history of ASCII and IBM ratfucking, and the VAX

    From Lars Poulsen@3:633/10 to All on Sun Sep 13 14:56:20 2026
    Subject: Computes at CERN (Re: history of ASCII and IBM ratfucking, and the VAX )

    On 9/11/2026 12:27, Jeroen Belleman wrote:
    [...]
    When I started at CERN in 1981, the principal computer
    system was an IBM 360. We used WYLBUR for the editing
    environment, with exec files for simple things and batch
    processing with JCL for the more serious work.
    It was clumsy, but I didn't know any better at the time.
    When I worked in Copenhagen at the Niels Bohr Institute and later at
    RECKU (the larger academic datacenter at University of Copenhagen) in
    the early 1990s, the experimental physicists traveling the circuit
    between SUNY Stony Brook, CERN and Copenhagen with their suitcases full
    of dusty decks of FORTRAN IV cards, hated the IBM 360-s with a vengeance
    due to their lack of precision when computing wave functions. They liked
    the 36-bit IBM709x and UNIVAC 36-bit systems much better, but they
    REALLY loved the CDC 6600s at CERN (and later Aarhus) because of the
    60-bit floating point format.

    At the time, UofCPH had Univacs, the Technical University in Lyngby had IBM7094 and IBM360, and Aarhus had a CDC6600.

    The 709x was tape only (or cards entered from 360 ASP), the 360 was RJE
    with cards through HASP or WITS a "conversational RJE system" from
    Waterloo. The UNIVAC had proper time sharing (and a very good batch job scheduler) and the CDC also had good time sharing.

    What made CERN back down from 60-bit systems?
    --
    Lars Poulsen - an old geek in Santa Barbara, California

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lawrence D?Oliveiro@3:633/10 to All on Tue Sep 15 04:10:15 2026
    Subject: Re: Computes at CERN (Re: history of ASCII and IBM ratfucking, and the VAX )

    On Sun, 13 Sep 2026 14:56:20 -0700, Lars Poulsen wrote:

    When I worked in Copenhagen at the Niels Bohr Institute and later at
    RECKU (the larger academic datacenter at University of Copenhagen)
    in the early 1990s, the experimental physicists traveling the
    circuit between SUNY Stony Brook, CERN and Copenhagen with their
    suitcases full of dusty decks of FORTRAN IV cards, hated the IBM
    360-s with a vengeance due to their lack of precision when computing
    wave functions. They liked the 36-bit IBM709x and UNIVAC 36-bit
    systems much better, but they REALLY loved the CDC 6600s at CERN
    (and later Aarhus) because of the 60-bit floating point format.

    Prof William ?Mr IEEE-754? Kahan?s foreword to the ?Standard Apple Numerics Manual? had this to say about some of those machines:

    For instance, a very Important Bunch of Machines launched in 1964
    were found to have two anomalies in their double-precision
    arithmetic (though not in single): First, multiplying a number /Z/
    by 1.0 would lop off /Z/'s last digit. Second, the difference
    between two nearly equal numbers, whose digits mostly canceled,
    could be computed wrong by a factor almost as big as 16 instead of
    being computed exactly as is normal. The anomalies introduced a
    kind of noise in the feedback loops by which some programs had
    compensated for their own rounding errors, so those programs lost
    their high accuracies. These anomalies were not "bugs"; they were
    "features" designed into the arithmetic by designers who thought
    nobody would care. Customers did care; the arithmetic was
    redesigned and repairs were retrofitted in 1967.

    Not all Capriciously Designed Computer arithmetics have been
    repaired. One family of computers has enjoyed notoriety for two
    decades by allowing programs to generate tiny "partially
    underflowed" numbers. When one of these creatures turns up as the
    value of /T/ in an otherwise innocuous statement like

    if T = 0.0 then Q := 0.0 else Q := 702345.6 / (T + 0.00189 / T);

    it causes the computer to stop execution and emit a message
    alleging "Division by Zero". The machine's schizophrenic attitude
    toward zero comes about because the test for T = 0.0 is carried
    out by the adder, which examines at least 13 of /T/'s leading
    digits, whereas the divider and multiplier examine only 12 to
    recognize zero. Doing so saved less than a dollar's worth of
    transistors and maybe a picosecond of time, but at the cost of
    some disagreement about whether a very tiny number /T/ is zero or
    not. Fortunately, the divider agrees with the multiplier about
    whether /T/ is zero, so programmers could prevent spurious
    divisions by zero by slightly altering the foregoing statement as
    follows:

    if 1.0 * T = 0.0 then Q := 0.0 else Q := 702345.6 / (T + 0.00189 / T);

    Unfortunately, the Same Computer designer responsible for "partial
    underflow" designed another machine that can generate "partially
    underflowed" numbers /T/ for which this statement malfunctions. On
    that machine, /Q/ would be computed unexceptionably except that
    the product 1.0 * T causes the machine to stop and emit a message
    alleging "Overflow". How should a programmer rewrite that
    innocuous statement so that it will work correctly on both
    machines? We should be thankful that such a task is not
    encountered every day.

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lars Poulsen@3:633/10 to All on Tue Sep 15 05:46:21 2026
    Subject: Re: Computes at CERN (Re: history of ASCII and IBM ratfucking, and the VAX )

    On 9/14/2026 21:10, Lawrence D?Oliveiro wrote:
    On Sun, 13 Sep 2026 14:56:20 -0700, Lars Poulsen wrote:

    When I worked in Copenhagen at the Niels Bohr Institute and later at
    RECKU (the larger academic datacenter at University of Copenhagen)
    in the early 1990s, the experimental physicists traveling the
    circuit between SUNY Stony Brook, CERN and Copenhagen with their
    suitcases full of dusty decks of FORTRAN IV cards, hated the IBM
    360-s with a vengeance due to their lack of precision when computing
    wave functions. They liked the 36-bit IBM709x and UNIVAC 36-bit
    systems much better, but they REALLY loved the CDC 6600s at CERN
    (and later Aarhus) because of the 60-bit floating point format.

    Prof William ?Mr IEEE-754? Kahan?s foreword to the ?Standard Apple Numerics Manual? had this to say about some of those machines:

    For instance, a very Important Bunch of Machines launched in 1964
    were found to have two anomalies in their double-precision
    arithmetic (though not in single): First, multiplying a number /Z/
    by 1.0 would lop off /Z/'s last digit. Second, the difference
    between two nearly equal numbers, whose digits mostly canceled,
    could be computed wrong by a factor almost as big as 16 instead of
    being computed exactly as is normal. The anomalies introduced a
    kind of noise in the feedback loops by which some programs had
    compensated for their own rounding errors, so those programs lost
    their high accuracies. These anomalies were not "bugs"; they were
    "features" designed into the arithmetic by designers who thought
    nobody would care. Customers did care; the arithmetic was
    redesigned and repairs were retrofitted in 1967.

    Not all Capriciously Designed Computer arithmetics have been
    repaired. One family of computers has enjoyed notoriety for two
    decades by allowing programs to generate tiny "partially
    underflowed" numbers. When one of these creatures turns up as the
    value of /T/ in an otherwise innocuous statement like

    if T = 0.0 then Q := 0.0 else Q := 702345.6 / (T + 0.00189 / T);

    it causes the computer to stop execution and emit a message
    alleging "Division by Zero". The machine's schizophrenic attitude
    toward zero comes about because the test for T = 0.0 is carried
    out by the adder, which examines at least 13 of /T/'s leading
    digits, whereas the divider and multiplier examine only 12 to
    recognize zero. Doing so saved less than a dollar's worth of
    transistors and maybe a picosecond of time, but at the cost of
    some disagreement about whether a very tiny number /T/ is zero or
    not. Fortunately, the divider agrees with the multiplier about
    whether /T/ is zero, so programmers could prevent spurious
    divisions by zero by slightly altering the foregoing statement as
    follows:

    if 1.0 * T = 0.0 then Q := 0.0 else Q := 702345.6 / (T + 0.00189 / T);

    Unfortunately, the Same Computer designer responsible for "partial
    underflow" designed another machine that can generate "partially
    underflowed" numbers /T/ for which this statement malfunctions. On
    that machine, /Q/ would be computed unexceptionably except that
    the product 1.0 * T causes the machine to stop and emit a message
    alleging "Overflow". How should a programmer rewrite that
    innocuous statement so that it will work correctly on both
    machines? We should be thankful that such a task is not
    encountered every day.

    Holy shit!! And modern compilers might optimize away the workaround.
    Who was the designer? I asked "CoPilot" "Which computer designer
    invented partial underflow" and with slight variations in the wording of
    the prompt it suggested first Johann Joss, then Charles Babbage and
    finally John von Neumann.

    I assume the correct answer is either Gene Amdahl (or someone on his
    team) or Seymour Cray (or someone on his team) ???
    --
    Lars Poulsen - an old geek in Santa Barbara, California

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Jeroen Belleman@3:633/10 to All on Tue Sep 15 16:48:27 2026
    Subject: Re: Computes at CERN (Re: history of ASCII and IBM ratfucking, and the VAX )

    On 9/15/26 06:10, Lawrence D?Oliveiro wrote:
    On Sun, 13 Sep 2026 14:56:20 -0700, Lars Poulsen wrote:

    When I worked in Copenhagen at the Niels Bohr Institute and later at
    RECKU (the larger academic datacenter at University of Copenhagen)
    in the early 1990s, the experimental physicists traveling the
    circuit between SUNY Stony Brook, CERN and Copenhagen with their
    suitcases full of dusty decks of FORTRAN IV cards, hated the IBM
    360-s with a vengeance due to their lack of precision when computing
    wave functions. They liked the 36-bit IBM709x and UNIVAC 36-bit
    systems much better, but they REALLY loved the CDC 6600s at CERN
    (and later Aarhus) because of the 60-bit floating point format.

    Prof William ?Mr IEEE-754? Kahan?s foreword to the ?Standard Apple Numerics Manual? had this to say about some of those machines:

    For instance, a very Important Bunch of Machines launched in 1964
    were found to have two anomalies in their double-precision
    arithmetic (though not in single): First, multiplying a number /Z/
    by 1.0 would lop off /Z/'s last digit. Second, the difference
    between two nearly equal numbers, whose digits mostly canceled,
    could be computed wrong by a factor almost as big as 16 instead of
    being computed exactly as is normal. The anomalies introduced a
    kind of noise in the feedback loops by which some programs had
    compensated for their own rounding errors, so those programs lost
    their high accuracies. These anomalies were not "bugs"; they were
    "features" designed into the arithmetic by designers who thought
    nobody would care. Customers did care; the arithmetic was
    redesigned and repairs were retrofitted in 1967.

    Not all Capriciously Designed Computer arithmetics have been
    repaired. One family of computers has enjoyed notoriety for two
    decades by allowing programs to generate tiny "partially
    underflowed" numbers. When one of these creatures turns up as the
    value of /T/ in an otherwise innocuous statement like

    if T = 0.0 then Q := 0.0 else Q := 702345.6 / (T + 0.00189 / T);

    I don't know where this gem comes from, but I don't want to fly
    in it. So flawed!

    Jeroen Belleman


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Peter Flass@3:633/10 to All on Tue Sep 15 07:51:36 2026
    Subject: Re: Computes at CERN (Re: history of ASCII and IBM ratfucking, and the VAX )

    On 9/15/26 05:46, Lars Poulsen wrote:
    On 9/14/2026 21:10, Lawrence D?Oliveiro wrote:
    On Sun, 13 Sep 2026 14:56:20 -0700, Lars Poulsen wrote:

    When I worked in Copenhagen at the Niels Bohr Institute and later at
    RECKU (the larger academic datacenter at University of Copenhagen)
    in the early 1990s, the experimental physicists traveling the
    circuit between SUNY Stony Brook, CERN and Copenhagen with their
    suitcases full of dusty decks of FORTRAN IV cards, hated the IBM
    360-s with a vengeance due to their lack of precision when computing
    wave functions. They liked the 36-bit IBM709x and UNIVAC 36-bit
    systems much better, but they REALLY loved the CDC 6600s at CERN
    (and later Aarhus) because of the 60-bit floating point format.

    Prof William ?Mr IEEE-754? Kahan?s foreword to the ?Standard Apple
    Numerics
    Manual? had this to say about some of those machines:

    ÿÿÿÿ For instance, a very Important Bunch of Machines launched in 1964
    ÿÿÿÿ were found to have two anomalies in their double-precision
    ÿÿÿÿ arithmetic (though not in single): First, multiplying a number /Z/
    ÿÿÿÿ by 1.0 would lop off /Z/'s last digit. Second, the difference
    ÿÿÿÿ between two nearly equal numbers, whose digits mostly canceled,
    ÿÿÿÿ could be computed wrong by a factor almost as big as 16 instead of
    ÿÿÿÿ being computed exactly as is normal. The anomalies introduced a
    ÿÿÿÿ kind of noise in the feedback loops by which some programs had
    ÿÿÿÿ compensated for their own rounding errors, so those programs lost
    ÿÿÿÿ their high accuracies. These anomalies were not "bugs"; they were
    ÿÿÿÿ "features" designed into the arithmetic by designers who thought
    ÿÿÿÿ nobody would care. Customers did care; the arithmetic was
    ÿÿÿÿ redesigned and repairs were retrofitted in 1967.

    ÿÿÿÿ Not all Capriciously Designed Computer arithmetics have been
    ÿÿÿÿ repaired. One family of computers has enjoyed notoriety for two
    ÿÿÿÿ decades by allowing programs to generate tiny "partially
    ÿÿÿÿ underflowed" numbers. When one of these creatures turns up as the
    ÿÿÿÿ value of /T/ in an otherwise innocuous statement like

    ÿÿÿÿ if T = 0.0 then Q := 0.0 else Q := 702345.6 / (T + 0.00189 / T);

    ÿÿÿÿ it causes the computer to stop execution and emit a message
    ÿÿÿÿ alleging "Division by Zero". The machine's schizophrenic attitude
    ÿÿÿÿ toward zero comes about because the test for T = 0.0 is carried
    ÿÿÿÿ out by the adder, which examines at least 13 of /T/'s leading
    ÿÿÿÿ digits, whereas the divider and multiplier examine only 12 to
    ÿÿÿÿ recognize zero. Doing so saved less than a dollar's worth of
    ÿÿÿÿ transistors and maybe a picosecond of time, but at the cost of
    ÿÿÿÿ some disagreement about whether a very tiny number /T/ is zero or
    ÿÿÿÿ not. Fortunately, the divider agrees with the multiplier about
    ÿÿÿÿ whether /T/ is zero, so programmers could prevent spurious
    ÿÿÿÿ divisions by zero by slightly altering the foregoing statement as
    ÿÿÿÿ follows:

    ÿÿÿÿ if 1.0 * T = 0.0 then Q := 0.0 else Q := 702345.6 / (T +
    0.00189 / T);

    ÿÿÿÿ Unfortunately, the Same Computer designer responsible for "partial
    ÿÿÿÿ underflow" designed another machine that can generate "partially
    ÿÿÿÿ underflowed" numbers /T/ for which this statement malfunctions. On
    ÿÿÿÿ that machine, /Q/ would be computed unexceptionably except that
    ÿÿÿÿ the product 1.0 * T causes the machine to stop and emit a message
    ÿÿÿÿ alleging "Overflow". How should a programmer rewrite that
    ÿÿÿÿ innocuous statement so that it will work correctly on both
    ÿÿÿÿ machines? We should be thankful that such a task is not
    ÿÿÿÿ encountered every day.

    Holy shit!! And modern compilers might optimize away the workaround.
    Who was the designer? I asked "CoPilot" "Which computer designer
    invented partial underflow" and with slight variations in the wording of
    the prompt it suggested first Johann Joss, then Charles Babbage and
    finally John von Neumann.

    I assume the correct answer is either Gene Amdahl (or someone on his
    team) or Seymour Cray (or someone on his team) ???

    This stuff is why I hate floating point.

    Here's a folklore story from my first job in the very olden days.

    A company I worked for had a contract from IBM to develop some business applications for the 1130 (http://ibm1130.org/}. The only language
    available was FORTRAN ("IV", although really not). This was a 16-bit
    machine, so fixed-point numbers only up to 32767. Later IBM introduced a "commercial" subroutine library for the 1130 with nice stuff like
    decimal arithmetic, but we didn't have that yet, so we used floating
    point, which allowed double precision. If you've ever tried to do
    payroll calculations in floating point, my only piece of advice is
    DON'T. I did learn a lot about the nitty-gritties fo FP rounding.

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From John Ames@3:633/10 to All on Tue Sep 15 08:19:19 2026
    Subject: Re: Computes at CERN (Re: history of ASCII and IBM ratfucking, and the VAX )

    On Tue, 15 Sep 2026 04:10:15 -0000 (UTC)
    Lawrence D?Oliveiro <ldo@nz.invalid> wrote:

    Prof William ?Mr IEEE-754? Kahan?s foreword to th
    e ?Standard Apple
    Numerics Manual? had this to say about some of those machines:

    Oh that's wonderfully cheeky =^_^=


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lawrence D?Oliveiro@3:633/10 to All on Tue Sep 15 23:13:41 2026
    Subject: Re: Computes at CERN (Re: history of ASCII and IBM ratfucking, and the VAX )

    On Tue, 15 Sep 2026 05:46:21 -0700, Lars Poulsen wrote:

    On 9/14/2026 21:10, Lawrence D?Oliveiro wrote:

    Unfortunately, the Same Computer designer responsible for "partial
    underflow" designed another machine that can generate "partially
    underflowed" numbers ...

    Who was the designer? I asked "CoPilot" "Which computer designer
    invented partial underflow" and with slight variations in the
    wording of the prompt it suggested first Johann Joss, then Charles
    Babbage and finally John von Neumann.

    I assume the correct answer is either Gene Amdahl (or someone on his
    team) or Seymour Cray (or someone on his team) ???

    Kahan is obviously saying the answer is Seymour Cray.

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lawrence D?Oliveiro@3:633/10 to All on Tue Sep 15 23:22:24 2026
    Subject: Re: Computes at CERN (Re: history of ASCII and IBM ratfucking, and the VAX )

    On Tue, 15 Sep 2026 07:51:36 -0700, Peter Flass wrote:

    This stuff is why I hate floating point.

    Don?t. The whole point of Kahan?s foreword was to highlight what a
    trainwreck floating-point was before IEEE-754 came along. He went on
    to say:

    /These strange things cannot happen on current Apple computers./

    And he did have some kind words to say about other companies:

    I do not wish to suggest that all but Apple computers have had
    quirky arithmetics. A few other computer companies, some Highly
    Prestigious, have Demonstrated Exemplary Concern for arithmetic
    integrity over many years. Had their concern been shared more
    widely, numerical computation would now be easier to understand.

    Of course, the floating-point spec that he was instrumental in
    creating has become completely universal -- nowadays, nobody would
    think of doing floating-point on a machine/OS/software stack that
    didn?t support it.

    Later IBM introduced a "commercial" subroutine library for the 1130
    with nice stuff like decimal arithmetic, but we didn't have that
    yet, so we used floating point, which allowed double precision. If
    you've ever tried to do payroll calculations in floating point, my
    only piece of advice is DON'T. I did learn a lot about the
    nitty-gritties fo FP rounding.

    The problem is not necessarily with floating-point, but with the
    surprises that can arise from doing arithmetic in base-2. This is why
    the current IEEE-754 spec has added decimal-float formats.

    Now we just have to wait while adoption of the updated spec slowly
    spreads ...

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)