|Welcome to the Monastery|
Thanks for the working example. You misunderstand some of what I posted, which is exacerbated by my use of nonspecific terminology ("truncation" vs. "rounding" is but one example).
At any rate, the thread presents a number of very useful references for anyone who wants or needs to understand how floating point operations work.
I haven't studied the mantissa translation issue for about 35 years; I understood it in a fairly detailed manner then, but have not needed to revisit it.
Without looking deeper into the issue, I suspect the problem your working example presents involves disparate precision reduction, a working case I have never been presented. All cases (unless my memory is failing, which is a distinct possibility) I have encountered in my career involved identical source- and destination-precision, and I cannot recall the "half next digit" technique ever failing me in that capacity.
I no longer remember if I proved it sufficient to the need or was merely shown the technique and accepted it. Suffice it is to say that my use of that technique has become so habitual as to defy academic defense.
Nonetheless, the technical content of your post is wonderful, as always, and I appreciate it.
In reply to Re^3: Printf/Sprintf Behavior Change (stupid printf)