arithmoi-0.4.1.2: Efficient basic number-theoretic functions. Primes, powers, integer logarithms.

Copyright (c) 2011 Daniel Fischer MIT Daniel Fischer Provisional Non-portable (GHC extensions) None Haskell98

Math.NumberTheory.Powers.Cubes

Description

Functions dealing with cubes. Moderately efficient calculation of integer cube roots and testing for cubeness.

Synopsis

# Documentation

integerCubeRoot :: Integral a => a -> a Source

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`.

integerCubeRoot' :: Integral a => a -> a Source

Calculate the integer cube root of a nonnegative integer `n`, that is, the largest integer `r` such that `r^3 <= n`. The precondition `n >= 0` is not checked.

exactCubeRoot :: Integral a => a -> Maybe a Source

Returns `Nothing` if the argument is not a cube, `Just r` if `n == r^3`.

isCube :: Integral a => a -> Bool Source

Test whether an integer is a cube.

isCube' :: Integral a => a -> Bool Source

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.

isPossibleCube :: Integral a => a -> Bool Source

Test whether a nonnegative number is possibly a cube. Only about 0.08% of all numbers pass this test. The precondition `n >= 0` is not checked.