Safe Haskell | None |
---|---|
Language | Haskell2010 |
NumHask.Algebra.Metric
Description
Metric classes
- class MultiplicativeUnital a => Signed a where
- class Normed a b where
- class Metric a b where
- class (Eq a, AdditiveUnital a) => Epsilon a where
- (≈) :: Epsilon a => a -> a -> Bool
Documentation
class MultiplicativeUnital a => Signed a where Source #
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?).
Instances
Signed Double Source # | |
Signed Float Source # | |
Signed Int Source # | |
Signed Int8 Source # | |
Signed Int16 Source # | |
Signed Int32 Source # | |
Signed Int64 Source # | |
Signed Integer Source # | |
Signed Natural Source # | |
Signed Word Source # | |
Signed Word8 Source # | |
Signed Word16 Source # | |
Signed Word32 Source # | |
Signed Word64 Source # | |
(Ord a, Signed a, Integral a, AdditiveInvertible a) => Signed (Ratio a) Source # | |
class Normed a b where Source #
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.
Instances
Normed Double Double Source # | |
Normed Float Float Source # | |
Normed Int Int Source # | |
Normed Int8 Int8 Source # | |
Normed Int16 Int16 Source # | |
Normed Int32 Int32 Source # | |
Normed Int64 Int64 Source # | |
Normed Integer Integer Source # | |
Normed Natural Natural Source # | |
Normed Word Word Source # | |
Normed Word8 Word8 Source # | |
Normed Word16 Word16 Source # | |
Normed Word32 Word32 Source # | |
Normed Word64 Word64 Source # | |
(Multiplicative a, ExpField a, Normed a a) => Normed (Complex a) a Source # | |
(Multiplicative a, ExpField a, Normed a a) => Normed (Complex a) a Source # | |
(Ord a, Integral a, Signed a, AdditiveInvertible a) => Normed (Ratio a) (Ratio a) Source # | |
class Metric a b where Source #
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
Methods
distanceL1 :: a -> a -> b Source #
distanceL2 :: a -> a -> b Source #
distanceLp :: b -> a -> a -> b Source #
Instances
Metric Double Double Source # | |
Metric Float Float Source # | |
Metric Int Int Source # | |
Metric Int8 Int8 Source # | |
Metric Int16 Int16 Source # | |
Metric Int32 Int32 Source # | |
Metric Int64 Int64 Source # | |
Metric Integer Integer Source # | |
Metric Natural Natural Source # | |
Metric Word Word Source # | |
Metric Word8 Word8 Source # | |
Metric Word16 Word16 Source # | |
Metric Word32 Word32 Source # | |
Metric Word64 Word64 Source # | |
(Multiplicative a, ExpField a, Normed a a) => Metric (Complex a) a Source # | |
(Multiplicative a, ExpField a, Normed a a) => Metric (Complex a) a Source # | |
(Ord a, Integral a, Signed a, AdditiveGroup a) => Metric (Ratio a) (Ratio a) Source # | |
class (Eq a, AdditiveUnital a) => Epsilon a where Source #
todo: This should probably be split off into some sort of alternative Equality logic, but to what end?
Methods
nearZero :: a -> Bool Source #
aboutEqual :: a -> a -> Bool Source #
aboutEqual :: AdditiveGroup a => a -> a -> Bool Source #
positive :: Signed a => a -> Bool Source #
veryPositive :: Signed a => a -> Bool Source #
veryNegative :: Signed a => a -> Bool Source #
Instances
Epsilon Double Source # | |
Epsilon Float Source # | |
Epsilon Int Source # | |
Epsilon Int8 Source # | |
Epsilon Int16 Source # | |
Epsilon Int32 Source # | |
Epsilon Int64 Source # | |
Epsilon Integer Source # | |
Epsilon Word Source # | |
Epsilon Word8 Source # | |
Epsilon Word16 Source # | |
Epsilon Word32 Source # | |
Epsilon Word64 Source # | |
(Epsilon a, AdditiveGroup a) => Epsilon (Complex a) Source # | |
(Ord a, Signed a, Integral a, AdditiveGroup a) => Epsilon (Ratio a) Source # | |
(Epsilon a, ExpField a, LowerBoundedField a, Ord a) => Epsilon (LogField a) Source # | |