| #include <math.h> | |
| 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; | |
| } |