I have almost always found a look up table, plus specialized routines to be the best overall.

Like the author says, it is the speed vs memory tradeoff in action.

When I do not care about speed, compact routines that yield the answer to as many, or even all my use cases, are best. The memory ends up being put to a better use.

Otherwise, I generally need specific multiplies and code for those best I can.