diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-07-14 00:54:57 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-07-14 00:54:57 +0000 |
commit | abfbdde177c3a7155070dda1b2cdc8292054cc26 (patch) | |
tree | e021306b596381fbf8311d2b7eb294e918ff17c8 /sysdeps/libm-ieee754/s_nexttoward.c | |
parent | 86421aa57ecfd70963ae66848bd6a6dd3b8e0fe6 (diff) | |
download | glibc-abfbdde177c3a7155070dda1b2cdc8292054cc26.tar glibc-abfbdde177c3a7155070dda1b2cdc8292054cc26.tar.gz glibc-abfbdde177c3a7155070dda1b2cdc8292054cc26.tar.bz2 glibc-abfbdde177c3a7155070dda1b2cdc8292054cc26.zip |
Update.
Diffstat (limited to 'sysdeps/libm-ieee754/s_nexttoward.c')
-rw-r--r-- | sysdeps/libm-ieee754/s_nexttoward.c | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/sysdeps/libm-ieee754/s_nexttoward.c b/sysdeps/libm-ieee754/s_nexttoward.c deleted file mode 100644 index 0bb57d8465..0000000000 --- a/sysdeps/libm-ieee754/s_nexttoward.c +++ /dev/null @@ -1,98 +0,0 @@ -/* s_nexttoward.c - * Conversion from s_nextafter.c by Ulrich Drepper, Cygnus Support, - * drepper@cygnus.com. - */ - -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -#if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: $"; -#endif - -/* IEEE functions - * nextafterx(x,y) - * return the next machine floating-point number of x in the - * direction toward y. - * Special cases: - */ - -#include "math.h" -#include "math_private.h" - -#ifdef __STDC__ - double __nexttoward(double x, long double y) -#else - double __nexttoward(x,y) - double x; - long double y; -#endif -{ - int32_t hx,ix,iy; - u_int32_t lx,hy,ly,esy; - - EXTRACT_WORDS(hx,lx,x); - GET_LDOUBLE_WORDS(esy,hy,ly,y); - ix = hx&0x7fffffff; /* |x| */ - iy = esy&0x7fff; /* |y| */ - - if(((ix>=0x7ff00000)&&((ix-0x7ff00000)|lx)!=0) || /* x is nan */ - ((iy>=0x7fff)&&((hy|ly)|-(hy|ly))!=0)) /* y is nan */ - return x+y; - if((long double) x==y) return x; /* x=y, return x */ - if((ix|lx)==0) { /* x == 0 */ - double x2; - INSERT_WORDS(x,esy&0x8000?0x80000000:0,1);/* return +-minsub */ - x2 = x*x; - if(x2==x) return x2; else return x; /* raise underflow flag */ - } - if(hx>=0) { /* x > 0 */ - if (esy>=0x8000||((ix>>20)&0x7ff)>iy - || (((ix>>20)&0x7ff)==iy - && (((hx<<11)|(lx>>21))>(hy&0x7fffffff) - || (((hx<<11)|(lx>>21))==(hy&0x7fffffff) - && (lx<<11)>ly)))) { /* x > y, x -= ulp */ - if(lx==0) hx -= 1; - lx -= 1; - } else { /* x < y, x += ulp */ - lx += 1; - if(lx==0) hx += 1; - } - } else { /* x < 0 */ - if (esy<0x8000||((ix>>20)&0x7ff)>iy - || (((ix>>20)&0x7ff)==iy - && (((hx<<11)|(lx>>21))>(hy&0x7fffffff) - || (((hx<<11)|(lx>>21))==(hy&0x7fffffff) - && (lx<<11)>ly)))) {/* x < y, x -= ulp */ - if(lx==0) hx -= 1; - lx -= 1; - } else { /* x > y, x += ulp */ - lx += 1; - if(lx==0) hx += 1; - } - } - hy = hx&0x7ff00000; - if(hy>=0x7ff00000) return x+x; /* overflow */ - if(hy<0x00100000) { /* underflow */ - double x2 = x*x; - if(x2!=x) { /* raise underflow flag */ - INSERT_WORDS(x2,hx,lx); - return x2; - } - } - INSERT_WORDS(x,hx,lx); - return x; -} -weak_alias (__nexttoward, nexttoward) -#ifdef NO_LONG_DOUBLE -strong_alias (__nexttoward, __nexttowardl) -weak_alias (__nexttoward, nexttowardl) -#endif |