Diagnostics for the Windows floating-point problem

TestFPU checks whether your computer, running a 32-bit Windows (95, 98, NT, XP, etc.), suffers from the Floating Point Unit (FPU) accuracy degradation.
What is the FPU and why should I care?
    FPU is a separate part of your processor, performing fast and accurate calculations on floating-point (roughly speaking: non-integer) numbers. If your computer usage is limited to relatively simple tasks, like word processing, surfing the Web or playing Doom, the problem does not affect you. If, however, you use any programs performing accurate calculations (especially for, but not limited to, scientific and engineering applications), you may want your computer perform with the accuracy it was supposed to perform with.
This is not just about the accuracy of the results. Quite a few mathematical algorithms may break if their internally used precision is not as it was assumed to be. (For you math guys: some series may not converge at all.)
How big is the accuracy loss?
The nominal accuracy of the FPU is 19-20 decimal digits. On affected systems the delivered accuracy is about 16 digits. This is a factor of one thousand.
For example, computing .33333333333333333333-1/3 should result in about 3E-20 if your FPU is OK. On affected systems the result will be about 2E-17.
What is causing the problem?
Frankly speaking, I don't know. By experimentation, I was able to identify at least three programs which, when running in the background, would cause the FPU problem:
xwheel.exe v. 1.0 by LCS/Telegraphics. This driver is included by many vendors with their pointing devices (touchpads in particular); probably more commonly seen on notebook computers;
vshield.exe, a part of the McAfee antivirus utilities (versions 4.01 and 4.02)
sage.dll — a part of the Microsoft System Agent, version 4.40.310 (distributed with the original Windows 95 or the Plus pack). Microsoft admitted the problem and released a fixed version; the one included with Windows 98 and lates should be OK.
If you identify (not just suspect!) another program causing the problem, let me know. Just don't ask me for help in fixing it; I can't afford the time. Sorry.
How do I use your program?
Unpack the tfpu.zip archive into a new folder and run tfpu.exe. Sometimes the behavior is strange: for example, xwheel.exe affects the results only when the mouse enters the program window. I've checked it with a number of programs, and the behavior is always the same.
TestFPU runs a check every second. If you remove (or run again) the problem-causing program, the results are immediately visible (at least this is the case for the three offenders identified above).
How do I uninstall it?
Delete the folder you've created for tfpu.exe.
How does TestFPU check for the problem?
Please refer to the program source code included in the archive. It is written in Delphi, and the function checking for the accuracy loss is just ten lines or so. The check itself is just one line, very much like the computation shown above.
What should I do if my FPU is affected?
Don't ask me — you are on your own here. Probably you should consider removing the offender from your system. Most probably you will still have a life.

tfpu.zip TestFPU for Windows 95/98/ME/NT/2000/XP (1.10, 99/03/12).
Verified to work on Windows XP Home and Pro.

Home: wrotniak.net | Search this site | Change font size

Photo Tidbits News | The Gallery


Posted 1997/08/08; last updated 2005/08/12 Copyright © 1997-2005 by J. Andrzej Wrotniak