numhask-0.2.3.1: numeric classes

Safe HaskellNone
LanguageHaskell2010

NumHask.Algebra.Metric

Description

Metric classes

Synopsis

Documentation

class MultiplicativeUnital a => Signed a where #

signum from base is not an operator replicated in numhask, being such a very silly name, and preferred is the much more obvious sign. Compare with Norm and Banach where there is a change in codomain

abs a * sign a == a

Generalising this class tends towards size and direction (abs is the size on the one-dim number line of a vector with its tail at zero, and sign is the direction, right?).

Minimal complete definition

sign, abs

Methods

sign :: a -> a #

abs :: a -> a #

Instances
Signed Double # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Double -> Double #

abs :: Double -> Double #

Signed Float # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Float -> Float #

abs :: Float -> Float #

Signed Int # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Int -> Int #

abs :: Int -> Int #

Signed Int8 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Int8 -> Int8 #

abs :: Int8 -> Int8 #

Signed Int16 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Int16 -> Int16 #

abs :: Int16 -> Int16 #

Signed Int32 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Int32 -> Int32 #

abs :: Int32 -> Int32 #

Signed Int64 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Int64 -> Int64 #

abs :: Int64 -> Int64 #

Signed Integer # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Integer -> Integer #

abs :: Integer -> Integer #

Signed Natural # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Natural -> Natural #

abs :: Natural -> Natural #

Signed Word # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Word -> Word #

abs :: Word -> Word #

Signed Word8 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Word8 -> Word8 #

abs :: Word8 -> Word8 #

Signed Word16 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Word16 -> Word16 #

abs :: Word16 -> Word16 #

Signed Word32 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Word32 -> Word32 #

abs :: Word32 -> Word32 #

Signed Word64 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

sign :: Word64 -> Word64 #

abs :: Word64 -> Word64 #

(Ord a, Signed a, Integral a, AdditiveInvertible a) => Signed (Ratio a) # 
Instance details

Defined in NumHask.Algebra.Rational

Methods

sign :: Ratio a -> Ratio a #

abs :: Ratio a -> Ratio a #

class Normed a b where #

L1 and L2 norms are provided for potential speedups, as well as the generalized p-norm.

for p >= 1

normLp p a >= zero
normLp p zero == zero

Note that the Normed codomain can be different to the domain.

Minimal complete definition

normL1, normL2, normLp

Methods

normL1 :: a -> b #

normL2 :: a -> b #

normLp :: b -> a -> b #

Instances
Normed Double Double # 
Instance details

Defined in NumHask.Algebra.Metric

Normed Float Float # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

normL1 :: Float -> Float #

normL2 :: Float -> Float #

normLp :: Float -> Float -> Float #

Normed Int Int # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

normL1 :: Int -> Int #

normL2 :: Int -> Int #

normLp :: Int -> Int -> Int #

Normed Int8 Int8 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

normL1 :: Int8 -> Int8 #

normL2 :: Int8 -> Int8 #

normLp :: Int8 -> Int8 -> Int8 #

Normed Int16 Int16 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

normL1 :: Int16 -> Int16 #

normL2 :: Int16 -> Int16 #

normLp :: Int16 -> Int16 -> Int16 #

Normed Int32 Int32 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

normL1 :: Int32 -> Int32 #

normL2 :: Int32 -> Int32 #

normLp :: Int32 -> Int32 -> Int32 #

Normed Int64 Int64 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

normL1 :: Int64 -> Int64 #

normL2 :: Int64 -> Int64 #

normLp :: Int64 -> Int64 -> Int64 #

Normed Integer Integer # 
Instance details

Defined in NumHask.Algebra.Metric

Normed Natural Natural # 
Instance details

Defined in NumHask.Algebra.Metric

Normed Word Word # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

normL1 :: Word -> Word #

normL2 :: Word -> Word #

normLp :: Word -> Word -> Word #

Normed Word8 Word8 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

normL1 :: Word8 -> Word8 #

normL2 :: Word8 -> Word8 #

normLp :: Word8 -> Word8 -> Word8 #

Normed Word16 Word16 # 
Instance details

Defined in NumHask.Algebra.Metric

Normed Word32 Word32 # 
Instance details

Defined in NumHask.Algebra.Metric

Normed Word64 Word64 # 
Instance details

Defined in NumHask.Algebra.Metric

(Multiplicative a, ExpField a, Normed a a) => Normed (Complex a) a # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

normL1 :: Complex a -> a #

normL2 :: Complex a -> a #

normLp :: a -> Complex a -> a #

(Multiplicative a, ExpField a, Normed a a) => Normed (Complex a) a # 
Instance details

Defined in NumHask.Data.Complex

Methods

normL1 :: Complex a -> a #

normL2 :: Complex a -> a #

normLp :: a -> Complex a -> a #

(Ord a, Integral a, Signed a, AdditiveInvertible a) => Normed (Ratio a) (Ratio a) # 
Instance details

Defined in NumHask.Algebra.Rational

Methods

normL1 :: Ratio a -> Ratio a #

normL2 :: Ratio a -> Ratio a #

normLp :: Ratio a -> Ratio a -> Ratio a #

class Metric a b where #

distance between numbers using L1, L2 or Lp-norms

distanceL2 a b >= zero
distanceL2 a a == zero
\a b c -> distanceL2 a c + distanceL2 b c - distanceL2 a b >= zero &&
          distanceL2 a b + distanceL2 b c - distanceL2 a c >= zero &&
          distanceL2 a b + distanceL2 a c - distanceL2 b c >= zero &&

Minimal complete definition

distanceL1, distanceL2, distanceLp

Methods

distanceL1 :: a -> a -> b #

distanceL2 :: a -> a -> b #

distanceLp :: b -> a -> a -> b #

Instances
Metric Double Double # 
Instance details

Defined in NumHask.Algebra.Metric

Metric Float Float # 
Instance details

Defined in NumHask.Algebra.Metric

Metric Int Int # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

distanceL1 :: Int -> Int -> Int #

distanceL2 :: Int -> Int -> Int #

distanceLp :: Int -> Int -> Int -> Int #

Metric Int8 Int8 # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

distanceL1 :: Int8 -> Int8 -> Int8 #

distanceL2 :: Int8 -> Int8 -> Int8 #

distanceLp :: Int8 -> Int8 -> Int8 -> Int8 #

Metric Int16 Int16 # 
Instance details

Defined in NumHask.Algebra.Metric

Metric Int32 Int32 # 
Instance details

Defined in NumHask.Algebra.Metric

Metric Int64 Int64 # 
Instance details

Defined in NumHask.Algebra.Metric

Metric Integer Integer # 
Instance details

Defined in NumHask.Algebra.Metric

Metric Natural Natural # 
Instance details

Defined in NumHask.Algebra.Metric

Metric Word Word # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

distanceL1 :: Word -> Word -> Word #

distanceL2 :: Word -> Word -> Word #

distanceLp :: Word -> Word -> Word -> Word #

Metric Word8 Word8 # 
Instance details

Defined in NumHask.Algebra.Metric

Metric Word16 Word16 # 
Instance details

Defined in NumHask.Algebra.Metric

Metric Word32 Word32 # 
Instance details

Defined in NumHask.Algebra.Metric

Metric Word64 Word64 # 
Instance details

Defined in NumHask.Algebra.Metric

(Multiplicative a, ExpField a, Normed a a) => Metric (Complex a) a # 
Instance details

Defined in NumHask.Algebra.Metric

Methods

distanceL1 :: Complex a -> Complex a -> a #

distanceL2 :: Complex a -> Complex a -> a #

distanceLp :: a -> Complex a -> Complex a -> a #

(Multiplicative a, ExpField a, Normed a a) => Metric (Complex a) a # 
Instance details

Defined in NumHask.Data.Complex

Methods

distanceL1 :: Complex a -> Complex a -> a #

distanceL2 :: Complex a -> Complex a -> a #

distanceLp :: a -> Complex a -> Complex a -> a #

(Ord a, Integral a, Signed a, AdditiveGroup a) => Metric (Ratio a) (Ratio a) # 
Instance details

Defined in NumHask.Algebra.Rational

Methods

distanceL1 :: Ratio a -> Ratio a -> Ratio a #

distanceL2 :: Ratio a -> Ratio a -> Ratio a #

distanceLp :: Ratio a -> Ratio a -> Ratio a -> Ratio a #

class (Eq a, AdditiveUnital a) => Epsilon a where #

todo: This should probably be split off into some sort of alternative Equality logic, but to what end?

Methods

nearZero :: a -> Bool #

aboutEqual :: a -> a -> Bool #

aboutEqual :: AdditiveGroup a => a -> a -> Bool #

positive :: Signed a => a -> Bool #

veryPositive :: Signed a => a -> Bool #

veryNegative :: Signed a => a -> Bool #

Instances
Epsilon Double # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Float # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Int # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Int8 # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Int16 # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Int32 # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Int64 # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Integer # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Word # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Word8 # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Word16 # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Word32 # 
Instance details

Defined in NumHask.Algebra.Metric

Epsilon Word64 # 
Instance details

Defined in NumHask.Algebra.Metric

(Epsilon a, AdditiveGroup a) => Epsilon (Complex a) # 
Instance details

Defined in NumHask.Algebra.Metric

(Ord a, Signed a, Integral a, AdditiveGroup a) => Epsilon (Ratio a) # 
Instance details

Defined in NumHask.Algebra.Rational

(Epsilon a, ExpField a, LowerBoundedField a, Ord a) => Epsilon (LogField a) # 
Instance details

Defined in NumHask.Data.LogField

(≈) :: Epsilon a => a -> a -> Bool infixl 4 #

todo: is utf perfectly acceptable these days?