On 02/10/06, Vincent Snijders <[EMAIL PROTECTED]> wrote:

But 0.125 and 0.375 are representable ACCURATELY on a computer, aren't they?

Vincent

Yes they can, so FPC still has a bug in Banker's Rounding.

What is really interresting is that I never really thought about
irrational number and how they are represented in computers.  From
that article in MSDN, here is a few basic calulations that don't work
on computers.  Multiply is the only test that worked!  All other tests
didn't. :-)

var
 sumE: extended;
 sumD: double;
 sumS: single;
 i: integer;
 t1, t2, t3: single;
begin
 write('multiply: ');
 writeln(0.0001 * 10000);
 writeln('=========');

 // should be 1.0 in theory
 sumE := 0;
 for I := 1 to 10000 do
   sumE := sumE + 0.0001;
 write('sum E: ');
 writeln(sumE);
 writeln('=========');

 // should be 1.0 in theory
 sumD := 0;
 for I := 1 to 10000 do
   sumD := sumD + 0.0001;
 write('sum D: ');
 writeln(sumD);
 writeln('=========');

 // should be 1.0 in theory
 sumS := 0;
 for I := 1 to 10000 do
   sumS := sumS + 0.0001;
 write('sum S: ');
 writeln(sumS);
 writeln('=========');


 writeln(' ');
 writeln('testing the follow:  69.82 = 69.20 + 0.62 ');
 t1 := 69.82;
 t2 := 69.20;
 t3 := 0.62;
 writeln(t1);
 writeln(t2);
 writeln(t3);

 if t1 = (t2 + t3) then
   writeln('equality')
 else
   writeln('non equals');   <=== prints this!!!
 writeln('=========');


Regards,
 - Graeme -
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to