Neil Toronto writes: > > So how about Racket? Can a programmer rely on a given program producing > > the exact same result on all platforms, and with any Racket version? > > In almost everything, PLT and Racket prioritize correctness over speed.
That sounds interesting. Why doesn't the Racket marketing department do more advertising for this? It's pretty hard to find a language that is both usable in real life and aims for correctness in float operations. > More precisely, on every supported system whose FPU and C libraries' > flonum functions (arithmetic, sqrt, exp, log, pow, trig) return > correctly rounded results when given non-special values, every > `racket/flonum' export should be perfectly IEEE 754-2008 and C99 Nice! > If you want to test Racket's compliance on your system, run this: > > #lang racket > (require math/utils) > (test-floating-point 10000) > > If it returns '(), your system is either compliant or close to it. The bad news is that MacOS X is not very compliant. I get a list that's far from empty: '(((flexpt -1.4916681462400412e-154 -1.0) 1.0) ((flexpt 1.4916681462400412e-154 -1.0) 1.0) ((flexpt -1.3407807929942596e+154 -1.0) 1.0) ((flexpt 1.3407807929942596e+154 -1.0) 1.0) ((flsin -10.0) 1.0) ((flsin 10.0) 1.0) ... ((flatan 10.0) 1.0) ((fl2log 8.537625565374698e+146 -4.512338244767214e+130) 17179869183.907547) ((fl2log1p 2.0398056943905264e+255 5.292226095768373e+238) 549755813887.9563)) It's always an error of 1.0 ulps, except for logarithms where the error is much more important. > We know Racket is compliant because our automated testing machine DrDr > runs the above test every time someone pushes a change to Racket. > I added that test with the math library, Matthew fixed a few errors it > found, and it has passed every time since. Sounds good, at least for the platforms that are regularly tested. Comparing to MPFR is indeed a very nice approach. > * Don't be surprised if trig functions on Windows or Mac OS X are a > bit inaccurate (1-3 ulps instead of 0.5 ulps). Linux seems very solid. Ah, I see. How about the log then? Is that a known problem as well? > Also, I just had an idea about how to automate at least half the > debugging I talked about at RacketCon. I'm going to try it today. Great! Konrad. ____________________ Racket Users list: http://lists.racket-lang.org/users

