| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
NumHask.Algebra.Metric
Description
Metric classes
Synopsis
- 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 #
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?).
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 # | |
| Normed Float Float # | |
| Normed Int Int # | |
| Normed Int8 Int8 # | |
| Normed Int16 Int16 # | |
| Normed Int32 Int32 # | |
| Normed Int64 Int64 # | |
| Normed Integer Integer # | |
| Normed Natural Natural # | |
| Normed Word Word # | |
| Normed Word8 Word8 # | |
| Normed Word16 Word16 # | |
| Normed Word32 Word32 # | |
| Normed Word64 Word64 # | |
| (Multiplicative a, ExpField a, Normed a a) => Normed (Complex a) a # | |
| (Multiplicative a, ExpField a, Normed a a) => Normed (Complex a) a # | |
| (Ord a, Integral a, Signed a, AdditiveInvertible a) => Normed (Ratio a) (Ratio a) # | |
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
Instances
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
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 # | |
| Epsilon Float # | |
| Epsilon Int # | |
| Epsilon Int8 # | |
| Epsilon Int16 # | |
| Epsilon Int32 # | |
| Epsilon Int64 # | |
| Epsilon Integer # | |
| Epsilon Word # | |
| Epsilon Word8 # | |
| Epsilon Word16 # | |
| Epsilon Word32 # | |
| Epsilon Word64 # | |
| (Epsilon a, AdditiveGroup a) => Epsilon (Complex a) # | |
| (Ord a, Signed a, Integral a, AdditiveGroup a) => Epsilon (Ratio a) # | |
| (Epsilon a, ExpField a, LowerBoundedField a, Ord a) => Epsilon (LogField a) # | |