h&b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno,Equation solver and calculator  la metafont(c) Kristof Bastiaensen, 2015BSD-3kristof@resonata.beunstableghc Safe-Inferred6;smfsolveA monad for solving equations. Basicly just a state and exception monad over  and .mfsolveA monad transformer for solving equations. Basicly just a state and exception monad transformer over  and .mfsolveAn error type for ?, @ and 2:mfsolveThe variable is not defined.mfsolve9The variable is defined but dependend an other variables.mfsolveThe equation was reduced to the impossible equation `a == 0` for nonzero a, which means the equation is inconsistent with previous equations.mfsolveThe equation was reduced to the redundant equation `0 == 0`, which means it doesn't add any information.mfsolveThis hidden datatype represents a system of equations. It contains linear dependencies on variables as well as nonlinear equations. The following terminology is used from metafont:known variable/: A variable who's dependency is just a number.dependend variable7: A variable which depends linearly on other variables.independend variable: any other variable.A  dependend# variable can only depend on other  independend variables. Nonlinear equations will be simplified by substituting and evaluating known variables, or by reducing some trigonometric equations to linear equations.pmfsolve An angular function of the form c + n*sin(theta + alpha) where theta, and n are linear terms, alpha and c are constants.mfsolve8A linear expression of several variables. For example:  2*a + 3*b + 2 would be represented as LinExpr 2 [(a, 2), (b, 3)]. mfsolveA mathematical expression of several variables. Several Numeric instances (q, r and s,) are provided, so doing calculations over   is more convenient. mfsolveA simplified datatype representing an expression. This can be used to inspect the structure of a  , which is hidden.mfsolvesinemfsolvecosinemfsolveabsolute valuemfsolvereciprocal (1/x)mfsolvesignmfsolvenatural exponential (e^x)mfsolvenatural logarithm (log x)mfsolvehyperbolic cosinemfsolveinverse hyperbolic tangentmfsolvetangentmfsolvehyperbolic tangentmfsolvehyperbolic sinemfsolve inverse sine mfsolveinverse cosine!mfsolveinverse hyperbolic sine"mfsolveinverse hyperbolic cosine#mfsolveinverse tangent%mfsolveAddition&mfsolveMultiplication(mfsolve+The expression contains the given variable.)mfsolve Convert an   to a  .*mfsolve:evaluate a simple expression using the given substitution.+mfsolve5map a simple expression using the given substitution.,mfsolve/map an expression using the given substitution.-mfsolve+Make a expression from a simple expression..mfsolve6Evaluate the expression given a variable substitution./mfsolve$Create an expression from a constant0mfsolve$Create an expression from a variable1mfsolveAn empty system of equations.2mfsolveaddEquation d e: Add the equation e = 0 to the system d.3mfsolveEliminate an variable from the equations. Returns the eliminated equations. Before elimination it performs substitution to minimize the number of eliminated equations. Important;: this function is still experimental and mostly untested.4mfsolve2Return True if the variable is known or dependend.5mfsolve7Return all dependend variables with their dependencies.6mfsolveReturn all known variables.7mfsolveReturn the value of the variable, or a list of variables it depends on. Only linear dependencies are shown.8mfsolveReturn all nonlinear equations e_i, where e_i = 0.9mfsolve>Show all variables and equations. Useful in combination with H.:mfsolveGet the dependencies from a state monad. Specialized version of t.;mfsolve3Return the value of the variable or throw an error.<mfsolveMonadic version of 4.=mfsolveMonadic version of 7.>mfsolveMonadic version of 3.?mfsolve(Make the expressions on both sides equal@mfsolveMake the pairs of expressions on both sides equal. No error is signaled if the equation for one of the sides is  Redundant" for example in (x, 0) == (y, 0).AmfsolveSucceed even when trowing a  error.Bmfsolverun the solver.CmfsolveReturn the result of solving the equations, or throw the error as an exception. Monadic version.DmfsolveReturn the result of solving the equations or an error. Monadic version.EmfsolveRun the solver and return the dependencies or an error. Monadic version.FmfsolveReturn the result of solving the equations, or throw the error as an exception.Gmfsolve7Return the result of solving the equations or an error.Hmfsolve7Run the solver and return the dependencies or an error.MmfsolveA simple String wrapper, which will print formulas more cleanly.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH    !"#$%& 0/.-)*(+,12376485?@:;=<>ABGHF9'DEC?1@1        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsqtuqvwxyz&mfsolve-0.3.2.2-Kg1nImNt2bCA8EibrMhzTr Math.MFSolveMFSolver MFSolverTDepError UndefinedVar UnknownVarInconsistentEq RedundantEq DependenciesLinExprExpr SimpleVar SimpleExprSEBinSEUnVarConstUnaryOpSinCosAbsRecipSignumExpLogCoshAtanhTanTanhSinhAsinAcosAsinhAcoshAtanBinaryOpAddMul runSolverThasVartoSimple evalSimple mapSimplemapExpr fromSimpleevalExpr makeConstant makeVariablenoDeps addEquation eliminate varDefined dependendVars knownVarsgetKnown nonlinearEqsshowVars dependenciesgetValue varDefinedM getKnownM eliminateM====&=ignore runSolver unsafeSolveT evalSolverT execSolverT unsafeSolve evalSolver execSolver$fShowBinaryOp $fShowUnaryOp$fHashableUnaryOp$fShowSimpleExpr$fShowSimpleVar$fHashableSimpleVar$fHashableLinExpr$fFloatingExpr$fFractionalExpr $fNumExpr $fShowExpr$fHashableExpr$fHashableNonLinExpr$fShowDependencies$fShowDepError$fExceptionDepError$fMonadTransMFSolverT$fFunctorMFSolverT$fApplicativeMFSolverT$fMonadMFSolverT$fMonadIOMFSolverT!$fMonadStateDependenciesMFSolverT$fMonadErrorDepErrorMFSolverT$fMonadReadersMFSolverT$fMonadWritersMFSolverT$fMonadContMFSolverT$fEqNonLinExpr$fGenericNonLinExpr$fEqExpr $fGenericExpr$fGenericLinExpr $fEqLinExpr $fShowLinExpr $fEqSimpleVar$fOrdSimpleVar$fGenericSimpleVar $fEqUnaryOp$fGenericUnaryOp $fEqBinaryOp LinearMapbaseGHC.NumNum GHC.FloatFloatingGHC.Real Fractional mtl-2.2.2Control.Monad.State.Classget