To: J3 Members J3/17-115r1 From: Van Snyder & Dan Nagle Subject: Comments on Clause 16 References: 17-007 Date: 2017 February 14 1. Edits ======== [338:23] 15.8.2 Elemental function actual arguments and results p1 after "the shape of the result" add "of the reference" the resulting sentence reads "If a generic name or a specific name is used to reference an elemental function, the shape of the result of the reference is the same as the shape of the actual argument with the greatest rank." {clarify result of function versus result of function reference} [344:2+1 16.4p3] There's no line number for the first line of the paragraph. {does this occur elsewhere?} {in 16.4 Numeric models} [344:2] in 16.4p2 after "+1 or -1." add a sentence "The integer parameters r and q determine the set of model integers." [344:2+2 16.4p3] The usual character for joining two alternative right-hand sides of an equation is \left\{, not \left(. [344:5-6 16.4p3] delete "integer parameters r and q determine the set of model integers and the" {keep integer discussion and real discussion distinct} [352:2 16.7p4] change "segment B" to "another segment B" {A and B are different segments} [358:26] 16.9.16 ASSOCIATED (POINTER [, TARGET]) case(iii) change "procedure pointer" to "internal procedure" {make statement correct} 2. Questions without edits ========================== Are atomic subroutines impure? Why? [344:15-16 16.5p1] The paragraph seems inconsistent. The first sentence says it performs an action on its ATOM argument, and determination of the value to be assigned to its OLD argument, atomically. Then the second sentence says that only the action on the ATOM is performed atomically. Which is it? {No, see [341:17-18] 16.1 Classes of intrinsic procedures where the standard explicitly so states} 3. Edits JoR declined to endorse ================================ [341:28 16.2.1p1] After "procedures" insert "have explicit interface and therefore" {unnecessary possible wrong} [341:28 16.2.1p1] After "procedures" insert "have explicit interface and therefore" {unnecessary possible wrong} [342:29 16.2.4p2] Replace "and" with a comma. After "MAXLOC" insert ", or REDUCE". {unnecessary} [346:15+ 16.7p2] Insert a NOTE "NOTE 16.9a All standard intrinsic elemental procedures are pure." {if we add one that isn't, this must to be repaired later} [354:7 16.9.2p5] This is a bit pedantic, but a perverse reader might wonder about the possibility to use the negative square root. Insert "+" before \sqrt{x^2+y^2}, or put \left| and \right| before and after it. {unnecessary} [358:26 16.9.16] The POINTER argument is required to be a pointer. Case(iii) begins "If TARGET ... is a procedure pointer." Therefore delete ", if the procedure is a procedure pointer," because both arguments are pointers, and therefore the clause is not necessary. Indeed, it invites one to re-read the paragraph to make sure there's not a subtle point that is not being understood. {use smaller fix} [371:18 16.9.49p3] Replace "Its result shall have" with "Its result shall be a scalar that has". {incorrect- the object being reduced might be an array} [390:9 16.9.87p5] This is a bit pedantic, but a perverse reader might wonder about the possibility to use the negative square root. Insert "+" before \sqrt{X^2+Y^2}, or put \left| and \right| before and after it. {unnecessary} [416:14 16.9.146p3] It is too easy to read the description as requiring ROUND to appear if X is of type real and MOLD is of type integer. One must read it quite carefully to verify it does not say "if and only if". Replace "ROUND shall be present ... type integer" with "ROUND shall not be present if X is not of type real or MOLD is not of type integer." {unnecessary} [422:18-19 16.9.161p3] Insert "scalar" before "arguments". Replace "have" with "be a scalar that has". {incorrect}