this won't likely build cleanly: it uses floats in places, which isn't supported in kernel build well.