SciBaseTypes-0.0.0.1: Base types and classes for statistics, sciences and humanities

Safe HaskellNone
LanguageHaskell2010

Numeric.Discretized

Description

Discretized floating point numbers, where the scaling factor is kept as two phantom types denoting the rational number used for scaling.

Synopsis

Documentation

newtype Discretized (u :: Nat) (l :: Nat) Source #

A discretized value takes a floating point number n and produces n * fromIntegral l / fromIntegral u where both u and l are given as TypeLits. I.e. a scaling factor of (u l) = (1 100) does all calculations in subdivisions of 100.

The main use of a Discretized value is to enable calculations with Int while somewhat pretending to use floating point values.

Be careful with certain operations like (*) as they will easily cause the numbers to arbitrarily wrong. (+) and (-) are fine, however.

NOTE Export and import of data is in the form of floating points, which can lead to additional loss of precision if one is careless!

TODO fast Show methods required!

TODO blaze stuff?

TODO We might want to discretize LogDomain style values. This requires some thought on in which direction to wrap. Maybe, we want to log-domain Discretized values, which probably just works.

Constructors

Discretized 

Fields

Instances
Enum (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

Eq (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

Methods

(==) :: Discretized u l -> Discretized u l -> Bool #

(/=) :: Discretized u l -> Discretized u l -> Bool #

(KnownNat u, KnownNat l) => Fractional (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

(Enum (Discretized u l), KnownNat u, KnownNat l) => Integral (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

(KnownNat u, KnownNat l) => Num (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

Ord (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

Methods

compare :: Discretized u l -> Discretized u l -> Ordering #

(<) :: Discretized u l -> Discretized u l -> Bool #

(<=) :: Discretized u l -> Discretized u l -> Bool #

(>) :: Discretized u l -> Discretized u l -> Bool #

(>=) :: Discretized u l -> Discretized u l -> Bool #

max :: Discretized u l -> Discretized u l -> Discretized u l #

min :: Discretized u l -> Discretized u l -> Discretized u l #

Read (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

(KnownNat u, KnownNat l) => Real (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

Methods

toRational :: Discretized u l -> Rational #

Show (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

Methods

showsPrec :: Int -> Discretized u l -> ShowS #

show :: Discretized u l -> String #

showList :: [Discretized u l] -> ShowS #

Generic (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

Associated Types

type Rep (Discretized u l) :: Type -> Type #

Methods

from :: Discretized u l -> Rep (Discretized u l) x #

to :: Rep (Discretized u l) x -> Discretized u l #

type Rep (Discretized u l) Source # 
Instance details

Defined in Numeric.Discretized

type Rep (Discretized u l) = D1 (MetaData "Discretized" "Numeric.Discretized" "SciBaseTypes-0.0.0.1-MnwemAw82XA41vuhv62aH" True) (C1 (MetaCons "Discretized" PrefixI True) (S1 (MetaSel (Just "getDiscretized") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))

discretize :: forall a u l. (Real a, KnownNat u, KnownNat l) => a -> Discretized u l Source #

Discretizes any Real a into the Discretized value. This conversion is lossy!