Copyright | (c) Andrew Lelechenko 2014-2020 |
---|---|
License | GPL-3 |
Maintainer | [email protected] |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Math.ExpPairs.LinearForm
Description
Linear forms, rational forms and constraints
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.
Constructors
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
.
Constructors
(LinearForm t) :/: (LinearForm t) infix 5 |
Instances
Functor RationalForm Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods fmap :: (a -> b) -> RationalForm a -> RationalForm b # (<$) :: a -> RationalForm b -> RationalForm a # | |||||
Foldable RationalForm Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods fold :: Monoid m => RationalForm m -> m # foldMap :: Monoid m => (a -> m) -> RationalForm a -> m # foldMap' :: Monoid m => (a -> m) -> RationalForm a -> m # foldr :: (a -> b -> b) -> b -> RationalForm a -> b # foldr' :: (a -> b -> b) -> b -> RationalForm a -> b # foldl :: (b -> a -> b) -> b -> RationalForm a -> b # foldl' :: (b -> a -> b) -> b -> RationalForm a -> b # foldr1 :: (a -> a -> a) -> RationalForm a -> a # foldl1 :: (a -> a -> a) -> RationalForm a -> a # toList :: RationalForm a -> [a] # null :: RationalForm a -> Bool # length :: RationalForm a -> Int # elem :: Eq a => a -> RationalForm a -> Bool # maximum :: Ord a => RationalForm a -> a # minimum :: Ord a => RationalForm a -> a # sum :: Num a => RationalForm a -> a # product :: Num a => RationalForm a -> a # | |||||
Traversable RationalForm Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods traverse :: Applicative f => (a -> f b) -> RationalForm a -> f (RationalForm b) # sequenceA :: Applicative f => RationalForm (f a) -> f (RationalForm a) # mapM :: Monad m => (a -> m b) -> RationalForm a -> m (RationalForm b) # sequence :: Monad m => RationalForm (m a) -> m (RationalForm a) # | |||||
NFData t => NFData (RationalForm t) Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods rnf :: RationalForm t -> () # | |||||
Generic (RationalForm t) Source # | |||||
Defined in Math.ExpPairs.LinearForm Associated Types
Methods from :: RationalForm t -> Rep (RationalForm t) x # to :: Rep (RationalForm t) x -> RationalForm t # | |||||
Num t => Num (RationalForm t) Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods (+) :: RationalForm t -> RationalForm t -> RationalForm t # (-) :: RationalForm t -> RationalForm t -> RationalForm t # (*) :: RationalForm t -> RationalForm t -> RationalForm t # negate :: RationalForm t -> RationalForm t # abs :: RationalForm t -> RationalForm t # signum :: RationalForm t -> RationalForm t # fromInteger :: Integer -> RationalForm t # | |||||
Num t => Fractional (RationalForm t) Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods (/) :: RationalForm t -> RationalForm t -> RationalForm t # recip :: RationalForm t -> RationalForm t # fromRational :: Rational -> RationalForm t # | |||||
Show t => Show (RationalForm t) Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods showsPrec :: Int -> RationalForm t -> ShowS # show :: RationalForm t -> String # showList :: [RationalForm t] -> ShowS # | |||||
Eq t => Eq (RationalForm t) Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods (==) :: RationalForm t -> RationalForm t -> Bool # (/=) :: RationalForm t -> RationalForm t -> Bool # | |||||
(Num t, Eq t, Pretty t) => Pretty (RationalForm t) Source # | |||||
Defined in Math.ExpPairs.LinearForm | |||||
type Rep (RationalForm t) Source # | |||||
Defined in Math.ExpPairs.LinearForm type Rep (RationalForm t) = D1 ('MetaData "RationalForm" "Math.ExpPairs.LinearForm" "exp-pairs-0.2.1.1-8itfA9RAbYGDVV8JvWzVP7" 'False) (C1 ('MetaCons ":/:" ('InfixI 'NotAssociative 5) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LinearForm t)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LinearForm t)))) |
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 | |
Generic IneqType Source # | |
Defined in Math.ExpPairs.LinearForm | |
Show IneqType Source # | |
Eq IneqType Source # | |
Ord IneqType Source # | |
Defined in Math.ExpPairs.LinearForm | |
Pretty IneqType Source # | |
Defined in Math.ExpPairs.LinearForm | |
type Rep IneqType Source # | |
data Constraint t Source #
A linear constraint of two variables.
Constructors
Constraint !(LinearForm t) !IneqType |
Instances
Functor Constraint Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods fmap :: (a -> b) -> Constraint a -> Constraint b # (<$) :: a -> Constraint b -> Constraint a # | |||||
Foldable Constraint Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods fold :: Monoid m => Constraint m -> m # foldMap :: Monoid m => (a -> m) -> Constraint a -> m # foldMap' :: Monoid m => (a -> m) -> Constraint a -> m # foldr :: (a -> b -> b) -> b -> Constraint a -> b # foldr' :: (a -> b -> b) -> b -> Constraint a -> b # foldl :: (b -> a -> b) -> b -> Constraint a -> b # foldl' :: (b -> a -> b) -> b -> Constraint a -> b # foldr1 :: (a -> a -> a) -> Constraint a -> a # foldl1 :: (a -> a -> a) -> Constraint a -> a # toList :: Constraint a -> [a] # null :: Constraint a -> Bool # length :: Constraint a -> Int # elem :: Eq a => a -> Constraint a -> Bool # maximum :: Ord a => Constraint a -> a # minimum :: Ord a => Constraint a -> a # sum :: Num a => Constraint a -> a # product :: Num a => Constraint a -> a # | |||||
Traversable Constraint Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods traverse :: Applicative f => (a -> f b) -> Constraint a -> f (Constraint b) # sequenceA :: Applicative f => Constraint (f a) -> f (Constraint a) # mapM :: Monad m => (a -> m b) -> Constraint a -> m (Constraint b) # sequence :: Monad m => Constraint (m a) -> m (Constraint a) # | |||||
NFData t => NFData (Constraint t) Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods rnf :: Constraint t -> () # | |||||
Generic (Constraint t) Source # | |||||
Defined in Math.ExpPairs.LinearForm Associated Types
| |||||
Show t => Show (Constraint t) Source # | |||||
Defined in Math.ExpPairs.LinearForm Methods showsPrec :: Int -> Constraint t -> ShowS # show :: Constraint t -> String # showList :: [Constraint t] -> ShowS # | |||||
Eq t => Eq (Constraint t) Source # | |||||
Defined in Math.ExpPairs.LinearForm | |||||
(Num t, Eq t, Pretty t) => Pretty (Constraint t) Source # | |||||
Defined in Math.ExpPairs.LinearForm | |||||
type Rep (Constraint t) Source # | |||||
Defined in Math.ExpPairs.LinearForm type Rep (Constraint t) = D1 ('MetaData "Constraint" "Math.ExpPairs.LinearForm" "exp-pairs-0.2.1.1-8itfA9RAbYGDVV8JvWzVP7" 'False) (C1 ('MetaCons "Constraint" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LinearForm t)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IneqType))) |