|
@@ -0,0 +1,631 @@
|
|
|
+type
|
|
|
+ { TUInt16Bit1Test }
|
|
|
+
|
|
|
+ TUInt16Bit1Test = class(TUInt16DivTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit1ModTest }
|
|
|
+
|
|
|
+ TUInt16Bit1ModTest = class(TUInt16ModTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit2Test }
|
|
|
+
|
|
|
+ TUInt16Bit2Test = class(TUInt16DivTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit2ModTest }
|
|
|
+
|
|
|
+ TUInt16Bit2ModTest = class(TUInt16ModTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit3Test }
|
|
|
+
|
|
|
+ TUInt16Bit3Test = class(TUInt16DivTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit3ModTest }
|
|
|
+
|
|
|
+ TUInt16Bit3ModTest = class(TUInt16ModTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit7Test }
|
|
|
+
|
|
|
+ TUInt16Bit7Test = class(TUInt16DivTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit7ModTest }
|
|
|
+
|
|
|
+ TUInt16Bit7ModTest = class(TUInt16ModTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit10Test }
|
|
|
+
|
|
|
+ TUInt16Bit10Test = class(TUInt16DivTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit10ModTest }
|
|
|
+
|
|
|
+ TUInt16Bit10ModTest = class(TUInt16ModTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit100Test }
|
|
|
+
|
|
|
+ TUInt16Bit100Test = class(TUInt16DivTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit100ModTest }
|
|
|
+
|
|
|
+ TUInt16Bit100ModTest = class(TUInt16ModTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit1000Test }
|
|
|
+const
|
|
|
+ FU16_1000Input: array[$0..$F] of Word =
|
|
|
+ (0, 1, 999, 1000, 1001, 1999, 2000, 2001,
|
|
|
+ 64999, 65000, 65001,
|
|
|
+ $7FFE, $7FFF, $8000, $8001, $FFFF);
|
|
|
+
|
|
|
+type
|
|
|
+ TUInt16Bit1000Test = class(TUInt16DivTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TUInt16Bit1000ModTest }
|
|
|
+
|
|
|
+ TUInt16Bit1000ModTest = class(TUInt16ModTest)
|
|
|
+ protected
|
|
|
+ function GetDivisor: Word; override;
|
|
|
+ procedure DoTestIteration(Iteration: Integer); override;
|
|
|
+ public
|
|
|
+ function TestTitle: shortstring; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+{ TUInt16Bit1Test }
|
|
|
+
|
|
|
+function TUInt16Bit1Test.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit division by 1';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit1Test.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 1;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit1Test.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator div 1;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit1Test }
|
|
|
+
|
|
|
+function TUInt16Bit1ModTest.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit modulus by 1';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit1ModTest.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 1;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit1ModTest.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator mod 1;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit2Test }
|
|
|
+
|
|
|
+function TUInt16Bit2Test.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit division by 2';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit2Test.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 2;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit2Test.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator div 2;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit2ModTest }
|
|
|
+
|
|
|
+function TUInt16Bit2ModTest.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit modulus by 2';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit2ModTest.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 2;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit2ModTest.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator mod 2;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit3Test }
|
|
|
+
|
|
|
+function TUInt16Bit3Test.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit division by 3';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit3Test.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 3;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit3Test.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator div 3;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit3ModTest }
|
|
|
+
|
|
|
+function TUInt16Bit3ModTest.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit modulus by 3';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit3ModTest.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 3;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit3ModTest.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator mod 3;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit7Test }
|
|
|
+
|
|
|
+function TUInt16Bit7Test.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit division by 7';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit7Test.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 7;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit7Test.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator div 7;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit7ModTest }
|
|
|
+
|
|
|
+function TUInt16Bit7ModTest.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit modulus by 7';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit7ModTest.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 7;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit7ModTest.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator mod 7;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit10Test }
|
|
|
+
|
|
|
+function TUInt16Bit10Test.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit division by 10';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit10Test.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 10;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit10Test.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator div 10;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit10ModTest }
|
|
|
+
|
|
|
+function TUInt16Bit10ModTest.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit modulus by 10';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit10ModTest.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 10;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit10ModTest.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator mod 10;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit100Test }
|
|
|
+
|
|
|
+function TUInt16Bit100Test.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit division by 100';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit100Test.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 100;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit100Test.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator div 100;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit100ModTest }
|
|
|
+
|
|
|
+function TUInt16Bit100ModTest.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit modulus by 100';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit100ModTest.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 100;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit100ModTest.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ case Index of
|
|
|
+ 253:
|
|
|
+ Numerator := 65533;
|
|
|
+ 254:
|
|
|
+ Numerator := 65534;
|
|
|
+ 255:
|
|
|
+ Numerator := 65535;
|
|
|
+ else
|
|
|
+ Numerator := Word(Index);
|
|
|
+ end;
|
|
|
+
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator mod 100;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit1000Test }
|
|
|
+
|
|
|
+function TUInt16Bit1000Test.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit division by 1,000';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit1000Test.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 1000;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit1000Test.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ Numerator := FU16_1000Input[Index and $F];
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator div 1000;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ TUInt16Bit1000ModTest }
|
|
|
+
|
|
|
+function TUInt16Bit1000ModTest.TestTitle: shortstring;
|
|
|
+ begin
|
|
|
+ Result := 'Unsigned 16-bit modulus by 1,000';
|
|
|
+ end;
|
|
|
+
|
|
|
+function TUInt16Bit1000ModTest.GetDivisor: Word;
|
|
|
+ begin
|
|
|
+ Result := 1000;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure TUInt16Bit1000ModTest.DoTestIteration(Iteration: Integer);
|
|
|
+ var
|
|
|
+ Numerator, Answer: Word;
|
|
|
+ Index, X: Integer;
|
|
|
+ begin
|
|
|
+ Index := Iteration and $FF;
|
|
|
+ Numerator := FU16_1000Input[Index and $F];
|
|
|
+ FInputArray[Index] := Numerator;
|
|
|
+ for X := 0 to INTERNAL_LOOPS - 1 do
|
|
|
+ Answer := Numerator mod 1000;
|
|
|
+
|
|
|
+ FResultArray[Index] := Answer;
|
|
|
+ end;
|