comp.lang.ada
 help / color / mirror / Atom feed
From: "Nasser M. Abbasi" <nma@12000.org>
Subject: Re: evaluation of named numbers
Date: Sun, 17 Oct 2010 11:57:17 -0700
Date: 2010-10-17T11:57:17-07:00	[thread overview]
Message-ID: <i9fgub$emq$1@speranza.aioe.org> (raw)
In-Reply-To: 2304722c-027d-42f6-a45d-5a7646c35cf6@t8g2000yqk.googlegroups.com

On 10/17/2010 8:01 AM, Rolf wrote:
> I always thought that named numbers are fully evaluated with (almost)
> unlimited precision at compile time. I was quite astonished to see
>
>    Ticks : constant := 20 / 1000 * 16_000_000 / 8; -- 40_000 ticks
>
> evaluated to 0 and not to the expected 40.000. It seems that the
> compiler uses integer numbers also for intermediate results and 20 /
> 1000 ends up to be 0 instead of 0.02. Any decent pocket calculator
> gets that right.
>

Lets see:

-------------------------
matlab:

20/1000
ans =
     0.0200

int8(20)/int8(1000)
ans =
     0
-------------------

Pyhton
IDLE 2.6.5
 >>> 20/1000
0

 >>> 20.0/1000
0.02
 >>>
------------------

Fortran:

PROGRAM Main
  implicit none

  PRINT *, 2/1000
  PRINT *, 2.0/1000.0
END PROGRAM Main

$ gfortran t1.f90
$ ./a.exe

            0
   2.00000009E-03

--------------------------------

So, if Ada is wrong, then so all these other systems, right?

--Nasser



  parent reply	other threads:[~2010-10-17 18:57 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-17 15:01 evaluation of named numbers Rolf
2010-10-17 15:28 ` Vinzent Hoefler
2010-10-17 16:05 ` Robert A Duff
2010-10-17 18:32   ` Georg Bauhaus
2010-10-17 18:57 ` Nasser M. Abbasi [this message]
2010-10-17 22:30 ` anon
2010-10-17 22:32 ` anon
replies disabled

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