<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><meta http-equiv="content-type" content="text/html; charset=us-ascii"><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">This is about moving parts of Annex G that are not particularly related to ISO/IEC 60559 out of the annex and into the main body of the C standard. The obvious parts to move are the definitions for multiplicative operators in G.5.2 paragraphs 1-3, and the definitions for additive operators in G.5.3 paragraphs 1 and 2. </div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><br></div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">These definitions support ISO/IEC 60559 consistent behavior for signed zeros and infinities, but the same definitions give the natural, most efficient implementation of the operators +, -, *, and / with operands of mixed type domains (real and complex) for all implementations.</div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><br></div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">Though C23 allows implementations to use the formulas in these definitions, doing so is not currently required outside of Annex G, and users can’t depend on it.</div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><br></div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">In the following the subclause numbering refers to C2Y working draft N3220. </div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><br></div><div>To 6.2.5 paragraph 17, append:</div><div><br></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>In this document complex values are sometimes written in the form x + i y, where x and y are the values of the real and imaginary parts. The form x - i y represents x + i (-y).</div></div></blockquote><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><div><br></div><div>In 6.5.6 under Semantics insert</div><div><br></div></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><div><div>If one operand is real with value x and the other operand is complex with value u + i v, the product is defined by (x <b>*</b> u) + i (x * v).</div></div></div></div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><div><br></div></div></div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><div>If the first operand is complex with value x + i y and the second operand is real with value u, the quotient is defined by (x <b>/</b> u) + i (y <b>/</b> u).</div></div></div></blockquote><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><br></div><div>In 6.5.7 under Semantics insert:</div><div><br></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><div>If one operand is real with value x and the other operand is complex with value u + i v, the sum is defined by (x <b>+</b> u) + i v.</div></div></div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><br></div></div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>If the first operand is real with value x and the second operand in complex with value u + i v, the difference is defined by (x <b>-</b> u) + i (<b>-</b>v).</div></div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><br></div></div><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>If the first operand is complex with value x + i y and the second operand is real with value u, the difference is defined by (x <b>-</b> u) + i y.</div></div></blockquote><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><br></div><div>Additional changes are needed to remove the definitions using tables from G.5.2 and G.5.3. Detailed changes to Annex G can be provided more effectively when the change to remove imaginary types has been done.</div><div><br></div><div>- Jim</div><div><br></div><div><br></div></div></body></html>