Documentation

Calculate the integer cube root of an integer n,
that is the largest integer r such that r^3 <= n.
Note that this is not symmetric about 0, for example
integerCubeRoot (-2) = (-2) while integerCubeRoot 2 = 1.

Test whether a nonnegative integer is a cube.
Before integerCubeRoot is calculated, a few tests
of remainders modulo small primes weed out most non-cubes.
For testing many numbers, most of which aren't cubes,
this is much faster than let r = cubeRoot n in r*r*r == n.
The condition n >= 0 is not checked.