#include #include #include /* needed for timer() */ #include /* needed for timer() */ /* function to return elapsed time since last reboot, in seconds */ double timer(void) { struct tms t; clock_t ticks = times(&t); return ((double) ticks)/ CLK_TCK; } /* main program */ int main(int argc, char* argv[]) { int N = 0; double * a; int i; double sum = 0.0; double product = 1.0; double start_time; double end_time; if ((argc < 2) || ((N = atoi(argv[1])) <= 0)) { fprintf(stderr, "Usage: %s number_of_elements\n", argv[0]); return 1; } start_time = timer(); a = malloc(sizeof(double) * N); if (a == NULL) { fprintf(stderr, "Unable to allocate memory for N = %d\n", N); return 1; } for (i=0; i < N; ++i) a[i] = ((double) (i+1))/N; for (i=0; i < N; ++i) sum = sum + a[i]; for (i=0; i < N; ++i) product = product * a[i] + 1; end_time = timer(); fprintf(stdout, "N = %d, sum = %g, product = %g, time = %g\n", N, sum, product, end_time - start_time); return 0; }