[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*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

**Follow-Ups**:**Re: Old Question***From:*Jacques Basson

**Re: Old Question***From:*William Thompson

- Prev by Date:
**Re: Working with Preexisting Data Set** - Next by Date:
**Re: Old Question** - Prev by thread:
**Re: Working with Preexisting Data Set** - Next by thread:
**Re: Old Question** - Index(es):