On Dec 30, 2009, at 8:49 AM, Dr. David Kirkby wrote:

> Robert Bradshaw wrote:
>> On Dec 29, 2009, at 9:59 PM, Peter Jeremy wrote:
>>
>>> On 2009-Dec-29 23:29:42 +0000, "Dr. David Kirkby" <david.kir...@onetel.net
>>>> wrote:
>>>> There are a few failures, but these couple just came up, and look
>>>> rather odd, as this is only an error in the last decimal place, and
>>>> so will be subject to rounding errors with different floating point
>>>> processors. They do not really seem failures to me.
>>> One of the claims for IEEE-754 arithmetic is that basic arithmetic
>>> operations (+, -, *, /, sqrt) will give bit-for-bit identical
>>> results on different implementations.
>>
>> I would have expected t2 to be IEEE-754 compliant, but maybe it  
>> isn't.
>>
>>>> **********************************************************************
>>>> File "/rootpool2/local/kirkby/sage-4.3/devel/sage/sage/symbolic/
>>>> pynac.pyx", line
>>>> 1276:
>>>>   sage: py_exp(float(1))
>>>> Expected:
>>>>   2.7182818284590451
>>>> Got:
>>>>   2.7182818284590455
>>>> **********************************************************************
>>> As a correctly rounded IEEE-754 double precision constant,
>>> e=0x4005BF0A8B145769 (0x2.B7E1 5162 8AED 2), this should convert
>>> to 2.7182818284590451 (rounded to "sufficient" accuracy).
>>>
>>> 2.7182818284590455 is 1ULP high - this may reflect a rounding error
>>> in either the exp() or double_to_ascii() implementation.
>>
>> It's probably not double_to_ascii, as (on t2)
>>
>>>>> float("2.7182818284590452353602874713526625")
>> 2.7182818284590451
>>
>> I bet Solaris has a completely different (and unfortunately not as
>> accurate) implementation of exp in its libm. It could also be a bug  
>> in
>> the compiler, as math.e is defined as
>
> I might be mistaken, but I believe the SPARC processor users 64 bits  
> for
> floating point and the Intel chips use 80 internally, so it might be  
> an issue
> with the processor. I've got no idea how that fits in with IEEE-754.

Yes, that could be the difference for exp. What's more worrisome is  
that the C compiler incorrectly resolves the literal floating point  
2.7182818284590452354 .

- Robert

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to