Thank you, Raul, especially for the "short form".  I'll try at least the Wiki 
article.  --Kip

Sent from my iPad


On Mar 1, 2013, at 7:50 AM, Raul Miller <[email protected]> wrote:

> For readers following along:
> 
> IEEE 754 is a decent search term.
> 
> Or, at least, it is for me - Google apparently customizes search
> results so I cannot know for sure that they give good, relevant
> results for everyone searching on that phrase (nor can I be sure
> whether anyone I care about will get different results from
> me).http://steve.hollasch.net/cgindex/coding/ieeefloat.html
> 
> Here are my top four hits when I search for IEEE 754 today:
> 
> http://en.wikipedia.org/wiki/IEEE_floating_point
> http://grouper.ieee.org/groups/754/
> http://steve.hollasch.net/cgindex/coding/ieeefloat.html
> http://babbage.cs.qc.cuny.edu/IEEE-754/
> 
> But the short form is: IEEE 754 splits the representation of a number
> into a sign (+1 or _1 -- one bit), an exponent and a mantissa.  There
> are actually several IEEE 754 representations, and current J
> implementations use the 64 bit representation.  The 64 bit
> representation uses 52 bits to represent the mantissa (a number
> between 1 and 2, or equal to 1), and and the remaining 11 bits
> represent the exponent (a power of 2).  In operation we act as though
> these elements are multiplied together.
> 
> Obviously, there are some exceptions to the above summary.  Without
> any exceptions this mechanism could not represent 0.  So the lowest
> and the highest exponents get treated specially, which is where we get
> J's inconsistent numbers (_ __ _.).
> 
> Rather than describe the details of what's going on in deeper detail,
> here, I'll let you read other materials.
> 
> FYI,
> 
> -- 
> Raul
> 
> On Thu, Feb 28, 2013 at 6:11 PM, km <[email protected]> wrote:
>> I remember that comparisons with 0 are exact
>> 
>>    0 = N - N + epsilon
>> 0 0 0 0 0 0 0 1 1
>> 
>> which agrees with your first report.  No, I am unfamiliar with the IEEE 
>> structure, and am surprised by these results.
>> 
>> --Kip
>> 
>> Sent from my iPad
>> 
>> 
>> On Feb 28, 2013, at 4:21 PM, Raul Miller <[email protected]> wrote:
>> 
>>> Are you familiar with the structure of IEEE 754 floating point numbers?
>>> 
>>> Consider, for example:
>>> 
>>>  epsilon=: 2^_44
>>>  N=: 10^i:4
>>> 
>>>  NB. this result reflects IEEE-754's structure
>>>  *N+epsilon-N
>>> 1 1 1 1 1 1 1 0 0
>>> 
>>>  NB. this result reflects J's heuristic to deal with that structure
>>>  N=N+epsilon
>>> 0 0 0 0 1 1 1 1 1
>>> 
>>> FYI,
>>> 
>>> --
>>> Raul
>>> 
>>> On Thu, Feb 28, 2013 at 4:28 PM, km <[email protected]> wrote:
>>>> Here is what I did
>>>> 
>>>>   NB. right hand limit of a function
>>>> 
>>>>   lim =: 1 : 0
>>>> value =. u y + (2^_44)
>>>> if. value <: - 2^40 do. __
>>>> elseif. value >: 2^40 do. _
>>>> elseif. do. value
>>>> end.
>>>> )
>>>> 
>>>> It does "reasonably well" but can be fooled, for example
>>>> 
>>>>   ] lim 2^40
>>>> _
>>>> 
>>>> Here it does better
>>>> 
>>>>   *: lim 1000
>>>> 1000000
>>>> 
>>>>   dq =: 1 : (':'; 'y %~ (u x+y) - u x')  NB. difference quotient
>>>> 
>>>>  2&(^&3 dq)lim 0  NB. derivative of x^3 at 2 is 12
>>>> 12
>>>> 
>>>> --Kip
>>>> 
>>>> Sent from my iPad
>>>> 
>>>> 
>>>> On Feb 28, 2013, at 7:19 AM, Raul Miller <[email protected]> wrote:
>>>> 
>>>>> Here's a model implementation:
>>>>> 
>>>>> lim=: (1 :0)("0)
>>>>> tests=.  u   ((1e_6*1>.|y)*0.5^i.1000)+y
>>>>> tests {~{.I.((1 }. 0&~:) * 2 ~:/\ ])(,2:)(*!.0)2 -/\ tests
>>>>> )
>>>>> 
>>>>> My assumptions are:
>>>>> 
>>>>> (1) the limit in question is relatively stable (that my choices for
>>>>> epsilon are adequate)
>>>>> 
>>>>> (2) that the result of limit should be a consistent number.
>>>>> 
>>>>> Note that (2) means that _ and __ will typically not be returned,
>>>>> since they are inconsistent numbers (but, since they are inconsistent,
>>>>> it's impossible to make an entirely consistent guarantee about their
>>>>> treatment).
>>>>> 
>>>>> (1&o.%]) lim 0
>>>>> 1
>>>>> % lim 0
>>>>> 2.67877e306
>>>>> -@% lim 0
>>>>> _2.67877e306
>>>>> 
>>>>> For my purposes, these "e306" values are close enough to infinity to
>>>>> be treated as such.
>>>>> 
>>>>> Note also that I'm probably being a bit too aggressive with the number
>>>>> of epsilon values I'm using.
>>>>> 
>>>>> If you really want _ and __ results, you could use something like this:
>>>>> 
>>>>> lim=: (1 :0)("0)
>>>>> tests=.  u   ((1e_6*1>.|y)*0.5^i.1000)+y
>>>>> 1e_3*1e3* tests {~{.I.((1 }. 0&~:) * 2 ~:/\ ])(,2:)(*!.0)2 -/\ tests
>>>>> )
>>>>> 
>>>>> However, note that this is a heuristic and its ability to force the
>>>>> result to be an inconsistent infinity depends on the stability u (and
>>>>> also depends on the actual limit value).  I place less faith in this
>>>>> mechanism than in the ability of the user to recognize that the result
>>>>> should be thought of as infinite (and if the user does not understand
>>>>> what's going on well enough to make that determination it's hard to
>>>>> imagine how this distinction could be useful).
>>>>> 
>>>>> FYI,
>>>>> 
>>>>> --
>>>>> Raul
>>>>> 
>>>>> On Wed, Feb 27, 2013 at 10:55 PM, km <[email protected]> wrote:
>>>>>> Can you write an adverb lim so that
>>>>>> 
>>>>>>  sin =: 1&o.
>>>>>> 
>>>>>>  (sin % ])lim 0
>>>>>> 1
>>>>>> 
>>>>>>  % lim 0  NB. limit is from right
>>>>>> _
>>>>>> 
>>>>>>  -@% lim 0
>>>>>> __
>>>>>> 
>>>>>> 
>>>>>> Kip Murray
>>>>>> 
>>>>>> Sent from my iPad
>>>>>> 
>>>>>> ----------------------------------------------------------------------
>>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>> ----------------------------------------------------------------------
>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>> ----------------------------------------------------------------------
>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to