diff options
Diffstat (limited to 'sysdeps/i386')
-rw-r--r-- | sysdeps/i386/fpu/s_nextafterl.c | 3 | ||||
-rw-r--r-- | sysdeps/i386/fpu/s_nexttoward.c | 3 | ||||
-rw-r--r-- | sysdeps/i386/fpu/s_nexttowardf.c | 3 |
3 files changed, 9 insertions, 0 deletions
diff --git a/sysdeps/i386/fpu/s_nextafterl.c b/sysdeps/i386/fpu/s_nextafterl.c index 66d903f801..188dc2129a 100644 --- a/sysdeps/i386/fpu/s_nextafterl.c +++ b/sysdeps/i386/fpu/s_nextafterl.c @@ -26,6 +26,7 @@ static char rcsid[] = "$NetBSD: $"; * Special cases: */ +#include <errno.h> #include <math.h> #include <math_private.h> @@ -109,10 +110,12 @@ long double __nextafterl(long double x, long double y) if(esy==0x7fff) { long double u = x + x; /* overflow */ math_force_eval (u); + __set_errno (ERANGE); } if(esy==0) { long double u = x*x; /* underflow */ math_force_eval (u); /* raise underflow flag */ + __set_errno (ERANGE); } SET_LDOUBLE_WORDS(x,esx,hx,lx); return x; diff --git a/sysdeps/i386/fpu/s_nexttoward.c b/sysdeps/i386/fpu/s_nexttoward.c index 839efe6c05..0b47044760 100644 --- a/sysdeps/i386/fpu/s_nexttoward.c +++ b/sysdeps/i386/fpu/s_nexttoward.c @@ -26,6 +26,7 @@ static char rcsid[] = "$NetBSD: $"; * Special cases: */ +#include <errno.h> #include <math.h> #include <math_private.h> #include <float.h> @@ -75,10 +76,12 @@ double __nexttoward(double x, long double y) if(hy>=0x7ff00000) { double u = x+x; /* overflow */ math_force_eval (u); + __set_errno (ERANGE); } if(hy<0x00100000) { double u = x*x; /* underflow */ math_force_eval (u); /* raise underflow flag */ + __set_errno (ERANGE); } INSERT_WORDS(x,hx,lx); return x; diff --git a/sysdeps/i386/fpu/s_nexttowardf.c b/sysdeps/i386/fpu/s_nexttowardf.c index 29b4f12775..e1156d1e4f 100644 --- a/sysdeps/i386/fpu/s_nexttowardf.c +++ b/sysdeps/i386/fpu/s_nexttowardf.c @@ -18,6 +18,7 @@ static char rcsid[] = "$NetBSD: $"; #endif +#include <errno.h> #include <math.h> #include <math_private.h> #include <float.h> @@ -63,10 +64,12 @@ float __nexttowardf(float x, long double y) if(hy>=0x7f800000) { float u = x+x; /* overflow */ math_force_eval (u); + __set_errno (ERANGE); } if(hy<0x00800000) { float u = x*x; /* underflow */ math_force_eval (u); /* raise underflow flag */ + __set_errno (ERANGE); } SET_FLOAT_WORD(x,hx); return x; |