Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / gcc / testsuite / ada / acats / tests / c3 / c34004a.ada
blob735776a19649ac205dd05b6214e6660644cf05a7
1 -- C34004A.ADA
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 REQUIRED PREDEFINED OPERATIONS ARE DECLARED
27 -- (IMPLICITLY) FOR DERIVED FIXED POINT TYPES.
29 -- HISTORY:
30 -- JRK 09/08/86 CREATED ORIGINAL TEST.
31 -- JET 08/06/87 FIXED BUGS IN DELTAS AND RANGE ERROR.
32 -- JET 09/22/88 CHANGED USAGE OF X'SIZE.
33 -- RDH 04/16/90 ADDED TEST FOR REAL VARIABLE VALUES.
34 -- THS 09/25/90 REMOVED ALL REFERENCES TO B, MODIFIED CHECK OF
35 -- '=', INITIALIZED Z NON-STATICALLY, MOVED BINARY
36 -- CHECKS.
37 -- DTN 11/30/95 REMOVED NON ADA95 ATTRIBUTES.
38 -- KAS 03/04/96 REMOVED COMPARISON OF T'SMALL TO T'BASE'SMALL
40 WITH SYSTEM; USE SYSTEM;
41 WITH REPORT; USE REPORT;
43 PROCEDURE C34004A IS
45 TYPE PARENT IS DELTA 2.0 ** (-7) RANGE -100.0 .. 100.0;
47 SUBTYPE SUBPARENT IS PARENT RANGE
48 IDENT_INT (1) * (-50.0) ..
49 IDENT_INT (1) * ( 50.0);
51 TYPE T IS NEW SUBPARENT DELTA 2.0 ** (-4) RANGE
52 IDENT_INT (1) * (-30.0) ..
53 IDENT_INT (1) * ( 30.0);
55 TYPE FIXED IS DELTA 2.0 ** (-4) RANGE -1000.0 .. 1000.0;
57 X : T := -30.0;
58 I : INTEGER := X'SIZE; --CHECK FOR THE AVAILABILITY OF 'SIZE.
59 W : PARENT := -100.0;
60 R : CONSTANT := 1.0;
61 M : CONSTANT := 100.0;
62 F : FLOAT := 0.0;
63 G : FIXED := 0.0;
65 PROCEDURE A (X : ADDRESS) IS
66 BEGIN
67 NULL;
68 END A;
70 FUNCTION IDENT (X : T) RETURN T IS
71 BEGIN
72 IF EQUAL (3, 3) THEN
73 RETURN X; -- ALWAYS EXECUTED.
74 END IF;
75 RETURN T'FIRST;
76 END IDENT;
78 BEGIN
80 DECLARE
81 Z : CONSTANT T := IDENT(0.0);
82 BEGIN
83 TEST ("C34004A", "CHECK THAT THE REQUIRED PREDEFINED " &
84 "OPERATIONS ARE DECLARED (IMPLICITLY) " &
85 "FOR DERIVED FIXED POINT TYPES");
87 X := IDENT (30.0);
88 IF X /= 30.0 THEN
89 FAILED ("INCORRECT :=");
90 END IF;
92 IF X + IDENT (-1.0) /= 29.0 OR X + 70.0 /= 100.0 THEN
93 FAILED ("INCORRECT BINARY +");
94 END IF;
96 IF X - IDENT (30.0) /= 0.0 OR X - 100.0 /= -70.0 THEN
97 FAILED ("INCORRECT BINARY -");
98 END IF;
100 IF T'(X) /= 30.0 THEN
101 FAILED ("INCORRECT QUALIFICATION");
102 END IF;
104 IF T (X) /= 30.0 THEN
105 FAILED ("INCORRECT SELF CONVERSION");
106 END IF;
108 IF EQUAL (3, 3) THEN
109 W := -30.0;
110 END IF;
111 IF T (W) /= -30.0 THEN
112 FAILED ("INCORRECT CONVERSION FROM PARENT");
113 END IF;
115 IF PARENT (X) /= 30.0 OR PARENT (Z - 100.0) /= -100.0 THEN
116 FAILED ("INCORRECT CONVERSION TO PARENT");
117 END IF;
119 IF T (IDENT_INT (-30)) /= -30.0 THEN
120 FAILED ("INCORRECT CONVERSION FROM INTEGER");
121 END IF;
123 IF INTEGER (X) /= 30 OR INTEGER (Z - 100.0) /= -100 THEN
124 FAILED ("INCORRECT CONVERSION TO INTEGER");
125 END IF;
127 IF EQUAL (3, 3) THEN
128 F := -30.0;
129 END IF;
130 IF T (F) /= -30.0 THEN
131 FAILED ("INCORRECT CONVERSION FROM FLOAT");
132 END IF;
134 IF FLOAT (X) /= 30.0 OR FLOAT (Z - 100.0) /= -100.0 THEN
135 FAILED ("INCORRECT CONVERSION TO FLOAT");
136 END IF;
138 IF EQUAL (3, 3) THEN
139 G := -30.0;
140 END IF;
141 IF T (G) /= -30.0 THEN
142 FAILED ("INCORRECT CONVERSION FROM FIXED");
143 END IF;
145 IF FIXED (X) /= 30.0 OR FIXED (Z - 100.0) /= -100.0 THEN
146 FAILED ("INCORRECT CONVERSION TO FIXED");
147 END IF;
149 IF IDENT (R) /= 1.0 OR X = M THEN
150 FAILED ("INCORRECT IMPLICIT CONVERSION");
151 END IF;
153 IF IDENT (30.0) /= 30.0 OR X = 100.0 THEN
154 FAILED ("INCORRECT REAL LITERAL");
155 END IF;
157 IF NOT (X = IDENT (30.0)) THEN
158 FAILED ("INCORRECT =");
159 END IF;
161 IF X /= IDENT (30.0) OR NOT (X /= 100.0) THEN
162 FAILED ("INCORRECT /=");
163 END IF;
165 IF X < IDENT (30.0) OR 100.0 < X THEN
166 FAILED ("INCORRECT <");
167 END IF;
169 IF X > IDENT (30.0) OR X > 100.0 THEN
170 FAILED ("INCORRECT >");
171 END IF;
173 IF X <= IDENT (0.0) OR 100.0 <= X THEN
174 FAILED ("INCORRECT <=");
175 END IF;
177 IF IDENT (0.0) >= X OR X >= 100.0 THEN
178 FAILED ("INCORRECT >=");
179 END IF;
181 IF NOT (X IN T) OR 100.0 IN T THEN
182 FAILED ("INCORRECT ""IN""");
183 END IF;
185 IF X NOT IN T OR NOT (100.0 NOT IN T) THEN
186 FAILED ("INCORRECT ""NOT IN""");
187 END IF;
189 IF +X /= 30.0 OR +(Z - 100.0) /= -100.0 THEN
190 FAILED ("INCORRECT UNARY +");
191 END IF;
193 IF -X /= 0.0 - 30.0 OR -(Z - 100.0) /= 100.0 THEN
194 FAILED ("INCORRECT UNARY -");
195 END IF;
197 IF ABS X /= 30.0 OR ABS (Z - 100.0) /= 100.0 THEN
198 FAILED ("INCORRECT ABS");
199 END IF;
201 IF T (X * IDENT (-1.0)) /= -30.0 OR
202 T (IDENT (2.0) * (Z + 15.0)) /= 30.0 THEN
203 FAILED ("INCORRECT * (FIXED, FIXED)");
204 END IF;
206 IF X * IDENT_INT (-1) /= -30.0 OR
207 (Z + 50.0) * 2 /= 100.0 THEN
208 FAILED ("INCORRECT * (FIXED, INTEGER)");
209 END IF;
211 IF IDENT_INT (-1) * X /= -30.0 OR
212 2 * (Z + 50.0) /= 100.0 THEN
213 FAILED ("INCORRECT * (INTEGER, FIXED)");
214 END IF;
216 IF T (X / IDENT (3.0)) /= 10.0 OR
217 T ((Z + 90.0) / X) /= 3.0 THEN
218 FAILED ("INCORRECT / (FIXED, FIXED)");
219 END IF;
221 IF X / IDENT_INT (3) /= 10.0 OR (Z + 90.0) / 30 /= 3.0 THEN
222 FAILED ("INCORRECT / (FIXED, INTEGER)");
223 END IF;
225 A (X'ADDRESS);
227 IF T'AFT /= 2 OR T'BASE'AFT < 3 THEN
228 FAILED ("INCORRECT 'AFT");
229 END IF;
231 IF T'BASE'SIZE < 15 THEN
232 FAILED ("INCORRECT 'BASE'SIZE");
233 END IF;
235 IF T'DELTA /= 2.0 ** (-4) OR T'BASE'DELTA > 2.0 ** (-7) THEN
236 FAILED ("INCORRECT 'DELTA");
237 END IF;
240 IF T'FORE /= 3 OR T'BASE'FORE < 4 THEN
241 FAILED ("INCORRECT 'FORE");
242 END IF;
246 IF T'MACHINE_OVERFLOWS /= T'BASE'MACHINE_OVERFLOWS THEN
247 FAILED ("INCORRECT 'MACHINE_OVERFLOWS");
248 END IF;
250 IF T'MACHINE_ROUNDS /= T'BASE'MACHINE_ROUNDS THEN
251 FAILED ("INCORRECT 'MACHINE_ROUNDS");
252 END IF;
257 IF T'SIZE < 10 THEN
258 FAILED ("INCORRECT TYPE'SIZE");
259 END IF;
261 IF T'SMALL > 2.0 ** (-4) OR T'BASE'SMALL > 2.0 ** (-7) THEN
262 FAILED ("INCORRECT 'SMALL");
263 END IF;
264 END;
266 RESULT;
267 END C34004A;