Correct. *I* said "real", as an illustration.
As did Richard Harter who started this mischaracterization of my
position. If you and Richard want to talk about reals, then you can't
turn around and claim you are not being off topic here on comp.lang.c.
[...] To make it clear that
that was my purpose, I even introduced it by mentioning the context I
was using for the illustration, which was not the context of the point
I was addressing with the illustration.
[much snippage]
Uh ... its not just an isomorphism, its a bijection complete with all
the operations.
Uh... That's what an isomorphism *IS*.
Isomorphisms don't include the "<" operator. Its exactly the same
thing right down to the axioms, not just a mapping of the algebras.
Isomorphisms are algebra preserving; that's all. So if I created a
mapping of f:x->cos(x)+i*sin(x), and then define + and * to make it an
isomorphism, that's fine. But if I then defined "<" on it to compare
the real parts of this translation, then the post mapped set isn't
really the integers anymore.
This distinction is important since the given ordering of the integers
is an important property of them.
If my intention were to discuss the math and not merely to use it to
illustrate my objection to Richard H's claims in the discussion about
C, I wouldn't've posted it to comp.lang.c in the first place.
Richard H seems to have made a mistake in characterizing what I said,
and you followed him. Either way, talking about reals is not on topic
here.
Had you read the paragraph you quoted for comprehension, you would have
noticed that not only was I not claiming you were, I was in fact
specifically claiming you *weren't*.
You said: "It seems to have been clear (to everybody but you) that the
original
claim was intended to be taken this way, and not to claim that the
representation is identical."
But I don't claim them *just* to be an isomorophism of integers,
because in the C language "<" is also correctly represented in
floating point integers in exactly the same way. In addition the cast
operator is value preserving (within compatible range limits) amongst
different *types* of integers in the C language. They are not just a
mapping of integers, they *ARE* integers.
Richard Heathfield's bizarre counter argument amounts to saying that
double is a different type than int, while ignoring that char is also
different from int, as is short or unsigned long.
Perhaps this might make it clearer: Imagine for one second that the
"/" operator in C produced an *INTEGER* result for floating point
types (rounded in the same way that ordinary integer division is) and
that the "%" operator was defined as the remainder after division for
floating point types as well. If so, then the very integer nature of
doubles would be absolutely clear. If you initialized the doubles
with integers, then all sets of arithmetic operations would preserve
their integer nature. You would presumably then protest that you've
lost the ability to divide in the floating point sense, so maybe the C
language people would have added an fdiv() function for that purpose.
Well, my point is that we *HAVE* this situation, only just slightly
transformed: "/" gives you floating point division, and you use
functions like modf() for integer division on floating point. From
the language point of view, this is just a bunch of syntax.
I think it's time to put you back in my killfile; you're smart enough
to be worth listening to when you're talking about something you know,
but you're not nearly wise enough to be worth arguing with when you're
not.
Well, so long as you don't have a mirror, you will continue to assume
that all your conflicts with me are my problem. So its just as well.