1-- C45431A.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-- CHECK THAT FOR FIXED POINT TYPES +A = A AND THAT, FOR MODEL NUMBERS, 26-- -(-A) = A. 27 28-- CASE A: BASIC TYPES THAT FIT THE CHARACTERISTICS OF DURATION'BASE. 29 30-- WRG 8/28/86 31-- PWN 02/02/95 REMOVED INCONSISTENCIES WITH ADA 9X. 32 33WITH REPORT; USE REPORT; 34PROCEDURE C45431A IS 35 36BEGIN 37 38 TEST ("C45431A", "CHECK THAT FOR FIXED POINT TYPES +A = A AND " & 39 "THAT, FOR MODEL NUMBERS, -(-A) = A " & 40 "-- BASIC TYPES"); 41 42 ------------------------------------------------------------------- 43 44A: DECLARE 45 TYPE LIKE_DURATION IS DELTA 0.020 RANGE -86_400.0 .. 86_400.0; 46 47 NON_MODEL_CONST : CONSTANT := 2.0 / 3; 48 NON_MODEL_VAR : LIKE_DURATION := 0.0; 49 50 SMALL, MAX, MIN, ZERO : LIKE_DURATION := 0.5; 51 X : LIKE_DURATION := 0.0; 52 BEGIN 53 -- INITIALIZE "CONSTANTS": 54 IF EQUAL (3, 3) THEN 55 NON_MODEL_VAR := NON_MODEL_CONST; 56 SMALL := LIKE_DURATION'SMALL; 57 MAX := LIKE_DURATION'LAST; 58 MIN := LIKE_DURATION'FIRST; 59 ZERO := 0.0; 60 END IF; 61 62 -- CHECK + OR - ZERO = ZERO: 63 IF "+"(RIGHT => ZERO) /= 0.0 OR 64 +LIKE_DURATION'(0.0) /= ZERO THEN 65 FAILED ("+0.0 /= 0.0"); 66 END IF; 67 IF "-"(RIGHT => ZERO) /= 0.0 OR 68 -LIKE_DURATION'(0.0) /= ZERO THEN 69 FAILED ("-0.0 /= 0.0"); 70 END IF; 71 IF -(-ZERO) /= 0.0 THEN 72 FAILED ("-(-0.0) /= 0.0"); 73 END IF; 74 75 -- CHECK + AND - MAX: 76 IF EQUAL (3, 3) THEN 77 X := MAX; 78 END IF; 79 IF +X /= MAX OR +LIKE_DURATION'LAST /= MAX THEN 80 FAILED ("+LIKE_DURATION'LAST /= LIKE_DURATION'LAST"); 81 END IF; 82 IF -(-X) /= MAX OR -(-LIKE_DURATION'LAST) /= MAX THEN 83 FAILED ("-(-LIKE_DURATION'LAST) /= LIKE_DURATION'LAST"); 84 END IF; 85 86 -- CHECK + AND - MIN: 87 IF EQUAL (3, 3) THEN 88 X := MIN; 89 END IF; 90 IF +X /= MIN OR +LIKE_DURATION'FIRST /= MIN THEN 91 FAILED ("+LIKE_DURATION'FIRST /= LIKE_DURATION'FIRST"); 92 END IF; 93 IF -(-X) /= MIN OR -(-LIKE_DURATION'FIRST) /= MIN THEN 94 FAILED("-(-LIKE_DURATION'FIRST) /= LIKE_DURATION'FIRST"); 95 END IF; 96 97 -- CHECK + AND - SMALL: 98 IF EQUAL (3, 3) THEN 99 X := SMALL; 100 END IF; 101 IF +X /= SMALL OR +LIKE_DURATION'SMALL /= SMALL THEN 102 FAILED ("+LIKE_DURATION'SMALL /= LIKE_DURATION'SMALL"); 103 END IF; 104 IF -(-X) /= SMALL OR -(-LIKE_DURATION'SMALL) /= SMALL THEN 105 FAILED("-(-LIKE_DURATION'SMALL) /= LIKE_DURATION'SMALL"); 106 END IF; 107 108 -- CHECK ARBITRARY MID-RANGE NUMBERS: 109 IF EQUAL (3, 3) THEN 110 X := 1000.984_375; 111 END IF; 112 IF +X /= 1000.984_375 OR +1000.984_375 /= X THEN 113 FAILED ("+1000.984_375 /= 1000.984_375"); 114 END IF; 115 IF -(-X) /= 1000.984_375 OR -(-1000.984_375) /= X THEN 116 FAILED ("-(-1000.984_375) /= 1000.984_375"); 117 END IF; 118 119 -- CHECK "+" AND "-" FOR NON-MODEL NUMBER: 120 IF +LIKE_DURATION'(NON_MODEL_CONST) NOT IN 0.656_25 .. 121 0.671_875 OR 122 +NON_MODEL_VAR NOT IN 0.656_25 .. 0.671_875 THEN 123 FAILED ("+LIKE_DURATION'(2.0 / 3) NOT IN 0.656_25 .. " & 124 "0.671_875"); 125 END IF; 126 IF -LIKE_DURATION'(NON_MODEL_CONST) NOT IN -0.671_875 .. 127 -0.656_25 OR 128 -NON_MODEL_VAR NOT IN -0.671_875 .. -0.656_25 THEN 129 FAILED ("-LIKE_DURATION'(2.0 / 3) NOT IN -0.671_875 " & 130 ".. -0.656_25"); 131 END IF; 132 133 EXCEPTION 134 WHEN OTHERS => 135 FAILED ("EXCEPTION RAISED -- A"); 136 END A; 137 138 ------------------------------------------------------------------- 139 140B: DECLARE 141 TYPE DECIMAL_M4 IS DELTA 100.0 RANGE -1000.0 .. 1000.0; 142 143 NON_MODEL_CONST : CONSTANT := 2.0 / 3; 144 NON_MODEL_VAR : DECIMAL_M4 := 0.0; 145 146 SMALL, MAX, MIN, ZERO : DECIMAL_M4 := -128.0; 147 X : DECIMAL_M4 := 0.0; 148 BEGIN 149 -- INITIALIZE "CONSTANTS": 150 IF EQUAL (3, 3) THEN 151 NON_MODEL_VAR := NON_MODEL_CONST; 152 SMALL := DECIMAL_M4'SMALL; 153 ZERO := 0.0; 154 END IF; 155 156 -- CHECK + OR - ZERO = ZERO: 157 IF +ZERO /= 0.0 OR +DECIMAL_M4'(0.0) /= ZERO THEN 158 FAILED ("+0.0 /= 0.0"); 159 END IF; 160 IF -ZERO /= 0.0 OR -DECIMAL_M4'(0.0) /= ZERO THEN 161 FAILED ("-0.0 /= 0.0"); 162 END IF; 163 IF -(-ZERO) /= 0.0 THEN 164 FAILED ("-(-0.0) /= 0.0"); 165 END IF; 166 167 -- CHECK + AND - MAX: 168 IF EQUAL (3, 3) THEN 169 X := MAX; 170 END IF; 171 -- CHECK + AND - SMALL: 172 IF EQUAL (3, 3) THEN 173 X := SMALL; 174 END IF; 175 IF +X /= SMALL OR +DECIMAL_M4'SMALL /= SMALL THEN 176 FAILED ("+DECIMAL_M4'SMALL /= DECIMAL_M4'SMALL"); 177 END IF; 178 IF -(-X) /= SMALL OR -(-DECIMAL_M4'SMALL) /= SMALL THEN 179 FAILED ("-(-DECIMAL_M4'SMALL) /= DECIMAL_M4'SMALL"); 180 END IF; 181 182 -- CHECK ARBITRARY MID-RANGE NUMBERS: 183 IF EQUAL (3, 3) THEN 184 X := 256.0; 185 END IF; 186 IF +X /= 256.0 OR +256.0 /= X THEN 187 FAILED ("+256.0 /= 256.0"); 188 END IF; 189 IF -(-X) /= 256.0 OR -(-256.0) /= X THEN 190 FAILED ("-(-256.0) /= 256.0"); 191 END IF; 192 193 -- CHECK "+" AND "-" FOR NON-MODEL NUMBER: 194 IF +DECIMAL_M4'(NON_MODEL_CONST) NOT IN 0.0 .. 64.0 OR 195 +NON_MODEL_VAR NOT IN 0.0 .. 64.0 THEN 196 FAILED ("+DECIMAL_M4'(2.0 / 3) NOT IN 0.0 .. 64.0"); 197 END IF; 198 IF -DECIMAL_M4'(NON_MODEL_CONST) NOT IN -64.0 .. 0.0 OR 199 -NON_MODEL_VAR NOT IN -64.0 .. 0.0 THEN 200 FAILED ("-DECIMAL_M4'(2.0 / 3) NOT IN -64.0 .. 0.0"); 201 END IF; 202 203 EXCEPTION 204 WHEN OTHERS => 205 FAILED ("EXCEPTION RAISED -- B"); 206 END B; 207 208 ------------------------------------------------------------------- 209 210 RESULT; 211 212END C45431A; 213