[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
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
248 Lower Round Pond Road
POB 106
Bristol, ME 04539
Tel: (207) 563-1048
Email: PemaquidRiver@tidewater.net