1 #include "quadmath-imp.h"
6 sqrtq (const __float128 x)
11 if (isnanq (x) || (isinfq (x) && x > 0))
19 /* Return NaN with invalid signal. */
20 return (x - x) / (x - x);
23 if (x <= DBL_MAX && x >= DBL_MIN)
25 /* Use double result as starting point. */
26 y = sqrt ((double) x);
28 /* Two Newton iterations. */
29 y -= 0.5q * (y - x / y);
30 y -= 0.5q * (y - x / y);
35 if (x <= LDBL_MAX && x >= LDBL_MIN)
37 /* Use long double result as starting point. */
38 y = sqrtl ((long double) x);
40 /* One Newton iteration. */
41 y -= 0.5q * (y - x / y);
46 /* If we're outside of the range of C types, we have to compute
47 the initial guess the hard way. */
53 y = scalbnq (y, exp / 2);
55 /* Two Newton iterations. */
56 y -= 0.5q * (y - x / y);
57 y -= 0.5q * (y - x / y);