[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Spock@SAMSON.CADR.DIALNET.SYMBOLICS.COM: Floating-point round-off problems.]



    Date: Fri, 11 Aug 89 07:28 PDT
    From: Spock@SAMSON.CADR.DIALNET.SYMBOLICS.COM (Mr. Spock)

	Date: Thu, 10 Aug 89 17:16 CDT
	From: dmitchell@backus.trc.amoco.com (Donald H. Mitchell)

	    Date: Thu, 10 Aug 89 13:40:52 CDT
	    From: mac%cadillac.cad.mcc.com@mcc.com (Mac Michaels)

	    +>  Date: Thu, 10 Aug 89 08:00 PDT
	    +>  From: Spock@SAMSON.CADR.DIALNET.SYMBOLICS.COM (Mr. Spock)
	    +>  
	    +>  Does anyone have a hack to correct for the losing floating-point math on
	    +>  these Symbolics machines?
	    +>  
	    +>  Consider:
	    +>  
	    +>      (- 6 5.9) returns -> 0.099999905 instead of 0.1
	    +>  
	    +>  Thanks,
	    +>  --Mark Alexander

	    It looks like a problem common to more than Symbolics.  

	    Austin Kyoto Common Lisp on a Sun 4-110 returns:

	    0.09999999999999964

	    Extension Language Kit (a superset of Scheme) on a Sun 3 returns:

	    0.0999999999999996


	    USPS: Mac Michaels,   3500 W.Balcones Center Dr.,   Austin,TX 78759
	    ARPA: mac@mcc.com
	    UUCP: {uunet,harvard,gatech,pyramid}!cs.utexas.edu!milano!cadillac!mac 

	Oh my GOD!  Look what happens with Sun's C:

    Gag, barf!

	Float:   0.099999904632568; 
	double:  0.09999999999999964472863211995; 
	immediate:  0.09999999999999964472863211995

	It must be a conspiracy! Who's stealing our floating points!!??

    Yes it must.  The russians?

	Here's the source, see if you can figure it out!
	#include <stdio.h>
	main()

	{ float a,b;
	  double c,d;

	  a = 6.0;
	  c = 6.0;
	  d = 5.9;
	  b = 5.9;
	  a = a - b;
	  c = c - d;
 
	  printf ( "\n\nFloat: %19.14g; double: %32.29g; immediate: %32.29g\n\n",
	a ,  c, 
			(6.0 - 5.9));
	  }

    Thank-you one and all for your gentle rebufs concerning my naive
    question.  I'll be chuckling over Mitchell's response all day.
    --Mark Alexander

For some more background, you could read the documentation section
"Floating-Point Numbers" from volume 2A.  Especially the section entitled
"Non-mathematical Behavior of Floating-point Numbers".