1*c9945492SAndroid Build Coastguard Worker #include <math.h>
2*c9945492SAndroid Build Coastguard Worker
sqrtf(float x)3*c9945492SAndroid Build Coastguard Worker float sqrtf(float x)
4*c9945492SAndroid Build Coastguard Worker {
5*c9945492SAndroid Build Coastguard Worker long double t;
6*c9945492SAndroid Build Coastguard Worker /* The long double result has sufficient precision so that
7*c9945492SAndroid Build Coastguard Worker * second rounding to float still keeps the returned value
8*c9945492SAndroid Build Coastguard Worker * correctly rounded, see Pierre Roux, "Innocuous Double
9*c9945492SAndroid Build Coastguard Worker * Rounding of Basic Arithmetic Operations". */
10*c9945492SAndroid Build Coastguard Worker __asm__ ("fsqrt" : "=t"(t) : "0"(x));
11*c9945492SAndroid Build Coastguard Worker return (float)t;
12*c9945492SAndroid Build Coastguard Worker }
13