function is_pentagonal($num) { // we do a sqr with remainder list($sr, $rem) = gmp_sqrtrem(gmp_add(gmp_mul(24, $num), 1)); // if it's not an exact root don't bother with the rest if (gmp_strval($rem) == '0') { $d = gmp_add($sr, 1); $m = gmp_strval(gmp_mod($d, 6)); if ($m == '0') { return true; } } return false; }
// positive echo gmp_sign("-500") . "\n"; // negative echo gmp_sign("0") . "\n"; // zero // gmp_sqrt $sqrt1 = gmp_sqrt("9"); $sqrt2 = gmp_sqrt("7"); $sqrt3 = gmp_sqrt("1524157875019052100"); echo gmp_strval($sqrt1) . "\n"; echo gmp_strval($sqrt2) . "\n"; echo gmp_strval($sqrt3) . "\n"; // gmp_sqrtrem list($sqrt1, $sqrt1rem) = gmp_sqrtrem("9"); list($sqrt2, $sqrt2rem) = gmp_sqrtrem("7"); list($sqrt3, $sqrt3rem) = gmp_sqrtrem("1048576"); echo gmp_strval($sqrt1) . ", " . gmp_strval($sqrt1rem) . "\n"; echo gmp_strval($sqrt2) . ", " . gmp_strval($sqrt2rem) . "\n"; echo gmp_strval($sqrt3) . ", " . gmp_strval($sqrt3rem) . "\n"; // gmp_strval $a = gmp_init("0x41682179fbf5"); printf("Decimal: %s, 36-based: %s" . PHP_EOL, gmp_strval($a), gmp_strval($a, 36)); // gmp_sub $sub = gmp_sub("281474976710656", "4294967296"); // 2^48 - 2^32 echo gmp_strval($sub) . "\n"; // gmp_testbit $n = gmp_init("1000000"); var_dump(gmp_testbit($n, 1)); gmp_setbit($n, 1); var_dump(gmp_testbit($n, 1));
var_dump(gmp_strval($r[0])); var_dump(gmp_strval($r[1])); $r = gmp_sqrtrem(10); var_dump(gmp_strval($r[0])); var_dump(gmp_strval($r[1])); $r = gmp_sqrtrem(7); var_dump(gmp_strval($r[0])); var_dump(gmp_strval($r[1])); $r = gmp_sqrtrem(3); var_dump(gmp_strval($r[0])); var_dump(gmp_strval($r[1])); $r = gmp_sqrtrem(100000); var_dump(gmp_strval($r[0])); var_dump(gmp_strval($r[1])); $r = gmp_sqrtrem("1000000"); var_dump(gmp_strval($r[0])); var_dump(gmp_strval($r[1])); $r = gmp_sqrtrem("1000001"); var_dump(gmp_strval($r[0])); var_dump(gmp_strval($r[1])); $n = gmp_init(-1); $r = gmp_sqrtrem($n); var_dump(gmp_strval($r[0])); var_dump(gmp_strval($r[1])); $n = gmp_init(1000001); $r = gmp_sqrtrem($n); var_dump(gmp_strval($r[0])); var_dump(gmp_strval($r[1])); var_dump(gmp_sqrtrem(array())); var_dump(gmp_sqrtrem()); echo "Done\n";