--- Copyright 2004, 2007 Free Software Foundation, Inc.
+-- Copyright 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
procedure Fixed_Points is
+ ------------
+ -- Test 1 --
+ ------------
+
+ -- Fixed point subtypes
+
type Base_Fixed_Point_Type is
delta 1.0 / 16.0
range (System.Min_Int / 2) * 1.0 / 16.0 ..
(System.Max_Int / 2) * 1.0 / 16.0;
- subtype Fixed_Point_Subtype is
- Base_Fixed_Point_Type range -50.0 .. 50.0;
+ subtype Fixed_Point_Subtype is
+ Base_Fixed_Point_Type range -50.0 .. 50.0;
+
+ type New_Fixed_Point_Type is
+ new Base_Fixed_Point_Type range -50.0 .. 50.0;
+
+ Base_Object : Base_Fixed_Point_Type := -50.0;
+ Subtype_Object : Fixed_Point_Subtype := -50.0;
+ New_Type_Object : New_Fixed_Point_Type := -50.0;
+
+
+ ------------
+ -- Test 2 --
+ ------------
+
+ -- Overprecise delta
+
+ Overprecise_Delta : constant := 0.135791357913579;
+ -- delta whose significant figures cannot be stored into a long.
+
+ type Overprecise_Fixed_Point is
+ delta Overprecise_Delta range 0.0 .. 200.0;
+ for Overprecise_Fixed_Point'Small use Overprecise_Delta;
- type New_Fixed_Point_Type is
- new Base_Fixed_Point_Type range -50.0 .. 50.0;
+ Overprecise_Object : Overprecise_Fixed_Point :=
+ Overprecise_Fixed_Point'Small;
- Base_Object : Base_Fixed_Point_Type := -50.0;
- Subtype_Object : Fixed_Point_Subtype := -50.0;
- New_Type_Object : New_Fixed_Point_Type := -50.0;
begin
Base_Object := 1.0/16.0; -- Set breakpoint here
Subtype_Object := 1.0/16.0;
New_Type_Object := 1.0/16.0;
+ Overprecise_Object := Overprecise_Fixed_Point'Small * 2;
end Fixed_Points;