Skip to content

Commit

Permalink
[BZ #5857]
Browse files Browse the repository at this point in the history
2008-03-09  Andreas Jaeger  <aj@suse.de>
	[BZ #5857]
	* sysdeps/ieee754/dbl-64/s_rint.c (__rint): Handle j0==18.
	* sysdeps/ieee754/dbl-64/s_nearbyint.c (__nearbyint): Likewise.
  	Patch by Mark Elliott <mark.h.elliott@lmco.com>.

	* math/libm-test.inc (nearbyint_test): Add new test cases from #5857.
	(rint_test): Likewise.
  • Loading branch information
Ulrich Drepper committed Mar 24, 2008
1 parent 0facd3d commit af0498d
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 3 deletions.
10 changes: 10 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
2008-03-09 Andreas Jaeger <aj@suse.de>

[BZ #5857]
* sysdeps/ieee754/dbl-64/s_rint.c (__rint): Handle j0==18.
* sysdeps/ieee754/dbl-64/s_nearbyint.c (__nearbyint): Likewise.
Patch by Mark Elliott <mark.h.elliott@lmco.com>.

* math/libm-test.inc (nearbyint_test): Add new test cases from #5857.
(rint_test): Likewise.

2008-03-24 Ulrich Drepper <drepper@redhat.com>

* nis/nis_call.c (nis_server_cache_search): Save errno around stat
Expand Down
9 changes: 9 additions & 0 deletions math/libm-test.inc
Original file line number Diff line number Diff line change
Expand Up @@ -4481,6 +4481,11 @@ nearbyint_test (void)
TEST_f_f (nearbyint, -0.5, minus_zero);
TEST_f_f (nearbyint, -1.5, -2.0);

TEST_f_f (nearbyint, 262144.75, 262145.0);
TEST_f_f (nearbyint, 262142.75, 262143.0);
TEST_f_f (nearbyint, 524286.75, 524287.0);
TEST_f_f (nearbyint, 524288.75, 524289.0);

END (nearbyint);
}

Expand Down Expand Up @@ -4852,6 +4857,10 @@ rint_test (void)
TEST_f_f (rint, -0.1, -0.0);
TEST_f_f (rint, -0.25, -0.0);
TEST_f_f (rint, -0.625, -1.0);
TEST_f_f (rint, 262144.75, 262145.0);
TEST_f_f (rint, 262142.75, 262143.0);
TEST_f_f (rint, 524286.75, 524287.0);
TEST_f_f (rint, 524288.75, 524289.0);
#ifdef TEST_LDOUBLE
/* The result can only be represented in long double. */
TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L);
Expand Down
9 changes: 8 additions & 1 deletion sysdeps/ieee754/dbl-64/s_nearbyint.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,15 @@ TWO52[2]={
if(((i0&i)|i1)==0) return x; /* x is integral */
i>>=1;
if(((i0&i)|i1)!=0) {
if(j0==19) i1 = 0x40000000; else
if (j0==19)
i1 = 0x40000000;
else if (j0<18)
i0 = (i0&(~i))|((0x20000)>>j0);
else
{
i0 &= ~i;
i1 = 0x80000000;
}
}
}
} else if (j0>51) {
Expand Down
11 changes: 9 additions & 2 deletions sysdeps/ieee754/dbl-64/s_rint.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,15 @@ TWO52[2]={
if(((i0&i)|i1)==0) return x; /* x is integral */
i>>=1;
if(((i0&i)|i1)!=0) {
if(j0==19) i1 = 0x40000000; else
i0 = (i0&(~i))|((0x20000)>>j0);
if (j0==19)
i1 = 0x40000000;
else if (j0<18)
i0 = (i0&(~i))|((0x20000)>>j0);
else
{
i0 &= ~i;
i1 = 0x80000000;
}
}
}
} else if (j0>51) {
Expand Down

0 comments on commit af0498d

Please sign in to comment.