CBFalconer said:
I don't understand your problem.
Simply that I have tried to find the ranges for 5 consecutive floats
in your 3-bit (or 4-bit normalised) example and you won't tell me
what they are. Since I am too stupid to follow your explanations,
just tell me the actual numbers -- there are only 10 of them.
In tinyfloat, EPSILON is
precisely 1/16. This is the weight of the bit that will be rounded
in preparing a new fp-object value.
OK. You are free to define it like that. That is not C's definition.
...
And these are of the form 1.0+something.
[editorial note: you've edited what I wrote and not changed the
quoting. I gave 5 numbers, each with a possible range. You've
removed most of the ranges (presumably they were wrong) and added
stuff that I don't want anyone to think I wrote. If you delete this
note, please change the quote characters.]
Those ranges are from < f+EPSILON down to > f-EPSILON
Eh? Just tell me the ranges. 10 numbers. That is all I want. At
least I will then have one fixed point in all these changing epsilons
and EPSILONS.
Think about WHY EPSILON changes at the power of two. It has to do
with the rounding in computing the real value x*(1+EPSILON) when
that expression is handed to the fp-system.
C's EPSILON does not change at any power of 2. You have repeatedly
agreed in the past that your EPSILON stands for C XXX_EPSILON
constants but that seems not to be the case any more. If your EPSILON
changes, you have to say how. What is the formula for it?
Alternatively, is there a formula for the range that does not need
your variable EPSILON function?
Somewhere I specified the rounding. If the dropped bit is a 1,
increase the significand. If a 0, don't increase.
So does your model not work with some valid C floating point systems?
If it can, then I wanted to know what happens to the meaning of a
float when the rounding mode is changed. You claim the range is the
meaning; and the range depends on the rounding mode.