-- |
-- The maximum entropy method, or MAXENT, is variational approach for computing probability 
-- distributions given a list of moment, or expected value, constraints.
-- 
-- Here are some links for background info.
-- A good overview of applications:
-- <http://cmm.cit.nih.gov/maxent/letsgo.html>
-- On the idea of maximum entropy in general: 
-- <http://en.wikipedia.org/wiki/Principle_of_maximum_entropy>
--  
-- 
-- Use this package to compute discrete maximum entropy distributions over a list of values and
-- list of constraints.
-- 
-- Here is a the example from Probability the Logic of Science
-- 
-- >>> maxent ([1,2,3], [average 1.5])
-- Right [0.61, 0.26, 0.11]
-- 
-- The classic dice example
--
-- >>> maxent ([1,2,3,4,5,6], [average 4.5])
-- Right [.05, .07, 0.11, 0.16, 0.23, 0.34]
-- 
-- One can use different constraints besides the average value there.  
--
-- As for why you want to maximize the entropy to find the probability constraint, 
-- I will say this for now. In the case of the average constraint 
-- it is a kin to choosing a integer partition with the most interger compositions. 
-- I doubt that makes any sense, but I will try to explain more with a blog post soon.
-- 
module Numeric.MaxEnt (
    Constraint,
    ExpectationFunction,
    constraint,
    average,
    variance,
    -- ** Classic moment based
    maxent,
    -- ** General
    GeneralConstraint,
    generalMaxent, 
    -- ** Linear
    LinearConstraints(..),
    linear,
) where
import Numeric.MaxEnt.Internal (Constraint,
                        ExpectationFunction,
                        constraint,
                        average,
                        variance,
                        maxent,
                        generalMaxent,
                        GeneralConstraint)
import Numeric.MaxEnt.Linear (linear, LinearConstraints(..))