The following code outputs 0, which isn't correct:
$r = gmp_pow(gmp_init('-1.7976931348623157'), 308);
echo gmp_strval($r);
I was under the impression that the GMP library was capable of handling floating point numbers, or have I made a mistake in the code?