// Svmult() multiplies mathematically the matrix of 'sylvester' with the matrix of 'vector' void Svmult(Sylvester * sylvester, Vector * vector, Vector ** fin){ if(vector->dim!=sylvester->dim){ printf("Multiplication impossible due to different matrix dimensions!\n"); deleteVector(vector); return; } int i=0,j=0; char v='x'; if(sylvester->hidden=='x'){v='y';} Sylvester * temp=NULL; copysylvester(&temp, sylvester); for(i=0;i<temp->dim;i++){ for(j=0;j<temp->dim;j++){ multiply1polyonym(&(temp->matrix[i][j]), &(temp->matrix[i][j]),(vector->matrix[j]).matrix[0]); } } printVector(vector); createZeroVector(fin, vector->dim, v); for(i=0;i<temp->dim;i++){ for(j=0;j<temp->dim;j++){ add1polyonyms(&((*fin)->matrix[i]), &((*fin)->matrix[i]), &(temp->matrix[i][j])); } } printVector(*fin); destroysylvester(&temp); deleteVector(vector); deleteVector(*fin); }
void testcreatesylvesteranddestroysylvester(void) { Polyonym2 poly1; int ** matrix1 = NULL; matrix1=malloc(sizeof(int *) * 2); matrix1[0]=malloc(sizeof(int)*2); matrix1[1]=malloc(sizeof(int)*2); matrix1[0][0] = 0; matrix1[0][1] = 1; matrix1[1][0] = 2; matrix1[1][1] = 3; poly1.matrix = matrix1; poly1.dy = 1; poly1.dx = 1; Polyonym2 poly2; int ** matrix2 = NULL; matrix2=malloc(sizeof(int *) * 2); matrix2[0]=malloc(sizeof(int)*2); matrix2[1]=malloc(sizeof(int)*2); matrix2[0][0] = 0; matrix2[0][1] = 1; matrix2[1][0] = 2; matrix2[1][1] = 3; poly2.matrix = matrix2; poly2.dy = 1; poly2.dx = 1; Sylvester * sylv; createsylvester(&sylv, &poly1, &poly2); destroysylvester(&sylv); free(matrix1[1]); free(matrix1[0]); free(matrix1); free(matrix2[1]); free(matrix2[0]); free(matrix2); }