#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

int main( int argc, char ** argv ) {

	double **A, *b, *x, sum; 
	long i, j, N = 1000;
	time_t start_time;
	
	// Wenn ein Argument in der Kommandozeile uebergeben wird, lese diesen Wert fuer N aus
	if ( argc > 1 )
		sscanf( argv[1], "%d", &N );

	// Allokation
	A = (double **) malloc( N * sizeof( double * ) );
	for ( i=0; i<N; i++)
		A[i] = (double *) malloc( N * sizeof( double ) );
	b = (double *) malloc( N * sizeof( double ) );
	x = (double *) malloc( N * sizeof( double ) );

	// Initialisierung von A und b

	// HIER CODE EINFUEGEN

	// Algorithmus A
	start_time = time(NULL);
	printf( "Spaltenbasierter Modus\n" );

	// HIER CODE EINFUEGEN

	printf("Sekunden: %li\n", (time(NULL) - start_time));
		
		
	// Algorithmus B
	start_time = time(NULL);
	printf( "Zeilenbasierter Modus\n" );

	// HIER CODE EINFUEGEN

	printf("Sekunden: %li\n", (time(NULL) - start_time));

	// Freigeben des dynamisch allokierten Speichers
	for ( i=0; i<N; i++)
		free( A[i] );
	free( A );
	free( b );
	free( x );
		
	return 0;
}

