My old implementation uses a pdf_func_t type. A call to pdf_eval_func( pdf_func_t, pdf_real_t in[], pdf_real_t out[]) can evaluate any pdf function in a uniform way.
Strangely enough, this highly specialized type seems to belong to the base layer. Its internals reflect the description in section 3.9, with emphasis on function application only. It is not a pdf object, and it does not use pdf objects. The object layer would provide a conversion constructor from pdf_obj_t to pdf_func_t. The base layer would handle cleanup and deallocation. What's your opinion? Given that interface and given that all the configuration parameters for any type of function can be expressed using base layer data types, I agree in that we can implement pdf_func_t in the base layer. There is a pdf_func_new_* function for each type of function, isnt it? So the question now is, what module in the base layer is the right one to contain the implementation of pdf_func? May we define a new module for that? In any case I think that the interpolation routines definite belong to the pdf-fp module: other parts of the library may find these functions useful.
