# Re: Old Question

• Subject: Re: Old Question
• From: Ben Tupper <pemaquidriver(at)tidewater.net>
• Date: Tue, 14 Dec 1999 21:36:05 -0500
• Newsgroups: comp.lang.idl-pvwave
• Organization: http://extra.newsguy.com
• References: <825pe3\$ic9\$1@pegasus.csx.cam.ac.uk>
• Xref: news.doit.wisc.edu comp.lang.idl-pvwave:17730

```

Jacques Basson wrote:

> Hi all
>
> Sorry, this has got to be an old question, but I can't seem to locate
> the answer.  What is the way around the following problem?
>
> IDL> a = -1
> IDL> print, -1^(1./3)
>      -1.00000
> IDL> print, a^(1./3)
>           NaN
> % Program caused arithmetic error: Floating illegal operand
>
> Thanks
> Jacques

Hello,

I now know why it happens.  In the documentation I see...

Exponentiation

The caret (^) is the exponentiation operator. A^B is equal to A raised to
the B power.

· If A is a real number and B is of integer type, repeated multiplication
is applied.
· If A is real and B is real (non-integer), the formula A^B = e^(B ln A)
is evaluated.
· If A is complex and B is real, the formula A^B = (re^(iq))^B = r^B *
(cosBq + isinBq) (where r is the real part of A and iq is the imaginary
part) is evaluated.

· If B is complex, the formula A^B = e^(B ln A) is evaluated. If A is
also complex, the natural logarithm is computed to be ln(A) = ln(re^(iq))
= ln(r) + iq (where r is the real part of A and iq is the imaginary
part).
· A^0 is defined as 1.

Your example falls into the second type of operation.   I don't know how
to get around that but would like to know also.

Ben

--
Ben Tupper
Pemaquid River Company