#include "header.h" /* parses input file to create Matrix */ void mcreator(Matrix * pA) { Matrix A; int i, n, m, size; char filename[MAXFLEN]; FILE *mfp; /* determine size of matrix */ scanf("%s", &filename); mfp = fopen(filename, "r"); fscanf(mfp, "%d", &m); fscanf(mfp, "%d", &n); size = m*n; /* record matrix data from file */ float * arr = malloc(size*sizeof(float)); for(i = 0; i < size; i++) { fscanf(mfp, "%f", &arr[i]); } /* store recorded data */ pA->n = n; pA->m = m; pA->p = arr; } /* Reads Matrix structure and prints to stdio */ void mreader(Matrix * pA) { Matrix A = *pA; int i, j, m = A.m, n = A.n; float *arr = A.p; /* m: row n: column */ for(i = 0, j = 0; i < m*n; i++) { if (j < m - 1) // print new line at last row index { printf("%f\t", arr[i]); j++; } else { printf("%f\n", arr[i]); j = 0; } } } void mconvert(Matrix *pA, gsl_matrix_float *gsl_pA) { gsl_pA->size1 = pA->n; gsl_pA->size2 = pA->m; gsl_pA->tda = pA->m; gsl_pA->data = pA->p; // gsl_pA->block = pA->p; gsl_pA->owner = 1; } /* parses input file segment into vector */ void vcreator(Vector * pv) { int i, size; char filename[MAXFLEN]; FILE *vfp; /* determine vector size */ scanf("%s", &filename); vfp = fopen(filename, "r"); fscanf(vfp, "%d", &size); /* get vector data */ float * arr = malloc(size * sizeof(float)); for(i = 0; i < size; i++) { fscanf(vfp, "%f", &arr[i]); //printf("%f\n", arr[i]); } pv->n = size; pv->p = arr; } /* reads Vector */ void vreader(Vector *pv) { Vector v = *pv; int i, size = v.n; float * arr = v.p; printf("\n"); for(i = 0; i < size; i++) { printf("%f\n", arr[i]); } printf("\n"); } void vconvert(Vector *pv, gsl_vector_float *gsl_pv) { gsl_pv->size = pv->n; gsl_pv->stride = 1; gsl_pv->data = pv->p; // gsl_pv->block = pv->p; gsl_pv->owner = 1; } /* frees Vector memory */ void vdestroy(Vector *pv) { Vector v = *pv; free(v.p); } /* frees Matrix memory */ void mdestroy(Matrix *pA) { Matrix A = *pA; free(A.p); }