|
[Date Index]
[Thread Index]
[Author Index]
Re: comparing implicit 0 with machine floats
- To: mathgroup at smc.vnet.net
- Subject: [mg71137] Re: [mg71108] comparing implicit 0 with machine floats
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Thu, 9 Nov 2006 03:37:53 -0500 (EST)
- References: <11095316.1163039426494.JavaMail.root@eastrmwml01.mgt.cox.net>
Yes indeed, it does. This is rather curious because Simplify does not
actually reduce Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] to 0 (since
Simplify does not make use of RootReduce) one needs FullSimplify to
do that.
In[51]:=
Simplify[Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]]]
Out[51]=
Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]]
In[52]:=
FullSimplify[Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]]]
Out[52]=
0
Andrzej Kozlowski
On 9 Nov 2006, at 11:30, Bob Hanlon wrote:
> Using Simplify will force the comparison
>
> Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] == 2.//Simplify
>
> False
>
> Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] == N[10^3]//Simplify
>
> False
>
>
> Bob Hanlon
>
> ---- Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote:
>> Consider the following:
>>
>>
>> Sqrt[2] + Sqrt[3] - Sqrt[4 + 2*Sqrt[6]] == 2.
>>
>> False
>>
>> No problem here. Now let's make a small change
>>
>> In[17]:=
>> Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] == 2.
>>
>> Out[17]=
>>
>> Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] == 2.
>>
>> In fact the expression on the LHS is exactly 0:
>>
>> In[19]:=
>> RootReduce[Sqrt[2]+Sqrt[3]-Sqrt[5+2*Sqrt[6]]]
>>
>> Out[19]=
>>
>> The curious thing is that if you try a comparison between a zero of
>> this kind and any machine float, however large, Mathematica 5.1 will
>> return the original input:
>>
>> In[20]:=
>> Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] == N[10^3]
>>
>> Out[20]=
>> Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6]] == 1000.
>>
>> yet if the number of the left hand side is altered, however slightly,
>> the comparison will be made:
>>
>>
>> Sqrt[2] + Sqrt[3] - Sqrt[5 + 2*Sqrt[6+1/10^20]] == 2.
>>
>> False
>>
>> This suggests that Mathematica actually did perform a computation of
>> the left hand side in the examples where it just returned the input
>> and having discovered that it could not determine if the LHS is an
>> exact zero decided "not to answer the question". But this seems quite
>> unreasonable; after all it is not being asked if the LHS is an exact
>> 0, or even an approximate 0, but if it is an approximate large number
>> like 1000., and this it certainly can decide.
>>
>> I believe this used to be handled differently (better?) in older
>> versions of Mathematica but I no longer have any installed to check.
>>
>> Andrzej Kozlowski
>>
>
Prev by Date:
Re: Efficiency of repeatedly appending to a List
Next by Date:
Re: Re: Insertion into sorted list
Previous by thread:
Re: comparing implicit 0 with machine floats
Next by thread:
Re: comparing implicit 0 with machine floats
|