共通関数があるとしてfloatかdoubleにコードを統一できないなら
単にfloat版とdouble版の関数を作るだけだろ

例えばこんな感じに

https://linuxjm.osdn.jp/html/LDP_man-pages/man3/clog10.3.html
> double complex clog10(double complex z);
> float complex clog10f(float complex z);
> long double complex clog10l(long double complex z);
>
> 他の関数は同じ機能を持つ float 版と long double 版である。

何かを修正するのと、新しく精度違う版が必要になった(機能追加)のを
ごっちゃにするんじゃねーよ