#include float sqrtf(float x) { long double t; /* The long double result has sufficient precision so that * second rounding to float still keeps the returned value * correctly rounded, see Pierre Roux, "Innocuous Double * Rounding of Basic Arithmetic Operations". */ __asm__ ("fsqrt" : "=t"(t) : "0"(x)); return (float)t; }