Project: Fractions
Unit: DelphiDabbler.Lib.Fractions
Record: TFraction
Applies to: ~>0.1
class operator GreaterThanOrEqual(const A, B: TFraction): Boolean;
This operator overload permits two TFractions to be compared using the >= (greater than or equal) operator.
One fraction is considered to be greater than or equal to a second if the 1st cross product of the two fractions is greater than or equal to their 2nd cross product. Here are two examples:
7/8 and 3/4: The 1st cross product is 7 × 4 = 28 and the 2nd cross product is 8 × 3 = 24. Since 28 > 24, 7/8 >= 3/4.6/8 and 3/4: The 1st cross product is 6 × 4 = 24 and the 2nd cross product is 8 × 3 = 24. The cross products are equal, so 6/8 >= 3/4.A TFraction can also be compared to integer and floating point types using the >= operator. The Implicit operator takes care of converting the integer and floating point operands to TFraction before performing the comparison.
var
F1, F2, F3, F4, F5: TFraction;
D: Double;
I: Integer;
begin
F1 := TFraction.Create(1, 2);
F2 := TFraction.Create(3, 4);
F3 := TFraction.Create(6, 8);
F4 := TFraction.Create(1, 1);
F5 := TFraction.Create(15, 8);
D := 0.75;
I := 1;
Assert(F2 >= F1); // 3/4 > 1/2
Assert(F3 >= F2); // 6/8 = 3/4
Assert(D >= F1); // 0.75 > 1/2
Assert(D >= F2); // 0.75 = 3/4
Assert(F3 >= D); // 6/8 = 0.75
Assert(F5 >= D); // 15/8 > 0.75
Assert(I >= F1); // 1 > 1/2
Assert(I >= F4); // 1 = 1/1
Assert(F4 >= I); // 1/1 = 1
Assert(F5 >= I); // 15/8 > 1
end;