Re: inconsistency with Inequality testing and Floor
- To: mathgroup at smc.vnet.net
- Subject: [mg59936] Re: [mg59927] inconsistency with Inequality testing and Floor
- From: Sseziwa Mukasa <mukasa at jeol.com>
- Date: Fri, 26 Aug 2005 04:53:25 -0400 (EDT)
- References: <200508251034.GAA10208@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On Aug 25, 2005, at 6:34 AM, Brett Patterson wrote: > > I have observed the following strange behaviour: > > ---------------------- > In[1]:= x = 1.0 - 10^-($MachinePrecision) > > Out[1]= 1. > > In[2]:= x >= 1 > > Out[2]= True > > In[3]:= Floor[x] > > Out[3]= 0 > ---------------------- > > It seems that the inequality test and Floor use different numerical > methods. > I think this behaviour is inconsistent. > If the test "x >= 1" evaluates to True, then Floor[x] should evaluate > to 1. > > Can anyone shed any light on this? I think the key is this In[12]:= x==1 Out[12]= True and the following statement in the explanation of ==: =E2=97=BC Approximate numbers are considered equal if they differ in at most their last eight binary digits (roughly their last two decimal digits). It seems == converts the exact numeral 1 to a machine approximation and compares the binary digits with x. Looking at the behavior of MantissaExponent and RealDigits with respect to x and the exact numeral 1: In[15]:= RealDigits[x,2,16] Out[15]= {{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},1} In[17]:= MantissaExponent[x,2] Out[17]= {1\/2, 1} In[18]:= MantissaExponent[1,2] Out[18]= {1\/2, 1} It looks they are indistinguishable to Mathematica which may explain why x==1 evaluates to True. That's my best guess, Ssezi
- References:
- inconsistency with Inequality testing and Floor
- From: "Brett Patterson" <muckle.moose@gmail.com>
- inconsistency with Inequality testing and Floor