Ah, yes the while line should have read:

​while. ({:a)~:2*{.a do. a=.a,<.1r2+{:r ] r=.r,1%({:r)-{:a end.

On 18 Oct 2011, at 18:00, Raul Miller wrote:

> The first element of a is always 1.
> 
> The last element of a is always an integer and so can never be 0.5.
> 
> So the loop can never terminate.
> 
> -- 
> Raul
> 
> On Tue, Oct 18, 2011 at 12:52 PM, David Vaughan
> <[email protected]> wrote:
>> Why does this not work? I had to interrupt it because it just froze doing 
>> nothing.
>> 
>>   cf =: 3 : 0
>> r=.%:y
>> a=.<.1r2+r
>> while. ({.a)~:2*{:a do. a=.a,<.1r2+{:r ] r=.r,1%({:r)-{:a end.
>> ]a
>> )
>>   cf 2
>> |attention interrupt: cf
>> |       cf 2
>> 
>> 
>> On 18 Oct 2011, at 17:23, Raul Miller wrote:
>> 
>>> The best I can think of at the moment is using x: on the floating
>>> point value for an initial value and then newton's method to gain the
>>> extra precision you want.
>>> 
>>> --
>>> Raul
>>> 
>>> On Tue, Oct 18, 2011 at 12:09 PM, David Vaughan
>>> <[email protected]> wrote:
>>>> I'm hoping to write a verb to compute the continued fraction expansion of 
>>>> a square root. I've done it in Java though there are accuracy issues with 
>>>> floating points and speed issues with using exact numbers (you end up 
>>>> multiplying massive numbers in some cases). Is J equipped to deal with 
>>>> these problems or should I be looking for an alternative method entirely?
>>>> 
>>>> On 18 Oct 2011, at 16:50, Raul Miller wrote:
>>>> 
>>>>> On Tue, Oct 18, 2011 at 11:30 AM, David Vaughan
>>>>> <[email protected]> wrote:
>>>>>> Can J represent surds exactly instead of reverting to floating point? It 
>>>>>> would be more convenient if I could do that rather than storing the 
>>>>>> squared version.
>>>>> 
>>>>> Yes, but by generating a verb which would generate the floating point
>>>>> value and not as a number.
>>>>> 
>>>>> cubeRootOf5=: %:&5 bind 3
>>>>> 
>>>>> Of course you can manipulate the resulting numbers but those results
>>>>> are still floating point:
>>>>> 
>>>>>   (cubeRootOf5 ^ 3:) ''
>>>>> 5
>>>>>   5-(cubeRootOf5 ^ 3:) ''
>>>>> 8.88178e_16
>>>>> 
>>>>> That said, in some cases, J can clean up floating point discrepancies
>>>>> 
>>>>>   5-x:(cubeRootOf5 ^ 3:) ''
>>>>> 0
>>>>> 
>>>>> but that's from direct manipulation of the values and does not care
>>>>> about delayed evaluation:
>>>>> 
>>>>>   5-x:((3 %:5) ^ 3:) ''
>>>>> 0
>>>>> 
>>>>> Anyways, J implements the data structures to support symbolic
>>>>> manipulation but it does not have a particularly large library of
>>>>> prebuilt symbolic manipulation routines.
>>>>> 
>>>>> FYI,
>>>>> 
>>>>> --
>>>>> Raul
>>>>> ----------------------------------------------------------------------
>>>>> 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