Performing Exponentiation in Java without the Math Class

• 10-13-2009, 07:21 PM
BlueJ Coder
Performing Exponentiation in Java without the Math Class
How does one carry out exponentiation in java without using the math class. If you can help, please provide an example to help pick up the concept. Thanks for all your input.
• 10-13-2009, 07:51 PM
r035198x
Forget about doing it in Java for a moment.
How would you do it on paper? Only move to the compiler if you get your algorithm right.
• 10-13-2009, 11:06 PM
xcallmejudasx
you can use a loop but that's horribly inefficient. I can post you the algorithm once I find my notes from college on exponents. I think it's called like the medieval peasant addition formula or something if you want to look around.
• 10-13-2009, 11:17 PM
Jnoobs
in my college class, if u had 2^3 u would write

Code:

`total = 2 * 2 * 2;`
• 10-14-2009, 04:22 PM
xcallmejudasx
Break it down into smaller chunks and use a recursive formula to calculate it. take for example 2^24 which is (2(2^23) which is (2(2(2^22) which is (2(2(2(2^21) etc.

You end up with x^n = x(x^n-1) = x(x(x^n-2)) etc. I believe you can approximate this using a limit. lim i -> n of x^i(x^n-i) would be your general equation. from there you recursively calculate your answer. (x is your base number, n is your max exponent, i is an iterator)

After actually writing all this out I'm not sure how much faster it's going to be since you're still doing an exponential. Someone want to improve what I wrote? Or just say if I went the completely wrong direction and tell the OP to ignore everything I've just typed.
• 10-14-2009, 05:03 PM
Arnold
I've checked out the source code of the Math class recently and I found out that it delegates all these operations to another class called the StrictMath class.
When I checked that out it appeared that all these methods are 'natives', which probably means that it is done in the processor or something.
So I still don't know what kind of algorithm to use for broken exponents. It's one of the greatests mysteries in math to me.
• 10-14-2009, 05:10 PM
xcallmejudasx
I know that multiplication by 2's can be done using simple hardware switches. Say for calculating 2^32 the compiler wouldn't actually calculate it the same way it would say 5^13. It would drop down and do byte level arithmetic and just shift the bits over(I think that's how you multiply by 2 with bits)
• 10-14-2009, 06:07 PM
Fubarable
Pardon my ignorance, but what is a "broken" exponent? Thanks in advance!
• 10-14-2009, 07:13 PM
Arnold
Quote:

Originally Posted by Fubarable
Pardon my ignorance, but what is a "broken" exponent? Thanks in advance!

Something like this: 2^2.3
Yoe can't just use a loop or a recursive method for that.
• 10-14-2009, 08:48 PM
Fubarable
Ah, gotcha. This would require logarithms or something similar to solve, I'd guess.