#include<stdio.h>
#include<math.h>
#include"trace.h"
#define PI 3.14159265358979323846264338327950288419716939937510

double bar(double);

double eval(double f(double), double x){
	return f(x);
}

int main(){
	int n=5; double a[n];
	double x=PI;
	double y=eval(sin,x);
	double (*f)(double);
	printf("sin(%g)=%g\n",x,y);
	f=&cos;
	y=eval(f,x);
	printf("cos(%g)=%g\n",x,y);
	f=bar;
TRACE("calling for loop...\n");
	for(int i=0;i<n;i++){
TRACE("i=%i\n",i);
		a[i]=5;
	}
TRACE("for loop exited\n");
	x=4;
TRACE("calling bar\n");
	y=eval(f,x);
TRACE("bar exited\n");
	printf("bar(%g)=%g\n",x,y);
TRACE("1\n");
	printf("a[n-1]=%g\n",a[n-1]);
TRACE("2\n");
return 0;
}
