/* testpow.c: Program to time assembler vs. C implementations of * pow(). * Copyright (C) 1991 by Nicholas Wilt. All rights reserved. */ #include "testfpu.h" /* Number of repetitions to do */ #define NUM_REPS 1000L /* Size of array to test sumarray() on */ #define ARRSIZE 2 int main(int argc, char *argv[]) { struct time beg, end; double x; int y; double ret; long i; int j; long dead, slow, fast; long numreps; if (argc != 2) { fprintf(stderr, "Usage: testpow #iters\n"); exit(1); } else { char *sc; numreps = strtol(argv[1], &sc, 10); } printf("Calculating dead time..."); gettime(&beg); for (i = 0; i < numreps; i++) { x = (double) rand() / RAND_MAX; y = rand(); } gettime(&end); dead = diff_time(&beg, &end); printf("%.2f seconds\n", (float) dead/100); printf("Timing pow()..."); gettime(&beg); for (i = 0; i < numreps; i++) { x = (double) rand() / RAND_MAX; y = rand(); ret = pow(x, y); } gettime(&end); slow = diff_time(&beg, &end); printf("%.2f seconds\n", (float) slow/100); printf("Timing intpow()..."); gettime(&beg); for (i = 0; i < numreps; i++) { x = (double) rand() / RAND_MAX; y = rand(); ret = intpow(x, y); } gettime(&end); fast = diff_time(&beg, &end); printf("%.2f seconds\n", (float) fast/100); printf("intpow() %d%% faster than pow()\n", percent_diff(dead, fast, slow)); return 0; }