Las mejores joyas que he visto que han creado miembros de la comunidad han sido en ASM... Algunos, incluyendo a los Moderadores de esta sección y a mi, nos hemos vuelto un poco adictos a utilizar ASM Inline dentro de codigos en C/C++
Entonces prueba colocando un margen de error... seria lo mas correcto. Como te comente, todo depende de la precision que requieras y agregar el margen de error.
Modifique el codigo nuevamente... lo que sucede es que en los float existe un margen de error, son flotantes y dan un margen de precision, no exactitud.