Copyright | (c) Andrew Lelechenko 2014-2015 |
---|---|
License | GPL-3 |
Maintainer | andrew.lelechenko@gmail.com |
Stability | experimental |
Portability | POSIX |
Safe Haskell | Safe |
Language | Haskell2010 |
Provides types for rational forms (to hold objective functions in Math.ExpPairs) and linear contraints (to hold constraints of optimization). Both of them are built atop of projective linear forms.
Synopsis
- data LinearForm t = LinearForm !t !t !t
- scaleLF :: (Num t, Eq t) => t -> LinearForm t -> LinearForm t
- evalLF :: Num t => (t, t, t) -> LinearForm t -> t
- substituteLF :: (Eq t, Num t) => (LinearForm t, LinearForm t, LinearForm t) -> LinearForm t -> LinearForm t
- data RationalForm t = (LinearForm t) :/: (LinearForm t)
- evalRF :: Real t => (Integer, Integer, Integer) -> RationalForm t -> RationalInf
- data IneqType
- data Constraint t = Constraint !(LinearForm t) !IneqType
- checkConstraint :: (Num t, Ord t) => (Integer, Integer, Integer) -> Constraint t -> Bool
Documentation
data LinearForm t Source #
Define an affine linear form of three variables: a*k + b*l + c*m.
First argument of LinearForm
stands for a, second for b
and third for c. Linear forms form a monoid by addition.
LinearForm !t !t !t |
Instances
scaleLF :: (Num t, Eq t) => t -> LinearForm t -> LinearForm t Source #
Multiply a linear form by a given coefficient.
evalLF :: Num t => (t, t, t) -> LinearForm t -> t Source #
Evaluate a linear form a*k + b*l + c*m for given k, l and m.
substituteLF :: (Eq t, Num t) => (LinearForm t, LinearForm t, LinearForm t) -> LinearForm t -> LinearForm t Source #
Substitute linear forms k, l and m into a given linear form a*k + b*l + c*m to obtain a new linear form.
data RationalForm t Source #
Define a rational form of two variables, equal to the ratio of two LinearForm
.
(LinearForm t) :/: (LinearForm t) infix 5 |
Instances
evalRF :: Real t => (Integer, Integer, Integer) -> RationalForm t -> RationalInf Source #
Evaluate a rational form (a*k + b*l + c*m) / (a'*k + b'*l + c'*m) for given k, l and m.
Constants to specify the strictness of Constraint
.
Instances
Bounded IneqType Source # | |
Enum IneqType Source # | |
Defined in Math.ExpPairs.LinearForm | |
Eq IneqType Source # | |
Ord IneqType Source # | |
Defined in Math.ExpPairs.LinearForm | |
Show IneqType Source # | |
Generic IneqType Source # | |
Pretty IneqType Source # | |
Defined in Math.ExpPairs.LinearForm | |
type Rep IneqType Source # | |
data Constraint t Source #
A linear constraint of two variables.
Constraint !(LinearForm t) !IneqType |