Ejemplo n.º 1
0
// 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);
}