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