From: stt@houdini.camb.inmet.com (Tucker Taft)
Subject: Re: Fixed point multiplication ambiguity
Date: 1999/01/28
Date: 1999-01-28T00:00:00+00:00 [thread overview]
Message-ID: <F696u2.Cp.0.-s@inmet.camb.inmet.com> (raw)
In-Reply-To: 78od6d$b4t$2@plug.news.pipex.net
Nick Roberts (Nick.Roberts@dial.pipex.com) wrote:
: Tucker Taft wrote in message ...
: [...]
: |: procedure Tf is
: |
: |: D : Duration := 5.0;
: |
: |: Dec_Delt : Integer := Integer (D * 10.0 + 0.5);
: |
: |This is legal. Overload resolution interprets "D * 10.0" as returning
: |universal_fixed. This is implicitly convertible to Duration (as well
: |as any other fixed point type), as is 0.5. Presuming there is no
: |other fixed-point type with a directly visible "+", this should resolve,
: |and use the "+" of Duration.
: [...]
: Yes, this is legal, but Tucker's explanation is not precisely right.
I believe I am right (see below).
: ... The D*10.0 does resolve as Tucker says, giving a universal_fixed. The 0.5
: literal is a universal_real. Thus adding them gives us the pattern
: "+"(universal_fixed,universal_real) return unknown. However, it is the rule
: in RM 8.6 [29,30] preferring root types that allows this to be resolved into
: the pattern "+"(root_real,root_real) return root_real implied by RM 4.5.3
: [2]. So the expression D*10.0+0.5 returns a value of type root_real, which
: can then be converted to an integer and assigned to Dec_Delt.
Sorry, but you are wrong. Universal_fixed is *not* implicitly convertible
to root_real. It is implicitly convertible to any *fixed point* type,
and to universal_real (because any real type is implicitly convertible
both *to* and *from* universal real), but *not* to root_real (I realize
only a died-in-the-wool language lawyer will believe this reasoning).
: However, the expression Integer(D*10.0+0.5) causes a root_real addition and
: conversion to integer to be executed dynamically.
No, this expression uses Duration's "+", because this is effectively
equivalent to:
Integer(Duration(D*10.0)+Duration(0.5))
The whole fixed-point multiplication model is pretty obscure, unfortunately.
: ...
: -------------------------------------------
: Nick Roberts
: -------------------------------------------
--
-Tucker Taft stt@averstar.com http://www.averstar.com/~stt/
Technical Director, Distributed IT Solutions (www.averstar.com/tools)
AverStar (formerly Intermetrics, Inc.) Burlington, MA USA
next prev parent reply other threads:[~1999-01-28 0:00 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-01-14 0:00 Fixed point multiplication ambiguity Marc A. Criley
1999-01-14 0:00 ` Robert I. Eachus
1999-01-14 0:00 ` bob
1999-01-14 0:00 ` David C. Hoos, Sr.
1999-01-14 0:00 ` Tom Moran
1999-01-14 0:00 ` Tucker Taft
1999-01-15 0:00 ` robert_dewar
1999-01-28 0:00 ` Nick Roberts
1999-01-28 0:00 ` Tucker Taft [this message]
1999-01-28 0:00 ` robert_dewar
1999-01-29 0:00 ` Nick Roberts
1999-01-29 0:00 ` Tucker Taft
1999-01-29 0:00 ` Nick Roberts
1999-01-29 0:00 ` Tucker Taft
1999-02-01 0:00 ` Robert I. Eachus
1999-02-02 0:00 ` Building a compiler (was: Fixed point multiplication ambiguity) Nick Roberts
1999-02-03 0:00 ` Chris Morgan
1999-02-04 0:00 ` robert_dewar
1999-02-04 0:00 ` Garbage collection - was " news.oxy.com
1999-02-04 0:00 ` robert_dewar
1999-02-05 0:00 ` David Botton
1999-02-05 0:00 ` Tom Moran
1999-02-18 0:00 ` news.oxy.com
1999-02-18 0:00 ` Garbage collection - was Re: Building a compiler Samuel Mize
1999-02-19 0:00 ` Samuel Mize
1999-02-18 0:00 ` Garbage collection - was Re: Building a compiler (was: Fixed point multiplication ambiguity) dewar
1999-02-18 0:00 ` David Botton
1999-02-18 0:00 ` AdaHag
1999-02-19 0:00 ` Steven Hovater
1999-02-20 0:00 ` A Modest Defense of ACT (though they are big boys and can take care of themselves) Steve Quinlan
1999-02-21 0:00 ` dewar
1999-02-22 0:00 ` Matthew Heaney
1999-02-21 0:00 ` bill
1999-02-22 0:00 ` Larry Kilgallen
1999-02-22 0:00 ` dennison
1999-02-22 0:00 ` dennison
1999-02-24 0:00 ` Steve Quinlan
1999-02-25 0:00 ` dennison
1999-02-26 0:00 ` Steve Quinlan
1999-02-26 0:00 ` dennison
1999-02-27 0:00 ` Simon Wright
1999-02-27 0:00 ` Dave Taylor
1999-02-28 0:00 ` dewar
1999-02-25 0:00 ` dewar
1999-02-25 0:00 ` Steve Quinlan
1999-02-25 0:00 ` robert_dewar
1999-02-05 0:00 ` GC+HC for GNAT/GCC (was: Building a compiler) Nick Roberts
[not found] ` <m33e4jvs1n.fsf@muc.de>
1999-02-06 0:00 ` GC+FSD for GNAT/GCC Nick Roberts
1999-02-07 0:00 ` robert_dewar
1999-02-05 0:00 ` Building a compiler Nick Roberts
1999-02-05 0:00 ` Tucker Taft
1999-02-06 0:00 ` Nick Roberts
1999-02-03 0:00 ` Building a compiler (was: Fixed point multiplication ambiguity) dennison
1999-01-30 0:00 ` Fixed point multiplication ambiguity robert_dewar
1999-02-02 0:00 ` Building a compiler (was: Fixed point multiplication ambiguity) Nick Roberts
1999-02-03 0:00 ` Tucker Taft
1999-02-03 0:00 ` robert_dewar
1999-01-28 0:00 ` Fixed point multiplication ambiguity robert_dewar
1999-01-14 0:00 ` Matthew Heaney
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox