y >>= 1;
}
BigInteger bigX = BigInteger.valueOf(x);
BigInteger bigXZ = bigX.multiply(bigX);
if (bigXZ.divide(bigX).longValue() != z) {
IRubyObject v = RubyBignum.newBignum(runtime, RubyBignum.fix2big(RubyFixnum.newFixnum(runtime, x))).op_pow(context, RubyFixnum.newFixnum(runtime, y));
if (z != 1) v = RubyBignum.newBignum(runtime, RubyBignum.fix2big(RubyFixnum.newFixnum(runtime, neg ? -z : z))).op_mul19(context, v);
return v;
}
z = bigXZ.longValue();