This avoids using function pointers for quite a few small functions, most of which just call DSP functions.
Function pointers are used for templated functions instead of needlessly duplicating many functions.