89 lines
1.7 KiB
C
89 lines
1.7 KiB
C
/* 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);
|
|
}
|
|
|