double log10 (double);
double pow (double, double);
double sqrt (double);
-extern __inline__ double sqrt (double x)
-{
- double res;
- __asm__ ("fsqrt;" : "=t" (res) : "0" (x));
- return res;
-}
double ceil (double);
double floor (double);
double fabs (double);
extern long double powl (long double, long double);
/* 7.12.7.5 The sqrt functions. Double in C89. */
-extern __inline__ float sqrtf (float x)
-{
- float res;
- __asm__ ("fsqrt" : "=t" (res) : "0" (x));
- return res;
-}
-
-extern __inline__ long double sqrtl (long double x)
-{
- long double res;
- __asm__ ("fsqrt" : "=t" (res) : "0" (x));
- return res;
-}
+extern float sqrtf (float);
+extern long double sqrtl (long double);
/* 7.12.8 Error and gamma functions: TODO */
#include <math.h>
+#include <errno.h>
+
+extern long double __QNANL;
+
long double
sqrtl (long double x)
{
- long double res;
- asm ("fsqrt" : "=t" (res) : "0" (x));
- return res;
+ if (x < 0.0L )
+ {
+ errno = EDOM;
+ return __QNANL;
+ }
+ else
+ {
+ long double res;
+ asm ("fsqrt" : "=t" (res) : "0" (x));
+ return res;
+ }
}