CVS difference for ais/ai-00434.txt

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

--- ais/ai-00434.txt	2005/08/21 06:00:41	1.1
+++ ais/ai-00434.txt	2005/10/31 05:18:44	1.2
@@ -1,4 +1,4 @@
-!standard C.3       (23)                               05-08-17  AI95-00434/01
+!standard C.3       (23)                               05-09-20  AI95-00434/02
 !standard C.3       (26)
 !standard C.3       (28)
 !standard C.3.1     (07)
@@ -10,12 +10,28 @@
 !standard C.7.2     (26)
 !standard C.7.2     (30)
 !standard C.7.2     (33)
+!standard 7.1       (05)
+!standard 7.1       (06)
 !standard 11.5      (13)
 !standard 12.1      (08)
+!standard 13.13.2   (08.1)
+!standard 13.13.2   (25)
 !standard A         (03)
 !standard A.1       (11)
 !standard A.1       (20)
+!standard A.5.2     (53)
 !standard C.2       (01)
+!standard F         (05)
+!standard F.3       (18)
+!standard G.1.1     (26)
+!standard G.1.2     (02)
+!standard G.1.2     (41)
+!standard G.1.3     (28)
+!standard G.2.6     (6)
+!standard G.2.6     (13)
+!standard H.1       (5)
+!standard H.1       (6)
+!standard H.3.2     (5)
 !class presentation 05-08-17
 !status Amendment 200Y 05-08-17
 !comment This AI is not yet approved, but is included in the Amendment.
@@ -74,6 +90,34 @@
 18) In C.7.2(30), "task's attributes" is confusing, does it make "task
 attributes" or does it mean "attributes of a task"?
 
+19) In G.1.2(2), "pragma" should be in boldface in "pragma Pure".
+
+20) In A.5.2(53), there is an extra right paren.
+
+21) This list of items in F(5) isn't in any logical order (neither section nor
+alphabetical order).
+
+22) The currency symbol "FF" is obsolete (in F.3(18)).
+
+23) G.1.2(41) is confused; it needs to somehow say "When the parameter X
+has the value 1.0, ..."
+
+24) G.1.3(28) should say "file" rather than "line" terminator.
+
+25) In G.2.6(13), "takes precedence to" is strange.
+
+26) In H.1(5 and 6), subtypes don't have an initial value.
+
+27) In H.3.2(5), objects are "visible".
+
+28) Table numbers are missing from Annex G tables.
+
+29) In 7.1(5-6), there are no declarative_items in a package spec.
+
+30) 13.13.2(8.1) and 13.13.2(25) are inscrutable.
+
+31) "Cartesian" should be capitalized in G.1.1(26), .
+
 !recommendation
 
 (See summary.)
@@ -95,7 +139,9 @@
 
 5) Yes, this should be a bullet.
 
-6) Replace "that one of its procedures" with "for which one of its procedures".
+6) Reorganize the start of the sentence to read: "A protected object that has a
+(protected) procedure attached to an interrupt should have a ceiling priority
+at least as high..."
 
 7) Remove the comma.
 
@@ -125,34 +171,122 @@
 
 18) It means "attributes of a task".
 
+19) Keywords in program text should always be in boldface.
+
+20) Delete the last right paren.
+
+21) Put the items into section order.
+
+22) Replace "FF" by "kr" (Danish), as that is still in use and doesn't require changing
+the examples.
+
+23) There are two ways to do this: Make the second half of 38 and 41 subbullets, and
+make 39 and 40 subsubbullets, or duplicate the text in 41. We chose the latter
+as the former is a lot of change that isn't much clearer.
+
+24) A.10.9(28) uses file terminator for this; the rules ought to match.
+
+25) This should be "takes precedence over".
+
+26) Objects have an initial value, add "an object of".
+
+27) Declarations are visible, add "the declaration of".
+
+28) ISO requires that the tables be numbered. Moreover, the ones in Annex F
+*are* numbered. So we add numbers to the Annex G tables, and change the
+references to the use the numbers.
+
+29) These should say "basic_declarative_items".
+
+30) Reorganize this text to make it clearer that these paragraphs are
+talking about the default implementations.
+
+31) Yes, capitalize "Cartesian".
+
+!corrigendum 7.1(05)
+
+@drepl
+A @fa<package_declaration> or @fa<generic_package_declaration> requires a
+completion (a body) if it contains any @fa<declarative_item> that requires a
+completion, but whose completion is not in its @fa<package_specification>.
+@dby
+A @fa<package_declaration> or @fa<generic_package_declaration> requires a
+completion (a body) if it contains any @fa<basic_declarative_item> that requires a
+completion, but whose completion is not in its @fa<package_specification>.
+
+!corrigendum 7.1(06)
+
+@drepl
+The first list of @fa<declarative_item>s of a @fa<package_specification> of a
+package other than a generic formal package is called the @i<visible part> of
+the package. The optional list of @fa<declarative_item>s after the reserved
+word @b<private> (of any @fa<package_specification>) is called the @i<private
+part> of the package. If the reserved word @b<private> does not appear, the
+package has an implicit empty private part.
+@dby
+The first list of @fa<basic_declarative_item>s of a @fa<package_specification>
+of a package other than a generic formal package is called the @i<visible part>
+of the package. The optional list of @fa<basic_declarative_item>s after the
+reserved word @b<private> (of any @fa<package_specification>) is called the
+@i<private part> of the package. If the reserved word @b<private> does not
+appear, the package has an implicit empty private part.
+
 !corrigendum 11.5(13)
 
 @drepl
-@xhang<@xtern<Division_Check>
+@xhang<@xterm<Division_Check>
 Check that the second operand is not zero for the operations /, rem and mod.>
 @dby
-@xhang<@xtern<Division_Check>
+@xhang<@xterm<Division_Check>
 Check that the second operand is not zero for the operations /, @b<rem> and @b<mod>.>
 
 !corrigendum 12.1(08)
 
 @drepl
-A @fa<generic_declaration> declares a generic unit - a generic package,
+A @fa<generic_declaration> declares a generic unit @emdash a generic package,
 generic procedure or generic function, as appropriate.
 @dby
-A @fa<generic_declaration> declares a generic unit - a generic package,
+A @fa<generic_declaration> declares a generic unit @emdash a generic package,
 generic procedure, or generic function, as appropriate.
 
+!corrigendum 13.13.02(8.1)
+
+@drepl
+For untagged derived types, the Write and Read attributes of the parent type
+are inherited as specified in 13.1; otherwise, the default implementations of
+these attributes are used.
+The default implementations of Write and Read attributes execute as follows:
+@dby
+For untagged derived types, the default implementations
+of the Write and Read attributes are inherited from
+the parent type as specified in 13.1; for other types,
+the default implementations of Write and Read attributes
+execute as follows:
+
+!corrigendum 13.13.02(25)
+
+@drepl
+For untagged derived types, the Output and Input attributes of the parent type
+are inherited as specified in 13.1; otherwise, the default implementations of
+these attributes are used. The default implementations of Output and Input
+attributes execute as follows:
+@dby
+For untagged derived types, the default implementations
+of the Output and Input attributes are inherited from
+the parent type as specified in 13.1; for other types,
+the default implementations of Output and Input attributes
+execute as follows:
+
 !corrigendum A(03)
 
 @drepl
 The implementation shall ensure that each language defined subprogram is
-reentrant the sense that concurrent calls on the same subprogram perform as
+reentrant in the sense that concurrent calls on the same subprogram perform as
 specified, so long as all parameters that could be passed by reference denote
 nonoverlapping objects.
 @dby
 The implementation shall ensure that each language-defined subprogram is
-reentrant the sense that concurrent calls on the same subprogram perform as
+reentrant in the sense that concurrent calls on the same subprogram perform as
 specified, so long as all parameters that could be passed by reference denote
 nonoverlapping objects.
 
@@ -174,6 +308,13 @@
 @xcode<   -- @ft<@i<The floating point type root_real and the>>
    -- @ft<@i<corresponding universal type universal_real are predefined.>>>
 
+!corrigendum A.05.02(53)
+
+@drepl
+@xcode<-Log(Random(G) + Float'Model_Small))>
+@dby
+@xcode<-Log(Random(G) + Float'Model_Small)>
+
 !corrigendum C.02(01)
 
 @drepl
@@ -235,13 +376,13 @@
 If the Ceiling_Locking policy (see D.3) is in effect then upon the
 initialization of a protected object that either an Attach_Handler or
 Interrupt_Handler pragma applies to one of its procedures, a check is made that
-the ceiling priority defined in the protected_definition is in the range of
+the ceiling priority defined in the @fa<protected_definition> is in the range of
 System.Interrupt_Priority. If the check fails, Program_Error is raised.
 @dby
 If the Ceiling_Locking policy (see D.3) is in effect, then upon the
 initialization of a protected object for which either an Attach_Handler or
 Interrupt_Handler pragma applies to one of its procedures, a check is made that
-the ceiling priority defined in the protected_definition is in the range of
+the ceiling priority defined in the @fa<protected_definition> is in the range of
 System.Interrupt_Priority. If the check fails, Program_Error is raised.
 
 !corrigendum C.03.01(16)
@@ -250,7 +391,7 @@
 @xindent<1. The worst case overhead for an interrupt handler that is a
 parameterless protected procedure, in clock cycles. This is the execution time
 not directly attributable to the handler procedure or the interrupted
-execution. It is estimated as C - (A+B), where A is how long it takes to
+execution. It is estimated as C @endash (A+B), where A is how long it takes to
 complete a given sequence of instructions without any interrupt, B is how long
 it takes to complete a normal call to a given protected procedure, and C is how
 long it takes to complete the same sequence of instructions when it is
@@ -259,7 +400,7 @@
 @xbullet<The worst-case overhead for an interrupt handler that is a
 parameterless protected procedure, in clock cycles. This is the execution time
 not directly attributable to the handler procedure or the interrupted
-execution. It is estimated as C - (A+B), where A is how long it takes to
+execution. It is estimated as C @endash (A+B), where A is how long it takes to
 complete a given sequence of instructions without any interrupt, B is how long
 it takes to complete a normal call to a given protected procedure, and C is how
 long it takes to complete the same sequence of instructions when it is
@@ -272,9 +413,9 @@
 procedures is attached to an interrupt should be at least as high as the
 highest processor priority at which that interrupt will ever be delivered.>>
 @dby
-@xindent<@s9<5  The ceiling priority of a protected object for which one of
-its procedures is attached to an interrupt should be at least as high as the
-highest processor priority at which that interrupt will ever be delivered.>>
+@xindent<@s9<5  A protected object that has a (protected) procedure attached to an
+interrupt should have a ceiling priority at least as high as the highest
+processor priority at which that interrupt will ever be delivered.>>
 
 !corrigendum C.03.02(22)
 
@@ -366,12 +507,229 @@
 subprogram of an instance of this package) identifies a nonexistent task, the
 execution of the program is erroneous.>>
 
+!corrigendum F(5)
 
+@drepl
+See also: 3.5.9, "Fixed Point Types"; 3.5.10, "Operations of Fixed Point
+Types"; 4.6, "Type Conversions"; 13.3, "Operational and Representation
+Attributes"; A.10.9, "Input-Output for Real Types"; B.4, "Interfacing with
+COBOL"; B.3, "Interfacing with C and C++"; Annex G, "Numerics".
+@dby
+See also: 3.5.9, "Fixed Point Types"; 3.5.10, "Operations of Fixed Point
+Types"; 4.6, "Type Conversions"; 13.3, "Operational and Representation
+Attributes"; A.10.9, "Input-Output for Real Types"; B.3,
+"Interfacing with C and C++"; B.4, "Interfacing with
+COBOL"; Annex G, "Numerics".
+
+!corrigendum F.3(18)
+
+@drepl
+An example of a picture String is "<###Z_ZZ9.99>". If the currency string is
+"FF", the separator character is ',', and the radix mark is '.' then the edited
+output string values for the decimal values 32.10 and @endash5432.10 are
+"bbFFbbb32.10b" and "(bFF5,432.10)", respectively, where 'b' indicates the
+space character.
+@dby
+An example of a picture String is "<###Z_ZZ9.99>". If the currency string is
+"kr", the separator character is ',', and the radix mark is '.' then the edited
+output string values for the decimal values 32.10 and @endash5432.10 are
+"bbkrbbb32.10b" and "(bkr5,432.10)", respectively, where 'b' indicates the
+space character.
+
+!corrigendum G.01.01(26)
+
+@drepl
+Complex is a visible type with cartesian components.
+@dby
+Complex is a visible type with Cartesian components.
+
+!corrigendum G.01.01(56)
+
+@drepl
+Implementations may obtain the result of exponentiation of a complex or
+pure-imaginary operand by repeated complex multiplication, with arbitrary
+association of the factors and with a possible final complex reciprocation
+(when the exponent is negative). Implementations are also permitted to obtain
+the result of exponentiation of a complex operand, but not of a pure-imaginary
+operand, by converting the left operand to a polar representation;
+exponentiating the modulus by the given exponent; multiplying the argument by
+the given exponent; and reconverting to a cartesian representation. Because of
+this implementation freedom, no accuracy requirement is imposed on complex
+exponentiation (except for the prescribed results given above, which apply
+regardless of the implementation method chosen).
+@dby
+Implementations may obtain the result of exponentiation of a complex or
+pure-imaginary operand by repeated complex multiplication, with arbitrary
+association of the factors and with a possible final complex reciprocation
+(when the exponent is negative). Implementations are also permitted to obtain
+the result of exponentiation of a complex operand, but not of a pure-imaginary
+operand, by converting the left operand to a polar representation;
+exponentiating the modulus by the given exponent; multiplying the argument by
+the given exponent; and reconverting to a Cartesian representation. Because of
+this implementation freedom, no accuracy requirement is imposed on complex
+exponentiation (except for the prescribed results given above, which apply
+regardless of the implementation method chosen).
+
+
+!corrigendum G.01.02(2)
+
+@drepl
+@xcode<@b<with> Ada.Numerics.Generic_Complex_Types;
+@b<generic>
+   @b<with package> Complex_Types @b<is>
+         @b<new> Ada.Numerics.Generic_Complex_Types (<@>);
+   @b<use> Complex_Types;
+@b<package> Ada.Numerics.Generic_Complex_Elementary_Functions @b<is>
+   pragma Pure(Generic_Complex_Elementary_Functions);>
+@dby
+@xcode<@b<with> Ada.Numerics.Generic_Complex_Types;
+@b<generic>
+   @b<with package> Complex_Types @b<is>
+         @b<new> Ada.Numerics.Generic_Complex_Types (<@>);
+   @b<use> Complex_Types;
+@b<package> Ada.Numerics.Generic_Complex_Elementary_Functions @b<is>
+   @b<pragma> Pure(Generic_Complex_Elementary_Functions);>
+
+!corrigendum G.01.02(41)
+
+@drepl
+@xbullet<the Log function yields an imaginary result; and the Arcsin and Arccos
+functions yield a real result.>
+@dby
+@xbullet<When the parameter X has the value @endash1.0, the Log function yields an
+imaginary result; and the Arcsin and Arccos functions yield a real result.>
+
+!corrigendum G.01.03(28)
+
+@drepl
+@xindent<Reads a complex value from the beginning of the given string,
+following the same rule as the Get procedure that reads a complex value from a
+file, but treating the end of the string as a line terminator. Returns, in the
+parameter Item, the value of type Complex that corresponds to the input
+sequence. Returns in Last the index value such that From(Last) is the last
+character read.>
+@dby
+@xindent<Reads a complex value from the beginning of the given string,
+following the same rule as the Get procedure that reads a complex value from a
+file, but treating the end of the string as a file terminator. Returns, in the
+parameter Item, the value of type Complex that corresponds to the input
+sequence. Returns in Last the index value such that From(Last) is the last
+character read.>
+
+!corrigendum G.02.04(11)
+
+@drepl
+The prescribed results specified in A.5.1 for certain
+functions at particular parameter values take precedence over the maximum
+relative error bounds; effectively, they narrow to a single value the result
+interval allowed by the maximum relative error bounds. Additional rules with a
+similar effect are given by the table below for the inverse trigonometric
+functions, at particular parameter values for which the mathematical result is
+possibly not a model number of @i<EF>.Float_Type (or is, indeed, even
+transcendental). In each table entry, the values of the parameters are such
+that the result lies on the axis between two quadrants; the corresponding
+accuracy rule, which takes precedence over the maximum relative error bounds,
+is that the result interval is the model interval of @i<EF>.Float_Type
+associated with the exact mathematical result given in the table.
+@dby
+The prescribed results specified in A.5.1 for certain
+functions at particular parameter values take precedence over the maximum
+relative error bounds; effectively, they narrow to a single value the result
+interval allowed by the maximum relative error bounds. Additional rules with a
+similar effect are given by table G-1 for the inverse trigonometric
+functions, at particular parameter values for which the mathematical result is
+possibly not a model number of @i<EF>.Float_Type (or is, indeed, even
+transcendental). In each table entry, the values of the parameters are such
+that the result lies on the axis between two quadrants; the corresponding
+accuracy rule, which takes precedence over the maximum relative error bounds,
+is that the result interval is the model interval of @i<EF>.Float_Type
+associated with the exact mathematical result given in the table.
+
+!corrigendum G.02.06(06)
+
+@drepl
+The error bounds for particular complex functions are tabulated below.
+In the table, the error bound is given as the coefficient of
+@i<CT>.Real'Model_Epsilon.
+@dby
+The error bounds for particular complex functions are tabulated in table
+G-2. In the table, the error bound is given as the coefficient of
+@i<CT>.Real'Model_Epsilon.
+
+!corrigendum G.02.06(13)
+
+@drepl
+The amount by which a component of the result of an inverse trigonometric or
+inverse hyperbolic function is allowed to spill over into a quadrant adjacent
+to the one corresponding to the principal branch, as given in G.1.2, is
+limited. The rule is that the result belongs to the smallest model interval of
+@i<CT>.Real that contains both boundaries of the quadrant corresponding to the
+principal branch. This rule also takes precedence to the maximum error bounds,
+effectively narrowing the result interval allowed by them.
+@dby
+The amount by which a component of the result of an inverse trigonometric or
+inverse hyperbolic function is allowed to spill over into a quadrant adjacent
+to the one corresponding to the principal branch, as given in G.1.2, is
+limited. The rule is that the result belongs to the smallest model interval of
+@i<CT>.Real that contains both boundaries of the quadrant corresponding to the
+principal branch. This rule also takes precedence over the maximum error bounds,
+effectively narrowing the result interval allowed by them.
+
+!corrigendum H.01(05)
+
+@drepl
+If a @fa<pragma> Normalize_Scalars applies, the implementation shall document
+the implicit initial value for scalar subtypes, and shall identify each case in
+which such a value is used and is not an invalid representation.
+@dby
+If a @fa<pragma> Normalize_Scalars applies, the implementation shall document
+the implicit initial value for objects of scalar subtypes, and shall identify
+each case in which such a value is used and is not an invalid representation.
+
+!corrigendum H.01(06)
+
+@drepl
+Whenever possible, the implicit initial value for a scalar subtype should be an
+invalid representation (see 13.9.1).
+@dby
+Whenever possible, the implicit initial value for an object of a scalar subtype
+should be an invalid representation (see 13.9.1).
+
+!corrigendum H.03.02(05)
+
+@drepl
+An @i<inspection point> is a point in the object code corresponding to the
+occurrence of a pragma Inspection_Point in the compilation unit.
+An object is @i<inspectable> at an inspection point if the
+corresponding pragma Inspection_Point either has an argument denoting that
+object, or has no arguments and the object is visible at the inspection point.
+@dby
+An @i<inspection point> is a point in the object code corresponding to the
+occurrence of a pragma Inspection_Point in the compilation unit.
+An object is @i<inspectable> at an inspection point if the
+corresponding pragma Inspection_Point either has an argument denoting that
+object, or has no arguments and the declaration of the object is visible at the
+inspection point.
+
+
 !ACATS test
 
 None needed.
 
 !appendix
+
+From: John Barnes
+Sent: Monday, September 12, 2005  3:33 AM
+
+In G.1.2(2) pragma is not in bold. (Generic_Complex_Elementary_Functions)
+
+****************************************************************
+
+From: Dan Eilers
+Sent: Tuesday, August 23, 2005  7:28 PM
+
+There are unmatched right parens in RM 9.11(3/2),
+RM A.18.2(153/2), RM A.5.2(53), and AARM G.3.2(161.b/2).
 
 ****************************************************************
 

Questions? Ask the ACAA Technical Agent