numhask-0.6.0: numeric classes

Safe HaskellNone
LanguageHaskell2010

NumHask.Algebra.Abstract.Field

Description

Field classes

Synopsis

Documentation

class (Distributive a, Subtractive a, Divisive a) => Field a Source #

A Field is a set on which addition, subtraction, multiplication, and division are defined. It is also assumed that multiplication is distributive over addition.

A summary of the rules thus inherited from super-classes of Field

zero + a == a
a + zero == a
(a + b) + c == a + (b + c)
a + b == b + a
a - a = zero
negate a = zero - a
negate a + a = zero
a + negate a = zero
one * a == a
a * one == a
(a * b) * c == a * (b * c)
a * (b + c) == a * b + a * c
(a + b) * c == a * c + b * c
a * zero == zero
zero * a == zero
a * b == b * a
a / a = one
recip a = one / a
recip a * a = one
a * recip a = one
Instances
Field Double Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

Field Float Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

(Field a, Subtractive a) => Field (Complex a) Source # 
Instance details

Defined in NumHask.Data.Complex

GCDConstraints a => Field (Ratio a) Source # 
Instance details

Defined in NumHask.Data.Rational

Field a => Field (Pair a) Source # 
Instance details

Defined in NumHask.Data.Pair

(Ord a, ExpField a, LowerBoundedField a, UpperBoundedField a) => Field (LogField a) Source # 
Instance details

Defined in NumHask.Data.LogField

(Subtractive a, Divisive a) => Field (Wrapped a) Source # 
Instance details

Defined in NumHask.Data.Wrapped

(Ord a, Subtractive a, Divisive a) => Field (Positive a) Source # 
Instance details

Defined in NumHask.Data.Positive

Field b => Field (a -> b) Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

class Field a => ExpField a where Source #

A hyperbolic field class

sqrt . (**2) == identity
log . exp == identity
for +ive b, a != 0,1: a ** logBase a b ≈ b

Minimal complete definition

exp, log

Methods

exp :: a -> a Source #

log :: a -> a Source #

logBase :: a -> a -> a Source #

(**) :: a -> a -> a Source #

sqrt :: a -> a Source #

Instances
ExpField Double Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

ExpField Float Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

(Ord a, TrigField a, ExpField a, Subtractive a) => ExpField (Complex a) Source # 
Instance details

Defined in NumHask.Data.Complex

ExpField a => ExpField (Pair a) Source # 
Instance details

Defined in NumHask.Data.Pair

Methods

exp :: Pair a -> Pair a Source #

log :: Pair a -> Pair a Source #

logBase :: Pair a -> Pair a -> Pair a Source #

(**) :: Pair a -> Pair a -> Pair a Source #

sqrt :: Pair a -> Pair a Source #

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

Defined in NumHask.Data.LogField

ExpField a => ExpField (Wrapped a) Source # 
Instance details

Defined in NumHask.Data.Wrapped

(ExpField a, Ord a) => ExpField (Positive a) Source # 
Instance details

Defined in NumHask.Data.Positive

ExpField b => ExpField (a -> b) Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

Methods

exp :: (a -> b) -> a -> b Source #

log :: (a -> b) -> a -> b Source #

logBase :: (a -> b) -> (a -> b) -> a -> b Source #

(**) :: (a -> b) -> (a -> b) -> a -> b Source #

sqrt :: (a -> b) -> a -> b Source #

class (Field a, Subtractive a, Multiplicative b, Additive b) => QuotientField a b where Source #

Minimal complete definition

properFraction

Methods

properFraction :: a -> (b, a) Source #

round :: a -> b Source #

round :: (Ord a, Ord b, Subtractive b, Integral b) => a -> b Source #

ceiling :: a -> b Source #

ceiling :: Ord a => a -> b Source #

floor :: a -> b Source #

floor :: (Ord a, Subtractive b) => a -> b Source #

truncate :: a -> b Source #

truncate :: Ord a => a -> b Source #

Instances
QuotientField Double Integer Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

QuotientField Float Integer Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

(GCDConstraints a, GCDConstraints b, ToInteger a, Field a, FromIntegral b a) => QuotientField (Ratio a) b Source # 
Instance details

Defined in NumHask.Data.Rational

Methods

properFraction :: Ratio a -> (b, Ratio a) Source #

round :: Ratio a -> b Source #

ceiling :: Ratio a -> b Source #

floor :: Ratio a -> b Source #

truncate :: Ratio a -> b Source #

(Ord a, QuotientField a Integer) => QuotientField (Wrapped a) (Wrapped Integer) Source # 
Instance details

Defined in NumHask.Data.Wrapped

(Ord a, QuotientField a Integer) => QuotientField (Positive a) (Positive Integer) Source # 
Instance details

Defined in NumHask.Data.Positive

QuotientField b c => QuotientField (a -> b) (a -> c) Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

Methods

properFraction :: (a -> b) -> (a -> c, a -> b) Source #

round :: (a -> b) -> a -> c Source #

ceiling :: (a -> b) -> a -> c Source #

floor :: (a -> b) -> a -> c Source #

truncate :: (a -> b) -> a -> c Source #

class Field a => UpperBoundedField a where Source #

A bounded field includes the concepts of infinity and NaN, thus moving away from error throwing.

one / zero + infinity == infinity
infinity + a == infinity
zero / zero != nan

Note the tricky law that, although nan is assigned to zero/zero, they are never-the-less not equal. A committee decided this.

Minimal complete definition

Nothing

Methods

infinity :: a Source #

nan :: a Source #

Instances
UpperBoundedField Double Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

UpperBoundedField Float Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

(UpperBoundedField a, IntegralDomain a, Subtractive a) => UpperBoundedField (Complex a) Source # 
Instance details

Defined in NumHask.Data.Complex

(GCDConstraints a, Distributive a, IntegralDomain a) => UpperBoundedField (Ratio a) Source # 
Instance details

Defined in NumHask.Data.Rational

UpperBoundedField a => UpperBoundedField (Pair a) Source # 
Instance details

Defined in NumHask.Data.Pair

Methods

infinity :: Pair a Source #

nan :: Pair a Source #

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

Defined in NumHask.Data.LogField

UpperBoundedField a => UpperBoundedField (Wrapped a) Source # 
Instance details

Defined in NumHask.Data.Wrapped

(Ord a, UpperBoundedField a) => UpperBoundedField (Positive a) Source # 
Instance details

Defined in NumHask.Data.Positive

UpperBoundedField b => UpperBoundedField (a -> b) Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

Methods

infinity :: a -> b Source #

nan :: a -> b Source #

class (Subtractive a, Field a) => LowerBoundedField a where Source #

Minimal complete definition

Nothing

Methods

negInfinity :: a Source #

Instances
LowerBoundedField Double Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

LowerBoundedField Float Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

LowerBoundedField a => LowerBoundedField (Complex a) Source # 
Instance details

Defined in NumHask.Data.Complex

(GCDConstraints a, Field a) => LowerBoundedField (Ratio a) Source # 
Instance details

Defined in NumHask.Data.Rational

LowerBoundedField a => LowerBoundedField (Pair a) Source # 
Instance details

Defined in NumHask.Data.Pair

Methods

negInfinity :: Pair a Source #

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

Defined in NumHask.Data.LogField

LowerBoundedField a => LowerBoundedField (Wrapped a) Source # 
Instance details

Defined in NumHask.Data.Wrapped

LowerBoundedField b => LowerBoundedField (a -> b) Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

Methods

negInfinity :: a -> b Source #

class Field a => TrigField a where Source #

Trigonometric Field

Minimal complete definition

pi, sin, cos, asin, acos, atan, sinh, cosh, asinh, acosh, atanh

Methods

pi :: a Source #

sin :: a -> a Source #

cos :: a -> a Source #

tan :: a -> a Source #

asin :: a -> a Source #

acos :: a -> a Source #

atan :: a -> a Source #

sinh :: a -> a Source #

cosh :: a -> a Source #

tanh :: a -> a Source #

asinh :: a -> a Source #

acosh :: a -> a Source #

atanh :: a -> a Source #

Instances
TrigField Double Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

TrigField Float Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

TrigField a => TrigField (Wrapped a) Source # 
Instance details

Defined in NumHask.Data.Wrapped

(TrigField a, Ord a) => TrigField (Positive a) Source # 
Instance details

Defined in NumHask.Data.Positive

TrigField b => TrigField (a -> b) Source # 
Instance details

Defined in NumHask.Algebra.Abstract.Field

Methods

pi :: a -> b Source #

sin :: (a -> b) -> a -> b Source #

cos :: (a -> b) -> a -> b Source #

tan :: (a -> b) -> a -> b Source #

asin :: (a -> b) -> a -> b Source #

acos :: (a -> b) -> a -> b Source #

atan :: (a -> b) -> a -> b Source #

sinh :: (a -> b) -> a -> b Source #

cosh :: (a -> b) -> a -> b Source #

tanh :: (a -> b) -> a -> b Source #

asinh :: (a -> b) -> a -> b Source #

acosh :: (a -> b) -> a -> b Source #

atanh :: (a -> b) -> a -> b Source #

half :: Field a => a Source #

A half is a Field because it requires addition, multiplication and division to be computed.