From e2ef167d38301ee1baf77fef7c1bd0838db2fe9a Mon Sep 17 00:00:00 2001 From: Cesar Angeles Date: Thu, 10 Sep 2020 10:21:22 -0500 Subject: [PATCH 1/4] All C files --- Sequences.c | 46 ++++++++++++++++++++++++++++++++++ files.c | 39 +++++++++++++++++++++++++++++ time_test_fibo.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 Sequences.c create mode 100644 files.c create mode 100644 time_test_fibo.c diff --git a/Sequences.c b/Sequences.c new file mode 100644 index 0000000..3d33564 --- /dev/null +++ b/Sequences.c @@ -0,0 +1,46 @@ +// +// Sequences.c +// +// +// Created by Cesar Angeles on 07/09/2020. +// + +#include +#include + +#define Sequences_IMPORT +#include "Sequences.h" + + + +long long int Sequences_sfibo(long long int n){ + long long int sequence_1 = 0, sequence_2 = 1, temp = 0; + int index = 0; + + for (index = 0; index < n; index ++){ + + temp = sequence_2; + sequence_2 = sequence_2 + sequence_1; + sequence_1 = temp; + + } + (n<=0) ? sequence_2 = 0 : (sequence_2 = sequence_1); + + return sequence_2; + +} + + + +long long int Sequences_rfibo(long long int n){ + + if (n == 1){ + return 1; + } + if(n > 1){ + return Sequences_rfibo(n - 1) + Sequences_rfibo(n - 2); + }else{ + return 0; + } + +} diff --git a/files.c b/files.c new file mode 100644 index 0000000..705c564 --- /dev/null +++ b/files.c @@ -0,0 +1,39 @@ +// +// files.c +// +// +// Created by Cesar Angeles on 07/09/2020. +// + +#include + +#define files_IMPORT +#include "files.h" + + + + + +FILE * file_new(char *name, char *mode){ + FILE * my_file = NULL; + + my_file = fopen(name, mode); + + if (my_file == NULL){ + puts("FILE OPEN ERROR"); + return NULL; + }else + return my_file; +} + + +void file_num_write(FILE * file,size_t columns, long double buff[][columns], size_t rows){ + size_t row, column = 0; + + for(row = 0; row < rows; row ++){ + for(column = 0; column < columns; column ++){ + fprintf(file, "%Lf\t", buff[row][column]); + } + fprintf(file, "\n"); + } +} diff --git a/time_test_fibo.c b/time_test_fibo.c new file mode 100644 index 0000000..ce39bdd --- /dev/null +++ b/time_test_fibo.c @@ -0,0 +1,64 @@ +// +// time_test_fibo.c +// +// +// Created by Cesar Angeles on 07/09/2020. +// + + + +#include +#include + + + +#include "Sequences.h" +#include "files.h" +#include "time_test_fibo.h" + +int main(void){ + + long long int value = 0; + int index = 0; + clock_t start, stop; + double cpu_time = 0; + double mean = 0; + FILE * record = NULL; + long double buffer[OBSERVATIONS][VALUES] = {0}; + size_t obs = 0; + + record = file_new("FIBO_TIME.dat","w"); + + //puts("Enter n fibo value:"); + //scanf("%lld", &value); + + printf("%lld\t", value); + + for (obs = 0; obs < OBSERVATIONS; obs ++){ + printf("%zu\n",obs); + start = clock(); + for (index = 0; index <= STATISTIC; index ++){ + Sequences_rfibo(obs); + } + stop = clock(); + + cpu_time = ((double)(stop-start)) /CLOCKS_PER_SEC / STATISTIC; + buffer[obs][INDEX] = obs; + buffer[obs][RECURSIVE] = cpu_time; + printf("Recursive Fibo time %f s\t", cpu_time); + + start = clock(); + for (index = 0; index <= STATISTIC; index ++){ + Sequences_sfibo(obs); + } + stop = clock(); + + cpu_time = ((double)(stop-start)) /CLOCKS_PER_SEC / STATISTIC; + buffer[obs][ITERATIVE] = cpu_time*1e3; + printf("Sequential Fibo time %f ms\n", cpu_time*1e3); + } + + file_num_write(record, VALUES, buffer, OBSERVATIONS); + fclose(record); + +} From 4c741e94edf9e0efc5e210e432c662015e36cb9b Mon Sep 17 00:00:00 2001 From: Cesar Angeles Date: Thu, 10 Sep 2020 17:55:41 -0500 Subject: [PATCH 2/4] .h added --- time_test_fibo.c | 2 ++ time_test_fibo.h | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 time_test_fibo.h diff --git a/time_test_fibo.c b/time_test_fibo.c index ce39bdd..ab76924 100644 --- a/time_test_fibo.c +++ b/time_test_fibo.c @@ -36,6 +36,8 @@ int main(void){ for (obs = 0; obs < OBSERVATIONS; obs ++){ printf("%zu\n",obs); + + start = clock(); for (index = 0; index <= STATISTIC; index ++){ Sequences_rfibo(obs); diff --git a/time_test_fibo.h b/time_test_fibo.h new file mode 100644 index 0000000..2b90c1f --- /dev/null +++ b/time_test_fibo.h @@ -0,0 +1,24 @@ +// +// time_test_fibo.h +// +// +// Created by Cesar Angeles on 07/09/2020. +// + +#ifndef time_test_fibo_h +#define time_test_fibo_h + +#include +#include "files.h" + +#define STATISTIC 100.0 +#define OBSERVATIONS 26 +#define VALUES 3 + +typedef enum{ + INDEX, + RECURSIVE, + ITERATIVE +}TYPE; + +#endif /* time_test_fibo_h */ From d1a2af6a00702d4b70484e49beb3815b517ce177 Mon Sep 17 00:00:00 2001 From: Cesar Angeles Date: Sat, 12 Sep 2020 13:55:58 -0500 Subject: [PATCH 3/4] FIbo.dat added --- FIBO_TIME.dat | 26 ++++++++++++++++++++++++++ time_test | Bin 0 -> 13160 bytes 2 files changed, 26 insertions(+) create mode 100644 FIBO_TIME.dat create mode 100755 time_test diff --git a/FIBO_TIME.dat b/FIBO_TIME.dat new file mode 100644 index 0000000..c1948ff --- /dev/null +++ b/FIBO_TIME.dat @@ -0,0 +1,26 @@ +0.000000 0.000000 0.000010 +1.000000 0.000000 0.000000 +2.000000 0.000000 0.000000 +3.000000 0.000000 0.000010 +4.000000 0.000000 0.000020 +5.000000 0.000000 0.000020 +6.000000 0.000000 0.000020 +7.000000 0.000000 0.000030 +8.000000 0.000000 0.000020 +9.000000 0.000000 0.000020 +10.000000 0.000000 0.000030 +11.000000 0.000001 0.000040 +12.000000 0.000001 0.000050 +13.000000 0.000002 0.000040 +14.000000 0.000003 0.000040 +15.000000 0.000005 0.000040 +16.000000 0.000008 0.000060 +17.000000 0.000013 0.000050 +18.000000 0.000020 0.000050 +19.000000 0.000032 0.000050 +20.000000 0.000052 0.000060 +21.000000 0.000082 0.000060 +22.000000 0.000130 0.000060 +23.000000 0.000211 0.000050 +24.000000 0.000341 0.000060 +25.000000 0.000569 0.000060 diff --git a/time_test b/time_test new file mode 100755 index 0000000000000000000000000000000000000000..d6508125d2111ccfd65ddce2419eee9173304eb5 GIT binary patch literal 13160 zcmeHNZ)_Y#6`xD&5T{A^j#8-outvc`#QL(%K+;$|EM z%fBWgG?LpK)*0K_>1I)gOg1->sZV+RCGU3p^(YNjb`3Twe~tLapO`X|GsY~Gy#6jI ze}|O=k_q>EyD7d{COex*A5jWkfA1-OQ)->$=GNjH3qr)E)0qZ5w-Jt-3D__UN;?{{ALqa30}vNtAY#ThA2&Z7&lxBo!Dcx-t8n3FBYhn75X z^F>k0U+SboQ$ie>Zk+P={#-X?MD}i@`$X#08^vX#J8{*g84G*jf-IXSF89nrB%>m8 zGBq)s6f@b`+xm+rH{`!LF1%H?#a#mxVltYIHYU9BMZ!*e?pa7~_Sdj4R_r+`OWM&wc29I~fas&OOZ7 z3g}(vBk0uJJ?L({I7o%2fy4fTO|r|<^9ZAFMc7fk|f)Ap*tqbQTKjr4jf=v7Nq0<_j zIWQT(FIAus3*s3&naLWd?mgXzD=`5jv`?Xv|1RJ|bi0xXFTeQ++^Gm01%XGP@CQzXqn`azS=~1Okd@n)2mvM-Xphkn-}!5q#N}$@HY4|=$fUk<`)75eYLVw ztJQe^RF!GxwviDwAdeOL)q=KbWshIg9*8g*PyXF7Vp@aMT0k?ERh7c343d?ce|DGa z;L|eTLdpImZDkFu@iP^A`@HZbg=AlLrfnWrJ4GeDRNM zJOJ~dWn!;C6ySyO^*&zgJ%%XtoeO)vv0(ohzpgM`=IsuG`f}xa5-a#C_Krevp4qQC zN-K4xmC6xP%3m7+X!1N~-aU--@BAmX+P8w?79mtEnOpx|t2qZUnPN-kdpDd(?a768 zEo7D<5?ul1C39J=@}e1p2``j>QAQm0qZCEST&gecewk*9y|04U``#y2Y0RycX)j*f zeF-awe~ZU5e}$afujS*&5onVH?WY~>RZJGlmoR7ll-3L88u&)k>sqk=JXF`U2a9x) zxYoU>eLXC1K{~cS`=46PlBc8xAeqXq0GJ(f{ModhWjdrt-ud>WIM>n(TGzI5xQ=TR zi*fK#$$ts_(?BY?ZM)p|%ZtR{Tjw1F;ZUBVU@nkDb3uFlb?ue)!as1be_`L>x1IaL zk7()bMP6)+@Wpc5^;g>o;kV=sxb}^;FxIe>vs&Ce0VneT`w9}JV9vvl{T$d^!gCU; zw};1q-&?^$z&&!3fGf$+bg( zHDvw_8^0yTn*r%jfKYJj+94O17|a38C7A)vC8*aVh00l^gPY9O6-sYBW(UBB5|FfYMaGx34XEXngT*XZ4iU$t>`rrlNR zd={T}waz&?ep8Om$?@BAJTJ!=%StYKM zxZe`@8RF>Id@4fRYs3u`_Y!gA#Ql)Cqr_bVw{Kuj4-b#%`@{O^=1Vq8F$&^ki=2z#EBP^WUCk&$bJTit;J`jA`Bq8@)8BO; z0i~W&e-9*{?sF@?F@y4p6+-K$x}5L_9|0c$9|0c$9|0c$9|0c$9|0c$9|0c$9|0eM zI~Rc$)&C#AqUeI6Zz%dZMc-D`R&-s_I~N)MWIh5u0zLvh0zLvh0zLvh0zLvh0zLvh z0zLwF4g#T1u&3xWp@^VT_-O2?h)o?8M{?2GN%n%qV_q`&v-53 z(L@qUna%JNOHRj*k`ROthm{&sRvSHt&gN! zHiH#ZE(q4n+C*wf7$;DTku^|jAEmH*of3?gkr8ZHJdrd+nvJERi8M=5aRl3tiKAwN z4a`cieA>M-s=uIi z75(lG#v);-m_k;#V6g{tq;n6t28L=fNdBahgBTsTPs%9GQTlt797MSY>5nRz>W4|D zO9CZUwy$7pmQQ))XFT#*kNho6N7d`S%JTlc|<0!H=oocqJ&Y21$@y|qz zDuSq*l1~5s^ukOu?$NobrU~Z?#Vu}MI5&=)R9yW&h0KAL?3TIOGUMdCN?bQ(RkGI8 b)J;$~HJzlq>3yIipPmfz_gED9 Date: Sat, 12 Sep 2020 18:10:31 -0500 Subject: [PATCH 4/4] Entrega --- ...ura de pantalla de 2020-09-10 10-45-35.png | Bin 0 -> 68884 bytes archivos.c | 73 ++++++++++++++++++ archivos.c~ | 73 ++++++++++++++++++ archivos.h | 58 ++++++++++++++ archivos.h~ | 58 ++++++++++++++ funcionesfibo.c | 50 ++++++++++++ funcionesfibo.c~ | 50 ++++++++++++ funcionesfibo.h | 44 +++++++++++ funcionesfibo.h~ | 44 +++++++++++ timetest.c | 60 ++++++++++++++ timetest.c~ | 60 ++++++++++++++ timetest.h | 20 +++++ timetest.h~ | 20 +++++ 13 files changed, 610 insertions(+) create mode 100644 Captura de pantalla de 2020-09-10 10-45-35.png create mode 100644 archivos.c create mode 100644 archivos.c~ create mode 100644 archivos.h create mode 100644 archivos.h~ create mode 100644 funcionesfibo.c create mode 100644 funcionesfibo.c~ create mode 100644 funcionesfibo.h create mode 100644 funcionesfibo.h~ create mode 100644 timetest.c create mode 100644 timetest.c~ create mode 100644 timetest.h create mode 100644 timetest.h~ diff --git a/Captura de pantalla de 2020-09-10 10-45-35.png b/Captura de pantalla de 2020-09-10 10-45-35.png new file mode 100644 index 0000000000000000000000000000000000000000..13ddb954eb5de2b0c54b415e0aa3cdce974f3cf7 GIT binary patch literal 68884 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

+d6Roqw>ukw@NOYvFl8dEGh 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 literal 0 HcmV?d00001 diff --git a/archivos.c b/archivos.c new file mode 100644 index 0000000..9d18bf4 --- /dev/null +++ b/archivos.c @@ -0,0 +1,73 @@ +// +// +// archivos.c +// +// Created by Sergio Medina Galàn and Gustavo Luna Maya on 12/09/2020 +// +// + + +/*Include standard headers*/ +#include +#include +#include + +/*Include modules header we directly invoke here: */ +#include"archivos.h" + +/** + * Initialises a new file pointer identified via its name and mode. + * @param + * name (char *): + * Name of the file + * mode (char *): + * Mode of file to be opened {r, rb, a, ab, w, wb} + * + * @return FILE * opened_file. +*/ +extern FILE * file_new( char * name, char *mode) +{ + FILE *fp; + fp = fopen(name,mode); + return fp; +} + + +/** + * Writes a bidimensional buffer array into a file. + * @param + * file (FILE *): + * Storage file + * columns (size_t ): + * length of the buffer array + * buff [ ][columns] (long double): + * RAM matrix + * rows (size_t): + * width of the storage buffer + * + * @return void. +*/ +extern void file_num_write(FILE * file, size_t columns, long double buff[] [columns], size_t rows) +{ + char linea[10]; + sprintf(linea,"%zu %zu \n",rows,columns); + // fputs (linea, file); + for (size_t i =0; i +#include +#include + +/*Include modules header we directly invoke here: */ +#include"files.h" + +/** + * Initialises a new file pointer identified via its name and mode. + * @param + * name (char *): + * Name of the file + * mode (char *): + * Mode of file to be opened {r, rb, a, ab, w, wb} + * + * @return FILE * opened_file. +*/ +extern FILE * file_new( char * name, char *mode) +{ + FILE *fp; + fp = fopen(name,mode); + return fp; +} + + +/** + * Writes a bidimensional buffer array into a file. + * @param + * file (FILE *): + * Storage file + * columns (size_t ): + * length of the buffer array + * buff [ ][columns] (long double): + * RAM matrix + * rows (size_t): + * width of the storage buffer + * + * @return void. +*/ +extern void file_num_write(FILE * file, size_t columns, long double buff[] [columns], size_t rows) +{ + char linea[10]; + sprintf(linea,"%zu %zu \n",rows,columns); + // fputs (linea, file); + for (size_t i =0; i + +#ifdef files_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/* files.h -- Function prototypes */ + +/** + * Instanciates a new file pointer identified via its name and mode. + * @param + * name (char *): + * Name of the file + * mode (char *): + * Mode of file to be opened {r, rb, a, ab, w, wb} + * + * @return FILE * opened_file. +*/ +EXTERN FILE * file_new(char *name, char *mode); + + + +/** + * Writes a bidimensional buffer array into a file. + * @param + * file (FILE *): + * Storage file + * columns (size_t ): + * length of the buffer array + * buff [ ][columns] (long double): + * RAM matrix + * rows (size_t): + * width of the storage buffer + * + * @return void. +*/ + +EXTERN void file_num_write(FILE * file, size_t columns, long double buff[] [columns], size_t rows); + +#undef files_IMPORT +#undef EXTERN + + + +#endif /* files_h */ diff --git a/archivos.h~ b/archivos.h~ new file mode 100644 index 0000000..7ddc38b --- /dev/null +++ b/archivos.h~ @@ -0,0 +1,58 @@ +// +// files.h +// +// +// Created by Cesar Angeles on 07/09/2020. +// + +#ifndef files_h +#define files_h + +#include + +#ifdef files_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/* files.h -- Function prototypes */ + +/** + * Instanciates a new file pointer identified via its name and mode. + * @param + * name (char *): + * Name of the file + * mode (char *): + * Mode of file to be opened {r, rb, a, ab, w, wb} + * + * @return FILE * opened_file. +*/ +EXTERN FILE * file_new(char *name, char *mode); + + + +/** + * Writes a bidimensional buffer array into a file. + * @param + * file (FILE *): + * Storage file + * columns (size_t ): + * length of the buffer array + * buff [ ][columns] (long double): + * RAM matrix + * rows (size_t): + * width of the storage buffer + * + * @return void. +*/ + +EXTERN void file_num_write(FILE * file, size_t columns, long double buff[] [columns], size_t rows); + +#undef files_IMPORT +#undef EXTERN + + + +#endif /* files_h */ diff --git a/funcionesfibo.c b/funcionesfibo.c new file mode 100644 index 0000000..2c36fe7 --- /dev/null +++ b/funcionesfibo.c @@ -0,0 +1,50 @@ +// +// +// funcionesfibo.c +// +// Created by Sergio Medina Galàn and Gustavo Luna Maya on 12/09/2020 +// +// + + +/*Inlcude standard headers*/ +#include + +/*Inlude modules header we directly invoke here: */ +#include "funcionesfibo.h" + + +/** + * Returns the value of the fibonacci sequence at index n calculated recursively + * @param + * n (long long int): + * Index of the fibonacci sequence + * @return long long int value +*/ +extern long long int Sequences_rfibo(long long int n) +{ + if (n==0 || n ==1) + return n; + else + return Sequences_rfibo(n-2) + Sequences_rfibo(n-1); + } + +/** + * Returns the value of the fibonacci sequence at index n calculated sequentially + * @param + * n (long long int): + * Index of the fibonacci sequence + * @return long long int value +*/ +extern long long int Sequences_sfibo(long long int n) +{ + long long int p=0,s=1,u; + int i; + for(i=0; i<=n;i++){ + u=p+s; + p=s; + s=u; + + } + return u; +} diff --git a/funcionesfibo.c~ b/funcionesfibo.c~ new file mode 100644 index 0000000..eb82119 --- /dev/null +++ b/funcionesfibo.c~ @@ -0,0 +1,50 @@ +// +// +// Sequences.c +// +// Created by Sergio Medina Galàn and Gustavo Luna Maya on 12/09/2020 +// +// + + +/*Inlcude standard headers*/ +#include + +/*Inlude modules header we directly invoke here: */ +#include "Sequences.h" + + +/** + * Returns the value of the fibonacci sequence at index n calculated recursively + * @param + * n (long long int): + * Index of the fibonacci sequence + * @return long long int value +*/ +extern long long int Sequences_rfibo(long long int n) +{ + if (n==0 || n ==1) + return n; + else + return Sequences_rfibo(n-2) + Sequences_rfibo(n-1); + } + +/** + * Returns the value of the fibonacci sequence at index n calculated sequentially + * @param + * n (long long int): + * Index of the fibonacci sequence + * @return long long int value +*/ +extern long long int Sequences_sfibo(long long int n) +{ + long long int p=0,s=1,u; + int i; + for(i=0; i<=n;i++){ + u=p+s; + p=s; + s=u; + + } + return u; +} diff --git a/funcionesfibo.h b/funcionesfibo.h new file mode 100644 index 0000000..11d5bc1 --- /dev/null +++ b/funcionesfibo.h @@ -0,0 +1,44 @@ +// +// funcionesfibo.h +// +// +// Created by Cesar Angeles on 07/09/2020. +// + +#ifndef Sequences_h +#define Sequences_h + +#include + +#ifdef Sequences_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/* Sequences.h -- Function prototypes */ + +/** + * Returns the value of the fibonacci sequence at index n calculated sequentially + * @param + * n (long long int): + * Index of the fibonacci sequence + * @return long long int value +*/ +EXTERN long long int Sequences_sfibo(long long int n); + + +/** + * Returns the value of the fibonacci sequence at index n calculated recursively + * @param + * n (long long int): + * Index of the fibonacci sequence + * @return long long int value +*/ +EXTERN long long int Sequences_rfibo(long long int n); + + +#undef Sequences_IMPORT +#undef EXTERN +#endif /* Sequences_h */ diff --git a/funcionesfibo.h~ b/funcionesfibo.h~ new file mode 100644 index 0000000..dac8ae0 --- /dev/null +++ b/funcionesfibo.h~ @@ -0,0 +1,44 @@ +// +// Sequences.h +// +// +// Created by Cesar Angeles on 07/09/2020. +// + +#ifndef Sequences_h +#define Sequences_h + +#include + +#ifdef Sequences_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/* Sequences.h -- Function prototypes */ + +/** + * Returns the value of the fibonacci sequence at index n calculated sequentially + * @param + * n (long long int): + * Index of the fibonacci sequence + * @return long long int value +*/ +EXTERN long long int Sequences_sfibo(long long int n); + + +/** + * Returns the value of the fibonacci sequence at index n calculated recursively + * @param + * n (long long int): + * Index of the fibonacci sequence + * @return long long int value +*/ +EXTERN long long int Sequences_rfibo(long long int n); + + +#undef Sequences_IMPORT +#undef EXTERN +#endif /* Sequences_h */ diff --git a/timetest.c b/timetest.c new file mode 100644 index 0000000..89db07b --- /dev/null +++ b/timetest.c @@ -0,0 +1,60 @@ +// +// time_test_fibo.c +// +// +// Created by Cesar Angeles on 07/09/2020. +// + +/*Include standard headers*/ +#include +#include +#include + +/*Include modules header we directly invoke here: */ +#include "funcionesfibo.h" +#include "archivos.h" +#include "timetest.h" + +/*The function main */ +int main(void){ + + long long int value =0; + int index =0; + clock_t start, stop; + double cput =0; + double mean =0; + FILE * record = NULL; + long double buffer [OBSERVATIONS][VALUES] ={0}; + size_t obs =0; + + record = file_new("FIBO_TIME.dat","w"); + + for(obs=0; obs < OBSERVATIONS; obs++){ + printf(" %zu\n",obs); + start = clock(); + for( index=0; index <= 100; index++){ + Sequences_rfibo(obs); + } + stop = clock(); + + cput= ((double)(stop-start)) /CLOCKS_PER_SEC /100; + buffer[obs][0] = obs; + buffer[obs][1] = cput; + printf("Recursiva %f s \t", cput); + + + start = clock(); + for( index=0; index <= 100; index++){ + Sequences_sfibo(obs); + } + stop = clock(); + + cput= ((double)(stop-start)) /CLOCKS_PER_SEC /100; + + buffer[obs][2] = cput*1e3; + printf("Secuencial %f ms \t", cput*1e3); + } + file_num_write(record, VALUES, buffer, OBSERVATIONS); + fclose(record); +} + diff --git a/timetest.c~ b/timetest.c~ new file mode 100644 index 0000000..f8a1af1 --- /dev/null +++ b/timetest.c~ @@ -0,0 +1,60 @@ +// +// time_test_fibo.c +// +// +// Created by Cesar Angeles on 07/09/2020. +// + +/*Include standard headers*/ +#include +#include +#include + +/*Include modules header we directly invoke here: */ +#include "Sequences.h" +#include "files.h" +#include "time_test_fibo.h" + +/*The function main */ +int main(void){ + + long long int value =0; + int index =0; + clock_t start, stop; + double cput =0; + double mean =0; + FILE * record = NULL; + long double buffer [OBSERVATIONS][VALUES] ={0}; + size_t obs =0; + + record = file_new("FIBO_TIME.dat","w"); + + for(obs=0; obs < OBSERVATIONS; obs++){ + printf(" %zu\n",obs); + start = clock(); + for( index=0; index <= 100; index++){ + Sequences_rfibo(obs); + } + stop = clock(); + + cput= ((double)(stop-start)) /CLOCKS_PER_SEC /100; + buffer[obs][0] = obs; + buffer[obs][1] = cput; + printf("Recursiva %f s \t", cput); + + + start = clock(); + for( index=0; index <= 100; index++){ + Sequences_sfibo(obs); + } + stop = clock(); + + cput= ((double)(stop-start)) /CLOCKS_PER_SEC /100; + + buffer[obs][2] = cput*1e3; + printf("Secuencial %f ms \t", cput*1e3); + } + file_num_write(record, VALUES, buffer, OBSERVATIONS); + fclose(record); +} + diff --git a/timetest.h b/timetest.h new file mode 100644 index 0000000..d6e3ddd --- /dev/null +++ b/timetest.h @@ -0,0 +1,20 @@ +// +// time_test_fibo.h +// +// +// Created by Cesar Angeles on 07/09/2020. +// + +#ifndef time_test_fibo_h +#define time_test_fibo_h + +#include +#include "archivos.h" + + +#define STATISTIC +#define OBSERVATIONS 25 +#define VALUES 3 + +#endif + diff --git a/timetest.h~ b/timetest.h~ new file mode 100644 index 0000000..16d4688 --- /dev/null +++ b/timetest.h~ @@ -0,0 +1,20 @@ +// +// time_test_fibo.h +// +// +// Created by Cesar Angeles on 07/09/2020. +// + +#ifndef time_test_fibo_h +#define time_test_fibo_h + +#include +#include "files.h" + + +#define STATISTIC +#define OBSERVATIONS 25 +#define VALUES 3 + +#endif +