Computus - Software

Software

  • Perl - Rich Bowen's Date::Easter module available from CPAN.
  • Excel =DOLLAR(("4/"&A1)/7+MOD(19*MOD(A1,19)-7,30)*14%,)*7-6, where the year is contained in cell A1.
  • Excel =ROUND(DATE(A1,4,1)/7+MOD(19*MOD(A1,19)-7,30)*14%,0)*7-6, the same as above but system local settings independent
  • Excel for Meeus/Jones/Butcher Algorithm (English version, considering the desired Year in cell A1, by Claytom Valle):

=DATE(A1,INT((MOD((19*(MOD(+A1,19))+(INT(A1/100))-(INT(INT(A1/100)/4))-(INT((INT(A1/100)-(INT((INT(A1/100)+8)/25))+1)/3))+15),30)+MOD((32+(2*MOD(INT(A1/100),4))+(2*INT(MOD(A1,100)/4))-(MOD((19*(MOD(+A1,19))+(INT(A1/100))-(INT(INT(A1/100)/4))-(INT((INT(A1/100)-(INT((INT(A1/100)+8)/25))+1)/3))+15),30))-(MOD(MOD(A1,100),4))),7)-(7*INT(((MOD(+A1,19))+(11*MOD((19*(MOD(+A1,19))+(INT(A1/100))-(INT(INT(A1/100)/4))-(INT((INT(A1/100)-(INT((INT(A1/100)+8)/25))+1)/3))+15),30))+(22*MOD((32+(2*MOD(INT(A1/100),4))+(2*INT(MOD(A1,100)/4))-(MOD((19*(MOD(+A1,19))+(INT(A1/100))-(INT(INT(A1/100)/4))-(INT((INT(A1/100)-(INT((INT(A1/100)+8)/25))+1)/3))+15),30))-(MOD(MOD(A1,100),4))),7)))/451))+114)/31),MOD((MOD((19*(MOD(+A1,19))+(INT(A1/100))-(INT(INT(A1/100)/4))-(INT((INT(A1/100)-(INT((INT(A1/100)+8)/25))+1)/3))+15),30)+MOD((32+(2*MOD(INT(A1/100),4))+(2*INT(MOD(A1,100)/4))-(MOD((19*(MOD(+A1,19))+(INT(A1/100))-(INT(INT(A1/100)/4))-(INT((INT(A1/100)-(INT((INT(A1/100)+8)/25))+1)/3))+15),30))-(MOD(MOD(A1,100),4))),7)-(7*INT(((MOD(+A1,19))+(11*MOD((19*(MOD(+A1,19))+(INT(A1/100))-(INT(INT(A1/100)/4))-(INT((INT(A1/100)-(INT((INT(A1/100)+8)/25))+1)/3))+15),30))+(22*MOD((32+(2*MOD(INT(A1/100),4))+(2*INT(MOD(A1,100)/4))-(MOD((19*(MOD(+A1,19))+(INT(A1/100))-(INT(INT(A1/100)/4))-(INT((INT(A1/100)-(INT((INT(A1/100)+8)/25))+1)/3))+15),30))-(MOD(MOD(A1,100),4))),7)))/451))+114),31)+1)

PS: Due to Excel "DATE FUNCTION" limitations, the formula works for years 1900 to 9999 only.

  • Python - adapted from
def IanTaylorEasterJscr(year): a = year % 19 b = year >> 2 c = b // 25 + 1 d = (c * 3) >> 2 e = ((a * 19) - ((c * 8 + 5) // 25) + d + 15) % 30 e += (29578 - a - e * 32) >> 10 e -= ((year % 7) + b - d + e + 2) % 7 d = e >> 5 day = e - d * 31 month = d + 3 return year, month, day

Read more about this topic:  Computus