From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=BAYES_00,FROM_WORDY, INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,184737148aef02ac X-Google-Attributes: gid103376,public From: "Nick Roberts" Subject: Re: Fixed point multiplication ambiguity Date: 1999/01/29 Message-ID: <78r4qh$fcu$1@plug.news.pipex.net>#1/1 X-Deja-AN: 438165563 References: <78od6d$b4t$2@plug.news.pipex.net> X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 Organization: UUNET WorldCom server (post doesn't reflect views of UUNET WorldCom) Newsgroups: comp.lang.ada Date: 1999-01-29T00:00:00+00:00 List-Id: Tucker Taft wrote in message ... [...] |: ... 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. Tucker is, of course, quite right. My slip. |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)) I am not arguing with this, but which rule (or rules) in the RM specify the above interpretation, please? I've searched and searched (even the AI95s)! (Then again, I reckon my brain must be coming up for it's 20,000 mile service anyway ;-) |The whole fixed-point multiplication model is pretty obscure, unfortunately. But then I would say that, in general, the RM95 does an amazingly good job of pinning down a slippery monster. I hope I haven't added to the confusion too much :-( Just off for a slice of humble pie. Tuck remains champ :-) ------------------------------------------- Nick Roberts -------------------------------------------