Sintaxe C para funções retornando ponteiros de função

Considere os seguintes typedefs:

typedef int (*f1)(float);
typedef f1 (*f2)(double);
typedef f2 (*f3)(int);

f2 é uma função que retorna um ponteiro de função. O mesmo comf3, mas o tipo da função, o ponteiro para o qualf3 retorna, éf2. Como posso definirf3 sem os typedefs? Eu sei typedefs são o mais limpo e mais fácil de entender maneira de definirf3. No entanto, minha intenção aqui é entender melhor a sintaxe C.

questionAnswers(6)

yourAnswerToTheQuestion