The Holy Algorithm

As it will surely not have escaped your insight, this weekend is Easter. Why now? The date of Easter is determined by a complicated process called the Computus Ecclesiasticus. I will just quote the Wikipedia page:

The Easter cycle groups days into lunar months, which are either 29 or 30 days long. There is an exception. The month ending in March normally has thirty days, but if 29 February of a leap year falls within it, it contains 31. As these groups are based on the lunar cycle, over the long term the average month in the lunar calendar is a very good approximation of the synodic month, which is 29.53059 days long. There are 12 synodic months in a lunar year, totaling either 354 or 355 days. The lunar year is about 11 days shorter than the calendar year, which is either 365 or 366 days long. These days by which the solar year exceeds the lunar year are called epacts. It is necessary to add them to the day of the solar year to obtain the correct day in the lunar year. Whenever the epact reaches or exceeds 30, an extra intercalary month (or embolismic month) of 30 days must be inserted into the lunar calendar: then 30 must be subtracted from the epact.

If your thirst of knowledge is not satisfied, here is a 140-page document in Latin with more detail.

As far as I understand, during the Roman Era the Pope or one of his bureaucrats would perform the computus, then communicate the date to the rest of Christianity and everybody could eat their chocolates at the same time. Then, the Middle-Ages happened and communication became much harder, so instead they came up with a formula so people could compute the date of Easter locally. Of course, the initial formulas had problems – with the date of Easter dangerously drifting later and later in the year over centuries, and don’t even get me started on calendar changes. Eventually Carl Friedrich Gauss entered the game and saved humanity once again with a computationally-efficient algorithm (I am over-simplifying the story so you have more time to eat chocolate).

But now is 2021, and I’m wondering how they run the algorithm now, in practice. I looked up “how is the date of Easter calculated” but all the results are about the algorithms themselves, not about their practical implementation. I have a few hypotheses:

  1. There are responsible Christians everywhere who own printed tables with the dates of Easter already computed for the next few generations. If your Internet goes down, you can probably access such tables at the local church.
Here is such table from 1907 (Wikimedia commons)

Of course this does not really solve the problem: who comes up with these tables in the first place? Who will make new ones when they expire?

2. There is a ceremony in Vatican where a Latin speaker ceremoniously performs the Holy Algorithm by hand, outputs the date of Easter, prints “Amen” for good measure and then messengers spread the result to all of Christianity.

3. Responsible Christians everywhere own a Computus Clock, a physical device that tells you if it is Easter or not. When in doubt, you just pay a visit to that-guy-with-the-computus-clock. Then, it is like hypothesis 1 except it never expires.

4. There is software company (let’s call it Vatican Microsystems®) who managed to persuade the Pope to buy a license for their professional software solution, Computus Pro™ Enterprise Edition 2007 – including 24/7 hotline assistance, that only runs on Windows XP and they have a dedicated computer in Vatican that is used once in a while to run these 30000 lines of hard Haskell or something. Then, it goes just like hypothesis 2.

(Of course, all of these solutions are vulnerable to hacking. It might be as easy as sneaking into a church and replace their Easter tables with a fake. A talented hacker might even have it coincide with April fools.)

If an active member of the Christian community reads this and knows how it is done in practice, I am all ears.

Anyways, happy Easter and Amen, I guess.

Leave a Reply

Your email address will not be published. Required fields are marked *