On Thursday, August 11, 2016 at 12:15:32 PM UTC+1, leif wrote:
>
> Erik Bray wrote: 
> > On Wed, Aug 10, 2016 at 2:45 PM, Thierry Dumont 
> > <tdu...@math.univ-lyon1.fr <javascript:>> wrote: 
> >> Le 10/08/2016 à 13:38, Erik Bray a écrit : 
> >>> Hi all, 
> >>> 
> >>> Sorry if this has been discussed ad-infinitum before--I looked around 
> >>> a bit but didn't find a definitive answer. 
> >>> 
> >>> I have one (well at least one) test that's failing on Cygwin due to 
> >>> tiny difference in the last digit of the result of log(3). 
> >>> 
> >>> This leads to to several questions: 
> >>> 
> >>> 1) Is it worth investigating the reason for the difference? 
> >>> 2) Is it worth trying to provide a workaround for the difference? 
> >>> 3) Or should the test just be updated to ignore the last couple digits 
> >>> of the result, and if so how (ellipses?) 
> >>> 
> >>> Thanks, 
> >>> Erik 
> >>> 
> >> Hello, 
> >> 
> >> What do you mean by log(3) ? 
> >> 
> >> Is it log(3.) or log(RDF(3)) ? 
> > 
> > Really what I meant was `float(log(3))` which I guess in Sage ends up 
> > being same as `log(RDF(3))` 
> > 
> >> With log(RDF(3)), this is classical; changing the library version, or 
> >> the compiler version often changes the way some expressions and 
> >> functions are computed. As floating point arithmetic is not 
> associative, 
> >> this is classical. With log(3.) (RealField()), I don't know. 
> >> When we wrote the book "Calcul Mathématique avec Sage", we had this 
> >> problem: after some release (some months) some  doctests of the chapter 
> >> on numerical algebra and floating point numbers failed. The only work 
> >> around we found was to truncate the last digit in the output, to try to 
> >> test what should remain constant. 
> > 
> > I have: 
> > 
> > sage: R = RealField(100) 
> > sage: log(R(3)) 
> > 1.0986122886681096913952452369 
> > 
> > Okay.  With Cygwin's libm: 
> > 
> > sage: float(log(3)) 
> > 1.0986122886681096 
> > 
> > While on Linux I get: 
> > 
> > sage: float(log(3)) 
> > 1.0986122886681098 
> > 
> > It looks like the latter result is properly rounded up (with an error 
> > of 1ulp) while my result on Cygwin is just truncated. 
>
>
> FWIW, on Cygwin we used to use the Cephes library for a while.  (No idea 
> whether it now replaced libm or parts of it got merged into libm 
> upstream, or none of that.) 
>
> But the result you get presumably also depends on whether libm was 
> compiled with -mfpmath=sse or -mfpmath=387 etc. 
>
> not sure about this; cygwin uses libm from something called newlib, which 
is mostly developed by Sun some 20+ years ago.
So it's pretty much non-optimised for particular hardware.
Although they keep adding more stuff to it even now, cf. e.g.
https://sourceware.org/ml/newlib-cvs/2016-q1/msg00046.html

Dima

>
> -leif 
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to