# 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.[1] The technique is similar to Zech logarithms (also known as Jacobi logarithms), but uses a system of indices original to Ludgate.[2]

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.[3] 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.