# Irish logarithm

Irish logarithms were a system of number manipulation invented by Percy Ludgate for machine multiplication. The system used a combination of mechanical cams as look-up tables and mechanical addition to sum pseudo-logarithmic indices to produce partial products, which were then added to produce results. The technique is similar to Zech logarithms (also known as Jacobi logarithms), but uses a system of indices original to Ludgate.

Ludgate's algorithm compresses the multiplication of two single decimal numbers into two table lookups (to convert the digits into indices), the addition of the two indices to create a new index which is input to a second lookup table that generates the output product. Because both lookup tables are one-dimensional, and the addition of linear movements is simple to implement mechanically, this allows a less complex mechanism than would be needed to implement a two-dimensional 10x10 multiplication lookup table.

## Pseudocode

The following is an implementation of Ludgate's Irish logarithms algorithm in Python:

```table1 = [50, 0, 1, 7, 2, 23, 8, 33, 3, 14]

table2 = [ 1,  2,  4,  8, 16, 32, 64,  3,  6, 12,
24, 48,  0,  0,  9, 18, 36, 72,  0,  0,
0, 27, 54,  5, 10, 20, 40,  0, 81,  0,
15, 30,  0,  7, 14, 28, 56, 45,  0,  0,
21, 42,  0,  0,  0,  0, 25, 63,  0,  0,
0,  0,  0,  0,  0,  0, 35,  0,  0,  0,
0,  0,  0,  0,  0,  0, 49,  0,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
0]

def product(a, b):
return table2[table1[a] + table1[b]]
```

Table 1 is taken from Ludgate's original paper; given the first table, the contents of Table 2 can be trivially derived from Table 1 and the definition of the algorithm. Note that the last third of the second table is entirely zeros; this can potentially be exploited to further simplify a mechanical implementation.