biginteger^biginteger

public static BigInteger pow(BigInteger base, BigInteger exponent)
 {   
  BigInteger result = BigInteger.ONE;  
  while (exponent.signum() > 0) {    
   if (exponent.testBit(0)) result = result.multiply(base);     
   base = base.multiply(base);    
   exponent = exponent.shiftRight(1);  
}   
  return result;
 }
AND