B`:A      !"#$%&'()*+,-./0123456789:;<=>?@,Equation solver and calculator la metafont(c) Kristof Bastiaensen, 2015BSD-3kristof@resonata.beunstableghcNone+036FX(IA monad for solving equations. Basicly just a state and exception monad.$Unwrap a solver monad as a function.An error type for ;, < and solveEq:i: The equation was reduced to the redundant equation 0 == 0, which means it doesn't add any information. a: The equation was reduced to the impossible equation `a == 0` for nonzero a, which means the equation is inconsistent with previous equations. v;: The variable is defined but dependend an other variables. v: The variable is not defined.yAn opaque datatype containing the dependencies of each variable. A variable who's dependency is just a number is called known;. A variables which depends on other variables is called  dependend=. A variable which is neither known or dependend is called  independend'. A variable can only depend on other  independendf variables. It also contains nonlinear equations which it couldn't reduce to a linear equation yet.A An angular function of the form c + n*sin(theta + alpha) where theta, and n are linear terms, alpha and c are constants.8A linear expression of several variables. For example:  2*a + 3*b + 2 would be represented as LinExpr 2 [(a, 2), (b, 3)]. 0An mathematical expression of several variables. 0A simplified datatype representing an expression&+The expression contains the given variable.' Convert an   to a  .(:evaluate a simple expression using the given substitution.)+Make a expression from a simple expression.*6Evaluate the expression given a variable substitution.+$Create an expression from a constant,$Create an expression from a variable-An empty set of dependencies..addEquation e d: Add the equation e = 0 to the system d./Eliminate an variable from the equations. Returns the eliminated equations. Before elimination it performs substitution to minimize the number of eliminated equations.02Return True if the variable is known or dependend.17Return all dependend variables with their dependencies.2Return all known variables.3mReturn the value of the variable, or a list of variables it depends on. Only linear dependencies are shown.4Return all nonlinear equations e_i, where e_i = 0.5>Show all variables and equations. Useful in combination with @.6AGet the dependencies from a state monad. Specialized version of B.73Return the value of the variable or throw an error.8Monadic version of 0.9Monadic version of 3.:Monadic version of /.;(Make the expressions on both sides equal<qMake 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).=Succeed even when trowing a  error.>OReturn the result of solving the equations, or throw the error as an exception.?7Return the result of solving the equations or an error.@7Run the solver and return the dependencies or an error.C@A simple String wrapper, which will print formulas more cleanly.DEFGAHIJKLMNO P  !"#$%QRSTUV&WXY'Z[()*\+,]^_`abcdefghijklmnopqr-stuv.wxyz/{|}~0123456789:;<=>?@CA  !"#$%&'()*+,-./0123456789:;<=>?@B   "! #%$ (*)',+&32041-/.6798:<;=?@>5pDEFGAHKJILMNO P  "! #%$QRSTUV&WXY'Z[()*\+,]^_`abcdefghijklmnopqr-stuv.wxyz/{|}~0123456789:;<=>?@C;<        !"#$%&'()*+,-./0123456789:;<=>?@ABCDE FGHIJKLMNO PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ mfsolve-0.2.0 Math.MFSolveMFSolver runSolverDepError RedundantEqInconsistentEq UnknownVar UndefinedVar DependenciesLinExprExpr SimpleVar SimpleExprConstVarSEUnSEBinUnaryOpAtanAcoshAsinhAcosAsinSinhTanAtanhCoshCosLogExpSignumRecipAbsSinBinaryOpMulAddhasVartoSimple evalSimple fromSimpleevalExpr makeConstant makeVariablenoDeps addEquation eliminate varDefined dependendVars knownVarsgetKnown nonlinearEqsshowVars dependenciesgetValue varDefinedM getKnownM eliminateM====&=ignore unsafeSolve evalSolver execSolver LinearMap mtl-2.2.1Control.Monad.State.Classget$fShowSimpleVarTrigEq2TrigEq NonLinExprSinExpMulExpUnaryAppTrigTerm AmplitudePhasePeriodLinearEConstELConst withParens addSimpleseHasVar linToSimple trigToSimplenonlinToSimpleevalBinevalUnzeroTermtrigExpr nonlinExprisConstlinVarsaddLinaddExprmerge addTrigTerms addTrigTermtermIsMultiple compareTerm compareBy mulLinExpr mulConstTrig mulLinTrigmulExprsinExprunExpr substVarLinsubstVarNonLin substVarTrigsubst simpleSubst trigToExpr trig2ToExpraddEqsselectsubstDepaddEq0 deleteDep reArrange reArrangeTrigelimTrigdmodsplitMax$fShowDepError$fShowDependencies$fFloatingExpr$fFractionalExpr $fNumExpr $fShowUnaryOp$fShowBinaryOp$fShowSimpleExpr$fApplicativeMFSolver$fFunctorMFSolver$fMonadErrorDepErrorMFSolver $fMonadStateDependenciesMFSolver$fMonadMFSolver $fShowExpr$fExceptionDepError$fHashableSimpleVar$fHashableExpr$fHashableUnaryOp$fHashableNonLinExpr$fHashableLinExpr