comp.lang.ada
 help / color / mirror / Atom feed
From: Jean-Pierre Rosen <rosen@adalog.fr>
Subject: Re: Selective suppression of warnings --- gnat on GNU/Linux
Date: Wed, 31 Dec 2008 10:46:34 +0100
Date: 2008-12-31T10:46:34+01:00	[thread overview]
Message-ID: <42ffjg.s9b.ln@hunter.axlog.fr> (raw)
In-Reply-To: <wccr63p1cke.fsf@shell01.TheWorld.com>

Robert A Duff a �crit :
> 1.    subtype T is Integer range A..B;
> 2.    type T is new Integer range A..B;
> 3.    type T is range A..B;
> [...] 
> Option 3 is questionable, because of overflow semantics for intermediate
> results in expressions.  In Pascal, if you say (X+Y)/2, it won't
> overflow if X+Y is in Integer, but not in A..B.  Same is True in Ada for
> option 2, but not necessarily for option 3.
Oh no! Option 2 has exactly the same problem, you just hope that by 
forcing your type to have the same number of bits as Integer (a type you 
know nothing about), there will be enough room for your computations...

If you are worried about overflows (and you use only additions), the 
proper declarations are:
type Big_Enough is range A .. 2*B;
subtype T is Big_Enough range A .. B;

Of course, if you compute more than single additions, a real analysis 
has to be done to determine the bounds of Big_Enough.

By all means, please, let's get rid of Integer!

-- 
---------------------------------------------------------
            J-P. Rosen (rosen@adalog.fr)
Visit Adalog's web site at http://www.adalog.fr



  reply	other threads:[~2008-12-31  9:46 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-30  3:13 Selective suppression of warnings --- gnat on GNU/Linux Michael Mounteney
2008-12-30  8:03 ` Ludovic Brenta
2008-12-30 22:49   ` Michael Mounteney
2008-12-30 23:26     ` Robert A Duff
2008-12-30 11:01 ` (see below)
2008-12-30 11:37   ` Georg Bauhaus
2008-12-30 12:05     ` (see below)
2008-12-30 14:11       ` Pascal ranges (was: Selective suppression of warnings --- gnat on GNU/Linux) Georg Bauhaus
2008-12-30 20:19         ` (see below)
2008-12-30 23:19           ` Pascal ranges Robert A Duff
2008-12-30 23:34             ` (see below)
2008-12-31  0:07               ` Robert A Duff
2008-12-31  0:32                 ` (see below)
2008-12-30 23:13 ` Selective suppression of warnings --- gnat on GNU/Linux Robert A Duff
2008-12-31  9:46   ` Jean-Pierre Rosen [this message]
2008-12-31 14:55     ` Robert A Duff
2008-12-31 16:13       ` Jean-Pierre Rosen
2008-12-31 20:01         ` Robert A Duff
2008-12-31 18:43     ` (see below)
2008-12-31 19:49       ` Robert A Duff
2008-12-31 20:24         ` Jeffrey R. Carter
2008-12-31 22:38           ` Robert A Duff
2008-12-31 19:46 ` Jerry
2008-12-31 22:39   ` Robert A Duff
2008-12-31 23:37   ` Michael Mounteney
2009-01-01  9:45   ` sjw
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox