Safe Haskell  None 

AUTHOR
 Dr. Alistair Ward
DESCRIPTION
 Exports functions related to perfect powers.
 maybeSquareNumber :: Integral i => i > Maybe i
 isPerfectPower :: Integral i => i > Bool
Functions
maybeSquareNumber :: Integral i => i > Maybe iSource
 Returns
(Just . sqrt)
if the specified integer is a square number (AKA perfect square).  http://en.wikipedia.org/wiki/Square_number.
 http://mathworld.wolfram.com/SquareNumber.html.

(Math.Power.square . sqrt)
is expensive, so the modulus of the operand is tested first, in an attempt to prove it isn't a perfect square. The set of tests, and the valid moduli within each test, are ordered to maximize the rate of failuredetection.
Predicates
isPerfectPower :: Integral i => i > BoolSource
 An integer
(> 1)
which can be expressed as an integral power(> 1)
of a smaller natural number.  CAVEAT: zero and one are normally excluded from this set.
 http://en.wikipedia.org/wiki/Perfect_power.
 http://mathworld.wolfram.com/PerfectPower.html.
 A generalisation of the concept of perfect squares, in which only the exponent '2' is significant.