1-- C46021A.ADA
2
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.
15--
16--                                    DISCLAIMER
17--
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 FLOATING POINT CONVERSIONS ARE PERFORMED CORRECTLY
27--     WHEN THE OPERAND TYPE IS AN INTEGER TYPE, FOR 5-DIGIT PRECISION.
28
29-- HISTORY:
30--     JET 02/12/88  CREATED ORIGINAL TEST.
31
32WITH REPORT; USE REPORT;
33
34PROCEDURE C46021A IS
35
36     TYPE FLOAT5 IS DIGITS 5;
37     TYPE INT IS RANGE -32768..32767;
38
39     TYPE NFLOAT5 IS NEW FLOAT5;
40
41     FUNCTION IDENT (A : FLOAT5) RETURN FLOAT5 IS
42     BEGIN
43          IF EQUAL(3,3) THEN
44               RETURN A;
45          ELSE
46               RETURN 0.0;
47          END IF;
48     END IDENT;
49
50     FUNCTION IDENT (A : NFLOAT5) RETURN NFLOAT5 IS
51     BEGIN
52          IF EQUAL(3,3) THEN
53               RETURN A;
54          ELSE
55               RETURN 0.0;
56          END IF;
57     END IDENT;
58
59BEGIN
60     TEST ("C46021A", "CHECK THAT FLOATING POINT CONVERSIONS ARE " &
61                      "PERFORMED CORRECTLY WHEN THE OPERAND TYPE " &
62                      "IS AN INTEGER TYPE, FOR 5-DIGIT PRECISION");
63
64     IF FLOAT5(IDENT_INT(-7)) /= -7.0 THEN
65          FAILED ("INCORRECT VALUE (1)");
66     END IF;
67
68     IF FLOAT5(IDENT_INT(3)) /= 3.0 THEN
69          FAILED ("INCORRECT VALUE (2)");
70     END IF;
71
72     IF FLOAT5(IDENT_INT(-999)) /= -999.0 THEN
73          FAILED ("INCORRECT VALUE (3)");
74     END IF;
75
76     IF FLOAT5(IDENT_INT(101)) /= 101.0 THEN
77          FAILED ("INCORRECT VALUE (4)");
78     END IF;
79
80     IF FLOAT5(IDENT_INT(-32767)) /= -32767.0 THEN
81          FAILED ("INCORRECT VALUE (5)");
82     END IF;
83
84     IF FLOAT5(IDENT_INT(32767)) /= 32767.0 THEN
85          FAILED ("INCORRECT VALUE (6)");
86     END IF;
87
88     IF FLOAT5(-7) /= IDENT(-7.0) THEN
89          FAILED ("INCORRECT VALUE (7)");
90     END IF;
91
92     IF FLOAT5(3) /= IDENT(3.0) THEN
93          FAILED ("INCORRECT VALUE (8)");
94     END IF;
95
96     IF FLOAT5(-999) /= IDENT(-999.0) THEN
97          FAILED ("INCORRECT VALUE (9)");
98     END IF;
99
100     IF FLOAT5(101) /= IDENT(101.0) THEN
101          FAILED ("INCORRECT VALUE (10)");
102     END IF;
103
104     IF FLOAT5(-32767) /= IDENT(-32767.0) THEN
105          FAILED ("INCORRECT VALUE (11)");
106     END IF;
107
108     IF FLOAT5(32767) /= IDENT(32767.0) THEN
109          FAILED ("INCORRECT VALUE (12)");
110     END IF;
111
112     IF FLOAT5(INT'(-7)) /= IDENT(-7.0) THEN
113          FAILED ("INCORRECT VALUE (13)");
114     END IF;
115
116     IF FLOAT5(INT'(3)) /= IDENT(3.0) THEN
117          FAILED ("INCORRECT VALUE (14)");
118     END IF;
119
120     IF FLOAT5(INT'(-999)) /= IDENT(-999.0) THEN
121          FAILED ("INCORRECT VALUE (15)");
122     END IF;
123
124     IF FLOAT5(INT'(101)) /= IDENT(101.0) THEN
125          FAILED ("INCORRECT VALUE (16)");
126     END IF;
127
128     IF FLOAT5(INT'(-32767)) /= IDENT(-32767.0) THEN
129          FAILED ("INCORRECT VALUE (17)");
130     END IF;
131
132     IF FLOAT5(INT'(32767)) /= IDENT(32767.0) THEN
133          FAILED ("INCORRECT VALUE (18)");
134     END IF;
135
136     IF NFLOAT5(IDENT_INT(-7)) /= -7.0 THEN
137          FAILED ("INCORRECT VALUE (19)");
138     END IF;
139
140     IF NFLOAT5(IDENT_INT(3)) /= 3.0 THEN
141          FAILED ("INCORRECT VALUE (20)");
142     END IF;
143
144     IF NFLOAT5(IDENT_INT(-999)) /= -999.0 THEN
145          FAILED ("INCORRECT VALUE (21)");
146     END IF;
147
148     IF NFLOAT5(IDENT_INT(101)) /= 101.0 THEN
149          FAILED ("INCORRECT VALUE (22)");
150     END IF;
151
152     IF NFLOAT5(IDENT_INT(-32767)) /= -32767.0 THEN
153          FAILED ("INCORRECT VALUE (23)");
154     END IF;
155
156     IF NFLOAT5(IDENT_INT(32767)) /= 32767.0 THEN
157          FAILED ("INCORRECT VALUE (24)");
158     END IF;
159
160     IF NFLOAT5(-7) /= IDENT(-7.0) THEN
161          FAILED ("INCORRECT VALUE (25)");
162     END IF;
163
164     IF NFLOAT5(3) /= IDENT(3.0) THEN
165          FAILED ("INCORRECT VALUE (26)");
166     END IF;
167
168     IF NFLOAT5(-999) /= IDENT(-999.0) THEN
169          FAILED ("INCORRECT VALUE (27)");
170     END IF;
171
172     IF NFLOAT5(101) /= IDENT(101.0) THEN
173          FAILED ("INCORRECT VALUE (28)");
174     END IF;
175
176     IF NFLOAT5(-32767) /= IDENT(-32767.0) THEN
177          FAILED ("INCORRECT VALUE (29)");
178     END IF;
179
180     IF NFLOAT5(32767) /= IDENT(32767.0) THEN
181          FAILED ("INCORRECT VALUE (30)");
182     END IF;
183
184     IF NFLOAT5(INT'(-7)) /= IDENT(-7.0) THEN
185          FAILED ("INCORRECT VALUE (31)");
186     END IF;
187
188     IF NFLOAT5(INT'(3)) /= IDENT(3.0) THEN
189          FAILED ("INCORRECT VALUE (32)");
190     END IF;
191
192     IF NFLOAT5(INT'(-999)) /= IDENT(-999.0) THEN
193          FAILED ("INCORRECT VALUE (33)");
194     END IF;
195
196     IF NFLOAT5(INT'(101)) /= IDENT(101.0) THEN
197          FAILED ("INCORRECT VALUE (34)");
198     END IF;
199
200     IF NFLOAT5(INT'(-32767)) /= IDENT(-32767.0) THEN
201          FAILED ("INCORRECT VALUE (35)");
202     END IF;
203
204     IF NFLOAT5(INT'(32767)) /= IDENT(32767.0) THEN
205          FAILED ("INCORRECT VALUE (36)");
206     END IF;
207
208     RESULT;
209
210END C46021A;
211