--- title: MathSymb author: Jean-Luc JOULIN date: 27/11/2016 11:00:00 tags: Haskell, Calcul symbolique, Mathématiques, Parsing, Simplification, Factorisation, Développement docref: MathSymb abstract: Une bibliothèque de manipulation d'expressions mathématiques symboliques écrite avec Haskell en cours de développement. Une base essentielle pour certains projets sur lesquels je travaille. --- Objectifs ######### MathSymb est une bibliothèque que je suis en train d'écrire avec Haskell afin de scanner et manipuler des expressions mathématiques de façon symbolique. Ses fonctionnalités sont: * Possibilité d'être utilisée dans d'autres programmes. * Analyse lexical d'une expression données par l'utilisateur. * Reconnaissance des fonctions mathématiques standards (log, log10, sin, cos, tan, acos, asin, atan). * Simplification automatique des expressions. * Réorganisation automatique des termes des expressions. * Reconnaissance de certaines identités remarquables ($left( a+b right) * left( a - b right)=left( a^2 - b^2 right)$ ...). * Évaluation avec différentes valeurs de variables. En plus de la bibliothèque, MathSymb incorpore un programme de test en ligne de commande (interactif) afin de tester les fonctionnalités et valider la bibliothèque. Actuellement, MathSymb comporte environ 15000 lignes de codes et suit une évolution constante. ```{language=verb-html} ``` Routines de tests ################# @[Images/mathsymbtest - 11112016 - 12:51:52.png](![Images/mathsymbtest - 11112016 - 12:51:52.png](Haskell CmdArgs Math Symbolique Test){title="Options du programme mathsymbtest"}) @[Images/mathsymbtest - 11112016 - 12:53:24.png](![Images/mathsymbtest - 11112016 - 12:53:24.png](Haskell CmdArgs Math Symbolique Test CLI Ligne Commande){title="Ligne de commande de mathsymbtest"}) @[Images/mathsymbtest - 11112016 - 12:57:52.png](![Images/mathsymbtest - 11112016 - 12:57:52.png](Haskell CmdArgs Math Symbolique Test CLI Ligne Commande){title="Ligne de commande de mathsymbtest"}) @[Images/mathsymbtest - 11112016 - 13:30:29.png](![Images/mathsymbtest - 11112016 - 13:30:29.png](Haskell CmdArgs Math Symbolique Test CLI Ligne Commande){title="Ligne de commande de mathsymbtest"}) Benchmarks avec Criterion ######################### Je travaille à présent à améliorer et optimiser les performances de ma bibliothèque. Afin d'avoir des résultats objectifs, j'utilise la bibliothèque **Criterion** qui permet d'effectuer des Benchmarks sur différentes fonctions et d'obtenir des rapports détaillés au format html. @[MathSymb Complexes Functions ExprA-0.8.0.0.html](![Images/MathSymb Complexes Functions ExprA-0.8.0.0.lg.png](Haskell CmdArgs Math Symbolique Test CLI Ligne Commande)) @[MathSymb Function mathExpand-0.8.0.0.html](![Images/MathSymb Function mathExpand-0.8.0.0.lg.png](Haskell CmdArgs Math Symbolique Test CLI Ligne Commande))