Talk:Exponentiation operator: Difference between revisions

From Rosetta Code
Content added Content deleted
(→‎AWK: a^b = e^{b \times \log a})
Line 21: Line 21:


The awk solution is pretty weak: It does not handle fractional exponents. It looks like there is a log function for awk, so I reckon it is possible to create a fully working solution, but has been many years since I last looked at how to do this, so I need to do some revision on mathematics. I am working on a solution, but if someone already has a working algorithm then please paste it here as pseudocode, and I will try and translate it into awk. [[User:Markhobley|Markhobley]] 11:44, 7 September 2011 (UTC)
The awk solution is pretty weak: It does not handle fractional exponents. It looks like there is a log function for awk, so I reckon it is possible to create a fully working solution, but has been many years since I last looked at how to do this, so I need to do some revision on mathematics. I am working on a solution, but if someone already has a working algorithm then please paste it here as pseudocode, and I will try and translate it into awk. [[User:Markhobley|Markhobley]] 11:44, 7 September 2011 (UTC)

: <math>a^b = e^{b \times \log a}</math>

: For example, [[Real constants and functions#bc]] uses <code>e(l(2) * -3.4)</code> to calculate 2 to the power of -3.4. This formula requires a >= 0, unless you can use [[Arithmetic/Complex|complex numbers]]. --[[User:Kernigh|Kernigh]] 18:00, 7 September 2011 (UTC)

Revision as of 18:00, 7 September 2011

Fractional Exponents

This is for integer powers only right? No fractional exponents? --Mwn3d 05:58, 19 February 2008 (MST)

I believe that the REAL * REAL fraction can probably be done faster using some numerical equation. Eg simply

OP ** = ( REAL base, exponent )REAL: exp(log(base)*exponent); ~ # ... #

This above would work for fractional powers. For integral exponents the routine I provided is "sometimes" faster then alternatives, esp where the exponent is s power of two.

BTW: I wrote these routine as a hint to User:Short Circuit, and as a replacement to the mpz_class pow2(mpz_class exp) routine he contributed in Lucas-Lehmer_test#C++ (Which is probably painfully slow).

NevilleDNZ 06:11, 19 February 2008 (MST)

OK, but for this task, all that is required is intint and realint right? --Mwn3d 06:19, 19 February 2008 (MST)

Yes. NevilleDNZ 06:22, 19 February 2008 (MST)

It should be specified also the return type; even for intint it makes sense to return a real value, since if the exponent is negative, it is what we get mathemtically. Should we return an integer instead? (This means: if the exp is less than 0, the result is 0) --ShinTakezou 01:07, 8 December 2008 (UTC)

AWK

The awk solution is pretty weak: It does not handle fractional exponents. It looks like there is a log function for awk, so I reckon it is possible to create a fully working solution, but has been many years since I last looked at how to do this, so I need to do some revision on mathematics. I am working on a solution, but if someone already has a working algorithm then please paste it here as pseudocode, and I will try and translate it into awk. Markhobley 11:44, 7 September 2011 (UTC)

For example, Real constants and functions#bc uses e(l(2) * -3.4) to calculate 2 to the power of -3.4. This formula requires a >= 0, unless you can use complex numbers. --Kernigh 18:00, 7 September 2011 (UTC)