numeric-prelude-0.0.2: An experimental alternative hierarchy of numeric type classesSource codeContentsIndex
NumericPrelude
Synopsis
(+) :: C a => a -> a -> a
(-) :: C a => a -> a -> a
negate :: C a => a -> a
zero :: C a => a
subtract :: C a => a -> a -> a
sum :: C a => [a] -> a
sum1 :: C a => [a] -> a
isZero :: C a => a -> Bool
(*) :: C a => a -> a -> a
one :: C a => a
fromInteger :: C a => Integer -> a
(^) :: C a => a -> Integer -> a
ringPower :: (C a, C b) => b -> a -> a
sqr :: C a => a -> a
product :: C a => [a] -> a
product1 :: C a => [a] -> a
div :: C a => a -> a -> a
mod :: C a => a -> a -> a
divMod :: C a => a -> a -> (a, a)
divides :: (C a, C a) => a -> a -> Bool
even :: (C a, C a) => a -> Bool
odd :: (C a, C a) => a -> Bool
(/) :: C a => a -> a -> a
recip :: C a => a -> a
fromRational' :: C a => Rational -> a
(^-) :: C a => a -> Integer -> a
fieldPower :: (C a, C b) => b -> a -> a
fromRational :: C a => Rational -> a
(^/) :: C a => a -> Rational -> a
sqrt :: C a => a -> a
pi :: C a => a
exp :: C a => a -> a
log :: C a => a -> a
logBase :: C a => a -> a -> a
(**) :: C a => a -> a -> a
sin :: C a => a -> a
cos :: C a => a -> a
tan :: C a => a -> a
asin :: C a => a -> a
acos :: C a => a -> a
atan :: C a => a -> a
sinh :: C a => a -> a
cosh :: C a => a -> a
tanh :: C a => a -> a
asinh :: C a => a -> a
acosh :: C a => a -> a
atanh :: C a => a -> a
abs :: C a => a -> a
signum :: C a => a -> a
quot :: C a => a -> a -> a
rem :: C a => a -> a -> a
quotRem :: C a => a -> a -> (a, a)
splitFraction :: (C a, C b) => a -> (b, a)
fraction :: C a => a -> a
truncate :: (C a, C b) => a -> b
round :: (C a, C b) => a -> b
ceiling :: (C a, C b) => a -> b
floor :: (C a, C b) => a -> b
approxRational :: (C a, C a) => a -> a -> Rational
atan2 :: C a => a -> a -> a
toRational :: C a => a -> Rational
toInteger :: C a => a -> Integer
fromIntegral :: (C a, C b) => a -> b
reduceRepeated :: (a -> a -> a) -> a -> a -> Integer -> a
isUnit :: C a => a -> Bool
stdAssociate :: C a => a -> a
stdUnit :: C a => a -> a
stdUnitInv :: C a => a -> a
extendedGCD :: C a => a -> a -> (a, (a, a))
gcd :: C a => a -> a -> a
lcm :: C a => a -> a -> a
euclid :: (C a, C a) => (a -> a -> a) -> a -> a -> a
extendedEuclid :: (C a, C a) => (a -> a -> (a, a)) -> a -> a -> (a, (a, a))
type Rational = T Integer
(%) :: C a => a -> a -> T a
numerator :: T a -> a
denominator :: T a -> a
data Integer
data Int
data Float
data Double
(*>) :: C a b => a -> b -> b
Documentation
(+) :: C a => a -> a -> aSource
add and subtract elements
(-) :: C a => a -> a -> aSource
negate :: C a => a -> aSource
inverse with respect to +
zero :: C a => aSource
zero element of the vector space
subtract :: C a => a -> a -> aSource
subtract is (-) with swapped operand order. This is the operand order which will be needed in most cases of partial application.
sum :: C a => [a] -> aSource
Sum up all elements of a list. An empty list yields zero.
sum1 :: C a => [a] -> aSource
Sum up all elements of a non-empty list. This avoids including a zero which is useful for types where no universal zero is available.
isZero :: C a => a -> BoolSource
(*) :: C a => a -> a -> aSource
one :: C a => aSource
fromInteger :: C a => Integer -> aSource
(^) :: C a => a -> Integer -> aSource

The exponent has fixed type Integer in order to avoid an arbitrarily limitted range of exponents, but to reduce the need for the compiler to guess the type (default type). In practice the exponent is most oftenly fixed, and is most oftenly 2. Fixed exponents can be optimized away and thus the expensive computation of Integers doesn't matter. The previous solution used a Algebra.ToInteger.C constrained type and the exponent was converted to Integer before computation. So the current solution is not less efficient.

A variant of ^ with more flexibility is provided by Algebra.Core.ringPower.

ringPower :: (C a, C b) => b -> a -> aSource

A prefix function of '(Algebra.Ring.^)' with a parameter order that fits the needs of partial application and function composition. It has generalised exponent.

See: Argument order of expNat on http://www.haskell.org/pipermail/haskell-cafe/2006-September/018022.html

sqr :: C a => a -> aSource
product :: C a => [a] -> aSource
product1 :: C a => [a] -> aSource
div :: C a => a -> a -> aSource
mod :: C a => a -> a -> aSource
divMod :: C a => a -> a -> (a, a)Source
divides :: (C a, C a) => a -> a -> BoolSource
even :: (C a, C a) => a -> BoolSource
odd :: (C a, C a) => a -> BoolSource
(/) :: C a => a -> a -> aSource
recip :: C a => a -> aSource
fromRational' :: C a => Rational -> aSource
(^-) :: C a => a -> Integer -> aSource
fieldPower :: (C a, C b) => b -> a -> aSource
A prefix function of '(Algebra.Field.^-)'. It has a generalised exponent.
fromRational :: C a => Rational -> aSource
Needed to work around shortcomings in GHC.
(^/) :: C a => a -> Rational -> aSource
sqrt :: C a => a -> aSource
pi :: C a => aSource
exp :: C a => a -> aSource
log :: C a => a -> aSource
logBase :: C a => a -> a -> aSource
(**) :: C a => a -> a -> aSource
sin :: C a => a -> aSource
cos :: C a => a -> aSource
tan :: C a => a -> aSource
asin :: C a => a -> aSource
acos :: C a => a -> aSource
atan :: C a => a -> aSource
sinh :: C a => a -> aSource
cosh :: C a => a -> aSource
tanh :: C a => a -> aSource
asinh :: C a => a -> aSource
acosh :: C a => a -> aSource
atanh :: C a => a -> aSource
abs :: C a => a -> aSource
signum :: C a => a -> aSource
quot :: C a => a -> a -> aSource
rem :: C a => a -> a -> aSource
quotRem :: C a => a -> a -> (a, a)Source
splitFraction :: (C a, C b) => a -> (b, a)Source
fraction :: C a => a -> aSource
truncate :: (C a, C b) => a -> bSource
round :: (C a, C b) => a -> bSource
ceiling :: (C a, C b) => a -> bSource
floor :: (C a, C b) => a -> bSource
approxRational :: (C a, C a) => a -> a -> RationalSource
TODO: Should be moved to a continued fraction module.
atan2 :: C a => a -> a -> aSource
toRational :: C a => a -> RationalSource
Lossless conversion from any representation of a rational to Rational
toInteger :: C a => a -> IntegerSource
fromIntegral :: (C a, C b) => a -> bSource
reduceRepeated :: (a -> a -> a) -> a -> a -> Integer -> aSource
isUnit :: C a => a -> BoolSource
stdAssociate :: C a => a -> aSource
stdUnit :: C a => a -> aSource
stdUnitInv :: C a => a -> aSource
extendedGCD :: C a => a -> a -> (a, (a, a))Source

Compute the greatest common divisor and solve a respective Diophantine equation.

   (g,(a,b)) = extendedGCD x y ==>
        g==a*x+b*y   &&  g == gcd x y

TODO: This method is not appropriate for the PID class, because there are rings like the one of the multivariate polynomials, where for all x and y greatest common divisors of x and y exist, but they cannot be represented as a linear combination of x and y. TODO: The definition of extendedGCD does not return the canonical associate.

gcd :: C a => a -> a -> aSource

The Greatest Common Divisor is defined by:

   gcd x y == gcd y x
   divides z x && divides z y ==> divides z (gcd x y)   (specification)
   divides (gcd x y) x
lcm :: C a => a -> a -> aSource
Least common multiple
euclid :: (C a, C a) => (a -> a -> a) -> a -> a -> aSource
extendedEuclid :: (C a, C a) => (a -> a -> (a, a)) -> a -> a -> (a, (a, a))Source
type Rational = T IntegerSource
(%) :: C a => a -> a -> T aSource
numerator :: T a -> aSource
denominator :: T a -> aSource
data Integer Source
Arbitrary-precision integers.
show/hide Instances
data Int Source
A fixed-precision integer type with at least the range [-2^29 .. 2^29-1]. The exact range for a given implementation can be determined by using Prelude.minBound and Prelude.maxBound from the Prelude.Bounded class.
show/hide Instances
data Float Source
Single-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE single-precision type.
show/hide Instances
data Double Source
Double-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE double-precision type.
show/hide Instances
(*>) :: C a b => a -> b -> bSource
scale a vector by a scalar
Produced by Haddock version 2.6.0