float ^ rational bug in 5.12



We have a bug (5.12) with (negative float) ^ rational power.

This is OK

(%i1) (4.20004589234762386)^(2/3);
(%o1) 2.603170958437791

This isn't OK

(%i2) (-4.20004589234762386)^(2/3);
(%o2) (1.0*18287^(2/3))/4354^(2/3)

Notice the difference between (%o3) and (%o1)

(%i3) float(%);
(%o3) 2.603170975967684

A smaller ratepsilon makes the values agree up to the last decimal

(%i4) (-4.20004589234762386)^(2/3), ratepsilon : 1.0e-15;
(%o4) (1.0*24124547^(2/3))/5743877^(2/3)

(%i5) float(%);
(%o5) 2.603170958437795

We've known of the following bug (or inconsistency) for a long time

(%i6) (-4.20004589234762386b0)^(2/3);
(%o6) 2.254412180401012b0*%i-1.301585479218896b0

The function expta is weird. This isn't the cause
of (negative float)^rational bug. Final observation: This is OK

MAXIMA> (expta 1.1 2)
1.2100000000000002

But expta ignores denominators of the power -- that's weird

MAXIMA> (expta 1.1 `((rat) 1 2))
1.1000000000000001

Evaluating (-4.2b0)^(2/3) requires about 45 calls to 'expta.'
That's pretty sad, isn't it?

Barton