WITH REPORT; USE REPORT;
PROCEDURE C45251A IS
TYPE LIKE_DURATION_M23 IS DELTA 0.020 RANGE -86_400.0 .. 86_400.0;
TYPE DECIMAL_M4 IS DELTA 100.0 RANGE -1000.0 .. 1000.0;
BEGIN
TEST ("C45251A", "CHECK RELATIONAL OPERATIONS FOR FIXED POINT " &
"TYPES - BASIC TYPES");
DECLARE
A, B : LIKE_DURATION_M23 := 0.0;
C, D : DECIMAL_M4 := 0.0;
BEGIN
IF EQUAL (3, 3) THEN
A := 2#0.0000_0011#; B := 2#0.0000_0101#; END IF;
IF A /= B XOR NOT (A = B) THEN
FAILED ("A /= B IS NOT THE SAME AS NOT (A = B)");
END IF;
IF A < B XOR NOT (A >= B) THEN
FAILED ("A < B IS NOT THE SAME AS NOT (A >= B)");
END IF;
IF A > B XOR NOT (A <= B) THEN
FAILED ("A > B IS NOT THE SAME AS NOT (A <= B)");
END IF;
IF EQUAL (3, 3) THEN
A := -(16#1_5180.00#); B := -(16#1_517F.FC#);
C := 64.0; D := 128.0; END IF;
IF "=" (LEFT => A, RIGHT => B) THEN
FAILED ("ADJACENT MODEL NUMBERS GIVE INCORRECT RESULT " &
"- (A = B)");
END IF;
IF NOT "/=" (LEFT => C, RIGHT => D) THEN
FAILED ("ADJACENT MODEL NUMBERS GIVE INCORRECT RESULT " &
"- (C /= D)");
END IF;
IF "<" (LEFT => B, RIGHT => A) THEN
FAILED ("ADJACENT MODEL NUMBERS GIVE INCORRECT RESULT " &
"- (B < A)");
END IF;
IF ">" (LEFT => C, RIGHT => D) THEN
FAILED ("ADJACENT MODEL NUMBERS GIVE INCORRECT RESULT " &
"- (C > D)");
END IF;
IF ">=" (LEFT => A, RIGHT => B) THEN
FAILED ("ADJACENT MODEL NUMBERS GIVE INCORRECT RESULT " &
"- (A >= B)");
END IF;
IF "<=" (LEFT => D, RIGHT => C) THEN
FAILED ("ADJACENT MODEL NUMBERS GIVE INCORRECT RESULT " &
"- (D <= C)");
END IF;
IF EQUAL (3, 3) THEN
A := 0.02; B := -0.02;
C := 800.0; D := 900.0; END IF;
IF A = B THEN
FAILED ("NON-MODEL NUMBERS WITH DISTINCT MODEL " &
"INTERVALS GIVE INCORRECT RESULT - (A = B)");
END IF;
IF NOT (C /= D) THEN
FAILED ("NON-MODEL NUMBERS WITH DISTINCT MODEL " &
"INTERVALS GIVE INCORRECT RESULT - (C /= D)");
END IF;
IF A < B THEN
FAILED ("NON-MODEL NUMBERS WITH DISTINCT MODEL " &
"INTERVALS GIVE INCORRECT RESULT - (A < B)");
END IF;
IF C > D THEN
FAILED ("NON-MODEL NUMBERS WITH DISTINCT MODEL " &
"INTERVALS GIVE INCORRECT RESULT - (C > D)");
END IF;
IF B >= A THEN
FAILED ("NON-MODEL NUMBERS WITH DISTINCT MODEL " &
"INTERVALS GIVE INCORRECT RESULT - (B >= A)");
END IF;
IF D <= C THEN
FAILED ("NON-MODEL NUMBERS WITH DISTINCT MODEL " &
"INTERVALS GIVE INCORRECT RESULT - (D <= C)");
END IF;
IF EQUAL (3, 3) THEN
B := 0.035;
C := 850.0; END IF;
IF NOT (A <= B) THEN
FAILED ("COMPARISON OF NON-MODEL NUMBERS WITH ONE " &
"COMMON MODEL INTERVAL END-POINT GIVES " &
"INCORRECT RESULT - (A <= B)");
END IF;
IF A > B THEN
FAILED ("COMPARISON OF NON-MODEL NUMBERS WITH ONE " &
"COMMON MODEL INTERVAL END-POINT GIVES " &
"INCORRECT RESULT - (A > B)");
END IF;
IF NOT (D >= C) THEN
FAILED ("COMPARISON OF NON-MODEL NUMBERS WITH ONE " &
"COMMON MODEL INTERVAL END-POINT GIVES " &
"INCORRECT RESULT - (D >= C)");
END IF;
IF D < C THEN
FAILED ("COMPARISON OF NON-MODEL NUMBERS WITH ONE " &
"COMMON MODEL INTERVAL END-POINT GIVES " &
"INCORRECT RESULT - (D < C)");
END IF;
END;
RESULT;
END C45251A;