xref: /aosp_15_r20/external/musl/src/math/i386/sqrtf.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
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