| Copyright | (c) Ashley Yakeley 2005 2006 2009 |
|---|---|
| License | BSD-style (see the file libraries/base/LICENSE) |
| Maintainer | Ashley Yakeley <ashley@semantic.org> |
| Stability | stable |
| Portability | portable |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Data.Fixed
Description
This module defines a "Fixed" type for fixed-precision arithmetic.
The parameter to Fixed is any type that's an instance of HasResolution.
HasResolution has a single method that gives the resolution of the Fixed
type.
This module also contains generalisations of div, mod, and divMod to
work with any Real instance.
Automatic conversion between different Fixed can be performed through
realToFrac, bear in mind that converting to a fixed with a smaller
resolution will truncate the number, losing information.
>>>realToFrac (0.123456 :: Pico) :: Milli0.123
Synopsis
- div' :: (Real a, Integral b) => a -> a -> b
- mod' :: Real a => a -> a -> a
- divMod' :: (Real a, Integral b) => a -> a -> (b, a)
- newtype Fixed (a :: k) = MkFixed Integer
- class HasResolution (a :: k) where
- resolution :: p a -> Integer
- showFixed :: forall {k} (a :: k). HasResolution a => Bool -> Fixed a -> String
- data E0
- type Uni = Fixed E0
- data E1
- type Deci = Fixed E1
- data E2
- type Centi = Fixed E2
- data E3
- type Milli = Fixed E3
- data E6
- type Micro = Fixed E6
- data E9
- type Nano = Fixed E9
- data E12
- type Pico = Fixed E12
Documentation
newtype Fixed (a :: k) Source #
The type parameter should be an instance of HasResolution.
Instances
| (Typeable k, Typeable a) => Data (Fixed a) Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Fixed a -> c (Fixed a) Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Fixed a) Source # toConstr :: Fixed a -> Constr Source # dataTypeOf :: Fixed a -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Fixed a)) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Fixed a)) Source # gmapT :: (forall b. Data b => b -> b) -> Fixed a -> Fixed a Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Fixed a -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Fixed a -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Fixed a -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Fixed a -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Fixed a -> m (Fixed a) Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Fixed a -> m (Fixed a) Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Fixed a -> m (Fixed a) Source # | |
| Enum (Fixed a) Source # | Recall that, for numeric types, succ (0.000 :: Milli) == 0.001 and likewise pred (0.000 :: Milli) == -0.001 In other words, succ (0.000000000000 :: Pico) == 0.000000000001 and similarly pred (0.000000000000 :: Pico) == -0.000000000001 This is worth bearing in mind when defining [1..10] :: [Pico] evaluates to However, this is not true. On the contrary, similarly to the above
implementations of [1.000000000000, 1.00000000001, 1.00000000002, ..., 10.000000000000] and contains Since: base-2.1 |
Defined in Data.Fixed Methods succ :: Fixed a -> Fixed a Source # pred :: Fixed a -> Fixed a Source # toEnum :: Int -> Fixed a Source # fromEnum :: Fixed a -> Int Source # enumFrom :: Fixed a -> [Fixed a] Source # enumFromThen :: Fixed a -> Fixed a -> [Fixed a] Source # enumFromTo :: Fixed a -> Fixed a -> [Fixed a] Source # enumFromThenTo :: Fixed a -> Fixed a -> Fixed a -> [Fixed a] Source # | |
| HasResolution a => Num (Fixed a) Source # | Multiplication is not associative or distributive:
Since: base-2.1 |
Defined in Data.Fixed | |
| HasResolution a => Read (Fixed a) Source # | Since: base-4.3.0.0 |
| HasResolution a => Fractional (Fixed a) Source # | Since: base-2.1 |
| HasResolution a => Real (Fixed a) Source # | Since: base-2.1 |
Defined in Data.Fixed Methods toRational :: Fixed a -> Rational Source # | |
| HasResolution a => RealFrac (Fixed a) Source # | Since: base-2.1 |
| HasResolution a => Show (Fixed a) Source # | Since: base-2.1 |
| Eq (Fixed a) Source # | Since: base-2.1 |
| Ord (Fixed a) Source # | Since: base-2.1 |
class HasResolution (a :: k) where Source #
Methods
resolution :: p a -> Integer Source #
Instances
| KnownNat n => HasResolution (n :: Nat) Source # | For example, |
Defined in Data.Fixed Methods resolution :: p n -> Integer Source # | |
| HasResolution E0 Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods resolution :: p E0 -> Integer Source # | |
| HasResolution E1 Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods resolution :: p E1 -> Integer Source # | |
| HasResolution E12 Source # | Since: base-2.1 |
Defined in Data.Fixed Methods resolution :: p E12 -> Integer Source # | |
| HasResolution E2 Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods resolution :: p E2 -> Integer Source # | |
| HasResolution E3 Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods resolution :: p E3 -> Integer Source # | |
| HasResolution E6 Source # | Since: base-2.1 |
Defined in Data.Fixed Methods resolution :: p E6 -> Integer Source # | |
| HasResolution E9 Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods resolution :: p E9 -> Integer Source # | |
showFixed :: forall {k} (a :: k). HasResolution a => Bool -> Fixed a -> String Source #
First arg is whether to chop off trailing zeros
Instances
| HasResolution E0 Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods resolution :: p E0 -> Integer Source # | |
Instances
| HasResolution E1 Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods resolution :: p E1 -> Integer Source # | |
Instances
| HasResolution E2 Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods resolution :: p E2 -> Integer Source # | |
Instances
| HasResolution E3 Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods resolution :: p E3 -> Integer Source # | |
Instances
| HasResolution E6 Source # | Since: base-2.1 |
Defined in Data.Fixed Methods resolution :: p E6 -> Integer Source # | |
Instances
| HasResolution E9 Source # | Since: base-4.1.0.0 |
Defined in Data.Fixed Methods resolution :: p E9 -> Integer Source # | |
Instances
| HasResolution E12 Source # | Since: base-2.1 |
Defined in Data.Fixed Methods resolution :: p E12 -> Integer Source # | |