From: Patrick Noffke <patrick.noffke@gmail.com>
Subject: Fixed-point question
Date: Fri, 26 Jun 2015 06:20:26 -0700 (PDT)
Date: 2015-06-26T06:20:26-07:00 [thread overview]
Message-ID: <249bcd57-3074-4566-b8f2-03e6923bfbce@googlegroups.com> (raw)
Why are C1 and C2 different?
with Ada.Text_IO;
procedure FP_Test is
type Fixed_Type is delta 1.0 / 180.0 range 0.0 .. 65535.0 / 180.0;
N : constant := 0.2;
D : constant := 4.5 / 330.0; -- 0.013636
C1 : constant Fixed_Type := Fixed_Type (N / D);
C2 : constant Fixed_Type := N / D;
begin
Ada.Text_IO.Put_Line ("C1 := " & C1'Img);
Ada.Text_IO.Put_Line ("C2 := " & C2'Img);
end FP_Test;
$ ./fp_test
C1 := 14.664
C2 := 17.000
I am using GNAT on Fedora 21 (x86_64) and GNAT 2014 for ARM-ELF (Linux-hosted). The output above is on Fedora. In the ARM processor (Cortex-M4), C1 is 14.667 and C2 is 18.
It appears that for ARM, the compiler is computing C2 as Fixed_Type (N) / Fixed_Type (D), or 0.2 / (2 / 180) = 0.2 / 0.01111 = 18.
I'm not sure why C2 is 17 on the Fedora PC.
Thanks,
Patrick
next reply other threads:[~2015-06-26 13:20 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-26 13:20 Patrick Noffke [this message]
2015-06-26 16:56 ` Fixed-point question Jeffrey R. Carter
2015-06-26 18:21 ` Patrick Noffke
2015-06-26 20:21 ` Anh Vo
2015-06-26 20:25 ` Jeffrey R. Carter
2015-06-27 2:55 ` Patrick Noffke
2015-06-26 23:14 ` Qun-Ying
2015-06-27 3:00 ` Patrick Noffke
2015-06-27 4:44 ` Jeffrey R. Carter
2015-06-27 17:59 ` Patrick Noffke
2015-06-27 18:38 ` Jeffrey R. Carter
2015-06-27 19:20 ` Bob Duff
2015-06-27 19:57 ` Jeffrey R. Carter
2015-06-27 20:42 ` Bob Duff
2015-06-28 11:39 ` Brian Drummond
2015-06-29 13:28 ` Patrick Noffke
2015-06-29 14:13 ` Bob Duff
2015-06-27 23:41 ` Anh Vo
-- strict thread matches above, loose matches on Subject: below --
1995-04-01 0:00 Garlington KE
1995-04-06 0:00 ` Robert Dewar
1995-04-07 0:00 ` Garlington KE
1995-04-07 0:00 ` Robert Dewar
1995-04-07 0:00 ` Robert I. Eachus
1995-04-07 0:00 ` Robert Dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox