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