On 23 October 2013 03:59, Tina Harriott <tina.harriott.m...@gmail.com> wrote:
> On 11 August 2013 10:43, Tina Harriott <tina.harriott.m...@gmail.com> wrote:
>> On Wed, Jul 24, 2013 at 7:28 PM, Glenn Fowler <g...@research.att.com> wrote:
>>>
>>> On Wed, 24 Jul 2013 19:02:39 +0200 Tina Harriott wrote:
>>>> Here's one of my little tough problems which I am unable to solve
>>>> myself, even after looking at the source code of ast-ksh. The problem
>>>> below requires a good understanding how floating point numbers are
>>>> implemented in computers.
>>>
>>>> I'm trying to prototype code and like to iterate over a small, linear
>>>> area by using the C library function nextafter() to step forward the
>>>> smallest possible distance between each step, and print the number of
>>>> iterations needed to cover the distance between 4 and 4.000000000001:
>>>> ksh -c 'float v ; integer iter ; for ((iter=0,v=4 ; v < 4.000000000001
>>>> && iter < 10000000; v=nextafter(v,4.000000000001))) ; do
>>>> ((iter++));done;print $iter '
>>>> 2305843
>>>
>>>> The result 2305843 is correct.
>>>
>>>> However, if I use typeset -E (or just typeset) to declare the variable
>>>> v the loop runs forever, or in this case until it hits iter < 10000000
>>>> which I added as safeguard later:
>>>> ksh -c 'typeset -E v ; integer iter ; for ((iter=0,v=4 ; v <
>>>> 4.000000000001 && iter < 10000000; v=nextafter(v,4.000000000001))) ;
>>>> do ((iter++));done;print $iter '
>>>> 10000000
>>>
>>>> Can anyone explain this?
>>>
>>> float is an alias
>>> this shows the alias definition
>>>         type float
>>> which is
>>>         typeset -lE
>>> this documents -l
>>>         typeset --?l
>>>
>>> so for your example
>>>         typeset -E
>>> gave you a double v and
>>>         typeset -lE
>>> would give you a "long double" v
>>
>> But why does nextafter() misbehave if I want to use a datatype smaller
>> than "long double"? Accuracy is a good thing, but in this case we
>> iterate too fine-grained, meaning the code should iterate over the
>> smallest possible steps of a double, but not over the smallest
>> possible steps of a long double.
>>
>> Tina
>> --
>> Tina Harriott  - Women in Mathematics
>> Contact: tina.harriott.m...@gmail.com
>
> I am still running into this bug in ksh 20131010. Does it still take
> long to have it fixed?

Is this going to be fixed in the next alpha?

Tina
-- 
Tina Harriott  - Women in Mathematics
Contact: tina.harriott.m...@gmail.com
_______________________________________________
ast-users mailing list
ast-users@lists.research.att.com
http://lists.research.att.com/mailman/listinfo/ast-users

Reply via email to