This doesn't work.
It's using floating point calculations in the kernel, which can result in
various random errors (the x86 fp emulation doesn't actually support
emulating kernel code, and even if you have fp hardware there is nothing
that guarantees that the floating point state is sane).
Linus