#include <stdio.h>

#define NUMBER_OF_TEST_FUNCTIONS 17
#define NUMBER_OF_TESTS          2

char *message[] = {
    "x = y",
    "y = (int) x",
    "x + y",
    "x - y",
    "x * y",
    "x / y",
    "sqrt(x)",
    "exp(x)",
    "sin(x)",
    "asin(x)",
    "floor(x)",
    "ceil(x)",
    "modf(x, &iptr)",
    "log(x)",
    "pow(x, y)",
    "lb(x)",
    "atan(x)"
};

int
main(int argc, char **argv)
{
    FILE *f;
    int i, n;
    char c;
    char file[20];
    int measurements[NUMBER_OF_TESTS][2][NUMBER_OF_TEST_FUNCTIONS];
    int results[2][NUMBER_OF_TEST_FUNCTIONS];
	
	for(n = 0; n < NUMBER_OF_TEST_FUNCTIONS; n++) {
		results[0][n] = 0;
		results[1][n] = 0;
	}
	for(n = 0; n < NUMBER_OF_TESTS; n++) {
		for(i = 0; i < NUMBER_OF_TEST_FUNCTIONS; i++) {
    		measurements[n][0][i] = 0;
    		measurements[n][1][i] = 0;
		}
	}
    for(n = 0; n < NUMBER_OF_TESTS; n++) {
        sprintf(file, "measurements-%d.log", n);
        if((f = fopen(file, "r")) == NULL) {
            perror("can not open data file");
            exit(1);
        }
        for(i = 0; i < NUMBER_OF_TEST_FUNCTIONS; i++) {
            fscanf(f, "%d", &measurements[n][0][i]);
            while((c = fgetc(f)) != '\n');

            fscanf(f, "%d", &measurements[n][1][i]);
            while((c = fgetc(f)) != '\n');
        }
        if(fclose(f)) {
            perror("can not close data file");
            exit(1);
        }
    }
    for(n = 0; n < NUMBER_OF_TESTS; n++) {
        for(i = 0; i < NUMBER_OF_TEST_FUNCTIONS; i++) {
            results[0][i] += measurements[n][0][i];
            results[1][i] += measurements[n][1][i];
        }
    }
    for(i = 0; i < NUMBER_OF_TEST_FUNCTIONS; i++) {
        printf("%s => %5.2f",
                message[i],
                100 * ((double) results[1][i] /(double)results[0][i]));
		printf(" %\n");
    }
}

