Calculating powers of integers

exponents calculator
fraction exponent calculator
2 to the power of 3
division with exponents calculator
3 to the power of 4
3 to the power of 3
multiplying exponents calculator
large exponent calculator

Is there any other way in Java to calculate a power of an integer?

I use Math.pow(a, b) now, but it returns a double, and that is usually a lot of work, and looks less clean when you just want to use ints (a power will then also always result in an int).

Is there something as simple as a**b like in Python?

Integers are only 32 bits. This means that its max value is 2^31 -1. As you see, for very small numbers, you quickly have a result which can't be represented by an integer anymore. That's why Math.pow uses double.

If you want arbitrary integer precision, use BigInteger.pow. But it's of course less efficient.

Calculating powers of integers, Integers are only 32 bits. This means that its max value is 2^31 -1 . As you see, for very small numbers, you quickly have a result which can't be represented by  Apply exponent rules to multiply exponents step-by-step. Order of Operations. Factors & Primes. Prime Factorization. Factors. LCM. GCF. Fractions. Reduce. Add, Subtract. Multiply.

Best the algorithm is based on the recursive power definition of a^b.

long pow (long a, int b)
{
    if ( b == 0)        return 1;
    if ( b == 1)        return a;
    if (isEven( b ))    return     pow ( a * a, b/2); //even a=(a^2)^b/2
    else                return a * pow ( a * a, b/2); //odd  a=a*(a^2)^b/2

}

Running time of the operation is O(logb). Reference:More information

How to Calculate Powers of Numbers, computes powers of a number, you can write a similar function recursively, and it can be very efficient. The only hitch is that the exponent has to be an integer. Integers are only 32 bits. This means that its max value is 2^31 -1. As you see, for very small numbers, you quickly have a result which can't be represented by an integer anymore. That's why Math.pow uses double. If you want arbitrary integer precision, use BigInteger.pow. But it's of course less efficient.

No, there is not something as short as a**b

Here is a simple loop, if you want to avoid doubles:

long result = 1;
for (int i = 1; i <= b; i++) {
   result *= a;
}

If you want to use pow and convert the result in to integer, cast the result as follows:

int result = (int)Math.pow(a, b);

Computing powers of a number (article), Basic rules for exponentiation. If n is a positive integer and x is any real number, then xn corresponds to repeated multiplication xn=x×x×⋯×x⏟n times. If we take the product of two exponentials with the same base, we simply add the exponents: xaxb=xa+b. Positive and negative whole numbers are integers. The calculator shows the work for the math and shows you when to change the sign for subtracting negative numbers. Add and subtract positive and negative integers, whole numbers, or decimal numbers. Use numbers + and -.

When it's power of 2. Take in mind, that you can use simple and fast shift expression 1 << exponent

example:

22 = 1 << 2 = (int) Math.pow(2, 2) 210 = 1 << 10 = (int) Math.pow(2, 10)

For larger exponents (over 31) use long instead

232 = 1L << 32 = (long) Math.pow(2, 32)

btw. in Kotlin you have shl instead of << so

(java) 1L << 32 = 1L shl 32 (kotlin)

Basic rules for exponentiation, An exponent tells you how many times the base number is used as a factor. A base of five raised to the second power is called "five squared" and means "five  The program below takes two integers from the user (a base number and an exponent) and calculates the power. For example: In the case of 2 3 . 2 is the base number; 3 is the exponent; And, the power is equal to 2*2*2

Google Guava has math utilities for integers. IntMath

Numbers - Exponents - In Depth, This free exponent calculator determines the result of exponentiation, including Exponents with negative bases raised to positive integers are equal to their  Given two integers x and n, write a function to compute x n . We may assume that x and n are small and overflow doesn’t happen. Examples : Input : x = 2, n = 3 Output : 8 Input : x = 7, n = 2 Output : 49. Below solution divides the problem into subproblems of size y/2 and call the subproblems recursively.

Exponent Calculator, Exponents. The exponent of a number says how many times to use the number in a multiplication. 8 to the Power 2. In 82 the "2" says to use 8 twice in a  Calculate with Negative Exponents Calculate a negative exponent using inversion. When the exponent is a negative number, you are using the inverse of the number. For example, three to the power of negative four, or 3^-4, will be equal to one over three to the power of positive four (1/3 4) or 1/ 3 x 3 x 3 x 3 or 1/81.

Exponents, We will look at zero and negative exponents in a bit. Let's first recall the definition of exponentiation with positive integer exponents. If a  You can also compute the power of a number using a loop. If you need to calculate the power of a number raised to a decimal value, you can use the pow() li brary function . Share on:

Algebra - Integer Exponents, Exponentiation is a mathematical operation, written as bn, involving two numbers​, the base b Exponentiation by integer exponents can also be defined for a wide variety of algebraic structures, including matrices. The powers of a sum can normally be computed from the powers of the summands by the binomial formula. In mathematics, modular arithmetic is a system of arithmetic for integers, where numbers "wrap around" when reaching a certain value, called the modulus. The modern approach to modular arithmetic was developed by Carl Friedrich Gauss in his book Disquisitiones Arithmeticae, published in 1801. A familiar use of modular arithmetic is in the 12-hour clock, in which the day is divided into two 12-hour periods. If the time is 7:00 now, then 8 hours later it will be 3:00. Usual addition would suggest

Comments
  • This is a possible duplicate of this question stackoverflow.com/questions/101439/…
  • +1, that's true. But I would consider it nice if the Java architects have added pow(int, int). You know sometimes you just want that 5^6 and don't care about doubles at all.
  • I'm just guessing, but I think they didn't do it because such a method would lead to completely incorrect results in most of the cases. Principle of least astonishment.
  • Yeah, that's a good point. But when you are an ignorant and you work with int, nothing stops you to convert to (int) an overflowed value.
  • I mean if you defined "most of the cases" as "for most value of the inputs" then Java should certainly not offer the * operator either for int or long inputs since for most inputs the multiplication will overflow. In fact, even addition overflows about half the time!
  • Sorry if I come in late. Why use double and not long?
  • And what is isEven(b) method do? Is it same with b % 2 == 0?
  • I wonder too ... The guy has gone and left us wondering ... Slipshod programmers ...
  • Inexistent (isEven(b))' function -- meaning ((b & 1) == 0)` -- and an unnecessary complicated algorithm! (
  • Better handle case where b<0 to avoid infinite recurssion
  • In my benchmarks, this is actually 2x to 20x slower than the simple loop algorithm for the full range of values. The recursion here imposes a lot of overhead.
  • @DmitryGinzburg: given a long is 64 bit, then O(n) has 64 as an upper limit. Is that really so bad?