On 1 February 2013 16:09, David Korn <[email protected]> wrote:
> Subject: Re: [ast-developers] Floating point oddities with pow()? Accuracy  
> problem?
> --------
>>
>> Can someone explain why the the examples below yield a difference? IMO
>> pow() should deliver the same result as a x*x*x*... sequence. Or not?
>>
>> ksh -c 'float x y ; ((x=y=.1 , y=pow(y,4.) , x=x*x*x*x)) ; printf
>> "%30.30f\n" x-y'
>> -0.000000000000000000000006617444
>> ksh -c 'float x y ; ((x=y=.1 , y=pow(y,6.) , x=x*x*x*x*x*x)) ; printf
>> "%30.30f\n" x-y'
>> -0.000000000000000000000000103397
>> ksh -c 'float x y ; ((x=y=.1 , y=pow(y,8.) , x=x*x*x*x*x*x*x*x)) ;
>> printf "%30.30f\n" x-y'
>> -0.000000000000000000000000001615
>>
>> Platform is Suse 12.1 on AMD64.
>>
>> Lionel
>
> The AMD64 has only 18 significant digits with long double and you are asking
> for 30.    This is caused by floating point round off.

That was not the problem I was referring to. The problem I have is
that ksh93 builtin pow() and a pow made from individual
multiplications gives slightly different results, many digits after
the comma.

Lionel
_______________________________________________
ast-developers mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-developers

Reply via email to