3 ms·
> So what? So "produce a fast approx log function with small relative error everywhere" is the problem Goldberg was trying to solve from the outset. (He wants
by gjm11 12y ago
> So what?
So "produce a fast approx log function with small relative error everywhere" is the problem Goldberg was trying to solve from the outset. (He wants to be able to give guarantees like "accurate to 7 bits".) The fact that he gets larger errors than you is completely explained by this.
Of course no one else is obliged to be interested in solving that problem, but that's the problem he's trying to solve.
(If you'd said "I think Goldberg is solving the wrong problem; no one cares about relative error rather than absolute error in an approximate logarithm function" I'd have been inclined to agree. But no, it was "haha, he computed a crappy polynomial; that's what happens when you let amateurs do work that should be left to the professionals" with no sign of any understanding of what constraints he was working with that led him to compute what he did.)
> Instead of accepting that his polynomial is more erroneous, you are steering this whole discussion in a totally synthetic direction.
As well as agreeing that his polynomial gives larger errors on the range to which it's applied directly (which I have, explicitly, agreed; go back and check if you don't believe me), I am pointing out that it does (infinitely) better than yours according to the criterion Goldberg was actually using, namely relative error over the whole domain in the log function it produces.
> mantra
Wow.
(I got it from the start of Goldberg's article, where he explains what problem he's trying to solve.)
> infinitely huge L^1 and L^2 errors near origin
(I take it you mean in the derivative.) Yours does too; it is discontinuous at every integer power of 2. Obviously any piecewise-polynomial scheme like this one is going to have discontinuities in some derivative (and you can push up which derivative at the usual cost of either using higher-degree polynomials or getting worse errors).
> There are many error measures.
It appears that you think I am much more ignorant in this field than I actually am. (Or perhaps that you're pretending to for rhetorical effect, but I hope not.)
> just to make minimax happy at one, single point
If the relative error is infinite at x=1 then it is also very large when x is very close to 1.
> fails big time at x=0 and x<0
You're complaining that he isn't generating NaNs and infinities when passed inputs that don't have a finite log? Fair enough, I guess, but in a post subtitled "Part I: the basics" it seems enough to me that he has the following warning sentence: "The code does not check that x>0, much less check for infinities or NaNs. This may be appropriate for a fast version of log." (Which he does.)
> fiercely defending
I think you may be mistaken about where the fierceness is coming from in this discussion.
> just put an if (x==1) return 0 and there you go, I still have a 10x better function
Nope. You've got rid of the actually infinite relative errors but you still have extremely large relative errors for x very close to 1 but not equal.
Again: by all means argue that bounding the relative error in the return value of a log function is the Wrong Thing for almost all purposes. I will probably agree. But that isn't what you did.