#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

#include "matrix.h"

void *thread_func(void *argument) {
	int position, line, column;
	position = *((int *) argument);
	line = position / dimension;
	column = position % dimension;
	matrixProduct[line][column] = scalar_product(matrixA[line], matrixB[column]);
	return NULL;
}

int main(int argc, char *argv[]){
	int i, square_dimension, *indice;
	pthread_t *threads;
		
	initialize(argc, argv);
	
	square_dimension = dimension * dimension;
	indice = (int *) malloc (square_dimension * sizeof(int));
	threads = (pthread_t *) malloc (square_dimension * sizeof(pthread_t));
	
	for(i = 0; i < square_dimension; i++){
		indice[i] = i;
		pthread_create(&(threads[i]), NULL, thread_func, &(indice[i]));
	}
	for(i = 0; i < square_dimension; i++){
		pthread_join(threads[i], NULL);
	}

	return 0;
}