| • Science | • People | • Locations | • Timeline |
| Contents | ||
This is a work in progress that will eventually be merged with IEEE_754r. At this point this is just a list of notes at this point that will need to be fleshed out, cleaned up, and summarized. |
Annex L is an informative annex in the works for IEEE_754r which will provide guidance to programming language developers on supporting the features of 754r.
We expect programs to leave modes unchanged, except subprograms whose whole purpose is to change the mode.
It is difficult to distinguish between "intended" parentheses and "non-intended" ones because, for example, many languages use C source code as their translation target. So the question is intended by whom?
The tension arrises because sometimes a programmer wants to have expresions interpreted in some particular way (for some good reasone), and at other times the programmer might want to grant the system a license to interpret the expersions in any of a variety of ways with the goal of getting faster execution. In either case, it is desirable for the program to be clear. Of course, if we avoided infix notation, and just used prefix or postfix there would be no ambiguity, but this would limit the opportunities for optimization and likely also the clarity of the source text.
Superfluous parentheses are often left in by preprocessing that cannot be distinguished from intended parentheses
Optimizing compilers can take advantage of a license to compute "equivalent" expressions. They are included because it is safe to do so, in most cases extra ()s will not kill you. One can use FMA(a,b,c) to force an FMA: round(a*b+c).
If you have written an expression so you can tell how it will be evaluated, you want to be able to make that true.
Our difficulty is being able to tell when it is ok to use FMA in the face of superfluous ()s
Some languages have looser () than others. Want to have *some* way to put in () that we really mean. C compilers often aggressively remove ()s. So you can put superfluous ()s in until you are blue in the face in a*b+c*d and it won't change the way the machine looks at it.
Want to be able to:
Common subexpression that does not break any other rules are always permitted.