diff --git a/display_vec.py b/display_vec.py
new file mode 100644
index 0000000000000000000000000000000000000000..148de978118f6150f09818cd44b09e0978b8d55f
--- /dev/null
+++ b/display_vec.py
@@ -0,0 +1,34 @@
+import sys
+import struct
+import os
+from matplotlib import pyplot as plt
+
+def getVector(path):
+    components = []
+    with open(path, "rb") as fr:
+        byte = fr.read()
+        fr.close()
+        name, ext = os.path.splitext(fr.name)
+        if ext != ".vec":
+            print("File extension must be \".vec\"")
+        else:
+            endianness = byte[0]
+            endian = '<' if endianness else '>'
+            size_of_a_component = byte[1]
+            number_of_component = struct.unpack(endian + 'I', byte[2:6])[0]
+            for i in range(number_of_component):
+                components += struct.unpack(endian + 'd', byte[6 + i * 8:6 + (i + 1) * 8])
+    return components
+    
+
+if len(sys.argv) < 3:
+    print("Usage python display_vec.py [X.vec] [Y.vec]")
+else:
+    X = getVector(sys.argv[1])
+    Y = getVector(sys.argv[2])
+    
+    plt.plot(X, Y)
+    plt.title("Vector")
+    plt.xlabel("X")
+    plt.ylabel("Y")
+    plt.show()
\ No newline at end of file
diff --git a/display_vec2.py b/display_vec2.py
new file mode 100644
index 0000000000000000000000000000000000000000..95e93d17c5ec58e444d3a7951a53f94c02282a12
--- /dev/null
+++ b/display_vec2.py
@@ -0,0 +1,52 @@
+import sys
+import struct
+import os
+from matplotlib import pyplot as plt
+
+def getVector(path):
+    _X = []
+    _Y = []
+    with open(path, "rb") as fr:
+        byte = fr.read()
+        fr.close()
+        name, ext = os.path.splitext(fr.name)
+        if ext != ".vec":
+            print("File extension must be \".vec\"")
+        else:
+            endianness = byte[0]
+            endian = '<' if endianness else '>'
+            size_of_a_component = byte[1]
+            number_of_component = struct.unpack(endian + 'I', byte[2:6])[0]
+            for i in range(number_of_component):
+                _X += struct.unpack(endian + 'd', byte[6 + i * 8:6 + (i + 1) * 8])
+                _Y += struct.unpack(endian + 'd', byte[6 + i * 8:6 + (i + 1) * 8])
+    return [_X, _Y]
+    
+def getLine(path):
+    _a = 0
+    _b = 0
+    with open(path, "rb") as fr:
+        byte = fr.read()
+        fr.close()
+        name, ext = os.path.splitext(fr.name)
+        if ext != ".pt":
+            print("File extension must be \".pt\"")
+        else:
+            endianness = byte[0]
+            endian = '<' if endianness else '>'
+            _a = struct.unpack(endian + 'd', byte[1:9])
+            _b = struct.unpack(endian + 'd', byte[9:17])
+    return [_a, _b]
+    
+
+if len(sys.argv) < 3:
+    print("Usage python display_vec.py [*.vec] [*.pt]")
+else:
+    X, Y = getVector(sys.argv[1])
+    a, b = getLine(sys.argv[2])
+    
+    plt.plot(X, Y)
+    plt.title("Vector")
+    plt.xlabel("X")
+    plt.ylabel("Y")
+    plt.show()
\ No newline at end of file
diff --git a/prog b/prog
index 6cd8a0dff6eaaff30ec227b6c4d158e1b4aed547..610e6c562b02960df9ccaa61584fb115cf3fcb5b 100755
Binary files a/prog and b/prog differ
diff --git a/pt1.pt b/pt1.pt
new file mode 100644
index 0000000000000000000000000000000000000000..931a6be24b382af91af28042a0c3369c2d7c7ec3
--- /dev/null
+++ b/pt1.pt
@@ -0,0 +1 @@
+�6)��t�?���g�?
\ No newline at end of file
diff --git a/pt1u2.pt b/pt1u2.pt
new file mode 100644
index 0000000000000000000000000000000000000000..48d37fa9ef594bac1ada887b52b2b4341d414059
--- /dev/null
+++ b/pt1u2.pt
@@ -0,0 +1 @@
+��S��?-4��3�?
\ No newline at end of file
diff --git a/pt1u3.pt b/pt1u3.pt
new file mode 100644
index 0000000000000000000000000000000000000000..d4ce7ca6fe3c82a1f0159562d5e2a80df69b79f2
Binary files /dev/null and b/pt1u3.pt differ
diff --git a/pt2.pt b/pt2.pt
new file mode 100644
index 0000000000000000000000000000000000000000..6caefe954dd8cea9a6cb88585aa279d0a597af08
--- /dev/null
+++ b/pt2.pt
@@ -0,0 +1 @@
+&�&��S�?�&���?
\ No newline at end of file
diff --git a/pt2u3.pt b/pt2u3.pt
new file mode 100644
index 0000000000000000000000000000000000000000..d5944f1fcb8c6c1519c861e93f33fecb19e76980
--- /dev/null
+++ b/pt2u3.pt
@@ -0,0 +1 @@
+%���F�?�E���?
\ No newline at end of file
diff --git a/src/main.c b/src/main.c
index 3b4d26f68141400e673ffbeaa0107cc96e3e12db..4417a716c04cc118368768b63312db15bc0cde9d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -49,18 +49,22 @@ int main() {
 
   //Tests
   point drtTest;
+  printf("Test n°1\n");
   drtTest.x = 0.8;
   drtTest.y = 1.2;
   vector vecTest = nuagePoints(drtTest, 30, 0, 20);
-  printf("Test n°1\n");
+  export_vector("./vec1.vec", &vecTest);
   p = descenteGradient(0.00000001,drtTest,vecTest);
+  export_point("./pt1.pt", &p);
   printf("Sol Numérique Test 1 : a: %f b: %f\n",p.x,p.y);
 
   printf("Test n°2\n");
   drtTest.x = 1;
   drtTest.y = 1;
   vector vecTest2 = nuagePoints(drtTest, 10, 0, 10);
+  export_vector("./vec2.vec", &vecTest2);
   p = descenteGradient(0.00000001,drtTest,vecTest2);
+  export_point("./pt2.pt", &p);
   printf("Sol Numérique Test 2 : a: %f b: %f\n",p.x,p.y);
 
   printf("Test validation croisée\n");
diff --git a/src/main.o b/src/main.o
index a7fe83aa8afca880452e39f5723f48376e468f3b..0aec6bf97b760dbe4c46856af381034c4c0e940e 100644
Binary files a/src/main.o and b/src/main.o differ
diff --git a/src/regressionLin.c b/src/regressionLin.c
index d00a7679a6631ec0d2295e1776865eb7c6e1958d..7287f23882af5b1ef8621a6bd2986f0faaa1ba25 100644
--- a/src/regressionLin.c
+++ b/src/regressionLin.c
@@ -96,8 +96,10 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){
 
   vector g1g2;
   vector_concat(&g1g2,g1,g2);
+  export_vector("./vec1u2.vec", &g1g2);
   // Calculer la descenteGradient sur g1g2
   point p1u2 = descenteGradient(0.00000001,drtTest,g1g2);
+  export_point("./pt1u2.pt", &p1u2);
   printf("p1u2 : %f %f\n",p1u2.x,p1u2.y);
   // Test sur g3 => point 2.1 de l'Analytique avec a et b les valeurs retournée sur p1u2
   erreurs[0] = 0;
@@ -113,8 +115,10 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){
 
   vector g1g3;
   vector_concat(&g1g3,g1,g3);
+  export_vector("./vec1u3.vec", &g1g3);
   // Calculer la descenteGradient sur g1g3
   point p1u3 = descenteGradient(0.00000001,drtTest,g1g3);
+  export_point("./pt1u3.pt", &p1u3);
   printf("p1u3 : %f %f\n",p1u3.x,p1u3.y);
   // test sur g2
   erreurs[1] = 0;
@@ -129,8 +133,10 @@ double* validationCroisee(point drtTest, vector g1, vector g2, vector g3){
 
   vector g2g3;
   vector_concat(&g2g3,g2,g3);
+  export_vector("./vec2u3.vec", &g2g3);
   // Calculer la descenteGradient sur g2g3
   point p2u3 = descenteGradient(0.00000001,drtTest,g2g3);
+  export_point("./pt2u3.pt", &p2u3);
   printf("p2u3 : %f %f\n",p2u3.x,p2u3.y);
   // Test sur g1
   erreurs[2] = 0;
diff --git a/src/regressionLin.o b/src/regressionLin.o
index b343cd3de997d15cabac4dec1c312c41c2297267..2afec9febe2e5577e28ef8b8cc1ab2c09289182b 100644
Binary files a/src/regressionLin.o and b/src/regressionLin.o differ
diff --git a/src/vector.c b/src/vector.c
index 4bc6e0f98a048fae24876667d51f27ed3a1f71a7..d7920f21f1943dcb0167bce4d3e69424616fe1a5 100644
--- a/src/vector.c
+++ b/src/vector.c
@@ -178,3 +178,45 @@ error_code vector_concat(vector* v1,vector v2, vector v3){
   error = ok;
   return error;
 }
+
+uint8_t get_endianness()
+{
+    uint32_t endianness = 0x01020304;
+    // Return the endianness by accessing the first byte in memory
+    // which should be 1 if big-endian and 4 if little-endian
+    return *((uint8_t *)(&endianness)) == 4;
+}
+
+void export_vector(const char *filename, vector *vec)
+{
+    FILE *output = fopen(filename, "w");
+
+    vector_metadata_t metadata;
+    metadata.endianness = get_endianness();
+    metadata.size_of_a_component = sizeof(type);
+    metadata.number_of_component = vec->length;
+
+    fwrite(&metadata, sizeof(vector_metadata_t), 1, output);
+    fwrite(vec->content,
+           metadata.size_of_a_component,
+           metadata.number_of_component,
+           output);
+
+    fclose(output);
+}
+
+void export_point(const char *filename, point *pt)
+{
+    FILE *output = fopen(filename, "w");
+
+    point_metadata_t metadata;
+    metadata.endianness = get_endianness();
+
+    fwrite(&metadata, sizeof(point_metadata_t), 1, output);
+    fwrite(pt,
+           sizeof(point),
+           1,
+           output);
+
+    fclose(output);
+}
\ No newline at end of file
diff --git a/src/vector.h b/src/vector.h
index 5866d4c036d4f1d19be5f0f1eac72518f42060b8..9e4f185485d939347a6ec85cb5885f438d2fa765 100644
--- a/src/vector.h
+++ b/src/vector.h
@@ -7,6 +7,7 @@ Hesge 2019
 #define VECTOR_H
 
 #include <stdio.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <stdbool.h>
 #include <math.h>
@@ -27,6 +28,17 @@ typedef struct _vector {
     int length; // actual length
 } vector;
 
+typedef struct point_metadata{
+    uint8_t endianness;          // 1 = little, 0 = big
+} __attribute__((packed)) point_metadata_t;
+
+typedef struct vector_metadata
+{
+    uint8_t endianness;          // 1 = little, 0 = big
+    uint8_t size_of_a_component; // in bytes
+    uint32_t number_of_component;
+} __attribute__((packed)) vector_metadata_t;
+
 typedef enum error_code {
     ok, out_of_bounds, memory_error, uninitialized
 } error_code;
@@ -62,4 +74,8 @@ error_code vector_filter(vector *v, bool (*f)(type), vector *rhs);
 
 error_code vector_concat(vector* v1,vector v2, vector v3);
 
+void export_vector(const char *filename, vector *vec);
+
+void export_point(const char *filename, point *pt);
+
 #endif
diff --git a/src/vector.o b/src/vector.o
index 9dcdb2a81c35d2106b00e1a3a2b8f88edece5d8b..5fb17a6aad48d6f4b5f530fbbc3457e3d1fe7417 100644
Binary files a/src/vector.o and b/src/vector.o differ
diff --git a/vec1.vec b/vec1.vec
new file mode 100644
index 0000000000000000000000000000000000000000..25f216e7d5723716e0af62f2cd6866d1770d22cd
Binary files /dev/null and b/vec1.vec differ
diff --git a/vec1u2.vec b/vec1u2.vec
new file mode 100644
index 0000000000000000000000000000000000000000..12817260ecdf4384751fc560097aecf1d750c6ba
Binary files /dev/null and b/vec1u2.vec differ
diff --git a/vec1u3.vec b/vec1u3.vec
new file mode 100644
index 0000000000000000000000000000000000000000..e63c31bd9ea9f7c43ff6e0341c04ff59fab74416
Binary files /dev/null and b/vec1u3.vec differ
diff --git a/vec2.vec b/vec2.vec
new file mode 100644
index 0000000000000000000000000000000000000000..57e33e7cdcc9b5b0dddac7837f28d3b21fe16c7b
Binary files /dev/null and b/vec2.vec differ
diff --git a/vec2u3.vec b/vec2u3.vec
new file mode 100644
index 0000000000000000000000000000000000000000..706dc39903dd61d750c3d7dd1489afba1e8e36df
Binary files /dev/null and b/vec2u3.vec differ