larryh@tekgvs.TEK.COM (Larry Hutchinson) (12/05/87)
I have discovered a bug in Turbo Pascal 1.0 involving an integer expression
screwing up a floating point comparison. As ususal this was burried deep
in a complicated math package and it took me half a day to find it.
I suppose it is possible that I am doing something wrong since I am not
a Pascal person -- if so, I apologize.
System 4.2, Finder 6.0, no Multi-finder.
In the following program, the first comparison is ok and the 2nd
is wrong. The wierd thing is that once this bug was worked around, the
rest of the program (a polynomial fit) appeared to work ok.
Larry Hutchinson, Tektronix, Inc. PO Box 500, MS 50-383, Beaverton, OR 97077
{ decvax,allegra }!tektronix!tekgvs!larryh
------------cut here----------------
PROGRAM test(input,output);
CONST
mz=0.0;
VAR
itmp: integer;
mj: real;
BEGIN
writeln('Demo of Turbo Pascal bug');
itmp := 30;
mj:= -10.0;
IF(mj>mz) THEN
writeln('first mj > comparison is wrong')
ELSE
writeln('first mj > comparison is ok');
itmp := 1+itmp; (* if this is reversed, to itmp+1, then is ok! *)
IF(mj>mz) THEN
writeln('2nd mj > comparison is wrong')
ELSE
writeln('2nd mj > comparison is ok');
readln;
END.