From: Dirk Herrmann <fight_spam@invalid.invalid>
Subject: Re: conversions between fixed-point types
Date: Sun, 20 Sep 2009 10:15:49 +0200
Date: 2009-09-20T10:15:49+02:00 [thread overview]
Message-ID: <h94obl$c7h$1@news.albasani.net> (raw)
In-Reply-To: <nospam-3D5AA1.10481219092009@news.aioe.org>
Dirk Herrmann wrote:
>> And, while experimenting and trying out Adam Beneschan's solution for
>> rounding (thanks for your answer, Alan) I got totally confused
>> because of the following code (I am using GNAT 4.3.4 with the
>> following command line options: gnatmake -f -gnatVa -gnata
>> -gnatwadhl.o -save-temps conversion.adb):
> [...]
>> Is this confusing behaviour allowed? I will submit a bug report if
>> some expert confirms it is a GNAT bug.
John B. Matthews wrote:
> I'm no expert, and I had some trouble following the conversions in your
> example. [...]
Sorry, I should have given more details about why I am confused.
In particular I am disturbed by the fact that the following two lines produce
different results with GNAT, as has been confirmed for GNAT 3.15p (thanks,
tmoran):
FIO.Put(Float(FpB(Float(-1.5)))); TIO.Put(" "); --> -1.20000E+00
FIO.Put(Float(MakeB(-1.5))); TIO.Put(" "); --> -1.60000E+00
In the first line, the conversion to FpB is done from a Float value, which is
a direct cast from -1.5. In the second line, the conversion to FpB is also
done from a Float value, but in this case -1.5 is passed as a Float argument
to MakeB. What I don't understand is, why it should make a difference whether
I cast -1.5 to Float and then convert it to FpB compared to the situation
where -1.5 is converted to a Float argument, which is then converted to FpB.
The same question arises for the following three lines:
FIO.Put(Float(FpB(FpA(Float(-1.5))))); TIO.Put(" "); --> -1.20000E+00
FIO.Put(Float(MakeBFromA(FpA(-1.5)))); TIO.Put(" "); --> -1.60000E+00
FIO.Put(Float(MakeBViaA(-1.5))); TIO.Put(" "); --> -1.60000E+00
Again, the difference lies in whether a sequence of casts is used compared to
whether the very same value is passed as an argument.
Thanks for your help,
Dirk Herrmann
(email address gladly given on request)
next prev parent reply other threads:[~2009-09-20 8:15 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-18 21:35 conversions between fixed-point types Dirk Herrmann
2009-09-18 22:42 ` Adam Beneschan
2009-09-19 12:41 ` Dirk Herrmann
2009-09-19 14:48 ` John B. Matthews
2009-09-20 8:15 ` Dirk Herrmann [this message]
2009-09-20 14:22 ` Robert A Duff
2009-09-20 18:55 ` Dirk Herrmann
2009-09-20 20:34 ` Simon Clubley
2009-09-23 20:46 ` Dirk Herrmann
2009-09-27 17:15 ` Simon Clubley
2009-09-27 19:22 ` sjw
2009-09-28 20:18 ` Dirk Herrmann
2009-09-28 18:37 ` Robert A Duff
2009-09-28 20:50 ` Dirk Herrmann
2009-09-20 15:18 ` John B. Matthews
2009-09-20 19:13 ` Dirk Herrmann
2009-09-20 20:09 ` tmoran
2009-09-21 17:24 ` Jeffrey R. Carter
2009-09-23 20:57 ` Dirk Herrmann
2009-09-23 22:28 ` Jeffrey R. Carter
2009-09-24 1:05 ` Adam Beneschan
2009-09-24 3:57 ` Jeffrey R. Carter
2009-09-25 8:47 ` Stuart
2009-09-25 20:41 ` sjw
2009-09-25 21:58 ` Jeffrey R. Carter
2009-09-28 13:40 ` Stuart
2009-09-26 14:43 ` Dirk Herrmann
2009-09-28 15:15 ` Adam Beneschan
2009-09-26 14:31 ` Dirk Herrmann
2009-09-19 18:38 ` tmoran
2009-09-20 8:22 ` 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