| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Num.Pi
Synopsis
- data ExactPi
- = Exact Integer Rational
- | Approximate (forall a. Floating a => a)
- approximateValue :: Floating a => ExactPi -> a
- isZero :: ExactPi -> Bool
- isExact :: ExactPi -> Bool
- isExactZero :: ExactPi -> Bool
- isExactOne :: ExactPi -> Bool
- areExactlyEqual :: ExactPi -> ExactPi -> Bool
- isExactInteger :: ExactPi -> Bool
- toExactInteger :: ExactPi -> Maybe Integer
- isExactRational :: ExactPi -> Bool
- toExactRational :: ExactPi -> Maybe Rational
- rationalApproximations :: ExactPi -> [Rational]
Documentation
Represents an exact or approximate real value. The exactly representable values are rational multiples of an integer power of pi.
Constructors
| Exact Integer Rational |
|
| Approximate (forall a. Floating a => a) | An approximate value. This representation was chosen because it allows conversion to floating types using their native definition of |
Instances
| Floating ExactPi | |
| Fractional ExactPi | |
| Num ExactPi | |
| Show ExactPi | |
| Semigroup ExactPi | The multiplicative semigroup over |
| Monoid ExactPi | The multiplicative monoid over |
approximateValue :: Floating a => ExactPi -> a #
Identifies whether an ExactPi is an exact or approximate representation of zero.
isExactZero :: ExactPi -> Bool #
Identifies whether an ExactPi is an exact representation of zero.
isExactOne :: ExactPi -> Bool #
Identifies whether an ExactPi is an exact representation of one.
areExactlyEqual :: ExactPi -> ExactPi -> Bool #
Identifies whether two ExactPi values are exactly equal.
isExactInteger :: ExactPi -> Bool #
Identifies whether an ExactPi is an exact representation of an integer.
isExactRational :: ExactPi -> Bool #
Identifies whether an ExactPi is an exact representation of a rational.
rationalApproximations :: ExactPi -> [Rational] #
Converts an ExactPi to a list of increasingly accurate rational approximations, on alternating
sides of the actual value. Note that Approximate values are converted using the Real instance
for Double into a singleton list. Note that exact rationals are also converted into a singleton list.
Implementation based on work by Anders Kaseorg shared at http://qr.ae/RbXl8M.