From: "Dr. Joachim Schr�er" <joachim.schroeer@vs.dasa.de>
Subject: Re: Top 10 Language Constructs (Ada)
Date: 2000/07/18
Date: 2000-07-18T00:00:00+00:00 [thread overview]
Message-ID: <8l21od$mkr@newsserv.vs.dasa.de> (raw)
In-Reply-To: 39751555.4E40A4A7@lmco.com
Bill Brennan <william.c.brennan@lmco.com> schrieb in im Newsbeitrag:
39751555.4E40A4A7@lmco.com...
> David Kristola wrote:
>
> > The other day, i came across a message field in an interface document
> > that i was coding against. The field is 16 bits, with the high order
> > bit being a sign bit, the next highest order bit has the value 2^1,
> > the third highest bit is 2^0, and so on down to the low order bit,
> > which is 2^(-13). The note said that the field is 2's complement.
> > No problem....
> >
> > type Plasma_Volts_Type is delta 0.00012207 range -4.0 .. 3.99987793;
> > for Plasma_Volts_Type'Size use 16;
>
> Actually, this doesn't compile in GNAT, I presume because it rounds
> Plasma_Volts_Type'Last to something which won't fit in 16 bits.
>
> Besides the fact that this type definition isn't portable (for GNAT
> anyway),
> it doesn't really reflect what you're trying to say. Without your
> description,
> I would have no idea that 0.00012207 ~= 2^(-13) or that
> 3.99987793 ~= 4 - 2^(-13).
>
> Personally, I think it's clearer to state it as
>
> type Plasma_Volts_Type is
> delta 2#000.0_0000_0000_0001# -- approx 0.00012207
> range -2#100.0_0000_0000_0000# .. -- -4
> 2#011.1_1111_1111_1111#; -- approx 3.99987793
>
> for Plasma_Volts_Type'Size use 16;
>
> which will compile, and more accurately expresses what is intended.
>
> This ability to express literals fairly transparently using any
> numerical
> base of convenience is yet another reason to value Ada. (though I'm not
> sure it's important enough to go on my top 10 list.)
>
> -- Bill Brennan
What about this version:
type Plasma_Volts_Type is delta 2.0**(-13) range -4.0 .. 4.0 - 2.0**(-13);
for Plasma_Volts_Type'Size use 16;
And if the required range and the 'delta allow 'delta < 'small you have to
write a rep-clause for 'small like:
for Plasma_Volts_Type'Small use 2.0**(-13);
Joachim Schroeer
next prev parent reply other threads:[~2000-07-18 0:00 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-07-14 0:00 Top 10 Language Constructs (Ada) Bruno Gustavs
2000-07-14 0:00 ` Samuel T. Harris
2000-07-15 0:00 ` Simon Wright
2000-07-18 0:00 ` Nick Keighley
2000-07-14 0:00 ` David Kristola
2000-07-14 0:00 ` Andrew Hately
2000-07-15 0:00 ` David Botton
2000-07-15 0:00 ` Marc A. Criley
2000-07-16 0:00 ` David Botton
2000-07-18 0:00 ` David Kristola
2000-07-18 0:00 ` Stefan Skoglund
2000-07-18 0:00 ` Bill Brennan
2000-07-18 0:00 ` Dr. Joachim Schr�er [this message]
2000-07-19 0:00 ` Bill Brennan
2000-07-18 0:00 ` Scott Ingram`
2000-07-21 0:00 ` Keith Thompson
2000-07-25 0:00 ` Keith Thompson
2000-07-25 0:00 ` Dr. Joachim Schr�er
2000-07-25 0:00 ` Florian Weimer
2000-07-26 0:00 ` David Kristola
2000-07-19 0:00 ` David Kristola
2000-07-18 0:00 ` Scott Ingram`
2000-07-24 0:00 ` Richard Riehle
2000-07-26 0:00 ` The Ada type model (was Re: Top 10 Language Constructs (Ada)) Marc A. Criley
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox