// optimized versions of matrix diagonal summing #include "matvec.h" // You can write several different versions of your optimized function // in this file and call one of them in the last function. int sumdiag_VER1(matrix_t *mat, vector_t *vec) { // OPTIMIZED CODE HERE // Initialize Variables long mrow = mat->rows; long lenV = vec->len; int minus = mrow-1; vector_t vecX = *vec; //Checking for bad length of Vector if(lenV != (mrow + minus)){ printf("sumdiag_base: bad sizes\n"); return 1; } for(int i=0; i<(lenV); i++){ // initialize vector of diagonal sums VSET(vecX,i,0); // to all 0s } int dtemp; //keeps track of current diagonal for(int i =0; irows; long lenV = vec->len; int minus = mrow-1; matrix_t matM = *mat; vector_t vecX = *vec; //Checking for bad length of Vector if(lenV != (mrow + minus)){ printf("sumdiag_base: bad sizes\n"); return 1; } for(int i=0; i<(lenV); i++){ // initialize vector of diagonal sums VSET(vecX,i,0); // to all 0s } int dtemp; //keeps track of current diagonal int j; for(int i =0; irows; long lenV = vec->len; int minus = mrow-1; matrix_t matM = *mat; vector_t vecX = *vec; //Checking for bad length of Vector if(lenV != (mrow + minus)){ printf("sumdiag_base: bad sizes\n"); return 1; } for(int i=0; i<(lenV); i++){ // initialize vector of diagonal sums VSET(vecX,i,0); // to all 0s } int dtemp; //keeps track of current diagonal int j; for(int i =0; i