I am working on C implementations of calculus operations (such as derivatives, integrals, etc...). As an example, here's the template definition of my `derivative` function:

```
double derivative(double (*f)(double), double x);

```

Let's say I want to compute the derivative of `exp` at 1, the call would then be: `derivative(exp, 1);`

Pretty basic stuff. Now my question is, how would I go about (if it is even possible) to pass a composition to my `derivative` function? I tried passing `exp(cos)` which got me

`error: passing 'double (double)' to parameter of incompatible type 'double'`.

How would I do it? Is it even possible?