I am in sympathy with your concern.
A solution in the particular case of z^n is to do
repeated squaring instead of ^n*^.z .
The interpreter already does that for real z .



----- Original Message -----
From: Kip Murray <[email protected]>
Date: Thursday, May 21, 2009 15:48
Subject: [Jchat] Clean elementary functions?
To: Chat forum <[email protected]>

> Caution, rant follows.  /Kip Murray
> 
> 
>     NB. It is too bad that whereas
> 
>     0j1*0j1
> _1
> 
>     NB. and
> 
>     *:0j1
> _1
> 
>     NB. we get
> 
>     0j1^2
> _1j1.22465e_16
> 
> 
>     NB. The culprit appears to be
> 
>     1 o. o. 1
> 1.22465e_16
> 
> 
>     NB. because 0j1^2 is calculated as
> 
>     ^ 2 * ^. 0j1
> _1j1.22465e_16
> 
>     NB. which has real part
> 
>     2 o. o. 1
> _1
> 
>     NB. and imaginary part
> 
>     1 o. o. 1
> 1.22465e_16
> 
>     NB. Sometimes I think verb "clean" should be 
> incorporated    NB. in the elementary 
> functions!  Maybe just in 1&o. and 2&o.
>     NB. The TI-83 calculator gives "clean" 
> results for i^2 and e^(i pi).
> 
>     load 'numeric'
> 
>     clean 0j1^2
> _1
> 
>     clean ^ 0j1 * 1p1
> _1
> 
>     0j1^2
> _1j1.22465e_16
> 
>     ^ 0j1 * 1p1
> _1j1.22465e_16
> 
>     clean
> 1e_10&$: :(4 : 0)
> if. L. y do.
>    x clean each y
> else.
>    if. (3!:0 y) e. 16 16384 do.
>      j./"1 y * x <: | y=. +.y
>    else.
>      y * x <: |y
>    end.
> end.
> )
> 
> 
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to