diff options
author | Ranjith Kumaran <ranjith@cygnus.com> | 2000-03-17 22:48:54 +0000 |
---|---|---|
committer | Ranjith Kumaran <ranjith@cygnus.com> | 2000-03-17 22:48:54 +0000 |
commit | 03261851a10dd2d6900a0a00a7515a0a46fb5d76 (patch) | |
tree | 7c22ac6cbbc99fd5cd1b5426853be8d4fd7bfcf1 /libgloss/testsuite/libgloss.all/math.c | |
parent | fae4c299f14fc23e2829c8656992eba21f79242a (diff) | |
download | cygnal-03261851a10dd2d6900a0a00a7515a0a46fb5d76.tar.gz cygnal-03261851a10dd2d6900a0a00a7515a0a46fb5d76.tar.bz2 cygnal-03261851a10dd2d6900a0a00a7515a0a46fb5d76.zip |
20000317 sourceware import
Diffstat (limited to 'libgloss/testsuite/libgloss.all/math.c')
-rw-r--r-- | libgloss/testsuite/libgloss.all/math.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/libgloss/testsuite/libgloss.all/math.c b/libgloss/testsuite/libgloss.all/math.c new file mode 100644 index 000000000..fe137dab1 --- /dev/null +++ b/libgloss/testsuite/libgloss.all/math.c @@ -0,0 +1,88 @@ +/* Oki bug report [OKI004](gcc005) + + The following computation is no work. + -1 / 1 => 1 (correct -1) + -1 % 2 => 1 (correct -1) + */ + +#include <stdio.h> + +main () +{ + long l1, l2, l6; + auto long l3; + long oza1, oza2, oza; + + l1 = 1; + l2 = 2; + l3 = -1; + l6 = 6; + + /*** test 1 ***/ + oza = ((l3 / ((l1)--)) | (l6 <= (l3 % l2))); + printf ("test 1 has a result of %d.\n", oza); + if (oza != -1) + fail ("divide test [OKI004]"); + else + pass ("divide test [OKI004]"); + + l1 = 1; + /*** test 2 ***/ + oza1 = (l3 / ((l1)--)); + oza2 = (l6 <= (l3 % l2)); + oza = oza1 | oza2; + + printf ("test 2 has a result of %d.\n", oza); + if (oza != -1) + fail ("modulos test [OKI004]"); + else + pass ("modulos test [OKI004]"); + fflush (stdout); + + test_1(); +} + +/* + 32760 / (1) = 32760 + 32760 / (-1) = 32760 -------> ERROR, same as you said. + 32760 / (2) = 16380 + 32760 / (-2) = -2147467268 ----> ERROR + 32760 / (3) = 10920 + 32760 / (-3) = -1431644845 ----> ERROR + 32760 / (4) = 8190 + 32760 / (-4) = -8190 + */ +test_1() +{ + int value, i, j; + + i = 32760; + j = 1; + value = i / (j); + printf ("%d / (%d) = %d\n", i, j, value); + j = -1; + value = i / (j); + printf ("%d / (%d) = %d\n", i, j, value); + + j = 2; + value = i / (j); + printf ("%d / (%d) = %d\n", i, j, value); + j = -2; + value = i / (j); + printf ("%d / (%d) = %d\n", i, j, value); + + j = 3; + value = i / (j); + printf ("%d / (%d) = %d\n", i, j, value); + j = -3; + value = i / (j); + printf ("%d / (%d) = %d\n", i, j, value); + + j = 4; + value = i / (j); + printf ("%d / (%d) = %d\n", i, j, value); + j = -4; + value = i / (j); + printf ("%d / (%d) = %d\n", i, j, value); +} + |