Now the "analysis". It appears that programs call log10() with an
argument of 0, and consider this to be normal.
Unfortunately, this is one of those places where the VAX not doing
IEEE FP bites us. The IEEE log10() of 0 will return -inf, and happily
chug on. The VAX log10() of 0 will cause an illegal instruction trap.
I suspect the other programs crashing might be because of the same
reason. The question is - what should we do? I'm tempted to just
change the code for log() to return 0, or possible -MAX_whatever and
not trap. Opinions?
You'd be making mathematicians and programmers alike cringe, but in the
grand scheme of things there really should be two uses for floating
point - one is where the results really do matter, in which case the
code is poor if it simply assumes a platform has infinities and NaNs,
and the other where it doesn't matter (like the KB/sec reported when
doing an scp -r which is never calculated correctly when the file starts
nor when it is completely finished).
I think that for every program where the results do matter (as far as
the user and the function of the program are concerned), there are ten
programs that are just bad at handling edge cases or are using floating
point in a lazy way and the results don't affect the running of the
actual program, so I'd be inclined to at least say to give it a go.
John