MathSymb

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:

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.

<canvas id="myChart" width="200" height="130"></canvas> <script> var ctx = document.getElementById("myChart").getContext('2d'); var myChart = new Chart(ctx, { type: 'line', data: { datasets: [ { label: 'Lignes de documentation', data: [{t:new Date (2013,02,08), y:93}, {t:new Date (2013,05,05), y:122}, {t:new Date (2013,05,20), y:138}, {t:new Date (2013,05,21), y:138}, {t:new Date (2013,09,26), y:139}, {t:new Date (2014,07,12), y:142}, {t:new Date (2014,11,15), y:176}, {t:new Date (2015,01,24), y:262}, {t:new Date (2015,11,15), y:268}, {t:new Date (2016,04,07), y:659}, {t:new Date (2016,04,13), y:805}, {t:new Date (2016,05,03), y:1013}, {t:new Date (2016,12,15), y:1229}, {t:new Date (2017,03,03), y:1291}, {t:new Date (2017,03,09), y:1493}, {t:new Date (2017,06,27), y:1626}, {t:new Date (2017,07,24), y:2335}, {t:new Date (2017,07,31), y:2335}, {t:new Date (2017,08,27), y:2382}, {t:new Date (2018,03,19), y:2933}], borderWidth: 1, backgroundColor:'#ff000088', borderColor: "black", lineTension:0 }, { label: 'Lignes de codes', data: [{t:new Date (2013,02,08), y:442}, {t:new Date (2013,05,05), y:941}, {t:new Date (2013,05,20), y:1024}, {t:new Date (2013,05,21), y:1068}, {t:new Date (2013,09,26), y:1088}, {t:new Date (2014,07,12), y:1159}, {t:new Date (2014,11,15), y:1441}, {t:new Date (2015,01,24), y:1623}, {t:new Date (2015,11,15), y:1970}, {t:new Date (2016,04,07), y:2860}, {t:new Date (2016,04,13), y:3580}, {t:new Date (2016,05,03), y:3661}, {t:new Date (2016,12,15), y:5120}, {t:new Date (2017,03,03), y:5120}, {t:new Date (2017,03,09), y:5551}, {t:new Date (2017,06,27), y:5903}, {t:new Date (2017,07,24), y:6206}, {t:new Date (2017,07,31), y:7211}, {t:new Date (2017,08,27), y:10759}, {t:new Date (2018,03,19), y:14918}], borderWidth: 1, backgroundColor:'#0000ff88', borderColor: "black", lineTension:0 } ] }, options: { scales: { xAxes: [{ type: 'time', distribution: 'linear' }], yAxes: [{ ticks: { beginAtZero:true } }] } } }); </script>

Routines de tests

Haskell
 
CmdArgs
 
Math
 
Symbolique
 
Test
Haskell
 
CmdArgs
 
Math
 
Symbolique
 
Test
 
CLI
 
Ligne
 
Commande

Haskell
 
CmdArgs
 
Math
 
Symbolique
 
Test
 
CLI
 
Ligne
 
Commande
Haskell
 
CmdArgs
 
Math
 
Symbolique
 
Test
 
CLI
 
Ligne
 
Commande

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.

Haskell
 
CmdArgs
 
Math
 
Symbolique
 
Test
 
CLI
 
Ligne
 
Commande
Haskell
 
CmdArgs
 
Math
 
Symbolique
 
Test
 
CLI
 
Ligne
 
Commande