#!/bin/bash
# ---------------------------------------------------------------------------- #
## \file paques.sh
## \author Sebastien Beaugrand
## \sa http://beaugrand.chez.com/
## \copyright CeCILL 2.1 Free Software license
## \note Source: https://www.tondering.dk/claus/cal/easter.php
## \brief Based in part on the algorithm of Oudin (1940)
# ---------------------------------------------------------------------------- #
source paques.sh

# ---------------------------------------------------------------------------- #
## \fn paquesOudin
# ---------------------------------------------------------------------------- #
paquesOudin()
{
    ((Y = $1))
    ((G = Y % 19))
    ((C = Y / 100))
    ((H = (C - C / 4 - (8 * C + 13) / 25 + 19 * G + 15 ) % 30))
    ((I = H - H / 28 * (1 - 29 / (H + 1) * (21 - G) / 11)))
    ((J = (Y + Y / 4 + I + 2 - C + C / 4) % 7))
    ((L = I - J))
    ((M = 3 + (L + 40) / 44))
    ((D = L + 28 - M / 4 * 31))
}

# ---------------------------------------------------------------------------- #
# main
# ---------------------------------------------------------------------------- #
for ((Y = 1900; Y < 2100; Y++)); do
    paquesOudin $Y
    H1=$H
    I1=$I
    J1=$J
    paques $Y
    if ((H != H1)) || ((I != I1)) || ((J != J1)); then
        echo "error: Y=$Y G=$G H1=$H1 I1=$I1 J1=$J1 H2=$H I2=$I J2=$J"
        break
    fi
    printf "%02d-%02d-%d " $D $M $Y
    echo "G=$G H=$H1 I=$I1 J=$J1 L=$L"
done