This function seems to be able to compute clog with a worst case relative error of 4 or 5 ULP. For clogf I simply used double precision. That seems to get a errors as high as 1000 ULP. It might be simpler just to have clogf use clog: float complex clogf(float complex z) { return (clog(z)); }