mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 03:48:07 +02:00
Commit patch submitted by J. Gareth Moreton in bug report 35180
git-svn-id: trunk@41589 -
This commit is contained in:
parent
bfaa7ac13f
commit
a7d45c0ca0
@ -3,6 +3,9 @@ program tmoddiv4;
|
||||
const
|
||||
TestValues: array[0..10] of QWord = (500, 1, 0, 995, $100000000, $100000001, $7FFFFFFFFFFFFFFF, QWord($8000000000000000), QWord($8000000000000001), QWord($8000000000000002), 1000000);
|
||||
|
||||
{ Divisors are only for the error reporting }
|
||||
Divisors: array[0..8] of QWord = (1000, 1, 3, $1000, $7FFFFFFF, $80000000, $7FFFFFFFFFFFFFFF, QWord($8000000000000000), QWord($8000000000000001));
|
||||
|
||||
const
|
||||
ExpectedResults: array[0..10,1..18] of QWord = (
|
||||
(0,500,500,0,166,2,0,500,0,500,0,500,0,500,0,500,0,500),
|
||||
@ -11,10 +14,10 @@ const
|
||||
(0,995,995,0,331,2,0,995,0,995,0,995,0,995,0,995,0,995),
|
||||
(4294967,296,4294967296,0,1431655765,1,1048576,0,2,2,2,0,0,4294967296,0,4294967296,0,4294967296),
|
||||
(4294967,297,4294967297,0,1431655765,2,1048576,1,2,3,2,1,0,4294967297,0,4294967297,0,4294967297),
|
||||
(9223372036854775,807,9223372036854775807,0,3074457345618258602,1,2251799813685247,4095,4294967298,1,4294967295,2147483647,1,0,0,9223372036854775807,18446744073709551615,0),
|
||||
(9223372036854775,808,9223372036854775808,0,3074457345618258602,2,2251799813685248,0,4294967298,2,4294967296,0,1,1,1,0,1,18446744073709551615),
|
||||
(9223372036854775,809,9223372036854775809,0,3074457345618258603,0,2251799813685248,1,4294967298,3,4294967296,1,1,2,0,9223372036854775809,1,0),
|
||||
(9223372036854775,810,9223372036854775810,0,3074457345618258603,1,2251799813685248,2,4294967298,4,4294967296,2,1,3,0,9223372036854775810,0,9223372036854775810),
|
||||
(9223372036854775,807,9223372036854775807,0,3074457345618258602,1,2251799813685247,4095,4294967298,1,4294967295,2147483647,1,0,0,$7FFFFFFFFFFFFFFF,0,$7FFFFFFFFFFFFFFF),
|
||||
(9223372036854775,808,9223372036854775808,0,3074457345618258602,2,2251799813685248,0,4294967298,2,4294967296,0,1,1,1,0,0,QWord($8000000000000000)),
|
||||
(9223372036854775,809,9223372036854775809,0,3074457345618258603,0,2251799813685248,1,4294967298,3,4294967296,1,1,2,1,1,1,0),
|
||||
(9223372036854775,810,9223372036854775810,0,3074457345618258603,1,2251799813685248,2,4294967298,4,4294967296,2,1,3,1,2,1,1),
|
||||
(1000,0,1000000,0,333333,1,244,576,0,1000000,0,1000000,0,1000000,0,1000000,0,1000000));
|
||||
|
||||
var
|
||||
@ -25,7 +28,12 @@ procedure DoCheck;
|
||||
begin
|
||||
if Y<>ExpectedResults[C,Col] then
|
||||
begin
|
||||
writeln('Error at ',C,' ',Col);
|
||||
Write(#10'Error at ', C, ',', Col, ' - ', TestValues[C]);
|
||||
if (Col and $1) = 0 then
|
||||
Write(' mod ')
|
||||
else
|
||||
Write(' div ');
|
||||
WriteLn(Divisors[(Col - 1) shr 1], ' - expected ', ExpectedResults[C,Col], ' got ', Y);
|
||||
halt(1);
|
||||
end;
|
||||
Inc(Col);
|
||||
@ -92,19 +100,20 @@ begin
|
||||
Write(Y,',');
|
||||
DoCheck;
|
||||
|
||||
Y := QWord(X) div $8000000000000000;
|
||||
{ Constants this large default to being made into Int64's, so typecast them }
|
||||
Y := QWord(X) div QWord($8000000000000000);
|
||||
Write(Y,',');
|
||||
DoCheck;
|
||||
|
||||
Y := QWord(X) mod $8000000000000000;
|
||||
Y := QWord(X) mod QWord($8000000000000000);
|
||||
Write(Y,',');
|
||||
DoCheck;
|
||||
|
||||
Y := QWord(X) div $8000000000000001;
|
||||
Y := QWord(X) div QWord($8000000000000001);
|
||||
Write(Y,',');
|
||||
DoCheck;
|
||||
|
||||
Y := QWord(X) mod $8000000000000001;
|
||||
Y := QWord(X) mod QWord($8000000000000001);
|
||||
Writeln(Y);
|
||||
DoCheck;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user