#include "csi.rts.h" #include "csi.h" #include "math.h" #define POINTS 10 void print_vector(char *, float *); void clear_vector(float *); extern void csi(int, float *, float *, float *); extern void _Gcsi_1_0_0(float *, float *); float x[MAX], y[MAX], z[MAX]; main() { int i, elements=POINTS; void (*spec)(float *,float *); /* initialize the input arrays */ for (i=0; i!=(POINTS+1); i++) { x[i] = i; y[i] = i * i * i; } /* call the original function */ clear_vector(z); print_vector("Original", z); csi(elements, x, y, z); print_vector("Original", z); printf("\n"); /* create and call the run-time specialization */ clear_vector(z); print_vector("RT Spec", z); spec = (void (*)(float *,float *))rts_csi_1(elements,x); spec (y,z); print_vector("RT Spec", z); printf("\n"); /* call the compile-time specialized function */ clear_vector(z); print_vector("CT Spec", z); _Gcsi_1_0_0 (y,z); print_vector("CT Spec", z); printf("\n"); } void print_vector(char *s, float *c) { int i; printf ("%s: ", s); for(i = 0; i < 10; i++) printf("%4.2f ", c[i]); printf("\n"); } void clear_vector(float *c) { int i; for(i = 0; i < 10; i++) c[i] = 0.0; }