blob: 374827cc9d50477940ad4daee10082ef2943b351 [file] [log] [blame]
-- C4A011A.ADA
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT NONSTATIC UNIVERSAL REAL EXPRESSIONS ARE EVALUATED WITH
-- THE ACCURACY OF THE MOST PRECISE PREDEFINED FLOATING POINT TYPE
-- (I. E., THE TYPE FOR WHICH 'DIGITS EQUALS SYSTEM.MAX_DIGITS).
-- RJW 8/4/86
WITH SYSTEM; USE SYSTEM;
WITH REPORT; USE REPORT;
PROCEDURE C4A011A IS
TYPE MAX_FLOAT IS DIGITS MAX_DIGITS;
C5L : CONSTANT := 16#0.AAAA8#;
C5U : CONSTANT := 16#0.AAAAC#;
C6L : CONSTANT := 16#0.AAAAA8#;
C6U : CONSTANT := 16#0.AAAAB0#;
C7L : CONSTANT := 16#0.AAAAAA8#;
C7U : CONSTANT := 16#0.AAAAAB0#;
C8L : CONSTANT := 16#0.AAAAAAA#;
C8U : CONSTANT := 16#0.AAAAAAB#;
C9L : CONSTANT := 16#0.AAAAAAAA#;
C9U : CONSTANT := 16#0.AAAAAAAC#;
C10L : CONSTANT := 16#0.AAAAAAAAA#;
C10U : CONSTANT := 16#0.AAAAAAAAC#;
C11L : CONSTANT := 16#0.AAAAAAAAA8#;
C11U : CONSTANT := 16#0.AAAAAAAAAC#;
C12L : CONSTANT := 16#0.AAAAAAAAAA8#;
C12U : CONSTANT := 16#0.AAAAAAAAAB0#;
C13L : CONSTANT := 16#0.AAAAAAAAAAA8#;
C13U : CONSTANT := 16#0.AAAAAAAAAAB0#;
C14L : CONSTANT := 16#0.AAAAAAAAAAAA#;
C14U : CONSTANT := 16#0.AAAAAAAAAAAB#;
C15L : CONSTANT := 16#0.AAAAAAAAAAAAA#;
C15U : CONSTANT := 16#0.AAAAAAAAAAAAC#;
C16L : CONSTANT := 16#0.AAAAAAAAAAAAAA#;
C16U : CONSTANT := 16#0.AAAAAAAAAAAAAC#;
C17L : CONSTANT := 16#0.AAAAAAAAAAAAAA8#;
C17U : CONSTANT := 16#0.AAAAAAAAAAAAAAC#;
C18L : CONSTANT := 16#0.AAAAAAAAAAAAAAA8#;
C18U : CONSTANT := 16#0.AAAAAAAAAAAAAAB0#;
C19L : CONSTANT := 16#0.AAAAAAAAAAAAAAAA8#;
C19U : CONSTANT := 16#0.AAAAAAAAAAAAAAAB0#;
C20L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAA#;
C20U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAB#;
C21L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAA#;
C21U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAC#;
C22L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAA#;
C22U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAC#;
C23L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAA8#;
C23U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAC#;
C24L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAA8#;
C24U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAB0#;
C25L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAA8#;
C25U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAB0#;
C26L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAA#;
C26U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAB#;
C27L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAA#;
C27U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAC#;
C28L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAA#;
C28U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAC#;
C29L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAA8#;
C29U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAC#;
C30L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAA8#;
C30U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAB0#;
C31L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAAA#;
C31U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAAB#;
C32L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAAAA#;
C32U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAAAB#;
C33L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAAAAA#;
C33U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAAAAC#;
C34L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAAAAA8#;
C34U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAAAAAC#;
C35L : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAAAAAA8#;
C35U : CONSTANT := 16#0.AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC#;
BEGIN
TEST ( "C4A011A", "CHECK THAT NONSTATIC UNIVERSAL REAL " &
"EXPRESSIONS ARE EVALUATED WITH THE " &
"ACCURACY OF THE MOST PRECISE PREDEFINED " &
"FLOATING POINT TYPE (I. E., THE TYPE FOR " &
"WHICH 'DIGITS EQUALS SYSTEM.MAX_DIGITS" );
CASE MAX_DIGITS IS
WHEN 5 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C5L .. C5U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 5" );
END IF;
WHEN 6 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C6L .. C6U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 6" );
END IF;
WHEN 7 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C7L .. C7U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 7" );
END IF;
WHEN 8 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C8L .. C8U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 8" );
END IF;
WHEN 9 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C9L .. C9U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 9" );
END IF;
WHEN 10 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C10L .. C10U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 10" );
END IF;
WHEN 11 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C11L .. C11U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 11" );
END IF;
WHEN 12 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C12L .. C12U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 12" );
END IF;
WHEN 13 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C13L .. C13U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 13" );
END IF;
WHEN 14 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C14L .. C14U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 14" );
END IF;
WHEN 15 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C15L .. C15U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 15" );
END IF;
WHEN 16 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C16L .. C16U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 16" );
END IF;
WHEN 17 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C17L .. C17U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 17" );
END IF;
WHEN 18 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C18L .. C18U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 18" );
END IF;
WHEN 19 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C19L .. C19U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 19" );
END IF;
WHEN 20 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C20L .. C20U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 20" );
END IF;
WHEN 21 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C21L .. C21U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 21" );
END IF;
WHEN 22 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C22L .. C22U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 22" );
END IF;
WHEN 23 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C23L .. C23U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 23" );
END IF;
WHEN 24 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C24L .. C24U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 24" );
END IF;
WHEN 25 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C25L .. C25U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 25" );
END IF;
WHEN 26 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C26L .. C26U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 26" );
END IF;
WHEN 27 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C27L .. C27U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 27" );
END IF;
WHEN 28 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C28L .. C28U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 28" );
END IF;
WHEN 29 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C29L .. C29U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 29" );
END IF;
WHEN 30 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C30L .. C30U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 30" );
END IF;
WHEN 31 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C31L .. C31U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 31" );
END IF;
WHEN 32 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C32L .. C32U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 32" );
END IF;
WHEN 33 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C33L .. C33U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 33" );
END IF;
WHEN 34 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C34L .. C34U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 34" );
END IF;
WHEN 35 =>
IF (2.0 * INTEGER'POS (IDENT_INT (1))) / 3.0 NOT IN
C35L .. C35U THEN
FAILED ( "INCORRECT ACCURACY FOR A MAX_DIGITS " &
"VALUE OF 35" );
END IF;
WHEN OTHERS =>
NOT_APPLICABLE ( "MAX_DIGITS OUT OF RANGE OF TEST. " &
"MAX_DIGITS = " &
INTEGER'IMAGE (MAX_DIGITS));
END CASE;
RESULT;
END C4A011A;