From: Simon Wright <simon@pushface.org>
Subject: Re: Simulation of fixed point in c WITH DIFFERENT BIT-WIDTH
Date: Thu, 03 Nov 2005 06:13:19 +0000
Date: 2005-11-03T06:13:19+00:00 [thread overview]
Message-ID: <m2veza9s3k.fsf@grendel.local> (raw)
In-Reply-To: dka579$8fc$1@hudsucker.umdac.umu.se
Colin Paul Gloster <Colin_Paul_Gloster@ACM.org> writes:
> Mnamky did not say in
> news:1130690498.388857.225170@g49g2000cwa.googlegroups.com that the
> datatypes could take negative values, but anyway Gautier's
> type F1 is delta 2.0**(-11) range -1.0 .. 1.0;
> is a wasteful declaration which is bigger than Mnamky's "12-bit
> wordlength and 11-bit fraction".
> A two's complement signed 1 bit integer can have as its lowest value -1
> and as its greatest value 0.
> So
> type F3 is delta 2.0**(-11) range -1.0 .. 1.0 - 2.0**(-11);
> type F4 is delta 2.0**(-14) range -2.0 .. 2.0 - 2.0**(-14);
> are more appropiate datatypes.
I'm not sure what is actually required for portability here. AARM95
3.5.9(22-24) says
The base range of an ordinary fixed point type need not include the
specified bounds themselves so that the range specification can be
given in a natural way, such as:
type Fraction is delta 2.0**(-15) range -1.0 .. 1.0;
With 2's complement hardware, such a type could have a signed
16-bit representation, using 1 bit for the sign and 15 bits for
fraction, resulting in a base range of -1.0 .. 1.0-2.0**(-15).
With GCC 4.0.0 on Darwin, this program
with Ada.Text_IO; use Ada.Text_IO;
procedure Gloster is
type F1 is delta 2.0**(-11) range -1.0 .. 1.0;
for F1'Size use 12;
type F2 is delta 2.0**(-14) range -1.0 .. 1.0;
for F2'Size use 15;
type F3 is delta 2.0**(-11) range -1.0 .. 1.0 - 2.0**(-11);
type F4 is delta 2.0**(-14) range -2.0 .. 2.0 - 2.0**(-14);
begin
Put_Line ("F1's size is" & Natural'Image (F1'Size));
Put_Line ("F2's size is" & Natural'Image (F2'Size));
Put_Line ("F3's size is" & Natural'Image (F3'Size));
Put_Line ("F4's size is" & Natural'Image (F4'Size));
end Gloster;
outputs
$ ./gloster
F1's size is 12
F2's size is 15
F3's size is 12
F4's size is 16
Commenting out the representation clauses, the output is
$ ./gloster
F1's size is 13
F2's size is 16
F3's size is 12
F4's size is 16
I'm not sure why F4's size is 16, though; is this a bug?
next prev parent reply other threads:[~2005-11-03 6:13 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-30 16:41 Simulation of fixed point in c WITH DIFFERENT BIT-WIDTH mnamky
2005-10-30 17:00 ` Dmitry A. Kazakov
2005-10-30 21:46 ` Gautier Write-only
2005-11-01 2:50 ` Steve
2005-11-02 10:42 ` Colin Paul Gloster
2005-11-02 20:43 ` Gautier Write-only
2005-11-03 6:13 ` Simon Wright [this message]
2005-11-03 10:46 ` Colin Paul Gloster
2005-11-03 13:47 ` Robert A Duff
2005-11-03 14:33 ` Dmitry A. Kazakov
2005-11-03 18:19 ` Jeffrey R. Carter
2005-11-03 20:55 ` Simon Wright
2005-11-02 10:57 ` Colin Paul Gloster
2005-11-02 14:49 ` Martin Krischik
2005-11-02 20:40 ` Gautier Write-only
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox