The Irish Logarithm
blog.plover.com
blog.plover.com
One table driven way of accelerating 8×8 bit multiplication with a table of modest size (e.g., 256 words) is https://dercuano.github.io/notes/multiplication-with-squares... -- however since there are 17578 distinct products of two 8 bit numbers, even a full Irish Logarithm table would probably be infeasible to store in most systems where the technique would be relevant. (you've used over 50% of a 16-bit address space on the table) And 6 table look-ups for 4 bits at a time is likely to be slower than 2 table look-ups for the 8-bit square table, even with the extra bit shifting required.
A full table with the answers stored directly is only 55 elements. Maybe I missed something but what's the point?
Does it scale better than N^2?
See this article:
https://treasures.scss.tcd.ie/miscellany/TCD-SCSS-X.20121208...
The Python code is old-fashioned, but the description of how the indices are chosen is much much more economical and straightforward than this blog post.
You needn't use your real name, of course, but for HN to be a community, users need some identity for other users to relate to. Otherwise we may as well have no usernames and no community, and that would be a different kind of forum. https://hn.algolia.com/?sort=byDate&dateRange=all&type=comme...
But ah +1, I see what you mean. I must confess I had only skimmed both articles earlier, but having thought about it now, While the blog post treats Table1 as a trivial consequence and reverse-engineers Table2, it is cleaner to do it the other way around (treating T2 as a consequence of T1 and reverse-engineering T1). I have done so, and ended up actually writing the “explain from scratch how to come up with that code” blog post: https://shreevatsa.net/post/irish-logarithm/ — and only after writing it out myself do I understand what Coghlan was getting at :) This is also basically what the posted blog post has BTW — it's not really any harder; it's just that it's hard to follow someone else's reasoning in text while it would be easier at a blackboard with pictures and gestures.
Also I'm delighted that you remembered that Matthew P. Wiener thing from 30 years ago.
Percy Ludgate - https://news.ycombinator.com/item?id=37533487 - Sept 2023 (17 comments)
That said we're probably not great at acknowledging historical figures in the field. George Boole's house is three minutes' walk from my house and it's basically derelict (and was literally falling down at one point). It would be a wonderful building for a museum of his life and achievements.
Ludgate is a more marginal case because his invention didn't come to fruition. There is a bit of a sense in which he is being celebrated/hyped in a silly superficial ("collectively narcissistic") way intended to bolster self-esteem for Irish technical people. https://ingeniousireland.ie/2012/10/1909-a-novel-irish-compu...
Meanwhile significant people like Carew Meredith aren't on the public radar at all. https://en.wikipedia.org/wiki/Carew_Arthur_Meredith
The problem is that he left no written body of work. I recall reading of a researcher who contacted his surviving relatives to enquire about any notes or materials he had left after his death but nothing had been preserved - I guess as his work was viewed as completely obscure at the time and he had achieved little recognition for it during his life. As far as I know what little we know of his proposed machine involves guesswork from very little material.
the slides may be of interest: https://treasures.scss.tcd.ie/miscellany/TCD-SCSS-X.20121208...
and a hub of related content: https://treasures.scss.tcd.ie/ludgate/
But T2 is pretty large, why not just make T2 have 100 elements and index it by a*10+b (i.e., just concatenate the digits together)? This is faster because you don't have to add or lookup anything in T1.
If the numbers are represented by the length of rods then this concatenation is not so easy, but neither is it in this algorithm:
> you have some thingy that slides up by T1(a) units, and then by T1(b) more, and then wherever it ends up is used to index into T2 to get the answer
So I would replace this with:
you have some thingy that slides up by a large units and then by b small units (where one large unit is 10 times longer than one small unit), and then wherever it ends up is used to index into to get the answer
It reminds me of e.g. the CORDIC algorithm, used to calculate trig functions (needed by rocket guidance systems) with a combination of fixed-point arithmetic and table look-up. Doubtless there are many others.