#include #include /* struct timeval */ #include /* struct rusage */ #define ITERATE 5000 #define ITERATE_SMALL 1 #define MULT_FAC 1 #include #include "cheb.h" #include "cheb.rts.h" void (*spec)(float c[MAX], float, float); /* time declarations */ struct rusage start_struct, stop_struct; extern void print_times(struct rusage, struct rusage, int); extern void cheb(float c[MAX], int, float, float); extern void _Gcheb_1_0_0(float c[MAX], float, float); float func(float x); float c[MAX]; void print_vector(float c[MAX], int, int); void init_vector(float c[MAX], int, int); int i; main() { /**************************************************************************** * M = 5 ***************************************************************************/ /* original */ init_vector(c, 0, 4); getrusage(RUSAGE_SELF, &start_struct); for(i = 0; i < ITERATE; i++) cheb(c, 5, 1.0, 3.0); getrusage(RUSAGE_SELF, &stop_struct); printf("Original(5) "); print_times(start_struct, stop_struct, ITERATE); print_vector(c, 0, 4); /* compile time */ init_vector(c, 0, 4); getrusage(RUSAGE_SELF, &start_struct); for(i = 0; i < ITERATE; i++) _Gcheb_1_0_0(c, 1.0, 3.0); getrusage(RUSAGE_SELF, &stop_struct); printf("CT Spec (5) "); print_times(start_struct, stop_struct, ITERATE); print_vector(c, 0, 4); /* generate run time */ init_vector(c, 0, 4); getrusage(RUSAGE_SELF, &start_struct); spec = (void (*)(float c[MAX], float, float))rts_cheb_1(5); getrusage(RUSAGE_SELF, &stop_struct); printf("RT Gen (5) "); print_times(start_struct, stop_struct, ITERATE); printf("\n"); /* use run time */ init_vector(c, 0, 4); getrusage(RUSAGE_SELF, &start_struct); for(i = 0; i < ITERATE; i++) (*spec)(c, 1.0, 3.0); getrusage(RUSAGE_SELF, &stop_struct); printf("RT Spec (5) "); print_times(start_struct, stop_struct, ITERATE); print_vector(c, 0, 4); printf("\n"); } float func(float x) { return(cos(x)); } void print_vector(float c[MAX], int start, int stop) { int i; for(i = start; i < stop; i++) printf("%4.4f ", c[i]); printf("\n"); } void init_vector(float c[MAX], int start, int stop) { int i; for(i = start; i < stop; i++) c[i] = 0.0; }