OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [c4/] [c4a011a.ada] - Rev 12

Compare with Previous | Blame | View Log

-- 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;
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.