1-- Copyright 2004-2021 Free Software Foundation, Inc. 2-- 3-- This program is free software; you can redistribute it and/or modify 4-- it under the terms of the GNU General Public License as published by 5-- the Free Software Foundation; either version 3 of the License, or 6-- (at your option) any later version. 7-- 8-- This program is distributed in the hope that it will be useful, 9-- but WITHOUT ANY WARRANTY; without even the implied warranty of 10-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11-- GNU General Public License for more details. 12-- 13-- You should have received a copy of the GNU General Public License 14-- along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16with System; 17with Pck; use Pck; 18 19procedure Fixed_Points is 20 21 ------------ 22 -- Test 1 -- 23 ------------ 24 25 -- Fixed point subtypes 26 27 type Base_Fixed_Point_Type is 28 delta 1.0 / 16.0 29 range -2147483648 * 1.0 / 16.0 .. 2147483647 * 1.0 / 16.0; 30 31 subtype Fixed_Point_Subtype is 32 Base_Fixed_Point_Type range -50.0 .. 50.0; 33 34 type New_Fixed_Point_Type is 35 new Base_Fixed_Point_Type range -50.0 .. 50.0; 36 37 Base_Object : Base_Fixed_Point_Type := -50.0; 38 Subtype_Object : Fixed_Point_Subtype := -50.0; 39 New_Type_Object : New_Fixed_Point_Type := -50.0; 40 41 42 ------------ 43 -- Test 2 -- 44 ------------ 45 46 -- Overprecise delta 47 48 Overprecise_Delta : constant := 0.135791357913579; 49 -- delta whose significant figures cannot be stored into a long. 50 51 type Overprecise_Fixed_Point is 52 delta Overprecise_Delta range 0.0 .. 200.0; 53 for Overprecise_Fixed_Point'Small use Overprecise_Delta; 54 55 Overprecise_Object : Overprecise_Fixed_Point := 56 Overprecise_Fixed_Point'Small; 57 58 FP5_Var : FP5_Type := 3 * Delta5; 59 60begin 61 Base_Object := 1.0/16.0; -- Set breakpoint here 62 Subtype_Object := 1.0/16.0; 63 New_Type_Object := 1.0/16.0; 64 Overprecise_Object := Overprecise_Fixed_Point'Small * 2; 65 Do_Nothing (FP1_Var'Address); 66 Do_Nothing (FP2_Var'Address); 67 Do_Nothing (FP3_Var'Address); 68 Do_Nothing (FP4_Var'Address); 69 Do_Nothing (FP5_Var'Address); 70end Fixed_Points; 71