The Pentium Bug and SPSS Software
Jon K. Peck
Vice President for Technology
SPSS Inc.
12/1/94
Intel Corp has acknowledged that there is a bug in the existing Pentium CPUs
that produces an incorrect result equivalent to reduced precision in 1 case
in 9 billion floating point division operations. The President of Intel,
Andy Grove, stated
This group [Intel engineers] concluded after months of work that (1) an
error is only likely to occur at a frequency of the order of once in nine
billion random floating point divides, and that (2) this many divides in
all the programs they evaluated (which included many scientific programs)
would require elapsed times of use that would be longer than the mean
time to failure of the physical computer subsystems.
While this low frequency of occurrence, if correct, would be reassuring, we
believe that information on the experience users of SPSS for Windows, SYSTAT,
and other SPSS products might encounter would be useful. Uncertainty exists
concerning how many such division operations would be carried out in various
statistical analyses, whether these can be regarded as "random floating point
divides", and what the consequences of the error would be in statistical
output if it does occur.
It is clearly possible to exhibit the Pentium error in an SPSS for Windows
transformation. The statement
compute result = (4195835 / 3145727) * (3145727).
should produce the result 4195835. On the Pentium, however, the result is off
by 256. A similar result can be demonstrated for SYSTAT.
In order to explore the consequences of the division error in statistical
procedures, we have run a portion of our standard statistical test bed for
SPSS for Windows on a Pentium system, which consumed a few hours of Pentium
time. The portion run executes a total of 746 statistical procedures using
various data sets. These jobs cannot be considered as typical of user jobs
because they over represent unusual or extreme data conditions and
pathological models, although considerable real data is included. We compared
the results with our baseline output, which was created on a 486 system,
considering only differences occurring before the fifth decimal place as
printed. Since extremely large or small values are printed in scientific
notation, these differences may vary in magnitude.
In the 746 tests, we found two instances where the Pentium bug appears to
have produced a difference in the output bigger than the fifth decimal place.
The first difference appeared in an extreme generalized log odds ratio
calculation from the GENLOG procedure, and the second occurred in an extremely
large chi-squared statistic. In the first case, the difference was in the
second significant figure in an extremely small value (10**-18). In the
second case, the difference was in the fifth significant figure of an
extremely large value (10**265).
We searched for differences of any magnitude in selected numerically complex
procedures and found one additional difference in the CNLR procedure with
bootstrapping. This difference was very small but is not associated with an
extreme dataset or model. The difference was in the seventh decimal place of
a coefficient confidence interval.
There is no work around strategy available for SPSS Windows products,
including SPSS for Windows and SYSTAT for Windows, and in principle the bug,
though rare, could affect nearly any statistical calculation. For SPSS and
SYSTAT DOS products, hardware floating point calculation can be converted to
software emulation, which will eliminate the erroneous behavior but will slow
down the software substantially. To change to software emulation, issue the
following DOS command before starting the product.
SET NO87=no floating point
The O is the letter "O"; not zero. The actual text to the right of the equals
sign does matter.
Intel has requested that Pentium owners who are concerned should contact their
customer support at 800-628-8686 (US number).
In conclusion, the Pentium bug can have visible consequences with no warning
signals in real statistical procedures that are written with careful attention
to numerical issues. It can occur for realistic data sets and problems. While
the differences we have observed would not have affected any inferences, we
cannot rule out more serious consequences. When the user community has made
comparisons using their data sets and models, we will know better the impact
of this bug.
We invite users of SPSS products to send data sets and jobs in which they
detect a meaningful difference in output between a Pentium and a 486 processor
to SPSS Technical Support. Users can upload data and syntax files to our forum
on CompuServe or use anonymous ftp to upload it to spss.com. Examples that do
not require a data file may be e-mailed to support@spss.com or faxed to SPSS
Technical Support in the United States at 312-329-3668.
-- ----------------------------------------------------------------------------- David Nichols Senior Support Statistician SPSS, Inc. Phone: (312) 329-3684 Internet: nichols@spss.com Fax: (312) 329-3668 -----------------------------------------------------------------------------