From 97c023a37db2bba8cb32c267a84437846e59b146 Mon Sep 17 00:00:00 2001
From: Benjamin-Sitbon <Benjaminsitbon@hotmail.com>
Date: Tue, 7 May 2019 12:30:48 +0200
Subject: [PATCH] Matrix

---
 .idea/Projet.iml    |   8 ++
 .idea/encodings.xml |   4 +
 .idea/misc.xml      |   6 ++
 .idea/modules.xml   |   8 ++
 .idea/vcs.xml       |   6 ++
 .idea/workspace.xml | 200 ++++++++++++++++++++++++++++++++++++++++++++
 joseph.exe          | Bin 45411 -> 45411 bytes
 mat.dat             |   3 +
 mat_new.dat         |   5 ++
 matrix.c            | 133 +++++++++++++++++++++++++----
 matrix.h            |   4 +
 matrix.o            | Bin 694 -> 3872 bytes
 matrix_compute.c    |  14 +++-
 matrix_compute.exe  | Bin 40910 -> 45051 bytes
 matrix_compute.o    | Bin 668 -> 1046 bytes
 pointer_sort.exe    | Bin 41910 -> 41910 bytes
 16 files changed, 376 insertions(+), 15 deletions(-)
 create mode 100644 .idea/Projet.iml
 create mode 100644 .idea/encodings.xml
 create mode 100644 .idea/misc.xml
 create mode 100644 .idea/modules.xml
 create mode 100644 .idea/vcs.xml
 create mode 100644 .idea/workspace.xml
 create mode 100644 mat.dat
 create mode 100644 mat_new.dat

diff --git a/.idea/Projet.iml b/.idea/Projet.iml
new file mode 100644
index 0000000..bc2cd87
--- /dev/null
+++ b/.idea/Projet.iml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="CPP_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..15a15b2
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" addBOMForNewFiles="with NO BOM" />
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..28a804d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..141a619
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/Projet.iml" filepath="$PROJECT_DIR$/.idea/Projet.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..8c618d9
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CMakeRunConfigurationManager" shouldGenerate="true" shouldDeleteObsolete="true">
+    <generated />
+  </component>
+  <component name="CMakeSettings">
+    <configurations>
+      <configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
+    </configurations>
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="a4729566-319a-40e2-ad79-c7ce5c27c976" name="Default Changelist" comment="">
+      <change beforePath="$PROJECT_DIR$/joseph.exe" beforeDir="false" afterPath="$PROJECT_DIR$/joseph.exe" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/matrix.c" beforeDir="false" afterPath="$PROJECT_DIR$/matrix.c" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/matrix.h" beforeDir="false" afterPath="$PROJECT_DIR$/matrix.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/matrix.o" beforeDir="false" afterPath="$PROJECT_DIR$/matrix.o" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/matrix_compute.c" beforeDir="false" afterPath="$PROJECT_DIR$/matrix_compute.c" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/matrix_compute.exe" beforeDir="false" afterPath="$PROJECT_DIR$/matrix_compute.exe" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/matrix_compute.o" beforeDir="false" afterPath="$PROJECT_DIR$/matrix_compute.o" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/pointer_sort.exe" beforeDir="false" afterPath="$PROJECT_DIR$/pointer_sort.exe" afterDir="false" />
+    </list>
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf>
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/matrix_compute.c">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="102">
+              <caret line="6" column="8" selection-start-line="6" selection-start-column="8" selection-end-line="6" selection-end-column="8" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/matrix.c">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="263">
+              <caret line="117" lean-forward="true" selection-start-line="117" selection-end-line="117" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/matrix.h">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="187">
+              <caret line="11" column="45" selection-start-line="11" selection-start-column="45" selection-end-line="11" selection-end-column="45" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/joseph.c">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="170">
+              <caret line="31" column="10" lean-forward="true" selection-start-line="31" selection-start-column="10" selection-end-line="31" selection-end-column="32" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/matrix.h" />
+        <option value="$PROJECT_DIR$/matrix.c" />
+        <option value="$PROJECT_DIR$/matrix_compute.c" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectFrameBounds" extendedState="6">
+    <option name="x" value="360" />
+    <option name="y" value="-23" />
+    <option name="width" value="1049" />
+    <option name="height" value="730" />
+  </component>
+  <component name="ProjectView">
+    <navigator proportions="" version="1">
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="Projet" type="b2602c69:ProjectViewProjectNode" />
+              <item name="Projet" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+      <pane id="Scope" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
+    <property name="nodejs_npm_path_reset_for_default_project" value="true" />
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="a4729566-319a-40e2-ad79-c7ce5c27c976" name="Default Changelist" comment="" />
+      <created>1557141417692</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1557141417692</updated>
+      <workItem from="1557141419149" duration="10738000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="10738000" />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
+    <editor active="true" />
+    <layout>
+      <window_info id="Favorites" side_tool="true" />
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.24966443" />
+      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+      <window_info anchor="bottom" id="Database Changes" />
+      <window_info anchor="bottom" id="Version Control" />
+      <window_info active="true" anchor="bottom" id="Terminal" visible="true" weight="0.3286119" />
+      <window_info anchor="bottom" id="Event Log" side_tool="true" />
+      <window_info anchor="bottom" id="Message" order="0" />
+      <window_info anchor="bottom" id="Find" order="1" />
+      <window_info anchor="bottom" id="Run" order="2" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
+      <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="right" id="Database" />
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
+    </layout>
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="1" />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/pointer_sort.c">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/joseph.c">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="170">
+          <caret line="31" column="10" lean-forward="true" selection-start-line="31" selection-start-column="10" selection-end-line="31" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/matrix.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="187">
+          <caret line="11" column="45" selection-start-line="11" selection-start-column="45" selection-end-line="11" selection-end-column="45" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/matrix.c">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="263">
+          <caret line="117" lean-forward="true" selection-start-line="117" selection-end-line="117" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/matrix_compute.c">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="102">
+          <caret line="6" column="8" selection-start-line="6" selection-start-column="8" selection-end-line="6" selection-end-column="8" />
+        </state>
+      </provider>
+    </entry>
+  </component>
+</project>
\ No newline at end of file
diff --git a/joseph.exe b/joseph.exe
index 1a921245da6d6d3bb3b20ddad95a114102965370..e5e002dd178c53f0f4c302519a449b5fa43f026e 100644
GIT binary patch
delta 22
ecmaF-i0SborU@NPmlP&;`7zHDWZZbWV*>zwk_vYK

delta 22
ecmaF-i0SborU@NPC%Gqf`7uxY!?5vo#|8j`Ukf?_

diff --git a/mat.dat b/mat.dat
new file mode 100644
index 0000000..0c8e0bd
--- /dev/null
+++ b/mat.dat
@@ -0,0 +1,3 @@
+2 4
+1 2 3 4
+2 3 4 5
\ No newline at end of file
diff --git a/mat_new.dat b/mat_new.dat
new file mode 100644
index 0000000..5208335
--- /dev/null
+++ b/mat_new.dat
@@ -0,0 +1,5 @@
+4 2
+1 2 
+2 3 
+3 4 
+4 5 
diff --git a/matrix.c b/matrix.c
index fa60b0b..9f3ab0b 100644
--- a/matrix.c
+++ b/matrix.c
@@ -1,30 +1,135 @@
-#include <stdio.h>
+
 #include <stdlib.h>
-#include <stdbool.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
 #include "matrix.h"
 
+
 m_double* matrix_alloc(unsigned int row, unsigned int col){
 
-    if(row == 0 || col == 0){
-        return NULL;
-    }
-    m_double* matrix = calloc(1,sizeof(m_double));
-    double ** mat_ptr = malloc(row*col*sizeof(double));
-    matrix->content = malloc(row*col*sizeof(double*))
-    for (int i=0;i<li;i++) mat->content[i] = data+i*co;
+    if (row <= 0 || col <= 0) return NULL;
+    m_double* matrix = (m_double*) calloc(1, sizeof(m_double));
+    matrix->row = row; matrix->col = col;
+    double* mat_ptr = (double*) malloc(row*col*sizeof(double));
+    matrix->content = (double*) malloc(row*sizeof(double));
+    for (int i=0;i<row;i++) matrix->content[i] = mat_ptr+i*col;
     return matrix;
+}
+
 
+void matrix_free(m_double* matrix) {
+
+    free(matrix->content);
+    free(matrix);
+    matrix = NULL;
 }
 
 
+m_double* matrix_transpose(m_double* matrix) {
+    assert(NULL != matrix);
+    m_double* transp = matrix_alloc(matrix->col,matrix->row);
+
+    for (int i = 0; i<matrix->row; i++){
+        for (int j = 0; j<matrix->col; j++){
+            transp->content[j][i] = matrix->content[i][j];
+        }
+        printf("\n");
+    }
+
+    return transp;
+}
 
-m_double* matrix_transpose(m_double* matrix){
 
-    m_double transp = matrix_alloc(matrix->col,matrix->row);
-    for(int i=0;i<matrix->row;i++){
-        for(int j=0;j<matrix->col;j++){
-            transp[j][i] = matrix[i][j];
+m_double* matrix_add(m_double* add1, m_double* add2) {
+
+    assert(NULL != add1 && NULL != add2);
+    assert(add1->row == add2->row && add1->col == add2->col);
+
+    m_double* add = matrix_alloc(add1->row, add1->col);
+
+    for (int i=0; i < add1->row; i++) {
+        for (int j=0; j < add1->col; j++) {
+            add->content[i][j] = add1->content[i][j] + add2->content[i][j];
         }
     }
+    return add;
+}
+
+
+m_double* matrix_mult(m_double* add1, m_double* add2) {
 
+    assert((NULL != add1 && NULL != add2) && add1->col == add2->row);
+
+    m_double* add = matrix_alloc(add1->row,add2->col);
+
+    for (int i = 0; i < add->row; i++) {
+        for (int j = 0; j < add->col; j++) {
+
+            double result = 0.0;
+
+            for (int k = 0; k < add1->col; k++) {
+                result += add1->content[i][k] * add2->content[k][j];
+            }
+            add->content[i][j] = result;
+        }
+    }
+
+    return add;
+}
+
+
+m_double* file2matrix(const char* filename) {
+
+    FILE *fp = fopen(filename,"r+");
+    if (NULL == fp) {
+        fprintf(stderr,"%s, file not found\n",filename);
+        exit(1);
+    }
+
+    unsigned int row = 0, col = 0;
+    fscanf(fp,"%d",&row);
+    fscanf(fp,"%d",&col);
+    m_double* mat = matrix_alloc(row, col);
+    for (int i=0;i<mat->row;i++) {
+        for (int j = 0; j < mat->col; j++) {
+            fscanf(fp, "%lf ", &(mat->content[i][j]));
+        }
+    }
+    fclose(fp);
+    return mat;
+}
+
+
+
+void matrix2file(m_double* m,char* filename) {
+    FILE *fp = stdout;
+    if (NULL != filename) fp = fopen(filename, "w+");
+
+    fprintf(fp, "%d %d\n", m->row, m->col);
+
+    for (int i = 0; i < m->row; i++){
+        for (int j = 0; j < m->col; j++){
+            fprintf(fp, "%g ", m->content[i][j]);
+        }
+        fprintf(fp, "\n");
+    }
+}
+
+
+void matrix_display(m_double* matrix) {
+
+    if (matrix == NULL){
+        exit(1);
+    }
+    printf("[%d,%d]\n", matrix->row, matrix->col);
+    for (int i = 0; i < matrix->row; i++){
+        printf("|");
+        for (int j = 0; j < matrix->col; j++){
+            printf("%g|", matrix->content[i][j]);
+            if(j=matrix->col-1) printf("%g", matrix->content[i][j]);
+        }
+        printf("|");
+        printf("\n");
+    }
 }
\ No newline at end of file
diff --git a/matrix.h b/matrix.h
index 4905544..0c58945 100644
--- a/matrix.h
+++ b/matrix.h
@@ -6,3 +6,7 @@ typedef struct m_double {
 m_double* matrix_alloc(unsigned int row, unsigned int col);
 
 m_double* matrix_transpose(m_double* m);
+
+m_double* file2matrix(const char* filename);
+
+void matrix2file(m_double* m,char* filename);
\ No newline at end of file
diff --git a/matrix.o b/matrix.o
index 4180cf6ac3e7f81eeca9ac7669e9928d8e04b74a..a992237fd6cce6412596cf3bc9be23b135a15ebe 100644
GIT binary patch
literal 3872
zcmeZaWMcq<ciapNDj)^}3!`31YDEc{4Iw75F)*+&GB9l6gzya+7#I{73=;HG5=#;x
zLO4kW27?27NyWuD6+k5#K<bK64Sd4Dz%Yd!ssKtkFc>)Kn?N~G3gqqz4k!mofz=tB
zLU|BMf{}q?4hI9nJZ=adqy?ldwDW268;#~#4u%r8=2{+xQm!2!1uy#;7#NPbsIc&W
zXciSl1_p)~Ac;=b58bXGx<ffS1;8{<X8=pLD+m92SDu3pm^)cipsL<<yK*249O`!c
z&>6sS-1Q5{l-KGY%?=#hp<fO@Vq!eh?fL~|LNCuzkZiZ>8^#lzOwF!e7`t7+Si5o*
zUF>%KaPlzNtrFd?9Ni8aFq^tv;mqT%AWtz&fGPxgs#NB<iwcJv$P+FqEFi;=v#5Zg
z66{QnQ34>sfu%D<g#~2hn}7fRce=iTxijv#>j#jo*B0HbZ@NJa{s40Dg>DA0)0sg|
z2RWzP_shYDOpGVG8M=Kx9DK;kc;YU@U8!c*4~!t=K|%Dv@=*Ei<18v%u#kj!kE2_l
z+x3g(q4H_nu5XZC4vh}5`}I)WF99<GWVS%JD^E9r<)KorM?g05bUUzE9x4Ir)JN56
zfvgjxmZO^i=JQW~QGA{U^LYr&=isOU`~1VfM|gb>a*_iFwlKMO5HnQfqlH8pA|x!p
z2~!l5FiZGBz6H4%>|KcW>`=XzgYX_tH%KXx_k_XTdjO5tmvcZmp>bPx^WELp7sp*e
zd5+<=6UZJ=Oe6gJ1mxcfcNw7m3Vi}k1K^OjaF^lU$-AyE?j5`v`=Z(P2|Ui9SRN|h
z*zNiNoNy4vK{dI)xGMokArHWg{a|^BzrFDP|NoHicmPcq{OuwC|NrlHeE>}z7NBgo
zl!1W(Dd~5*zG<#~!%(UX5_3`E04Z6)z`(E&ly;jBIDk?%h<O|-Cqw;v-1PxSrq}gJ
zCsgAeu-R{5dU{<S;E?GKebDXt1eSg_{RX9<7tjEH?F&mk#@((jum%9k)cvUTL4xE3
zEJ(@^K!W21G&stace}#f*6sQN8Y&u4uPSu9egP*JF;EyB0UON&^Gc`d7f|FPQU(vq
z4adO>zrYm2+@5sY^$jR=UYmmSff5BG`@exEin}q8@IHrXM6>G~csh7vd8m9}x9gWq
z7Zn!NA^=i8fQnMfL*<iDi!L7I*aF#)a5o3kq)V^_4-NH~ph!Q?qEdqphZJ8~ApIcs
zW28ccyD?x#-G*rat7K_@!Px2gp}F=0Lx~nx1Xflf3V;iDVS4Yw^g`l}10HvsC~m=7
z`0=-U{Qv)d!pXxECgdiT6lGTEB{TSi`uHd)+A2T<;M~NN6hj3yH3gV-VoHh;D271d
zx^_kR<qEd83LrrUM@<dHG1Rq7&d))}B<F)l3I+`%Lof{01la;H6-94RemO&tHiK%h
zjzU^yPO3s)eu+X_era9`7lUdFgKAEi0z<hrgKCO`Do7+<fgxHoMMpIymWx3(y@o+G
zoq>VD-PzenLBlsQ&pli(zbIY7-Pu{!OwU-)K-W-H0nA`v5CM6Lfq{XsDu{uxhJ#U>
zhlQnsk%2*m0fIqw*&2`<M?Q{LCMRB2rWHqdSXjXFHVh058yFZEG?C>~!O~#)7zPH0
zn+yyLyO8CXwt*FZ%m<~O$&3sPT%cMXW<E0;BS-;A9#nSDWny3uL6H}L%YzD#jm!)T
zVkq)LaQQo+vX_N{;Vg>%Cqc%8-S-F7_F-jU_=h6@3oNh0z`y{i|3nyq7#J8N89*VG
z3}=CCmI8}`GBkwsmVtpmkb!}LjRDm3fUtftFfd4i)s;cRRD@wIBTU^EIBO>(Ox<(1
z*gH7uGhFr<6HM<}IO`G<Oz(DPnCu~D1_oKMy|>_E_n8?O#KG=+#mv9}YO07Zd}C%{
zkO!+1W`XIIV*#~1LH^Z+i&?<Mn&D!7aIsx13=E23Q%<qK?6?P4_mTzX7Is#c9YU-y
z7kI(NLg8YStPBiFVDpx+!rZqHuI?}^1A{VH_BJadjfyaEvcXK|V}r@M!o|GcV(Dx!
z9mQ~#0s{jBsIe---~eYOz*!A&)&e-|0GtJ?(ja;n7-6R9fwC(oMKLfi{QJ+qkj@Ax
zTJ%842PzJtKxqm@GcqVJFo9Aqh=YdJ85kHqxeu%cEC*_qUj^k?kS?%@8v_GFKO+MJ
zLJcUz&SXLsiDzJ7Sj&to0xFmevmlF9GB7YqV1<bw_fJ5MV`l7QV_*RFO2C$a3FN*B
z69WSSGe{v=20<YAOPFz~LF$u$${S|JM+gIuSe;NdE7%-R8h{EQQB$C7P>+k55!4$2
zH`bw|5NaNT0+UP(@yUrfIr*^2QD9(Vh|k3kNh?ZC1*-=UU^VfH#l@*b&@LQUq@c7U
zIU}(Mqym(Km>A;I@(WV)AbgleK~ZL2Ng6~9tShx56KV*!#|P3?oSc{kRRWIX__XAl
z{9>5>U|ne-%OIveO-42ttZNkm1A`toWL2uFsu=WAGvd>V5_3~Q-UHQr@eohOLsDlv
z*oQDqNl{{6aRJCqm`Gwu3S47uX-)}4JSdqPK{Uf;j6h;APJBvcaY0UEB@Rc#XXX~f
L$H!;pCoup3<ur&*

delta 263
zcmZ1=w~dw8hmn;51acS|82BghiVG?*FfiO<U|@(~1PL=RFitcL7t=R^aA2eg0|Ub!
zhKZ+?<SZB%7!(*87?NPh85kHG7z`XjJD)bc(U`2jD8}+-!pXyvD>yuqK}It;@^Q2>
zIq|Z_9OYqQVPFtrU|`^5U|<ko0LijUe#z}Cu2+&;Q3ACJWGpiyNRDyxX`axD0W6&A
zP$`zlfxObDMo=Ee8_bL#=YX_81sNC^;*%3|a`Ka*0tyUF3^oi5lmGFFPoBWXJNZAK
FC;)YfCM^H}

diff --git a/matrix_compute.c b/matrix_compute.c
index dbbd85e..29bb3cc 100644
--- a/matrix_compute.c
+++ b/matrix_compute.c
@@ -1 +1,13 @@
-int main(){}
\ No newline at end of file
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include "matrix.h"
+
+int main(int argc, char *argv[]){
+
+        m_double* m = file2matrix("mat.dat");
+        matrix_display(m);
+        m_double* ma = matrix_transpose(m);
+        matrix_display(ma);
+        matrix2file(ma,"mat_new.dat");
+}
\ No newline at end of file
diff --git a/matrix_compute.exe b/matrix_compute.exe
index 2c3ce2bb599db4eeeaaf55a5829244da5d48c2d6..466c48cc43569509b9a25cd6407405a30d242680 100644
GIT binary patch
delta 12816
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
A8UO$Q

delta 9185
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
W#nv30{A7*NWRbORHuJ4}%Lo92COJz0

diff --git a/matrix_compute.o b/matrix_compute.o
index 8bdd7c1e0f37ce1dc7641608c1d1ebaaf04530c3..b1a7c647abc23595c1b6e4e233d709b31f117233 100644
GIT binary patch
delta 545
zcmbQkI*o(Zhmnl|1dNy%7(^%XiVLPNFfgz%GBDg=1PL=Ra7;7}x6><1Ni0c(2!Kct
z1_p)<r~(ilgdG?R9P~{<ECg0zU|^_WoVZA>egPu`g9Z~s2BZ<BI<)g?^OFzFZxmjD
z#E-LpR5O6toh~Xe-7YFJoh&L~J~F%0MMa|9MMVN8cicsVg@b{C0a<JZ$iS0_Crp@-
zn^>Zkl32pakegT%pO;z=;xJ77;1Lh@jUyjNE0Ys1D^u)I9u^h`E(Qh$0R{#J5e7j9
z1~89}L5zU`%oAZyV_;wq0?QgPFfa&%Sx#^<FSw2{kj&&j#!Oa_9UPPQGlmKy2OtXr
z0|PUo$V5j`PDzkE85kH?Co3{3GqO!~WzzHn3F(0dFjioI1e!IN2O?l1-XIPb!$e}i
zJP-jA$(o$cq-ztOmYI`kl$%&mlv%+L5252zGK&jx5-Z{SlA^@C;)49*RG5enNEZVD
D(EM2}

delta 191
zcmbQnF^84chmn;51QHk-82BghiVKP`FfiO<U|{fJ1PL=RFitcL7t=R^aA2eg0|Ubc
zhKZ-tG(;E~7{Xvm85kHG7z`XjJD)Z``S1dycn63$d3eHv$u*1~l0qP!BOgaAlM^qi
z-%%bG76t}(1_lPc$;wQbtRPv&$rG7ECkC)g=40kyXJKGqU}jXF=qSnwvJj-1b+R?H
LCZpcuwamHzo(~=a

diff --git a/pointer_sort.exe b/pointer_sort.exe
index 8d039c0d7d3fc7583840abc83733a9b2ef334fe1..8cc18ba5fc95872cf6b72e239126baf054cb4e36 100644
GIT binary patch
delta 22
ecmdmXoN3!}rU@O)mlQ5c?Dl1vU9s`jokakAybEIh

delta 22
ecmdmXoN3!}rU@O)LEh&lcKb3(E#7$R&LRMI1`4+T

-- 
GitLab