Imported Upstream version 7.9
[platform/upstream/gdb.git] / gdb / testsuite / gdb.ada / fixed_points / fixed_points.adb
1 --  Copyright 2004-2015 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
16 with System;
17
18 procedure Fixed_Points is
19
20    ------------
21    -- Test 1 --
22    ------------
23
24    --  Fixed point subtypes
25
26    type Base_Fixed_Point_Type is
27      delta 1.0 / 16.0
28        range (System.Min_Int / 2) * 1.0 / 16.0 ..
29        (System.Max_Int / 2) * 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 begin
59    Base_Object := 1.0/16.0;   -- Set breakpoint here
60    Subtype_Object := 1.0/16.0;
61    New_Type_Object := 1.0/16.0;
62    Overprecise_Object := Overprecise_Fixed_Point'Small * 2;
63 end Fixed_Points;