mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 19:00:07 +00:00
New test to expose erroneous negative sign on logb(1) (bug 887).
This commit is contained in:
parent
6ad3493e22
commit
a462cb6332
@ -1,3 +1,10 @@
|
|||||||
|
2012-04-27 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
|
||||||
|
|
||||||
|
[BZ #887]
|
||||||
|
* math/libm-test.inc (logb_test_downward): New test to expose
|
||||||
|
erroneous negative sign on -0.0 result of logb[l](1) in FE_DOWNWARD
|
||||||
|
rounding mode.
|
||||||
|
|
||||||
2012-04-27 Joseph Myers <joseph@codesourcery.com>
|
2012-04-27 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
[BZ #14027]
|
[BZ #14027]
|
||||||
|
28
NEWS
28
NEWS
@ -9,20 +9,20 @@ Version 2.16
|
|||||||
|
|
||||||
* The following bugs are resolved with this release:
|
* The following bugs are resolved with this release:
|
||||||
|
|
||||||
174, 350, 369, 411, 706, 2074, 2541, 2547, 2548, 2551, 2552, 2553, 2554,
|
174, 350, 369, 411, 887, 706, 2074, 2541, 2547, 2548, 2551, 2552, 2553,
|
||||||
2562, 2563, 2565, 2566, 2576, 2636, 2678, 3335, 3768, 3866, 3868, 3976,
|
2554, 2562, 2563, 2565, 2566, 2576, 2636, 2678, 3335, 3768, 3866, 3868,
|
||||||
3992, 4026, 4108, 4596, 4822, 5077, 5461, 5805, 5993, 6471, 6486, 6578,
|
3976, 3992, 4026, 4108, 4596, 4822, 5077, 5461, 5805, 5993, 6471, 6486,
|
||||||
6649, 6730, 6770, 6794, 6884, 6890, 6894, 6895, 6907, 6911, 7064, 9739,
|
6578, 6649, 6730, 6770, 6794, 6884, 6890, 6894, 6895, 6907, 6911, 7064,
|
||||||
9902, 10110, 10135, 10140, 10153, 10210, 10254, 10346, 10545, 10716,
|
9739, 9902, 10110, 10135, 10140, 10153, 10210, 10254, 10346, 10545,
|
||||||
11174, 11322, 11365, 11451, 11494, 11521, 11959, 12047, 12340, 13058,
|
10716, 11174, 11322, 11365, 11451, 11494, 11521, 11959, 12047, 12340,
|
||||||
13525, 13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547,
|
13058, 13525, 13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533,
|
||||||
13551, 13552, 13553, 13555, 13559, 13566, 13583, 13592, 13618, 13637,
|
13547, 13551, 13552, 13553, 13555, 13559, 13566, 13583, 13592, 13618,
|
||||||
13656, 13658, 13673, 13691, 13695, 13704, 13705, 13706, 13726, 13738,
|
13637, 13656, 13658, 13673, 13691, 13695, 13704, 13705, 13706, 13726,
|
||||||
13739, 13760, 13761, 13786, 13792, 13806, 13824, 13840, 13841, 13844,
|
13738, 13739, 13760, 13761, 13786, 13792, 13806, 13824, 13840, 13841,
|
||||||
13846, 13851, 13852, 13854, 13871, 13872, 13873, 13879, 13883, 13886,
|
13844, 13846, 13851, 13852, 13854, 13871, 13872, 13873, 13879, 13883,
|
||||||
13892, 13895, 13908, 13910, 13911, 13912, 13913, 13915, 13916, 13917,
|
13886, 13892, 13895, 13908, 13910, 13911, 13912, 13913, 13915, 13916,
|
||||||
13918, 13919, 13920, 13921, 13926, 13927, 13928, 13938, 13963, 13967,
|
13917, 13918, 13919, 13920, 13921, 13926, 13927, 13928, 13938, 13963,
|
||||||
13970, 13973, 14027
|
13967, 13970, 13973, 14027
|
||||||
|
|
||||||
* ISO C11 support:
|
* ISO C11 support:
|
||||||
|
|
||||||
|
@ -5101,6 +5101,40 @@ logb_test (void)
|
|||||||
END (logb);
|
END (logb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
logb_test_downward (void)
|
||||||
|
{
|
||||||
|
int save_round_mode;
|
||||||
|
errno = 0;
|
||||||
|
|
||||||
|
FUNC(logb) (0);
|
||||||
|
if (errno == ENOSYS)
|
||||||
|
/* Function not implemented. */
|
||||||
|
return;
|
||||||
|
|
||||||
|
START (logb_downward);
|
||||||
|
|
||||||
|
save_round_mode = fegetround ();
|
||||||
|
|
||||||
|
if (!fesetround (FE_DOWNWARD))
|
||||||
|
{
|
||||||
|
|
||||||
|
/* IEEE 754-2008 says (section 5.3.3) that "logB(1) is +0.". Libm
|
||||||
|
should not return -0 from logb in any rounding mode. PowerPC32 has
|
||||||
|
failed with this test for power4 logb (and logbl on all PowerPC
|
||||||
|
platforms) in the past due to instruction selection. GCC PR 52775
|
||||||
|
provides the availability of the fcfid insn in 32-bit mode which
|
||||||
|
eliminates the use of fsub in this instance and prevents the negative
|
||||||
|
signed 0.0. */
|
||||||
|
|
||||||
|
/* BZ #887 .*/
|
||||||
|
TEST_f_f (logb, 1.000e+0, plus_zero);
|
||||||
|
}
|
||||||
|
|
||||||
|
fesetround (save_round_mode);
|
||||||
|
|
||||||
|
END (logb_downward);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
lround_test (void)
|
lround_test (void)
|
||||||
@ -8210,6 +8244,7 @@ main (int argc, char **argv)
|
|||||||
log1p_test ();
|
log1p_test ();
|
||||||
log2_test ();
|
log2_test ();
|
||||||
logb_test ();
|
logb_test ();
|
||||||
|
logb_test_downward ();
|
||||||
modf_test ();
|
modf_test ();
|
||||||
ilogb_test ();
|
ilogb_test ();
|
||||||
scalb_test ();
|
scalb_test ();
|
||||||
|
Loading…
Reference in New Issue
Block a user