1-- CD2D11A.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 IF A SMALL SPECIFICATION IS GIVEN FOR A 27-- FIXED POINT TYPE, THEN ARITHMETIC OPERATIONS ON VALUES OF THE 28-- TYPE ARE NOT AFFECTED BY THE REPRESENTATION CLAUSE. 29 30-- HISTORY: 31-- BCB 09/01/87 CREATED ORIGINAL TEST. 32-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. 33 34WITH REPORT; USE REPORT; 35PROCEDURE CD2D11A IS 36 37 BASIC_SMALL : CONSTANT := 2.0 ** (-4); 38 39 TYPE BASIC_TYPE IS DELTA 2.0 ** (-4) RANGE -4.0 .. 4.0; 40 41 TYPE CHECK_TYPE IS DELTA 1.0 RANGE -4.0 .. 4.0; 42 43 FOR CHECK_TYPE'SMALL USE BASIC_SMALL; 44 45 CNEG1 : CHECK_TYPE := -3.5; 46 CNEG2 : CHECK_TYPE := CHECK_TYPE (-1.0/3.0); 47 CPOS1 : CHECK_TYPE := CHECK_TYPE (4.0/6.0); 48 CPOS2 : CHECK_TYPE := 3.5; 49 CZERO : CHECK_TYPE; 50 51 TYPE ARRAY_TYPE IS ARRAY (0 .. 3) OF CHECK_TYPE; 52 CHARRAY : ARRAY_TYPE := 53 (-3.5, CHECK_TYPE (-1.0/3.0), CHECK_TYPE (4.0/6.0), 3.5); 54 55 TYPE REC_TYPE IS RECORD 56 COMPN1 : CHECK_TYPE := -3.5; 57 COMPN2 : CHECK_TYPE := CHECK_TYPE (-1.0/3.0); 58 COMPP1 : CHECK_TYPE := CHECK_TYPE (4.0/6.0); 59 COMPP2 : CHECK_TYPE := 3.5; 60 END RECORD; 61 62 CHREC : REC_TYPE; 63 64 FUNCTION IDENT (FX : CHECK_TYPE) RETURN CHECK_TYPE IS 65 BEGIN 66 IF EQUAL (3, 3) THEN 67 RETURN FX; 68 ELSE 69 RETURN 0.0; 70 END IF; 71 END IDENT; 72 73 PROCEDURE PROC (N1_IN, P1_IN : CHECK_TYPE; 74 N2_INOUT,P2_INOUT : IN OUT CHECK_TYPE; 75 CZOUT : OUT CHECK_TYPE) IS 76 BEGIN 77 78 IF IDENT (N1_IN) + P1_IN NOT IN 79 -2.875 .. -2.8125 OR 80 P2_INOUT - IDENT (P1_IN) NOT IN 81 2.8125 .. 2.875 THEN 82 FAILED ("INCORRECT RESULTS FOR " & 83 "BINARY ADDING OPERATORS - 1"); 84 END IF; 85 86 IF +IDENT (N2_INOUT) NOT IN -0.375 .. -0.3125 OR 87 IDENT (-P1_IN) NOT IN -0.6875 .. -0.625 THEN 88 FAILED ("INCORRECT RESULTS FOR " & 89 "UNARY ADDING OPERATORS - 1"); 90 END IF; 91 92 IF CHECK_TYPE (N1_IN * IDENT (P1_IN)) NOT IN 93 -2.4375 .. -2.1875 OR 94 CHECK_TYPE (IDENT (N2_INOUT) / P2_INOUT) NOT IN 95 -0.125 .. -0.0625 THEN 96 FAILED ("INCORRECT RESULTS FOR " & 97 "MULTIPLYING OPERATORS - 1"); 98 END IF; 99 100 IF ABS IDENT (N2_INOUT) NOT IN 0.3125 .. 0.375 OR 101 IDENT (ABS P1_IN) NOT IN 0.625 .. 0.6875 THEN 102 FAILED ("INCORRECT RESULTS FOR " & 103 "ABSOLUTE VALUE OPERATORS - 1"); 104 END IF; 105 106 CZOUT := 0.0; 107 108 END PROC; 109 110BEGIN 111 TEST ("CD2D11A", "CHECK THAT IF A SMALL SPECIFICATION IS " & 112 "GIVEN FOR AN FIXED POINT TYPE, THEN " & 113 "ARITHMETIC OPERATIONS ON VALUES OF THE " & 114 "TYPE ARE NOT AFFECTED BY THE REPRESENTATION " & 115 "CLAUSE"); 116 117 PROC (CNEG1, CPOS1, CNEG2, CPOS2, CZERO); 118 119 IF IDENT (CZERO) /= 0.0 THEN 120 FAILED ("INCORRECT VALUE FOR OUT PARAMETER"); 121 END IF; 122 123 IF IDENT (CNEG1) + CPOS1 NOT IN -2.875 .. -2.8125 OR 124 CPOS2 - IDENT (CPOS1) NOT IN 2.8125 .. 2.875 THEN 125 FAILED ("INCORRECT RESULTS FOR BINARY ADDING OPERATORS - 2"); 126 END IF; 127 128 IF +IDENT (CNEG2) NOT IN -0.375 .. -0.3125 OR 129 IDENT (-CPOS1) NOT IN -0.6875 .. -0.625 THEN 130 FAILED ("INCORRECT RESULTS FOR UNARY ADDING OPERATORS - 2"); 131 END IF; 132 133 IF CHECK_TYPE (CNEG1 * IDENT (CPOS1)) NOT IN -2.4375 .. -2.1875 OR 134 CHECK_TYPE (IDENT (CNEG2) / CPOS2) NOT IN 135 -0.125 .. -0.0625 THEN 136 FAILED ("INCORRECT RESULTS FOR MULTIPLYING OPERATORS - 2"); 137 END IF; 138 139 IF ABS IDENT (CNEG2) NOT IN 0.3125 .. 0.375 OR 140 IDENT (ABS CPOS1) NOT IN 0.625 .. 0.6875 THEN 141 FAILED ("INCORRECT RESULTS FOR ABSOLUTE VALUE " & 142 "OPERATORS - 2"); 143 END IF; 144 145 IF IDENT (CPOS1) NOT IN 0.625 .. 0.6875 OR 146 CNEG2 IN -0.25 .. 0.0 OR 147 IDENT (CNEG2) IN -1.0 .. -0.4375 THEN 148 FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 2"); 149 END IF; 150 151 IF IDENT (CHARRAY (0)) + CHARRAY (2) NOT IN 152 -2.875 .. -2.8125 OR 153 CHARRAY (3) - IDENT (CHARRAY (2)) NOT IN 154 2.8125 .. 2.875 THEN 155 FAILED ("INCORRECT RESULTS FOR BINARY ADDING OPERATORS - 3"); 156 END IF; 157 158 IF +IDENT (CHARRAY (1)) NOT IN -0.375 .. -0.3125 OR 159 IDENT (-CHARRAY (2)) NOT IN -0.6875 .. -0.625 THEN 160 FAILED ("INCORRECT RESULTS FOR UNARY ADDING OPERATORS - 3"); 161 END IF; 162 163 IF CHECK_TYPE (CHARRAY (0) * IDENT (CHARRAY (2))) NOT IN 164 -2.4375 .. -2.1875 OR 165 CHECK_TYPE (IDENT (CHARRAY (1)) / CHARRAY (3)) NOT IN 166 -0.125 .. -0.0625 THEN 167 FAILED ("INCORRECT RESULTS FOR MULTIPLYING OPERATORS - 3"); 168 END IF; 169 170 IF ABS IDENT (CHARRAY (1)) NOT IN 0.3125 .. 0.375 OR 171 IDENT (ABS CHARRAY (2)) NOT IN 0.625 .. 0.6875 THEN 172 FAILED ("INCORRECT RESULTS FOR ABSOLUTE VALUE " & 173 "OPERATORS - 3"); 174 END IF; 175 176 IF IDENT (CHARRAY (2)) NOT IN 0.625 .. 0.6875 OR 177 CHARRAY (1) IN -0.25 .. 0.0 OR 178 IDENT (CHARRAY (1)) IN -1.0 .. -0.4375 THEN 179 FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 3"); 180 END IF; 181 182 IF IDENT (CHREC.COMPN1) + CHREC.COMPP1 NOT IN 183 -2.875 .. -2.8125 OR 184 CHREC.COMPP2 - IDENT (CHREC.COMPP1) NOT IN 185 2.8125 .. 2.875 THEN 186 FAILED ("INCORRECT RESULTS FOR BINARY ADDING OPERATORS - 4"); 187 END IF; 188 189 IF +IDENT (CHREC.COMPN2) NOT IN -0.375 .. -0.3125 OR 190 IDENT (-CHREC.COMPP1) NOT IN -0.6875 .. -0.625 THEN 191 FAILED ("INCORRECT RESULTS FOR UNARY ADDING OPERATORS - 4"); 192 END IF; 193 194 IF CHECK_TYPE (CHREC.COMPN1 * IDENT (CHREC.COMPP1)) NOT IN 195 -2.4375 .. -2.1875 OR 196 CHECK_TYPE (IDENT (CHREC.COMPN2) / CHREC.COMPP2) NOT IN 197 -0.125 .. -0.0625 THEN 198 FAILED ("INCORRECT RESULTS FOR MULTIPLYING OPERATORS - 4"); 199 END IF; 200 201 IF ABS IDENT (CHREC.COMPN2) NOT IN 0.3125 .. 0.375 OR 202 IDENT (ABS CHREC.COMPP1) NOT IN 0.625 .. 0.6875 THEN 203 FAILED ("INCORRECT RESULTS FOR ABSOLUTE VALUE " & 204 "OPERATORS - 4"); 205 END IF; 206 207 IF IDENT (CHREC.COMPP1) NOT IN 0.625 .. 0.6875 OR 208 CHREC.COMPN2 IN -0.25 .. 0.0 OR 209 IDENT (CHREC.COMPN2) IN -1.0 .. -0.4375 THEN 210 FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 4"); 211 END IF; 212 213 RESULT; 214END CD2D11A; 215