To: J3 Members J3/17-115r2 From: Van Snyder & Dan Nagle Subject: Comments on Clause 16 References: 17-007 Date: 2017 February 15 1. Edits ======== {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] change \left( to \left\{ {use more common punctuation} [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} [358:26] 16.9.16 ASSOCIATED (POINTER [, TARGET]) case(iii) change "a procedure pointer" to "an 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}