diff --git a/doc/background.png b/doc/background.png
new file mode 100644
index 0000000000000000000000000000000000000000..c797938e5dcd26cf96882b5d8375138429ab7297
Binary files /dev/null and b/doc/background.png differ
diff --git a/doc/doc.md b/doc/doc.md
new file mode 100644
index 0000000000000000000000000000000000000000..33554e0c52281b64769824a3f19547181794e47a
--- /dev/null
+++ b/doc/doc.md
@@ -0,0 +1,93 @@
+---
+title:  'Tp Simplex'
+author: [Juliano Souza Luz, Thibault Capt]
+date: "18.01.2023"
+subject: "TP Simplex"
+subtitle: "Résoudre un programme linéaire grâce à la méthode du simplex\r\nhttps://gitedu.hesge.ch/math/2e-annee/tp-math"
+titlepage: true
+titlepage-color: "ffffff"
+titlepage-background: "background.png"
+toc-own-page: true
+footnotes-pretty: true
+---
+
+# TP Simplex
+
+## Choix du langage
+
+Nous avons donc utilisé le Java afin de résoudre ce travail pratique. En effet, python est un langage qui est très lent 
+à l'exécution, car celui-ci est un langage **interprété**. Nous pouvons ainsi essayer de gagner du temps d'exécution pour
+la résolution du problème. 
+
+## Astuces utilisées
+
+Ensuite, dans la plupart des cas, nous avons utilisé des **array** à 1 ou 2 dimension(s) qui
+est bien plus rapide que les Listes Java. (https://stackoverflow.com/questions/716597/array-or-list-in-java-which-is-faster).
+
+Nous avons aussi opté pour que l'utilisateur puisse choisir un mode débogage ou non, ce qui permet de supprimer presque
+tous les prints en mode non-débogage et gagner énormément de temps d'exécution.
+
+## Analyse des performances
+
+Nous avons reçu plusieurs fichiers à tester pour vérifier le bon fonctionnement de notre code (nous approfondirons les 
+résultats à "null" dans les problèmes rencontrés) :
+
+- input.txt
+  - Valeur obj : -34.25
+  - nombre de pivots : 2
+  - Temps d'exécution : 17ms
+- input_test.txt
+    - Valeur obj : null
+    - nombre de pivots : null
+    - Temps d'exécution : null
+- input_test2.txt
+    - Valeur obj : null
+    - nombre de pivots : null
+    - Temps d'exécution : null
+- inputNonAdmissible.txt
+    - Valeur obj : -34.25
+    - nombre de pivots : 3
+    - Temps d'exécution : 20ms
+- flow_1.txt
+    - Valeur obj : 78768
+    - nombre de pivots : 9
+    - Temps d'exécution : 33ms
+- network1.txt
+    - Valeur obj : 78768
+    - nombre de pivots : 9
+    - Temps d'exécution : 30ms
+- network2.txt
+    - Valeur obj : 0
+    - nombre de pivots : 10
+    - Temps d'exécution : 55ms
+- network3.txt
+    - Valeur obj : 84077
+    - nombre de pivots : 45
+    - Temps d'exécution : 162ms
+- network4.txt
+    - Valeur obj : null
+    - Nombre de pivots : null
+    - Temps d'exécution : null
+- network5.txt
+    - Valeur obj : NaN
+    - Nombre de pivots: 1255
+    - Temps d'exécution : 26066ms
+
+Le temps d'exécution est, dans l'ensemble, assez faible, bien qu'il soit encore possible de l'améliorer.
+
+## Problèmes rencontrés
+
+Nous avons rencontré plusieurs problèmes au cours de ce travail pratique. 
+
+Premièrement, lors de la phase 1, nous ne gérions pas tous les négatifs des membres de droite. En effet, nous passions
+en paramètre la ligne où nous trouvions un négatif et remplaçait cette ligne en question. Le problème étant que s'il y 
+avait plusieurs négatifs dans les membres de droite, il y resterait.
+
+Deuxièmement et n'est pas résolu, nous pouvons voir que nous avons des résultats à null. En effet, ce problème survient 
+lorsque notre résultat du tableau auxiliaire de la phase 1 (avant le pivot) est négatif. Par exemple, prenons le fichier
+input_test, nous ne trouvons pas de résultat. Nous avons essayé de changer la valeur de notre epsilon (initialement à 
+1E-7) mais cela n'y change rien.
+
+Troisièmement, le fichier network5 affiche des NaN (not a number). Il y a donc des divisions par 0 quelque part pour ce 
+fichier. Le problème est qu'il y a ~1400 pivots pour ce fichier et ainsi le débogage est bien trop long pour regarder 
+pivot par pivot.
diff --git a/doc/enonce_tp_Splx_2.pdf b/doc/enonce_tp_Splx_2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..59b34ec75a68f97b32a6f8104b7ed1d9a87b21c5
Binary files /dev/null and b/doc/enonce_tp_Splx_2.pdf differ
diff --git a/src/Main.java b/src/Main.java
index a0dcae37ae2df194eb90944e4aa9d20c6c487335..c6eeab03d2b65d89eece471d3716722011d7cfb3 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -91,7 +91,7 @@ public class Main {
         Simplex spx = new Simplex(eq.getMat().getLine(), eq.getMat().getLine() + eq.getMat().getCol() + 1,
                 line, contraintes, debugging);
         spx.createSimplex(eq, contraintes);
-        spx.printSimplex(spx.getMatEcart(), "Tableau initial");
+        if(debugging) spx.printSimplex(spx.getMatEcart(), "Tableau initial");
 
         // true = phase 1 membres de droite pas admissible | false = phase 2 membres de droite admissible
         if (spx.which_phase()) {
diff --git a/src/Matrix.java b/src/Matrix.java
index 7dcf1f662bd47382e30481f0944a014c8472ff54..146fc5cbf9c1ef76701378868308ca9d429791f5 100644
--- a/src/Matrix.java
+++ b/src/Matrix.java
@@ -83,7 +83,7 @@ public class Matrix {
         // Parcourir la matrice et afficher les valeurs arrondies au centième
         for (int i = 0; i < line; i++) {
             for (int j = 0; j < col; j++) {
-                System.out.format("%10.2f", this.data[i][j]);
+                System.out.format("%10f", this.data[i][j]);
             }
             System.out.println();
         }
diff --git a/src/Simplex.java b/src/Simplex.java
index 96d3e25fe40acae31ab52c9b33ca9a4cc9006041..b338745439e8807a7fba18c759a88514ed31ef64 100644
--- a/src/Simplex.java
+++ b/src/Simplex.java
@@ -8,7 +8,7 @@ public class Simplex {
     private final int ligne; // Ligne
     private final int colonne; // Colonne
     private int nbPivot;
-    private static final double EPSILON = 0E-7;
+    private static final double EPSILON = 1E-20;
     private final int nbContraintes;
 
     public Matrix getMatEcart() {