[racket-dev] .1 evaluates to 0.0 [was Re: plot doesn't plot (inexact->exact: no exact representation for +nan.0)]

From: Laurent (laurent.orseau at gmail.com)
Date: Tue Dec 27 08:31:19 EST 2011

I'm not alone!
FWIW, I still have that problem in 5.2.0.6.
And I confirm the ".1" minimalist test case.

When running 'racket' from the command line, this does not occur however:
laurent:~$ racket
Welcome to Racket v5.2.0.6.
Edit ~/.racketrc to modify inits.
> .1
0.1
>

But this still happens with gracket:
Welcome to Racket v5.2.0.6.
This is a simple window for evaluating Racket expressions.
Quit now and run DrRacket to get a better window.
The current input port always returns eof.
> .1
0.0
>

Probably irrelevant: Could the GPU be in the loop somehow?

Good luck,
Laurent


On Tue, Dec 27, 2011 at 14:26, Marijn <hkBst at gentoo.org> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 24-12-11 16:23, Matthew Flatt wrote:
> > At Wed, 14 Dec 2011 16:49:23 +0100, Marijn wrote:
> >> #lang racket (* .1 pi)
> >>
> >> produces 0.0 reliably in a freshly started drracket even when
> >> rerunning it, but:
> >>
> >> $ racket -e '(* .1 pi)' 0.3141592653589793
> >>
> >> and the program:
> >>
> >> #lang racket pi (* .1 pi)
> >>
> >> on the first run (drracket again) produces:
> >>
> >> 3.141592653589793 0.0
> >>
> >> while on subsequent runs it produces:
> >>
> >> 3.141592653589793 0.3141592653589793
> >
> > Thanks --- this is very helpful!
> >
> > I'm still stumped, unfortunately. It looks the same as PR 12070,
> > which we never figured out:
> >
> >
> http://bugs.racket-lang.org/query/?debug=&database=default&cmd=view+audit-trail&cmd=view&pr=12070
>
> Interesting!,
> >
> though it is a bit hard to read the Audit Trail because
> everything is jumbled together.
>
> I reproduce that bug and step 7) and 8) can be replaced with a single
> re-evaluate for me.
>
> It seems to indicate very clearly that the problem is in the floating
> point start-up somehow and has nothing to do with `pi' or variable
> references.
>
> Another possibility would be that multiplication (*) was at fault, but
> my new smallest test-case rules that out:
>
> #lang racket
> .1
>
> => 0.0
>
> And actually it works also directly in the REPL without running any
> program:
>
> Welcome to DrRacket, version 5.2.0.7--2011-12-15(-/f) [3m].
> Language: racket; memory limit: 128 MB.
> > .1
> 0.0
> > 1
> 1
> > .1
> 0.0
> > .2
> 0.0
> > .3
> 0.0
> > .4
> 0.0
> > .5
> 0.0
> > .6
> 0.0
> > .7
> 0.0
> > .8
> 0.0
> > .9
> 0.0
> > 1.0
> 1.0
> > .1
> 0.1
>
> So should we look at the byte-code produced for this (how does one do
> that and what is the expected code)?
> Is there some way to invoke racket from the command line in such a way
> that it behaves like the drracket initial repl?
> How does one run the byte-code?
>
> What external suspects are there? I suppose gcc, but are there any
> other? My CFLAGS are set to a very conservative AFAIK
> CFLAGS="-march=native -ggdb -O2 -pipe", currently on version 4.5.3.
>
> Marijn
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.18 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAk75x5IACgkQp/VmCx0OL2xZRACcC8dubYCSNXScyOG8wdJQxxN1
> xAgAnRVKv8YpTWODEKn2qEMMhcXHZLSk
> =n+xT
> -----END PGP SIGNATURE-----
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/dev/archive/attachments/20111227/2b81d28e/attachment.html>

Posted on the dev mailing list.