Re: Bare decorations (was ...level 2 datums)
<I thought I sent this on 22 Oct, but can't see a record of having done so.>
Nate, P1788
The semantics of our standard needs to be defined as unambiguously as practicable. The most problematic area in this regard, that we have encountered so far, is exception handling. Rigorous definition methods have attractions, e.g. "Denotational Semantics" originated by Strachey and Scott, but for most of us the amount of mathematics needed to master them makes them inaccessible. To discuss issues important to us all, we must use language understood by us all.
On 17 Oct 2010, at 17:48, Nate Hayes wrote:
> ...the bulk of your Level 2 examples and arguments are expressed in terms of bits, bytes and language bindings. I've yet to hear you clearly formulate your position purely in Level 2 terms.
It is possible to discuss Level 2 in the abstract, but there is NO way to define a specific Level 2 floating-point or interval datatype without describing it by some sort of formula, which usually amounts to a representation. Specific examples are helpful, to suggest what consequences our decisions at Level 2 might have at Level 3. Apart from those, my discussion is always at level 2.
Language bindings are an excellent way to discuss level 2 in an accessible way. As I said, a language binding must mirror level 2 semantics, so discussing how an implementation in Matlab, C++, etc. should behave at the user program level, tells us a lot about how level 2 should and should not behave.
Nate Hayes wrote:
>> (JDP) Consider 754 floating point. Let Real denote a particular level 2 format.
> My understanding is that a "format" is a Level 3 concept (see below), hence from my perspective you're already off-topic.
In 5.1 and 5.2.1 of the draft standard text, the level 2 meaning of "format" is explicitly defined. OK, motion 19 changes the language to "datatype" at level 2 and "format" at level 3. I wrote motion 19, so I know the distinction; so please interpret my usage in the context common sense suggests.
The name "Real" I used may have been poorly chosen. I'll change it to "FPData" here & below, so my sentence is now
"Consider 754 floating point. Let FPData denote a particular level 2 format..."
... i.e. the set of datums of that format. But I am happy for it to denote some language binding of such a set, also.
>> According to 754 Table 3.1, FPData IS a set comprising finitely many members
>> of the extended reals R*, together with one thing called NaN, distinct
>> from any extended-real number...
>
>> Just as in
>> 754, which put NaN, as well as numbers, into the level 2 set FPData.
> No. YOU put NaN into FPData, and "FPData" in this case is actually a language binding of a format, neither of which are a Level 2 set.
With respect, Nate, one might think you are obfuscating by objecting to this. 754-2008, section 3.2 Specification Levels, second paragraph, last sentence says,
"A floating-point datum, which can be a signed
zero, a finite non-zero number, signed infinity,
or a NaN (Not-a-Number), ..."
IMO language binding is a good way to discuss level 2, as said above. A valid program is executable mathematics: else why write it? Writing a type like FPData in a program specifies a particular piece of mathematics, namely a finite set.
Nate Hayes wrote:
> You are the one advocating NaI should actually "be an interval" at Level 2, which is quite a strange concept, if you ask me.
No. I am saying NaI is [=we should choose it to be] one of the Level 2 *interval datums*, in exactly the same way as NaN is [=754 chose it to be] one of the Level 2 *floating-point datums*.
Regards
John