CVS difference for ais/ai-00379.txt

Differences between 1.1 and version 1.2
Log of other versions for file ais/ai-00379.txt

--- ais/ai-00379.txt	2004/04/27 01:57:16	1.1
+++ ais/ai-00379.txt	2004/04/30 02:35:39	1.2
@@ -1,6 +1,6 @@
-!standard 11.04.01(10)                                  04-04-20  AI95-00378/01
-!standard 11.04.01(12)
-!standard 11.04.01(13)
+!standard A.05.03(26)                                  04-04-20  AI95-00379/00
+!standard A.05.03(29)
+!standard A.05.03(47)
 !class binding interpretation 04-04-20
 !status work item 04-04-20
 !status received 04-04-05
@@ -1040,6 +1040,56 @@
 As I recall, these attributes are used frequently in the GEF implementation;
 you'd want to control the use of 'Machine only to those parts of the code
 where its actually needed.
+
+****************************************************************
+
+From: Geert Bosch
+Sent: Wednesday, April 28, 2004  7:33 AM
+
+This seems confused. We were discussing the behavior of these attributes
+in a static context. If you would be using machine instructions such
+as FSCALE and FXTRACT for the static evaluation, that would not seem
+a conforming implementation is the operands are rounded to machine
+numbers as well. Of course the results of FSCALE and FXTRACT, which
+most likely are used for run-time evaluation, are by definition
+machine numbers.
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Wednesday, April 28, 2004  2:49 PM
+
+> This seems confused. We were discussing the behavior of these attributes
+> in a static context.
+
+Actually, Pascal was discussing them in a dynamic context as well. But
+perhaps you missed that (I only noticed it when I re-read this stuff while
+filing it).
+
+> If you would be using machine instructions such
+> as FSCALE and FXTRACT for the static evaluation, that would not seem
+> a conforming implementation is the operands are rounded to machine
+> numbers as well. Of course the results of FSCALE and FXTRACT, which
+> most likely are used for run-time evaluation, are by definition
+> machine numbers.
+
+No, FSCALE and FXTRACT operate on the Pentium floating point stack, which
+are 80-bit numbers. These definitely are not machine numbers for float (for
+example). As Pascal notes, in an underflow case, these will be very
+different than one of the machine numbers (since the exponents of the 80-bit
+numbers go to +/- 1024); an implementation that doesn't truncate such
+numbers to zero is wrong, by the wording of the standard.
+
+But that means writing and rereading the values of memory on the Pentium,
+which obviously a substantial extra expense. The reason that we recognize
+these in the code generator is because they are commonly used in numerical
+software (like GEF); and that's the last place we want to be paying a large
+extra cost to truncate to machine numbers.
+
+Obviously we could avoid that by adding Machine_Compose and Machine_Scale
+attributes, but that seems like overkill. Or we can just not implement
+strict mode (that was our solution); but it's hard to see who benefits from
+that.
 
 ****************************************************************
 

Questions? Ask the ACAA Technical Agent