c4a011a.ada

来自「用于进行gcc测试」· ADA 代码 · 共 335 行

ADA
335
字号
-- 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/86WITH 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;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?