#include 
#include 
#include 

void do_inst();
double corr ( double *a, double *b, long n );

double time()
{
    struct tms t;
    times(&t);
    return (t.tms_utime+t.tms_stime)/100.0;
}

int main ( int argc, char **argv )
{
    int size, count;
    int i;
    double start, end;
    double instrs;
    double *a, *b, c;

    size = argc > 1 ? atoi(argv[1]) : 100000;
    count = argc > 2 ? atoi(argv[2]) : 10000;

    a = malloc(size*sizeof(double)+16);
    b = malloc(size*sizeof(double)+16);
    a = (double *)( (long) a & 0xffffffffffffffc0);
    b = (double *)( (long) b & 0xffffffffffffffc0);
    for ( i = 0; i < size; i++ ) {
        a[i] = i+random()%1000;
        b[i] = i+random()%1000;
    }
    start = time();
    for ( i = 0; i < count; i++ ) {
        c = corr(a,b,size);
        if ( i == 0 ) printf("c = %10.6f\n",c);
    }
    end = time();
    printf("used %10.4f\n",end-start);
    instrs = count * size;
    return 0;
}