[NTLUG:Discuss] The wrong computation example from the newsgroup
m m
llliiilll at hotmail.com
Mon Mar 19 14:37:34 CST 2001
you guys are so smart, know all the details of these stuff, and do not think
it is a problem (because of the architecture of computer, the complier....)
Question here: for those who are not a programmer or just know how to use
computer, Linux can still be trusted? (remember back to the first message of
this thread, the author said some thing like "it only happen on Linux
distros....")
in other words, if I am going to use Linux for business, and I have do
computation like the example, and I got wrong result. I think it may not
acceptable, people are looking for a reliable computers (OSs). shouldn't
this problem be fixed? (remember it only happen on Linux box)
Don't upset, I am just in the view point of a regular user.
>From: Peter Koren <pkoren at hex.net>
>Reply-To: discuss at ntlug.org
>To: discuss at ntlug.org
>Subject: Re: [NTLUG:Discuss] The wrong computation example from the
>newsgroup
>Date: Sun, 18 Mar 2001 11:25:42 -0600
>
>Oh well, I've seen others have nailed this but here was my approach to
>the problem:
>
>
> int main(void)
> {
> int a = 60, b = 6, c = 10;
> double x;
>
> x = 7.0 - (c*0.7);
> printf("(int)(c*0.7)=%d\n\n", (int)(c*0.7));
> printf("(float)(0.7)=%26.19e\n\n", (0.7));
> printf("x=7.0-(c*0.7)=%26.19e\n\n", x);
>
> exit(1);
> }
>
>which yields:
>
>(int)(c*0.7)=6
>
>(float)(0.7)= 6.9999999999999995559e-01
>
>x=7.0-(c*0.7)= 4.4408920985006261617e-16
>
>As Steve Baker said, if you depend on exact floating point results, you
>are apt to get screwed. Some base ten numbers like 0.3 and 0.7 can not
>be exactly represented in binary. Then there is the semantics issue of
>what should the result be. BTW, The Python community is debating
>changing the semantics of integer arithmetic and there is no consensus
>yet.
>
>
>Chris Cox wrote:
> >
> > Here's the original problem... for those NTLUGgers who want a challenge.
> >
> > > From: John Smith (jmsith at generic.com)
> > > Subject: Can linux be trusted?
> > > Newsgroups: comp.lang.c, comp.os.linux.development.apps,
>comp.os.linux.development.system, comp.sys.be.programmer,
> > > comp.sys.mac.programmer.misc, comp.unix.bsd.freebsd.misc,
>comp.unix.bsd.misc, gnu.gcc
> > > Date: 2001-02-28 17:52:12 PST
> > >
> > >
> > >
> > > "
> > > If you've got a minute, and one of those 'bleeding edge' OSes, try
>compiling
> > > with no optimizations and running this for fun:
> > >
> > > int main(void)
> > > {
> > > int a = 60, b = 6, c = 10;
> > >
> > > printf("%d = %d\n", (int) (((60/6)*0.3) + (10*0.7)), (int) (((
>a/b)*0.3) +
> > > ( c*0.7)));
> > >
> > > exit(1);
> > > }
> > >
> > > (BTW the lameness filter defies logic, that was the best I could do
>with the
> > > C snippet)
> > >
> > > A friend was tortured for a few hours doing an assignment until I took
>a
> > > look at the code and realized the problem boiled down to something
>that can
> > > be reduced to this snippet.
> > >
> > > I compiled this with default compiler settings on every platform I
>could
> > > find. This means Digital Unix 4.0, OpenVMS 7.2, Solaris 8, IRIX 6.4,
>HP-UX
> > > 10.20, FreeBSD 4-STABLE, OpenBSD 2.8 and various Linux distros, from
>ancient
> > > to cutting edge - both with gcc and any commercial compilers that
>happened
> > > to be available at each box.
> > >
> > > On all Linux distros, and only on Linux distros, ranging from an
>ancient
> > > Slackware setup to the latest Red Hat, I get 9=10. On everything else,
>I get
> > > 10=10. Go figure, and remember that the whole OS is compiled with
>that.
> > >
> > > I think I'll just stick to FreeBSD as far as my intel boxes are
>concerned.
> > > "
> > > http://slashdot.org/comments.pl?sid=01/02/28/1712232&cid=93
> > >
> > _______________________________________________
> > http://ntlug.org/mailman/listinfo/discuss
>_______________________________________________
>http://ntlug.org/mailman/listinfo/discuss
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
More information about the Discuss
mailing list