aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c4a011a.ada
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
committerBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
commit1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch)
treec607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c4a011a.ada
parent283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff)
downloadtoolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c4a011a.ada')
-rw-r--r--gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c4a011a.ada334
1 files changed, 334 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c4a011a.ada b/gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c4a011a.ada
new file mode 100644
index 000000000..374827cc9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/ada/acats/tests/c4/c4a011a.ada
@@ -0,0 +1,334 @@
+-- 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;