Pentium Floating Bug

For everything that's not in any way related to PureBasic. General chat etc...
va!n
Addict
Addict
Posts: 1104
Joined: Wed Apr 20, 2005 12:48 pm

Pentium Floating Bug

Post by va!n »

I know this is an very old topic but today i refound an article about this and tried this on my non-intel system and it results 0 o_O

Code: Select all

 x.d = 4195835
 y.d = 3145727
 z.d = x - (x/y)*y

Debug z.d
Seems there are some more floating bugs ;(
va!n aka Thorsten

Intel i7-980X Extreme Edition, 12 GB DDR3, Radeon 5870 2GB, Windows7 x64,
Trond
Always Here
Always Here
Posts: 7446
Joined: Mon Sep 22, 2003 6:45 pm
Location: Norway

Re: Pentium Floating Bug

Post by Trond »

va!n wrote:I know this is an very old topic but today i refound an article about this and tried this on my non-intel system and it results 0 o_O

Code: Select all

 x.d = 4195835
 y.d = 3145727
 z.d = x - (x/y)*y

Debug z.d
Seems there are some more floating bugs ;(
I beg your pardon? Obviously this would be 0. And you say it is, so what's the problem?
User avatar
netmaestro
PureBasic Bullfrog
PureBasic Bullfrog
Posts: 8452
Joined: Wed Jul 06, 2005 5:42 am
Location: Fort Nelson, BC, Canada

Post by netmaestro »

(x/y)*Y is the same as saying "x divided by y times y", which results in x

x - x is equal to 0

May I ask what result you were expecting? 'cause this looks right to me.
BERESHEIT
va!n
Addict
Addict
Posts: 1104
Joined: Wed Apr 20, 2005 12:48 pm

Post by va!n »

ups, yeah i see... i dont know what i did nor excepted ^^ i will poste the article here, because i refound it on one of my backup CDs and i dont know any link to this article. Here are the complete infos...
Date: Tue Nov 15 21:00 EST 1994
Subject: Pentium Floating Point Division Bug


Pentium Floating Point Division Bug

There has been a flurry of activity the last fews days on the
Internet news group, comp.sys.intel, that should interest MATLAB
users. A serious design flaw has been discovered in the floating
point unit on Intel's Pentium chip. Double precision divisions
involving operands with certain bit patterns can produce incorrect
results.

The most dramatic example seen so far can be extracted from a
posting last night by Tim Coe of Vitesse Semiconductor. In MATLAB,
his example becomes

x = 4195835
y = 3145727
z = x - (x/y)*y

With exact computation, z would be zero. In fact, we get zero on
most machines, including those using Intel 286, 386 and 486 chips.
Even with roundoff error, z should not be much larger than eps*x,
which is about 9.3e-10. But, on the Pentium,

z = 256

The relative error, z/x, is about 2^(-14) or 6.1e-5. The computed
quotient, x/y, is accurate to only 14 bits.

An article in last week's edition of Electronic Engineering Times
credits Prof. Thomas Nicely, a mathematics professor at Lynchburg
College in Virginia, with the first public announcement of the
Pentium division bug. One of Nicely's examples involves

p = 824633702441

With exact computation

q = 1 - (1/p)*p

would be zero. With floating point computation, q should be on
the order of eps. On most machines, we find that

q = eps/2 = 2^(-53) ~= 1.11e-16

But on the Pentium

q = 2^(-28) ~= 3.72e-09

This is roughly single precision accuracy and is typical of the
most of the examples that had been posted before Coe's analysis.

The bit patterns of the operands involved in these examples
are very special. The denominator in Coe's example is

y = 3*2^20 - 1

Nicely's research involves a theorem about sums of reciprocals
of prime numbers. His example involves a prime of the form

p = 3*2^38 - 18391

We're not sure yet how many operands cause the Pentium's floating
point division to fail, or even what operands produce the largest
relative error. It is certainly true that failures are very rare.
But, as far as we are concerned, the real difficulty is having to
worry about this at all. There are so many other things than can
go wrong with computer hardware, and software, that, at least, we
ought to be able to rely on the basic arithmetic.

The bug is definitely in the Pentium chip. It occurs at all clock
rates. The bug does not affect other arithmetic operations, or the
built-in transcendental functions. Intel has recently made changes
to the on-chip Program Logic Array that fix the bug and is now
believed to be producing error free CPUs. It remains to be seen
how long it will take for these to reach users.

An unnamed Intel spokesman is quoted in the EE Times article as
saying "If customers are concerned, they can call and we'll replace
any of the parts that contain the bug." But, at the MathWorks,
we have our own friends and contacts at Intel and we're unable
to confirm this policy. We'll let you know when we hear anything
more definite. In the meantime, the phone number for Customer
Service at Intel is 800-628-8686.

-- Cleve Moler
Chairman and Chief Scientist
The MathWorks, Inc.
moler@mathworks.com
va!n aka Thorsten

Intel i7-980X Extreme Edition, 12 GB DDR3, Radeon 5870 2GB, Windows7 x64,
User avatar
Rescator
Addict
Addict
Posts: 1769
Joined: Sat Feb 19, 2005 5:05 pm
Location: Norway

Post by Rescator »

Ignore it. That's from 1994, which is what....12 years ago?
I seriously doubt there is that many 10+ year old cpu's in use today,
and if they are they are most likely is not used for anything critical,
and if they are I'm damn sure the sysadmin made sure to get a pentium without the bug or an amd or similar instead.

Throw those notes away, or keep it for historical reasons as I believe the sale of AMD cpu's got a huuge boost thanks to that blooper by Intel back then :)
Berikco
Administrator
Administrator
Posts: 1326
Joined: Wed Apr 23, 2003 7:57 pm
Location: Belgium
Contact:

Post by Berikco »

They just replaced those CPU's, i swapped a couple of dozens of them...
Post Reply