Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / ada / acats / tests / c4 / c45532n.dep
blob9315c6826e9d7a7ac0567786c74e080aa9df9bf4
1 -- C45532N.DEP
3 --                             Grant of Unlimited Rights
4 --
5 --     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6 --     F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained 
7 --     unlimited rights in the software and documentation contained herein.
8 --     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making 
9 --     this public release, the Government intends to confer upon all 
10 --     recipients unlimited rights  equal to those held by the Government.  
11 --     These rights include rights to use, duplicate, release or disclose the 
12 --     released technical data and computer software in whole or in part, in 
13 --     any manner and for any purpose whatsoever, and to have or permit others 
14 --     to do so.
16 --                                    DISCLAIMER
18 --     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19 --     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED 
20 --     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21 --     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE 
22 --     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23 --     PARTICULAR PURPOSE OF SAID MATERIAL.
24 --*
25 -- OBJECTIVE:
26 --     CHECK THAT THE OPERATOR "/" PRODUCES CORRECT RESULTS
27 --     FOR FIXED POINT TYPES USING 3 SUBTESTS.
28 --       THIS TEST REQUIRES MIN_WORD_LENGTH = 48.
29 --       THIS TEST USES VALUES OF DELTA WHICH ARE LESS THAN 0.5.
31 --     TEST CASES ARE:
32 --       A) THE OPERATOR /, A, B, AND A / B ALL MODEL NUMBERS.
33 --       B) THE OPERATOR /, A, B MODEL NUMBERS A / B NOT.
34 --       C) THE OPERATOR /, USING NO MODEL NUMBERS.
36 --     REPEAT FOR MINIMUM REQUIRED WORD LENGTHS OF 12, 16, 32 AND 48,
37 --     WITH RANGE <, =, AND > THAN 1.0 AND
38 --     WITH DELTA <, =, AND > THAN 1.0.
40 -- APPLICABILITY CRITERIA:
41 --     THIS TEST IS APPLICABLE FOR IMPLEMENTATIONS WHICH HAVE A
42 --     'MAX_MANTISSA OF 47 OR GREATER.
44 -- IF 'MAX_MANTISSA >= 47 IS NOT SUPPORTED THEN THE DECLARATION OF
45 --    'TYPE FX_OP5' MUST BE REJECTED.
48 -- HISTORY:
49 --     NTW 09/08/86 CREATED ORIGINAL TEST.
50 --     RJW 11/05/86 REVISED COMMENTS.
51 --     DHH 10/19/87 SHORTENED LINES CONTAINING MORE THAN 72 CHARACTERS.
52 --     RDH 04/27/90 REVISED APPLICABILITY CRITERIA.
54 WITH REPORT;
55 PROCEDURE C45532N IS
57      USE REPORT;
59      MIN_WORD_LENGTH : CONSTANT := 48;            -- MUST BE EVEN & >= 6
60      FULL_SCALE      : CONSTANT := 2 ** (MIN_WORD_LENGTH - 1);
61      FORTH           : CONSTANT := FULL_SCALE / 4;
62      A_THIRD         : CONSTANT := FULL_SCALE / 3;
63      DEL1            : CONSTANT := 0.5 / FULL_SCALE;
64      TYPE FX_0P5 IS DELTA DEL1 * 1 RANGE -0.5 ..
65                                       0.5 - DEL1 * 1; -- N/A => ERROR.
66      TYPE FX_1   IS DELTA DEL1 * 2 RANGE -1.0 ..
67                                       1.0 - DEL1 * 2; -- N/A => ERROR.
68      TYPE FX_2   IS DELTA DEL1 * 4 RANGE -2.0 ..
69                                       2.0 - DEL1 * 4; -- N/A => ERROR.
71 BEGIN TEST ("C45532N", "FIXED POINT OPERATOR ""/""" );
73      --------------------------------------------------
75      -- CASE A) THE OPERATOR /, A, B, AND A / B ALL MODEL NUMBERS.
77 A:   DECLARE
78           A              : FX_0P5  := 0.0;
79           B              : FX_1    := 0.0;
80           RESULT_VALUE   : FX_2    := 0.0;
81           LOWEST_ACCEPTABLE_VALUE  : FX_2 := FX_2 (0.5);
82           HIGHEST_ACCEPTABLE_VALUE : FX_2 := FX_2 (0.5);
83      BEGIN
84           IF EQUAL (3, 3) THEN
85                A := FX_0P5 (0.125);               -- A MODEL NUMBER
86                B := FX_1   (0.25);                -- A MODEL NUMBER
87           END IF;
89           RESULT_VALUE := FX_2 (A / B);
91           IF    (RESULT_VALUE < LOWEST_ACCEPTABLE_VALUE)
92              OR (RESULT_VALUE > HIGHEST_ACCEPTABLE_VALUE) THEN
93                FAILED ("RESULT OF ""/"" OUTSIDE RESULT MODEL INTERVAL "
94                     &  "WHEN A, B, AND A / B ARE ALL MODEL NUMBERS");
95           END IF;
96      END A;
98      --------------------------------------------------
100      -- CASE B) THE OPERATOR /, A, B MODEL NUMBERS A / B NOT.
102 B:   DECLARE
103           A              : FX_0P5  := 0.0;
104           B              : FX_0P5  := 0.0;
105           RESULT_VALUE   : FX_1    := 0.0;
106           LOWEST_ACCEPTABLE_VALUE  :  FX_1
107                                    := FX_1 (2 * DEL1 * A_THIRD);
108           HIGHEST_ACCEPTABLE_VALUE :  FX_1
109                                    := FX_1 (2 * DEL1 * (A_THIRD + 1) );
110      BEGIN
111           IF EQUAL (3, 3) THEN
112                A := FX_0P5 (DEL1 * 1);            -- A MODEL NUMBER
113                B := FX_0P5 (DEL1 * 3);            -- A MODEL NUMBER
114           END IF;
116           RESULT_VALUE := FX_1 (A / B);
118           IF    (RESULT_VALUE < LOWEST_ACCEPTABLE_VALUE)
119              OR (RESULT_VALUE > HIGHEST_ACCEPTABLE_VALUE) THEN
120                FAILED ("RESULT OF ""/"" OUTSIDE RESULT MODEL INTERVAL "
121                     &  "WHEN A, B MODEL NUMBERS A / B NOT");
122           END IF;
123      END B;
125      --------------------------------------------------
127      -- CASE C) THE OPERATOR /, USING NO MODEL NUMBERS
129 C:   DECLARE
130           A              : FX_1    := 0.0;
131           B              : FX_1    := 0.0;
132           RESULT_VALUE   : FX_0P5  := 0.0;
133           LOW_COUNT    : CONSTANT  := 2 * A_THIRD;
134                             --   := (2 * FULL_SCALE * (2 * FORTH + 0))
135                             --                      / (6 * FORTH + 2);
136           HIGH_COUNT   : CONSTANT  := 2 * A_THIRD + 4;
137                             --   := (2 * FULL_SCALE * (2 * FORTH + 2))
138                             --                      / (6 * FORTH + 0);
139           LOWEST_ACCEPTABLE_VALUE  :  FX_0P5
140                                    := FX_0P5 (DEL1 * LOW_COUNT );
141           HIGHEST_ACCEPTABLE_VALUE :  FX_0P5
142                                    := FX_0P5 (DEL1 * HIGH_COUNT );
143      BEGIN
144           IF EQUAL (3, 3) THEN     -- A AND B NOT MODEL NUMBERS
145                A := FX_1 (DEL1 * (2 * FORTH + 1));
146                B := FX_1 (DEL1 * (6 * FORTH + 1));
147           END IF;
149           RESULT_VALUE := FX_0P5 (A / B);
151           IF    (RESULT_VALUE < LOWEST_ACCEPTABLE_VALUE)
152              OR (RESULT_VALUE > HIGHEST_ACCEPTABLE_VALUE) THEN
153                FAILED ("RESULT OF ""/"" OUTSIDE RESULT MODEL INTERVAL "
154                     &  "WHEN USING NO MODEL NUMBERS");
155           END IF;
156      END C;
158      --------------------------------------------------
161      RESULT;
163 END C45532N;