use cfloat instead of float.h