AstronomieAntwoorden: Het Juliaanse Dagnummer

AstronomieAntwoorden
Het Juliaanse Dagnummer


[AA] [Woordenboek] [Antwoordenboek] [UniversumFamilieBoom] [Wetenschap] [Sterrenhemel] [Planeetstanden] [Reken] [Colofon]

1. Verschillende soorten dagnummers ... 2. Notatie ... 2.1. Afronding ... 2.2. Modulair rekenen ... 2.3. Symbolen ... 2.4. Geldigheid ... 3. De Gregoriaanse kalender ... 3.1. Van Gregoriaanse datum naar CJDN ... 3.2. Van CJDN naar Gregoriaanse datum ... 4. De Milanković-kalender ... 4.1. Van Milanković-datum naar CJDN ... 4.2. Van CJDN naar Milanković-datum ... 5. De Juliaanse kalender ... 5.1. Van Juliaanse datum naar CJDN ... 5.2. Van CJDN naar Juliaanse datum ... 6. De Islamitische kalender ... 6.1. Van Islamitische datum naar CJDN ... 6.2. Van CJDN naar Islamitische datum ... 7. De Babylonische kalender ... 7.1. Van Babylonische datum naar CJDN ... 7.2. Van CJDN naar Babylonische datum ... 8. De Joodse kalender ... 8.1. Van Joodse datum naar CJDN ... 8.2. Van CJDN naar Joodse datum ... 9. De Egyptische Kalender ... 9.1. Van Egyptische datum naar CJDN ... 9.2. Van CJDN naar Egyptische datum ... 10. De Mayakalender ... 10.1. Van Mayakalender naar CJDN ... 10.1.1. Van de Haab naar CJDN ... 10.1.2. Van de Tzolkin naar CJDN ... 10.1.3. Van Tzolkin en Haab naar CJDN ... 10.1.4. Van de Lange Telling naar CJDN ... 10.2. Van CJDN naar Mayakalender ... 10.2.1. Van CJDN nar de Haab ... 10.2.2. Van CJDN naar de Tzolkin ... 10.2.3. Van CJDN naar de Lange Telling ... 11. Een maankalender met veel vaste maandlengtes ... 11.1. Van maankalender naar CJDN ... 11.2. Van CJDN naar maankalender ... 12. De Chinese Kalender ... 12.1. Het jaar van de aap ... 12.2. HYSN ... 13. Afleiding van de algemene algoritmen ... 13.1. Notatie ... 13.2. Nuttige Relaties ... 13.3. Bewijzen voor de nuttige relaties ... 13.4. Grote Tussenresultaten ... 13.5. Simpele kalender ... 13.5.1. Van maand en dagnummer in de maand naar lopende dagnummer ... 13.5.2. Maandlengte ... 13.5.3. Maandpatroon verschuiven ... 13.5.4. Van lopende dagnummer naar maand en dagnummer in de maand ... 13.6. Met alleen hele getallen ... 13.7. Erg ongelijke maanden ... 13.8. Veel soorten ongelijke maanden ... 13.9. Heel erg ongelijke maanden ... 13.10. Maandlengtes zonder intern patroon ... 13.11. Combinaties van rechte lijnen ... 13.11.1. Vlakke combinatie ... 13.11.2. Getrapte combinatie ... 13.12. Gelijktijdige cycli ... 13.12.1. Van doorlopend dagnummer naar datum ... 13.12.2. Van datum naar doorlopend dagnummer ... 13.12.3. Meer dan twee cycli ... 13.12.4. Naar één oplossing ... 13.12.4.1. De laatste op of voor ... 13.12.4.2. De eerste op of na ... 13.12.4.3. de laatste voor ... 13.12.4.4. De eerste na ... 13.13. Samenvatting ... 14. Afleiding voor specifieke kalenders ... 14.1. Inleiding ... 14.1.1. Uitleg van Diagrammen ... 14.1.2. Geldigheid en bereik van de algoritmen ... 14.2. De Juliaanse kalender ... 14.2.1. Van Juliaanse datum naar CJDN (1) ... 14.2.2. Van CJDN naar Juliaanse datum (1) ... 14.2.3. Van Juliaanse datum naar CJDN (2) ... 14.2.4. Van CJDN naar Juliaanse datum (2) ... 14.3. De Gregoriaanse kalender ... 14.3.1. Van Gregoriaanse datum naar CJDN (1) ... 14.3.2. Van CJDN naar Gregoriaanse datum (1) ... 14.3.3. Van Gregoriaanse datum naar CJDN (2) ... 14.3.4. Van CJDN naar Gregoriaanse Datum (2) ... 14.3.5. Van Gregoriaanse datum naar CJDN (3) ... 14.3.6. Van CJDN naar Gregoriaanse datum (3) ... 14.4. De Milanković-kalender ... 14.4.1. Van Milanković-datum naar CJDN ... 14.4.2. Van CJDN naar Milanković-datum ... 14.5. De Egyptische kalender ... 14.5.1. Van Egyptische datum naar CJDN ... 14.5.2. Van CJDN naar Egyptische datum ... 14.6. De Babylonische kalender ... 14.6.1. Van Babylonische datum naar CJDN ... 14.6.2. Van CJDN naar Babylonische Datum ... 14.7. De Joodse kalender ... 14.7.1. Van Joodse Datum naar CJDN ... 14.7.2. Van CJDN naar Joodse datum ... 14.8. Een maankalender met veel vaste maandlengtes ... 14.8.1. Van maankalender naar CJDN ... 14.8.2. Van CJDN naar maankalender ... 14.9. De Islamitische kalender ... 14.9.1. Van Islamitische datum naar CJDN ... 14.9.2. Van CJDN naar Islamitische datum ... 14.10. De Mayakalender ... 14.10.1. Tussen CJDN en Mayakalender ... 14.10.2. De Haab ... 14.10.3. De Tzolkin ... 14.10.4. Tzolkin en Haab ... 14.10.5. De Lange Telling ... 15. Snelle schatting van het aantal dagen tussen twee datums

\(\def\|{&}\DeclareMathOperator{\D}{\bigtriangleup\!} \DeclareMathOperator{\d}{\text{d}\!}\)

\( \DeclareMathOperator{\Div}{div} \DeclareMathOperator{\bdom}{dom} \DeclareMathOperator{\gcd}{gcd} \DeclareMathOperator{\lcm}{lcm} \DeclareMathOperator{\trunc}{trunc} \def\beqvide#1{\text{vide \eqref{#1}}} \def\dabs#1{\left| #1 \right|} \def\dceil#1{\left\lceil #1 \right\rceil} \def\dceilp#1#2{\left\lceil #1 \right\rceil_{#2}} \def\dceilratio#1#2{\dceil{\dfrac{#1}{#2}}} \def\ddom#1{\left\lceil #1 \right\rfloor} \def\ddomp#1#2{\left\lceil #1 \right\rfloor_{#2}} \def\dfloor#1{\left\lfloor #1 \right\rfloor} \def\dfloorp#1#2{\left\lfloor #1 \right\rfloor_{#2}} \def\dfloorratio#1#2{\dfloor{\dfrac{#1}{#2}}} \def\dmod#1{\left\lfloor #1 \right\rceil} \def\dmodp#1#2{\left\lfloor #1 \right\rceil_{#2}} \def\dom1ratio#1#2{\left\lceil \dfrac{#1}{#2} \right\rfloor} \def\dparen#1{\left( #1 \right)} \def\eqavide#1{\|\text{(vide \eqref{#1})}} \def\eqvide#1{\qquad\text{(vide \eqref{#1})}} \def\iverson#1{\left[#1\right]} \def\mod1ratio#1#2{\left\lfloor \dfrac{#1}{#2} \right\rceil} \def\range#1#2{\boxed{#1}_{(1/#2)}} \def\vide#1{\qquad\text{(vide #1)}} \)

In sterrenkundige formules waar de datum in voorkomt is het onhandig om die datum te meten in jaren, maanden, en dagen, vooral ook omdat niet alle jaren evenveel dagen bevatten en ook niet alle maanden evenveel dagen bevatten. Het is veel handiger om de datum te meten als het aantal dagen sinds een vast beginpunt. Het Juliaanse Dagnummer (JDN) of de Juliaanse Dag (JD) en zijn soortgenoten worden hiervoor in de sterrenkunde veel gebruikt. Deze bladzijde legt uit hoe je een datum uit verschillende kalenders naar de Juliaanse Dag kunt vertalen, of andersom.

Het eerste deel van deze bladzijde geeft rekenrecepten voor een paar moderne en historische kalenders. Het tweede deel (vanaf hoofdstuk 13) legt uit hoe ik die recepten afleidde.

Er zijn veel verschillende algoritmen in omloop voor het omrekenen tussen kalenderdata en dagnummers. Het enige dat telt is dat ze voor alle dagnummers en kalenderdata de goede uitkomsten moeten geven. Als er slechts een beperkt aantal invoerwaarden en mogelijke uitkomsten zijn (bijvoorbeeld voor het omrekenen van het dagnummer-in-het-jaar naar een maandnummer en een dagnummer-in-de-maand) dan kun je meestal veel verschillende algoritmen bedenken die allemaal voor die bepaalde invoerwaarden precies de juiste uitkomsten geven (maar misschien heel verschillende uitkomsten voor alle andere invoerwaarden), zelfs al is er helemaal geen logisch verband tussen dat algoritme en de kalender. In zo'n geval is er vaak ook weinig of geen logisch verband tussen het algoritme van dagnummer naar datum en het algoritme van datum naar dagnummer, maar kunnen de algoritmen wel wat korter zijn.

Bij elk algoritme moet je weten voor welke invoerwaarden het ontworpen was. Sommige kalenderalgoritmen werken alleen goed met positieve getallen en geven foute resultaten voor negatieve jaren of dagnummers. De algoritmen die ik hieronder geef zijn ontworpen om voor alle jaren (ook negatieve), alle maanden in elk jaar, alle dagen in elke maand, en alle Juliaanse dagnummers (ook negatieve) goed te werken.

Sommige van de formules drukken een keuze uit: Als aan een bepaalde voorwaarde voldaan is dan moet een bepaalde handeling gedaan worden (bijvoorbeeld ergens een correctie op toepassen), en als aan die voorwaarde niet voldaan is dan moet een andere of helemaal geen handeling gedaan worden. Zulke alternatieve paden zijn prima te gebruiken in handmatige berekeningen, in applicaties die één datum per keer behandelen, en in applicaties die geschreven zijn in een programmeertaal die gecompileerd moet worden voordat het programma uitgevoerd kan worden (bijvoorbeeld geschreven in C of Fortran) maar zijn niet zo handig voor gebruik in applicaties die meerdere datums tegelijk kunnen behandelen (in een rij) en die geschreven zijn in een programmeertaal die direct uitgevoerd wordt (zoals Basic of Perl of IDL), waarvoor het uitvoeren van een als-danopdracht per datum veel trager is dan het uitvoeren van steeds dezelfde vaste berekening per datum voor een rij van datums.

Als de kalenderberekeningen die hieronder staan zulke keuzes bevatten, dan geef ik waar mogelijk een formule die als-danopdrachten omzeilt en daarmee geschikt is voor toepassing op rijen van datums in directe-uitvoerprogrammeertalen. De begeleidende tekst maakt dan duidelijk wat de keuze was waar de formule omheenwerkt.

1. Verschillende soorten dagnummers

Voor sterrenkundige berekeningen die van de tijd afhangen is het handig om een doorlopende tijdschaal te hebben die maar één eenheid gebruikt, en niet drie zoals de meeste kalenders (dagen, maanden, jaren), en die bovendien een vaste tijdzone gebruiken zodat er geen verwarring kan zijn over welk moment nu precies bedoeld wordt.

De IAU heeft hiervoor de Juliaanse Datum (JD) geadopteerd, niet te verwarren met "een datum in de Juliaanse kalender". Er zijn verschillende andere tijdschalen die lijken op JD. De volgende tabel noemt er een aantal.

Naam Soort Begint Vanaf JD
JD Juliaanse Datum Gebroken 12:00 UTC
JDN Juliaanse Dagnummer Heel 12:00 UTC = ⌊JD
CJD Chronologische Juliaanse Datum Gebroken 00:00 LT = JD + 0.5 + TZ
CJDN Chronologische Juliaanse Dagnummer Heel 00:00 LT = ⌊JD + 0.5 + TZ

"Heel" betekent dat die tijdschaal alleen hele getallen gebruikt en alleen hele dagen telt. "Gebroken" betekent dat die tijdschaal ook gebroken getallen gebruikt (met cijfers achter de komma) en tijdstippen aangeeft. De "Begint"-kolom laat zien hoe laat elke volgende kalenderdag begint. 12:00 UTC betekent dat een nieuwe kalenderdag begint op 12:00 universele tijd, dus niet om 12:00 uur lokale tijd ― behalve als je toevallig in een tijdzone bent die UTC aanhoudt. Groot-Brittannië houdt in de winter UTC aan. 00:00 LT betekent dat een nieuwe kalenderdag begint om middernacht lokale tijd. De "Vanaf JD"-kolom toont hoe de andere getallen te berekenen zijn uit JD. Daarin staat "TZ" voor een aanpassing voor de lokale tijdzone; die aanpassing is 0 voor UTC.

In de praktijk worden "fractionele" JDs en CJDs meestal met tenminste één cijfer achter de komma geschreven (zelfs als dat een 0 is), en "hele" JDNs en CJDNs zonder komma met cijfers erachter.

Het nulpunt van JD (dus JD 0.0) komt overeen met 12:00 UTC op 1 januari −4712 in de Juliaanse kalender. Het nulpunt van CJD komt overeen met 00:00 lokale tijd op 1 januari −4712. JDN 0 komt overeen met de periode van 12:00 UTC op 1 januari −4712 tot 12:00 UTC op 2 januari −4712. CJDN 0 komt overeen met 1 januari −4712 (de hele dag, in lokale tijd).

Laten we kijken welke tijdstippen of perioden in de Gregoriaanse kalender overeenkomen met getal 2 455 772 in de tijdschalen van de voorgaande tabel, in een tijdzone waarin de klok 2 uur later aangeeft dan UTC (bijvoorbeeld in Midden-Europa in de zomer).

JD 2 455 772.0 precies 14:00 uur op 29 juli 2011
JDN 2 455 772 van 14:00 uur op 29 juli 2011 tot 14:00 uur op 30 juli 2011
CJD 2 455 772.0 precies 00:00 uur op 29 juli 2011
CJDN 2 455 772 de hele kalenderdag 29 juli 2011

Om afrondfouten te voorkomen zijn kalenderberekeningen het beste te doen met alleen hele getallen. Hieronder gebruiken we daarvoor CJDN.

2. Notatie

2.1. Afronding

In de formules die hieronder staan worden veel getallen afgerond naar een heel getal. Het is hierbij belangrijk dat die getallen in de juiste richting worden afgerond. Hele getallen zijn al afgerond, dus die veranderen niet.

De afrondigen die wij hier gebruiken zijn afronding naar beneden naar het dichtsbijzijnde hele getal (voor \(x \) aangegeven als \( ⌊x⌋ \)) of naar boven naar het dichtstbijzijnde hele getal (\( ⌈x⌉ \)). De standaard-afrondfuncties op rekenmachines ronden meestal af naar het dichtstbijzijnde hele getal (dat noteren wij hier als \( [x] \)), en de standaardconversies van een gebroken getal naar een heel getal in computertalen ronden meestal af in de richting van nul (dat noteren wij als \( \trunc(x) \)). Die soorten afronding moeten we hier niet hebben! De onderstaande tabel toont deze drie verschillende soorten afronding voor een aantal getallen.

\({x}\) \({⌊x⌋}\) \({[x]}\) \({⌈x⌉}\) \({\trunc(x)}\)
−5 −5 −5 −5 −5
−4.9 −5 −5 −4 −4
−4.2 −5 −4 −4 −4
−4 −4 −4 −4 −4
−0.2 −1 0 0 0
0 0 0 0 0
0.2 0 0 1 0
4 4 4 4 4
4.2 4 4 5 4
4.9 4 5 5 4
5 5 5 5 5

2.2. Modulair rekenen

Als je het hele getal \( y \) deelt door het hele getal \( x \gt 0 \) dan krijg je een quotiënt \( q \) en een rest \( r \). Soms hebben we interesse voor het quotiënt, en soms voor de rest. Wij kiezen ervoor dat de rest nooit negatief is. Dan is \( 0 ≤ r \lt x \) en

\begin{align} q \| = \dfloorratio{y}{x} \\ r \| = y \bmod x = y − x\dfloorratio{y}{x} = \dmodp{y}{x} \\ y \| = qx + r \end{align}

De notaties \( y \bmod x \) en \( \dmodp{y}{x} \) betekenen: de niet-negatieve rest die overblijft bij deling van \( y \) door \( x \).

We vinden

\begin{equation} \frac{y}{x} = \dfloorratio{y}{x} + \left( \frac{y}{x} \bmod 1 \right) = \dfloorratio{y}{x} + \frac{y \bmod x}{x} = \dfloorratio{y}{x} + \dmod{\dfrac{y}{x}} \end{equation}

en als \( x = 1 \) dan

\begin{equation} y = \dfloor{y} + (y \bmod 1) = \dfloor{y} + \dmod{y} \end{equation}

waarbij

\begin{equation} \dmod{y} ≝ \dmodp{y}{1} \end{equation}

De notatie \( x ≡ y \pmod{n} \) betekent dat \( x \) en \( y \) een veelvoud van \( n \) verschillen. Men zegt dan dat \( x \) en \( y \) congruent zijn modulo \( n \), en noemt \( n \) de modulus. De vergelijking \( x ≡ y \pmod{n} \) heet een congruentie.

Modulair rekenen is rekenen waarbij alle berekeningen modulo een vaste \( n \) zijn. Dat betekent dat je van alle termen en factoren willekeurige veelvouden (inclusief 0) van de modulus mag aftrekken zonder de congruentie te veranderen. Als \( x ≡ y \pmod{n} \) en \( p \) is een heel getal, dan is ook \( x + pn ≡ y \pmod{n} \), en \( px ≡ py \pmod{n} \), en ook \( px ≡ py \pmod{pn} \).

Een bekend voorbeeld van modulair rekenen is rekenen voor een klok. Een typische klok kan uren aanwijzen van 1 tot 12. Als je twee foto's ziet van een klok en op de eerste foto wijst de klok 3 uur aan en op de tweede foto 7 uur, dan kan de tweede foto 4 uur later zijn dan de eerste, maar ook 4 + 12 = 16 uur later, of 4 + 10×12 uren = 5 dagen plus 4 uur later, of 4 uur plus elk gewenst veelvoud van 12 uur later (of vroeger). Als \( t_1 \) de tijd van de eerste foto was en \( t_2 \) de tijd van de tweede foto (gemeten in uren vanaf een bepaald moment), dan weet je alleen dat \( t_2 ≡ t_1 + 4 \pmod{12} \). En als de klok nu \( t \) uur aanwijst dan zal hij \( y \) uur later \( (t_1 + y) \bmod 12 \) uur aanwijzen.

Let op het verschil in notatie: \( z = x \bmod y = \dmodp{x}{y} \) betekent dat \( z \) gelijk is aan de rest bij deling van \( x \) door \( y \), en \( z ≡ x \pmod{y} \) betekent dat \( z \) gelijk is aan \( x \) afgezien van een willekeurig veelvoud van \( y \). Als \( z = x \bmod y \) dan is ook \( z ≡ x \pmod{y} \), maar andersom hoeft dat niet zo te zijn.

2.3. Symbolen

In onderstaande formules gebruik ik de volgende symbolen:

2.4. Geldigheid

Onderstaande kalenderformules (tot aan maar zonder hoofdstuk 13) zijn bruikbaar in computerprogramma's gebaseerd op hele getallen van 32 (of meer) bits breed (zoals het datatype int32_t uit de programmeertalen C en C++), tenminste voor alle dagen van jaar −12 000 tot en met jaar 12 000. Voor dagen die verder in het verleden of in de toekomst liggen zijn misschien aanpassingen nodig. Zie daarvoor hoofdstuk 13.

3. De Gregoriaanse kalender

Zie hoofdstuk 14.3.1 voor de afleiding van dit algoritme.

De Gregoriaanse kalender is in de meeste landen (ook in de EU) de officiële kalender voor administratieve doeleinden. De Gregoriaanse kalender is gebaseerd op de Juliaanse kalender (zie hoofdstuk 5), met een kleine aanpassing om de kalender nauwkeuriger de seizoenen te laten volgen, en een verschuiving van 10 dagen om een deel van de langzaam opgebouwde afwijking in de Juliaanse kalender van de voorafgaande 16 eeuwen te corrigeren.

De Gregoriaanse kalender werd afgekondigd door paus Gregorius XIII voor gebruik in katholieke landen vanaf vrijdag 15 oktober 1582 (Gregoriaans) = CJDN 2 299 161, de dag die volgde op donderdag 4 oktober 1582 (Juliaans) = CJDN 2 299 160. Geleidelijk aan zijn steeds meer steden/streken/landen overgestapt op de Gregoriaanse kalender, maar de geschiedenis daarvan is ingewikkeld.

3.1. Van Gregoriaanse datum naar CJDN

Het algoritme om een Gregoriaanse datum (kalenderjaar \( a \), kalendermaand \( m \), kalenderdag \( d \)) om te rekenen naar CJDN \( J \) is:

\begin{align} \{ α_1, m_1 \} \| = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \\ \{ c_1, a_2 \} \| = \Div(a_1, 100) \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d \\ d_2 \| = \dfloorratio{36525 a_2}{100} + d_1 \\ s \| = \dfloorratio{146 097 c_1}{4} + d_2 \\ J \| = s + 1 721 120 \end{align}

In die formules:

Bijvoorbeeld, welke CJDN komt overeen met Gregoriaanse datum 6 juli 2003? Dan is \( a = 2003 \), \( m = 7 \), \( d = 6 \) en daarmee

\begin{align*} \{ α_1, m_1 \} \| = \Div(m − 3, 12) = \Div(7 − 3, 12) = \Div(4, 12) = \{ 0, 4 \} \\ a_1 \| = a + α_1 = 2003 + 0 = 2003 \\ \{ c_1, a_2 \} \| = \Div(a_1, 100) = \Div(2003, 100) = \{ 20, 3 \} \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d = \dfloorratio{153×4 − 3}{5} + 6 \\ \| = \dfloorratio{609}{5} + 6 = 121 + 6 = 127 \\ d_2 \| = \dfloorratio{36525 a_2}{100} + d_1 = \dfloorratio{36525×3}{100} + 127 \\ \| = \dfloorratio{109 575}{100} + 127 = 1095 + 127 = 1222 \\ s \| = \dfloorratio{146 097 c_1}{4}{4} + d_2 + \dfloorratio{146 097×20}{4} + 1222 \\ \| = \dfloorratio{2 921 940}{4} + 1222 + 730 485 + 1222 = 731 707 \\ J \| = s + 1 721 120 = 731 707 + 1 721 120 = 2 452 827 \end{align*}

Nog wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({α_1}\) \({m_1}\) \({a_1}\) \({c_1}\) \({a_2}\) \({d_1}\) \({d_2}\) \({s}\) \({J}\)
−4713 11 23 0 8 −4713 −48 87 359 32135 −1721029 91
−4713 11 24 0 8 −4713 −48 87 360 32136 −1721028 92
−4713 11 25 0 8 −4713 −48 87 361 32137 −1721027 93
−1 12 31 0 9 −1 −1 99 397 36556 31 1721151
0 1 1 −1 10 −1 −1 99 31 36190 −335 1720785
0 2 28 −1 11 −1 −1 99 88 36247 −278 1720842
0 2 29 −1 11 −1 −1 99 89 36248 −277 1720843
0 3 1 0 0 0 0 0 92 92 92 1721212
0 12 31 0 9 0 0 0 397 397 397 1721517
1 1 1 −1 10 0 0 0 31 31 31 1721151
1582 10 14 0 7 1582 15 82 319 30269 578132 2299252
1582 10 15 0 7 1582 15 82 320 30270 578133 2299253
1600 2 28 −1 11 1599 15 99 88 36247 584110 2305230
1600 2 29 −1 11 1599 15 99 89 36248 584111 2305231
1600 3 1 0 0 1600 16 0 92 92 584480 2305600
1900 2 28 −1 11 1899 18 99 88 36247 693683 2414803
1900 3 1 0 0 1900 19 0 92 92 694052 2415172
1999 12 31 0 9 1999 19 99 397 36556 730516 2451636
2000 1 1 −1 10 1999 19 99 31 36190 730150 2451270
2000 2 28 −1 11 1999 19 99 88 36247 730207 2451327
2000 2 29 −1 11 1999 19 99 89 36248 730208 2451328
2000 3 1 0 0 2000 20 0 92 92 730577 2451697
2003 7 6 0 4 2003 20 3 219 1314 731799 2452919
2800 2 28 −1 11 2799 27 99 88 36247 1022401 2743521
2800 2 29 −1 11 2799 27 99 89 36248 1022402 2743522
2800 3 1 0 0 2800 28 0 92 92 1022771 2743891

Merk op dat het jaar 1900 wel een schrikkeljaar was in de Juliaanse kalender (hoofdstuk 14.2) maar niet in de Gregoriaanse kalender.

Merk op dat het jaar 1600 wel een schrikkeljaar was in de Gregoriaanse kalender maar niet in de Milanković-kalender (hoofdstuk 14.4). En dat het jaar 2900 wel een schrikkeljaar is in de Milanković-kalender maar niet in de Gregoriaanse kalender.

3.2. Van CJDN naar Gregoriaanse datum

Het algoritme om van een CJDN \( J \) om te rekenen naar een Gregoriaanse datum (kalenderjaar \( a \), kalendermaand \( m \), kalenderdag \( d \)) is:

\begin{align} s \| = J − 1 721 120 \\ \{ c_1, ω_3 \} \| = \Div(4 s + 3, 146 097) \\ d_2 \| = \dfloorratio{ω_3}{4} \\ \{ a_2, ω_4 \} \| = \Div(100 d_2 + 99, 36525) \\ d_1 \| = \dfloorratio{ω_4}{100} \\ \{ m_1, ω_5 \} \| = \Div(5 d_1 + 2, 153) \\ d_0 \| = \dfloorratio{ω_5}{5} \\ \{ α_1, m_0 \} \| = \Div(m_1 + 2, 12) \\ a_1 \| = 100 c_1 + a_2 \\ a \| = a_1 + α_1 \\ m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

In die formules:

Bijvoorbeeld, welke datum in de Gregoriaanse kalender komt overeen met CJDN 2 452 827? Dan is \( J = 2 452 827 \) en dan

\begin{align*} s \| = J − 1 721 120 = 2 452 827 − 1 721 120 = 731 707 \\ \{ c_1, ω_3 \} \| = \Div(4 s + 3, 146 097) = \Div(4×731 707 + 3, 146 097) \\ \| = \Div(2 926 831, 146 097) = \{ 20, 4891 \} \\ d_2 \| = \dfloorratio{ω_3}{4} = \dfloorratio{4891}{4} = 1222 \\ \{ a_2, ω_4 \} \| = \Div(100 d_2 + 99, 36525) = \Div(100×1222 + 99, 36525) \\ \| = \Div(122 299, 36525) = \{ 3, 12724 \} \\ d_1 \| = \dfloorratio{ω_4}{100} = \dfloorratio{12724}{100} = 127 \\ \{ m_1, ω_5 \} \| = \Div(5 d_1 + 2, 153) = \Div(5×127 + 2, 153) \\ \| = \Div(637, 153) = \{ 4, 25 \} \\ \{ α_1, m_0 \} \| = \Div(m_1 + 2, 12) = \Div(6, 12) = \{ 0, 6 \} \\ a_1 \| = 100 c_1 + a_2 = 100×20 + 3 = 2003 \\ a \| = a_1 + α_1 = 2003 + 0 = 2003 \\ m \| = m_0 + 1 = 6 + 1 = 7 \\ d \| = \dfloorratio{ω_5}{5} + 1 = \dfloorratio{25}{5} + 1 = 5 + 1 = 6 \end{align*}

De datum is 6 juli 2003.

Hier zijn nog wat voorbeelden:

\({J}\) \({s}\) \({c_1}\) \({ω_3}\) \({d_2}\) \({a_2}\) \({ω_4}\) \({d_1}\) \({m_1}\) \({ω_5}\) \({α_1}\) \({m_0}\) \({a_1}\) \({a}\) \({m}\) \({d}\)
−1 −1721121 −48 128175 32043 87 26724 267 8 113 0 10 −4713 −4713 11 114
0 −1721120 −48 128179 32044 87 26824 268 8 118 0 10 −4713 −4713 11 119
1 −1721119 −48 128183 32045 87 26924 269 8 123 0 10 −4713 −4713 11 124
1721059 −61 −1 145856 36464 99 30524 305 9 150 0 11 −1 −1 12 151
1721060 −60 −1 145860 36465 99 30624 306 10 2 1 0 −1 0 1 3
1721118 −2 −1 146092 36523 99 36424 364 11 139 1 1 −1 0 2 140
1721119 −1 −1 146096 36524 99 36524 365 11 144 1 1 −1 0 2 145
1721120 0 0 3 0 0 99 0 0 2 0 2 0 0 3 3
1721425 305 0 1223 305 0 30599 305 9 150 0 11 0 0 12 151
1721426 306 0 1227 306 0 30699 306 10 2 1 0 0 1 1 3
2299160 578040 15 120708 30177 82 22749 227 7 66 0 9 1582 1582 10 67
2299161 578041 15 120712 30178 82 22849 228 7 71 0 9 1582 1582 10 72
2305506 584386 15 146092 36523 99 36424 364 11 139 1 1 1599 1600 2 140
2305507 584387 15 146096 36524 99 36524 365 11 144 1 1 1599 1600 2 145
2305508 584388 16 3 0 0 99 0 0 2 0 2 1600 1600 3 3
2415079 693959 18 146093 36523 99 36424 364 11 139 1 1 1899 1900 2 140
2415080 693960 19 0 0 0 99 0 0 2 0 2 1900 1900 3 3
2451544 730424 19 145856 36464 99 30524 305 9 150 0 11 1999 1999 12 151
2451545 730425 19 145860 36465 99 30624 306 10 2 1 0 1999 2000 1 3
2451603 730483 19 146092 36523 99 36424 364 11 139 1 1 1999 2000 2 140
2451604 730484 19 146096 36524 99 36524 365 11 144 1 1 1999 2000 2 145
2451605 730485 20 3 0 0 99 0 0 2 0 2 2000 2000 3 3
2452827 731707 20 4891 1222 3 12724 127 4 25 0 6 2003 2003 7 26
2743797 1022677 27 146092 36523 99 36424 364 11 139 1 1 2799 2800 2 140
2743798 1022678 27 146096 36524 99 36524 365 11 144 1 1 2799 2800 2 145
2743799 1022679 28 3 0 0 99 0 0 2 0 2 2800 2800 3 3

Merk op dat het jaar 1900 wel een schrikkeljaar was in de Juliaanse kalender (hoofdstuk 14.2) maar niet in de Gregoriaanse kalender.

Merk op dat de jaren 1600 en 2800 wel schrikkeljaren zijn in de Gregoriaanse kalender maar niet in de Milanković-kalender (hoofdstuk 14.4).

4. De Milanković-kalender

Zie hoofdstuk 14.4 voor de afleiding van dit algoritme.

4.1. Van Milanković-datum naar CJDN

Sommige Oosters-Orthodoxe kerken gebruiken een kalender uitgevonden door Milutin Milanković, die alleen afwijkt van de Gregoriaanse kalender in de schrikkelregels voor eeuwjaren. Een algoritme om van een datum in de Milanković-kalender (kalenderjaar \( a \), kalendermaand \( m \), kalenderdag \( d \)) om te rekenen naar het CJDN \( J \) is:

\begin{align} \{ α_1, m_1 \} \| = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \\ \{ c_1, a_2 \} \| = \Div(a_1, 100) \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d \\ d_2 \| = \dfloorratio{36525 a_2}{100} + d_1 \\ s \| = \dfloorratio{328 718 c_1 + 6}{9} + d_2 \\ J \| = s + J_0 = s + 1 721 120 \end{align}

In die formules:

Bijvoorbeeld: wat is het CJDN voor 7 september 2010 in de Milanković-kalender? Dan is \( a = 2010 \), \( m = 9 \), \( d = 7 \) en dan:

\begin{align*} \{ α_1, m_1 \} \| = \Div(m − 3, 12) = \Div(9 − 3, 12) = \Div(6, 12) = \{ 0, 6 \} \\ a_1 \| = a + α_1 = 2010 + 0 = 2010 \\ \{ c_1, a_2 \} \| = \Div(a_1, 100) = \Div(2010, 100) = \{ 20, 10 \} \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d = \dfloorratio{153×6 − 3}{5} + 7 \\ \| = \dfloorratio{915}{5} + 7 = 183 + 7 = 190 \\ d_2 \| = \dfloorratio{36525 a_2}{100} + d_1 = \dfloorratio{36525×10}{100} + 190 \\ \| = \dfloorratio{365 250}{100} + 190 = 3652 + 190 = 3842 \\ s \| = \dfloorratio{328 718 c_1 + 6}{9} + d_2 = \dfloorratio{328 718×20 + 6}{9} + 3842 \\ \| = \dfloorratio{6 574 366}{9} + 3842 = 730 485 + 3842 = 734 327 \\ J \| = s + 1 721 119 = 734 327 + 1 721 120 = 2 455 447 \end{align*}

Nog wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({α_1}\) \({m_1}\) \({a_1}\) \({c_1}\) \({a_2}\) \({d_1}\) \({d_2}\) \({s}\) \({J}\)
−4713 11 21 0 8 −4713 −48 87 265 32041 −1721121 −1
−4713 11 22 0 8 −4713 −48 87 266 32042 −1721120 0
−4713 11 23 0 8 −4713 −48 87 267 32043 −1721119 1
−1 12 31 0 9 −1 −1 99 305 36464 −60 1721060
0 1 1 −1 10 −1 −1 99 306 36465 −59 1721061
0 2 28 −1 11 −1 −1 99 364 36523 −1 1721119
0 3 1 0 0 0 0 0 0 0 0 1721120
0 12 31 0 9 0 0 0 305 305 305 1721425
1 1 1 −1 10 0 0 0 306 306 306 1721426
1582 10 14 0 7 1582 15 82 227 30177 578041 2299161
1582 10 15 0 7 1582 15 82 228 30178 578042 2299162
1600 2 28 −1 11 1599 15 99 364 36523 584387 2305507
1600 3 1 0 0 1600 16 0 0 0 584388 2305508
1900 2 28 −1 11 1899 18 99 364 36523 693959 2415079
1900 3 1 0 0 1900 19 0 0 0 693960 2415080
1999 12 31 0 9 1999 19 99 305 36464 730424 2451544
2000 1 1 −1 10 1999 19 99 306 36465 730425 2451545
2000 2 28 −1 11 1999 19 99 364 36523 730483 2451603
2000 2 29 −1 11 1999 19 99 365 36524 730484 2451604
2000 3 1 0 0 2000 20 0 0 0 730485 2451605
2003 7 6 0 4 2003 20 3 127 1222 731707 2452827
2800 2 28 −1 11 2799 27 99 364 36523 1022677 2743797
2800 3 1 0 0 2800 28 0 0 0 1022678 2743798

Merk op dat de jaren 1600 en 2800 wel schrikkeljaren zijn in de Gregoriaanse kalender (hoofdstuk 14.3) maar niet in de Milanković-kalender.

4.2. Van CJDN naar Milanković-datum

Een algoritme om CJDN \( J \) om te rekenen naar jaar \( a \), maand \( m \), dag \( d \) in de Milanković-kalender is:

\begin{align} s \| = J − 1 721 120 \\ \{ c_1, ω_3 \} \| = \Div(9 s + 2, 328 718) \\ d_2 \| = \dfloorratio{ω_3}{9} \\ \{ a_2, ω_4 \} \| = \Div(100 d_2 + 99, 36525) \\ d_1 \| = \dfloorratio{ω_4}{100} \\ \{ m_1, ω_5 \} \| = \Div(5 d_1 + 2, 153) \\ d_0 \| = \dfloorratio{ω_5}{5} \\ a_1 \| = 100 c_1 + a_2 \\ \{ α_1, m_0 \} \| = \Div(m_1 + 2, 12) \\ a \| = a_1 + α_1 \\ m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

In die formules:

Bijvoorbeeld, welke datum in de Milanković-kalender komt overeen met CJDN 2 452 827? Dan is \( J = 2 452 827 \) en dan

\begin{align*} s \| = J − 1 721 120 = 2 452 827 − 1 721 120 = 731 707 \\ \{ c_1, ω_3 \} \| = \Div(9 s + 2, 328 718) = \Div(9×731 707 + 2, 328 718) \\ \| = \Div(6 585 365, 328 718) = \{ 20, 11005 \} \\ d_2 \| = \dfloorratio{ω_3}{9} = \dfloorratio{11005}{9} = 1222 \\ \{ a_2, ω_4 \} \| = \Div(100 d_2 + 99, 36525) = \Div(100×1222 + 99, 36525) \\ \| = \Div(122 299, 36525) = \{3, 12724\} \\ d_1 \| = \dfloorratio{ω_4}{100} = \dfloorratio{12724}{100} = 127 \\ \{ m_1, ω_5 \} \| = \Div(5 d_1 + 2, 153) = \Div(5×127 + 2, 153) \\ \| = \Div(637, 153) = \{4, 25\} \\ d_0 \| = \dfloorratio{ω_5}{5} = \dfloorratio{25}{5} = 5 \\ a_1 \| = 100 c_1 + a_2 = 100×20 + 3 = 2003 \\ \{ α_1, m_0 \} \| = \Div(m_1 + 2, 12) = \Div(4 + 2, 12) = \Div(6, 12) = \{ 0, 6 \} \\ a \| = a_1 + α_1 = 2003 + 0 = 2003 \\ m \| = m_0 + 1 = 6 + 1 = 7 \\ d \| = d_0 + 1 = 5 + 1 = 6 \end{align*}

De datum is 6 juli 2003.

Wat meer voorbeelden:

\({J}\) \({s}\) \({c_1}\) \({ω_3}\) \({d_2}\) \({a_2}\) \({ω_4}\) \({d_1}\) \({m_1}\) \({ω_5}\) \({d_0}\) \({a_1}\) \({α_1}\) \({m_0}\) \({a}\) \({m}\) \({d}\)
−1 −1721121 −48 288377 32041 87 26524 265 8 103 20 −4713 0 10 −4713 11 21
0 −1721120 −48 288386 32042 87 26624 266 8 108 21 −4713 0 10 −4713 11 22
1 −1721119 −48 288395 32043 87 26724 267 8 113 22 −4713 0 10 −4713 11 23
1721060 −60 −1 328180 36464 99 30524 305 9 150 30 −1 0 11 −1 12 31
1721061 −59 −1 328189 36465 99 30624 306 10 2 0 −1 1 0 0 1 1
1721119 −1 −1 328711 36523 99 36424 364 11 139 27 −1 1 1 0 2 28
1721120 0 0 2 0 0 99 0 0 2 0 0 0 2 0 3 1
1721425 305 0 2747 305 0 30599 305 9 150 30 0 0 11 0 12 31
1721426 306 0 2756 306 0 30699 306 10 2 0 0 1 0 1 1 1
2299161 578041 15 271601 30177 82 22749 227 7 66 13 1582 0 9 1582 10 14
2299162 578042 15 271610 30178 82 22849 228 7 71 14 1582 0 9 1582 10 15
2305507 584387 15 328715 36523 99 36424 364 11 139 27 1599 1 1 1600 2 28
2305508 584388 16 6 0 0 99 0 0 2 0 1600 0 2 1600 3 1
2415079 693959 18 328709 36523 99 36424 364 11 139 27 1899 1 1 1900 2 28
2415080 693960 19 0 0 0 99 0 0 2 0 1900 0 2 1900 3 1
2451544 730424 19 328176 36464 99 30524 305 9 150 30 1999 0 11 1999 12 31
2451545 730425 19 328185 36465 99 30624 306 10 2 0 1999 1 0 2000 1 1
2451603 730483 19 328707 36523 99 36424 364 11 139 27 1999 1 1 2000 2 28
2451604 730484 19 328716 36524 99 36524 365 11 144 28 1999 1 1 2000 2 29
2451605 730485 20 7 0 0 99 0 0 2 0 2000 0 2 2000 3 1
2452827 731707 20 11005 1222 3 12724 127 4 25 5 2003 0 6 2003 7 6
2743797 1022677 27 328709 36523 99 36424 364 11 139 27 2799 1 1 2800 2 28
2743798 1022678 28 0 0 0 99 0 0 2 0 2800 0 2 2800 3 1

Merk op dat de jaren 1600 en 2800 wel schrikkeljaren zijn in de Gregoriaanse kalender (hoofdstuk 14.3) maar niet in de Milanković-kalender.

5. De Juliaanse kalender

Zie hoofdstuk 14.2.1 voor de afleiding van dit algoritme.

5.1. Van Juliaanse datum naar CJDN

Het algoritme om van een Juliaanse datum (kalenderjaar \( a \), kalendermaand \( m \), kalenderdag \( d \)) om te rekenen naar het CJDN \( J \) is:

\begin{align} \{ α_1, m_1 \} \| = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d \\ s \| = \dfloorratio{1461 a_1}{4} + d_1 \\ J \| = s + 1 721 118 \end{align}

In die formules:

Bijvoorbeeld: wat is het CJDN voor 7 september 2010 in de Juliaanse kalender? Dan is \( a = 2010 \), \( m = 9 \), \( d = 7 \) en dan:

\begin{align*} \{ α_1, m_1 \} \| = \Div(m − 3, 12) = \Div(9 − 3, 12) = \Div(6, 12) = \{ 0, 6 \} \\ a_1 \| = a + α_1 = 2010 + 0 = 2010 \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d = \dfloorratio{153×6 − 3}{5} + 7 \\ \| = \dfloorratio{915}{5} + 7 = 183 + 7 = 190 \\ s \| = \dfloorratio{1461 a_1}{4} + d_1 = \dfloorratio{1461×2010}{4} + 190 \\ \| = \dfloorratio{2 936 610}{4} + 190 = 734 152 + 190 = 734 342 \\ J \| = s + 1 721 118 = 734 342 + 1 721 118 = 2 455 460 \end{align*}

Dus 7 september 2010 in de Juliaanse kalender komt overeen met CJDN 2 455 460.

Nog wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({α_1}\) \({m_1}\) \({a_1}\) \({d_1}\) \({s}\) \({J}\)
−4713 12 31 0 9 −4713 305 −1721119 −1
−4712 1 1 −1 10 −4713 306 −1721118 0
−4712 1 2 −1 10 −4713 307 −1721117 1
−1 12 31 0 9 −1 305 −61 1721057
0 1 1 −1 10 −1 306 −60 1721058
0 2 28 −1 11 −1 364 −2 1721116
0 2 29 −1 11 −1 365 −1 1721117
0 3 1 0 0 0 0 0 1721118
0 12 31 0 9 0 305 305 1721423
1 1 1 −1 10 0 306 306 1721424
1582 10 4 0 7 1582 217 578042 2299160
1582 10 5 0 7 1582 218 578043 2299161
1900 2 28 −1 11 1899 364 693973 2415091
1900 2 29 −1 11 1899 365 693974 2415092
1900 3 1 0 0 1900 0 693975 2415093
1999 12 31 0 9 1999 305 730439 2451557
2000 1 1 −1 10 1999 306 730440 2451558
2000 2 28 −1 11 1999 364 730498 2451616
2000 2 29 −1 11 1999 365 730499 2451617
2000 3 1 0 0 2000 0 730500 2451618
2003 7 6 0 4 2003 127 731722 2452840
2010 9 7 0 6 2010 190 734342 2455460

5.2. Van CJDN naar Juliaanse datum

Het algoritme om een CJDN \( J \) om te rekenen naar een Juliaanse datum (kalenderjaar \( a \), kalendermaand \( m \), kalenderdag \( d \)) is:

\begin{align} s \| = J − 1 721 118 \\ \{ a_1, ω_2 \} \| = \Div(4 s + 3, 1461) \\ d_1 \| = \dfloorratio{ω_2}{4} \\ \{ m_1, ω_3 \} \| = \Div(5 d_1 + 2, 153) \\ \{ α_2, m_0 \} \| = \Div(m_1 + 2, 12) \\ a \| = a_1 + α_2 \\ m \| = m_0 + 1 \\ d \| = \dfloorratio{ω_3}{5} + 1 \end{align}

Welke Juliaanse datum komt overeen met CJDN 2 455 460? Dan is \( J = 2 455 460 \) en dan

\begin{align*} s \| = J − 1 721 118 = 2 455 460 − 1 721 118 = 734 342 \\ \{ a_1, ω_2 \} \| = \Div(4 s + 3, 1461) = \Div(4×734 342 + 3, 1461) \\ \| = \Div(2 937 371, 1461) = \{ 2010, 761 \} \\ d_1 \| = \dfloorratio{ω_2}{4} = \dfloorratio{761}{4} = 190 \\ \{ m_1, ω_3 \} \| = \Div(5 d_1 + 2, 153) = \Div(5×190 + 2, 153) \\ \| = \Div(952, 153) = \{ 6, 34 \} \\ \{ α_2, m_0 \} \| = \Div(m_1 + 2, 12) = \Div(6 + 2, 12) = \{ 0, 8 \} \\ a \| = a_1 + α_2 = 2010 + 0 = 2010 \\ m \| = m_0 + 1 = 8 + 1 = 9 \\ d \| = \dfloorratio{ω_3}{5} + 1 = \dfloorratio{34}{5} + 1 = 6 + 1 = 7 \end{align*}

De datum is 7 september 2010.

Nog wat meer voorbeelden:

\({J}\) \({s}\) \({a_1}\) \({ω_2}\) \({d_1}\) \({m_1}\) \({ω_3}\) \({α_2}\) \({m_0}\) \({a}\) \({m}\) \({d}\)
−1 −1721119 −4713 1220 305 9 150 0 11 −4713 12 31
0 −1721118 −4713 1224 306 10 2 1 0 −4712 1 1
1 −1721117 −4713 1228 307 10 7 1 0 −4712 1 2
1721057 −61 −1 1220 305 9 150 0 11 −1 12 31
1721058 −60 −1 1224 306 10 2 1 0 0 1 1
1721116 −2 −1 1456 364 11 139 1 1 0 2 28
1721117 −1 −1 1460 365 11 144 1 1 0 2 29
1721118 0 0 3 0 0 2 0 2 0 3 1
1721423 305 0 1223 305 9 150 0 11 0 12 31
1721424 306 0 1227 306 10 2 1 0 1 1 1
2299160 578042 1582 869 217 7 16 0 9 1582 10 4
2299161 578043 1582 873 218 7 21 0 9 1582 10 5
2415091 693973 1899 1456 364 11 139 1 1 1900 2 28
2415092 693974 1899 1460 365 11 144 1 1 1900 2 29
2415093 693975 1900 3 0 0 2 0 2 1900 3 1
2451557 730439 1999 1220 305 9 150 0 11 1999 12 31
2451558 730440 1999 1224 306 10 2 1 0 2000 1 1
2451616 730498 1999 1456 364 11 139 1 1 2000 2 28
2451617 730499 1999 1460 365 11 144 1 1 2000 2 29
2451618 730500 2000 3 0 0 2 0 2 2000 3 1
2452840 731722 2003 508 127 4 25 0 6 2003 7 6
2455460 734342 2010 761 190 6 34 0 8 2010 9 7

6. De Islamitische kalender

Zie hoofdstuk 14.9 voor de afleiding van dit algoritme.

6.1. Van Islamitische datum naar CJDN

De religieuze Islamitische kalender hangt af van waarnemingen en is daarom niet te vangen in formules. De administratieve kalender heeft vaste regels en is wel te beschrijven door formules. Het verschil tussen de religieuze en administratieve kalenders zou meestal hooguit 1 dag moeten zijn.

Het CJDN kan als volgt uit het jaarnummer \( a \), maandnummer \( m \), en dagnummer \( d \) in de meestgebruikte administratieve Islamitische kalender worden afgeleid (onder meer gebruikt door al-Fazārī, al-Khwārizmī en al-Battānī en ook in de Toledo- en Alfonsijnse Tafels):

\begin{align} d_1 \| = \dfloorratio{325 m − 331}{11} + d \\ s \| = \dfloorratio{10631 a − 10617}{30} + d_1 \\ J \| = s + 1 948 440 \end{align}

Hierin is

Bijvoorbeeld, welke CJDN \( J \) hoort bij de Islamitische datum 29-08-1432? Dan is \( a = 1432 \), \( m = 8 \), \( d = 29 \), dus

\begin{align*} d_1 \| = \dfloorratio{325 m − 331}{11} + d = \dfloorratio{325×8 − 331}{11} + 29 \\ \| = \dfloorratio{2269}{11} + 29 = 206 + 29 = 235 \\ s \| = \dfloorratio{10631 a − 10617}{30} + d_1 = \dfloorratio{10631×1432 − 10617}{30} + 235 \\ \| = \dfloorratio{15 212 975}{30} + 235 = 507 099 + 235 = 507 334 \\ J \| = s + 1 948 440 = 507 334 + 1 948 440 = 2 455 774 \end{align*}

De CJDN is 2 455 774, wat overeenkomt met 31 juli 2011 in de Gregoriaanse kalender.

Wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({d_1}\) \({s}\) \({J}\)
−5498 8 15 221 −1948441 −1
−5498 8 16 222 −1948440 0
0 12 29 353 −1 1948439
1 1 1 0 0 1948440
1 1 30 29 29 1948469
1 2 1 30 30 1948470
1 12 29 353 353 1948793
2 1 1 0 354 1948794
1432 8 29 235 507334 2455774

6.2. Van CJDN naar Islamitische datum

De volgende formules berekenen het jaartal \( a \), maandnummer \( m \), en dagnummer \( d \) in de meestgebruikte administratieve Islamitische kalender uit het CJDN \( J \):

\begin{align} s \| = J − 1 948 440 \\ \{ a, ω_2 \} \| = \Div(30 s + 10646, 10631) \\ d_1 \| = \dfloorratio{ω_2}{30} \\ \{ m, ω_3 \} \| = \Div(11 d_1 + 330, 325) \\ d \| = \dfloorratio{ω_3}{11} + 1 \end{align}

Hierin is

Bijvoorbeeld, welke Islamitische datum komt overeen met CJDN 2 455 774? Dan is \( J = 2 455 774 \), en dan

\begin{align*} s \| = J − 1 948 440 = 2 455 774 − 1 948 440 = 507 334 \\ \{ a, ω_2 \} \| = \Div(30 s + 10646, 10631) = \Div(30×507 334 + 10646, 10631) \\ \| = \Div(15 230 666, 10631) = \{ 1432, 7074 \} \\ d_1 \| = \dfloorratio{ω_2}{30} = \dfloorratio{7074}{30} = 235 \\ \{ m, ω_3 \} \| = \Div(11 d_1 + 330, 325) = \Div(11×235 + 330, 325) \\ \| = \Div(2915, 325) = \{ 8, 315 \} \\ d \| = \dfloorratio{ω_3}{11} + 1 = \dfloorratio{315}{11} + 1 = 28 + 1 = 29 \end{align*}

dus \( a = 1432 \), \( m = 8 \), \( d = 29 \) ofwel 29 Sha`ban 1432.

Wat meer voorbeelden:

\({J}\) \({s}\) \({a}\) \({ω_2}\) \({d_1}\) \({m}\) \({ω_3}\) \({d}\)
−1 −1948441 −5498 6654 221 8 161 15
0 −1948440 −5498 6684 222 8 172 16
1948439 −1 0 10616 353 12 313 29
1948440 0 1 15 0 1 5 1
1948469 29 1 885 29 1 324 30
1948470 30 1 915 30 2 10 1
1948793 353 1 10605 353 12 313 29
1948794 354 2 4 0 1 5 1
2455774 507334 1432 7074 235 8 315 29

7. De Babylonische kalender

Zie hoofdstuk 14.6 voor de afleiding van dit algoritme.

7.1. Van Babylonische datum naar CJDN

De Babyloniërs hadden een zongebonden maankalender waarin de lengte van de maand bepaald werd uit waarnemingen, maar het aantal maanden per jaar elke 19 jaar een vast patroon volgde. Onderstaande formules voor een administratieve Babylonische kalender gebruiken datzelfde patroon van 19 jaar, en zouden meestal hooguit een dag moeten afwijken van de door waarnemingen bepaalde kalender die de Babyloniërs gebruikten.

Als \( a \) het jaartal is volgens de era van Seleukos, en \( m \) het maandnummer (beginnend bij 1) in het jaar, en \( d \) het dagnummer (beginnend bij 1) in de maand, dan vind je het CJDN \( J \) uit

\begin{align} m_1 \| = \dfloorratio{235 a − 241}{19} + m \\ s \| = \dfloorratio{6940 m_1}{235} + d − 1 \\ J \| = s + 1 607 923 \end{align}

Hierin is

Bijvoorbeeld, welk CJDN \( J \) komt overeen met jaar 3, maand 9, dag 27 van de era van Seleukos? Dan is \( a = 3 \), \( m = 9 \), \( d = 27 \), dus

\begin{align*} m_1 \| = \dfloorratio{235 a − 241}{19} + m = \dfloorratio{235×3 − 241}{19} + 9 \\ \| = \dfloorratio{464}{19} + 9 = 24 + 9 = 33 \\ s \| = \dfloorratio{6940 m_1}{235} + d − 1 = \dfloorratio{6940×33}{235} + 27 − 1 \\ \| = \dfloorratio{229 020}{235} + 26 = 974 + 26 = 1000 \\ J \| = s + 1 607 923 = 1000 + 1 607 923 = 1 608 923 \end{align*}

Wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({m_1}\) \({s}\) \({J}\)
−1 1 1 −25 −739 1607184
0 1 1 −12 −355 1607568
1 1 1 0 0 1607923
1 2 1 1 29 1607952
1 3 1 2 59 1607982
2 1 1 13 383 1608306
3 9 27 33 1000 1608923
2315 3 1 28623 845292 2453215

7.2. Van CJDN naar Babylonische datum

Van CJDN \( J \) gaan we als volgt naar Babylonische jaar \( a \), maand \( m \), en dag \( d \):

\begin{align} s \| = J − 1 607 923 \\ \{ m_1, ω_2 \} \| = \Div(235 s + 234, 6940) \\ \{ a, ω_3 \} \| = \Div(19 m_1 + 240, 235) \\ m \| = \dfloorratio{ω_3}{19} + 1 \\ d \| = \dfloorratio{ω_2}{235} + 1 \end{align}

Hierin is

Bijvoorbeeld, welke datum in de Babylonische kalender komt overeen met CJDN \( 1 608 923 \)? Dan is \( J = 1 608 923 \), dus

\begin{align*} s \| = J − 1 607 923 = 1 608 923 − 1 607 923 = 1000 \\ \{ m_1, ω_2 \} \| = \Div(235 s + 234, 6940) = \Div(235×1000 + 234, 6940) \\ \| = \Div(235 234, 6940) = \{ 33, 6214 \} \\ \{ a, ω_3 \} \| = \Div(19 m_1 + 240, 235) = \Div(19×33 + 240, 235) \\ \| = \Div(867, 235) = \{ 3, 162 \} \\ m \| = \dfloorratio{ω_3}{19} + 1 = \dfloorratio{162}{19} + 1 = 8 + 1 = 9 \\ d \| = \dfloorratio{ω_2}{235} + 1 = \dfloorratio{6214}{235} + 1 = 26 + 1 = 27 \end{align*}

ofwel dag 27 van maand 9 van jaar 3.

Wat meer voorbeelden:

\({J}\) \({s}\) \({m_1}\) \({ω_2}\) \({a}\) \({ω_3}\) \({m}\) \({d}\)
1607184 −739 −25 69 6 141 8 1
1607568 −355 −12 89 8 51 3 1
1607923 0 0 234 19 221 12 1
1607952 29 1 109 9 196 11 1
1607982 59 2 219 18 171 10 1
1608306 383 13 19 2 131 7 1
1608923 1000 33 6214 503 101 6 27
2453215 845292 28623 234 19 221 12 1

8. De Joodse kalender

Zie hoofdstuk 14.7 voor de afleiding van dit algoritme.

De Joodse kalender is een zongebonden maankalender met ingewikkelde regels, en de kalender herhaalt zich pas na 251 827 457 dagen = 35 975 351 weken = 8 527 680 maanden = 689 472 jaren. De algoritmes om een Joodse datum om te rekenen naar CJDN of andersom zijn daarom lang, en er komen hele grote tussenresultaten in voor. De algoritmes die ik hieronder geef gebruiken alleen hele getallen (om afrondfouten te voorkomen), en zijn aangepast voor gebruik in een computerprogramma gebaseerd op 32-bitsgetallen zodat ze de juiste resultaten geven voor ongeveer 5,8 miljoen jaar naar het verleden en de toekomst. Zonder die aanpassing zouden ze voor slechts een periode van 453 jaar gewerkt hebben.

8.1. Van Joodse datum naar CJDN

In de Joodse kalender heeft een jaar 12 of 13 maanden en een maand heeft 29 of 30 dagen. Nieuwjaar is de eerste dag van de 7e maand, tisjrie. In een jaar van 12 maanden zijn de maanden: 1 = niesan (נִיסָן‎), 2 = ijar (אִיָּר / אייר‎), 3 = siewan (סִיוָן / סיוון‎), 4 = tammoez (תַּמּוּז‎), 5 = aaw (אָב‎), 6 = elloel (אֱלוּל‎), 7 = tisjrie (תִּשׁרִי‎), 8 = chesjwan (מַרְחֶשְׁוָן / מרחשוון‎), 9 = kisleew (כִּסְלֵו / כסליו‎), 10 = teweet (טֵבֵת‎), 11 = sjewat (שְׁבָט‎), 12 = adar (אֲדָר‎). In een jaar van 13 maanden wordt een embolistische maand adar Ⅰ (‎אֲדָר א׳) ingevoegd tussen sjewat en gewone adar, en die gewone adar wordt dan tijdelijk hernoemd tot adar Ⅱ (אֲדָר ב׳‎). In zo'n jaar rekenen we de embolistische maand adar Ⅰ als maand nummer 12, en adar Ⅱ als maand nummer 13.

Een algoritme om CJDN \( J \) te berekenen uit kalenderjaar \( a \), kalendermaand \( m \) (van 1 tot 12 of 13) en kalenderdag \( d \) (van 1 tot 29 of 30) is als volgt:

\begin{align} m_0 \| = m − 1 \\ a_1 \| = a + \dfloorratio{12 − m_0}{7} \\ μ_2(a_1) \| = \dfloorratio{235 a_1 − 234}{19} \\ \{ ω_1(μ_2), μ_1(μ_2) \} \| = \Div(μ_2, 25920) \\ δ_4(μ_2) \| = 29 μ_2 + 13753 ω_1(μ_2) + \dfloorratio{13753 μ_1(μ_2) + 5604}{25920} \\ δ_6(μ_2) \| = δ_4(μ_2) + \dmodp{\dfloorratio{6\dmodp{δ_4(μ_2)}{7}}{7}}{2} \\ L_2(a_1) \| = δ_6(μ_2(a_1 + 1)) − δ_6(μ_2(a_1)) \\ δ_7(a_1) \| = 2\dmodp{\dfloorratio{L_2(a_1) + 19}{15}}{2} \\ δ_8(a_1) \| = \dmodp{\dfloorratio{L_2(a_1 − 1) + 7}{15}}{2} \\ d_1(a_1) \| = δ_6(μ_2(a_1)) + δ_7(a_1) + δ_8(a_1) \\ L(a_1) \| = d_1(a_1 + 1) − d_1(a_1) \\ δ_9(m_0) \| = \dfloorratio{384 m_0 + 7}{13} \\ δ_{10}(a_1) \| = \dmodp{\dfloorratio{L(a_1) + 1}{2}}{3} \\ δ_{11}(a_1) \| = −\dmodp{\dfloorratio{385 − L(a_1)}{2}}{3} \\ ω_2(m_0) \| = \dfloorratio{m_0 + 4}{12} \\ ω_3(m_0) \| = \dfloorratio{m_0 + 3}{12} \\ δ_{12}(a_1, m_0) \| = δ_9(m_0) + ω_2(m_0)δ_{10}(a_1) + ω_3(m_0)δ_{11}(a_1) \\ d_2(a_1,m_0) \| = d_1(a_1) − 177 + δ_{12}(a_1,m_0) \\ s \| = d_2(a_1,m_0) + d − 1 \\ J \| = s + 347 998 \end{align}

Hierin is

In de praktijk zijn meer berekeningen nodig dan je op het eerste gezicht zou denken, want sommige formules moeten meerdere keren gebruikt worden. Het volgende plaatje toont de afhankelijkheden. Voor \( L \) heb je \( d_1 \) nodig voor twee jaar, en voor elke \( d_1 \) heb je \( L_2 \) nodig voor twee jaar, en voor elke \( L_2 \) heb je \( δ_6 \) nodig voor twee jaar. \( L \) en de bijbehorende afhankelijkheden zijn alleen nodig als \( m \ge 9 \), daarom zijn die aangegeven met pijlen met streeplijnen. Al met al heb je om \( J \) uit te rekenen \( d_1 \) nodig van tenminste één jaar, \( L_2 \) van tenminste twee jaar, en \( δ_6 \) van tenminste drie jaar, en als \( m \ge 9 \) dan heb je \( d_1 \), \( L_2 \) en \( δ_6 \) van nog een jaar extra nodig.

Voor 12 kislev 4682 (\( a = 4682, m = 9, d = 12 \)) is \( m ≥ 9 \) dus hebben we vier waarden van \( μ_2 \), \( μ_4 \), \( μ_6 \) nodig, drie van \( L_2 \), twee van \( d_1 \), en een van \( L \).

\begin{align*} m_0 \| = m − 1 = 9 − 1 = 8 \\ a_1 \| = a + \dfloorratio{12 − m_0}{7} = 4682 + \dfloorratio{12 − 8}{7} = 4682 + \dfloorratio{4}{7} = 4682 \\ μ_2(a_1) \| = \dfloorratio{235 a_1 − 234}{19} = \dfloorratio{235×4682 − 234}{19} \\ \| = \dfloorratio{1 100 036}{19} = 57896 \\ μ_2(a_1 + 2) \| = 57921 \\ μ_2(a_1 + 1) \| = 57909 \\ μ_2(a_1 − 1) \| = 57884 \\ \{ ω_1(μ_2(a_1)), μ_1(μ_2(a_1)) \} \| = \Div(μ_2(a_1), 25920) = \Div(57896, 25920) = \{ 2, 6056 \} \\ δ_4(μ_2(a_1)) \| = 29 μ_2(a_1) + 13753 ω_1(μ_2(a_1)) + \dfloorratio{13753 μ_1(μ_2(a_1)) + 5604}{25920} \\ \| = 29×57896 + 13753×2 + \dfloorratio{13753×6056 + 5604}{25920} \\ \| = 1 678 984 + 27506 + \dfloorratio{83 293 772}{25920} \\ \| = 1 706 490 + 3213 = 1 709 703 \\ δ_4(μ_2(a_1 + 2)) \| = 1 710 442 \\ δ_4(μ_2(a_1 + 1)) \| = 1 710 087 \\ δ_4(μ_2(a_1 − 1)) \| = 1 709 349 \\ δ_6(μ_2(a_1)) \| = δ_4(μ_2(a_1)) + \dmodp{\dfloorratio{6 \dmodp{δ_4(μ_2(a_1))}{7}}{7}}{2} \\ \| = 1 709 703 + \dmodp{\dfloorratio{6×\dmodp{1 709 703}{7}}{7}}{2} \\ \| = 1 709 703 + \dmodp{\dfloorratio{6×2}{7}}{2} \\ \| = 1 709 703 + \dmodp{\dfloorratio{12}{7}}{2} \\ \| = 1 709 703 + \dmodp{1}{2} = 1 709 704 \\ δ_6(μ_2(a_1 + 2)) \| = 1 710 443 \\ δ_6(μ_2(a_1 + 1)) \| = 1 710 087 \\ δ_6(μ_2(a_1 − 1)) \| = 1 709 349 \\ L_2(a_1) \| = δ_6(μ_2(a_1 + 1)) − δ_6(μ_2(a_1)) = 1 710 087 − 1 709 704 = 383 \\ L_2(a_1 + 1) \| = 356 \\ L_2(a_1 − 1) \| = 355 \\ δ_7(a_1) \| = 2\dmodp{\dfloorratio{L_2(a_1) + 19}{15}}{2} = 2\dmodp{\dfloorratio{383 + 19}{15}}{2} \\ \| = 2\dmodp{\dfloorratio{402}{15}}{2} = 2\dmodp{26}{2} = 0 \\ δ_7(a_1 + 1) \| = 2 \\ δ_8(a_1) \| = \dmodp{\dfloorratio{L_2(a_1 − 1) + 7}{15}}{2} = \dmodp{\dfloorratio{355 + 7}{15}}{2} \\ \| = \dmodp{\dfloorratio{362}{15}}{2} = \dmodp{24}{2} = 0 \\ δ_8(a_1 + 1) \| = 0 \\ d_1(a_1) \| = δ_6(μ_2(a_1)) + δ_7(a_1) + δ_8(a_1) = 1 709 704 + 0 + 0 = 1 709 704 \\ d_1(a_1 + 1) \| = 1 710 089 \\ L(a_1) \| = d_1(a_1 + 1) − d_1(a_1) = 1 710 089 − 1 709 704 = 385 \\ δ_9(m_0) \| = \dfloorratio{384 m_0 + 7}{13} = \dfloorratio{384×8 + 7}{13} \\ \| = \dfloorratio{3079}{13} = 236 \\ δ_{10}(a_1) \| = \dmodp{\dfloorratio{L(a_1) + 1}{2}}{3} = \dmodp{\dfloorratio{385 + 1}{2}}{3} \\ \| = \dmodp{\dfloorratio{386}{2}}{3} = \dmodp{193}{3} = 1 \\ δ_{11}(a_1) \| = −\dmodp{\dfloorratio{385 − L(a_1)}{2}}{3} = −\dmodp{\dfloorratio{385 − 385}{2}}{3} = 0 \\ ω_2(m_0) \| = \dfloorratio{m_0 + 4}{12} = \dfloorratio{8 + 4}{12} = \dfloorratio{12}[12] = 1 \\ ω_3(m_0) \| = \dfloorratio{m_0 + 3}{12} = \dfloorratio{8 + 3}{12} = \dfloorratio{11}{12} = 0 \\ δ_{12}(a_1, m_0) \| = δ_9(m_0) + ω_2(m_0) δ_{10}(a_1) + ω_3(m_0) δ_{11}(a_1) \\ \| = 236 + 1×1 + 0×0 = 237 \\ d_2(a_1, m_0) \| = d_1(a_1) − 177 + δ_{12}(a_1, m_0) = 1 709 704 − 177 + 237 = 1 709 764 \\ s \| = d_2(a_1, m_0) + d − 1 = 1 709 764 + 12 − 1 = 1 709 75 \\ J \| = s + 347 998 = 1 709 775 + 347 998 = 2 057 773 \end{align*}

8.2. Van CJDN naar Joodse datum

Van CJDN \( J \) gaan we als volgt naar Joods jaar \( a \), maand \( m \) en dag \( d \):

\begin{align} s \| = J − 347 998 \\ \{ ω_2, δ_1 \} \| = \Div(s, 1447) \\ μ_2 \| = 49 ω_2 + \dfloorratio{23 ω_2 + 25920 δ_1 + 13835}{765 433} \\ \{ α_3, ω_3 \} \| = \Div(19 μ_2 + 366, 235) \\ μ_3 \| = \dfloorratio{ω_3}{19} \\ δ_{14} \| = s − d_2(α_3, μ_3) \end{align}

met \( d_2 \) berekend zoals beschreven in hoofdstuk 14.7.1. Als \( 0 \le δ_{14} \le 28 \) dan

\begin{equation} \{ a_1, m_0, d_0 \} = \{ α_3, μ_3, δ_{14} \} \end{equation}

Anders, als \( δ_{14} = 29 \) dan

\begin{align} μ_5 \| = μ_2 + 1 \\ \{ α_4, ω_4 \} \| = \Div(19 μ_5 + 366, 235) \\ μ_6 \| = \dfloorratio{ω_4}{19} \\ δ_{15} \| = s − d_2(α_4, μ_6) \\ δ_{15} \lt 0 \| ⇒ \{ a_1, m_0, d_0 \} = \{ α_3, μ_3, δ_{14} \} \\ δ_{15} \ge 0 \| ⇒ \{ a_1, m_0, d_0 \} = \{ α_4, μ_6, δ_{15} \} \end{align}

Anders is \( δ_{14} \lt 0 \), en dan

\begin{align} μ_7 \| = μ_2 − 1 \\ \{ a_1, ω_5 \} \| = \Div(19 μ_7 + 366, 235) \\ m_0 \| = \dfloorratio{ω_5}{19} \\ d_0 \| = s − d_2(a_1, m_0) \end{align}

Als we eenmaal \( \{ a_1, m_0, d_0 \} \) gevonden hebben dan volgt nog:

\begin{align} a \| = a_1 + \dfloorratio{m_0 − 6}{7} \\ m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

Voor \( J = 2 057 773\) vinden we

\begin{align*} s \| = J − 347 998 = 2 057 773 − 347 998 = 1 709 775 \\ \{ ω_2, δ_1 \} \| = \Div(s, 1447) = \Div(1 709 775, 1447) = \{ 1181, 868 \} \\ μ_2 \| = 49 ω_2 + \dfloorratio{23 ω_2 + 25920 δ_1 + 13835}{765 433} \\ \| = 49×1181 + \dfloorratio{23×1181 + 25920×868 + 13835}{765 433} \\ \| = 57869 + \dfloorratio{22 539 558}{765 433} = 57869 + 29 = 57898 \\ \{ α_3, ω_3 \} \| = \Div(19 μ_2 + 366, 235) = \Div(19×57898 + 366, 235) \\ \| = \Div(1 100 428, 235) = \{ 4682, 158 \} \\ μ_3 \| = \dfloorratio{ω_3}{19} = \dfloorratio{158}{19} = 8 \\ δ_{14} \| = s − d_2(α_3, μ_3) = 1 709 775 − d_2(4682, 8) \\ \| = 1 709 775 − d_2(4682, 8) = 1 709 775 − 1 709 764 = 11 \end{align*}

We vinden \( 0 \le δ_{14} \le 28 \) dus

\[ \{ a_1, m_0, d_0 \} = \{ α_3, μ_3, δ_{14} \} = \{ 4682, 8, 11 \} \]

Dan

\begin{align*} a \| = a_1 + \dfloorratio{m_0 − 6}{7} = 4682 + \dfloorratio{8 − 6}{7} = 4682 + \dfloorratio{2}{7} = 4682 \\ m \| = m_0 + 1 = 8 + 1 = 9 \\ d \| = d_0 + 1 = 11 + 1 = 12 \end{align*}

dus de gewenste datum in de Joodse kalender is dag 12 van maand 9 (kislev) van jaar 4682: 12 kislev A.M. 4682.

9. De Egyptische Kalender

De oude Egyptenaren hadden een wel heel simpele kalender, zonder schrikkeljaren en met 30 dagen in elke maand behalve dat de laatste maand 5 dagen had. In de kalender volgens de era van Nabonassar was de eerste dag (1 Thoth van jaar 1) gelijk aan 26 februari −746 in de Juliaanse kalender.

9.1. Van Egyptische datum naar CJDN

Het algoritme om van een Egyptische datum (kalenderjaar \( j \), kalendermaand \( m \), kalenderdag \( d \)) om te rekenen naar het CJDN \( J \) is:

\begin{align} d_1 \| = 30 m + d − 31 \\ s \| = 365 a + d_1 \\ J \| = s + 1 448 273 \end{align}

Bijvoorbeeld, welke CJDN komt overeen met dag 7 van maand 5 van jaar 218 in de Egyptische kalender? Dan vinden we

\begin{align*} d_1 \| = 30 m + d − 31 = 30×5 + 7 − 31 = 126 \\ s \| = 365 a + d_1 = 365×218 + 126 = 79696 \\ J \| = s + 1 448 273 = 79696 + 1 448 273 = 1 527 969 \end{align*}

dus het antwoord is CJDN 1 527 969.

9.2. Van CJDN naar Egyptische datum

In omgekeerde richting zijn de berekeningen ook eenvoudig.

\begin{align} s \| = J − 1 448 273 \\ \{ a, d_1 \} \| = \Div(s, 365) \\ \{ m_0, d_0 \} \| = \Div(d_1, 30) \\ m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

Welke datum in de Egyptische kalender komt overeen met CJDN 1 527 969? Dan is

\begin{align*} s \| = J − 1 448 273 = 1 527 969 − 1 448 273 = 79696 \\ \{ a, d_1 \} \| = \Div(s, 365) = \Div(79696, 365) = \{ 218, 126 \} \\ \{ m_0, d_0 \} \| = \Div(d_1, 30) = \Div(126, 30) = \{ 4, 6 \} \\ m \| = m_0 + 1 = 4 + 1 = 5 \\ d \| = d_0 + 1 = 6 + 1 = 7 \end{align*}

dus het is dag 7 van maand 5 van jaar 218.

10. De Mayakalender

10.1. Van Mayakalender naar CJDN

De Maya uit Anahuac (Midden-Amerika) gebruikten drie verschillende kalenders, waarvan er twee (de Tzolkin en de Haab) periodiek waren met vrij korte perioden, en de derde (de Lange Telling) misschien ook wel als periodiek bedoeld was maar die zulke lange perioden heeft dat hij in de praktijk als doorlopend (in plaats van periodiek) kan worden beschouwd.

Verschillende gebieden in Midden-Amerika hadden iets verschillende versies van deze kalenders, met andere namen voor dagen en maanden, andere manieren om jaren aan te geven, en soms telde men dagen vanaf dag 0 in plaats van vanaf dag 1. Hieronder geven we de kalenders van de stad Tikal.

10.1.1. Van de Haab naar CJDN

De Haab heeft een dagnummer en een maand, maar geen jaarnummer. Er zijn 18 maanden van 20 dagen, plus een 19e maand van 5 dagen, en dat is samen 365 dagen, en dat noemen we het Haab-jaar. Er zijn geen schrikkeldagen. De maanden hebben een naam, en de dagen hebben een nummer dat begint bij 0.

Wij schrijven een datum in de Haab als \( \{ h_d, h_m \} \) waarin \( h_d \) het dagnummer is (van 0 tot 19) en \( h_m \) het maandnummer (van 1 tot 19).

Er zit geen jaarnummer in de Haab dus komt een gegeven Haab-datum \( \{ h_d, h_ m \} \) elke 365 dagen weer terug. We moeten daarom extra informatie gebruiken om de goede te kiezen. We kunnen als volgt de laatste CJDN \( J \) vinden die overeenkomt met deze Haab-datum op of voor een bepaalde CJDN \( J_0 \):

\begin{align} H \| = h_d + 20×(h_m − 1) \\ J \| = J_0 − \dmodp{J_0 − H + 65}{365} \end{align}

Wat is de laatste CJDN in het jaar 1965 die overeenkomt met Haab-datum \( \{ 5, 13 \} \)? Dan is \( h_d = 5 \), \( h_m = 13 \), \( J_0 = 2 439 126 \) (de CJDN voor 31 december 1965), dus

\begin{align*} H \| = 5 + 20×(13 − 1) = 245 \\ J \| = J_0 − \dmodp{J_0 − H + 65}{365} \\ \| = 2 439 126 − \dmodp{2 438 946}{365} \\ \| = 2 439 126 − 16 = 2 439 110 \end{align*}

10.1.2. Van de Tzolkin naar CJDN

De Tzolkin heeft een periode van 20 dagen (de venteina) met een naam voor elke dag, en een periode van 13 dagen (de trecena) met een nummer voor elke dag (te beginnen bij 1).

Wij schrijven een datum in de Tzolkin als \( \{ t_t, t_v \} \), waarin \( t_t \) het dagnummer in de trecena is (van 1 tot 13) en \( t_v \) het dagnummer in de venteina (van 1 tot 20).

De trecena en venteina lopen allebei tegelijk op, dus na dag \( \{ 2, 7 \} \) komt dag \( \{ 3, 8 \} \) en dan \( \{ 4, 9 \} \), enzovoort. Omdat 13 en 20 relatief priem zijn komen alle mogelijke combinaties van venteina en trecena voor in deze kalender, dus na 13×20 = 260 dagen herhalen de datums zich weer.

Er zit geen jaarnummer in de Tzolkin dus komt een gegeven Tzolkin-datum elke 260 dagen weer terug. We vinden als volgt de laatste CJDN \( J \) die overeenkomt met Tzolkin-datum \( \{ t_t, t_v \} \) op of voor een bepaalde CJDN \( J_0 \):

\begin{equation} J = J_0 − \dmodp{J_0 − 40 t_t + 39 t_v + 97}{260} \end{equation}

De laatste Tzolkin-datum \( \{ 4, 7 \} \) die gebeurt op of voor 31 december 1965 (= CJDN 2 439 126) is

\begin{align*} J \| = 2 439 126 − \dmodp{2 439 126 − 40×4 + 39×7 + 97}{260} \\ \| = 2 439 126 − \dmodp{2 439 336}{260} \\ \| = 2 439 126 − 16 = 2 439 110 \end{align*}

Voor het aantal dagen \( T \) sinds de laatste \( \{ 1, 1 \} \) geldt

\begin{equation} T = \dmodp{40 t_t + 221 t_v − 1}{260} \end{equation}

Voor CJDN 2 439 110 (met \( \{ t_t, t_v \} = \{ 4, 7 \} \)) vinden we

\begin{align*} T \| = \dmodp{40×4 + 221×7 − 1}{260} \\ \| = \dmodp{1706}{260} = 146 \end{align*}

dus de laatste dag daarvoor die \( \{ 1, 1 \} \) had was CJDN \( J = 2 439 110 − 146 = 2 438 964 \), en dat klopt, want \( t_t = \dmodp{J + 5}{13} + 1 = \dmodp{2 438 969}{13} + 1 = 1 \) en \( t_v = \dmodp{J + 16}{20} + 1 = \dmodp{2 438 980}{20} + 1 = 1 \).

10.1.3. Van Tzolkin en Haab naar CJDN

Soms wordt een datum aangegeven met Tzolkin en Haab. De CJDN \( J \) van de laatste Tzolkin/Haab-datum \( \{ h_d, h_m, t_t, t_v \} \) op of voor CJDN \( J_0 \) is:

\begin{align} H \| = \dmodp{h_d + 20 × (h_m − 1)}{365} \\ T \| = \dmodp{40t_t + 221 t_v − 1}{260} \\ J \| = J_0 − \dmodp{J_0 − 365 T + 364 H − 7600}{18980} \end{align}

De Tzolkin en Haab hebben samen een periode van 18980 dagen, ofwel ongeveer 52 jaar.

Welke CJDN is de laatste voor het einde van 1965 die overeenkomt met \( \{ t_t, t_v, h_d, h_m \} = \{ 4, 7, 5, 13 \} \)? Dan is \( J_0 = 2 439 126 \) en

\begin{align*} H \| = \dmodp{5 + 20×12}{365} = \dmodp{245}{365} = 245 \\ T \| = \dmodp{40×4 + 221×7 − 1}{260} = \dmodp{1706}{260} = 146 \\ J \| = 2 439 126 − \dmodp{2 439 126 − 365×146 + 364×245 − 7600}{18980} \\ \| = 2 439 126 − \dmodp{2 467 416}{18980} \\ \| = 2 439 126 − 16 = 2 439 110 \end{align*}

Pas op! Niet alle mogelijke combinaties van \( \{ h_d, h_m, t_t, t_v \} \) komen voor in de kalender. Je kunt in voorgaande formules elke combinatie invullen, maar er komen alleen nuttige resultaten uit voor combinaties die ook echt in de kalender voorkomen. Dat zijn combinaties waarvoor \( H − T ≡ 4 \pmod{5} \).

In het voorbeeld dat we al steeds gebruiken is \( H = 245 \) en \( T = 146 \), dus \( H − T = 99 ≡ 4 \pmod{5} \), dus deze combinatie komt inderdaad voor in deze kalender.

10.1.4. Van de Lange Telling naar CJDN

De Lange Telling telt dagen en heeft een serie steeds langere perioden. De kleinste is 20 dagen, de volgende is 18 keer zo lang (dus 360 dagen), en daarna is elke volgende periode steeds 20 keer zo lang als de vorige. Het getal voor elke periode begint bij 0. Vaak zijn datums in de Lange Telling gegeven met vijf getallen, maar nog langere perioden zijn bekend, tot het negende getal toe. De langst bekende periode komt overeen met ongeveer 63 miljoen jaar. Hieronder gaan we er van uit dat de Lange Telling vijf getallen bevat, en kan het vijfde getal willekeurig groot worden.

De begindatum 0.0.0.0.0 van de Lange Telling komt waarschijnlijk overeen met CJDN \( J_0 = 584 283 \) (6 september −3113 in de Juliaanse kalender).

Het omrekenen van Lange Telling naar CJDN gaat als volgt:

\begin{equation} \begin{split} J \| = l_1 + 20×(l_2 + 18×(l_3 + 20×(l_4 + 20×l_5))) + J_0 \\ \| = l_1 + 20×l_2 + 360×l_3 + 7200×l_4 + 144 000×l_5 \end{split} \end{equation}

Welke CJDN komt overeen met Lange Telling \( L = 12.17.12.5.7 \)? Dan is

\[ J = 7 + 20×(5 + 18×(12 + 20×(17 + 20×12))) + 584 283 = 2 439 110 \]

10.2. Van CJDN naar Mayakalender

10.2.1. Van CJDN nar de Haab

Een CJDN \( J \) omrekenen naar een Haab-datum \( \{ h_d, h_m \} \) gaat als volgt:

\begin{align} H \| = \dmodp{J + 65}{365} \\ h_m \| = \dfloorratio{H}{20} + 1 \\ h_d \| = \dmodp{H}{20} \end{align}

\( H \) is het aantal dagen sinds het begin van het huidige Haab-jaar (met \( H = 0 \) voor de eerste dag van het Haab-jaar).

Een voorbeeld: Welke Haab-datum komt overeen met 15 december 1965 = CJDN 2 439 110? Dan is \( J = 2 439 110 \) en

\begin{align*} H \| = \dmodp{J + 65}{365} = \dmodp{2 439 175}{365} = 245 \\ h_m \| = \dfloorratio{245}{20} + 1 = 13 \\ h_d \| = \dmodp{245}{20} = 5 \end{align*}

dus die dag is 245 dagen sinds het begin van het huidige Haab-jaar en komt overeen met de 5e dag van de 13e maand, dus \( \{ 5, 13 \} \).

10.2.2. Van CJDN naar de Tzolkin

We rekenen CJDN \( J \) als volgt om naar een Tzolkin-datum \( \{ t_t, t_v \} \):

\begin{align} t_t \| = \dmodp{J + 5}{13} + 1 \label{eq:trecena} \\ t_v \| = \dmodp{J + 16}{20} + 1 \label{eq:venteina} \end{align}

Wat is de Tzolkin-datum die overeenkomt met CJDN 2 439 110? Dan is

\begin{align*} t_t \| = \dmodp{2 439 110 + 5}{13} + 1 = 3 + 1 = 4 \\ t_v \| = \dmodp{2 439 110 + 16}{20} + 1 = 6 + 1 = 7 \end{align*}

dus die datum is \( \{ 4, 7 \} \).

10.2.3. Van CJDN naar de Lange Telling

Het omrekenen van CJDN \( J \) naar Lange Telling \( L ≡ l_5.l_4.l_3.l_2.l_1 \) gaat dan als volgt:

\begin{align} d_4 \| = J − J_0 = J − 584 283 \\ \{ l_5, d_3 \} \| = \Div(d_4, 144 000) \\ \{ l_4, d_2 \} \| = \Div(d_3, 7200) \\ \{ l_3, d_1 \} \| = \Div(d_2, 360) \\ \{ l_2, l_1 \} \| = \Div(d_1, 20) \end{align}

Welke Lange Telling \( L \) komt overeen met CJDN \( J = 2 439 110 \)? Dan is

\begin{align*} d_4 \| = J − J_0 = J − 584 283 = 2 439 110 − 584 283 = 1 854 827 \\ \{ l_5, d_3 \} \| = \Div(d_4, 144 000) = \Div(1 854 827, 144 000) = \{ 12, 126 827 \} \\ \{ l_4, d_2 \} \| = \Div(d_3, 7200) = \Div(126 827, 7200) = \{ 17, 4427 \} \\ \{ l_3, d_1 \} \| = \Div(d_2, 360) = \Div(4427, 360) = \{ 12, 107 \} \\ \{ l_2, l_1 \} \| = \Div(d_1, 20) = \Div(107, 20) = \{ 5, 7 \} \end{align*}

Het antwoord is \( L = 12.17.12.5.7 \).

11. Een maankalender met veel vaste maandlengtes

Ik heb een zongebonden maankalender bedacht waarin bijna alle maanden elk jaar hetzelfde aantal dagen hebben. De kalender volgt de seizoenen met behulp van de cyclus van Meton, die 19 jaar duurt. Elk jaar bevat 12 of 13 maanden. De "kortste" jaren van 12 maanden bevatten 354 dagen. De "korte" jaren van 12 maanden bevatten 355 dagen. De "lange" jaren van 13 maanden hebben allemaal 384 dagen. De jaarlengtes zijn:

jaar maanden dagen type
1 12 354 kortst
2 12 355 kort
3 13 384 lang
4 12 354 kortst
5 12 354 kortst
6 13 384 lang
7 12 355 kort
8 13 384 lang
9 12 354 kortst
10 12 354 kortst
11 13 384 lang
12 12 355 kort
13 12 354 kortst
14 13 384 lang
15 12 354 kortst
16 12 355 kort
17 13 384 lang
18 12 354 kortst
19 13 384 lang

Dit zijn samen 235 maanden (125 lang, 110 kort) en 6940 dagen in de cyclus van 19 jaar.

Alle oneven maanden (behalve de 13e) zijn 30 dagen lang, en alle even maanden zijn 29 dagen lang, behalve dat in korte en lange jaren (van 355 of 384 dagen) de 12e maand 30 dagen heeft in plaats van 29.

354 355 384
maand dagen
1 30 30 30
2 29 29 29
3 30 30 30
4 29 29 29
5 30 30 30
6 29 29 29
7 30 30 30
8 29 29 29
9 30 30 30
10 29 29 29
11 30 30 30
12 29 30 30
13 29

11.1. Van maankalender naar CJDN

Gegeven jaar \( a \), maand \( m \), en dag \( d \) in deze maankalender kan het lopende dagnummer \( s \) als volgt berekend worden:

\begin{align} d_1 \| = \dfloorratio{384 m − 390}{13} + d \\ s \| = 354 a + 30\dfloorratio{7 a + 2}{19} + \dfloorratio{4 a + 18}{19} + d_1 \\ J \| = s + 1 721 019 \end{align}

Voor ons voorbeeld (met \( a = 2033, m = 1, d = 1 \)) vinden we

\begin{align*} d_1 \| = \dfloorratio{384 m − 390}{13} + d = \dfloorratio{384×1 − 390}{13} \\ \| = \dfloorratio{−6}{13} + 1 = −1 + 1 = 0 \\ s \| = 354 a + 30\dfloorratio{7 a + 2}{19} + \dfloorratio{4 a + 18}{19} + d_1 \\ \| = 354×2033 + 30\dfloorratio{7×2033 + 2}{19} + \dfloorratio{4×2033 + 18}{19} + 0 \\ \| = 719 682 + 30\dfloorratio{14233}{19} + \dfloorratio{8150}{19} \\ \| = 719 682 + 30×749 + 428 = 742 580 \\ J \| = s + 1 721 019 = 742 580 + 1 721 019 = 2 463 599 \end{align*}

dus dag 1 van maand 1 van jaar 2033 in de maankalender komt overeen met CJDN 2 463 599, die overeenkomt met 1 januari 2033 in de moderne (Gregoriaanse) kalender.

11.2. Van CJDN naar maankalender

Gegeven CJDN \( J \) zijn jaar \( a \), maand \( m \) en dag \( d \) in deze maankalender te berekenen uit

\begin{align} s \| = J − 1 721 019 \\ α_2 \| = \dfloorratio{19 s + 511}{6940} \\ δ_2 \| = s − 354 α_2 − 30 \dfloorratio{7 α_2 + 2}{19} − \dfloorratio{4 α_2 + 18}{19} \\ a \| = α_2 + \dfloorratio{δ_2}{385} \\ d_1 \| = s − 354 a − 30 \dfloorratio{7 a + 2}{19} − \dfloorratio{4 a + 18}{19} \\ \{ m, ω_3 \} \| = \Div(13 d_1 + 389, 384) \\ d_0 \| = \dfloorratio{ω_3}{13} \\ d \| = d_0 + 1 \end{align}

Welke datum in de maankalender komt overeen met CJDN 2 459 695?

\begin{align*} s \| = J − 1 721 019 = 2 459 695 − 1 721 019 = 738 676 \\ α_2 \| = \dfloorratio{19s + 511}{6940} = \dfloorratio{19×738 676 + 511}{6940} = \dfloorratio{14 035 355}{6940} = 2022 \\ δ_2 \| = s − 354 α_2 − 30 \dfloorratio{7 α_2 + 2}{19} − \dfloorratio{4 α_2 + 18}{19} \\ \| = 738 676 − 354×2022 − 30 \dfloorratio{7×2022 + 2}{19} − \dfloorratio{4×2022 + 18}{19} \\ \| = 738 676 − 715 788 − 30 \dfloorratio{14156}{19} − \dfloorratio{8106}{19} \\ \| = 22888 − 30×745 − 426 = 112 \\ a \| = α_2 + \dfloorratio{δ_2}{385} = 2022 + \dfloorratio{112}{385} = 2022 \\ d_1 \| = s − 354 a − 30 \dfloorratio{7 a + 2}{19} − \dfloorratio{4 a + 18}{19} = 112 \\ \{ m, ω_3 \} \| = \Div(13 d_1 + 389, 384) = \Div(13×112 + 389, 384) = \Div(1845, 384) = \{ 4, 309 \} \\ d \| = \dfloorratio{ω_3}{13} + 1 = \dfloorratio{309}{13} + 1 = 23 + 1 = 24 \end{align*}

dus de gezochte datum is dag 24 van maand 4 van jaar 2022.

12. De Chinese Kalender

De Chinese kalender is een lunisolaire kalender. De datum van het Chinese Nieuwjaar hangt af van de positie van de Zon en de Maan, maar een preciese manier om die posities uit te rekenen is niet vastgelegd. Hieronder beschrijf ik een paar aspecten van de Chinese kalender.

12.1. Het jaar van de aap

In de traditionele Chinese kalender heeft elk jaar een naam uit een kringloop van 10 "hemelse stammen" en een naam uit een kringloop van 12 "aardse takken". Voor elk volgende jaar gaan zowel de hemelse stam als de aardse tak één omhoog. De (onvertaalbare) hemelse stammen zijn 1. jiǎ, 2. yǐ, 3. bǐng, 4. dīng, 5. wù, 6. jǐ, 7. gēng, 8. xīn, 9. rén, 10. guǐ. De aardse takken zijn 1. zǐ (rat), 2. chǒu (os), 3. yín (tijger), 4. mǎo (konijn), 5. chén (draak), 6. sì (slang), 7. wǔ (paard), 8. wèi (geit), 9. shēn (aap), 10. yǒu (haan), 11. xū (hond), 12. hài (varken).

De hemelse stam \( t \) (van 1 tot 10) en aardse tak \( r \) (van 1 tot 12) kun je als volgt berekenen uit het (astronomische) Gregoriaanse jaarnummer \( a \):

\begin{align} t \| = \dmodp{a + 6}{10} + 1 \label{eq:jnaarchinees} \\ r \| = \dmodp{a + 8}{12} + 1 \end{align}

Het nummer \( n \) in de gezamelijke kringloop van 60 jaren is

\begin{equation} n = \dmodp{a + 56}{60} + 1 \end{equation}

Bijvoorbeeld, voor het jaar 2000 uit de Gregoriaanse kalender:

\begin{align*} t \| = \dmodp{2000 + 6}{10} + 1 = 6 + 1 = 7 \\ r \| = \dmodp{2000 + 8}{12} + 1 = 4 + 1 = 5 \\ n \| = \dmodp{2000 + 56}{60} + 1 = 16 + 1 = 17 \end{align*}

dus vroeg in het Gregoriaanse jaar 2000 begon een Chinees jaar van de metalen Draak, van de gēng-tak (gēngchén).

De jaren die een bepaalde hemelse stam \( t \) of een bepaalde aardse tak \( r \) hebben zijn

\begin{align} a \| ≡ 1983 + t \pmod{10} \\ a \| ≡ 1983 + r \pmod{12} \\ a \| ≡ 1983 + n \pmod{60} \end{align}

De jaren die zowel hemelse stam \( t \) als aardse tak \( r \) hebben zijn

\begin{equation} a ≡ 1983 + 25 r − 24 t \pmod{60} \label{eq:chineesnaarj} \end{equation}

Bijvoorbeeld, voor \( t = 7 \) vinden we

\[ a ≡ 1983 + 7 = 1990 \pmod{10} \]

dus 1990 en elke 10 jaar vroeger of later, dus ook 2000.

Voor \( r = 5 \) vinden we

\[ a ≡ 1983 + 5 = 1988 \pmod{12} \]

dus 1988 en elke 12 jaar vroeger of later, dus ook 2000.

Voor \( t = 7 \) en \( r = 5 \) vinden we

\[ a ≡ 1983 + 25×5 − 24×7 = 1940 \pmod{60} \]

dus 1940 en elke 60 jaar vroeger of later, dus ook 2000.

Pas op! Niet elke combinatie van \( t \) en \( r \) is geldig! Alleen combinaties waarvoor \( t ≡ r \pmod{2} \) zijn geldig, dus het verschil tussen \( t \) en \( r \) moet even zijn.

Bijvoorbeeld, de combinatie \( t = 3 \) en \( r = 6 \) komt niet voor in deze kalender, dus is niet geldig. Als je die combinatie in vergelijking \ref{eq:chineesnaarj} invult dan krijg je een antwoord dat er redelijk uitziet: \( a ≡ 1983 + 25×6 − 24×3 = 2061 \pmod{60} \), maar als je \( a = 2061 \) in formules \ref{eq:jnaarchinees}ff stopt dan krijg je \( t = 8 \) en \( r = 6 \), een andere (wel geldige) combinatie dan waarmee je begon.

12.2. HYSN

Het HYSN-systeem is een speciale manier om een nummer aan een jaar te geven. De omrekening van een Gregoriaans (of Juliaans proleptisch) jaartal naar een HYSN-jaartal gaat als volgt:

\begin{align} \{ ω_1, a_1 \} \| = \Div(a + 67016, 10800) \\ \{ ω_2, a_2 \} \| = \Div(a_1, 360) \\ \{ ω_3, a_3 \} \| = \Div(a_2, 30) \\ H \| = ω_1 + 1 \\ Y \| = ω_2 + 1 \\ S \| = ω_3 + 1 \\ N \| = a_3 + 1 \end{align}

Bijvoorbeeld, welk HYSN-jaartal komt ongeveer overeen met ons jaar 2016? Dan is

\begin{align*} \{ ω_1, a_1 \} \| = \Div(a + 67016, 10800) = \Div(2016 + 67016, 10800) \\ \| = \Div(69032, 10800) = \{ 6, 4232 \} \\ \{ ω_2, a_2 \} \| = \Div(a_1, 360) = \Div(4232, 360) = \{ 11, 272 \} \\ \{ ω_3, a_3 \} \| = \Div(a_2, 30) = \Div(272, 30) = \{ 9, 2 \} \\ H \| = ω_1 + 1 = 6 + 1 = 7 \\ Y \| = ω_2 + 1 = 11 + 1 = 12 \\ S \| = ω_3 + 1 = 9 + 1 = 10 \\ N \| = a_3 + 1 = 2 + 1 = 3 \end{align*}

dus het HYSN-jaartal is 0712-1003.

De andere kant op is eenvoudiger. Gegeven \( H \), \( Y \), \( S \) en \( N \) is het Gregoriaanse jaartal \( a \) gelijk aan

\begin{equation} a = H×10800 + Y×360 + S×30 + N − 78207 \end{equation}

Bijvoorbeeld, HYSN 0712-1003 betekent

\begin{align*} H \| = 7 \\ Y \| = 12 \\ S \| = 10 \\ N \| = 3 \\ a \| = 7×10800 + 12×360 + 10×30 + 3 − 78207 \\ \| = 75600 + 4320 + 300 + 3 − 78207 = 2016 \end{align*}

13. Afleiding van de algemene algoritmen

We kunnen veel kalenderformules afleiden door rechte lijnen te vinden die met afronding de juiste resultaten geven.

13.1. Notatie

We gebruiken speciale notatie voor sommige zaken.

13.2. Nuttige Relaties

Hier zijn een paar nuttige relaties tussen de functies die hierboven gedefinieerd werden. Voor allemaal geldt \( p \gt 0 \). Hun afleidingen staan verderop.

  1. \begin{equation} \dceilp{−x}{p} = −\dfloorp{x}{p} \eqvide{eq:ceil(−x)} \end{equation}
  2. \begin{equation} \ddomp{−x}{p} = \dmodp{x}{p} \eqvide{eq:dom(−x)} \end{equation}
  3. \begin{equation} \dfloorp{−x}{p} = −\dceilp{x}{p} \eqvide{eq:floor(−x)} \end{equation}
  4. \begin{equation} \dmodp{−x}{p} = \ddomp{x}{p} \eqvide{eq:mod(−x)} \end{equation}
  5. \begin{equation} \dceilp{−x}{p} = −\dceilp{x}{p} + p\iverson{x ⊥ p} \eqvide{eq:ceil(−x)i} \end{equation}
  6. \begin{equation} \ddomp{−x}{p} = −\ddomp{x}{p} + p\iverson{x ⊥ p} \eqvide{eq:dom(−x)i} \end{equation}
  7. \begin{equation} \dfloorp{−x}{p} = −\dfloorp{x}{p} − p\iverson{x ⊥ p} \eqvide{eq:floor(−x)i} \end{equation}
  8. \begin{equation} \dmodp{−x}{p} = −\dmodp{x}{p} + p\iverson{x ⊥ p} \eqvide{eq:mod(−x)i} \end{equation}
  9. \begin{equation} \dceilp{x}{p} − \dfloorp{x}{p} = p\iverson{x ⊥ p} \eqvide{eq:ceil(x)−floor(x)i} \end{equation}
  10. \begin{equation} \dmodp{x}{p} + \ddomp{x}{p} = p\iverson{x ⊥ p} \eqvide{eq:mod(x)+dom(x)i} \end{equation}
  11. \begin{equation} \dceilp{\dceilp{x}{p}}{p} = \dceilp{x}{p} \eqvide{eq:ceil(ceil(x))} \end{equation}
  12. \begin{equation} \dceilp{−\dceilp{x}{p}}{p} = −\dceilp{x}{p} \eqvide{eq:ceil(−ceil(x))} \end{equation}
  13. \begin{equation} \dceilp{\dfloorp{x}{p}}{p} = \dfloorp{x}{p} \eqvide{eq:ceil(floor(x))} \end{equation}
  14. \begin{equation} \dceilp{−\dfloorp{x}{p}}{p} = −\dfloorp{x}{p} \eqvide{eq:ceil(−floor(x))} \end{equation}
  15. \begin{equation} \ddomp{\ddomp{x}{p}}{p} = \ddomp{−x}{p} \eqvide{eq:dom(dom(x))} \end{equation}
  16. \begin{equation} \ddomp{−\ddomp{x}{p}}{p} = \ddomp{−x}{p} \eqvide{eq:dom(−dom(x))} \end{equation}
  17. \begin{equation} \ddomp{\dmodp{x}{p}}{p} = \ddomp{x}{p} \eqvide{eq:dom(mod(x))} \end{equation}
  18. \begin{equation} \ddomp{−\dmodp{x}{p}}{p} = \ddomp{−x}{p} \eqvide{eq:dom(−mod(x))} \end{equation}
  19. \begin{equation} \dfloorp{\dceilp{x}{p}}{p} = \dceilp{x}{p} \eqvide{eq:floor(ceil(x))} \end{equation}
  20. \begin{equation} \dfloorp{−\dceilp{x}{p}}{p} = −\dceilp{x}{p} \eqvide{eq:floor(−ceil(x))} \end{equation}
  21. \begin{equation} \dfloorp{\dfloorp{x}{p}}{p} = \dfloorp{x}{p} \eqvide{eq:floor(floor(x))} \end{equation}
  22. \begin{equation} \dfloorp{−\dfloorp{x}{p}}{p} = −\dfloorp{x}{p} \eqvide{eq:floor(−floor(x))} \end{equation}
  23. \begin{equation} \dmodp{\ddomp{x}{p}}{p} = \dmodp{−x}{p} \eqvide{eq:mod(dom(x))} \end{equation}
  24. \begin{equation} \dmodp{−\ddomp{x}{p}}{p} = \dmodp{−x}{p} \eqvide{eq:mod(−dom(x))} \end{equation}
  25. \begin{equation} \dmodp{\dmodp{x}{p}}{p} = \dmodp{x}{p} \eqvide{eq:mod(mod(x))} \end{equation}
  26. \begin{equation} \dmodp{−\dmodp{x}{p}}{p} = \dmodp{−x}{p} \eqvide{eq:mod(−mod)} \end{equation}
  27. \begin{equation} \ddomp{x + y}{p} = \ddomp{−\ddomp{x}{p} − \ddomp{y}{p}}{p} \eqvide{eq:dom(x+y)} \end{equation}
  28. \begin{equation} \ddomp{x − y}{p} = \ddomp{\ddomp{y}{p} − \ddomp{x}{p}}{p} \eqvide{eq:dom(x−y)} \end{equation}
  29. \begin{equation} \dceilp{−\ddomp{x}{p} − \ddomp{y}{p}}{p} = −p\iverson{\ddomp{x}{p} + \ddomp{y}{p} \ge p} \eqvide{eq:ceil(−dom(x)−dom(y))i} \end{equation}
  30. \begin{equation} \dceilp{−\ddomp{x}{p} + \ddomp{y}{p}}{p} = p\iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \eqvide{eq:ceil(dom(x)−dom(y)i} \end{equation}
  31. \begin{equation} \dceilp{x + y}{p} = \dceilp{x}{p} + \dceilp{y}{p} − p\iverson{\ddomp{x}{p} + \ddomp{y}{p} \ge p} \eqvide{eq:ceil(x+y)i} \end{equation}
  32. \begin{equation} \dceilp{x − y}{p} = \dceilp{x}{p} − \dceilp{y}{p} + p\iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \eqvide{eq:ceil(x−y)i} \end{equation}
  33. \begin{equation} \ddomp{x + y}{p} = \ddomp{x}{p} + \ddomp{y}{p} − p\iverson{\ddomp{x}{p} + \ddomp{y}{p} \ge p} \eqvide{eq:dom(x+y)i} \end{equation}
  34. \begin{equation} \ddomp{x − y}{p} = \ddomp{x}{p} − \ddomp{y}{p} + p\iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \eqvide{eq:dom(x−y)i} \end{equation}
  35. \begin{equation} \dfloorp{\ddomp{x}{p} + \ddomp{y}{p}}{p} = p\iverson{\ddomp{x}{p} + \ddomp{y}{p} ≥ p} \eqvide{eq:floor(dom(x)+dom(y)i} \end{equation}
  36. \begin{equation} \dfloorp{\ddomp{x}{p} − \ddomp{y}{p}}{p} = −p \iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \eqvide{eq:floor(dom(x)−dom(y)i} \end{equation}
  37. \begin{equation} \dfloorp{\dmodp{x}{p} + \dmodp{y}{p}}{p} = p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \eqvide{eq:floor(mod(x)+mod(y)i} \end{equation}
  38. \begin{equation} \dfloorp{\dmodp{x}{p} − \dmodp{y}{p}}{p} = −p \iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \eqvide{eq:floor(mod(x)−mod(y)i} \end{equation}
  39. \begin{equation} \dfloorp{x + y}{p} = \dfloorp{x}{p} + \dfloorp{y}{p} + p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \eqvide{eq:floor(x+y)i} \end{equation}
  40. \begin{equation} \dfloorp{x − y}{p} = \dfloorp{x}{p} − \dfloorp{y}{p} − p\iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \eqvide{eq:floor(x−y)i} \end{equation}
  41. \begin{equation} \dmodp{\dmodp{x}{p} + \dmodp{y}{p}}{p} = \dmodp{x}{p} + \dmodp{y}{p} − p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \eqvide{eq:mod(mod(x)+mod(y)i} \end{equation}
  42. \begin{equation} \dmodp{\dmodp{x}{p} − \dmodp{y}{p}}{p} = \dmodp{x}{p} − \dmodp{y}{p} + p\iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \eqvide{eq:mod(mod(x)−mod(y)i} \end{equation}
  43. \begin{equation} \dmodp{x + y}{p} = \dmodp{x}{p} + \dmodp{y}{p} − p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \eqvide{eq:mod(x+y)i} \end{equation}
  44. \begin{equation} \dmodp{x − y}{p} = \dmodp{x}{p} − \dmodp{y}{p} + p\iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \eqvide{eq:mod(x−y)i} \end{equation}
  45. \begin{equation} \dparen{\sum_i n_i\dmodp{x_i}{p}} − \dmodp{\sum_i n_ix_i}{p} = \dfloorp{\sum_i n_i\dmodp{x_i}{p}}{p} \qquad (n_i ∥ 1, p \gt 0, \beqvide{eq:sumnmod(x)−mod(sumnx)}) \end{equation}
  46. \begin{equation} n\dmodp{x}{p} − \dmodp{nx}{p} = \dfloorp{n\dmodp{x}{p}}{p} \qquad (n ∥ 1) \eqvide{eq:nmod(x)−mod(nx)} \end{equation}
  47. \begin{equation} \dfloorp{\sum_i n_ix_i}{p} − \dparen{\sum_i n_i\dfloorp{x_i}{p}} = \dfloorp{\sum_i n_i\dmodp{x_i}{p}}{p} \qquad (n_i ∥ 1, \beqvide{eq:floor(sumnx)−sumnfloor(x)}) \end{equation}
  48. \begin{equation} \dfloorp{nx}{p} − n\dfloorp{x}{p} = \dfloorp{n\dmodp{x}{p}}{p} \qquad (n ∥ 1) \eqvide{eq:floor(nx)−nfloor(x)} \end{equation}
  49. \begin{equation} \dfloor{\dmodp{x}{p}} = \dmodp{\dfloor{x}}{p} \qquad (p ∥ 1) \eqvide{eq:floor(mod(x))} \end{equation}
  50. \begin{equation} \dceilp{x}{p} = \dfloorp{x − 1}{p} + p \qquad (x ∥ 1, p ∥ 1, p \gt 1) \eqvide{eq:ceil2floor(x−1)} \end{equation}
  51. \begin{equation} \ddomp{x}{p} = p − 1 − \dmodp{x − 1}{p} \qquad (x ∥ 1, p ∥ 1, p \gt 1) \eqvide{eq:dom2mod(x−1)} \end{equation}

13.3. Bewijzen voor de nuttige relaties

In de volgende formules betekent het symbool \( ∵ \) "omdat".

  1. \begin{equation} \dceilp{−x}{p} = −\dfloorp{x}{p} \qquad (p \gt 0) \label{eq:ceil(−x)} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dceilp{−4.2}{2} \| = \| −\dfloorp{4.2}{2} \\ −4 \| = \| −4 \end{eqnarray*}

    Voorbeeld met \( x = 4, p = 2 \):

    \begin{eqnarray*} \dceilp{−4}{2} \| = \| −\dfloorp{4}{2} \\ −4 \| = \| −4 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dceilp{−x}{p} \| = \| −\dceilp{x}{p} + p\iverson{x ⊥ p} \| \eqvide{eq:ceil(−x)i} \notag \\ \| = \| −\dfloorp{x}{p} \| \eqvide{eq:ceil(x)−floor(x)i} \end{eqnarray}


  2. \begin{equation} \ddomp{−x}{p} = \dmodp{x}{p} \qquad (p \gt 0) \label{eq:dom(−x)} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \ddomp{−4.2}{2} \| = \| \dmodp{4.2}{2} \\ 0.2 \| = \| 0.2 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{−x}{p} \| = \| \dceilp{−x}{p} − (−x) \| \eqvide{eq:ddomp} \notag \\ \| = \| −\dfloorp{x}{p} + x \| \eqvide{eq:ceil(−x)} \notag \\ \| = \| −\left( x − \dmodp{x}{p} \right) + x \| \eqvide{eq:ddomp} \notag \\ \| = \| \dmodp{x}{p} \end{eqnarray}


  3. \begin{equation} \dfloorp{−x}{p} = −\dceilp{x}{p} \qquad (p \gt 0) \label{eq:floor(−x)} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dfloorp{−4.2}{2} \| = \| −\dceilp{4.2}{2} \\ −6 \| = \| −6 \end{eqnarray*}

    Voorbeeld met \( x = 4, p = 2 \):

    \begin{eqnarray*} \dfloorp{−4}{2} \| = \| −\dceilp{4}{2} \\ −4 \| = \| −4 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dfloorp{−x}{p} \| = \| −\dfloorp{x}{p} − p\iverson{x ⊥ p} \| \eqvide{eq:floor(−x)i} \notag \\ \| = \| −\dceilp{x}{p} \| \eqvide{eq:ceil(x)−floor(x)i} \end{eqnarray}


  4. \begin{equation} \dmodp{−x}{p} = \ddomp{x}{p} \qquad (p \gt 0) \label{eq:mod(−x)} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dmodp{−4.2}{2} \| = \| \ddomp{4.2}{2} \\ 1.8 \| = \| 1.8 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dmodp{−x}{p} \| = \| −x − \dfloorp{−x}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| −x + \dceilp{x}{p} \| \eqvide{eq:floor(−x)} \notag \\ \| = \| −x + x + \ddomp{x}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \ddomp{x}{p} \end{eqnarray}


  5. \begin{equation} \dceilp{−x}{p} = −\dceilp{x}{p} + p\iverson{x ⊥ p} \qquad (p \gt 0) \label{eq:ceil(−x)i} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dceilp{−4.2}{2} \| = \| −\dceilp{4.2}{2} + 2×\iverson{4.2 ⊥ 2} \\ −4 \| = \| −6 + 2×1 \\ −4 \| = \| −4 \end{eqnarray*}

    Voorbeeld met \( x = 4, p = 2 \):

    \begin{eqnarray*} \dceilp{−4}{2} \| = \| −\dceilp{4}{2} + 2×\iverson{4 ⊥ 2} \\ −4 \| = \| −4 + 2×0 \\ −4 \| = \| −4 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dceilp{−x}{p} \| = \| \dceilp{−\left( \dceilp{x}{p} − \ddomp{x}{p} \right)}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \dceilp{−\dceilp{x}{p} + \ddomp{x}{p}}{p} \notag \\ \| = \| −\dceilp{x}{p} + \dceilp{−\ddomp{x}{p}}{p} \| ∵ \dceilp{x}{p} ∥ p \end{eqnarray}

    Als \( x ∥ p \) dan \( \ddomp{x}{p} = \dceilp{−\ddomp{x}{p}}{p} = \iverson{x ⊥ p} = 0 \) dus \( \dceilp{−x}{p} = −\dceilp{x}{p} + p\iverson{x ⊥ p} \).

    Als \( x ⊥ p \) dan \( 0 \lt \ddomp{x}{p} \lt p \) dus \( −p \lt −\ddomp{x}{p} \lt 0 \) dus \( \dceilp{−\ddomp{x}{p}}{p} = p \) dus weer \( \dceilp{−x}{p} = −\dceilp{x}{p} + p\iverson{x ⊥ p} \).


  6. \begin{equation} \ddomp{−x}{p} = −\ddomp{x}{p} + p\iverson{x ⊥ p} \qquad (p \gt 0) \label{eq:dom(−x)i} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \ddomp{−4.2}{2} \| = \| −\ddomp{4.2}{2} + 2×\iverson{4.2 ⊥ 2} \\ 0.2 \| = \| −1.8 + 2×1 \\ 0.2 \| = \| 0.2 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{−x}{p} \| = \| \dmodp{x}{p} \| \eqvide{eq:dom(−x)i} \notag \\ \| = \| −\ddomp{x}{p} + p\iverson{x ⊥ p} \| \eqvide{eq:mod(x)+dom(x)i} \end{eqnarray}


  7. \begin{equation} \dfloorp{−x}{p} = −\dfloorp{x}{p} − p\iverson{x ⊥ p} \qquad (p \gt 0) \label{eq:floor(−x)i} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dfloorp{−4.2}{2} \| = \| −\dfloorp{4.2}{2} − 2×\iverson{4.2 ⊥ 2} \\ −6 \| = \| −4 − 2×1 \\ −6 \| = \| −6 \end{eqnarray*}

    Voorbeeld met \( x = 4, p = 2 \):

    \begin{eqnarray*} \dfloorp{−4}{2} \| = \| −\dfloorp{4}{2} − 2×\iverson{4 ⊥ 2} \\ −4 \| = \| −4 − 2×0 \\ −4 \| = \| −4 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dfloorp{−x}{p} \| = \| \dfloorp{−\left( \dfloorp{x}{p} + \dmodp{x}{p} \right)}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| \dfloorp{−\dfloorp{x}{p} − \dmodp{x}{p}}{p} \notag \\ \| = \| −\dfloorp{x}{p} + \dfloorp{−\dmodp{x}{p}}{p} \| ∵ \dfloorp{x}{p} ∥ p \end{eqnarray}

    Als \( x ∥ p \) dan \( \dmodp{x}{p} = \dfloorp{−\dmodp{x}{p}}{p} = \iverson{x ⊥ p} = 0 \) dus \( \dfloorp{−x}{p} = −\dfloorp{x}{p} − p\iverson{x ⊥ p} \).

    Als \( x ⊥ p \) dan \( 0 \lt \dmodp{x}{p} \lt p \) dus \( −p \lt −\dmodp{x}{p} \lt 0 \) dus \( \dfloorp{−\dmodp{x}{p}}{p} = −p \) dus weer \( \dfloorp{−x}{p} = −\dfloorp{x}{p} − p\iverson{x ⊥ p} \).


  8. \begin{equation} \dmodp{−x}{p} = −\dmodp{x}{p} + p\iverson{x ⊥ p} \qquad (p \gt 0) \label{eq:mod(−x)i} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dmodp{−4.2}{2} \| = \| −\dmodp{4.2}{2} + 2×\iverson{4.2 ⊥ 2} \\ 1.8 \| = \| −0.2 + 2×1 \\ 1.8 \| = \| 1.8 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dmodp{−x}{p} \| = \| \ddomp{x}{p} \| \eqvide{eq:mod(−x)i} \notag \\ \| = \| −\dmodp{x}{p} + p\iverson{x ⊥ p} \| \eqvide{eq:mod(x)+dom(x)i} \end{eqnarray}


  9. \begin{equation} \dceilp{x}{p} − \dfloorp{x}{p} = p\iverson{x ⊥ p} \label{eq:ceil(x)−floor(x)i} \qquad (p \gt 0) \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dceilp{4.2}{2} − \dfloorp{4.2}{2} \| = \| 2×\iverson{4.2 ⊥ 2} \\ 6 − 4 \| = \| 2×1 \\ 2 \| = \| 2 \end{eqnarray*}

    Voorbeeld met \( x = 4, p = 2 \):

    \begin{eqnarray*} \dceilp{4}{2} − \dfloorp{4}{2} \| = \| 2×\iverson{4 ⊥ 2} \\ 4 − 4 \| = \| 2×0 \\ 0 \| = \| 0 \end{eqnarray*}

    Bewijs: Als \( x ∥ p \) dan \( \dfloorp{x}{p} = \dceilp{x}{p} = x \) dus hun verschil is 0. Als \( x ⊥ p \) dan is \( \dceilp{x}{p} \) het veelvoud van \( p \) net groter dan \( x \) en \( \dfloorp{x}{p} \) is het veelvoud van \( p \) net kleiner dan \( x \), dus hun verschil is \( p \).


  10. \begin{equation} \dmodp{x}{p} + \ddomp{x}{p} = p\iverson{x ⊥ p} \qquad (p \gt 0) \label{eq:mod(x)+dom(x)i} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dmodp{4.2}{2} + \ddomp{4.2}{2} \| = \| 2×\iverson{4.2 ⊥ 2} \\ 0.2 + 1.8 \| = \| 2×1 \\ 2 \| = \| 2 \end{eqnarray*}

    Voorbeeld met \( x = 4, p = 2 \):

    \begin{eqnarray*} \dmodp{4}{2} + \ddomp{4}{2} \| = \| 2×\iverson{4 ⊥ 2} \\ 0 + 0 \| = \| 2×0 \\ 0 \| = \| 0 \end{eqnarray*}

    Bewijs: Als \( x ∥ p \) dan \( \dmodp{x}{p} = \ddomp{x}{p} = 0 \) dus hun som is 0. Als \( x ⊥ p \) dan is \( \dmodp{x}{p} \) de afstand tot het dichtstbijzijnde kleinere veelvoud van \( p \), en \( \ddomp{x}{p} \) is the afstand tot het dichtstbijzijnde hogere veelvoud van \( p \), dus hun som is \( p \).


  11. \begin{equation} \dceilp{\dceilp{x}{p}}{p} = \dceilp{x}{p} \qquad (p \gt 0) \label{eq:ceil(ceil(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dceilp{\dceilp{4.2}{2}}{2} \| = \| \dceilp{4.2}{2} \\ \dceilp{6}{2} \| = \| 6 \\ 6 \| = \| 6 \end{eqnarray*}

    Bewijs: \( \dceilp{x}{p} ∥ p \), dus daarop \( \dceilp{•}{p} \) toepassen verandert de waarde niet.


  12. \begin{equation} \dceilp{−\dceilp{x}{p}}{p} = −\dceilp{x}{p} \qquad (p \gt 0) \label{eq:ceil(−ceil(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dceilp{−\dceilp{4.2}{2}}{2} \| = \| −\dceilp{4.2}{2} \\ \dceilp{−6}{2} \| = \| −6 \\ −6 \| = \| −6 \end{eqnarray*}

    Bewijs: \( −\dceilp{x}{p} ∥ p \), dus daarop \( \dceilp{•}{p} \) toepassen verandert de waarde niet.


  13. \begin{equation} \dceilp{\dfloorp{x}{p}}{p} = \dfloorp{x}{p} \qquad (p \gt 0) \label{eq:ceil(floor(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dceilp{\dfloorp{4.2}{2}}{2} \| = \| \dfloorp{4.2}{2} \\ \dceilp{4}{2} \| = \| 4 \\ 4 \| = \| 4 \end{eqnarray*}

    Bewijs: \( \dfloorp{x}{p} ∥ p \), dus daarop \( \dfloorp{•}{p} \) toepassen verandert de waarde niet.


  14. \begin{equation} \dceilp{−\dfloorp{x}{p}}{p} = −\dfloorp{x}{p} \qquad (p \gt 0) \label{eq:ceil(−floor(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dceilp{−\dfloorp{4.2}{2}}{2} \| = \| −\dfloorp{4.2}{2} \\ \dceilp{−4}{2} \| = \| −4 \\ −4 \| = \| −4 \end{eqnarray*}

    Bewijs: \( −\dfloorp{x}{p} ∥ p \), dus \( \dceilp{•}{p} \) erop toepassen verandert de waarde niet.


  15. \begin{equation} \ddomp{\ddomp{x}{p}}{p} = \ddomp{−x}{p} \qquad (p \gt 0) \label{eq:dom(dom(x))}\end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \ddomp{\ddomp{4.2}{2}}{2} \| = \| \ddomp{−4.2}{2} \\ \ddomp{1.8}{2} \| = \| 0.2 \\ 0.2 \| = \| 0.2 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{\ddomp{x}{p}}{p} \| = \| \ddomp{\dceilp{x}{p} − x}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \ddomp{−x}{p} \| ∵ \dceilp{x}{p} ∥ p \end{eqnarray}


  16. \begin{equation} \ddomp{−\ddomp{x}{p}}{p} = \ddomp{−x}{p} \qquad (p \gt 0) \label{eq:dom(−dom(x))}\end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \ddomp{\ddomp{4.2}{2}}{2} \| = \| \ddomp{−4.2}{2} \\ \ddomp{1.8}{2} \| = \| 0.2 \\ 0.2 \| = \| 0.2 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{\ddomp{x}{p}}{p} \| = \| \ddomp{\dceilp{x}{p} − x}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \ddomp{−x}{p} \| ∵ \dceilp{x}{p} ∥ p \end{eqnarray}


  17. \begin{equation} \ddomp{\dmodp{x}{p}}{p} = \ddomp{x}{p} \qquad (p \gt 0) \label{eq:dom(mod(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \ddomp{\dmodp{4.2}{2}}{2} \| = \| \ddomp{4.2}{2} \\ \ddomp{0.2}{2} \| = \| 1.8 \\ 1.8 \| = \| 1.8 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{\dmodp{x}{p}}{p} \| = \| \ddomp{x − \dfloorp{x}{p}}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| \ddomp{x}{p} \| ∵ \dfloorp{x}{p} ∥ p \end{eqnarray}


  18. \begin{equation} \ddomp{−\dmodp{x}{p}}{p} = \ddomp{−x}{p} \qquad (p \gt 0) \label{eq:dom(−mod(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \ddomp{−\dmodp{4.2}{2}}{2} \| = \| \ddomp{−4.2}{2} \\ \ddomp{−0.2}{2} \| = \| 0.2 \\ 0.2 \| = \| 0.2 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{−\dmodp{x}{p}}{p} \| = \| \ddomp{−\dparen{x − \dfloorp{x}{p}}}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| \ddomp{−x}{p} \| ∵ \dfloorp{x}{p} ∥ p \end{eqnarray}


  19. \begin{equation} \dfloorp{\dceilp{x}{p}}{p} = \dceilp{x}{p} \qquad (p \gt 0) \label{eq:floor(ceil(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dfloorp{\dceilp{4.2}{2}}{2} \| = \| \dceilp{4.2}{2} \\ \dfloorp{6}{2} \| = \| 6 \\ 6 \| = \| 6 \end{eqnarray*}

    Bewijs: \( \dceilp{x}{p} ∥ p \), dus daarop \( \dfloorp{•}{p} \) toepassen verandert de waarde niet.


  20. \begin{equation} \dfloorp{−\dceilp{x}{p}}{p} = −\dceilp{x}{p} \qquad (p \gt 0) \label{eq:floor(−ceil(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dfloorp{−\dceilp{4.2}{2}}{2} \| = \| −\dceilp{4.2}{2} \\ \dfloorp{−6}{2} \| = \| −6 \\ −6 \| = \| − 6 \end{eqnarray*}

    Bewijs: \( −\dceilp{x}{p} ∥ p \), dus daarop \( \dfloorp{•}{p} \) toepassen verandert de waarde niet.


  21. \begin{equation} \dfloorp{\dfloorp{x}{p}}{p} = \dfloorp{x}{p} \qquad (p \gt 0) \label{eq:floor(floor(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dfloorp{\dfloorp{4.2}{2}}{2} \| = \| \dfloorp{4.2}{2} \\ \dfloorp{4}{2} \| = \| 4 \\ 4 \| = \| 4 \end{eqnarray*}

    Bewijs: \( \dfloorp{x}{p} ∥ p \), dus daarop \( \dceilp{•}{p} \) toepassen verandert de waarde niet.


  22. \begin{equation} \dfloorp{−\dfloorp{x}{p}}{p} = −\dfloorp{x}{p} \qquad (p \gt 0) \label{eq:floor(−floor(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dfloorp{−\dfloorp{4.2}{2}}{2} \| = \| −\dfloorp{4.2}{2} \\ \dfloorp{−4}{2} \| = \| −4 \\ −4 \| = \| −4 \end{eqnarray*}

    Bewijs: \( −\dfloorp{x}{p} ∥ p \), dus \( \dfloorp{•}{p} \) erop toepassen verandert de waarde niet.


  23. \begin{equation} \dmodp{\ddomp{x}{p}}{p} = \dmodp{−x}{p} \qquad (p \gt 0) \label{eq:mod(dom(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dmodp{\ddomp{4.2}{2}}{2} \| = \| \dmodp{−4.2}{2} \\ \dmodp{1.8}{2} \| = \| 1.8 \\ 1.8 \| = \| 1.8 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dmodp{\ddomp{x}{p}}{p} \| = \| \dmodp{\dceilp{x}{p} − x}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \dmodp{−x}{p} \| ∵ \dceilp{x}{p} ∥ p \end{eqnarray}


  24. \begin{equation} \dmodp{−\ddomp{x}{p}}{p} = \dmodp{−x}{p} \qquad (p \gt 0) \label{eq:mod(−dom(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dmodp{\ddomp{4.2}{2}}{2} \| = \| \dmodp{−4.2}{2} \\ \dmodp{1.8}{2} \| = \| 1.8 \\ 1.8 \| = \| 1.8 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dmodp{\ddomp{x}{p}}{p} \| = \| \dmodp{\dceilp{x}{p} − x}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \dmodp{−x}{p} \| ∵ \dceilp{x}{p} ∥ p \end{eqnarray}


  25. \begin{equation} \dmodp{\dmodp{x}{p}}{p} = \dmodp{x}{p} \qquad (p \gt 0) \label{eq:mod(mod(x))} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dmodp{\dmodp{4.2}{2}}{2} \| = \| \dmodp{4.2}{2} \\ \dmodp{0.2}{2} \| = \| 0.2 \\ 0.2 \| = \| 0.2 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dmodp{\dmodp{x}{p}}{p} \| = \| \dmodp{x − \dfloorp{x}{p}}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| \dmodp{x}{p} \| ∵ \dfloorp{x}{p} ∥ p \end{eqnarray}


  26. \begin{equation}\dmodp{−\dmodp{x}{p}}{p} = \dmodp{−x}{p} \qquad (p \gt 0) \label{eq:mod(−mod)} \end{equation}

    Voorbeeld met \( x = 4.2, p = 2 \):

    \begin{eqnarray*} \dmodp{−\dmodp{4.2}{2}}{2} \| = \| \dmodp{−4.2}{2} \\ \dmodp{−0.2}{2} \| = \| 1.8 \\ 1.8 \| = \| 1.8 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dmodp{−\dmodp{x}{p}}{p} \| = \| \dmodp{−\dparen{x − \dfloorp{x}{p}}}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| \dmodp{−x}{p} \| ∵ \dfloorp{x}{p} ∥ p \end{eqnarray}


  27. \begin{equation} \ddomp{x + y}{p} = \ddomp{−\ddomp{x}{p} − \ddomp{y}{p}}{p} \qquad (p \gt 0) \label{eq:dom(x+y)} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.4, p = 2 \):

    \begin{eqnarray*} \ddomp{4.2 + 1.4}{2} \| = \| \ddomp{−\ddomp{4.2}{2} − \ddomp{1.4}{2}}{2} \\ \ddomp{5.6}{2} \| = \| \ddomp{−1.8 − 0.6}{2} \\ 0.4 \| = \| \ddomp{−2.4}{2} \\ 0.4 \| = \| 0.4 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{x + y}{p} \| = \| \ddomp{\left( \dceilp{x}{p} − \ddomp{x}{p} \right) + \left( \dceilp{y}{p} − \ddomp{y}{p} \right)}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \ddomp{−\ddomp{x}{p} − \ddomp{y}{p}}{p} \| ∵ \dceilp{x}{p} + \dceilp{y}{p} ∥ p \end{eqnarray}


  28. \begin{equation} \ddomp{x − y}{p} = \ddomp{\ddomp{y}{p} − \ddomp{x}{p}}{p} \qquad (p \gt 0) \label{eq:dom(x−y)} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.4, p = 2 \):

    \begin{eqnarray*} \ddomp{4.2 − 1.4}{2} \| = \| \ddomp{\ddomp{1.4}{2} − \ddomp{4.2}{2}}{2} \\ \ddomp{2.8}{2} \| = \| \ddomp{0.6 − 1.8}{2} \\ 1.2 \| = \| \ddomp{−1.2}{2} \\ 1.2 \| = \| 1.2 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{x − y}{p} \| = \| \ddomp{\left( \dceilp{x}{p} − \ddomp{x}{p} \right) − \left( \dceilp{y}{p} − \ddomp{y}{p} \right)}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \ddomp{\ddomp{y}{p} − \ddomp{x}{p}}{p} \| ∵ \dceilp{x}{p} − \dceilp{y}{p} ∥ p \end{eqnarray}


  29. \begin{equation} \dceilp{−\ddomp{x}{p} − \ddomp{y}{p}}{p} = −p\iverson{\ddomp{x}{p} + \ddomp{y}{p} \ge p} \qquad (p \gt 0) \label{eq:ceil(−dom(x)−dom(y))i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.8, p = 2 \):

    \begin{eqnarray*} \dceilp{−\ddomp{4.2}{2} − \ddomp{1.8}{2}}{2} \| = \| −2×\iverson{\ddomp{4.2}{2} + \ddomp{1.8}{2} \ge 2} \\ \dceilp{−1.8 − 0.2}{2} \| = \| −2×\iverson{1.8 + 0.2 \ge 2} \\ \dceilp{−2}{2} \| = \| −2×\iverson{2 \ge 2} \\ −2 \| = \| −2×1 \end{eqnarray*}

    Voorbeeld met \( x = 4.2, y = 1.9, p = 2 \):

    \begin{eqnarray*} \dceilp{−\ddomp{4.2}{2} − \ddomp{1.9}{2}}{2} \| = \| −2×\iverson{\ddomp{4.2}{2} + \ddomp{1.9}{2} \ge 2} \\ \dceilp{−1.8 − 0.1}{2} \| = \| −2×\iverson{1.8 + 0.1 \ge 2} \\ \dceilp{−1.9}{2} \| = \| −2×\iverson{1.9 \ge 2} \\ 0 \| = \| −2×0 \end{eqnarray*}

    Bewijs: \( 0 \le \ddomp{x}{p} + \ddomp{y}{p} \lt 2p \), dus

    \begin{eqnarray} \ddomp{x}{p} + \ddomp{y}{p} \lt p \| ⇒ \| \dceilp{−\ddomp{x}{p} − \ddomp{y}{p}}{p} = 0 \notag \\ \ddomp{x}{p} + \ddomp{y}{p} \ge p \| ⇒ \| \dceilp{−\ddomp{x}{p} − \ddomp{y}{p}}{p} = −p \notag \\ ⇒ \dceilp{−\ddomp{x}{p} − \ddomp{y}{p}}{p} \| = \| −p\iverson{\ddomp{x}{p} + \ddomp{y}{p} \ge p} \end{eqnarray}


  30. \begin{equation} \dceilp{−\ddomp{x}{p} + \ddomp{y}{p}}{p} = p\iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \qquad (p \gt 0) \label{eq:ceil(dom(x)−dom(y)i} \end{equation}

    Voorbeeld met \( x = 5.4, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dceilp{−\ddomp{5.4}{2} + \ddomp{1.4}{2}}{2} \| = \| 2×\iverson{\ddomp{5.4}{2} − \ddomp{1.4}{2} \lt 0} \\ \dceilp{−0.6 + 0.6}{2} \| = \| 2×\iverson{0.6 − 0.6 \lt 0} \\ \dceilp{0}{2} \| = \| 2×\iverson{0 \lt 0} \\ 0 \| = \| 0 \end{eqnarray*}

    Voorbeeld met \( x = 5.5, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dceilp{−\ddomp{5.5}{2} + \ddomp{1.4}{2}}{2} \| = \| 2×\iverson{\ddomp{5.5}{2} − \ddomp{1.4}{2} \lt 0} \\ \dceilp{−0.5 + 0.6}{2} \| = \| 2×\iverson{0.5 − 0.6 \lt 0} \\ \dceilp{0.1}{2} \| = \| 2×\iverson{−0.1 \lt 0} \\ 2 \| = \| 2×1 \end{eqnarray*}

    Bewijs: \( −p \lt −\ddomp{x}{p} + \ddomp{y}{p} \lt p \), dus

    \begin{eqnarray} −\ddomp{x}{p} + \ddomp{y}{p} \le 0 \| ⇒ \| \dceilp{−\ddomp{x}{p} + \ddomp{y}{p}}{p} = 0 \notag \\ −\ddomp{x}{p} + \ddomp{y}{p} \gt 0 \| ⇒ \| \dceilp{−\ddomp{x}{p} + \ddomp{y}{p}}{p} = p \notag \\ ⇒ \dceilp{−\ddomp{x}{p} + \ddomp{y}{p}}{p} \| = \| p\iverson{−\ddomp{x}{p} + \ddomp{y}{p} \gt 0} \notag \\ \| = \| p\iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \end{eqnarray}


  31. \begin{equation} \dceilp{x + y}{p} = \dceilp{x}{p} + \dceilp{y}{p} − p\iverson{\ddomp{x}{p} + \ddomp{y}{p} \ge p} \qquad (p \gt 0) \label{eq:ceil(x+y)i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.9, p = 2 \):

    \begin{eqnarray*} \dceilp{4.2 + 1.9}{2} \| = \| \dceilp{4.2}{2} + \dceilp{1.9}{2} − 2×\iverson{\ddomp{4.2}{2} + \ddomp{1.9}{2} \ge 2} \\ \dceilp{6.1}{2} \| = \| 6 + 2 − 2×\iverson{1.8 + 0.1 \ge 2} \\ 8 \| = \| 6 + 2 − 2×\iverson{1.9 \ge 2} \\ 8 \| = \| 8 − 2×0 \\ 8 \| = \| 8 \end{eqnarray*}

    Voorbeeld met \( x = 4.2, y = 1.8, p = 2 \):

    \begin{eqnarray*} \dceilp{4.2 + 1.8}{2} \| = \| \dceilp{4.2}{2} + \dceilp{1.8}{2} − 2×\iverson{\ddomp{4.2}{2} + \ddomp{1.8}{2} \ge 2} \\ \dceilp{6}{2} \| = \| 6 + 2 − 2×\iverson{1.8 + 0.2 \ge 2} \\ 6 \| = \| 6 + 2 − 2×\iverson{2 \ge 2} \\ 6 \| = \| 8 − 2×1 \\ 6 \| = \| 6 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dceilp{x + y}{p} \| = \| x + y + \ddomp{x + y}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \dceilp{x}{p} − \ddomp{x}{p} + \dceilp{y}{p} − \ddomp{y}{p} + \ddomp{x + y}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \dceilp{x}{p} − \ddomp{x}{p} + \dceilp{y}{p} − \ddomp{y}{p} \notag \\ \| \| + \ddomp{x}{p} + \ddomp{y}{p} − p\iverson{\ddomp{x}{p} + \ddomp{y}{p} \ge p} \| \eqvide{eq:dom(x+y)i} \notag \\ \| = \| \dceilp{x}{p} + \dceilp{y}{p} − p\iverson{\ddomp{x}{p} + \ddomp{y}{p} \ge p} \end{eqnarray}


  32. \begin{equation} \dceilp{x − y}{p} = \dceilp{x}{p} − \dceilp{y}{p} + p\iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \qquad (p \gt 0) \label{eq:ceil(x−y)i} \end{equation}

    Voorbeeld met \( x = 5.4, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dceilp{5.4 − 1.4}{2} \| = \| \dceilp{5.4}{2} − \dceilp{1.4}{2} − 2×\iverson{\ddomp{5.4}{2} − \ddomp{1.4}{2} \lt 0} \\ \dceilp{4}{2} \| = \| 6 − 2 + 2×\iverson{0.6 − 0.6 \lt 0} \\ 4 \| = \| 6 − 2 + 2×\iverson{0 \lt 0} \\ 4 \| = \| 4 + 2×0 \end{eqnarray*}

    Voorbeeld met \( x = 5.5, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dceilp{5.5 − 1.4}{2} \| = \| \dceilp{5.5}{2} − \dceilp{1.4}{2} + 2×\iverson{\ddomp{5.5}{2} − \ddomp{1.4}{2} \lt 0} \\ \dceilp{4.1}{2} \| = \| 6 − 2 + 2×\iverson{0.5 − 0.6 \lt 0} \\ 6 \| = \| 6 − 2 + 2×\iverson{−0.1 \lt 0} \\ 6 \| = \| 4 + 2×1 \\ 6 \| = \| 6 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dceilp{x − y}{p} \| = \| x − y + \ddomp{x − y}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \dceilp{x}{p} − \ddomp{x}{p} − \left( \dceilp{y}{p} − \ddomp{y}{p} \right) + \ddomp{x − y}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \dceilp{x}{p} − \ddomp{x}{p} − \dceilp{y}{p} + \ddomp{y}{p} + \ddomp{x}{p} − \ddomp{y}{p} \notag \\ \| \| + p\iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \| \eqvide{eq:dom(x−y)} \notag \\ \| = \| \dceilp{x}{p} − \dceilp{y}{p} + p\iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \end{eqnarray}


  33. \begin{equation} \ddomp{x + y}{p} = \ddomp{x}{p} + \ddomp{y}{p} − p\iverson{\ddomp{x}{p} + \ddomp{y}{p} \ge p} \qquad (p \gt 0) \label{eq:dom(x+y)i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.8, p = 2 \):

    \begin{eqnarray*} \ddomp{4.2 + 1.8}{2} \| = \| \ddomp{4.2}{2} + \ddomp{1.8}{2} − 2×\iverson{\ddomp{4.2}{2} + \ddomp{1.8}{2} \ge 2} \\ \ddomp{6}{2} \| = \| 1.8 + 0.2 − 2×\iverson{1.8 + 0.2 \ge 2} \\ 0 \| = \| 2 − 2×\iverson{2 \ge 2} \\ 0 \| = \| 2 − 2×1 \\ 0 \| = \| 0 \end{eqnarray*}

    Voorbeeld met \( x = 4.2, y = 1.9, p = 2 \):

    \begin{eqnarray*} \ddomp{4.2 + 1.9}{2} \| = \| \ddomp{4.2}{2} + \ddomp{1.9}{2} − 2×\iverson{\ddomp{4.2}{2} + \ddomp{1.9}{2} \ge 2} \\ \ddomp{6.1}{2} \| = \| 1.8 + 0.1 − 2×\iverson{1.8 + 0.1 \ge 2} \\ 1.9 \| = \| 1.9 − 2×\iverson{1.9 \ge 2} \\ 1.9 \| = \| 1.9 − 2×0 \\ 1.9 \| = \| 1.9 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{x + y}{p} \| = \| \dceilp{x + y}{p} − (x + y) \| \eqvide{eq:ddomp} \notag \\ \| = \| \dceilp{\dceilp{x}{p} − \ddomp{x}{p} + \dceilp{y}{p} − \ddomp{y}{p}}{p} \notag \\ \| \| − \dparen{ \dceilp{x}{p} − \ddomp{x}{p} + \dceilp{y}{p} − \ddomp{y}{p}} \| \eqvide{eq:ddomp} \notag \\ \| = \| \dceilp{x}{p} + \dceilp{y}{p} + \dceilp{−\ddomp{x}{p} − \ddomp{y}{p}}{p} \notag \\ \| \| − \dparen{ \dceilp{x}{p} − \ddomp{x}{p} + \dceilp{y}{p} − \ddomp{y}{p}} \| \qquad ∵ \dceilp{•}{p} ∥ p \notag \\ \| = \| \ddomp{x}{p} + \ddomp{y}{p} + \dceilp{−\ddomp{x}{p} − \ddomp{y}{p}}{p} \notag \\ \| = \| \ddomp{x}{p} + \ddomp{y}{p} − p\iverson{\ddomp{x}{p} + \ddomp{y}{p} \ge p} \| \eqvide{eq:ceil(−dom(x)−dom(y))i} \end{eqnarray}


  34. \begin{equation} \ddomp{x − y}{p} = \ddomp{x}{p} − \ddomp{y}{p} + p\iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \qquad (p \gt 0) \label{eq:dom(x−y)i} \end{equation}

    Voorbeeld met \( x = 5.4, y = 1.4, p = 2 \):

    \begin{eqnarray*} \ddomp{5.4 − 1.4}{2} \| = \| \ddomp{5.4}{2} − \ddomp{1.4}{2} + 2×\iverson{\ddomp{5.4}{2} − \ddomp{1.4}{2} \lt 0} \\ \ddomp{4}{2} \| = \| 0.6 − 0.6 + 2×\iverson{0.6 − 0.6 \lt 0} \\ 0 \| = \| 0 + 2×\iverson{0 \lt 0} \\ 0 \| = \| 0 + 2×0 \\ 0 \| = \| 0 \end{eqnarray*}

    Voorbeeld met \( x = 5.5, y = 1.4, p = 2 \):

    \begin{eqnarray*} \ddomp{5.5 − 1.4}{2} \| = \| \ddomp{5.5}{2} − \ddomp{1.4}{2} + 2×\iverson{\ddomp{5.5}{2} − \ddomp{1.4}{2} \lt 0} \\ \ddomp{4.1}{2} \| = \| 0.5 − 0.6 + 2×\iverson{0.5 − 0.6 \lt 0} \\ 1.9 \| = \| −0.1 + 2×\iverson{−0.1 \lt 0} \\ 1.9 \| = \| −0.1 + 2×1 \\ 1.9 \| = \| 1.9 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{x − y}{p} \| = \| \dceilp{x − y}{p} − (x − y) \| \eqvide{eq:ddomp} \notag \\ \| = \| \dceilp{\dparen{\dceilp{x}{p} − \ddomp{x}{p}} − \dparen{\dceilp{y}{p} − \ddomp{y}{p}}}{p} \notag \\ \| \| − \dparen{\dparen{\dceilp{x}{p} − \ddomp{x}{p}} − \dparen{\dceilp{y}{p} − \ddomp{y}{p}}} \| \eqvide{eq:ddomp} \notag \\ \| = \| \dparen{\dceilp{x}{p} − \dceilp{y}{p}} + \dceilp{−\ddomp{x}{p} + \ddomp{y}{p}}{p} \notag \\ \| \| − \dparen{\dparen{\dceilp{x}{p} − \ddomp{x}{p}} − \dparen{\dceilp{y}{p} − \ddomp{y}{p}}} \| \qquad ∵ \dceilp{•}{p} ∥ p \notag \\ \| = \| \ddomp{x}{p} − \ddomp{y}{p} + \dceilp{−\ddomp{x}{p} + \ddomp{y}{p}}{p} \notag \\ \| = \| \ddomp{x}{p} − \ddomp{y}{p} + p\iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \| \eqvide{eq:ceil(dom(x)−dom(y)i} \end{eqnarray}


  35. \begin{equation} \dfloorp{\ddomp{x}{p} + \ddomp{y}{p}}{p} = p\iverson{\ddomp{x}{p} + \ddomp{y}{p} ≥ p} \qquad (p \gt 0) \label{eq:floor(dom(x)+dom(y)i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{\ddomp{4.2}{2} + \ddomp{1.4}{2}}{2} \| = \| 2×\iverson{\ddomp{4.2}{2} + \ddomp{1.4}{2} ≥ 2} \\ \dfloorp{1.8 + 0.6}{2} \| = \| 2×\iverson{1.8 + 0.6 ≥ 2} \\ \dfloorp{2.4}{2} \| = \| 2×\iverson{2.4 ≥ 2} \\ 2 \| = \| 2×1 \end{eqnarray*}

    Voorbeeld met \( x = 4.7, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{\ddomp{4.7}{2} + \ddomp{1.4}{2}}{2} \| = \| 2×\iverson{\ddomp{4.7}{2} + \ddomp{1.4}{2} ≥ 2} \\ \dfloorp{1.3 + 0.6}{2} \| = \| 2×\iverson{1.3 + 0.6 ≥ 2} \\ \dfloorp{1.9}{2} \| = \| 2×\iverson{1.9 ≥ 2} \\ 0 \| = \| 2×0 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dfloorp{\ddomp{x}{p} + \ddomp{y}{p}}{p} \| = \| \dfloorp{\dceilp{x}{p} − x + \dceilp{y}{p} − y}{p} \| \eqvide{eq:ddomp} \notag \\ \| = \| \dceilp{x}{p} + \dceilp{y}{p} + \dfloorp{−x − y}{p} \| ∵ \dceilp{x}{p} + \dceilp{y}{p} ∥ p \notag \\ \| = \| \dceilp{x}{p} + \dceilp{y}{p} + \dfloorp{−x}{p} + \dfloorp{−y}{p} \notag \\ \| \| + p\iverson{\dmodp{−x}{p} + \dmodp{−y}{p} ≥ p} \| \eqvide{eq:floor(x+y)i} \notag \\ \| = \| p\iverson{\ddomp{x}{p} + \ddomp{y}{p} ≥ p} \| \eqvide{eq:mod(−x)} \end{eqnarray}


  36. \begin{equation} \dfloorp{\ddomp{x}{p} − \ddomp{y}{p}}{p} = −p \iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \qquad (p \gt 0) \label{eq:floor(dom(x)−dom(y)i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{\ddomp{4.2}{2} − \ddomp{1.4}{2}}{2} \| = \| −2×\iverson{\ddomp{4.2}{2} − \ddomp{1.4}{2} \lt 0} \\ \dfloorp{1.8 − 0.6}{2} \| = \| −2×\iverson{1.8 − 0.6 \lt 0} \\ \dfloorp{1.2}{2} \| = \| −2×\iverson{1.2 \lt 0} \\ 0 \| = \| −2×0 \end{eqnarray*}

    Voorbeeld met \( x = 1.4, y = 4.2, p = 2 \):

    \begin{eqnarray*} \dfloorp{\ddomp{1.4}{2} − \ddomp{4.2}{2}}{2} \| = \| −2×\iverson{\ddomp{1.4}{2} − \ddomp{4.2}{2} \lt 0} \\ \dfloorp{0.6 − 1.8}{2} \| = \| −2×\iverson{0.6 − 1.8 \lt 0} \\ \dfloorp{−1.2}{2} \| = \| −2×\iverson{−1.2 \lt 0} \\ −2 \| = \| −2×1 \end{eqnarray*}

    Bewijs: \( −p \lt \ddomp{x}{p} − \ddomp{y}{p} \lt p \), dus

    \begin{eqnarray} \ddomp{x}{p} − \ddomp{y}{p} \lt 0 \| → \| \dfloorp{\ddomp{x}{p} − \ddomp{y}{p}}{p} = −p \\ \ddomp{x}{p} − \ddomp{y}{p} \ge 0 \| ⇒ \| \dfloorp{\ddomp{x}{p} − \ddomp{y}{p}}{p} = 0 \\ ⇒ \dfloorp{\ddomp{x}{p} − \ddomp{y}{p}}{p} \| = \| −p \iverson{\ddomp{x}{p} − \ddomp{y}{p} \lt 0} \end{eqnarray}


  37. \begin{equation} \dfloorp{\dmodp{x}{p} + \dmodp{y}{p}}{p} = p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \qquad (p \gt 0) \label{eq:floor(mod(x)+mod(y)i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{\dmodp{4.2}{2} + \dmodp{1.4}{2}}{2} \| = \| 2×\iverson{\dmodp{4.2}{2} + \dmodp{1.4}{2} \ge 2} \\ \dfloorp{0.2 + 1.4}{2} \| = \| 2×\iverson{0.2 + 1.4 \ge 2} \\ \dfloorp{1.6}{2} \| = \| 2×\iverson{1.6 \ge 2} \\ 0 \| = \| 2×0 \end{eqnarray*}

    Voorbeeld met \( x = 4.6, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{\dmodp{4.6}{2} + \dmodp{1.4}{2}}{2} \| = \| 2×\iverson{\dmodp{4.6}{2} + \dmodp{1.4}{2} \ge 2} \\ \dfloorp{0.6 + 1.4}{2} \| = \| 2×\iverson{0.6 + 1.4 \ge 2} \\ \dfloorp{2}{2} \| = \| 2×\iverson{2 \ge 2} \\ 2 \| = \| 2×1 \end{eqnarray*}

    Bewijs: \( 0 \le \dmodp{x}{p} + \dmodp{y}{p} \lt 2p \), dus

    \begin{eqnarray} \dmodp{x}{p} + \dmodp{y}{p} \| \lt \| p ⇒ \dfloorp{\dmodp{x}{p} + \dmodp{y}{p}}{p} = 0 \\ \dmodp{x}{p} + \dmodp{y}{p} \| \ge \| p ⇒ \dfloorp{\dmodp{x}{p} + \dmodp{y}{p}}{p} = p \\ ⇒ \dfloorp{\dmodp{x}{p} + \dmodp{y}{p}}{p} \| = \| p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \end{eqnarray}


  38. \begin{equation} \dfloorp{\dmodp{x}{p} − \dmodp{y}{p}}{p} = −p \iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \qquad(p \gt 0) \label{eq:floor(mod(x)−mod(y)i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{\dmodp{4.2}{2} − \dmodp{1.4}{2}}{2} \| = \| −2×\iverson{\dmodp{4.2}{2} − \dmodp{1.4}{2} \lt 0} \\ \dfloorp{0.2 − 1.4}{2} \| = \| −2×\iverson{0.2 − 1.4 \lt 0} \\ \dfloorp{−1.2}{2} \| = \| −2×\iverson{−1.2 \lt 0} \\ −2 \| = \| −2×1 \end{eqnarray*}

    Voorbeeld met \( x = 5.6, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{\dmodp{5.6}{2} − \dmodp{1.4}{2}}{2} \| = \| −2×\iverson{\dmodp{5.6}{2} − \dmodp{1.4}{2} \lt 0} \\ \dfloorp{1.6 − 1.4}{2} \| = \| −2×\iverson{1.6 − 1.4 \lt 0} \\ \dfloorp{0.2}{2} \| = \| −2×\iverson{0.2 \lt 0} \\ 0 \| = \| −2×0 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dfloorp{\dmodp{x}{p} − \dmodp{y}{p}}{p} \| = \| \dparen{\dmodp{x}{p} − \dmodp{y}{p}} − \dmodp{\dmodp{x}{p} − \dmodp{y}{p}}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| \dmodp{x}{p} − \dmodp{y}{p} \notag \\ \| \| − \dparen{\dmodp{x}{p} − \dmodp{y}{p} + p\iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0}} \| \eqvide{eq:mod(mod(x)−mod(y)i} \notag \\ \| = \| −p\iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \end{eqnarray}


  39. \begin{equation} \dfloorp{x + y}{p} = \dfloorp{x}{p} + \dfloorp{y}{p} + p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \qquad (p \gt 0) \label{eq:floor(x+y)i} \end{equation}

    Voorbeeld met \( x = −3.4, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{−3.4 + 1.4}{2} \| = \| \dfloorp{−3.4}{2} + \dfloorp{1.4}{2} + 2×\iverson{\dmodp{−3.4}{2} + \dmodp{1.4}{2} \ge 2} \\ \dfloorp{−2}{2} \| = \| −4 + 0 + 2×\iverson{0.6 + 1.4 \ge 2} \\ −2 \| = \| −4 + 2×\iverson{2 \ge 2} \\ −2 \| = \| −4 + 2×1 \\ −2 \| = \| −2 \end{eqnarray*}

    Voorbeeld met \( x = −3.5, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{−3.5 + 1.4}{2} \| = \| \dfloorp{−3.5}{2} + \dfloorp{1.4}{2} + 2×\iverson{\dmodp{−3.5}{2} + \dmodp{1.4}{2} \ge 2} \\ \dfloorp{−2.1}{2} \| = \| −4 + 0 + 2×\iverson{0.5 + 1.4 \ge 2} \\ −4 \| = \| −4 + 2×\iverson{1.9 \ge 2} \\ −4 \| = \| −4 + 2×0 \\ −4 \| = \| −4 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dfloorp{x + y}{p} \| = \| \dfloorp{\dfloorp{x}{p} + \dmodp{x}{p} + \dfloorp{y}{p} + \dmodp{y}{p}}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| \dfloorp{x}{p} + \dfloorp{y}{p} + \dfloorp{\dmodp{x}{p} + \dmodp{y}{p}}{p} \| \qquad ∵ \dfloorp{x}{p} + \dfloorp{y}{p} ∥ p \notag \\ \| = \| \dfloorp{x}{p} + \dfloorp{y}{p} + p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \| \eqvide{eq:floor(mod(x)+mod(y)i} \end{eqnarray}


  40. \begin{equation} \dfloorp{x − y}{p} = \dfloorp{x}{p} − \dfloorp{y}{p} − p\iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \qquad (p \gt 0) \label{eq:floor(x−y)i} \end{equation}

    Voorbeeld met \( x = 5.3, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{5.3 − 1.4}{2} \| = \| \dfloorp{5.3}{2} − \dfloorp{1.4}{2} − 2×\iverson{\dmodp{5.3}{2} − \dmodp{1.4}{2} \lt 0} \\ \dfloorp{3.9}{2} \| = \| 4 − 0 − 2×\iverson{1.3 − 1.4 \lt 0} \\ \dfloorp{3.9}{2} \| = \| 4 − 0 − 2×\iverson{−0.1 \lt 0} \\ 2 \| = \| 4 − 2×1 \\ 2 \| = \| 2 \end{eqnarray*}

    Voorbeeld met \( x = 5.4, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dfloorp{5.4 − 1.4}{2} \| = \| \dfloorp{5.4}{2} − \dfloorp{1.4}{2} − 2×\iverson{\dmodp{5.4}{2} − \dmodp{1.4}{2} \lt 0} \\ \dfloorp{4}{2} \| = \| 4 − 0 − 2×\iverson{1.4 − 1.4 \lt 0} \\ 4 \| = \| 4 − 2×0 \\ 4 \| = \| 4 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dfloorp{x − y}{p} \| = \| \dfloorp{\left( \dfloorp{x}{p} + \dmodp{x}{p} \right) − \left( \dfloorp{y}{p} + \dmodp{y}{p} \right)}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| \dfloorp{x}{p} − \dfloorp{y}{p} + \dfloorp{\dmodp{x}{p} − \dmodp{y}{p}}{p} \| \qquad ∵ \dfloorp{x}{p} + \dfloorp{y}{p} ∥ p \notag \\ \| = \| \dfloorp{x}{p} − \dfloorp{y}{p} − p \iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \| \eqvide{eq:floor(mod(x)−mod(y)i} \end{eqnarray}


  41. \begin{equation} \dmodp{\dmodp{x}{p} + \dmodp{y}{p}}{p} = \dmodp{x}{p} + \dmodp{y}{p} − p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \qquad (p \gt 0) \label{eq:mod(mod(x)+mod(y)i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dmodp{\dmodp{4.2}{2} + \dmodp{1.4}{2}}{2} \| = \| \dmodp{4.2}{2} + \dmodp{1.4}{2} − 2×\iverson{\dmodp{4.2}{2} + \dmodp{1.4}{2} \ge 2} \\ \dmodp{0.2 + 1.4}{2} \| = \| 0.2 + 1.4 − 2×\iverson{0.2 + 1.4 \ge 2} \\ \dmodp{1.6}{2} \| = \| 1.6 − 2×\iverson{1.6 \ge 2} \\ 1.6 \| = \| 1.6 − 2×0 \end{eqnarray*}

    Voorbeeld met \( x = 4.6, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dmodp{\dmodp{4.6}{2} + \dmodp{1.4}{2}}{2} \| = \| \dmodp{4.6}{2} + \dmodp{1.4}{2} − 2×\iverson{\dmodp{4.6}{2} + \dmodp{1.4}{2} \ge 2} \\ \dmodp{0.6 + 1.4}{2} \| = \| 0.6 + 1.4 − 2×\iverson{0.6 + 1.4 \ge 2} \\ \dmodp{2}{2} \| = \| 2 − 2×\iverson{2 \ge 2} \\ 0 \| = \| 2 − 2×1 \end{eqnarray*}

    Bewijs: \( 0 \le \dmodp{x}{p} + \dmodp{y}{p} \lt 2p \), dus

    \begin{eqnarray} \dmodp{x}{p} + \dmodp{y}{p} \lt p \| ⇒ \| \dmodp{\dmodp{x}{p} + \dmodp{y}{p}}{p} = \dmodp{x}{p} + \dmodp{y}{p} \\ \dmodp{x}{p} + \dmodp{y}{p} \ge p \| ⇒ \| \dmodp{\dmodp{x}{p} + \dmodp{y}{p}}{p} = \dmodp{x}{p} + \dmodp{y}{p} − p \\ ⇒ \dmodp{\dmodp{x}{p} + \dmodp{y}{p}}{p} \| = \| \dmodp{x}{p} + \dmodp{y}{p} − p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \end{eqnarray}


  42. \begin{equation} \dmodp{\dmodp{x}{p} − \dmodp{y}{p}}{p} = \dmodp{x}{p} − \dmodp{y}{p} + p\iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \qquad (p \gt 0) \label{eq:mod(mod(x)−mod(y)i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 6.3, p = 2 \):

    \begin{eqnarray*} \dmodp{\dmodp{4.2}{2} − \dmodp{6.3}{2}}{2} \| = \| \dmodp{4.2}{2} − \dmodp{6.3}{2} + 2×\iverson{\dmodp{4.2}{2} − \dmodp{6.3}{2} \lt 0} \\ \dmodp{0.2 − 0.3}{2} \| = \| 0.2 − 0.3 + 2×\iverson{0.2 − 0.3 \lt 0} \\ \dmodp{−0.1}{2} \| = \| −0.1 + 2×\iverson{−0.1 \lt 0} \\ 1.9 \| = \| −0.1 + 2×1 \\ 1.9 \| = \| 1.9 \end{eqnarray*}

    Voorbeeld met \( x = 4.2, y = 6.2, p = 2 \):

    \begin{eqnarray*} \dmodp{\dmodp{4.2}{2} − \dmodp{6.2}{2}}{2} \| = \| \dmodp{4.2}{2} − \dmodp{6.2}{2} + 2×\iverson{\dmodp{4.2}{2} − \dmodp{6.2}{2} \lt 0} \\ \dmodp{0.2 − 0.2}{2} \| = \| 0.2 − 0.2 + 2×\iverson{0.2 − 0.2 \lt 0} \\ \dmodp{0}{2} \| = \| 0 + 2×\iverson{0 \lt 0} \\ 0 \| = \| 0 + 2×0 \\ 0 \| = \| 0 + 0 \end{eqnarray*}

    Bewijs: \( −p \lt \dmodp{x}{p} − \dmodp{y}{p} \lt p \), dus

    \begin{eqnarray} \dmodp{x}{p} − \dmodp{y}{p} \lt 0 \| ⇒ \| \dmodp{\dmodp{x}{p} − \dmodp{y}{p}}{p} = \dmodp{x}{p} − \dmodp{y}{p} + p \\ \dmodp{x}{p} − \dmodp{y}{p} \ge 0 \| ⇒ \| \dmodp{\dmodp{x}{p} − \dmodp{y}{p}}{p} = \dmodp{x}{p} − \dmodp{y}{p} \\ ⇒ \dmodp{\dmodp{x}{p} − \dmodp{y}{p}}{p} \| = \| \dmodp{x}{p} − \dmodp{y}{p} + p\iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \end{eqnarray}


  43. \begin{equation} \dmodp{x + y}{p} = \dmodp{x}{p} + \dmodp{y}{p} − p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \qquad (p \gt 0) \label{eq:mod(x+y)i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dmodp{4.2 + 1.4}{2} \| = \| \dmodp{4.2}{2} + \dmodp{1.4}{2} − 2×\iverson{\dmodp{4.2}{2} + \dmodp{1.4}{2} \ge 2} \\ \dmodp{5.6}{2} \| = \| 0.2 + 1.4 − 2×\iverson{0.2 + 1.4 \ge 2} \\ 1.6 \| = \| 1.6 − 2×\iverson{1.6 \ge 2} \\ 1.6 \| = \| 1.6 − 0 \\ 1.6 \| = \| 1.6 \end{eqnarray*}

    Voorbeeld met \( x = 4.2, y = 1.8, p = 2 \):

    \begin{eqnarray*} \dmodp{4.2 + 1.8}{2} \| = \| \dmodp{4.2}{2} + \dmodp{1.8}{2} − 2×\iverson{\dmodp{4.2}{2} + \dmodp{1.8}{2} \ge 2} \\ \dmodp{6}{2} \| = \| 0.2 + 1.8 − 2×\iverson{0.2 + 1.8 \ge 2} \\ 0 \| = \| 2 − 2×\iverson{2 \ge 2} \\ 0 \| = \| 2 − 2 \\ 0 \| = \| 0 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dmodp{x + y}{p} \| = \| \dmodp{\dfloorp{x}{p} + \dmodp{x}{p} + \dfloorp{y}{p} + \dmodp{y}{p}}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| \dmodp{\dmodp{x}{p} + \dmodp{y}{p}}{p} \| ∵ \dfloorp{•}{p} ∥ p \notag \\ \| = \| \dmodp{x}{p} + \dmodp{y}{p} − p\iverson{\dmodp{x}{p} + \dmodp{y}{p} \ge p} \| \eqvide{eq:mod(mod(x)+mod(y)i} \end{eqnarray}


  44. \begin{equation} \dmodp{x − y}{p} = \dmodp{x}{p} − \dmodp{y}{p} + p\iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \qquad (p \gt 0) \label{eq:mod(x−y)i} \end{equation}

    Voorbeeld met \( x = 4.2, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dmodp{4.2 − 1.4}{2} \| = \| \dmodp{4.2}{2} − \dmodp{1.4}{2} + 2×\iverson{\dmodp{4.2}{2} − \dmodp{1.4}{2} \lt 0} \\ \dmodp{2.8}{2} \| = \| 0.2 − 1.4 + 2×\iverson{0.2 − 1.4 \lt 0} \\ 0.8 \| = \| −1.2 + 2×\iverson{−1.2 \lt 0} \\ 0.8 \| = \| −1.2 + 2×1 \\ 0.8 \| = \| −1.2 + 2 \\ 0.8 \| = \| 0.8 \end{eqnarray*}

    Voorbeeld met \( x = 5.4, y = 1.4, p = 2 \):

    \begin{eqnarray*} \dmodp{5.4 − 1.4}{2} \| = \| \dmodp{5.4}{2} − \dmodp{1.4}{2} + 2×\iverson{\dmodp{5.4}{2} − \dmodp{1.4}{2} \lt 0} \\ \dmodp{4}{2} \| = \| 1.4 − 1.4 + 2×\iverson{1.4 − 1.4 \lt 0} \\ 0 \| = \| 0 + 2×\iverson{0 \lt 0} \\ 0 \| = \| 0 + 2×0 \\ 0 \| = \| 0 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dmodp{x − y}{p} \| = \| \dmodp{\left( \dfloorp{x}{p} + \dmodp{x}{p} \right) − \left( \dfloorp{y}{p} + \dmodp{y}{p} \right)}{p} \| \eqvide{eq:dmodp} \notag \\ \| = \| \dmodp{\dmodp{x}{p} − \dmodp{y}{p}}{p} \| ∵ \dfloorp{x}{p} − \dfloorp{y}{p} ∥ p \notag \\ \| = \| \dmodp{x}{p} − \dmodp{y}{p} + p\iverson{\dmodp{x}{p} − \dmodp{y}{p} \lt 0} \| \eqvide{eq:mod(mod(x)−mod(y)i} \end{eqnarray}


  45. \begin{equation} \dparen{\sum_i n_i\dmodp{x_i}{p}} − \dmodp{\sum_i n_ix_i}{p} = \dfloorp{\sum_i n_i\dmodp{x_i}{p}}{p} \qquad (n_i ∥ 1, p \gt 0) \label{eq:sumnmod(x)−mod(sumnx)} \end{equation}

    Voorbeeld met \( x_1 = 5.7, n = 3, x_2 = 3.2, n_2 = 5, p = 2 \):

    \begin{eqnarray*} \dparen{3×\dmodp{5.7}{2} + 5×\dmodp{3.2}{2}} − \dmodp{3×5.7 + 5×3.2}{2} \| = \| \dfloorp{3×\dmodp{5.7}{2} + 5×\dmodp{3.2}{2}}{2} \\ 3×1.7 + 5×1.2 − \dmodp{33.1}{2} \| = \| \dfloorp{3×1.7 + 5×1.2}{2} \\ 11.1 − 1.1 \| = \| \dfloorp{11.1}{2} \\ 10 \| = \| 10 \end{eqnarray*}

    Bewijs:

    \begin{align} \| \dparen{\sum_i n_i\dmodp{x_i}{p}} − \dmodp{\sum_i n_ix_i}{p} \notag \\ \| = \dparen{\sum_i n_i\dmodp{x_i}{p}} − \dmodp{\sum_i n_i\dfloorp{x_i}{p} + \sum_i n_i\dmodp{x_i}{p}}{p} \eqvide{eq:dmodp} \notag \\ \| = \dparen{\sum_i n_i\dmodp{x_i}{p}} − \dmodp{\sum_i n_i\dmodp{x_i}{p}}{p} \qquad ∵ \dfloorp{x_i}{p} ∥ p, n_i ∥ 1 \notag \\ \| = \dfloorp{\sum_i n_i\dmodp{x_i}{p}}{p} \eqvide{eq:dmodp} \end{align}


  46. \begin{equation} n\dmodp{x}{p} − \dmodp{nx}{p} = \dfloorp{n\dmodp{x}{p}}{p} \qquad (n ∥ 1, p \gt 0) \label{eq:nmod(x)−mod(nx)} \end{equation}

    Voorbeeld met \( x = 5.7, n = 3, p = 2 \):

    \begin{eqnarray*} 3×\dmodp{5.7}{2} − \dmodp{3×5.7}{2} \| = \| \dfloorp{3×\dmodp{5.7}{2}}{2} \\ 3×1.7 − \dmodp{17.1}{2} \| = \| \dfloorp{3×1.7}{2} \\ 5.1 − 1.1 \| = \| \dfloorp{5.1}{2} \\ 4 \| = \| 4 \end{eqnarray*}

    Bewijs: Formule \eqref{eq:sumnmod(x)−mod(sumnx)} als \( n_1 = n \) en \( x_1 = x \) en er verder geen \( n_i \) en \( x_i \) zijn.


  47. \begin{equation} \dfloorp{\sum_i n_ix_i}{p} − \dparen{\sum_i n_i\dfloorp{x_i}{p}} = \dfloorp{\sum_i n_i\dmodp{x_i}{p}}{p} \qquad (n_i ∥ 1) \label{eq:floor(sumnx)−sumnfloor(x)} \end{equation}

    Voorbeeld met \( x_1 = 5.7, n_1 = 3, x_2 = 3.2, n_2 = 5, p = 2 \):

    \begin{eqnarray*} \dfloorp{3×5.7 + 5×3.2}{2} − \dparen{3×\dfloorp{5.7}{2} + 5×\dfloorp{3.2}{2}} \| = \| \dfloorp{3×\dmodp{5.7}{2} + 5×\dmodp{3.2}{2}}{2} \\ \dfloorp{33.1}{2} − (3×4 + 5×2) \| = \| \dfloorp{3×1.7 + 5×1.2}{2} \\ 32 − 22 \| = \| \dfloorp{11.1}{2} \\ 10 \| = \| 10 \end{eqnarray*}

    Bewijs:

    \begin{align} \| \dfloorp{\sum_i n_ix_i}{p} − \dparen{\sum_i n_i\dfloorp{x_i}{p}} \notag \\ \| = \dparen{\sum_i n_ix_i} − \dmodp{\sum_i n_ix_i}{p} − \dparen{\dparen{\sum_i n_ix_i} − \dparen{\sum_i n_i\dmodp{x_i}{p}}} \notag \eqvide{eq:dmodp} \\ \| = \dparen{\sum_i n_i\dmodp{x_i}{p}} − \dmodp{\sum_i n_ix_i}{p} \notag \\ \| = \dfloorp{\sum_i n_i\dmodp{x_i}{p}}{p} \eqvide{eq:sumnmod(x)−mod(sumnx)} \end{align}


  48. \begin{equation} \dfloorp{nx}{p} − n\dfloorp{x}{p} = \dfloorp{n\dmodp{x}{p}}{p} \qquad (n ∥ 1) \label{eq:floor(nx)−nfloor(x)} \end{equation}

    Voorbeeld met \( x = 5.7, n = 3, p = 2 \):

    \begin{eqnarray*} \dfloorp{3×5.7}{2} − 3×\dfloorp{5.7}{2} \| = \| \dfloorp{3×\dmodp{5.7}{2}}{2} \\ \dfloorp{17.1}{2} − 3×4 \| = \| \dfloorp{3×1.7}{2} \\ 16 − 12 \| = \| \dfloorp{5.1}{2} \\ 4 \| = \| 4 \end{eqnarray*}

    Bewijs: Formule \eqref{eq:floor(sumnx)−sumnfloor(x)} als \( x_1 = x \) en \( n_1 = n \) en er verder geen \( x_i \) en \( n_i \) zijn.


  49. \begin{equation} \dfloor{\dmodp{x}{p}} = \dmodp{\dfloor{x}}{p} \qquad (p ∥ 1, p \gt 0) \label{eq:floor(mod(x))} \end{equation}

    Voorbeeld met \( x = 4.9, p = 2\):

    \begin{eqnarray*} \dfloor{\dmodp{4.9}{2}} \| = \| \dmodp{\dfloor{4.9}}{2} \\ \dfloor{0.9} \| = \| \dmodp{4}{2} \\ 0 \| = \| 0 \end{eqnarray*}

    Voorbeeld met \( x = 5.1, p = 2\):

    \begin{eqnarray*} \dfloor{\dmodp{5.1}{2}} \| = \| \dmodp{\dfloor{5.1}}{2} \\ \dfloor{1.1} \| = \| \dmodp{5}{2} \\ 1 \| = \| 1 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} x \| = \| p\dfloorratio{x}{p} + \dmodp{x}{p} \eqavide{eq:dmodp} \notag \\ \| = \| p\dfloorratio{x}{p} + \dfloor{\dmodp{x}{p}} + \dmod{\dmodp{x}{p}} \eqavide{eq:dmodp} \\ \dfloor{x} \| = \| p\dfloorratio{x}{p} + \dfloor{\dmodp{x}{p}} \| ∵ 0 ≤ \dmod{\dmodp{x}{p}} \lt 1; p ∥ 1 \\ \dmodp{\dfloor{x}}{p} \| = \| \dfloor{\dmodp{x}{p}} \| ∵ p\dfloorratio{x}{p} ∥ p \end{eqnarray}


  50. \begin{equation} \dceilp{x}{p} = \dfloorp{x − 1}{p} + p \qquad (x ∥ 1, p ∥ 1, p \gt 1) \label{eq:ceil2floor(x−1)} \end{equation}

    Voorbeeld met \( x = 15, p = 7 \):

    \begin{eqnarray*} \dceilp{15}{7} \| = \| \dfloorp{15 − 1}{7} + 7 \\ 21 \| = \| 14 + 7 \end{eqnarray*}

    Voorbeeld met \( x = 14, p = 7 \):

    \begin{eqnarray*} \dceilp{14}{7} \| = \| \dfloorp{14 − 1}{7} + 7 \\ 14 \| = \| 7 + 7 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \dceilp{x}{p} \| = \| \dceilp{x}{p} − p[x ⊥ p] − p[x ∥ p] + p \| \qquad ∵ [x ⊥ p] + [x ∥ p] = 1 \notag \\ \| = \| \dfloorp{x}{p} − p[x ∥ p] + p \| \eqvide{eq:ceil(x)−floor(x)i} \notag \\ \| = \| \dfloorp{x}{p} − p\left[ \dmodp{x}{p} = 0 \right] + p \| \eqvide{eq:dmodp} \notag \\ \| = \| \dfloorp{x}{p} − p\left[ \dmodp{x}{p} − 1 \lt 0 \right] + p \| \qquad (x ∥ 1, p ∥ 1) \notag \\ \| = \| \dfloorp{x}{p} − \dfloorp{1}{p} − p\left[ \dmodp{x}{p} − \dmodp{1}{p} \lt 0 \right] + p \| \qquad (p \gt 1) \notag \\ \| = \| \dfloorp{x − 1}{p} + p \| \eqvide{eq:floor(x−y)i} \end{eqnarray}


  51. \begin{equation} \ddomp{x}{p} = p − 1 − \dmodp{x − 1}{p} \qquad (x ∥ 1, p ∥ 1, p \gt 1) \label{eq:dom2mod(x−1)} \end{equation}

    Voorbeeld met \( x = 15, p = 7 \):

    \begin{eqnarray*} \ddomp{15}{7} \| = \| 7 − 1 − \dmodp{15 − 1}{7} \\ 6 \| = \| 6 − \dmodp{14}{7} \\ 6 \| = \| 6 − 0 \end{eqnarray*}

    Voorbeeld met \( x = 14, p = 7 \):

    \begin{eqnarray*} \ddomp{14}{7} \| = \| 7 − 1 − \dmodp{14 − 1}{7} \\ 0 \| = \| 6 − \dmodp{13}{7} \\ 0 \| = \| 6 − 6 \end{eqnarray*}

    Bewijs:

    \begin{eqnarray} \ddomp{x}{p} \| = \| \dceilp{x}{p} − x \| \eqvide{eq:ddomp} \notag \\ \| = \| \dfloorp{x − 1}{p} + p − x \| \eqvide{eq:ceil2floor(x−1)} \notag \\ \| = \| x − 1 − \dmodp{x − 1}{p} + p − x \| \eqvide{eq:dmodp} \notag \\ \| = \| p − 1 − \dmodp{x − 1}{p} \end{eqnarray}

13.4. Grote Tussenresultaten

Zie verderop voor de \( \range{•}{f} \)-notatie.

Veel van de kalenderberekeningen die hieronder beschreven worden zijn van de vorm

\begin{align} y \| = \range{\dfloorratio{f x + t}{g}}{f} \label{eq:template-y} \\ e \| = \range{\dmodp{f x + t}{g}}{f} = \range{(f x + t) \bmod g}{f} \label{eq:template-e} \end{align}

ofwel

\begin{equation} \{ y, e \} = \range{\Div(f x + t, g)}{f} \label{eq:template} \end{equation}

met

\begin{equation} f x + t = g y + e \end{equation}

waar \( f \), \( t \), \( g \) vaste hele getallen zijn met \( f, g \gt 1 \) en \( 0 ≤ e \lt g \) en \( x \), \( y \) wisselende maar wel hele getallen zijn. Het tussenresultaat \( f x + t \) is dan meestal veel groter dan \( x \) en dan het eindresultaat. Dit kan problemen geven op rekenmachines en in computerprogramma's, waarop hele getallen niet groter mogen zijn dan een bepaalde limiet die we hier \( w \) noemen. (Getallen met drijvende komma, zoals 1.234 × 1020, mogen veel groter zijn, maar ook daarvan is de nauwkeurigheid beperkt, en dan moet je bang zijn voor afrondfouten.)

De beginwaarde \( x \) en eindwaarde \( y \) moeten uiteraard niet groter (verder van 0) zijn dan \( w \). Die beperking ligt voor de hand, dus zullen we hieronder niet altijd expliciet meer noemen.

Tussenresultaten groter dan \( w \) geven problemen, dus zou om problemen te voorkomen ongeveer \( |f x| ≤ w \) moeten zijn, dus \(|x| ≤ w/f \), wat veel kleiner is dan \( w \) zelf.

Als zoals in formule \eqref{eq:template} een formule is omsloten door \( \range{•}{n} \) dan betekent dit dat die formule te grote tussenresultaten geeft als de invoerwaarde die in principe onbeperkt groot kan zijn een waarde heeft die groter is dan ongeveer \( w/n \).

Als \( |t| ≥ g \), dan kunnen we formule \eqref{eq:template-y}ff omschrijven naar

\begin{align} f x + t \| = f x + g\dfloorratio{t}{g} + \dmodp{t}{g} = g y + e \eqavide{eq:dmodp} \\ y \| = \range{\dfloorratio{f x + t}{g}}{f} = \dfloorratio{t}{g} + \range{\dfloorratio{f x + \dmodp{t}{g}}{g}}{f} \\ e \| = \range{\dmodp{f x + t}{g}}{f} = \range{\dmodp{f x + \dmodp{t}{g}}{g}}{f} \\ \{ υ_1, ξ_1 \} \| = \Div(t, g) \\ \{ υ_2, e \} \| = \range{\Div(f x + ξ_1, g)}{f} \label{eq:υ2e} \\ y \| = υ_1 + υ_2 \end{align}

waarin formule \eqref{eq:υ2e} dezelfde vorm heeft als formule \eqref{eq:template}, als je \( \dmodp{t}{g} \) hernoemt tot een nieuwe \( t \). We nemen hieronder aan dat dat gebeurd is, en dus dat \( 0 ≤ t \lt g \).

Als \( f \gt g \), dan kunnen we formule \eqref{eq:template}ff omschrijven naar

\begin{align} f x + t \| = \dparen{\dfloorratio{f}{g} g + \dmodp{f}{g}} x + t = g y + e \eqavide{eq:dmodp} \\ y \| = \dfloorratio{f}{g} x + \range{\dfloorratio{\dmodp{f}{g} x + t}{g}}{\dmodp{f}{g}} \label{eq:template2} \\ e \| = \range{\dmodp{\dmodp{f}{g} x + t}{g}}{\dmodp{f}{g}} \\ \{ ω_1, ω_2 \} \| = \Div(f, g) \\ \{ υ_3, e \} \| = \range{\Div(ω_2 x + t, g)}{\dmodp{f}{g}} \label{eq:υ3e} \\ y \| = ω_1 x + υ_3 \end{align}

Dan mag \( |x| \) ongeveer zo groot zijn als \( w/\dmodp{f}{g} \) voordat er problemen komen.

Formule \eqref{eq:υ3e} heeft weer de vorm van formule \eqref{eq:template}, als je \( \dmodp{f}{g} \) hernoemt tot een nieuwe \( f \). Hieronder nemen we aan dat dat gebeurd is, en dus dat \( f \lt g \).

Als we eerst de deling door \( g \) zouden kunnen doen en pas daarna de vermenigvuldiging met \( f \), dan zouden de tussenresultaten kleiner blijven dan \( x \) zelf. We zouden zoiets als \( f\dfloor{x/g} \) willen berekenen wat ongeveer gelijk is aan \( y \), en dan daar een correctie op toepassen om echt \( y \) te krijgen.

We kunnen formule \eqref{eq:template}ff herschrijven tot

\begin{align} f x + t \| = f\dparen{ \dfloorratio{x}{g} g + \dmodp{x}{g}} + t \eqavide{eq:dmodp} \\ y \| = f\dfloorratio{x}{g} + \dfloorratio{f\dmodp{x}{g} + t}{g} \label{eq:detour} \\ e \| = \dmodp{f\dmodp{x}{g} + t}{g} \\ \{ ω_3, ξ_2 \} \| = \Div(x, g) \\ \{ υ_4, e \} \| = \Div(f ξ_2 + t, g) \label{eq:υ4e} \\ y \| = f ω_3 + υ_4 \end{align}

Nu is het grootste tussenresultaat niet meer \( f x + t \), dat zo groot kan worden als \( f w \), maar \( f\dmodp{x}{g} + t \), dat niet groter kan worden dan \( f g \lt g^2 \).

Formule \eqref{eq:υ4e} heeft weer de vorm van formule \eqref{eq:template}ff, als je \( \dmodp{x}{g} \) hernoemt tot een nieuwe \( x \).

Bijvoorbeeld, stel dat \( g = 12345 \), \( f = 8432 \), \( t = 871 \), en \( w = 2^{31} − 1 = 2 147 483 647 \), en dat we \( y \), \( e \) willen uitrekenen voor \( x = 300 000 \).

We gebruiken de omweg van formule \eqref{eq:υ4e}. We vinden

\begin{align*} \{ ω_3, ξ_2 \} \| = \Div(x, g) = \Div(300 000, 12345) = \{ 24, 3720 \} \\ \{ υ_4, e \} \| = \Div(f ξ_2 + t, g) = \Div(8432×3720 + 871, 12345) \\ \| = \Div(31 367 911, 12345) = \{ 2540, 11611 \} \\ y = \| f ω_3 + υ_4 = 8432×24 + 2540 = 204 908 \end{align*}

Het grootste tussenresultaat is 31 367 911, wat ruim kleiner is dan \( w \).

Als we willekeurig grote getallen konden gebruiken, dan hadden we gevonden

\begin{align*} y \| = \dfloorratio{f x + t}{g} = \dfloorratio{8432×300 000 + 871}{12345} = \dfloorratio{2 529 600 871}{12345} = 204 908 \\ e \| = \dmodp{2 529 600 871}{12345} = 11611 \end{align*}

dus hetzelfde resultaat, maar dan met een tussenresultaat 2 529 600 871 dat groter is dan \( w \).

Maar soms is een tussenresultaat van (bijna) \( f g \) ook nog te groot, want een product van twee getallen kan veel groter zijn dan \( w \) ook als de twee getallen apart veel kleiner zijn dan \( w \). Als het product niet groter mag worden dan \( w \), dan mogen beide getallen niet allebei groter zijn dan \( \sqrt{w} \), en dat is een stuk kleiner dan \( w \) zelf. Bijvoorbeeld, voor 32-bitsgetallen is \( w = 2^{31} − 1 = 2 147 483 647 \) en is \( \sqrt{w} ≈ 46341 \), dus zelfs als \( g \) en \( fg \) allebei maar iets groter zijn dan 46431, wat toch niet heel erg groot is, dan is \( fg \) al te groot om in een 32-bitsgetal te passen.

Stel we kiezen een heel getal \( P \gt 0 \) en berekenen daarmee eenmalig

\begin{align} \{ Q, R \} \| = \Div(f P, g) \label{eq:PQR} \\ Q \| = \dfloorratio{f P}{g} \\ R \| = \dmodp{f P}{g} \end{align}

waarmee

\begin{equation} f P = f Q + R \end{equation}

Bepaal dan voor elke gewenste \( x \)

\begin{align} \{ q, r \} \| = \Div(x, P) \\ q \| = \dfloorratio{x}{P} \\ r \| = \dmodp{x}{P} \end{align}

zodat

\begin{equation} x = q P + r \end{equation}

en dan

\begin{align} f x + t \| = f q P + f r + t = q g Q + q R + f r + t \\ y \| = \dfloorratio{q g Q + q R + f r + t}{g} = q Q + \dfloorratio{q R + f r + t}{g} \label{eq:detour2} \\ e \| = \dmodp{q g Q + q R + f r + t}{g} = \dmodp{q R + f r + t}{g} \end{align}

Nu is het grootste tussenresultaat \( m ≡ q R + f r + t \). Om niet in de problemen te komen moet \( \dabs{m} ≤ w \) zijn, dus (omdat \( r \lt P \))

\begin{eqnarray} \dabs{x}\frac{R}{P} + f P + t ≤ w \\ \dabs{x} ≤ X ≡ \dparen{w − f P − t}\dfrac{P}{R} \end{eqnarray}

We hebben \( f \lt g \) dus \( f \) is geen veelvoud van \( g \) dus \( R \gt 0 \).

We zien dat \( 0 \lt P \lt \dfrac{w − t}{f} \) moet zijn, want anders is \( X ≤ 0 \).

Bijvoorbeeld, stel dat \( g = 765 433 \), \( f = 25920 \), \( t = 13835 \), \( w = 2^{31} − 1 = 2 147 483 647 \). Dan moet, om \( X ≥ 0 \) te krijgen,

\[ P \lt \dfrac{w − t}{f} = \dfrac{2 147 483 647 − 13835}{25920} = 82849.9 \]

Wat voorbeelden:

\({P}\) \({Q}\) \({R}\) \({X}\) \({X/w}\)
1 0 25920 82848.9 0.000
2 0 51840 82847.9 0.000
3 0 77760 82846.9 0.000
29 0 751680 82820.9 0.000
30 1 12167 5.29307 × 10+06 0.002
31 1 38087 1.74723 × 10+06 0.001
59 1 763847 165754 0.000
60 2 24334 5.29115 × 10+06 0.002
943 31 714137 2.8034 × 10+06 0.001
944 31 740057 2.70805 × 10+06 0.001
945 32 544 3.68789 × 10+09 1.717
33783 1144 8 5.37071 × 10+12 2500.932
82849 2805 406515 4836.65 0.000
82850 2805 432435 −419.198 −0.000

We willen het bereik van \( x \) zo groot mogelijk hebben, dus zoeken we \( P \) en \( R \) zodat \( X \) zo groot mogelijk wordt, gegeven \( w \), \( f \), \( t \). \( R \) moet dus liefst klein zijn.

Als \( P \) langzaam toeneemt (steeds met 1) dan varieert \( R = \dmodp{f P}{g} \) grillig tussen 0 en \( g − 1 \), dus de waarde van \( R \) is onafhankelijk van de globale grootte van \( P \), en er zijn veel waarden van \( P \) mogelijk voor dezelfde kleinste waarde van \( R \).

Als \( R \) de kleinst mogelijke waarde (groter dan nul) heeft, wat moet dan ongeveer de waarde van \( P \) zijn die de grootste waarde van \( X \) geeft?

Dan is \( X \) een kwadratische functie van \( P \). Als \( P \) elke willekeurige waarde kon hebben dan zou die grootst mogelijk waarde optreden voor

\begin{equation} P = P_0 = \dfrac{w − t}{2 f} \end{equation}

en gelijk zijn aan

\begin{equation} \max(X) = \dfrac{\dparen{w − t}^2}{4Rf} = \dfrac{f P_0^2}{R} \end{equation}

Om \( \max(X) ≥ w \) te hebben moet dus zeker

\begin{equation} R ≤ \dfrac{w}{4 f}\dparen{1−\dfrac{t}{w}}^2 \label{eq:maxR} \end{equation}

De kleinst mogelijke waarde die \( R \) kan hebben is gelijk aan de grootste gemene deler \( \gcd(f, g) \) van \( f \) en \( g \).

\begin{equation} R = R_1 ≡ \gcd(f, g) \end{equation}

Het Uitgebreide Algoritme van Euclides levert die waarde op, en ook getallen \( x \) en \( y \) zodat

\begin{equation} fx + gy = R \end{equation}

De \( x \) en \( y \) die je dan krijgt zijn in zekere zin het kleinste, maar ook de volgende waarden voldoen (met \( k \) een willekeurig heel getal):

\begin{equation} f\dparen{x + k\dfrac{g}{R}} + g\dparen{y − k\dfrac{f}{R}} = R \end{equation}

Omdat \( R \) een deler is van \( g \) en ook van \( f \) leveren de delingen door \( R \) in deze formule altijd hele getallen op.

De bij elkaar horende mogelijke waarden van \( P \) en \( Q \) zijn dan

\begin{align} P \| = x + k\dfrac{g}{R} \\ Q \| = −y + k\dfrac{f}{R} \end{align}

voor willekeurige hele \( k \) waarvoor \( P, Q \gt 0 \). De kleinste bruikbare positieve \( P \) en de daarbij horende waarde van \( Q \) zijn

\begin{align} P_1 \| = \dmodp{x}{g/R_1} \\ Q_1 \| = \dmodp{−y}{f/R_1} \end{align}

Deze \( P_1, Q_1, R_1 \) voldoen aan vergelijkingen \eqref{eq:PQR}ff, want

\begin{equation} \dfloorratio{f P_1}{g} = \dfloorratio{g Q_1 + R_1}{g} = Q_1 + \dfloorratio{R_1}{g} = Q_1 \end{equation}

omdat \( \dfloor{R_1/g} = 0 \) omdat \( R_1 = \gcd(f, g) \lt g \) omdat \( f \lt g \). En als \( Q_1 \) past dan past \( R_1 \) ook.

Om \( X \gt 0 \) te krijgen moet zeker gelden \( P ≤ w/f \), dus de grootste bruikbare \( P \) is

\begin{equation} P_\text{max} = \dfrac{w}{f} − \dmodp{\dfrac{w}{f} − P_1}{g/R_1} = P_1 + \dfloorp{\dfrac{w}{f} − P_1}{g/R_1} \end{equation}

De stapgrootte tussen opeenvolgende waarden van \( P \) die bij deze \( R \) horen is \( g/R \) dus als \( g/R \gt w/f \) (dus \( fg/R \gt w \)) dan is er misschien helemaal geen acceptabele waarde van \( P \) voor deze \( R \). In dat geval is \( P_\text{max} \lt 0 \).

Voor hetzelfde geval als in het vorige voorbeeld vinden we met het Uitgebreide Algoritme van Euclides

\[ f x + g y = 25920×99902 − 765 433×3383 = 1 \]

dus

\begin{align*} x \| = 99902 \\ y \| = −3383 \\ R_1 \| = 1 \\ P_1 \| = \dmodp{x}{g/R} = \dmodp{99902}{765 433} = 99902 \\ Q_1 \| = \dmodp{−y}{f/R} = \dmodp{3383}{25920} = 3383 \\ P_\text{max} \| = \dfrac{w}{f} − \dmodp{\dfrac{w}{f} − P_1}{g/R_1} \\ \| = \dfrac{2 147 483 647}{25920} − \dmodp{\dfrac{2 147 483 647}{25920} − 99902}{765 433/1} \\ \| = 82850.4493441 − \dmodp{82850.4493441 − 99902}{765 433} \\ \| = 82850.4493441 − \dmodp{−17051.5506559}{765 433} \\ \| = 82850.4493441 − 748381.449344 = −665 531 \\ P_\text{max} \| = P_1 + \dfloorp{\dfrac{w}{f} − P_1}{g/R_1} \\ \| = 99902 + \dfloorp{−17051.5506559}{765 433} \\ \| = 99902 − 765 433 = −665 531 \end{align*}

dus \( P_\text{max} \lt 0 \) dus voor deze \( R \) is er op deze manier geen acceptabele waarde van \( P \).

Als je voor \( R = R_1 \) geen acceptabele waarde van \( P \) kunt vinden, probeer dan een steeds groter veelvoud van \( R_1 \) tot je wel een acceptabele \( P \) vindt. Dat kan, want omdat

\begin{equation} f P_1 − g Q_1 = R_1 \end{equation}

geldt ook

\begin{equation} f n P_1 − g n Q_1 = n R_1 \end{equation}

voor willekeurige \( n \).

Maar \( n P_1 \) mag niet groter zijn dan \( w/f \) dus \( n \) mag niet groter zijn dan \( w/(f P_1) \) en dat is vaak helemaal niet zo groot.

In ons voorbeeld mag \( n \) niet groter zijn dan

\[ \dfrac{w}{f P_1} = \dfrac{2 147 483 647}{25920×99902} = \dfrac{2 147 483 647}{2 589 459 840} = 0.829317224321 \]

en dat is zelfs kleiner dan 1.

Om toch meer kleine waarden van \( P \) te vinden kunnen we gebruik maken van de modulo-functie. Als we voor \( P \) nemen

\begin{equation} P = \dmodp{n P_1}{(g/R_1)} \end{equation}

dan is

\begin{eqnarray} \dfrac{n P_1 R_1}{g} \| = \| n\dfrac{R_1}{f}\dfrac{g Q_1 + R_1}{g} \\ P \| = \| \dfrac{g}{R_1}\dmod{\dfrac{n P_1 R_1}{g}} \eqvide{eq:dmodp} \\ \dfrac{f P}{g} \| = \|\dfrac{f}{R_1}\dmod{\dfrac{n P_1 R_1}{g}} = \dfrac{f}{R_1}\dmod{n\dfrac{R_1}{f}\dfrac{g Q_1 + R_1}{g}} \notag \\ \| = \| \dmodp{n Q_1 + \dfrac{n R_1}{g}}{(f/R_1)} \\ Q \| = \| \dfloorratio{f P}{g} = \dfloor{\dmodp{n Q_1 + \dfrac{n R_1}{g}}{(f/R_1)}} \notag \\ \| = \| \dmodp{\dfloor{n Q_1 + \dfrac{n R_1}{g}}}{(f/R_1)} = \dmodp{n Q_1 + \dfloor{\dfrac{n R_1}{g}}}{(f/R_1)} \eqvide{eq:floor(mod(x))} \\ R \| = \| f P − g Q \notag \\ \| = \| g\dmodp{n Q_1 + \dfrac{n R_1}{g}}{(f/R_1)} − g\dmodp{n Q_1 + \dfloor{\dfrac{n R_1}{g}}}{(f/R_1)} \notag \\ \| = \| g\dmodp{n Q_1 + \dfloor{\dfrac{n R_1}{g}} + \dmod{\dfrac{n R_1}{g}}}{(f/R_1)} − g\dmodp{n Q_1 + \dfloor{\dfrac{n R_1}{g}}}{(f/R_1)} \notag \\ \| = \| g\dmodp{n Q_1 + \dfloor{\dfrac{n R_1}{g}}}{(f/R_1)} + g\dmodp{\dmod{\dfrac{n R_1}{g}}}{(f/R_1)} \notag \\ \| \| − \dfrac{f g}{R_1} \iverson{\dmodp{n Q_1 + \dfloor{\dfrac{n R_1}{g}}}{(f/R_1)} + \dmodp{\dmod{\dfrac{n R_1}{g}}}{(f/R_1)} ≥ \dfrac{f}{R_1}} \notag \\ \| \| − g\dmodp{n Q_1 + \dfloor{\dfrac{n R_1}{g}}}{(f/R_1)} \notag \\ \| = \| g\dmodp{\dmod{\dfrac{n R_1}{g}}}{(f/R_1)} \notag \\ \| \| − \dfrac{f g}{R_1} \iverson{\dmodp{n Q_1 + \dfloor{\dfrac{n R_1}{g}}}{(f/R_1)} + \dmodp{\dmod{\dfrac{n R_1}{g}}}{(f/R_1)} ≥ \dfrac{f}{R_1}} \end{eqnarray}

Er geldt \( f/R_1 ≥ 1 \) en \( 0 ≤ \dmod{n R_1/g} \lt 1 \) dus de \( \dmodp{•}{(f/R_1)} \) daaromheen heeft geen effect, dus

\begin{equation} g\dmodp{\dmod{\dfrac{n R_1}{g}}}{(f/R_1)} = g\dmod{\dfrac{n R_1}{g}} = \dmodp{n R_1}{g} \end{equation}

De formule binnen de \( \iverson{•} \) is net zo om te schrijven tot

\begin{equation} \dmodp{n Q_1 + \dfloor{\dfrac{n R_1}{g}}}{(f/R_1)} + \dmod{\dfrac{n R_1}{g}} ≥ \dfrac{f}{R_1} \end{equation}

Er geldt

\begin{eqnarray} n Q_1 + \dfloorratio{n R_1}{g} \| \le \| \dfrac{f}{R_1} − 1 \\ \dmod{\dfrac{n R_1}{g}} \| \lt \| 1 \end{eqnarray}

omdat \( n Q_1 \) en \( \dfloor{n R_1/g} \) en ook \( f/R_1 \) hele getallen zijn. Dus de som van die twee is kleiner dan \( f/R_1 \), dus aan de voorwaarde binnen de \( \iverson{•} \) is nooit voldaan, dus die term valt weg. Al met al vinden we

\begin{align} P \| = \dmodp{n P_1}{(g/R_1)} \\ Q \| = \dmodp{n Q_1 + \dfloorratio{n R_1}{g}}{(f/R_1)} \\ R \| = \dmodp{n R_1}{g} \end{align}

Voor de berekening is deze vorm handiger:

\begin{align} P \| = \dmodp{n P_1}{(g/R_1)} \\ \{ ρ, R \} \| = \Div(n R_1, g) \\ Q \| = \dmodp{n Q_1 + ρ}{(f/R_1)} \end{align}

Zolang geldt \( n \lt g/R_1 \) is \( \dfloor{n R_1/g} = 0 \) en dus \( Q = \dmodp{n Q_1}{(f/R_1)} \). Dat zal in de praktijk meestal het geval zijn.

Met ons voorbeeld (\( P_1 = 99902, Q_1 = 3383, R_1 = 1, g = 765 433, f = 25920, t = 13835 \)) vinden we

\begin{align*} P \| = \dmodp{99902 n}{765 433} \\ \{ ρ, R \} \| = \Div(n, 765 433) \\ Q \| = \dmodp{3383 n + ρ}{25920} \end{align*}

\({n}\) \({P}\) \({ρ}\) \({R}\) \({Q}\) \({fP−gQ}\) \({X/w}\)
1 99902 0 1 3383 1 −20561.6
2 199804 0 2 6766 2 −141024.5
3 299706 0 3 10149 3 −261487.5
4 399608 0 4 13532 4 −381950.5
5 499510 0 5 16915 5 −502413.4
6 599412 0 6 20298 6 −622876.3
7 699314 0 7 23681 7 −743339.3
8 33783 0 8 1144 8 +2500.9
9 133685 0 9 4527 9 −9114.0
765432 665531 0 765432 22536 765432 −6.1
765433 0 1 0 0 0 +0.0
765434 99902 1 1 3383 1 −20561.6
765435 199804 1 2 6766 2 −141024.5

dus pas voor \( n = 8 \) vinden we een \( X \gt w \).

Om

\begin{equation} X = (w − f P − t)\dfrac{P}{R} \gt 0 \end{equation}

te vinden moet \( P \) voldoende dicht bij \( P_0 = (w − t)/(2 f) \) liggen.

Met \( P = \dmodp{n P_1}{(g/R_1)} \) is de kleinste positieve waarde \( n_0 \) van \( n \) waarvoor we \( P = P_0 \) krijgen gelijk aan \( n_0 = P_0/P_1 \), en de volgende waarde van \( n \) waarvoor \( P = P_0 \) ligt steeds \( g/P_1R_1 \) hoger dan de vorige, dus de waarden \( n_k \) van \( n \) die \( P = P_0 \) geven zijn

\begin{equation} n_k = \dfrac{P_0}{P_1} + k\dfrac{g}{P_1 R_1} \end{equation}

voor hele waarden \( 0 ≤ k \lt g \).

Het hele getal \( [n_k] = \dfloor{n_k + 1/2} \) het dichtste bij \( n_k \) is dan de kandidaat-\( n \). Calculate \( X \) for that value of \( n \) to see if it meets the condition that \( X \gt w \).

Opmerking: Rechte haken \( [x] \) worden in dit document gebruikt voor twee verschillende zaken: (1) iversonhaakjes: \( [x] \) geeft 1 als aan voorwaarde \( x \) voldaan is en anders 0; (2) afronden: \( [x] \) geeft het hele getal het dichtste bij \( x \). Je kunt aan \( x \) zien welke betekenis bedoeld is. Als \( x \) een voorwaarde uitdrukt zoals \( q \gt 3 \) dan gaat het om iversonhaakjes, en anders om afrondhaakjes.

In ons voorbeeld vinden we

\begin{align*} P_0 \| = \dfrac{w − t}{2 f} = \dfrac{2 147 483 647 - 13835}{2×25920} = 41424.9577932 \\ n_k \| = \dfrac{P_0}{P_1} + k\dfrac{g}{P_1 R_1} = \dfrac{41424.9577932}{99902} + \dfrac{765 433}{99902×1}k \\ \| = 0.414655940754 + 7.66183860183 k \\ n \| = \dfloor{n_k + 1/2} = \dfloor{0.914655940754 + 7.66183860183 k} \\ R \| = n \\ P \| = \dmodp{99902 n}{765 433} \\ X \| = (w − f P − t)\dfrac{P}{R} = (2 147 469 812 − 25920 P)\dfrac{P}{R} \end{align*}

De eerste paar relatief goede waarden van \( n \) zijn dan

\({k}\) \({n_k}\) \({n}\) \({P}\) \({Q}\) \({R}\) \({X/w}\)
0 0.41 0 0 0 0 +0.0
1 8.08 8 33783 1144 8 +2500.9
2 15.74 16 67566 2288 16 +779.0
3 23.40 23 1447 49 23 +61.8
4 31.06 31 35230 1193 31 +653.2
5 38.72 39 69013 2337 39 +295.5
6 46.39 46 2894 98 46 +60.7
7 54.05 54 36677 1242 54 +378.5
8 61.71 62 70460 2386 62 +170.0

De eerste \( n \) is 0 en valt daarom af. De eerste daarboven is 8, zoals we ook eerder zagen.

Als we formules \eqref{eq:detour}ff gebruiken dan is het voldoende dat \( X ≥ g \) om alle waarden \( |x| ≤ w \) aan te kunnen, want dan kunnen we formules \eqref{eq:detour}ff gebruiken om eerst \( \dabs{x} \lt g \) te maken. Als we formules \eqref{eq:detour}ff niet gebruiken, dan moet \( X ≥ w \) zijn om alle waarden \( |x| \lt w \) aan te kunnen.

Er kunnen meerdere combinaties van \( P \), \( Q \) en \( R \) zijn die \( X ≥ w \) of \( X ≥ g \) geven, en die zijn dan allemaal goed genoeg. Binnen die groep geven we weer de voorkeur aan kleine \( P \), \( Q \), \( R \), want dat rekent en leest gemakkelijker.

Voor het geval uit het vorige voorbeeld is \( X ≥ w \) voor 1498 waarden van \( R \) tussen 8 en 20312, en \( X ≥ g \) voor 82576 waarden van \( R \) tussen 8 en 765 426. Omdat we oplossingen voor \( X ≥ w \) vonden hebben we formules \eqref{eq:detour}ff niet nodig. Binnen de groep met \( X ≥ w \) zoeken we naar de kleinste waarde van \( P Q R \). We vinden

\({R}\) \({P}\) \({Q}\) \({PQR}\) \({X}\)
23 1447 49 1.6 × 106 1.33 × 1011
46 2894 98 1.3 × 107 1.30 × 1011
544 945 32 1.6 × 107 3.69 × 109
69 4341 147 4.4 × 107 1.28 × 1011
92 5788 196 1.0 × 108 1.26 × 1011

We kiezen \( P = 1447 \), dan \( R = 23 \) en \( Q = 49 \).

Nu rekenen we \( y\), \( e \) uit voor \( x = 1 710 321 \). Dan vinden we

\begin{align*} q \| = \dfloorratio{x}{P} = \dfloorratio{1 710 321}{1447} = 1181 \\ r \| = \dmodp{x}{P}= \dmodp{1 710 321}{1447} = 1414 \\ y \| = q Q + \dfloorratio{q R + f r + t}{g} \\ \| = 1181×49 + \dfloorratio{1181×23 + 25920×1414 + 13835}{765 433} \\ \| = 57869 + \dfloorratio{36 691 878}{765 433} \\ \| = 57869 + 47 = 57916 \\ e \| = \dmodp{36 691 878}{765 433} = 716 527 \end{align*}

Het grootste tussenresultaat was 36 691 878, wat ruim kleiner is dan \( w \).

Als we willekeurige grote tussenresultaten mochten hebben, dan hadden we gevonden

\begin{align*} y \| = \dfloorratio{f x + t}{g} = \dfloorratio{25920×1 710 321 + 13835}{765 433} = \dfloorratio{44 331 534 155}{765 433} = 57916 \\ e \| = \dmodp{44 331 534 155}{765 433} = 716 527 \end{align*}

dus hetzelfde resultaat, maar met een veel groter tussenresultaat 44 331 534 155.

Nog een voorbeeld: \( g = 146 097 \), \( f = 4800 \), \( t = 15793 \), \( w = 2^{31} − 1 = 2 147 483 647 \). Dan is \( \dfrac{w}{f} = \dfrac{2^{31} − 1}{4800} ≈ 447 392 \), dus we zoeken een \( P \lt 146 097 \lt 447 392 \) en een zo klein mogelijke \( R \).

Met het Uitgebreide Algoritme van Euclides (of een zoektocht) vinden we dat \( −15188 f + 499 g = 3 \) en er is geen som van een veelvoud van \( f \) en een veelvoud van \( g \) die dichter bij 0 ligt. Dus

\begin{align*} P_1 \| = \dmodp{−15188}{(146 097/3)} = \dmodp{−15188}{48699} = 33511 \\ Q_1 \| = \dmodp{−499}{(4800/3)} = \dmodp{−499}{1600} = 1101 \\ R_1 \| = 3 \end{align*}

Even controleren:

\[ f P_1 − g Q_1 = 4800×33511 − 146 097×1101 = 3 = R_1 \]

dus mogelijk goede combinaties zijn

\begin{align*} P \| = \dmodp{n P_1}{(g/R_1)} = \dmodp{33511 n}{48699} \\ \{ ρ, R \} \| = \Div(n R_1, 146 097) = \Div(3 n, 146 097) \\ Q \| = \dmodp{n Q_1 + ρ}{(f/R_1)} = \dmodp{1101 n + ρ}{1600} \end{align*}

De beste kandidaten voor \( n \) zijn

\begin{align*} P_0 \| = \dfrac{w − t}{2 f} = \dfrac{2 147 483 647 − 15793}{2×4800} = 223694.568125 \\ n_k \| = \dfrac{P_0}{P_1} + k\dfrac{g}{P_1 R_1} = \dfrac{223694.568125}{33511} + \dfrac{146 097}{33511×3} k \\ \| = 6.67525791904 + 1.4532243144 k \end{align*}

Voor kleine \( R \) vinden we de volgende combinaties:

\({R}\) \({P}\) \({Q}\)
3 33511 1101
6 67022 2202
9 100533 3303
12 134044 4404

Er zijn 57132 combinaties waarvoor \( X ≥ w \). De combinaties met de kleinste \( P Q R \) zijn:

\({P}\) \({Q}\) \({R}\) \({PQR}\) \({X/w}\)
487 16 48 3.74 × 105 10.1
974 32 96 2.99 × 106 10.1
761 25 375 7.13 × 106 41.3
1461 48 144 1.01 × 107 10.1
1248 41 423 2.16 × 107 37.7
6270 206 18 2.32 × 107 343.5

We kiezen \( P = 487 \), dan \( Q = 16 \) en \( R = 48 \). We rekenen \( y \), \( e \) uit voor \( x = 731 767 \). Dan is

\begin{align*} q \| = \dfloorratio{731 767}{487} = 1502 \\ r \| = \dmodp{731 767}{487} = 293 \\ y \| = 1502×16 + \dfloorratio{1502×48 + 4800×293 + 15793}{146 097} \\ \| = 24032 + \dfloorratio{1 494 289}{146 097} = 24032 + 10 = 24042 \\ e \| = \dmodp{1 494 289}{146 097} = 33319 \end{align*}

Het grootste tussenresultaat is 1 494 289, wat ruim kleiner is dan \( w \).

De volgende tabel toont dat we ook met de andere combinaties dezelfde uitkomsten krijgen, maar niet dezelfde tussenresultaten. In die tabel is \( z = q R + f r + t \).

\({P}\) \({Q}\) \({R}\) \({q}\) \({r}\) \({qQ}\) \({z}\) \({z/g}\) \({y}\) \({e}\)
487 16 48 1502 293 24032 1494289 10 24042 33319
974 32 96 751 293 24032 1494289 10 24042 33319
761 25 375 961 446 24025 2516968 17 24042 33319
1461 48 144 500 1267 24000 6169393 42 24042 33319
1248 41 423 586 439 24026 2370871 16 24042 33319
6270 206 18 116 4447 23896 21363481 146 24042 33319

Met de originele formule hadden we gevonden

\begin{align*} y \| = \dfloorratio{4800×731 767 + 15793}{146 097} = \dfloorratio{3 512 497 393}{146 097} = 24042 \\ e \| = \dmodp{3 512 497 393}{146 097} = 33319 \end{align*}

dus dezelfde uitkomsten maar dan met een grootste tussenresultaat gelijk aan 3 512 497 393, wat ruim groter is dan \( w \).

Ik heb voor alle \( w \) van 3 tot 1024 onderzocht wat de grootste waarden van \( f \) en \( g \) zijn waarvoor oplossingen te vinden zijn met \( X ≥ g \) of \( X ≥ w \), en wat de grootste \( P \), \( Q \), \( R \) en \( X \) zijn voor zulke oplossingen, en het grootste aantal \( c \) oplossingen, en het totale aantal \( N \) van combinaties van \( f \) en \( g \) waarvoor tenminste één oplossing is. Ik vind

\begin{align} \max(f_w) \| ≈ \dfloorratio{w}{4} \\ \max(f_g) \| ≈ \dfloorratio{w}{3} \\ \max(g_w) \| ≈ w − 5 + ⌊w⌉_2 \\ \max(g_g) \| ≈ w − 1 \\ \max(c_w) \| ≈ \dfloorratio{w + 8}{16} \\ \max(c_g) \| ≈ \dfloorratio{w − 1}{2} \\ \max(P_w) \| ≈ \dfloorratio{w}{2} − 2 + ⌊w⌉_2 \\ \max(P_g) \| ≈ \dfloorratio{w}{2} − 1 \\ \max(Q) \| ≈ \dfloorratio{2\sqrt{w − 1} − 3}{2} \\ \max(R_w) \| ≈ \dfloorratio{\sqrt{w + 1} − 1}{2} \\ \max(R_g) \| ≈ \frac{\sqrt{w(w + 1100)}}{25} \\ \max(X) \| ≈ \dfloorratio{w^2}{8} \\ N_w \| ≈ \frac{1}{5}w^{5/3} \\ N_g \| ≈ \frac{1}{3}w^{5/3} \end{align}

waar de variabelen met subscript \( w \) alleen slaan op \( X \gt w \), die met subscript \( g \) alleen op \( X \gt g \), en die zonder subscript slaan op allebei. De formules voor \( \max(R_g) \), \( N_w \) en \( N_g \) zijn benaderingen; de andere formules zijn exact voor \( 10 ≤ w ≤ 1024 \).

Bijvoorbeeld, voor \( w = 1023 \) vind ik

\begin{align*} \max(f_w) \| ≈ \dfloorratio{1023}{4} = 255 \\ \max(f_g) \| ≈ \dfloorratio{1023}{3} = 341 \\ \max(g_w) \| ≈ 1023 − 5 + ⌊1023⌉_2 = 1019 \\ \max(g_g) \| ≈ 1023 − 1 = 1022 \\ \max(c_w) \| ≈ \dfloorratio{1023 + 8}{16} = 64 \\ \max(c_g) \| ≈ \dfloorratio{1023 − 1}{2} = 511 \\ \max(P_w) \| ≈ \dfloorratio{1023}{2} − 2 + ⌊1023⌉_2 = 510 \\ \max(P_g) \| ≈ \dfloorratio{1023}{2} − 1 = 510 \\ \max(Q) \| ≈ \dfloorratio{2×\sqrt{1023 − 1} − 3}{2} ≈ ⌊30.47⌋ = 30 \\ \max(R_w) \| ≈ \dfloorratio{\sqrt{1023 + 1} − 1}{2} ≈ ⌊15.50⌋ = 15 \\ \max(R_g) \| ≈ \frac{\sqrt{1023 × (1023 + 1100)}}{25} ≈ 58.95 \\ \max(X) \| ≈ \dfloorratio{1023^2}{8} = 130816 \\ N_w \| ≈ \frac{1}{5}1023^{5/3} ≈ 20772.52 \\ N_g \| ≈ \frac{1}{3}1023^{5/3} ≈ 34620.87 \end{align*}

Deze waarden kloppen allemaal, behalve dat \( R_g = 59 \), \( N_w = 20014 \) en \( N_g = 33937 \).

Als we bovenstaande formules extrapoleren naar \( w = 2^{31} − 1 \) (voor waarden met een breedte van 32 bits), dan vinden we ongeveer

\begin{align*} \max(f_w) \| ≈ 5.4×10^8 \\ \max(f_g) \| ≈ 7.2×10^8 \\ \max(g) \| ≈ 2.1×10^9 \\ \max(c_w) \| ≈ 1.3×10^8 \\ \max(c_g) \| ≈ 1.1×10^9 \\ \max(P) \| ≈ 1.1×10^9 \\ \max(Q) \| ≈ 46340 \\ \max(R_w) \| ≈ 23170 \\ \max(R_g) \| ≈ 8.6×10^7 \\ \max(X) \| ≈ 5.8×10^{17} \\ N_w \| ≈ 7.1×10^{14} \\ N_g \| ≈ 1.2×10^{15} \end{align*}

dus als we zoeken naar een oplossing voor \( X ≥ w \) (zodat we formules \eqref{eq:detour}ff niet nodig hebben) dan hoeven we hooguit 23170 verschillende waarden van \( R \) te proberen. Als zo'n oplossing niet bestaat, dan zoeken we naar een oplossing voor \( X ≥ g \) (waarbij we formules \eqref{eq:detour}ff wel nodig hebben) en moeten we tot ongeveer 86 miljoen waarden van \( R \) proberen, wat nog steeds veel minder is dan de tot 1100 miljoen waarden van \( P \).

Voor een gegeven \( w \) is er voor lang niet alle combinaties van \( g \) en \( f \) tenminste één oplossing met \( X ≥ w \) of \( X ≥ g \). Bijvoorbeeld, voor \( w = 499 \) zijn er maar 6554 combinaties van \( g \) en \( f \) met tenminste één oplossing met \( X ≥ w \), en 10560 combinaties met tenminste één oplossing met \( X ≥ g \), terwijl er \( \frac{1}{2} (w − 2)×(w − 3) = 123 256 \) combinaties zijn met \( 2 ≤ f \lt g \lt w \). Hoe groter \( f \) is, hoe kleiner de kans dat er een oplossing is voor de combinatie van die \( f \) en een willekeurige \( g \gt f \).

Echter, als \( f \) en \( g \) flink kleiner zijn dan \( w \) dan is er wel een goede kans op een oplossing. Bijvoorbeeld, voor \( w = 2^{31} − 1 \) en voor \( f \) en \( g \) in de buurt van \( f ≈ 25920 \) en \( g ≈ 765 433 \) is er maar voor ongeveer 1 op de 9100 combinaties van \( f \) en \( g \) geen oplossing met \( X ≥ g \), en voor maar ongeveer 1 op de 54 combinaties geen oplossing met \( X ≥ w \).

13.5. Simpele kalender

We spreken voor het gemak over een kalender met alleen "dagen" en "maanden", waarbij de maanden langer zijn dan dagen, maar de formules werken natuurlijk ook voor andere tijdseenheden. Over kalenders met meer dan twee tijdseenheden hebben we het later.

We geven met \( m \) het maandnummer aan, met \( d \) het dagnummer in de maand, en met \( s \) het doorlopende dagnummer dat het begin- of eindpunt van de berekening is.

13.5.1. Van maand en dagnummer in de maand naar lopende dagnummer

In het simpelste geval is de gemiddelde lengte van de maand gelijk aan \( p \) dagen en zijn alle maanden óf \( \dfloor{p} \) óf \( \dceil{p} \) dagen lang. We noemen de kortste maandlengte \( q \), en de fractie van de maanden die lang zijn noemen we \( ψ \). Dan

\begin{eqnarray} q \| = \| \dfloor{p} \\ p \| = \| q + ψ \end{eqnarray}

Het doorlopende dagnummer \( s \) hangt op de volgende manier af van maandnummer \( m \) en dagnummer-in-de-maand \( d \):

\begin{eqnarray} σ \| ≡ \| \dfloor{p m + b} \label{eq:sm} \\ s \| ≡ \| σ + d \label{eq:s} \end{eqnarray}

waarbij \( m, d, s, σ \) hele getallen zijn, en \( p ≥ 1 \) en \( b \) voor een bepaalde kalender vaste waarden hebben. De eerste maand heeft \( m = 0 \) en de eerste dag van de maand heeft \( d = 0 \), want dat rekent eenvoudiger. \( σ \) is het lopende dagnummer van het begin van de maand. Als er waarden van \( σ \) voor verschillende maanden van belang zijn dan schrijven we \( σ[m] \) voor de waarde van \( σ \) die hoort bij maand \( m \).

De eerste dag (\( d = 0 \)) van de eerste maand (\( m = 0 \)) heeft lopende dagnummer \( s = 0 \), dus

\begin{equation} ⌊b⌋ = 0 ⇔ 0 ≤ b \lt 1 \end{equation}

Dus \( b \) moet tussen 0 en 1 zijn (0 kan wel, 1 kan niet).

13.5.2. Maandlengte

De lengte \( L(m) \) van maand \( m \) is

\begin{eqnarray} L(m) \| = \| σ(m + 1) − σ(m) \notag \\ \| = \| \dfloor{p m + b + p} − \dfloor{p m + b} \notag \\ \| = \| \dfloor{\dfloor{p m + b} + \dmod{p m + b} + p} − \dfloor{p m + b} \notag \\ \| = \| \dfloor{p m + b} + \dfloor{\dmod{p m + b} + p} − \dfloor{p m + b} \qquad ∵ \dfloor{p m + b} ∥ 1 \notag \\ \| = \| \dfloor{\dmod{p m + b} + p} \label{eq:Lnoi} \\ \| = \| \dfloor{\dmod{q m + ψ m + b} + q + ψ} \notag \\ \| = \| q + \dfloor{\dmod{ψ m + b} + ψ} \qquad ∵ q ∥ 1 \notag \\ \| = \| q + \dfloor{\dmod{ψ m + b}} + \dfloor{ψ} + \iverson{\dmod{ψ m + b} + \dmod{ψ} ≥ 1} \eqvide{eq:floor(x+y)i} \notag \\ \| = \| q + \iverson{\dmod{ψ m + b} + ψ ≥ 1} \qquad ∵ 0 ≤ ψ, \dmod{•} \lt 1 \label{eq:Li} \end{eqnarray}

Elke maand is \( q \) of \( q + 1 \) dagen lang. Maand \( m \) is lang (met \( q + 1 \) dagen) als \( \dmodp{ψ x + b}{1} ≥ 1 − ψ \). Gemiddeld is er een lange maand na elke

\begin{equation} Q = \frac{1}{ψ} \label{eq:Q} \end{equation}

maanden, maar dat is niet altijd een heel getal, dus in de praktijk is het aantal maanden tussen twee opeenvolgende lange maanden gelijk aan \( ⌊Q⌋ \) of \( ⌈Q⌉ \).

13.5.3. Maandpatroon verschuiven

Hiermee krijgen we een bepaald patroon van lange en korte maanden. Stel dat dat precies het patroon is dat we willen, behalve dat het \( \D m \) maanden verschoven moet worden. Dus als \( L_*, σ_*, b_* \) bij de oude kalender horen, en \( L, σ, b \) bij de nieuwe kalender, dan willen we dat voor alle waarden van \( m \) geldt dat

\begin{equation} L(m + \D m) = L_*(m) \end{equation}

dus

\begin{equation} \dfloor{\dmod{p m + b + p\D m} + p} = \dfloor{\dmod{p m + b_*} + p} \eqvide{eq:Lnoi} \end{equation}

dus we krijgen wat we willen als

\begin{equation} b = \dmod{b_* − p\D m} = \dmod{b_* − ψ\D m} \end{equation}

Bijvoorbeeld, met \( p = 17.2, b = 0 \) vinden we

\({m}\) \({pm+b}\) \({σ}\) \({L}\)
0 0 0 17
1 17.2 17 17
2 34.4 34 17
3 51.6 51 17
4 68.8 68 18
5 86 86 17
6 103.2 103 17
7 120.4 120 17
8 137.6 137 17
9 154.8 154 18
10 172 172

We zien dan maandlengtes van 17 dagen, met elke 5 maanden een maandlengte van 18 dagen, met de eerste lange maand als \( m = 4 \). Stel dat we die eerste lange maand liever op \( m = 3 \) hebben, dus 1 maand eerder. Dat krijgen we voor elkaar met

$$ b = \dmod{0 − 0.2×−1} = \dmod{0.2} = 0.2 $$

Met \( p = 17.2, b = 0.2 \) vinden we

\({m}\) \({pm+b}\) \({σ}\) \({L}\)
0 0.2 0 17
1 17.4 17 17
2 34.6 34 17
3 51.8 51 18
4 69 69 17
5 86.2 86 17
6 103.4 103 17
7 120.6 120 17
8 137.8 137 18
9 155 155 17
10 172.2 172

13.5.4. Van lopende dagnummer naar maand en dagnummer in de maand

We gaan van lopende maandnummer \( m \) en dagnummer \( d \) in de maand naar lopende dagnummer \( s \) via een formule zoals

\begin{equation} s = \dfloor{p m + v} + d = σ + d \label{eq:sv} \end{equation}

waar \( v \) een willekeurige vaste waarde heeft. Als \( v = b \) dan is formule \eqref{eq:s} gelijk aan formule \eqref{eq:sv}.

De formule om \( m \) uit te rekenen uit \( s \) moet dan zoiets zijn als

\begin{equation} m = f\dparen{\dfrac{s + u}{p}} \end{equation}

waarbij \( u \) een vaste waarde is en \( f(x) \) een geschikte afrondfunctie is waarvoor

\begin{align} \| f(x) ∥ 1 \\ \| x ∥ 1 ⇒ f(x + y) = x + f(y) \end{align}

Dan

\begin{eqnarray} m \| = \| f\dparen{\dfrac{\dfloor{p m + v} + d + u}{p}} \| \eqvide{eq:sv} \notag \\ \| = \| f\dparen{\dfrac{p m + v − \dmod{p m + v} + d + u}{p}} \| \eqvide{eq:dmodp} \notag \\ \| = \| f\dparen{m + \dfrac{v + u + d − \dmod{p m + v}}{p}} \notag \\ \| = \| m + f\dparen{\dfrac{v + u + d − \dmod{p m + v}}{p}} \end{eqnarray}

dus we moeten hebben dat

\begin{equation} f(ξ) = 0 \end{equation}

voor

\begin{equation} ξ = \dfrac{v + u + d − \dmod{p m + v}}{p} \end{equation}

voor alle waarden van \( m \) en voor alle toegestane \( d \) voor die \( m \). Dat betekent voor tenminste alle \( d \) waarvoor \( 0 \le d \le L(m) − 1 \), maar het zou fijn zijn als ook niet-hele waarden van \( d \) tot net onder \( L(m) \) toegelaten kunnen worden, want dan kunnen we ook niet-hele waarden van \( s \) behandelen.

De eerste dag van de maand begint als \( d = 0 \). Als de voorgaande dag ten onrechte tot de huidige maand gerekend wordt dan is daarvoor \( d = −1 \). Dus we willen dat \( f(ξ) = 0 \) als \( d = 0 \), en \( f(ξ) ≠ 0 \) als \( d = −1 \), voor alle \( m \).

Er geldt \( 0 \le \dmod{•} \lt 1 \) dus voor vaste \( d \) maar wisselende \( m \) varieert de waarde van \( ξ \) zodat

\begin{equation} \dfrac{v + u + d − 1}{p} \lt ξ \le \dfrac{v + u + d}{p} \label{eq:ξneed} \end{equation}

Als \( f(x) ≡ \dfloor{x} \) dan geldt dat \( f(x) = 0 \) voor \( 0 ≤ x \lt 1 \). Dat past niet bij formule \eqref{eq:ξneed}, omdat dan de ondergrens wel maar de bovengrens niet in het interval zit terwijl wij juist het tegenovergestelde nodig hebben.

Als \( f(x) ≡ \dceil{x} \) dan geldt dat \( f(x) = 0 \) voor \( −1 \lt x ≤ 0 \). Dat past bij formule \eqref{eq:ξneed}, als

\begin{align} \| \dfrac{v + u − 1}{p} = −1 \\ \| u = 1 − v − p \end{align}

dus

\begin{eqnarray} m \| = \| \dceilratio{s + 1 − v − p}{p} = \dceilratio{s + 1 − v}{p} − 1 \label{eq:svtom} \\ ξ \| = \| \dceilratio{1 − p + d − \dmod{p m + v}}{p} \end{eqnarray}

De laatste dag van de maand begint als \( d = L(m) − 1 \) en loopt tot (maar niet tot en met) \( d = L(m) \). Dus we willen dat \( f(ξ) = 0 \) als \( d = L(m) − 1 \), en \( f(ξ) ≠ 0 \) als \( d = L(m) \), voor alle \( m \).

We kunnen \( L(m) \) omrekenen tot

\begin{eqnarray} L(m) \| = \| \dfloor{p m + v + p} − \dfloor{p m + v} \notag \\ \| = \| \dparen{p m + v + p − \dmod{p m + v + p}} − \dparen{p m + v − \dmod{p m + v}} \notag \\ \| = \| p + \dmod{p m + v} − \dmod{p m + v + p} \end{eqnarray}

Dan geldt voor \( d = L(m) − 1 \) dat

\begin{eqnarray} ξ \| = \| \dceilratio{1 − p + L(m) − 1 − \dmod{p m + v}}{p} \notag \\ \| = \| \dceilratio{1 − p + p + \dmod{p m + v} − \dmod{p m + v + p} − 1 − \dmod{p m + v}}{p} \notag \\ \| = \| \dceilratio{−\dmod{p m + v + p}}{p} \notag \\ \| = \| 0 \qquad (p \gt 1) \end{eqnarray}

zoals gewenst, en voor \( d = L(m) \) dat

\begin{eqnarray} ξ \| = \| \dceilratio{1 − p + L(m) − \dmod{p m + v}}{p} \notag \\ \| = \| \dceilratio{1 − \dmod{p m + v + p}}{p} \notag \\ \| = \| 1 \qquad (p \gt 1) \end{eqnarray}

wat ongelijk aan 0 is, zoals gewenst.

Voor \( L(m) − 1 \lt d \lt L(m) \) geldt niet altijd dat \( f(ξ) = 0 \), dus als we formule \eqref{eq:svtom} gebruiken voor een waarde van \( s \) die niet een heel getal is dan kunnen we een verkeerd resultaat krijgen als die \( s \) een moment in maar na het begin van de laatste dag van de maand aanduidt.

Met \( p = 30.6 \) en \( v = b = 0 \) vinden we

\[ s = \dfloor{p m + b} + d = \dfloor{30.6 m} + d \]

en dus dat maand \( m = 2 \) begint op dag

\[ s = \dfloor{30.6×2} + 0 = \dfloor{61.2} = 61 \]

Van dag \( s \) naar maand \( m \) gaat via

\[ m = \dceilratio{s + 1 − b − p}{p} = \dceilratio{s − 29.6}{30.6} \]

Dat geeft, voor een paar momenten tussen \( s = 60 \) en \( s = 61 \):

\({s}\) \({\dfrac{s−29.6}{30.6}}\) \({m}\)
60 0.99346405 1
60.19 0.99967320 1
60.2 1. 1
60.21 1.0003268 2
61 1.0261438 2

dus voor \( s \) gelijk aan of net onder 60.2 vinden we \( m = 1 \) zoals gewenst, maar voor \( s \) groter dan 60.2 en kleiner dan 61 vinden we al \( m = 2 \) terwijl ook dat deel van dag \( s = 60 \) helemaal in maand \( m = 1 \) hoort. Dus om altijd het juiste maandnummer te vinden moet \( s \) een heel getal zijn.

En dan kunnen we ook \( d \) vinden.

\begin{eqnarray} p m \| = \| \dceilp{s + 1 − v}{p} − p \notag \\ \| = \| s + 1 − v − p + \ddomp{s + 1 − v}{p} \| \eqvide{eq:ddomp} \\ d \| = \| s − \dfloor{p m + v} \notag \\ \| = \| s − \dfloor{s + 1 − p + \ddomp{s + 1 − v}{p}} \notag \\ \| = \| −\dfloor{1 − p + \ddomp{s + 1 − v}{p}} \| \qquad (s ∥ 1) \notag \\ \| = \| \dceil{p − 1 − \ddomp{s + 1 − v}{p}} \| \eqvide{eq:ceil(−x)} \end{eqnarray}

Dus als we \( s + 1 − v \) scheiden in

\begin{equation} s + 1 − v = p μ − δ = p\dceilratio{s + 1 − v}{p} − \ddomp{s + 1 − v}{p} \end{equation}

dan

\begin{align} m \| = μ − 1 \label{eq:mviaμ} \\ d \| = \dceil{p − 1 − δ} \label{eq:dviaδ} \end{align}

We kunnen dit omschrijven voor gebruik met de \( \Div \)-functie, via

\begin{equation} \{ −μ, δ \} = \Div(−(s + 1 − v), p) \end{equation}

Voor de simpele kalender is \( v = b \) dus dan

\begin{align} \{ −μ, δ \} \| = \Div(−(s + 1 − b), p) \\ m \| = μ − 1 = \dceilratio{s + 1 − b}{p} − 1 \label{eq:ynaarx} \\ d \| = \dceil{p − 1 − δ} = \dceil{p − 1 − \ddomp{s + 1 − b}{p}} \end{align}

Een voorbeeld, met \( p = 30.6 \) en \( b = 0 \). We vinden

\begin{align*} σ \| = \dfloor{p m + b} = \dfloor{30.6 m} \\ L(m) \| = q + C\dparen{\dmodp{ψ m + b}{1} + ψ ≥ 1} = 30 + C\dparen{\dmodp{0.6 m}{1} ≥ 0.4} \\ μ \| = \dceilratio{s + 1 − b}{p} = \dceilratio{s + 1}{30.6} \\ m \| = μ − 1 = \dceilratio{s − 29.6}{30.6} \\ δ \| = \ddomp{s + 1 − b}{p} = \ddomp{s + 1}{30.6} \\ d \| = \dceil{p − 1 − δ} = \dceil{29.6 − δ} = \dceil{29.6 − \ddomp{s + 1}{30.6}} \end{align*}

En dan voor de eerste paar maanden

\({m}\) \({pm}\) \({σ(m)}\) \({L(m)}\)
−1 −30.6 −31 31
0 0 0 30
1 30.6 30 31
2 61.2 61 30
3 91.8 91 31
4 122.4 122 31
5 153 153 30
6 183.6 183 31
7 214.2 214 30
8 244.8 244 31
9 275.4 275 31
10 306 306

Omdat \( 5 p = 153 \) een heel getal is herhaalt het patroon van maandlengtes zich na 5 maanden. We zien hier het patroon 31-30-31-30-31 dat in de Gregoriaanse kalender de maanden maart - juli en augustus - december beschrijft.

Nu gaan we de andere kant op voor een paar lopende dagnummers:

\({s}\) \({μ}\) \({δ}\) \({m}\) \({d}\)
−2 0 1. −1 29
−1 0 0. −1 30
0 1 29.6 0 0
1 1 28.6 0 1
90 3 0.8 2 29
91 4 30.4 3 0
120 4 1.4 3 29
121 4 0.4 3 30
122 5 30. 4 0
123 5 29. 4 1

13.6. Met alleen hele getallen

Rekenmachines en computers rekenen meestal met een beperkt aantal cijfers achter de komma, dus kun je last krijgen van afrondingsfouten. Als \( (s + 1 − b)/p = 6.99999999998 \) maar door een hele kleine afrondfout denkt je rekenmachine dat \( (s + 1 − b)/p = 7.00000000001 \), dan vindt je rekenmachine dat \( \dceil{(s + 1 − b)/p} = 7 \) in plaats van 6, en dan vind je de verkeerde maand.

Het omvormen van formules met \( ⌈•⌉ \) of \( ⌈•⌋_1 \) naar formules met \( ⌊•⌋ \) of \( ⌊•⌉_1 \) of \( \Div \) is gemakkelijker als alleen hele getallen worden gebruikt, want voor willekeurige hele getallen \( x \) en \( y \) (\( y \gt 0 \)) geldt

\begin{eqnarray} \dceilratio{x}{y} \| = \| \dfloorratio{x − 1}{y} + 1 \| \eqvide{eq:ceil2floor(x−1)} \\ \ddomp{x}{y} \| = \| y − 1 − \dmodp{x − 1}{y} \| \eqvide{eq:dom2mod(x−1)} \end{eqnarray}

Als de gemiddelde lengte \( p \) een breuk is, dan kunnen we afrondingsfouten ontlopen door de formules om te schrijven tot formules met breuken. We stellen

\begin{align} p \| = \dfrac{f}{g} = q + \dfrac{h}{g} \\ q \| = \dfloorratio{f}{g} \\ h \| = \dmodp{f}{g} \end{align}

met \( f \), \( g \) hele getallen groter dan nul. Dan vinden we, voor een willekeurige waarde \( x \).

\begin{equation} \dmodp{x}{f/g} = \dmodp{x}{p} = p\dmod{\dfrac{x}{p}} = \dfrac{f \dmod{\dfrac{gx}{f}}}{g} = \dfrac{\dmodp{gx}{f}}{g} \label{eq:gmodp} \end{equation}

en net zo

\begin{equation} \ddomp{x}{f/g} = \dfrac{\ddomp{gx}{f}}{g} \label{eq:gdomp} \end{equation}

Van maand \( m \) en dag \( d \) naar lopende dagnummer \( s \) gaat dan via

\begin{equation} t ≝ vg \end{equation}

\begin{align} s \| = \dfloor{p m + v} + d \notag \\ \| = \dfloor{\dfrac{f m + v g}{g}} + d \notag \\ \| = \dfloor{\dfrac{f m + t}{g}} + d \end{align}

waarbij we eisen dat ook \( t \) een heel getal is. Als \( v \) een breuk is kun je dat altijd voor elkaar krijgen door de juiste keuze van \( g \).

Voor de lengte van de maand vinden we

\begin{equation} L(m) = q + \iverson{\dmodp{h m + t}{g} ≥ g − h} \end{equation}

Voor de berekening van \( m \) en \( d \) uit \( s \) vinden we:

\begin{eqnarray} m \| = \| \dceilratio{s + 1 − v}{p} − 1 = \dceilratio{g s + g − t}{f} − 1 \notag \\ \| = \| \dfloorratio{gs + g − t − 1}{f} \| (t, g, s, f ∥ 1) \eqvide{eq:ceil2floor(x−1)} \label{eq:ynaarx2} \\ d \| = \| \dceil{p − 1 − \ddomp{s + 1 − v}{p}} \notag \\ \| = \| \dceilratio{f − g − \ddomp{g s + g − t}{f}}{g} \| \eqvide{eq:gdomp} \notag \\ \| = \| \dfloorratio{f − g − \ddomp{g s + g − t}{f} − 1}{g} + 1 \| (t, g, s, f ∥ 1) \eqvide{eq:ceil2floor(x−1)} \notag \\ \| = \| \dfloorratio{f − g − (f − 1 − \dmodp{g s + g − t − 1}{f}) − 1}{g} + 1 \| \eqvide{eq:dom2mod(x−1)} \notag \\ \| = \| \dfloorratio{\dmodp{g s + g − t − 1}{f}}{g} \| \eqvide{eq:dom2mod(x−1)} \end{eqnarray}

Samenvattend, van lopende maandnummer \( m \) en dagnummer \( d \) in de maand naar lopende dagnummer \( s \):

\begin{equation} s = \dfloorratio{fm + t}{g} + d \end{equation}

en van \( s \) naar \( m \) en \( d \):

\begin{align} w \| = g s + g − t − 1 \\ m \| = \dfloorratio{w}{f} \\ d \| = \dfloorratio{\dmodp{w}{f}}{g} \end{align}

wat ook kan worden geschreven als

\begin{align} \{ m, ω \} \| = \Div(g s + g − t − 1, f) \label{eq:ynaarxr} \\ d \| = \dfloorratio{ω}{g} \end{align}

Nu kun je alle berekeningen doen met breuken, die geen cijfers achter de komma hebben en dus geen afrondfouten geven.

Voor dezelfde kalender als voorheen hebben we \( p = 30.6 = 153/5, b = 0 \), dus \( f = 153, g = 5, t = 0 \). We vinden dan

\begin{align*} s \| = \dfloorratio{153 m}{5} + d \\ w \| = 5s + 4 \\ m \| = \dfloorratio{5 s + 4}{153} \\ d \| = \dfloorratio{\dmodp{5 s + 4}{153}}{5} \end{align*}

en voor het begin van de eerste paar maanden

\({m}\) \({σ}\) \({L(m)}\)
0 0 30
1 30 31
2 61 30
3 91 31
4 122 31
5 153 30
6 183 31
7 214 30
8 244 31
9 275 31
10 306 30
11 336 31
12 367

Nu gaan we de andere kant op voor een paar lopende dagnummers:

\({s}\) \({w}\) \({m}\) \({\dmodp{w}{f}}\) \({d}\)
−2 −6 −1 147 29
−1 −1 −1 152 30
0 4 0 4 0
1 9 0 9 1
120 604 3 145 29
121 609 3 150 30
122 614 4 2 0
123 619 4 7 1

13.7. Erg ongelijke maanden

Hierboven namen we aan dat een lange maand maar één dag langer was dan een korte maand, maar dat verschil mag best groter zijn. Stel dat korte maanden \( q \) dagen lang zijn en dat lange maanden \( q + r \) dagen lang zijn, met \( q \), \( r \) hele getallen groter dan nul, en dat een fractie \( ψ \) (tussen 0 en 1) van de maanden lang is. Dan is de gemiddelde lengte van een maand gelijk aan

\begin{equation} p = q + rψ \end{equation}

dagen. De formule om het doorlopende dagnummer \( σ \) van de eerste dag van maand \( m \) uit te rekenen is dan

\begin{equation} σ = q m + r\dfloor{ψ m + b} \label{eq:sm2} \end{equation}

Als we daarin \( r = 1 \) invullen dan krijgen we

\begin{eqnarray} σ \| = \| q m + \dfloor{ψ m + b} \notag \\ \| = \| \dfloor{(q + ψ) m + b} \notag \\ \| = \| \dfloor{p m + b} \end{eqnarray}

dus hetzelfde als formule \eqref{eq:sm}.

Met formule \eqref{eq:sm2} is de lengte \( L(m) \) van maand \( m \)

\begin{eqnarray} L(m) \| = \| σ(m + 1) − σ(m) \label{eq:L} \\ \| = \| q(m + 1) + r\dfloor{ψ(m + 1) + b} − (q m + r\dfloor{ψ m + b}) \notag \\ \| = \| q + r\iverson{\dfloor{ψ m + ψ + b} − \dfloor{ψ m + b}} \notag \\ \| = \| q + r\iverson{\ddom{ψ m + b} + ψ ≥ 1} \eqavide{eq:floor(x+y)i} \end{eqnarray}

dus de lange maanden zijn de maanden waarvoor \(\ddomp{ψ m + b}{1} + ψ ≥ 1\), net als eerder bij de simpele kalender.

De formule om het doorlopende dagnummer \( s \) te berekenen uit maandnummer \( m \) en dagnummer-in-de-maand \( d \) is dan

\begin{eqnarray} s \| = \| σ + d \notag \\ \| = \| q m + r\dfloor{ψ m + b} + d \label{eq:xnaary3} \end{eqnarray}

Hoe gaan we nu de andere kant op? Daartoe vergelijken we het doorlopende dagnummer dat uit vergelijking \eqref{eq:xnaary3} komt voor de eerste dag (\( d = 0 \)) van maand \( m \) met het doorlopende dagnummer dat voor dezelfde \( m \) komt uit de meest vergelijkbare simpelste kalender. We schrijven de uitkomst voor de gewenste kalender als \( σ \), en voor de simpelere vergelijkingskalender als \( σ_* \).

\begin{align} σ \| = q m + r\dfloor{ψ m + b} \\ σ_* \| = q m + \dfloor{r(ψ m + b)} = \dfloor{p m + v} \label{eq:σ*} \\ p \| ≝ q + r ψ \\ v \| ≝ r b \\ \D σ ≝ σ_* − σ \| = \dfloor{r(ψ m + b)} − r\dfloor{ψ m + b} \label{eq:∆σ} \\ \| = \dfloor{r\dmod{ψ m + b}} \| \eqvide{eq:floor(nx)−nfloor(x)} \end{align}

Voor dit verschil geldt

\begin{equation} 0 \le σ_* − σ \le r − 1 \end{equation}

dus het begin van maand \( m \) in de doelkalender is tussen \( 0 \) en \( r − 1 \) dagen (inclusief) voor het begin van maand \( m \) in de simpele kalender.

Bijvoorbeeld, stel dat \( q = 30, ψ = 0.12, r = 5, b = 0.1 \). Dan is \( p = q + r ψ = 30.6 \) de gemiddelde lengte van een maand. Dan vinden we voor de eerste 10 maanden

\({m}\) \({σ_*}\) \({σ}\) \({σ_* − σ}\) \({ψm + b}\) \({r\dmod{ψm + b}}\)
0 0 0 0 0.1 0.5
1 31 30 1 0.22 1.1
2 61 60 1 0.34 1.7
3 92 90 2 0.46 2.3
4 122 120 2 0.58 2.9
5 153 150 3 0.7 3.5
6 184 180 4 0.82 4.1
7 214 210 4 0.94 4.7
8 245 245 0 1.06 0.3
9 275 275 0 1.18 0.9

en \( σ_* − σ \) varieert tussen 0 en \( r − 1 = 5 − 1 = 4 \) zoals verwacht.

Voor die simpelere kalender gebaseerd op \( σ_* \) hebben we formule \eqref{eq:svtom} om het maandnummer uit te rekenen uit het lopende dagnummer:

\[ m_*(s) = \dceilratio{s + 1 − v}{p} − 1 \]

Dat betekent dat

\begin{equation} m_↑ = m_*(s + \max(\D σ)) = \dceilratio{s + \max(\D σ) + 1 − v}{p} − 1 \end{equation}

groter of gelijk is aan het goede maandnummer. En

\begin{equation} m_↓ = m_*(s + \min(\D σ)) = \dceilratio{s + \min(\D σ) + 1 − v}{p} − 1 \end{equation}

is kleiner of gelijk is aan het goede maandnummer:

\begin{equation} m_↓ ≤ m ≤ m_↑ \end{equation}

Voor ons huidige probleem is \( \min(\D σ) = 0 \) en \( \max(\D σ) = r − 1 \), dus

\begin{eqnarray} m_↑ \| = \| \dceilratio{s + r − v}{p} − 1 \\ m_↓ \| = \| \dceilratio{s + 1 − v}{p} − 1 = m_* \end{eqnarray}

maar voor later gebruik is het gunstig om \( \min(\D σ)\) en \( \max(\D σ) \) te laten staan.

Met \( m_↑ \) vinden we

\begin{equation} d_↑ = s − σ(m_↑) \end{equation}

Als \( d_↑ \lt 0 \) dan is \( m_↑ \) te groot. Als \( d_↑ \ge 0 \) dan hebben we het juiste maandnummer gevonden, maar die \( d_↑ \) is waarschijnlijk niet het juiste dagnummer.

Kunnen we een recept vinden om \( d \) uit te rekenen met een vast aantal stappen? Zoiets als

\begin{align} m_↑ \| ≡ \dceilratio{s + \max(\D σ) + 1 − v}{p} − 1 \\ d_↑ \| = s − σ(m_↑) \\ m \| = m_↑ + ξ \\ d \| = s − σ(m) \end{align}

waar \( ξ \) de correctie is die we moeten toepassen op \( m_↑ \) om \( m \) te vinden. We kunnen niet in alle gevallen \( ξ \) in één keer vinden, maar soms wel als \( ξ = 0 \) of \( ξ = 1 \), dus als het verschil tussen \( m_↑ \) en \( m \) hooguit 1 is.

We moeten dan hebben dat \( ξ = 0 \) als \( d_↑ ≥ 0 \) en dat \( ξ = −1 \) als \( d_↑ \lt 0 \). Dat suggereert zoiets als

\begin{equation} ξ = \dfloorratio{d_↑}{Ξ} \end{equation}

want dat geeft \( ξ = 0 \) als \( 0 \le d_↑ \lt Ξ \) en geeft \( ξ = −1 \) als \( −Ξ \le d_↑ \lt 0 \). Wat voor waarde moeten we dan gebruiken voor \( Ξ \)? Dat hangt af van de grootste en kleinste waarden die \( d_↑ \) kan hebben, dus laten we die afleiden.

\begin{align} s \| = σ(m) + d \notag \\ \| = σ_*(m) − \D σ(m) + d \notag \\ \| = \dfloor{p m + v} − \D σ(m) + d \notag \\ \| = p m + v − \dmod{p m + v} − \D σ(m) + d \end{align}

dus

\begin{align} m_↑ − m \| = \dceilratio{s + \max(\D σ) + 1 − v}{p} − 1 − m \notag \\ \| = \dceilratio{p m + v − \dmod{p m + v} − \D σ(m) + d + \max(\D σ) + 1 − v}{p} − 1 − m \notag \\ \| = \dceilratio{1 − \dmod{p m + v} + \max(\D σ) − \D σ(m) + d}{p} − 1 \end{align}

Altijd geldt \( 0 \lt 1 − \dmodp{•}{1} \le 1 \) en \( \max(\D σ) − \D σ(m) \ge 0 \) en \( d ≥ 0 \) dus is het stuk in \( \dceil{•} \) altijd groter dan 0, dus \( m_↑ − m ≥ 0 \) zoals gewenst. Wanneer is zeker \( m_↑ − m ≤ 1 \)? Dan moet

\begin{align*} \dceilratio{1 − \dmod{p m + v} + \max(\D σ) − \D σ(m) + d}{p} ≤ 2 \\ 1 − \dmod{p m + v} + \max(\D σ) − \D σ(m) + d ≤ 2p \end{align*}

De grootste waarde die \( d \) kan hebben is \( \max(L) − 1 \), dus we hebben zeker \( m_↑ − m \le 1 \) als

\begin{equation} ρ ≡ \max(\D σ) − \min(\D σ) + \max(L) − 2 p ≤ 0 \label{eq:singlepass} \end{equation}

Als \( m_↑ = m \) dan is de kleinste waarde van \( d_↑ \) gelijk aan 0 en de grootste gelijk aan \( \max(L) − 1 \).

Als \( m_↑ = m + 1 \) dan

\begin{eqnarray} d_↑ \| = \| s − σ(m_↑) \notag \\ \| = \| s − σ(m + 1) \notag \\ \| = \| \dparen{p m + v − \dmod{p m + v} − \D σ(m) + d} \notag \\ \| \| − \dparen{p m + v + p − \dmod{p m + v + p} − \D σ(m + 1)} \notag \\ \| = \| d − p + \dparen{\dmod{p m + v + p} − \dmod{p m + v}} + \D σ(m + 1) − \D σ(m) \notag \\ \| \gt \| 0 − p + \min\dparen{\dmod{p m + v + p} − \dmod{p m + v}} + \min(\D σ(m + 1) − \D σ(m)) \notag \\ \| = \| −p + (\dmod{p} − 1) + \min(\D σ(m + 1) − \D σ(m)) \eqvide{eq:ddomp} \notag \\ \| = \| −p + \dmod{p} − 1 + \min(L_*(m) − L(m)) \vide{\eqref{eq:∆σ}, \eqref{eq:L}} \notag \\ \| = \| −\dfloor{p} − 1 + \min(L_*(m) − L(m)) \eqvide{eq:dmodp} \notag \\ \| ≥ \| −\dfloor{p} − 1 + \min(L_*) − \max(L) \notag \\ \| = \| −\dfloor{p} − 1 + \dfloor{p} − \max(L) \notag \\ \| = \| −1 − \max(L) \notag \\ d_↑ \| \gt \| −1 − \max(L) \\ d_↑ \| ≥ \| −\max(L) \end{eqnarray}

dus

\begin{equation} −\max(L) ≤ d_↑ ≤ \max(L) − 1 \end{equation}

Voor

\[ ξ = \dfloorratio{d_↑}{Ξ} \]

hebben we dan nodig dat aan allebei de volgende eisen is voldaan:

\begin{align*} \dfloorratio{−\max(L)}{Ξ} = −1 \\ \dfloorratio{\max(L) − 1}{Ξ} = 0 \end{align*}

Aan allebei die eisen is voldaan als

\begin{equation} Ξ ≥ \max(L) \end{equation}

Dus als we

\begin{equation} Ξ = \max(L) \end{equation}

gebruiken (of een grotere waarde) dan voldoen we aan beide voorwaarden.

Samengevat, als

\[ ρ = \max(\D σ) − \min(\D σ) + \max(L) − 2 p ≤ 0 \]

dan

\begin{align} m_↑ \| = \dceilratio{s + \max(\D σ) + 1 − v}{p} − 1 \\ d_↑ \| = s − σ_↑ = s − σ(m_↑) \\ ξ \| = \dfloorratio{d_↑}{\max(L)} \\ m \| = m_↑ + ξ \\ d \| = s − σ(m) \end{align}

Met

\begin{align*} v \| = r b \\ \max(\D σ) \| = r − 1 \\ \min(\D σ) \| = 0 \\ \max(L) \| = q + r \\ p \| = q + r ψ \end{align*}

vinden we

\begin{align} m_↑ \| = \dceilratio{s + r − r b}{p} − 1 \label{eq:ynaarx3} \\ d_↑ \| = s − σ_↑ = s − σ(m_↑) \\ ρ \| = 2 r(1 − ψ) − 1 − q \\ ξ \| = \dfloorratio{d_↑}{q + r} \\ m \| = m_↑ + ξ \\ d \| = s − σ(m) \end{align}

dus \( ρ ≤ 0 \) komt overeen met

\begin{equation} r ≤ \dfrac{1}{2} \dfrac{q + 1}{1 − ψ} ≥ q + 1 \end{equation}

Als \( ρ \gt 0 \) dan werkt bovenstaand recept niet altijd dus dan is dat recept niet geschikt. Zie dan hoofdstuk 13.9.

Voor de kalender uit het vorige voorbeeld vinden we

\begin{align*} m_↑ \| = \dceilratio{s + r − r b}{p} − 1 = \dceilratio{s − 26.1}{30.6} \\ ρ \| = 2 r(1 − ψ) − q − 1 = 2×5×(1 − 0.12) − 1 − 30 = −22.2 ≤ 0 \end{align*}

Omdat \( ρ ≤ 0 \) kunnen we het recept met het vaste aantal stappen gebruiken.

\({s}\) \({m}\) \({\dfrac{s-26.1}{30.6}}\) \({m_↑}\) \({m_↑-m}\) \({d_↑}\) \({ξ}\) \({m}\) \({d}\)
−5 −1 −1.0163399 −1 0 30 0 −1 30
−4 −1 −0.98366013 0 1 −4 −1 −1 31
0 0 −0.85294118 0 0 0 0 0 0
1 0 −0.82026144 0 0 1 0 0 1
29 0 0.094771242 1 1 −1 −1 0 29
30 1 0.12745098 1 0 0 0 1 0
59 1 1.0751634 2 1 −1 −1 1 29
60 2 1.1078431 2 0 0 0 2 0
89 2 2.0555556 3 1 −1 −1 2 29
90 3 2.0882353 3 0 0 0 3 0
119 3 3.0359477 4 1 −1 −1 3 29
120 4 3.0686275 4 0 0 0 4 0
148 4 3.9836601 4 0 28 0 4 28
149 4 4.0163399 5 1 −1 −1 4 29
150 5 4.0490196 5 0 0 0 5 0
153 5 4.1470588 5 0 3 0 5 3
154 5 4.1797386 5 0 4 0 5 4
209 6 5.9771242 6 0 29 0 6 29
210 7 6.0098039 7 0 0 0 7 0
214 7 6.1405229 7 0 4 0 7 4
215 7 6.1732026 7 0 5 0 7 5

en daar is inderdaad \( m_↑ ≥ m\).

Als \( p = \dfrac{f}{g} \), \( ψ = \dfrac{h}{g}\) en \( b = \dfrac{t}{g} \) breuken zijn (\( f, g, h, t \) zijn hele getallen met \( f \gt g \gt 0 \), \( 0 \le h, t \lt g \)) dan vinden we

\begin{align} s \| = σ + d = q m + r\dfloorratio{h m + t}{g} + d \label{eq:xnaary3r} \\ m_↑ \| = \dceilratio{s + \max(\D σ) + 1 − v}{p} − 1 \notag \\ \| = \dceilratio{gs + g\max(\D σ) + g − gv}{f} − 1 \notag \\ \| = \dceilratio{gs + g\max(\D σ) + g − t}{f} − 1 \notag \\ \| = \dfloorratio{gs + g\max(\D σ) + g − t − 1}{f} \eqavide{eq:ceil2floor(x−1)} \\ ρ \| = 2 r\dparen{1 − \dfrac{h}{g}} − 1 − q \\ d_↑ \| = s − q m_↑ − r\dfloorratio{h m_↑ + t}{g} \\ ξ \| = \dfloorratio{d_↑}{q + r} \\ m \| = m_↑ + ξ \\ d \| = s − q m − r\dfloorratio{h m + t}{g} \end{align}

Voor de kalender uit de vorige voorbeelden vinden we (met \( q = 30\), \( ψ = 0.12 = 3/25\), \( r = 5\), \( b = 0.1 = 1/10 \)) \( f = 1530, g = 50, h = 6, t = 5 \) en dan

\begin{align*} σ \| = 30 m + 5\dfloorratio{6 m + 5}{50} \\ s \| = 30 m + 5\dfloorratio{6 m + 5}{50} + d \\ m_↑ \| = \dfloorratio{50 s + 50×4 + 50 − 5 − 1}{1530} = \dfloorratio{50 s + 244}{1530} \\ d_↑ \| = s − 30 m_↑ − 5\dfloorratio{6 m_↑ + 5}{50} \\ ξ \| = \dfloorratio{d_↑}{35} \\ m \| = m_↑ + ξ \\ d \| = s − 30 m − 5\dfloorratio{6 m + 5}{50} \end{align*}

\({m}\) \({σ}\)
0 0
1 30
2 60
3 90
4 120
5 150
6 180
7 210
8 245
9 275

\({s}\) \({m_↑}\) \({d_↑}\) \({ξ}\) \({m}\) \({d}\)
−5 −1 30 0 −1 30
−4 0 −4 −1 −1 31
−1 0 −1 −1 −1 34
0 0 0 0 0 0
1 0 1 0 0 1
148 4 28 0 4 28
149 5 −1 −1 4 29
150 5 0 0 5 0
209 6 29 0 6 29
210 7 0 0 7 0

13.8. Veel soorten ongelijke maanden

Nu laten we toe dat er nog meer verschillende maandsoorten zijn met verschillende lengtes. In formule \eqref{eq:xnaary3} gaf \( \dfloor{ψm + b} \) het patroon van lange maanden (met verschuiving naar wens). We laten nu een willekeurig aantal van die patronen toe, elk met hun eigen lengteverschil \( r_i \) (dat positief of negatief mag zijn), voorkomstfractie \( 0 \lt ψ_i \lt 1 \) en verschuiving \( b_i \). Dan vinden we

\begin{align} σ \| = q m + \sum_{i}r_i \dfloor{ψ_i m + b_i} \\ s = σ + d \| = q m + \sum_{i} r_i \dfloor{ψ_i m + b_i} + d \label{eq:xnaary4} \end{align}

De afleiding van de formule in omgekeerde richting gaat analoog aan die van formule \eqref{eq:ynaarx3}. We vinden

\begin{eqnarray} σ_* \| = \| q m + \dfloor{\sum_i r_i (ψ_i m + b_i)} \notag \\ \| = \| \dfloor{p m + \sum_i r_i b_i} \notag \\ \| = \| p m + \sum_i r_i b_i − \dmod{\sum_i r_i \dparen{ψ_i m + b_i}} \label{eq:σ*∑} \eqvide{eq:dmodp} \\ \D σ = σ_* − σ \| = \| \dfloor{\sum_i r_i (ψ_i m + b)} − \sum_i r_i\dfloor{ψ_i m + b_i} \notag \\ \| = \| \dfloor{\sum_i r_i \dmod{ψ_i m + b_i}} \eqvide{eq:floor(sumnx)−sumnfloor(x)} \end{eqnarray}

dus

\begin{align} v \| = \sum_i r_i b_i \\ \max(L) \| ≤ q + \sum_{r_i \gt 0} r_i \\ \max(\D σ) \| ≤ \dparen{\sum_{r_i \gt 0} r_i} − 1 \\ \min(\D σ) \| ≥ \sum_{r_i \lt 0} r_i \\ ρ \| = \max(\D σ) − \min(\D σ) + \max(L) − 2 p \notag \\ \| ≤ 2\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_{r_i \lt 0} r_i} − q − 1 − 2\dparen{\sum_i r_i ψ_i} \end{align}

We mogen voor \( \max(L) \) in onderstaande formules best een hogere waarde invullen, zoals de waarde die hierboven aan de rechterkant van \( \max(L) ≤ \) staat, en net zo voor de andere ongelijkheden. We doen daarom hieronder voor het gemak alsof die ongelijkheden gelijkheden zijn.

En dus

\begin{align} m_↑ \| = \dceilratio{s + \max(\D σ) + 1 − v}{p} − 1 \notag \\ \| = \dceilratio{s + \dparen{\sum_{r_i \gt 0} r_i} − \sum_i r_i b_i}{p} − 1 \label{eq:ynaarx4} \\ d_↑ \| = s − q m_↑ − \sum_i r_i\dfloor{ψ_i m_↑ + b_i} \\ ρ \| = 2\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_{r_i \lt 0} r_i} − q − 1 − 2\dparen{\sum_i r_i ψ_i} \end{align}

Als \( ρ ≤ 0 \) dan schelen \( m \) en \( m_↑ \) hooguit 1. Die eis komt overeen met

\begin{align} 2\dparen{\sum_{r_i \gt 0} r_i} \| − \dparen{\sum_{r_i \lt 0} r_i} − q − 1 − 2\dparen{\sum_i r_i ψ_i} ≤ 0 \notag \\ \dparen{\sum_{r_i \gt 0} r_i} \| + \dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_{r_i \lt 0} r_i} − q − 1 − 2\dparen{\sum_i r_i ψ_i} ≤ 0 \notag \\ \dparen{\sum_{r_i \gt 0} r_i} \| + \dparen{\sum_{i} |r_i|} − q − 1 − 2\dparen{\sum_i r_i ψ_i} ≤ 0 \notag \\ \sum_{r_i \gt 0} r_i \| ≤ q + 1 + 2\dparen{\sum_i r_i ψ_i} − \dparen{\sum_{i} |r_i|} \eqavide{eq:singlepass} \end{align}

Dan

\begin{align} ξ \| = \dfloorratio{d_↑}{q + \sum_{r_i \gt 0} r_i} \\ m \| = m_↑ + ξ \label{eq:xζ4} \\ d \| = s − q m − \sum_i r_i\dfloor{ψ_i m + b_i} \end{align}

Als alle \( ψ_i = h_i/g_i \) en \( b_i = t_i/g_i \), en als aan eis \eqref{eq:singlepass} is voldaan

\begin{align} p \| = q + \sum_i r_iψ_i = q + \sum_i \dfrac{r_i h_i}{g_i} \\ g \| = \lcm(g_i) \\ γ_i \| = \dfrac{g}{g_i} \\ f \| = p g = g q + \sum_i γ_i r_i h_i \\ s \| = q m + \sum_i r_i\dfloorratio{h_i m + t_i}{g_i} + d \label{eq:xnaary4r} \\ m_↑ \| = \dceilratio{s + \dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_i r_i b_i}}{f/g} − 1 \notag \\ \| = \dceilratio{g s + g\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_i γ_i r_i t_i}}{f} − 1 \notag \\ \| = \dfloorratio{g s + g\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_i γ_i r_i t_i} − 1}{f} \label{eq:ynaarx4r} \\ d_↑ \| = s − q m_↑ − \sum_i r_i\dfloorratio{h_i m_↑ + t_i}{g_i} \\ ρ \| = 2\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_{r_i \lt 0} r_i} − q − 1 − 2\dparen{\sum_i \dfrac{r_i h_i}{g_i}} \\ ξ \| = \dfloorratio{d_↑}{q + \sum_{r_i \gt 0} r_i} \\ m \| = m_↑ + ξ \\ d \| = s − q m − \sum_i r_i\dfloorratio{h_i m + t_i}{g_i} \end{align}

\( g \) is het kleinste gemene veelvoud van de noemers van alle \( ψ_i \) en \( b_i \).

Stel, we willen een kalender hebben waarin elke maand tenminste 17 dagen lang is, en elke 3e maand 2 dagen extra krijgt, en elke 5e maand 3 dagen extra. De lengtes van de eerste paar maanden zijn dan: 17, 17, 19, 17, 20, 19, 17, 17, 19, 20, 17, 19, 17, 17, 22. Hoe rekenen we met die kalender?

Dan hebben we \( q = 17 \) en

\({i}\) \({r_i}\) \({ψ_i}\) \({g_i}\) \({h_i}\) \({t_i}\) \({γ_i}\)
1 2 1/3 3 1 0 5
2 3 1/5 5 1 0 3

en \( g = 15 \) (het product van noemers 3 en 5). Dan is

\begin{align*} p \| = 17 + 2×\dfrac{1}{3} + 3×\dfrac{1}{5} = 18 + \dfrac{4}{15} \\ f \| = p g = 15×\dparen{18 + \dfrac{4}{15}} = 274 = 15×17 + 5×2×1 + 3×3×1 \\ s \| = 17 m + 2\dfloorratio{m}{3} + 3\dfloorratio{m}{5} \\ m_↑ \| = \dfloorratio{15 s + 15×5 − 0 − 1}{274} = \dfloorratio{15 s + 74}{274} \\ d_↑ \| = s − 17 m_↑ − 2\dfloorratio{m_↑}{3} − 3\dfloorratio{m_↑}{5} \\ ρ \| = 2×5 − 0 − 17 − 1 − 2×\dparen{\dfrac{2×1}{3} + \dfrac{3×1}{5}} = −10 − \dfrac{8}{15} \\ ξ \| = \dfloorratio{d_↑}{22} \\ m \| = m_↑ + ξ \\ d \| = s − 17 m − 2\dfloorratio{m}{3} − 3\dfloorratio{m}{5} \end{align*}

De volgende tabel toont de resultaten die je krijgt als je voor bepaalde kalenderdata \( m \), \( d \) de bijbehorende lopende dagnummers \( s \) uitrekent, en als je daarna uit die \( s \) weer het maandnummer \( m \) uitrekent.

\({m}\) \({d}\) \({s}\) \({m_↑}\) \({d_↑}\) \({ξ}\) \({m_↑+ξ}\)
0 0 0 0 0 0 0
0 16 16 1 −1 −1 0
1 0 17 1 0 0 1
1 16 33 2 −1 −1 1
2 0 34 2 0 0 2
2 18 52 3 −1 −1 2
3 0 53 3 0 0 3
3 16 69 4 −1 −1 3
4 0 70 4 0 0 4
4 19 89 5 −1 −1 4
5 0 90 5 0 0 5
5 18 108 6 −1 −1 5
6 0 109 6 0 0 6
6 16 125 7 −1 −1 6
7 0 126 7 0 0 7
7 16 142 8 −1 −1 7
8 0 143 8 0 0 8
8 18 161 9 −1 −1 8
9 0 162 9 0 0 9
9 19 181 10 −1 −1 9
10 0 182 10 0 0 10
10 16 198 11 −1 −1 10
11 0 199 11 0 0 11
11 18 217 12 −1 −1 11
12 0 218 12 0 0 12
12 16 234 13 −1 −1 12
13 0 235 13 0 0 13
13 16 251 14 −1 −1 13
14 0 252 14 0 0 14
14 21 273 15 −1 −1 14
15 0 274 15 0 0 15
15 16 290 16 −1 −1 15

13.9. Heel erg ongelijke maanden

Voorgaande methoden voor het berekenen van de kalenderdatum uit het doorlopende dagnummer voor kalenders met erg ongelijke maanden gingen er van uit dat de variatie in maandlengtes voldoende klein is dan het maandnummer berekend met de overeenkomstige simpele kalender hooguit eentje fout is: \( 2\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_{r_i \lt 0} r_i} − q − 1 − 2\dparen{\sum_i r_iψ_i} ≤ 0 \). Wat nu als aan die voorwaarde niet voldaan is?

In dat geval zul je de juiste maand moeten vinden door te zoeken. Probeer eerst maandnummer \( m_↑ \) en reken de bijbehorende \( d_↑\) en \( ξ \) uit. Is deze \( ξ \lt 0 \)? Trek dan 1 af van \( m_↑ \) en probeer opnieuw, net zo lang tot \( ξ = 0 \): dan heb je de juiste \( m \) gevonden.

Pas op! In eerdere hoofdstukken telden we \( ξ \) op bij \( m_↑ \) om het maandnummer te corrigeren, maar hier zijn we er niet zeker van dat we dan nooit een te klein maandnummer vinden. Een te groot maandnummer is eenvoudig te herkennen (dan is \( d_↑ \lt 0 \)) maar een te klein maandnummer niet. Dus hier moeten we niet \( ξ \) erbij tellen. Als \( ξ \lt 0 \), trek dan 1 af van het maandnummer en probeer het met dat nieuwe maandnummer, net zo lang tot \( ξ = 0 \).

Stel, \( q = 3 \), \( r = 7 \), \( ψ = 1/3 \), dan is \( h = 1 \), \( g = 3 \), \( f = 16 \), \( p = q + rψ = 3 + 5/3 = 5 \frac{2}{3} \) en \( ρ = \dfloor{2×5\frac{2}{3}} + 1 − 10 = 2 \) dus aan de eis \( r ≤ ρ \) is niet voldaan. Met deze kalender hebben de eerste drie maanden de lengte \( 3, 3, 10 \) dagen, en dat herhaalt zich elke drie maanden weer. Voor deze kalender is

\begin{align*} m_↑ \| = \dfloorratio{3 s + 20}{16} \\ σ \| = 3 m + 7\dfloorratio{m}{3} \end{align*}

We vinden

\({s}\) \({m_↑}\) \({σ_↑}\) \({d₁}\) \({ξ₁}\) \({m₂}\) \({σ₂}\) \({d₂}\) \({ξ₂}\) \({m₃}\) \({σ₃}\) \({d₃}\) \({ξ₄}\) \({m}\) \({d}\)
0 1 3 −3 −1 0 0 0 0 0 0
1 1 3 −2 −1 0 0 1 0 0 1
2 1 3 −1 −1 0 0 2 0 0 2
3 1 3 0 0 1 0
4 2 6 −2 −1 1 3 1 0 1 1
5 2 6 −1 −1 1 3 2 0 1 2
6 2 6 0 0 2 0
7 2 6 1 0 2 1
8 2 6 2 0 2 2
9 2 6 3 0 2 3
10 3 16 −6 −1 2 6 4 0 2 4
11 3 16 −5 −1 2 6 5 0 2 5
12 3 16 −4 −1 2 6 6 0 2 6
13 3 16 −3 −1 2 6 7 0 2 7
14 3 16 −2 −1 2 6 8 0 2 8
15 4 19 −4 −1 3 16 −1 −1 2 6 9 0 2 9
16 4 19 −3 −1 3 16 0 0 3 0

Bijvoorbeeld: voor \( s = 11 \) vinden we

\begin{align*} m_1 \| = m_↑ = \dfloorratio{3×11 + 20}{16} = 3 \\ σ_1 \| = σ(m_1) = 3×3 + 7\dfloorratio{3}{3} = 16 \\ d_1 \| = s − σ_1 = 11 − 16 = −5 \end{align*}

Die \( d_1 \) is kleiner dan nul, dus verlagen we \( m \) met één (\( m_2 = m_1 − 1 = 2 \)) en proberen we het opnieuw. Met die nieuwe \( m \) vinden we

\begin{align*} σ_2 \| = 3×2 + 7\dfloorratio{2}{3} = 6 \\ d_2 \| = s − σ_2 = 11 − 6 = 5 \end{align*}

en dat is niet meer negatief, dus zijn we klaar. Voor \( s = 11 \) is \( m = 2 \) en \( d = 5 \).

Je kunt deze procedure desgewenst ook gebruiken als wel aan eis \eqref{eq:singlepass} is voldaan.

Het grootste aantal maandnummers dat je misschien moet nakijken voordat je de goede gevonden hebt is gelijk aan de maximale waarde die \( m_↑ − m_↓ \) kan bereiken, plus 1.

\begin{align} m_↑ − m_↓ \| = \dceilratio{s + \max(\D σ) + 1 − v}{p} − \dceilratio{s + \min(\D σ) + 1 − v}{p} \\ \| ≤ \dceilratio{\max(\D σ) − \min(\D σ)}{p} \eqavide{eq:ceil(x−y)i} \end{align}

dus het aantal maanden dat je hooguit hoeft te proberen is ten hoogste

\begin{equation} N = \dceilratio{\max(\D σ) − \min(\D σ)}{p} + 1 \end{equation}

Voor een kalender met twee maandlengtes wordt dat

\begin{equation} N = \dceilratio{r − 1}{p} + 1 \end{equation}

en voor een kalender met meer maandlengtes

\begin{align} N \| ≤ \dceilratio{\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_{r_i \lt 0} r_i}}{p} + 1 \notag \\ \| = \dceilratio{\sum_i |r_i|}{p} + 1 \end{align}

13.10. Maandlengtes zonder intern patroon

In het voorgaande beschouwden we kalenders waarvan de maandlengtes uit te drukken zijn als de som van verschillende patronen, bijvoorbeeld met elke tweede maand een dag extra en bovendien elke derde maand nog eens twee dagen extra, zodat elke zesde maand in totaal drie dagen extra krijgt. Maar wat nu als de maandlengtes zichzelf na een bepaald aantal herhalen maar er verder geen patroon in te ontdekken valt?

We gebruiken als voorbeeld een kalender met de volgende maandlengtes, die zich steeds herhalen: 7, 13, 5, 11, 4 dagen. Het "jaar" is 7 + 13 + 5 + 11 + 4 = 40 dagen lang. Het verband tussen lopende dagnummer \( s \), lopende maandnummer \( m \), en dagnummer-in-de-maand \( d \) (allen beginnend bij 0) is dan

\({s}\) \({m}\) \({d}\)
0 0 0
1 0 1
6 0 6
7 1 0
19 1 12
20 2 0
24 2 4
25 3 0
35 3 10
36 4 0
39 4 3

De kalender heeft \( f \) dagen in \( g \) maanden, met een gemiddelde maandlengte gelijk aan \( p = f/g \) dagen. Het verband tussen het lopende dagnummer \( s \) en het lopende maandnummer \( m \) is een trapfunctie: na een (wisselend) aantal dagen neemt het maandnummer toe met één. Zo'n trede van één die gebeurt net vóór dag \( a \) en zich elke \( f \) dagen weer herhaalt krijgen we met een functie

\begin{equation} \dfloorratio{s − a}{f} + 1 = \dfloorratio{s + f − a}{f} \end{equation}

De \( + 1 \) zorgt ervoor dat de uitkomst 0 is voor \( s \lt a \) en 1 voor \( s ≥ a \).

Voor de voorbeeldkalender is \( f = 40 \) en \( g = 5 \) en is er onder andere een trede net voor dag \( a = 7 \). Die krijgen we met

\[ m = \dfloorratio{s − 7}{40} + 1 = \dfloorratio{s + 33}{40} \]

\({s}\) \({s−7}\) \({m}\)
0 −7 0
1 −6 0
6 −1 0
7 0 1
8 1 1
46 39 1
47 40 2
48 41 2

Als er \( g \) maanden zijn, elk met hun eigen \( a_i \) (voor \( i \) van 0 tot en met \( g − 1 \)), dan is hun gecombineerde effect

\begin{equation} \sum_{i=0}^{g−1} \dparen{\dfloorratio{s − a_i}{f} + 1} = g + \sum_{i=0}^{g−1} \dfloorratio{s − a_i}{f} = \sum_{i=0}^{g−1} \dfloorratio{s + f − a_i}{f} \end{equation}

We willen zoals gewoonlijk dat maand \( m = 0 \) begint als \( s = 0 \), dus dan moet \( a_0 = 0 \) zijn.

Als de opeenvolgende maandlengtes gelijk zijn aan \( L_i \), dan zit de eerste trede bij \( a_0 = 0 \), de tweede bij \( a_1 = a_0 + L_0 = L_0 \), de derde bij \( a_2 = a_1 + L_1 = L_0 + L_1 \), en in het algemeen

\begin{equation} a_i = \sum_{j=0}^{i-1} L_j \end{equation}

Daarmee is

\begin{equation} m = \sum_{i=0}^{g − 1} \dfloorratio{s + f − \sum_{j=0}^{i − 1} L_j}{f} \label{eq:willekeurigynaarx} \end{equation}

Voor de voorbeeldkalender hebben we \( f = 40 \), \( g = 5 \) en

\({i}\) \({L_i}\) \({a_i}\)
1 7 0
2 13 7
3 5 20
4 11 25
5 4 36

en daarmee

\begin{align*} m \| = \dfloorratio{s + 40 − 0}{40} + \dfloorratio{s + 40 − 7}{40} + \dfloorratio{s + 40 − 20}{40} + \dfloorratio{s + 40 − 25}{40} + \dfloorratio{s + 40 − 36}{40} \\ \| = \dfloorratio{s + 40}{40} + \dfloorratio{s + 33}{40} + \dfloorratio{s + 20}{40} + \dfloorratio{s + 15}{40} + \dfloorratio{s + 4}{40} \end{align*}

Bijvoorbeeld, als \( s = 21 \) dan

\[ m = \dfloorratio{61}{40} + \dfloorratio{54}{40} + \dfloorratio{41}{40} + \dfloorratio{36}{40} + \dfloorratio{25}{40} = 1 + 1 + 1 + 0 + 0 = 3 \]

De andere kant op hebben we ook treden, maar nu wisselen dagen en maanden van rol als lengte en hoogte van de treden. Daarmee wordt de formule voor het lopende dagnummer \( σ \) van de eerste dag van maand \( m \):

\begin{equation} σ = \sum_{i=0}^{g − 1} L_i \dfloorratio{m + g − 1 − i}{g} \end{equation}

Met weer dezelfde kalender vinden we

\[ σ = 7 \dfloorratio{m + 4}{5} + 13 \dfloorratio{m + 3}{5} + 5 \dfloorratio{m + 2}{5} + 11 \dfloorratio{m + 1}{5} + 4 \dfloorratio{m}{5} \]

\({x}\) \({7⌊(x+4)/5⌋}\) \({{13⌊(x+3)/5⌋}}\) \({5⌊(x+2)/5⌋}\) \({11⌊(x+1)/5⌋}\) \({4⌊x/5⌋}\) \({c}\)
0 0 0 0 0 0 0
1 7 0 0 0 0 7
2 7 13 0 0 0 20
3 7 13 5 0 0 25
4 7 13 5 11 0 36
5 7 13 5 11 4 40

De formule om van het lopende maandnummer \( m \) en het dagnummer-in-de-maand \( d \) te gaan naar lopende dagnummer \( s \) (allen beginnend bij 0) is dan (met \( i \) die loopt van 0 tot en met \( g − 1 \))

\begin{equation} s = σ + d = \sum_{i=0}^{g − 1} m_i \dfloorratio{m + g − 1 − i}{g} + d \label{willekeurigxnaary} \end{equation}

Deze formules zijn (als je de sommaties uitschrijft) een stuk langer dan de formules die we eerder afleidden voor kalenders met interne patronen, dus het is voordelig als je voor een kalender zulke interne patronen herkent, maar lang niet alle kalenders hebben zulke patronen.

De simpele kalender uit hoofdstuk 13.5 heeft \( s = \dfloor{p m + b} + d \). Om die kalender het begin van maand \( m \) op lopende dag \( s \) te laten leggen moeten we dus hebben \( s = \dfloor{p m + b} \) waaruit volgt dat \( s ≤ p m + b \lt s + 1 \) ofwel (voor \( m \gt 0 \)) \( (s − b)/m ≤ p \lt (s + 1 − b)/m \). We weten dat \( 0 ≤ b \lt 1 \), dus

\[ \frac{s − 1}{m} \lt \frac{s − b}{m} \le p \lt \frac{s + 1 − b}{p} \le \frac{s + 1}{p} \]

dus

\begin{equation} \frac{s − 1}{m} \lt p \lt \frac{s + 1}{m} \label{eq:beperkp} \end{equation}

Niet elke \( p \) die hieraan voldoet geeft een simpele kalender, maar als een \( p \) hieraan niet voldoet voor tenminste één van de maanden dan is er zeker geen simpele kalender voor deze maandlengtes.

Onze voorbeeldkalender voldoet niet aan de eisen die nodig zijn om de simpele formules uit hoofdstuk 13.5 te kunnen gebruiken, want er zijn meer dan twee verschillende maandlengtes, zelfs als je de laatste maand buiten beschouwing laat.

Met formule \eqref{eq:beperkp} kunnen we het ook zien. De eerste dag van maand \( m = 1 \) heeft \( s = 7 \), dus moet \( 6 \lt p \lt 8 \). De eerste dag van maand \( m = 2 \) heeft \( s = 20 \) dus moet \( 9\frac{1}{2} = 19/2 \lt p \lt 21/2 = 10\frac{1}{2} \), en nu gaat het al fout, want om het begin van maand \( m = 1 \) goed te plaatsen moet \( p \) kleiner zijn dan 8, maar om het begin van maand \( m = 2 \) goed te plaatsen moet \( p \) groter zijn dan 9½, en dat kan niet allebei tegelijk.

13.11. Combinaties van rechte lijnen

Het is zeldzaam dat een kalender volledig bepaald is door alleen één periode \( p \), dus meestal moet je verschillende perioden combineren. Stel we hebben formules voor twee perioden:

\begin{align} y_1 \| = D_1(\{ x_1, z_1 \}) \\ y_2 \| = D_2(\{ x_2, z_2 \}) \end{align}

We gebruiken hier geen \( m \), \( d \) en \( s \) omdat we de vrijheid willen hebben om andere kalendereenheden dan maanden en dagen te gebruiken. \( x \) telt de grotere eenheid, en \( y \) en \( z \) tellen de kleinere eenheid. \( y \) is het lopende aantal van die kleinere eenheid, en \( z \) is het aantal van die kleinere eenheid sinds het begin van de meest recente grotere eenheid. Relatie \( D_1 \) zegt dat je \( y_1 \) uit kunt rekenen uit \( x_1 \) en \( z_1 \), en net zo voor \( D_2 \).

De andere kant op hebben we

\begin{align} \{ x_1, z_1 \} \| = U_1(y_1) \\ \{ x_2, z_2 \} \| = U_2(y_2) \end{align}

waar \( U \) en \( D \) elkaars inverse zijn:

\begin{align} y \| = D(U(y)) \\ \{ x, z \} \| = U(D(\{ x, z \})) \end{align}

Om van de kalenderdatum naar het lopende dagnummer te gaan passen we eerst \( D_1 \) toe en dan \( D_2 \). Er zijn twee manieren om deze te combineren: We kunnen de \( y_1 \) gelijk stellen aan \( z_2 \), of aan \( x_2 \). In het eerste geval hebben de twee relaties dezelfde schrikkeleenheden, bijvoorbeeld dagen. In het tweede geval hebben de twee perioden verschillende schrikkeleenheden (bijvoorbeeld soms een extra dag voor de eerste, en soms een extra maand voor de tweede). Als de grotere periode helemaal geen schrikkeleenheden nodig heeft, dan mag je kiezen welke combinatiemethode je wilt gebruiken.

Laten we het eerste geval de "vlakke" combinatie noemen, omdat de schrikkeleenheid hetzelfde blijft, en het tweede geval de "getrapte" combinatie, omdat de schrikkeleenheid een trapje hoger gaat.

De combinatie van maanden en jaren is in de meeste (misschien alle?) zonnekalenders (zoals de Gregoriaanse kalender, de Juliaanse kalender en de Egyptische kalender) vlak, dus van de eerste soort. Een maand kan een dagje korter of langer zijn dan een andere maand (en precies één maand kan veel korter zijn), en een jaar kan een dagje korter of langer zijn dan een ander jaar. De lengte van een jaar hangt niet af van de lengte van de maanden, want de regels voor de lengte van het jaar hangen af van het jaartal maar niet van een maandnummer.

De combinatie van maanden en jaren in een zongebonden maankalender (zoals de Joodse en Babylonische kalenders) kan vlak zijn met erg ongelijke jaarlengtes (\( r \gt 1 \)), of getrapt (dan meestal met \( r = 1 \)). Een maand kan een dagje korter of langer zijn dan een andere maand, en een jaar kan een maand korter of langer zijn dan een ander jaar. (Voor de vlakke combinatie kan één maand van het jaar een stuk korter zijn.) Op deze manier kun je twee afzonderlijke (astronomische) verschijnselen volgen: de beweging van de Zon (met het jaar), en de beweging van de Maan (met de maand). Als de combinatie getrapt is dan hangt de lengte van een jaar af van de lengte van de maanden, want de lengte van het jaar is dan een bepaald aantal maanden, niet een bepaald aantal dagen.

Niet-zongebonden maankalenders (zoals de administratieve Islamitische kalender) doen meestal niet aan schrikkeljaren, dus dan werken allebei de combinatiemethoden.

Als een kalender meer dan twee belangrijke grote perioden heeft met schrikkelregels (bijvoorbeeld niet alleen voor de maand en het jaar, maar ook voor de eeuw), dan is het mogelijk dat sommige combinaties vlak zijn en andere combinaties getrapt.

Als we met meer dan één periode rekening moeten houden dan is het voor het omrekenen van een doorlopend dagnummer naar een kalenderdatum rekentechnisch belangrijk dat de nummering binnen elk zulke periode begint bij 0.

Als voorbeeld nemen we voor kalender 1 een simpele met \( p_1 = 7/3 = 2 \frac{2}{3} \) en voor kalender 2 een simpele met \( p_2 = 37/5 = 7 \frac{2}{5} \). Dan hebben we

\begin{align*} y_1 \| = \dfloorratio{7 x_1}{3} + z_1 = σ_1 + z_1 \\ x_1 \| = \dfloorratio{3 y_1 + 2}{7} \\ z_1 \| = \dfloorratio{\dmod{3 y_1 + 2}{7}}{3} \end{align*}

\begin{align*} y_2 \| = \dfloorratio{37 x_2}{5} + z_2 = σ_2 + z_2 \\ x_2 \| = \dfloorratio{5 y_2 + 4}{37} \\ z_2 \| = \dfloorratio{\dmodp{5y_2 + 4}{37}}{5} \end{align*}

en ook

\begin{align*} \{ x_1, r_1 \} \| = \Div(3 y_1 + 2, 7) \\ z_1 \| = \dfloorratio{r_1}{3} \\ \{ x_2, r_2 \} \| = \Div(5 y_2 + 4, 37) \\ z_2 \| = \dfloorratio{r_2}{5} \end{align*}

13.11.1. Vlakke combinatie

In dit geval is \( z_2 = y_1 \), dus we vinden

\begin{align} y_1 \| = D_1\dparen{\{ x_1, z_1 \}} \\ y_2 \| = D_2\dparen{\{ x_2, z_2 \}} = D_2\dparen{\{ x_2, D_1\dparen{\{ x_1, z_1 \}} \}} \label{eq:vlak} \end{align}

en omgekeerd

\begin{align} \{ x_2, z_2 \} \| = U_2(y_2) \label{eq:vlakr} \\ \{ x_1, z_1 \} \| = U_1(z_2) \end{align}

of, schematisch

  x₂ ──────────┐
  x₁ ┐         │
  z₁ ┴ y₁ = z₂ ┴ y₂

De onderste rij heeft de kleinste kalendereenheid, meestal dagen. Steeds hogere rijen hebben steeds grotere tijdseenheden, bijvoorbeeld maanden en jaren. \( x_2 \) zou dan bijvoorbeeld het jaartal zijn, \( x_1 \) het maandnummer in het jaar, \( z_1 \) het dagnummer in de maand, \( y_1 \) het dagnummer in het jaar, en \( y_2 \) het lopende dagnummer.

Voor het berekenen van de kalenderdatum uit het doorlopende dagnummer moeten we eerst de grotere periode berekenen (\( x_2 \), \( z_2 \)), en daarna de kleinere (\( x_1 \), \( z_1 \)).

De twee voorbeeldkalenders geven dan, voor de berekening van \( x_2, x_1, z_1 \) uit \( y_2 \) voor de eerste 20 dagen:

\({y_2}\) \({x_2}\) \({r_2}\) \({z_2=y_1}\) \({x_1}\) \({r_1}\) \({z_1}\) \({\{x_2,x_1,z_1\}}\)
0 0 4 0 0 2 0 {0, 0, 0}
1 0 9 1 0 5 1 {0, 0, 1}
2 0 14 2 1 1 0 {0, 1, 0}
3 0 19 3 1 4 1 {0, 1, 1}
4 0 24 4 2 0 0 {0, 2, 0}
5 0 29 5 2 3 1 {0, 2, 1}
6 0 34 6 2 6 2 {0, 2, 2}
7 1 2 0 0 2 0 {1, 0, 0}
8 1 7 1 0 5 1 {1, 0, 1}
9 1 12 2 1 1 0 {1, 1, 0}
10 1 17 3 1 4 1 {1, 1, 1}
11 1 22 4 2 0 0 {1, 2, 0}
12 1 27 5 2 3 1 {1, 2, 1}
13 1 32 6 2 6 2 {1, 2, 2}
14 2 0 0 0 2 0 {2, 0, 0}
15 2 5 1 0 5 1 {2, 0, 1}
16 2 10 2 1 1 0 {2, 1, 0}
17 2 15 3 1 4 1 {2, 1, 1}
18 2 20 4 2 0 0 {2, 2, 0}
19 2 25 5 2 3 1 {2, 2, 1}

Doorlopend dagnummer \( y_2 = 16 \) komt overeen met dag \( z_1 = 0 \) van maand \( x_1 = 1 \) van jaar \( x_2 = 2 \).

13.11.2. Getrapte combinatie

In dit geval is \( x_2 = y_1 \), dus we vinden

\begin{align} y_1 \| = D_1\dparen{\{ x_1, z_1 \}} \\ y_2 \| = D_2\dparen{\{ x_2, z_2 \}} = D_2\dparen{D_1\dparen{\{ x_1, z_1 \}, z_2}} \end{align}

en omgekeerd

\begin{align} \{ x_2, z_2 \} \| = U_2(y_2) \\ \{ x_1, z_1 \} \| = U_1(x_2) \end{align}

of, schematisch

  x₁ ┐
  z₁ ┴ y₁ = x₂ ┐
  z₂ ──────────┴ y₂

Hier kan bijvoorbeeld \( x_1 \) het jaartal zijn, \( z_1 \) het maandnummer in het jaar, \( z_2 \) het dagnummer in de maand, \( y_1 \) het doorlopende maandnummer, en \( y_2 \) het doorlopende dagnummer.

Met onze twee voorbeeldkalenders vinden we

\({y_2}\) \({x_2=y_1}\) \({r_2}\) \({z_2}\) \({x_1}\) \({r_1}\) \({z_1}\) \({\{x_1,z_1,z_2\}}\)
0 0 4 0 0 2 0 {0, 0, 0}
1 0 9 1 0 2 0 {0, 0, 1}
2 0 14 2 0 2 0 {0, 0, 2}
3 0 19 3 0 2 0 {0, 0, 3}
4 0 24 4 0 2 0 {0, 0, 4}
5 0 29 5 0 2 0 {0, 0, 5}
6 0 34 6 0 2 0 {0, 0, 6}
7 1 2 0 0 5 1 {0, 1, 0}
8 1 7 1 0 5 1 {0, 1, 1}
9 1 12 2 0 5 1 {0, 1, 2}
10 1 17 3 0 5 1 {0, 1, 3}
11 1 22 4 0 5 1 {0, 1, 4}
12 1 27 5 0 5 1 {0, 1, 5}
13 1 32 6 0 5 1 {0, 1, 6}
14 2 0 0 1 1 0 {1, 0, 0}
15 2 5 1 1 1 0 {1, 0, 1}
16 2 10 2 1 1 0 {1, 0, 2}
17 2 15 3 1 1 0 {1, 0, 3}
18 2 20 4 1 1 0 {1, 0, 4}
19 2 25 5 1 1 0 {1, 0, 5}

Doorlopend dagnummer \( y_2 = 16 \) komt overeen met dag \( z_2 = 2 \) van maand \( z_1 = 0 \) van jaar \( x_1 = 1 \).

13.12. Gelijktijdige cycli

In de meeste kalenders zijn er hogere en lagere perioden, en verandert het nummer van een hogere periode veel minder vaak dan het nummer van een lagere periode. Op de 7e dag van de 3e maand volgt de 8e dag van de 3e maand − het maandnummer verandert veel minder vaak dan het dagnummer.

Sommige kalenders hebben verschillende perioden die gelijktijdig oplopen. Ook de meestgebruikte kalenders hebben vaak zo'n geval, in de vorm van weekdagen en dagen van de maand. Als het een dag later wordt, dan verandert het dagnummer in de maand en ook de weekdag. Op maandag de 7e volgt dinsdag de 8e − het dagnummer en de weekdag veranderen even snel.

We hebben de weekdag niet nodig om een bepaalde dag uniek aan te wijzen (30 augustus 2011 wijst precies één dag aan, daarvoor hoeven we niet te weten dat dat een dinsdag was), dus komt de weekdag vaak niet voor in kalenderberekeningen. Echter, er zijn ook kalenders (bijvoorbeeld de kalenders van Midden-Amerika) waarin gelijktijdige perioden wel gebruikt worden om een bepaalde dag aan te wijzen. Hieronder bekijken we zulke gevallen.

Stel, een kalender gebruikt gelijktijdig perioden \( p_i \) (allemaal hele getallen groter dan 1) voor \( i \) van 1 tot en met \( n \). Het dagnummer in elke periode begint bij 0. We schrijven een datum in die kalender als \( \{ x \} = \{ x_1, x_2, …, x_n \} \), waarin \( x_i \) het dagnummer uit periode \( i \) is. Als \( x_i \) gelijk is aan \( p_i − 1 \), dan heeft de volgende dag weer \( x_i = 0 \).

Bijvoorbeeld, in een kalender met \( p_1 = 13 \) en \( p_2 = 20 \) volgen na dag \( \{ 11, 8 \} \) de volgende dagen: \( \{ 12, 9 \} \), \( \{ 0, 10 \} \), \( \{ 1, 11 \} \), …, \( \{ 9, 19 \} \), \( \{ 10, 0 \} \), \( \{ 11, 1 \} \).

13.12.1. Van doorlopend dagnummer naar datum

Om een doorlopend dagnummer \( s \) om te rekenen naar \( \{ x \} \) kunnen we dan de volgende formule gebruiken:

\begin{equation} x_i = \dmodp{s + a_i}{p_i} = (s + a_i) \bmod p_i \label{eq:cycli} \end{equation}

Hierin is \( a_i \) de waarde die \( x_i \) krijgt als \( s = 0 \). Die waarde hangt af van de kalender.

Stel dat in de kalender uit het vorige voorbeeld \( s = 0 \) overeenkomt met \( \{ 11, 8 \} \). Dan is \( a_1 = 11 \) en \( a_2 = 8 \), en dan

\begin{align*} x_1 = \dmodp{s + 11}{13} \\ x_2 = \dmodp{s + 8}{20} \end{align*}

Dag \( s = 11 \) komt dan overeen met

\begin{align*} x_1 \| = \dmodp{11 + 11}{13} = \dmodp{22}{13} = 9 \\ x_2 \| = \dmodp{11 + 8}{20} = \dmodp{19}{20} = 19 \end{align*}

dus de datum is \( \{ 9, 19 \} \).

Wat meer voorbeelden:

\({s}\) \({x_1}\) \({x_2}\)
0 11 8
1 12 9
2 0 10
3 1 11
10 8 18
11 9 19
12 10 0
13 11 1

13.12.2. Van datum naar doorlopend dagnummer

Het is een stuk lastiger om de andere kant op te gaan. Dan moeten we een \( s \) vinden zodat voor alle \( i \) aan vergelijking \eqref{eq:cycli} voldaan is, ofwel

\begin{equation} s ≡ x_i − a_i \pmod{p_i} \end{equation}

We definiëren

\begin{equation} c_i = x_i − a_i \end{equation}

We bekijken eerst het geval \( n = 2 \). Dan moeten we \( s \) oplossen uit

\begin{align} s \| ≡ c_1 \pmod{p_1} \label{eq:c1} \\ s \| ≡ c_2 \pmod{p_2} \label{eq:c2} \end{align}

Er zijn alleen oplossingen als

\begin{equation} c_1 ≡ c_2 \pmod{g} \end{equation}

waar

\begin{equation} g = \gcd(p_1, p_2) \end{equation}

de grootste gemene deler van \( p_1 \) en \( p_2 \) is, dus we nemen aan dat hieraan voldaan is. Dan zijn er getallen \( n_1, n_2 \) te vinden waarvoor geldt

\begin{equation} g = n_1 p_1 + n_2 p_2 \end{equation}

en dan zijn de oplossingen

\begin{equation} s ≡ \dfrac{c_1 n_2 p_2 + c_2 n_1 p_1}{g} \pmod{\dfrac{p_1 p_2}{g}} \label{eq:cyclitoj} \end{equation}

De tellers van deze breuken bevatten een deler \( g \) dus deze delingen leveren altijd hele getallen op.

We gebruiken weer de kalender uit het vorige voorbeeld, met \( p_1 = 13 \), \( p_2 = 20 \), \( a_1 = 11 \) en \( a_2 = 8 \). De grootste gemene deler van 13 en 20 is 1, dus \( g = 1 \). Nu zoeken we een oplossing van

\[ 1 = 13 n_1 + 20 n_2 \]

Je kunt \( g, n_1, n_2 \) vinden met behulp van het Uitgebreide Algoritme van Euclides. Je kunt \( n_1, n_2 \) ook vinden door oplopende waarden van \( n_1 \) (of \( n_2 \)) te proberen tot je er eentje vindt waarvoor het klopt. Je hebt een juiste \( n_1 \) gevonden als

\[ \dmodp{13 n_1 − 1}{20} = 0 \]

Als je begint met \( n_1 = 1 \) en steeds eentje hoger gaat dan hoef je hooguit \( n_2 − 1 \) verschillende waarden te proberen.

\({n_1}\) \({\dmodp{13n_1 − 1}{20}}\)
1 12
2 5
3 18
4 11
5 4
6 17
7 10
8 3
9 16
10 9
11 2
12 15
13 8
14 1
15 14
16 7
17 0
18 13
19 6
20 19
21 12

We zien dat \( n_1 = 17 \) een oplossing is. Dan is

\[ n_2 = \dfrac{1 − 13 n_1}{20} = \dfrac{1 − 13×17}{20} = −11 \]

dus

\[ 1 = 17×13 − 11×20 = 221 − 220 \]

Daarmee zijn de gevraagde lopende dagnummers

\begin{align*} s \| ≡ \dfrac{c_1n_2p_2 + c_2n_1p_1}{g} \pmod{\dfrac{p_1p_2}{g}} \\ \| ≡ \dfrac{(x_1 − 11)×(−220) + (x_2 − 8)×221}{1} \pmod{\dfrac{13×20}{1}} \\ \| ≡ −220 x_1 + 221 x_2 + 11×220 − 8×221 \\ \| ≡ −220 x_1 + 221 x_2 + 652 \pmod{260} \end{align*}

Omdat de voorgaande formule \( \pmod{260} \) is mag je bij elke term een willekeurig veelvoud van 260 optellen, dus als je geen negatieve getallen in de formule wilt dan kun je die omschrijven tot

\begin{align*} s \| ≡ (260 − 220) x_1 + 221 x_2 + (652 − 2×260) \\ \| ≡ 40 x_1 + 221 x_2 + 132 \pmod{260} \end{align*}

Voor datum \( \{ 9, 19 \} \) vinden we dan

\[ s ≡ 40×9 + 221×19 + 132 ≡ 4691 ≡ 11 \pmod{260} \]

dus dag \( s = 11 \) en elke 260 dagen eerder of later komen overeen met datum \( \{ 9, 19 \} \).

Let op! Formule \eqref{eq:cyclitoj} geeft alleen zinnige resultaten voor \( \{x\} \) die ook echt in de kalender voorkomen. Als \( g \) niet gelijk is aan 1, dan komen niet alle mogelijke \( \{x\} \) voor. Als je een \( \{x\} \) invult die niet in de kalender voorkomt, dan komt er toch een redelijk uitziend resultaat uit de formule, maar dat klopt dan niet.

Nu bekijken we een kalender voor de grootste gemene deler \( g \) niet gelijk is aan 1, met \( p_1 = 10 \), \( p_2 = 15 \), \( a_1 = a_2 = 0 \). Dan is

\begin{align*} x_1 = \dmodp{s}{10} \\ x_2 = \dmodp{s}{15} \end{align*}

Een oplossing voor

\[ g = n_1 p_1 + n_2 p_2 \]

is

\[ 5 = −1×10 + 1×15 \]

dus

\[ s ≡ \dfrac{15x_1 − 10x_2}{5} ≡ 3x_1 − 2x_2 \pmod{30} \]

\({s}\) \({x_1}\) \({x_2}\) \({3x_1−2x_2}\) \({\dmodp{3x_1−2x_2}{30}}\)
0 0 0 0 0
9 9 9 9 9
10 0 10 −20 10
14 4 14 −16 14
15 5 0 15 15
19 9 4 19 19
20 0 5 −10 20
29 9 14 −1 29
30 0 0 0 0

Omdat \( g \) niet gelijk is aan 1 komen veel combinaties van \( x_1 \) en \( x_2 \) niet voor in deze kalender. Alleen combinaties waarvoor \( x_1 − x_2 \) deelbaar is door 5 komen voor in deze kalender. Bijvoorbeeld \( \{ 3, 7 \} \) komt niet voor. Als we daarop bovenstaande formule voor \( s \) toepassen dan vinden we \( s ≡ 3×3 − 2×7 ≡ −5 ≡ 25 \pmod{30} \), maar voor \( s = 25 \) vinden we \( x_1 = \dmodp{25}{10} = 5 \) en \( x_2 = \dmodp{25}{15} = 10 \), dus \( \{ 5, 10 \} \) en niet \( \{ 3, 7 \} \). Ook voor onmogelijke \( \{ x \} \) komt er een nette \( s \) uit de formule.

13.12.3. Meer dan twee cycli

Met behulp van formule \eqref{eq:cyclitoj} komt uit \( s ≡ c_1 \pmod{p_1} \) en \( s ≡ c_2 \pmod{p_2} \) een andere formule \( s ≡ C_2 \pmod{P_2} \) met

\begin{align} C_2 \| ≡ \dfrac{c_1 n_2 p_2 + c_2 n_1 p_1}{\gcd(p_1, p_2)} \\ P_2 \| ≡ \dfrac{p_1 p_2}{\gcd(p_1, p_2)} \end{align}

Die formule heeft weer dezelfde vorm als de twee formules waar we mee begonnen, dus kunnen we die formule weer op dezelfde manier combineren met \( s ≡ c_3 \pmod{p_3} \), en zo door tot we alle \( p_i \) gehad hebben. Uiteindelijk vinden we een formule die weer diezelfde vorm heeft \( s ≡ C_n \pmod{P_n} \) en dat is dan de uiteindelijke oplossing.

De procedure is dan als volgt. Gegeven \( x_i \), \( p_i \), \( a_i \) voor \( i \) van 1 tot en met \( n \),

  1. Stel

    \begin{align*} C_1 \| = x_1 − a_1 \\ P_1 \| = p_1 \end{align*}

  2. Voor \( i \) van 2 tot en met \( n \):

    1. Bereken \( g_i = \gcd(P_{i−1}, p_i) \), de grootste gemene deler van \( P_{i−1} \) en \( p_i \).

    2. Vind \( n_i, m_i \) zodat

      \[ g_i = n_i P_i + m_i p_i \]

    3. Stel

      \begin{align*} C_i \| = \dfrac{C_{i−1} m_i p_i + c_i n_i P_{i−1}}{g_i} \\ P_i \| = \dfrac{P_{i−1} p_i}{g_i} \end{align*}

  3. De oplossing is

    \begin{equation} s ≡ C_n \pmod{P_n} \label{eq:cycle} \end{equation}

Laten we een kalender bekijken met de volgende kenmerken:

\({i}\) \({p_i}\) \({a_i}\)
1 4 3
2 5 1
3 6 2

Dan reken je als volgt om van doorlopend dagnummer \( s \) naar kalenderdatum \( \{x\} \):

\begin{align*} x_1 \| = \dmodp{s + 3}{4} \\ x_2 \| = \dmodp{s + 1}{5} \\ x_3 \| = \dmodp{s + 2}{6} \end{align*}

In de omgekeerde richting vinden we:

\begin{align*} P_1 \| = 4 \\ C_1 \| ≡ x_1 − 3 \pmod{P_1 = 4} \\ c_2 \| = x_2 − 1 \\ g_2 \| = \gcd(4, 5) = 1 = −1×4 + 1×5 = m_2P_1 + n_2p_2 \\ P_2 \| = \dfrac{P_1p_2}{g_2} = \dfrac{4×5}{1} = 20 \\ C_2 \| ≡ \dfrac{C_1 n_2 p_2 + c_2 m_2 P_1}{g_2} \\ \| ≡ 5 (x_1 − 3) − 4 (x_2 − 1) \\ \| ≡ 5 x_1 − 4 x_2 − 11 \\ \| ≡ 5 x_1 + 16 x_2 + 9 \pmod{P_2 = 20} \\ g_3 \| = \gcd(20, 6) = 2 = 1×20 − 3×6 = m_3P_2 + n_3p_3 \\ P_3 \| = \dfrac{P_2p_3}{g_3} = \dfrac{20×6}{2} = 60 \\ C_3 \| ≡ \dfrac{C_2 n_3 p_3 + c_3 m_3 P_2}{g_3} \\ \| ≡ −9 (5 x_1 + 16 x_2 + 9) + 10 (x_3 − 2) \\ \| ≡ −45 x_1 − 144 x_2 + 10 x_3 − 101 \\ \| ≡ 15 x_1 + 36 x_2 + 10 x_3 + 19 \pmod{P_3 = 60} \end{align*}

De oplossing is

\[ s ≡ C_3 ≡ 15 x_1 + 36 x_2 + 10 x_3 + 19 \pmod{60} \]

\({s}\) \({x_1}\) \({x_2}\) \({x_3}\) \({C_2}\) \({C_3}\)
0 3 1 2 0 0
1 0 2 3 1 1
2 1 3 4 2 2
3 2 4 5 3 3
4 3 0 0 4 4
5 0 1 1 5 5
6 1 2 2 6 6
7 2 3 3 7 7
8 3 4 4 8 8
9 0 0 5 9 9
10 1 1 0 10 10
11 2 2 1 11 11
12 3 3 2 12 12
13 0 4 3 13 13
14 1 0 4 14 14
27 2 3 5 7 27
28 3 4 0 8 28
29 0 0 1 9 29
30 1 1 2 10 30
31 2 2 3 11 31
654 1 0 2 14 54

Bijvoorbeeld, als \( s = 654 \), dan \( x_1 = \dmodp{654 + 3}{4} = 1 \), \( x_2 = \dmodp{654 + 1}{5} = 0 \), \( x_3 = \dmodp{654 + 2}{6} = 2 \). En van \( \{x\} \) naar \( s \) vinden we

\[ s ≡ 15×1 + 36×0 + 10×2 + 19 ≡ 54 \pmod{60} \]

en dat klopt, want \( 54 ≡ 654 \pmod{60} \).

13.12.4. Naar één oplossing

Omdat de datum \( \{ x \} \) gegeven is als een serie posities in zich herhalende kringlopen is er een oneindig aantal dagen die bij die datum passen. Voor het doorlopende dagnummer \( s \) dat overeenkomt met datum \( \{ x \} \) vonden we formule \eqref{eq:cycle}, die een oplossing geeft \( \bmod P_n \). Als je een dagnummer \( s \) gevonden hebt dat hoort bij datum \( \{ x \} \), dan kun je willekeurige veelvouden van \( P_n \) daar bijtellen of aftrekken en dan heb je weer een dagnummer dat hoort bij datum \( \{ x \} \). Hoe kiezen we de juiste?

Om de juiste oplossing te kiezen uit de oneindige verzameling van mogelijke oplossingen moeten we extra informatie gebruiken. Een toepasselijke manier is om de oplossing te zoeken die het dichtste bij een door ons gekozen datum \( s_0 \) ligt. Je kunt "het dichtste bij" hier op tenminste vier manieren uitleggen:

We bekijken die een voor een, voor \( s ≡ C_n \pmod{P_n} \).

13.12.4.1. De laatste op of voor

We zoeken de laatste \( s \) op of voor \( s_0 \) die voldoet aan \( s ≡ C_n \pmod{P_n} \). Dan, met \( k \) een heel getal,

\begin{align} s_0 − P_n \| \lt s ≤ s_0 \\ s_0 − P_n \| \lt C_n + kP_n ≤ s_0 \\ \frac{s_0 − C_n}{P_n} − 1 \| \lt k ≤ \frac{s_0 − C_n}{P_n} \end{align}

Er is maar één heel getal \( k \) dat aan deze ongelijkheid voldoet, namelijk

\begin{equation} k = \dfloorratio{s_0 − C_n}{P_n} \end{equation}

en daarmee

\begin{align} s \| = C_n + P_n \dfloorratio{s_0 − C_n}{P_n} \notag \\ \| = C_n + P_n \dparen{\frac{s_0 − C_n}{P_n} − \mod1ratio{s_0 − C_n}{P_n}} \notag \\ \| = C_n + (s_0 − C_n) − P_n \mod1ratio{s_0 − C_n}{P_n} \notag \\ \| = s_0 − \dmodp{s_0 − C_n}{P_n} \notag \\ \| = s_0 − ((s_0 − C_n) \bmod P_n) \label{eq:nearestle} \end{align}

Bijvoorbeeld, wat is de laatste dag op of voor \( J_0 = 700 \) die overeenkomt met datum \( \{ 1, 0, 2 \} \) in de kalender uit het vorige voorbeeld?

We vonden daar \( C_n = 15 x_1 + 36 x_2 + 10 x_3 + 19 \) en \( P_n = 60 \), dus \( C_n = 15×1 + 36×0 + 10×2 + 19 = 54 \). Met formule \eqref{eq:nearestle} vinden we dan \( s = 700 − \dmodp{700 − 54}{60} = 700 − \dmodp{646}{60} = 700 − 46 = 654 \) en dat klopt: 654 + 60 = 714 is groter dan 700, dus 654 is de laatste \( s \) die kleiner of gelijk is aan \( s_0 \) en die past bij datum \( \{ 1, 0, 2 \} \).

We moeten \( s = 654 \) vinden voor \( s_0 \) van 654 tot en met 654 + 60 − 1 = 713, en dat doen we ook:

\({s_0}\) \({s_0−C_n}\) \({\dmodp{s_0−C_n}{P_n}}\) \({s}\)
653 599 59 594
654 600 0 654
712 658 58 654
713 659 59 654
714 660 0 714

13.12.4.2. De eerste op of na

We zoeken de eerste \( s \) op of na \( s_0 \) die voldoet aan \( s ≡ C_n \pmod{P_n} \). Dan, met \( k \) een heel getal,

\begin{align} s_0 \| ≤ s \lt s_0 + P_n \\ s_0 \| ≤ C_n + k P_n \lt s_0 + P_n \\ \dfrac{s_0 − C_n}{P_n} \| ≤ k \lt \dfrac{s_0 − C_n}{P_n} + 1 \end{align}

Er is maar één heel getal \( k \) dat aan deze ongelijkheid voldoet, namelijk

\begin{equation} k = \dceilratio{s_0 − C_n}{P_n} \end{equation}

en daarmee

\begin{align} s \| = C_n + P_n \dceilratio{s_0 − C_n}{P_n} \notag \\ \| = C_n + P_n \dparen{\dfrac{s_0 − C_n}{P_n} + \dom1ratio{s_0 − C_n}{P_n}} \notag \\ \| = C_n + (s_0 − C_n) + P_n \dom1ratio{s_0 − C_n}{P_n} \\ \| = s_0 + \ddomp{s_0 − C_n}{P_n} \\ \| = s_0 + \dmodp{C_n − s_0}{P_n} \\ \| = s_0 + ((C_n − s_0) \bmod P_n) \label{eq:nearestge} \end{align}

Bijvoorbeeld, wat is de eerste dag op of na \( s_0 = 700 \) die overeenkomt met datum \( \{ 1, 0, 2 \} \) in de kalender uit het vorige voorbeeld?

We hadden \( C_n = 54 \). Met formule \eqref{eq:nearestge} vinden we dan \( s = 700 + \dmodp{54 − 700}{60} = 700 + \dmodp{−646}{60} = 700 + 14 = 714 \) en dat klopt: 714 − 60 = 654 is kleiner dan 700, dus 714 is de eerste \( s \) die groter of gelijk is aan \( s_0 \) en die past bij datum \( \{ 1, 0, 2 \} \).

We moeten \( s = 714 \) vinden voor \( s_0 \) van 714 − 60 + 1 = 655 tot en met 714, en dat doen we ook:

\({s_0}\) \({s_0−C_n}\) \({\dmodp{C_n−s_0}{P_n}}\) \({s}\)
654 600 0 654
655 601 59 714
656 602 58 714
713 659 1 714
714 660 0 714
715 661 59 774

13.12.4.3. de laatste voor

De laatste \( s \) voor \( s_0 \) is één \( P_n \) eerder dan de eerste \( s \) op of na \( s_0 \), dus

\begin{equation} s = s_0 − P_n − \dmodp{s_0 − C_n}{P_n} \end{equation}

13.12.4.4. De eerste na

De eerste \( s \) na \( s_0 \) is één \( P_n \) later dan de laatste \( s \) op of voor \( s_0 \), dus

\begin{align} s \| = s_0 + P_n + \ddomp{s_0 − C_n}{P_n} \\ \| = s_0 + P_n + \dmodp{C_n − s_0}{P_n} \end{align}

13.13. Samenvatting

Deze samenvatting noemt dagen en maanden, maar geldt ook voor andere tijdseenheden. We onderscheiden vier verschillende moeilijkheidsgraden: van 1 tot 4 worden de formules ingewikkelder maar kunnen ze ook meer gevallen aan.

  1. De simpelste kalender heeft twee verschillende maandlengtes, waarbij de grotere één groter is dan de kleinere, en heeft geen verschuiving van het patroon van maandlengtes. Maand 0 is altijd een korte maand, en maand \( g − 1 \) (de laatste maand voor alles zich weer herhaalt) is altijd een lange maand.

  2. Kalendertype 2 is gelijk aan kalendertype 1, behalve dat ook verschuiving van het patroon van maandlengtes toegestaan is.

  3. Kalendertype 3 is gelijk aan kalendertype 2, maar nu kan het lengteverschil tussen de maandlengtes meer dan één zijn.

  4. Kalendertype 4 is gelijk aan kalendertype 3, maar laat meer dan twee verschillende maandlengtes toe.

De tabel hieronder vat de kalenderformules samen, en maakt gebruik van de volgende definities:

 #     
2 3 4
\({p}\) \({q + \dfrac{h}{g}}\) \({q + r\dfrac{h}{g}}\) \({q + \sum_i \dfrac{r_i h_i}{g_i}}\)
\({f}\) \({q g + h}\) \({q g + rh}\) \({q g + \sum_i γ_i r_i h_i}\)
\({σ}\) \({\dfloorratio{f m + t}{g}}\) \({q m + r\dfloorratio{h m + t}{g}}\) \({q m + \sum_i r_i\dfloorratio{h_i m + t_i}{g_i}}\)
\({ρ}\) \({2r(1 − ψ) − 1 − q}\) \({2\dparen{\sum_{r_i\gt0}r_i} − \dparen{\sum_{r_i\lt0}r_i} − q − 1 − 2\sum_i \dfrac{r_i h_i}{g_i}}\)
\({w}\) \({g s + g − t − 1}\) \({g s + g r − r t − 1}\) \({g s + g\dparen{\sum_{r_i \gt 0}r_i} − \dparen{\sum_i γ_i r_i t_i} − 1}\)
\({m}\) \({\dfloorratio{w}{f}}\) \({\dfloorratio{w}{f}}\) \({\dfloorratio{w}{f}}\)
\({d}\) \({\dfloorratio{\dmodp{w}{f}}{g}}\) \({s - q m - r\dfloorratio{h m + t}{g}}\) \({s − q m − \dparen{\sum_i r_i\dfloorratio{h_i m + t_i}{g_i}}}\)
\({ξ}\) \({\dfloorratio{d}{q + r}}\) \({\dfloorratio{d}{q + \sum_{r_i \gt 0} r_i}}\)

Kalendertype 1 is als kalendertype 2 maar met \( t = 0 \).

Voor kalendertypen 3 en 4 geeft de formule voor \( m \) een bovengrens voor het maandnummer. De algemene procedure om het juiste maandnummer te vinden is dan:

Probeer de \( m \) die uit de formule in de tabel komt. Reken de bijbehorende \( σ\) uit en daarna \( d = s − σ \) en \( ξ \). Als \( ξ \) gelijk is aan 0 dan ben je klaar. Trek anders 1 af van \( m \) \(\) en probeer opnieuw.

Als \( ρ ≤ 0 \) dan hoef je \( ξ \) hooguit één maal uit te rekenen. Anders kunnen meer keren nodig zijn.

Als er meer dan twee tijdsperioden in het spel zijn, dan moeten verschillende kalenderniveaus gecombineerd worden.

14. Afleiding voor specifieke kalenders

14.1. Inleiding

14.1.1. Uitleg van Diagrammen

Bijna alle kalenders onderscheiden drie basisperioden: dagen, maanden en jaren. Met één kalenderniveau (rechte lijn) kun je twee perioden verbinden, dus voor drie perioden zijn tenminste twee kalenderniveaus nodig.

We geven verderop voor elke kalenderberekening een diagram. We leggen die diagrammen uit aan de hand van dit voorbeeld:

  a ━━━━━━━━━━━┓ ┏━ a₁ ━━━━━━━━━━┓
               (1)               ┃
  m ─(−1)─ m₀ ─┘ └─ m₁ ─┐        ┃
  d ─(−1)─ d₀ ─────────(2)─ d₁ ─(3)━ s ━(+J₀)━ J

De kalenderdatum met jaar, maand, dag \( a, m, d \) staat helemaal links, en het CJDN \( J \) staat rechts. De symbolen tussen haakjes, zoals (1) en (+J₀), geven een bewerking aan. De andere symbolen, zoals a₁ en d₁, geven tussenresultaten aan. De lijnen geven aan welke tussenresultaten uit de ene bewerking worden gebruikt in de andere bewerking. De tussenresultaten met namen met een a erin (zoals a₁) zijn gemeten in jaren, die met m zijn gemeten in maanden, en die met d, s, of J zijn gemeten in dagen. Namen met een c erin (zoals c₁, niet in bovenstaand diagram) zijn gemeten in eeuwen van 100 jaren. De bewerkingen met grotere eenheden staan hoger in het diagram dan die met kleinere eenheden. De dikke lijnen geven het onbeperkte pad aan waarin de waarden onbeperkt groot kunnen worden, zoals het jaartal \( a \) of het lopende dagnummer \( s \). De dunne lijnen zijn voor waarden die maar een beperkte variatie kunnen hebben, zoals het maandnummer in het jaar, of het dagnummer in de maand.

De bewerkingen waarvoor een plus- of minteken tussen de haakjes staat geven de betreffende optelling of aftrekking aan als je van links (kalenderdatum) naar rechts (CJDN) gaat. Dus (+J₀) betekent dan dat je \( J_0 \) erbij telt. Als je van rechts (CJDN) naar links (kalenderdatum) gaat dat doe je juist het omgekeerde, dus dan betekent (+J₀) dat je \( J_0 \) er vanaf trekt.

Voor een bewerking waarvoor een getal zonder plus- of minteken tussen de haakjes staat geeft dat getal het volgnummer van de bewerking aan. Meer details van die bewerking worden dan later gegeven. De meeste van zulke bewerkingen (zoals hier bewerkingen 2 en 3) gaan van één naar twee getallen of omgekeerd, en komen overeen met één kalenderniveau uit het vorige hoofdstuk. En soms is er een bewerking (hier bewerking 1) die twee getallen aanpast, dus van twee getallen naar weer twee getallen gaat. Als het getal tussen ronde haken () staat dan gaat het om een kalenderniveau van type 1 of 2. Als het getal tussen rechte haken [] staat dan gaat het om een kalenderniveau van type 3 of 4.

Laten we kijken naar de maand \( m \). Gaand van links naar rechts komen we eerst bij (−1) dus er wordt 1 vanaf getrokken en dat levert \( m_0 \) op. Die gaat samen met \( a \) in bewerking 1 en dat levert \( a_1 \) (gemeten in jaren) en \( m_1 \) (gemeten in maanden) op. \( m_1 \) gaat naar bewerking 2, samen met \( d_0 \), en levert \( d_1 \) op. Die gaat samen met \( a_1 \) naar bewerking 3 en levert \( s \) op. Daar wordt \( J_0 \) bijgeteld en dan krijgen we het eindresultaat \( J \).

Je kunt het diagram ook van rechts naar links lezen. We beginnen met CJDN \( J \) aan de rechterkant. Gaand naar links komen we eerst bij (+J₀) dus er wordt \( J_0 \) van afgetrokken (omdat we van rechts naar links gaan) en dan vinden we \( s \). Die gaat in bewerking 3 en die levert \( a_1 \) en \( d_1 \) op. Die \( d_1 \) gaat in bewerking 2 en daar komen \( d_0 \) en \( m_1 \) uit. \( m_1 \) gaat samen met \( a_1 \) in bewerking 1 en daar komen \( a \) en \( m_0 \) uit. Dan komen we bij (−1) dus wordt er 1 bij opgeteld (omdat we van rechts naar links gaan) en dan vinden we \( m \).

In onderstaande berekeningen gebruiken we soms tussenresultaten die niet in die diagrammen staan. Die geven we aan met \( α_i \) als ze gemeten zijn in jaren, \( μ_i \) als ze gemeten zijn in maanden, \( δ_i \) als ze gemeten zijn in dagen, en \( ω_i \) als ze gemeten zijn in een andere eenheid. Die namen kunnen voor de tegengestelde kalenderrichtingen voor verschillende zaken gebruikt worden, dus \( α_1 \) in de beschrijving van hoe je van kalenderdatum naar lopende dagnummer gaat kan iets anders betekenen dan \( α_1 \) in de beschrijving van hoe je van lopende dagnummer naar kalenderdatum gaat.

14.1.2. Geldigheid en bereik van de algoritmen

Onderstaande formules zijn op basis van alleen hele getallen. In computerprogramma's ontwijken we daarmee afrondfouten maar moeten we er wel rekening mee houden dat de begin-, tussen- en eindresultaten niet groter mogen zijn dan de grootste waarde die in het voor het computerprogramma gekozen datatype uitgedrukt kan worden, en ook niet kleiner dan de kleinste waarde die uitgedrukt kan worden. Het verschil tussen de grootste en kleinste waarden die uitgedrukt kunnen worden noemen we het bereik. Moderne computers bieden meestal tenminste datatypen van 8, 16, 32 en 64 bits. Als het aantal bits \( n \) is dan is het bereik \( 2^n \). Zie de volgende tabel.

\({n}\) \({2^n}\) \({2^n/365.25}\)
8 256 0.70
16 65 536 179
32 4 294 967 296 11.8 × 106
64 18 446 744 073 709 551 616 50.5 × 1015

16-bitsgetallen zijn ongeschikt voor kalenderberekeningen, want daarvan is het bereik maar 65 536, dus hooguit zoveel verschillende dagen kunnen dan berekend worden. Dat komt overeen met ongeveer 179 jaar, wat veel te weinig is voor praktisch gebruik. Nog smallere datatypes (zoals 8-bitsgetallen) zijn nog minder geschikt. 32-bitsgetallen zijn wel geschikt, want daarvan is het bereik bijna 4,3 miljard. Zoveel dagen komt overeen met ongeveer 11,8 miljoen jaar. 64-bitsgetallen geven een bereik dat ruim 3 miljoen keer groter is dan hoeveel dagen het Heelal nu oud is.

Veel kalenderberekeningen zijn van het type

\[ y = \dfloorratio{f x + t}{g} \]

met \( f \) en \( g \) groter dan 1. Dan is het tussenresultaat \( f x + t \) vaak veel groter dan \( x \) en \( y \) zijn. En dan is het bereik van \( y \) (het verschil tussen de grootste en kleinste waarden van \( y \) waarvoor de berekeningen kunnen slagen) veel kleiner dan het bereik van het gebruikte datatype. In de praktijk is dit alleen een probleem voor berekening op het onbeperkte pad voor sommige kalenders.

Bijvoorbeeld, het aantal dagen \( s \) tussen het begin van jaar 0 en het begin van jaar \( a \) in de Juliaanse kalender is

\[ s = \dfloorratio{1461 a}{4} \]

gebaseerd op een kalenderjaar dat gemiddeld 1461/4 = 365¼ dagen lang is. Als \( w \) het bereik van het gebruikte datatype is dan kan het bereik van \( a \) niet groter zijn dan \( w/1461 \), want anders zou het bereik van tussenresultaat \( 1461 a \) groter worden dan \( w \). Daarmee is het bereik van \( s \) hooguit \( (1461/4)×(w/1461) = w/4 \), dus flink minder dan \( w \).

In de meeste gevallen is om zo'n beperking heen te werken en kan de berekening aangepast worden zodat die wiskundig dezelfde resultaten geeft maar het bereik van \( s \) (nagenoeg) gelijk is aan \( w \). De prijs die je betaalt voor die verbetering van het bereik is dat je meer rekenoperaties moet doen. Hoofdstuk 13.4 legt uit hoe je zo'n omweg kunt vinden.

In het huidige geval is het afdoende om de berekening om te vormen tot

\[ s = 365 a + \dfloorratio{a}{4} \]

Dit levert wiskundig dezelfde resultaten als de eerdere formulering, maar als je de berekeningen doet in de nieuwe volgorde dan is het grootste tussenresultaat niet meer \( 1461 a \) maar \( 365 a \), waarmee het bereik van \( s \) nagenoeg gelijk is aan \( w \).

De eerdere formulering vereist één vermenigvuldiging en één deling. De nieuwe formulering vereist datzelfde met ook nog een optelling. Als \( \dmodp{f}{g} ≠ 1 \) dan is er ook nog een extra vermenigvuldiging nodig, en als \( fg \gt w \) dan komen er nog meer rekenoperaties bij.

Als het bereik van de omrekening tussen datum en lopende dagnummer flink kleiner is dan het bereik van het gebruikte datatype dan geven we dat aan met \( \range{•}{n} \) waar \( • \) het toepasselijk deel van de omrekening aangeeft en \( 1/n \) de fractie is van het bereik van het datatype dat gebruikt kan worden voor het lopende dagnummer.

Zo'n beperking van het bereik geldt voor elk datatype van vaste breedte, niet alleen voor 32-bitsgetallen. Als je de berekeningen zou doen met 64-bitsgetallen dan geldt zo'n beperking ook, maar dan is het bereik nog steeds zo ontzettend veel groter dan voor 32-bitsgetallen dat de beperking niet belangrijk is.

Voor ons eerdere voorbeeld zouden we schrijven

\[ s = \range{\dfloorratio{1461 a}{4}}{4} \]

om aan te geven dat het deel in het vierkant een bereik heeft dat 1/4 maal zo groot is als het bereik van het gebruikte datatype van vast breedte, wat die breedte ook is..

14.2. De Juliaanse kalender

14.2.1. Van Juliaanse datum naar CJDN (1)

In de Juliaanse kalender volgt op drie gewone jaren van 365 dagen een schrikkeljaar van 366 dagen. Deze periode van vier jaren bevat dus 3×365 + 366 = 1461 dagen. Elke periode van vier jaren heeft dezelfde volgorde van maanden met hun maandlengtes.

Alle maanden hebben 30 of 31 dagen, behalve februari die er 28 of 29 heeft. Die extra-korte maand februari is een beetje een probleem, want die zorgt ervoor dat we te maken hebben met maar liefst vier verschillende maandlengtes. Dat lossen we op door februari te zien als laatste maand van het rekenjaar. Dan wordt maart rekenmaand 0 van het rekenjaar, en is de daaropvolgende februari rekenmaand 11 van datzelfde rekenjaar. We combineren een kalenderniveau tussen maanden en dagen met een kalenderniveau tussen jaren en dagen, en dan maken we met dat tweede kalenderniveau de lengte van het jaar zo dat de laatste rekenmaand (dus februari) toch korter wordt dan 30 dagen.

De berekeningen zijn schematisch zoals in het volgende diagram.

  a ━━━━━━━━━━━┓ ┏━ a₁ ━━━━━━━━━━┓
               (1)               ┃
  m ─(−1)─ m₀ ─┘ └─ m₁ ─┐        ┃
  d ─(−1)─ d₀ ─────────(2)─ d₁ ─(3)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's (zoals in het vorige hoofdstuk) is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 12 1 12 0 2 12
2 153 5 30 3 2 30.6
3 1461 4 365 1 0 365.25

  1. Eerst verschuiven we maanden en dagen zodat de eerste beginnen met waarde 0. 1 januari komt dan overeen met \( m_0 = 0, d_0 = 0 \).

    \begin{align} m_0 \| = m − 1 \\ d_0 \| = d − 1 \end{align}

  2. Berekening 1 verschuift het maandnummer en jaarnummer zodat maart de eerste rekenmaand (maand \( m_1 = 0 \)) van het rekenjaar \( a_1 \) is in plaats van januari:

    \begin{align} \{ α_1, m_1 \} \| = \Div(m_0 − 2, 12) = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \end{align}

    \({a}\) \({m}\) \({a_0}\) \({a_1}\) \({m_1}\)
    0 1 −1 −1 10
    0 2 −1 −1 11
    0 3 0 0 0
    0 10 0 0 7
    0 11 0 0 8
    0 12 0 0 9
    1 1 −1 0 10
    1 2 −1 0 11
    1 3 0 1 0

  3. Berekening 2 berekent het dagnummer \( d_1 \) sinds het begin van het rekenjaar uit het rekenmaandnummer \( m_1 \) en het dagnummer \( d_0 \) sinds het begin van de rekenmaand:

    \begin{equation} d_1 = \dfloorratio{153 m_1 + 2}{5} + d_0 \end{equation}

    Dit is een kalenderniveau van type 2, met \( f = 153, g = 5, q = 30, h = 3, t = 2 \).

    \({m}\) \({d}\) \({m_1}\) \({d_0}\) \({d_1}\) \({L}\)
    1 1 10 0 306 31
    1 2 10 1 307
    1 31 10 30 336
    2 1 11 0 337
         ? 
    2 2 11 1 338
    2 28 11 27 364
    2 29 11 28 365
    3 1 0 0 0 31
    4 1 1 0 31 30
    5 1 2 0 61 31
    6 1 3 0 92 30
    7 1 4 0 122 31
    8 1 5 0 153 31
    9 1 6 0 184 30
    10 1 7 0 214 31
    11 1 8 0 245 30
    12 1 9 0 275 31
    12 31 9 30 305 30

    In bovenstaande tabel geeft \( L \) de lengte van de betreffende maand aan. De lengte van de laatste rekenmaand van het jaar (dus februari) is aangegeven als "?" omdat die bepaald wordt door de lengte van het jaar, en die is niet steeds hetzelfde.

  4. Berekening 3 berekent het lopende dagnummer \( s \) sinds het begin van rekenjaar 0 uit het rekenjaar \( a_1 \) en het dagnummer \( d_1 \) sinds het begin van het rekenjaar:

    \begin{equation} s = \range{\dfloorratio{1461 a_1}{4}}{4} + d_1 = 365 a_1 + \dfloorratio{a_1}{4} + d_1 \label{eq:jul2cdjn1} \end{equation}

    Dit is een kalenderniveau van type 2, met \( f = 1461, g = 4, q = 365, h = 1, t = 0 \).

    \({a_1}\) \({s}\) \({L}\)
    0 0 365
    1 365 365
    2 730 365
    3 1095 366
    4 1461

    In bovenstaande tabel geeft \( L \) de lengte van het betreffende jaar aan: 3 jaren van 365 dagen elk, gevolgd door een jaar van 366 dagen ― het schrikkelaar. Na die 4 jaren herhaalt de boel zich.

    Voor de \( \range{•}{4} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen is het bereik van de daardoor omsloten formule ongeveer 2,9 miljoen jaar.

  5. En dan tellen we er de CJDN van het begin van rekenjaar 0 (dus 1 maart van jaar 0) nog bij, en dat is 1 721 118:

    \begin{equation} J = s + J_0 = s + 1 721 118 \end{equation}

Samengevat:

\begin{align} \{ α_1, m_1 \} \| = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d \\ s \| = \range{\dfloorratio{1461 a_1}{4}}{4} + d_1 = 365 a_1 + \dfloorratio{a_1}{4} + d_1 \\ J \| = s + 1 721 118 \end{align}

Bijvoorbeeld, wat is het CJDN dat hoort bij Juliaanse datum 6 juli 2003? Dan is \( a = 2003 \), \( m = 7 \), \( d = 6 \), en daarmee

\begin{align*} \{ α_1, m_1 \} \| = \Div(m − 3, 12) = \Div(7 − 3, 12) = \Div(4, 12) = \{ 0, 4 \} \\ a_1 \| = a + α_1 = 2003 + 0 = 2003 \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d = \dfloorratio{153×4 − 3}{5} + 6 = \dfloorratio{609}{5} + 6 = 121 + 6 = 127 \\ s \| = \dfloorratio{1461 a_1}{4} + d_1 = \dfloorratio{1461×2003}{4} + 127 = 731 595 + 127 = 731 722 \\ s \| = 365 a_1 + \dfloorratio{a_1}{4} + d_1 = 365×2003 + \dfloorratio{2003}{4} + 127 \\ \| = 731 095 + 500 + 127 = 731 722 \\ J \| = 731 722 + 1 721 118 = 2 452 840 \end{align*}

Nog wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({α_1}\) \({m_1}\) \({a_1}\) \({d_1}\) \({s}\) \({J}\)
−4713 12 31 0 9 −4713 305 −1721119 −1
−4712 1 1 −1 10 −4713 306 −1721118 0
−4712 1 2 −1 10 −4713 307 −1721117 1
−1 12 31 0 9 −1 305 −61 1721057
0 1 1 −1 10 −1 306 −60 1721058
0 2 28 −1 11 −1 364 −2 1721116
0 2 29 −1 11 −1 365 −1 1721117
0 3 1 0 0 0 0 0 1721118
0 12 31 0 9 0 305 305 1721423
1 1 1 −1 10 0 306 306 1721424
1582 10 4 0 7 1582 217 578042 2299160
1582 10 5 0 7 1582 218 578043 2299161
1900 2 28 −1 11 1899 364 693973 2415091
1900 2 29 −1 11 1899 365 693974 2415092
1900 3 1 0 0 1900 0 693975 2415093
1999 12 31 0 9 1999 305 730439 2451557
2000 1 1 −1 10 1999 306 730440 2451558
2000 2 28 −1 11 1999 364 730498 2451616
2000 2 29 −1 11 1999 365 730499 2451617
2000 3 1 0 0 2000 0 730500 2451618
2003 7 6 0 4 2003 127 731722 2452840

14.2.2. Van CJDN naar Juliaanse datum (1)

Hiervoor doorlopen we de omgekeerde procedure als hierboven.

  a ━━━━━━━━━━━┓ ┏━ a₁ ━━━━━━━━━━┓
               (1)               ┃
  m ─(−1)─ m₀ ─┘ └─ m₁ ─┐        ┃
  d ─(−1)─ d₀ ─────────(2)─ d₁ ─(3)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's (zoals in het vorige hoofdstuk) is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 12 1 12 0 2 12
2 153 5 30 3 2 30.6
3 1461 4 365 1 0 365.25

  1. Eerst bepalen we het lopende dagnummer \( s \) door van de CJDN \( J \) van de gewenste datum de CJDN van het begin van rekenjaar 0 af te trekken.

    \begin{equation} s = J − J_0 = J − 1 721 118 \end{equation}

  2. Berekening 3 berekent uit het lopende dagnummer \( s \) het rekenjaar \( a_1 \) en het dagnummer \( d_1 \) sinds het begin van dat rekenjaar.

    \begin{align} \{ a_1, ω_2 \} \| = \range{\Div(4 s + 3, 1461)}{4} \\ d_1 \| = \dfloorratio{ω_2}{4} \end{align}

    Voor de \( \range{•}{4} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen is het bereik van die formule ongever 2,9 miljoen jaar. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{align} \{ ω_1, δ_1 \} \| = \Div(s, 1461) \\ \{ α_1, ω_2 \} \| = \Div(4 δ_1 + 3, 1461) \\ a_1 \| = 4 ω_1 + α_1 \\ d_1 \| = \dfloorratio{ω_2}{4} \end{align}

  3. Berekening 2 berekent de rekenmaand \( m_1 \) en dagnummer \( d_0 \) sinds het begin van de rekenmaand uit dagnummer \( d_1 \) sinds het begin van het rekenjaar.

    \begin{align} \{ m_1, ω_3 \} \| = \Div(5 d_1 + 2, 153) \\ d_0 \| = \dfloorratio{ω_3}{5} \end{align}

  4. Berekening 1 verschuift het maandnummer en jaarnummer zodat januari en niet maart maand 0 is.

    \begin{align} \{ α_2, m_0 \} \| = \Div(m_1 + 2, 12) \\ a \| = a_1 + α_2 \end{align}

  5. En als laatste verschuiven we het maandnummer en dagnummer zodat ze beginnen bij 1 en niet 0.

    \begin{align} m \| = m_0 + 1 \\ d \| = d_0 + 1 = \dfloorratio{ω_3}{5} + 1 \end{align}

Samengevat:

\begin{align} s \| = J − 1 721 118 \\ \{ a_1, ω_2 \} \| = \range{\Div(4 s + 3, 1461)}{4} \\ d_1 \| = \dfloorratio{ω_2}{4} \\ \{ m_1, ω_3 \} \| = \Div(5 d_1 + 2, 153) \\ \{ α_2, m_0 \} \| = \Div(m_1 + 2, 12) \\ a \| = a_1 + α_2 \\ m \| = m_0 + 1 \\ d \| = \dfloorratio{ω_3}{5} + 1 \end{align}

Alternatief met groter bereik voor de berekening van \( \{ a_1, ω_2 \} \):

\begin{align} \{ ω_1, δ_1 \} \| = \Div(s, 1461) \\ \{ α_1, ω_2 \} \| = \Div(4 δ_1 + 3, 1461) \\ a_1 \| = 4 ω_1 + α_1 \end{align}

Bijvoorbeeld, welke Juliaanse datum komt overeen met CJDN 2 452 840? Dan is \( J = 2 452 840 \) en dan

\begin{align*} s \| = J − J_0 = 2 452 840 − 1 721 118 = 731 722 \\ \{ a_1, ω_2 \} \| = \range{\Div(4 s + 3, 1461)}{4} \\ \| = \Div(4×731 722 + 3, 1461) = \Div(2 926 891, 1461) = \{ 2003, 508 \} \\ d_1 \| = \dfloorratio{ω_2}{4} = \dfloorratio{508}{4} = 127 \\ \{ m_1, ω_3 \} \| = \Div(5d_1 + 2, 153) \\ \| = \Div(5×127 + 2, 153) = \Div(637, 153) = \{4, 25\} \\ \{ α_2, m_0 \} \| = \Div(m_1 + 2, 12) = \Div(4 + 2, 12) = \{ 0, 6 \} \\ a \| = a_1 + α_2 = 2003 − 0 = 2003 \\ m \| = m_0 + 1 = 6 + 1 = 7 \\ d \| = \dfloorratio{ω_3}{5} + 1 = \dfloorratio{25}{5} + 1 = 5 + 1 = 6 \end{align*}

De datum is 6 juli 2003.

Nog wat meer voorbeelden:

\({J}\) \({s}\) \({a_1}\) \({ω_2}\) \({d_1}\) \({m_1}\) \({ω_3}\) \({α_2}\) \({m_0}\) \({a}\) \({m}\) \({d}\)
−1 −1721119 −4713 1220 305 9 150 0 11 −4713 12 31
0 −1721118 −4713 1224 306 10 2 1 0 −4712 1 1
1 −1721117 −4713 1228 307 10 7 1 0 −4712 1 2
1721057 −61 −1 1220 305 9 150 0 11 −1 12 31
1721058 −60 −1 1224 306 10 2 1 0 0 1 1
1721116 −2 −1 1456 364 11 139 1 1 0 2 28
1721117 −1 −1 1460 365 11 144 1 1 0 2 29
1721118 0 0 3 0 0 2 0 2 0 3 1
1721423 305 0 1223 305 9 150 0 11 0 12 31
1721424 306 0 1227 306 10 2 1 0 1 1 1
2299160 578042 1582 869 217 7 16 0 9 1582 10 4
2299161 578043 1582 873 218 7 21 0 9 1582 10 5
2415091 693973 1899 1456 364 11 139 1 1 1900 2 28
2415092 693974 1899 1460 365 11 144 1 1 1900 2 29
2415093 693975 1900 3 0 0 2 0 2 1900 3 1
2451557 730439 1999 1220 305 9 150 0 11 1999 12 31
2451558 730440 1999 1224 306 10 2 1 0 2000 1 1
2451616 730498 1999 1456 364 11 139 1 1 2000 2 28
2451617 730499 1999 1460 365 11 144 1 1 2000 2 29
2451618 730500 2000 3 0 0 2 0 2 2000 3 1
2452840 731722 2003 508 127 4 25 0 6 2003 7 6

14.2.3. Van Juliaanse datum naar CJDN (2)

We kunnen ook een getrapte combinatie van kalenders gebruiken; dan hebben we een kalenderniveau nodig dat van een doorlopend maandnummer naar een doorlopend dagnummer gaat, rekening houdend met schrikkeljaren. Dan is er geen hoger kalenderniveau meer dat een te lange laatste maand afkapt, dus moeten de formules ook gelden voor hele grote doorlopende maandnummers.

De berekeningen zijn schematisch als volgt:

  a ━━━━━━━━━━━━┓
  m ─(−1)─ m₀ ─(1)━ m₁ ━┓
  d ─(−1)─ d₀ ─────────[2]━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({r_i}\) \({h_i}\) \({t_i}\) \({g_i}\) \({γ_i}\) \({p}\)
1 12 1 12 0 0 12
2.1 1461 48 30 1 7 5 12 4 30.4375
2.2 −2 1 10 12 4
2.3 1 1 46 48 1

  1. Eerst verschuiven we maanden en dagen zodat de eerste beginnen met waarde 0. 1 januari komt dan overeen met \( m_0 = 0, d_0 = 0 \).

    \begin{align} m_0 \| = m − 1 \\ d_0 \| = d − 1 \end{align}

  2. Berekening 1 rekent het jaartal \( a \) en het maandnummer \( m_0 \) sinds het begin van het jaar om naar een doorlopend maandnummer \( m_1 \), maar dat is erg simpel:

    \begin{equation} m_1 = 12 a + m_0 = 12 a + m − 1 \end{equation}

    Dit is een kalenderniveau van type 2, met \( f = 12, g = 0, q = 12, h = 0, t = 0 \). Omdat \( t = 0 \) is het ook een kalenderniveau van type 1.

  3. Berekening 2 moet het doorlopende maandnummer \( m_1 \) omrekenen naar een doorlopend dagnummer \( s \). Van de 12 maanden van een jaar zijn er 7 lang, met elk 31 dagen, dus hebben we een formule zoals \( \dfloor{(7(m_1 + u))/12} \) nodig (dat zich elke 12 maanden herhaalt), maar wat moet dan de waarde van \( u \) zijn?

    With \( u = 0 \) we get the values

    \({m_1}\) \({\dfloorratio{7m_1}{12}}\) \({\D}\)
    0 0 0
    1 0 1
    2 1 0
    3 1 1
    4 2 0
    5 2 1
    6 3 1
    7 4 0
    8 4 1
    9 5 0
    10 5 1
    11 6 1
    12 7

    Elke keer dat die waarde eentje groter wordt was de maand daarvoor een lange maand, dus deze waarden betekenen dat de afwisseling tussen korte (K) en lange (L) maanden was: K L K L K L L K L K L L, maar wij zoeken L K L K L K L L K L K L, want juli en augustus (de 7e en 8e maanden) zijn allebei lang. Dat krijgen we als we het patroon verschuiven over −1 maand (eentje naar links), dus \( u = −1 \). Dan is \( t = \dmodp{fu}{g} = \dmodp{−7}{12} = 5 \), dus vinden we \( \dfloor{(7m_1 + 5)/12} \).

    Dan zijn alle maanden goed, behalve februari (\( m_1 = 1 \)) want die krijgt dan 30 dagen maar moet er 28 hebben in een gewoon jaar of 29 in een schrikkeljaar. We trekken 2 dagen af van elke februari met de formule \( −2\dfloor{(m_1 + 10)/12} \). We tellen er in het eerste van elke vier jaar weer 1 dag bij met de formule \( \dfloor{(x_2 + 46)}{48} \). Al met al vinden we

    \begin{align} s \| = 30 m_1 + \dfloorratio{7 m_1 + 5}{12} − 2\dfloorratio{m_1 + 10}{12} + \dfloorratio{m_1 + 46}{48} + d_0 \\ \| = 30 m_1 + \dfloorratio{7 m_1 + 5}{12} − 2\dfloorratio{m_1 + 10}{12} + \dfloorratio{m_1 + 46}{48} + d − 1 \notag \\ \| = 30 m_1 + \dfloorratio{7 m_1 − 7}{12} − 2\dfloorratio{m_1 + 10}{12} + \dfloorratio{m_1 + 46}{48} + d \end{align}

    Dit is kalendertype 4 met

    \( q = 30 \), \( g = 48 \), \( \{ r_1, h_1, t_1, g_1 \} = \{ 1, 7, 5, 12 \} \), \( \{r_2, h_2, t_2, g_2 \} = \{ −2, 1, 10, 12 \} \), \( \{ r_3, h_3, t_3, g_3 \} = \{ 1, 1, 46, 48\} \).

  4. En dan tellen we nog de CJDN van het begin van jaar 0 (1 january van het jaar 0) er bij op, en dat is 1 721 058.

    \begin{equation} J = s + J_0 = s + 1 721 058 \end{equation}

Samengevat:

\begin{align} m_1 \| = 12 a + m − 1 \\ s \| = 30 m_1 + \dfloorratio{7 m_1 − 7}{12} − 2\dfloorratio{m_1 + 10}{12} + \dfloorratio{m_1 + 46}{48} + d \\ J \| = s + 1 721 058 \end{align}

Bijvoorbeeld, wat is het CJDN dat hoort bij Juliaanse datum 6 juli 2003? Dan is \( a = 2003 \), \( m = 7 \), \( d = 6 \), en dan

\begin{align*} m_1 \| = 12 a + m − 1 = 12×2003 + 7 − 1 = 24042 \\ s \| = 30 m_1 + \dfloorratio{7 m_1 − 7}{12} − 2\dfloorratio{m_1 + 10}{12} + \dfloorratio{m_1 + 46}{48} + d \\ \| = 30×24042 + \dfloorratio{7×24042 − 7}{12} − 2\dfloorratio{24042 + 10}{12} + \dfloorratio{24042 + 46}{48} + 6 \\ \| = 721 260 + \dfloorratio{168287}{12} − 2\dfloorratio{24052}{12} + \dfloorratio{24088}{48} + 6 \\ \| = 721 260 + 14023 − 2×2004 + 501 + 6 = 731 782 \\ J \| = s + 1 721 058 = 731 782 + 1 721 058 = 2 452 840 \end{align*}

Nog wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({m_0}\) \({d_0}\) \({m_1}\) \({\dfloorratio{7m_1+5}{12}}\) \({\dfloorratio{m_1+10}{12}}\) \({\dfloorratio{m_1+46}{48}}\) \({s}\) \({J}\)
−4713 12 31 11 30 −56545 −32985 −4712 −1178 −1721059 −1
−4712 1 1 0 0 −56544 −32984 −4712 −1178 −1721058 0
−4712 1 2 0 1 −56544 −32984 −4712 −1178 −1721057 1
−1 12 31 11 30 −1 −1 0 0 −1 1721057
0 1 1 0 0 0 0 0 0 0 1721058
0 2 28 1 27 1 1 0 0 58 1721116
0 2 29 1 28 1 1 0 0 59 1721117
0 3 1 2 0 2 1 1 1 60 1721118
0 12 31 11 30 11 6 1 1 365 1721423
1 1 1 0 0 12 7 1 1 366 1721424
1582 10 4 9 3 18993 11079 1583 396 578102 2299160
1582 10 5 9 4 18993 11079 1583 396 578103 2299161
1999 12 31 11 30 23999 13999 2000 500 730499 2451557
1900 2 28 1 27 22801 13301 1900 475 694033 2415091
1900 2 29 1 28 22801 13301 1900 475 694034 2415092
1900 3 1 2 0 22802 13301 1901 476 694035 2415093
2000 1 1 0 0 24000 14000 2000 500 730500 2451558
2000 2 28 1 27 24001 14001 2000 500 730558 2451616
2000 2 29 1 28 24001 14001 2000 500 730559 2451617
2000 3 1 2 0 24002 14001 2001 501 730560 2451618
2003 7 6 6 5 24042 14024 2004 501 731782 2452840

14.2.4. Van CJDN naar Juliaanse datum (2)

De berekeningen zijn schematisch als volgt:

  a ━━━━━━━━━━━━┓
  m ─(−1)─ m₀ ─(1)━ m₁ ━┓
  d ─(−1)─ d₀ ─────────[2]━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({r_i}\) \({h_i}\) \({t_i}\) \({g_i}\) \({γ_i}\) \({p}\)
1 12 1 12 0 0 12
2.1 1461 48 30 1 7 5 12 4 30.4375
2.2 −2 1 10 12 4
2.3 1 1 46 48 1

Hiervoor doorlopen we dezelfde procedure als hierboven, maar in de omgekeerde richting.

  1. Eerst berekenen we het lopende dagnummer \( s \) door van de CJDN \( J \) van de gezochte datum de CJDN \( J_0 \) van het begin van jaar 0 af te trekken.

    \begin{equation} s = J − J_0 = J − 1 721 058 \end{equation}

  2. Berekening 2 levert het lopende maandnummer \( m_1 \) en het dagnummer \( d_0 \) sinds het begin van de maand op uit het lopende dagnummer \( s \).

    We hebben

    \begin{align} μ_2 \| = \dfloorratio{gs + g\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_i γ_i r_i t_i} − 1}{f} \notag \\ \| = \dfloorratio{48 s + 48×2 − (4×1×5 + 4×−2×10 + 1×1×46) − 1}{1461} \notag \\ \| = \range{\dfloorratio{48 s + 109}{1461}}{48} \\ δ_2 \| = s − 30 μ_2 − \dfloorratio{7 μ_2 + 5}{12} + 2\dfloorratio{μ_2 + 10}{12} − \dfloorratio{μ_2 + 46}{48} \end{align}

    Voor de \( \range{•}{48} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen is het bereik van die formule ongeveer 245 duizend jaar. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{eqnarray} \{ ω_1, δ_1 \} \| = \| \Div(s, 1461) \\ μ_1 \| = \| \dfloorratio{48 δ_1 + 109}{1461} \\ μ_2 \| = \| 48 ω_1 + μ_1 \end{eqnarray}

    Hier zijn wat voorbeelden van de originele berekening en de omweg.

    \({s}\) \({ω_1}\) \({δ_1}\) \({μ_1}\) \({μ_2}\) \({48s+109}\)
    −3 −1 1458 47 −1 −35
    −1 −1 1460 48 0 61
    0 0 0 0 0 109
    1 0 1 0 0 157
    28 0 28 0 0 1453
    29 0 29 1 1 1501
    393 0 393 12 12 18973
    394 0 394 13 13 19021
    1460 0 1460 48 48 70189
    1461 1 0 0 48 70237
    730484 499 1445 47 23999 35063341
    731782 500 1282 42 24042 35125645
    50000000 34223 197 6 1642710 2400000109

    Voor \( s = 50 000 000 \) geeft de orignele berekening het tussenresultaat \( 48 s + 109 = 2 400 000 109 \) dat te groot is om in een 32-bitsgetal (met teken) te passen, maar met de omweg is het grootste (tussen)resultaat meteen ook het eindresultaat 1 642 710 dat ruim klein genoeg is om in een 32-bitsgetal te passen.

    Omdat \( ρ ≤ 0 \) mogen we de procedure met het vaste aantal stappen gebruiken. Dan

    \begin{align} m_1 \| = μ_2 + \dfloorratio{δ_2}{32} \\ d_0 \| = s − 30 m_1 − \dfloorratio{7 m_1 + 5}{12} + 2\dfloorratio{m_1 + 10}{12} − \dfloorratio{m_1 + 46}{48} \end{align}

  3. Berekening 1 gaat van lopend maandnummer \( m_1 \) naar jaarnummer \( a \) en maandnummer \( m_0 \) sinds het begin van het jaar. Dit is een kalenderniveau van type 1.

    \begin{equation} \{ a, m_0 \} = \Div(m_1, 12) \end{equation}

  4. En als laatste verschuiven we het maandnummer en dagnummer zodat ze beginnen bij 1 en niet 0.

    \begin{align} m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

Samengevat:

\begin{align} s \| = J − 1 721 058 \\ μ_2 \| = \range{\dfloorratio{48 s + 109}{1461}}{48} \\ δ_2 \| = s − 30 μ_2 − \dfloorratio{7 μ_2 + 5}{12} + 2\dfloorratio{μ_2 + 10}{12} − \dfloorratio{μ_2 + 46}{48} \\ m_1 \| = μ_2 + \dfloorratio{δ_2}{32} \\ d \| = s − 30 m_1 − \dfloorratio{7 m_1 + 17}{12} + 2\dfloorratio{m_1 + 10}{12} − \dfloorratio{m_1 + 46}{48} \\ \{ a, m_0 \} \| = \Div(m_1, 12) \\ m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

Alternatief met een groter bereik voor de berekening van \( μ_2 \):

\begin{align} \{ ω_1, δ_1 \} \| = \Div(s, 1461) \\ μ_1 \| = \dfloorratio{48 δ_1 + 109}{1461} \\ μ_2 \| = 48 ω_1 + μ_1 \end{align}

Bijvoorbeeld, wat is de Juliaanse datum die hoort bij CJDN 2 452 840? Dan is \( J = 2 452 840 \), en daarmee

\begin{align*} s \| = J − 1 721 058 = 2 452 840 - 1 721 058 = 731 782 \\ μ_2 \| = \range{\dfloorratio{48 s + 109}{1461}}{48} = \dfloorratio{48×731 782 + 109}{1461} \\ \| = \dfloorratio{35 125 645}{1461} = 24042 \\ δ_2 \| = s − 30 μ_2 − \dfloorratio{7 μ_2 + 5}{12} + 2\dfloorratio{μ_2 + 10}{12} − \dfloorratio{μ_2 + 46}{48} \\ \| = 731 782 − 30×24042 − \dfloorratio{7×24042 + 5}{12} + 2\dfloorratio{24042 + 10}{12} − \dfloorratio{24042 + 46}{48} \\ \| = 731 782 − 721 260 − \dfloorratio{168 299}{12} + 2\dfloorratio{24052}{12} − \dfloorratio{24088}{48} \\ \| = 731 782 − 721 260 − 14024 + 2×2004 − 501 = 5 \\ m_1 \| = μ_2 + \dfloorratio{δ_2}{32} = 24042 + \dfloorratio{5}{32} = 24042 \\ d_0 \| = s − 30 m_1 − \dfloorratio{7 m_1 + 5}{12} + 2\dfloorratio{m_1 + 10}{12} − \dfloorratio{m_1 + 46}{48} = 5 \\ \{ a, m_0 \} \| = \Div(m_1, 12) = \Div(24042, 12) = \{ 2003, 6 \} \\ m \| = m_0 + 1 = 6 + 1 = 7 \\ d \| = d_0 + 1 = 5 + 1 = 6 \end{align*}

dus de datum is 6 juli 2003.

Nog wat meer voorbeelden:

\({J}\) \({s}\) \({μ_2}\) \({δ_2}\) \({m_1}\) \({d_0}\) \({m_0}\) \({a}\) \({m}\) \({d}\)
−1 −1721059 −56544 −1 −56545 30 11 −4713 12 31
0 −1721058 −56544 0 −56544 0 0 −4712 1 1
1 −1721057 −56544 1 −56544 1 0 −4712 1 2
1721057 −1 0 −1 −1 30 11 −1 12 31
1721058 0 0 0 0 0 0 0 1 1
1721116 58 1 27 1 27 1 0 2 28
1721117 59 2 −1 1 28 1 0 2 29
1721118 60 2 0 2 0 2 0 3 1
1721423 365 12 −1 11 30 11 0 12 31
1721424 366 12 0 12 0 0 1 1 1
2299160 578102 18993 3 18993 3 9 1582 10 4
2299161 578103 18993 4 18993 4 9 1582 10 5
2415091 694033 22801 27 22801 27 1 1900 2 28
2415092 694034 22802 −1 22801 28 1 1900 2 29
2415093 694035 22802 0 22802 0 2 1900 3 1
2451557 730499 24000 −1 23999 30 11 1999 12 31
2451558 730500 24000 0 24000 0 0 2000 1 1
2451616 730558 24001 27 24001 27 1 2000 2 28
2451617 730559 24002 −1 24001 28 1 2000 2 29
2451618 730560 24002 0 24002 0 2 2000 3 1
2452840 731782 24042 5 24042 5 6 2003 7 6

14.3. De Gregoriaanse kalender

14.3.1. Van Gregoriaanse datum naar CJDN (1)

De Gregoriaanse kalender is gelijk aan de Juliaanse kalender, behalve in de regels wanneer februari 29 dagen heeft in plaats van 28. In de Juliaanse kalender heeft februari elk vierde jaar 29 dagen, als het jaartal deelbaar is door 4. In de Gregoriaanse kalender geldt dezelfde regel, behalve dat februari toch 28 dagen heeft als het jaartal deelbaar is door 100, behalve als het jaartal deelbaar is door 400, want dan heeft februari toch weer 29 dagen.

Om Gregoriaanse jaren met een enkele rechte lijn met een enkel patroon te benaderen moeten de schrikkelwaarden terugkomen na elke \( ⌊Q⌋ \) of \( ⌈Q⌉ \) perioden (voor een gunstige \( Q \); zie vergelijking \eqref{eq:Q}). Helaas passen de schrikkelregels van de Gregoriaanse kalender daar niet bij, want die zeggen dat de tijd tussen twee schrikkeljaren soms 4 jaar is en soms 8 jaar.

De volgende \( p \) zouden in aanmerking kunnen komen:

We kunnen nu met de 146 097/4-lijn de perioden van 100 jaar vinden, en dan met de 36525/100-lijn de jaren in de 100-jaarperiode, en dan (net als voor de Juliaanse kalender) met de 153/5-lijn de maanden. 1 maart van het jaar 0 in de Gregoriaanse kalender komt overeen met \( J_0 = 1 721 120 \). De berekeningen zijn zoals getoond in het volgende diagram:

                         ┏━━ c₁ ━━━━━━━━━━┓
  a ━━━━━━━━━━━┐ ┌━ a₁ ━(2)─ a₂ ─┐        ┃
               (1)               │        ┃
  m ─(−1)─ m₀ ─┘ └─ m₁ ─┐        │        ┃
  d ─(−1)─ d₀ ─────────(3)─ d₁ ─(4)─ d₂ ─(5)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 12 1 12 0 2 12
2 100 1 100 0 0 100
3 153 5 30 3 2 30.6
4 36525 100 365 25 0 365.25
5 146 097 4 36524 1 0 36524.25

De stappen zijn nu als volgt, van de Gregoriaanse kalender naar het CJDN:

  1. Eerst verschuiven we maanden en dagen zodat de eerste beginnen met waarde 0. 1 januari komt dan overeen met \( m_0 = 0, d_0 = 0 \).

    \begin{align} m_0 \| = m − 1 \\ d_0 \| = d − 1 \end{align}

  2. Berekening 1 verschuift het maandnummer en jaarnummer zodat maart de eerste rekenmaand (maand \( m_1 = 0 \)) van het rekenjaar \( a_1 \) is in plaats van januari, net als voor de Juliaanse kalender (14.2.1):

    \begin{align} \{ α_1, m_1 \} \| = \Div(m_0 − 2, 12) = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \end{align}

  3. Berekening 2 rekent het rekeneeuwnummer \( c_1 \) en jaarnummer \( a_2 \) sinds het begin van de rekeneeuw uit uit het rekenjaarnummer \( a_1 \).

    \begin{equation} \{ c_1, a_2 \} = \Div(a_1, 100) \end{equation}

  4. Berekening 3 berekent het dagnummer \( d_1 \) sinds het begin van het rekenjaar uit het rekenmaandnummer \( m_1 \) en het dagnummer \( d_0 \) sinds het begin van de rekenmaand:

    \begin{align} d_1 \| = \dfloorratio{153 m_1 + 2}{5} + d_0 \\ \| = \dfloorratio{153 m_1 + 2}{5} + d − 1 \notag \\ \| = \dfloorratio{153 m_1 − 3}{5} + d \end{align}

  5. Berekening 4 rekent het dagnummer \( d_2 \) sinds het begin van de rekeneeuw uit uit het jaarnummer \( a_2 \) sinds het begin van de rekeneeuw en het dagnummer \( d_1 \) sinds het begin van het rekenjaar.

    \begin{equation} d_2 = \dfloorratio{36525 a_2}{100} + d_1 \end{equation}

  6. Berekening 5 rekent het lopende dagnummer \( s \) uit uit het rekeneeuwnummer \( c_1 \) en het dagnummer \( d_2 \) sinds het begin van de rekeneeuw.

    \begin{equation} s = \range{\dfloorratio{146 097 c_1}{4}}{4} + d_2 = 36524 c_1 + \dfloorratio{c_1}{4} + d_2 \end{equation}

    Voor de \( \range{•}{4} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen is het bereik van die formule ongeveer 2,9 miljoen jaar.

  7. En dan tellen we er de CJDN van het begin van rekenjaar 0 (dus 1 maart van jaar 0) nog bij, en dat is 1 721 120:

    \begin{equation} J = s + J_0 = s + 1 721 120 \end{equation}

Samengevat:

\begin{align} \{ α_1, m_1 \} \| = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \\ \{ c_1, a_2 \} \| = \Div(a_1, 100) \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d \\ d_2 \| = \dfloorratio{36525 a_2}{100} + d_1 \\ s \| = \range{\dfloorratio{146 097 c_1}{4}}{4} + d_2 = 36524 c_1 + \dfloorratio{c_1}{4} + d_2 \\ J \| = s + 1 721 120 \end{align}

Bijvoorbeeld, welke CJDN komt overeen met Gregoriaanse datum 6 juli 2003? Dan is \( a = 2003 \), \( m = 7 \), \( d = 6 \) en daarmee

\begin{align*} \{ α_1, m_1 \} \| = \Div(m − 3, 12) = \Div(7 − 3, 12) = \Div(4, 12) = \{ 0, 4 \} \\ a_1 \| = a + α_1 = 2003 + 0 = 2003 \\ \{ c_1, a_2 \} \| = \Div(a_1, 100) = \Div(2003, 100) = \{ 20, 3 \} \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d = \dfloorratio{153×4 − 3}{5} + 6 \\ \| = \dfloorratio{609}{5} + 6 = 121 + 6 = 127 \\ d_2 \| = \dfloorratio{36525 a_2}{100} + d_1 = \dfloorratio{36525×3}{100} + 127 \\ \| = \dfloorratio{109 575}{100} + 127 = 1095 + 127 = 1222 \\ s \| = \range{\dfloorratio{146 097 c_1}{4}}{4} + d_2 = \dfloorratio{146 097×20}{4} + 1222 \\ \| = \dfloorratio{2 921 940}{4} + 1222 = 730 485 + 1222 = 731 707 \\ J \| = s + 1 721 120 = 731 707 + 1 721 120 = 2 452 827 \end{align*}

Nog wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({α_1}\) \({m_1}\) \({a_1}\) \({c_1}\) \({a_2}\) \({d_1}\) \({d_2}\) \({s}\) \({J}\)
−4713 11 23 0 8 −4713 −48 87 359 32135 −1721029 91
−4713 11 24 0 8 −4713 −48 87 360 32136 −1721028 92
−4713 11 25 0 8 −4713 −48 87 361 32137 −1721027 93
−1 12 31 0 9 −1 −1 99 397 36556 31 1721151
0 1 1 −1 10 −1 −1 99 31 36190 −335 1720785
0 2 28 −1 11 −1 −1 99 88 36247 −278 1720842
0 2 29 −1 11 −1 −1 99 89 36248 −277 1720843
0 3 1 0 0 0 0 0 92 92 92 1721212
0 12 31 0 9 0 0 0 397 397 397 1721517
1 1 1 −1 10 0 0 0 31 31 31 1721151
1582 10 14 0 7 1582 15 82 319 30269 578132 2299252
1582 10 15 0 7 1582 15 82 320 30270 578133 2299253
1600 2 28 −1 11 1599 15 99 88 36247 584110 2305230
1600 2 29 −1 11 1599 15 99 89 36248 584111 2305231
1600 3 1 0 0 1600 16 0 92 92 584480 2305600
1900 2 28 −1 11 1899 18 99 88 36247 693683 2414803
1900 3 1 0 0 1900 19 0 92 92 694052 2415172
1999 12 31 0 9 1999 19 99 397 36556 730516 2451636
2000 1 1 −1 10 1999 19 99 31 36190 730150 2451270
2000 2 28 −1 11 1999 19 99 88 36247 730207 2451327
2000 2 29 −1 11 1999 19 99 89 36248 730208 2451328
2000 3 1 0 0 2000 20 0 92 92 730577 2451697
2003 7 6 0 4 2003 20 3 219 1314 731799 2452919
2800 2 28 −1 11 2799 27 99 88 36247 1022401 2743521
2800 2 29 −1 11 2799 27 99 89 36248 1022402 2743522
2800 3 1 0 0 2800 28 0 92 92 1022771 2743891

Merk op dat het jaar 1900 wel een schrikkeljaar was in de Juliaanse kalender (hoofdstuk 14.2) maar niet in de Gregoriaanse kalender.

Merk op dat het jaar 1600 wel een schrikkeljaar was in de Gregoriaanse kalender maar niet in de Milanković-kalender (hoofdstuk 14.4). En dat het jaar 2900 wel een schrikkeljaar is in de Milanković-kalender maar niet in de Gregoriaanse kalender.

14.3.2. Van CJDN naar Gregoriaanse datum (1)

Nu gaan we weer de andere kant op, met dezelfde kalenderniveaus als hierboven.

                         ┏━━ c₁ ━━━━━━━━━━┓
  a ━━━━━━━━━━━┐ ┌━ a₁ ━(2)─ a₂ ─┐        ┃
               (1)               │        ┃
  m ─(−1)─ m₀ ─┘ └─ m₁ ─┐        │        ┃
  d ─(−1)─ d₀ ─────────(3)─ d₁ ─(4)─ d₂ ─(5)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 12 1 12 0 2 12
2 100 1 100 0 0 100
3 153 5 30 3 2 30.6
4 36525 100 365 25 0 365.25
5 146 097 4 36524 1 0 36524.25

  1. Eerst trekken we het CJDN dat hoort bij lopende dagnummer 0 af van het CJDN om het lopende dagnummer te vinden:

    \begin{equation} s = J − J_0 = J − 1 721 120 \end{equation}

  2. Berekening 5 haalt uit lopende dagnummer \( s \) het rekeneeuwnummer \( c_1 \) en het dagnummer \( d_2 \) sinds het begin van de rekeneeuw:

    \begin{align} \{ c_1, ω_3 \} \| = \range{\Div(4 s + 3, 146 097)}{4} \\ d_2 \| = \dfloorratio{ω_3}{4} \end{align}

    Voor de \( \range{•}{4} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen is het bereik van die formule ongeveer 2,9 milioen jaar. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{eqnarray} \{ ω_1, δ_1 \} \| = \| \Div(s, 146097) \\ \{ ω_2, ω_3 \} \| = \| \Div(4 δ_1 + 3, 146097) \\ c_1 \| = \| 4 ω_1 + ω_2 \\ d_2 \| = \| \dfloorratio{ω_3}{4} \end{eqnarray}

    Hier zijn wat voorbeelden van de originele berekening en de omweg.

    \({s}\) \({ω_1}\) \({δ_1}\) \({ω_2}\) \({ω_3}\) \({c_1}\) \({4 s + 3}\)
    −1 −1 146096 3 146096 −1 −1
    0 0 0 0 3 0 3
    1 0 1 0 7 0 7
    146096 0 146096 3 146096 3 584387
    146097 1 0 0 3 4 584391
    146098 1 1 0 7 4 584395
    730484 4 146096 3 146096 19 2921939
    730485 5 0 0 3 20 2921943
    550055204 3764 146096 3 146096 15059 2200220819

    Voor \( s = 550 055 204 \) geeft de orignele berekening het tussenresultaat \( 4×550 055 204 + 3 = 2 200 220 819 \) dat te groot is om in een 32-bitsgetal (met teken) te passen, maar met de omweg is het grootste (tussen)resultaat meteen ook het eindresultaat 146_096 dat ruim klein genoeg is om in een 32-bitsgetal te passen.

  3. Berekening 4 haalt uit dagnummer \( d_2 \) sinds het begin van de rekeneeuw het jaartal \( a_2 \) sinds het begin van de rekeneeuw en het dagnummer \( d_1 \) sinds het begin van het rekenjaar.

    \begin{align} \{ a_2, ω_4 \} \| = \Div(100 d_2 + 99, 36525) \\ d_1 \| = \dfloorratio{ω_4}{100} \end{align}

  4. Berekening 3 splitst het dagnummer \( d_1 \) sinds het begin van het rekenjaar in het maandnummer \( m_1 \) sinds het begin van het rekenjaar en het dagnummer \( d_0 \) sinds het begin van de rekenmaand.

    \begin{align} \{ m_1, ω_5 \} \| = \Div(5 d_1 + 2, 153) \\ d_0 \| = \dfloorratio{ω_5}{5} \end{align}

  5. Berekening 2 voegt het rekeneeuwnummer \( c_1 \) en het rekenjaarnummer \( a_2 \) sinds het begin van de rekeneeuw samen tot het rekenjaarnummer \( a_1 \).

    \begin{equation} a_1 = 100 c_1 + a_2 \end{equation}

  6. Berekening 1 verschuift het rekenmaandnummer \( m_1 \) en rekenjaarnummer \( a_1 \) zodat januari in plaats van maart de eerste maand van het jaar is.

    \begin{align} \{ α_1, m_0 \} \| = \Div(m_1 + 2, 12) \\ a \| = a_1 + α_1 \end{align}

  7. En dan verschuiven we het maandnummer en het dagnummer zodat de eersten nummer 1 hebben in plaats van 0.

    \begin{align} m \| = m_0 + 1 \\ d \| = d_0 + 1 = \dfloorratio{ω_5}{5} + 1 \end{align}

Samengevat:

\begin{align} s \| = J − 1 721 120 \\ \{ c_1, ω_3 \} \| = \range{\Div(4 s + 3, 146 097)}{4} \\ d_2 \| = \dfloorratio{ω_3}{4} \\ \{ a_2, ω_4 \} \| = \Div(100 d_2 + 99, 36525) \\ d_1 \| = \dfloorratio{ω_4}{100} \\ \{ m_1, ω_5 \} \| = \Div(5 d_1 + 2, 153) \\ a_1 \| = 100 c_1 + a_2 \\ \{ α_1, m_0 \} \| = \Div(m_1 + 2, 12) \\ a \| = a_1 + α_1 \\ m \| = m_0 + 1 \\ d \| = \dfloorratio{ω_5}{5} + 1 \end{align}

Alternatief met groter bereik voor \( \{ c_1, ω_3 \} \):

\begin{align} \{ ω_1, δ_1 \} \| = \Div(s, 146097) \\ \{ ω_2, ω_3 \} \| = \Div(4 δ_1 + 3, 146097) \\ c_1 \| = 4 ω_1 + ω_2 \end{align}

Bijvoorbeeld, welke datum in de Gregoriaanse kalender komt overeen met CJDN 2 452 827? Dan is \( J = 2 452 827 \) en dan

\begin{align*} s \| = J − 1 721 120 = 2 452 827 − 1 721 120 = 731 707 \\ \{ c_1, ω_3 \} \| = \range{\Div(4 s + 3, 146 097)}{4} = \Div(4×731 707 + 3, 146 097) \\ \| = \Div(2 926 831, 146 097) = \{ 20, 4891 \} \\ d_2 \| = \dfloorratio{ω_3}{4} = \dfloorratio{4891}{4} = 1222 \\ \{ a_2, ω_4 \} \| = \Div(100 d_2 + 99, 36525) = \Div(100×1222 + 99, 36525) \\ \| = \Div(122 299, 36525) = \{ 3, 12724 \} \\ d_1 \| = \dfloorratio{ω_4}{100} = \dfloorratio{12724}{100} = 127 \\ \{ m_1, ω_5 \} \| = \Div(5 d_1 + 2, 153) = \Div(5×127 + 2, 153) \\ \| = \Div(637, 153) = \{ 4, 25 \} \\ a_1 \| = 100 c_1 + a_2 = 100×20 + 3 = 2003 \\ \{ α_1, m_0 \} \| = \Div(m_1 + 2, 12) = \Div(4 + 2, 12) = \Div(6, 12) = \{ 0, 6 \} \\ a \| = a_1 + α_1 = 2003 + 0 = 2003 \\ m \| = m_0 + 1 = 6 + 1 = 7 \\ d \| = \dfloorratio{ω_5}{5} + 1 = \dfloorratio{25}{5} + 1 = 5 + 1 = 6 \end{align*}

De datum is 6 juli 2003.

Wat meer voorbeelden:

\({J}\) \({s}\) \({c_1}\) \({ω_3}\) \({d_2}\) \({a_2}\) \({ω_4}\) \({d_1}\) \({m_1}\) \({ω_5}\) \({a_1}\) \({α_1}\) \({m_0}\) \({a}\) \({m}\) \({d}\)
−1 −1721121 −48 128175 32043 87 26724 267 8 113 −4713 0 10 −4713 11 23
0 −1721120 −48 128179 32044 87 26824 268 8 118 −4713 0 10 −4713 11 24
1 −1721119 −48 128183 32045 87 26924 269 8 123 −4713 0 10 −4713 11 25
1721059 −61 −1 145856 36464 99 30524 305 9 150 −1 0 11 −1 12 31
1721060 −60 −1 145860 36465 99 30624 306 10 2 −1 1 0 0 1 1
1721118 −2 −1 146092 36523 99 36424 364 11 139 −1 1 1 0 2 28
1721119 −1 −1 146096 36524 99 36524 365 11 144 −1 1 1 0 2 29
1721120 0 0 3 0 0 99 0 0 2 0 0 2 0 3 1
1721425 305 0 1223 305 0 30599 305 9 150 0 0 11 0 12 31
1721426 306 0 1227 306 0 30699 306 10 2 0 1 0 1 1 1
2299160 578040 15 120708 30177 82 22749 227 7 66 1582 0 9 1582 10 14
2299161 578041 15 120712 30178 82 22849 228 7 71 1582 0 9 1582 10 15
2305506 584386 15 146092 36523 99 36424 364 11 139 1599 1 1 1600 2 28
2305507 584387 15 146096 36524 99 36524 365 11 144 1599 1 1 1600 2 29
2305508 584388 16 3 0 0 99 0 0 2 1600 0 2 1600 3 1
2415079 693959 18 146093 36523 99 36424 364 11 139 1899 1 1 1900 2 28
2415080 693960 19 0 0 0 99 0 0 2 1900 0 2 1900 3 1
2451544 730424 19 145856 36464 99 30524 305 9 150 1999 0 11 1999 12 31
2451545 730425 19 145860 36465 99 30624 306 10 2 1999 1 0 2000 1 1
2451603 730483 19 146092 36523 99 36424 364 11 139 1999 1 1 2000 2 28
2451604 730484 19 146096 36524 99 36524 365 11 144 1999 1 1 2000 2 29
2451605 730485 20 3 0 0 99 0 0 2 2000 0 2 2000 3 1
2452827 731707 20 4891 1222 3 12724 127 4 25 2003 0 6 2003 7 6
2743797 1022677 27 146092 36523 99 36424 364 11 139 2799 1 1 2800 2 28
2743798 1022678 27 146096 36524 99 36524 365 11 144 2799 1 1 2800 2 29
2743799 1022679 28 3 0 0 99 0 0 2 2800 0 2 2800 3 1

Merk op dat het jaar 1900 wel een schrikkeljaar was in de Juliaanse kalender (hoofdstuk 14.2) maar niet in de Gregoriaanse kalender.

Merk op dat de jaren 1600 en 2800 wel schrikkeljaren zijn in de Gregoriaanse kalender maar niet in de Milanković-kalender (hoofdstuk 14.4).

14.3.3. Van Gregoriaanse datum naar CJDN (2)

We kunnen toe met twee kalenderniveaus en vlakke combinatie als we kalendertype 4 gebruiken voor het bovenste niveau, met meerdere maandlengtes. Dan is voor dat bovenste niveau

\begin{align*} q \| = 365 \\ g \| = 400 \\ \{ d_1, h_1, s_1 \} \| = \{ 1, 100, 0\} \\ \{ d_2, h_2, s_2 \} \| = \{ −1, 4, 0\} \\ \{ d_3, h_3, s_3 \} \| = \{ 1, 1, 0\} \end{align*}

Het onderste kalenderniveau is hetzelfde als hierboven, dus

  a ━━━━━━━━━━━┓ ┏━ a₁ ━━━━━━━━━━┓
               (1)               ┃
  m ─(−1)─ m₀ ─┘ └─ m₁ ─┐        ┃
  d ─(−1)─ d₀ ─────────(2)─ d₁ ─[3]━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({r_i}\) \({h_i}\) \({t_i}\) \({g_i}\) \({γ_i}\) \({p}\)
1 12 1 12 0 2 12
2 153 5 30 3 2 30.6
3.1 146 097 400 365 1 1 0 4 100 365.2425
3.2 −1 1 0 100 4
3.3 1 1 0 400 1

De stappen zijn nu als volgt, van de Gregoriaanse kalender naar het CJDN:

  1. Eerst verschuiven we maanden en dagen zodat de eerste beginnen met waarde 0. 1 januari komt dan overeen met \( m_0 = 0, d_0 = 0 \).

    \begin{align} m_0 \| = m − 1 \\ d_0 \| = d − 1 \end{align}

  2. Berekening 1 verschuift het maandnummer en jaarnummer zodat maart de eerste rekenmaand (maand \( m_1 = 0 \)) van het rekenjaar \( a_1 \) is in plaats van januari, net als voor de Juliaanse kalender (14.2.1):

    \begin{align} \{ α_1, m_1 \} \| = \Div(m_0 − 2, 12) = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \end{align}

  3. Berekening 2 berekent het dagnummer \( d_1 \) sinds het begin van het rekenjaar uit het rekenmaandnummer \( m_1 \) en het dagnummer \( d_0 \) sinds het begin van de rekenmaand:

    \begin{align} d_1 \| = \dfloorratio{153 m_1 + 2}{5} + d_0 \\ \| = \dfloorratio{153 m_1 + 2}{5} + d − 1 \notag \\ \| = \dfloorratio{153 m_1 − 3}{5} + d \end{align}

  4. Berekening 3 rekent het lopende dagnummer \( s \) uit uit het rekenjaarnummer \( a_1 \) en het dagnummer \( d_1 \) sinds het begin van het rekenjaar.

    \begin{equation} s = 365 a_1 + \dfloorratio{a_1}{4} − \dfloorratio{a_1}{100} + \dfloorratio{a_1}{400} + d_1 \end{equation}

  5. En dan tellen we er de CJDN van het begin van rekenjaar 0 (dus 1 maart van jaar 0) nog bij, en dat is 1 721 120:

    \begin{equation} J = s + J_0 = s + 1 721 120 \end{equation}

Samengevat:

\begin{align} \{ α_1, m_1 \} \| = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d \\ s \| = 365 a_1 + \dfloorratio{a_1}{4} − \dfloorratio{a_1}{100} + \dfloorratio{a_1}{400} + d_1 \\ J \| = s + 1 721 120 \end{align}

Bijvoorbeeld, welke CJDN komt overeen met Gregoriaanse datum 6 juli 2003? Dan is \( a = 2003 \), \( m = 7 \), \( d = 6 \) en daarmee

\begin{align} \{ α_1, m_1 \} \| = \Div(m − 3, 12) = \Div(7 − 3, 12) = \Div(4, 12) = \{ 0, 4 \} \\ a_1 \| = a + α_1 = 2003 + 0 = 2003 \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d = \dfloorratio{153×4 − 3}{5} + 6 \\ \| = \dfloorratio{609}{5} + 6 = 121 + 6 = 127 \\ s \| = 365 a_1 + \dfloorratio{a_1}{4} − \dfloorratio{a_1}{100} + \dfloorratio{a_1}{400} + d_1 \\ \| = 365×2003 + \dfloorratio{2003}{4} − \dfloorratio{2003}{100} + \dfloorratio{2003}{400} + 127 \\ \| = 731 095 + 500 − 20 + 5 + 127 = 731 707 \\ J \| = s + 1 721 120 = 731 707 + 1 721 120 = 2 452 827 \end{align}

Nog wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({m_0}\) \({d_0}\) \({α_1}\) \({m_1}\) \({a_1}\) \({d_1}\) \({s}\) \({J}\)
−4713 11 23 10 22 0 8 −4713 267 −1721121 −1
−4713 11 24 10 23 0 8 −4713 268 −1721120 0
−4713 11 25 10 24 0 8 −4713 269 −1721119 1
−1 12 31 11 30 0 9 −1 305 −61 1721059
0 1 1 0 0 −1 10 −1 306 −60 1721060
0 2 28 1 27 −1 11 −1 364 −2 1721118
0 2 29 1 28 −1 11 −1 365 −1 1721119
0 3 1 2 0 0 0 0 0 0 1721120
0 12 31 11 30 0 9 0 305 305 1721425
1 1 1 0 0 −1 10 0 306 306 1721426
1582 10 14 9 13 0 7 1582 227 578040 2299160
1582 10 15 9 14 0 7 1582 228 578041 2299161
1600 2 28 1 27 −1 11 1599 364 584386 2305506
1600 2 29 1 28 −1 11 1599 365 584387 2305507
1600 3 1 2 0 0 0 1600 0 584388 2305508
1900 2 28 1 27 −1 11 1899 364 693959 2415079
1900 3 1 2 0 0 0 1900 0 693960 2415080
1999 12 31 11 30 0 9 1999 305 730424 2451544
2000 1 1 0 0 −1 10 1999 306 730425 2451545
2000 2 28 1 27 −1 11 1999 364 730483 2451603
2000 2 29 1 28 −1 11 1999 365 730484 2451604
2000 3 1 2 0 0 0 2000 0 730485 2451605
2003 7 6 6 5 0 4 2003 127 731707 2452827
2800 2 28 1 27 −1 11 2799 364 1022677 2743797
2800 2 29 1 28 −1 11 2799 365 1022678 2743798
2800 3 1 2 0 0 0 2800 0 1022679 2743799

14.3.4. Van CJDN naar Gregoriaanse Datum (2)

Nu gaan we weer de andere kant op.

  a ━━━━━━━━━━━┓ ┏━ a₁ ━━━━━━━━━━┓
               (1)               ┃
  m ─(−1)─ m₀ ─┘ └─ m₁ ─┐        ┃
  d ─(−1)─ d₀ ─────────(2)─ d₁ ─[3]━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({r_i}\) \({h_i}\) \({t_i}\) \({g_i}\) \({γ_i}\) \({p}\)
1 12 1 12 0 2 12
2 153 5 30 3 2 30.6
3.1 146 097 400 365 1 1 0 4 100 365.2425
3.2 −1 1 0 100 4
3.3 1 1 0 400 1

  1. Eerst trekken we het CJDN dat hoort bij lopende dagnummer 0 af van het CJDN om het lopende dagnummer te vinden:

    \begin{equation} s = J − J_0 = J − 1 721 120 \end{equation}

  2. Berekening 3 splitst lopende dagnummer \( s \) in het rekenjaartal \( a_1 \) en het dagnummer \( d_1 \) sinds het begin van het rekenjaar. Er geldt

    \begin{align} ρ \| = 2×2 − (−1) − 365 − 1 − 2×\dparen{\dfrac{1×1}{4} + \dfrac{−1×1}{100} + \dfrac{1×1}{400}} \notag \\ \| = −361 − 2×\dparen{\dfrac{1}{4} − \dfrac{1}{100} + \dfrac{1}{400}} \notag \\ \| = −361\dfrac{97}{200} \le 0 \end{align}

    dus we mogen de methode met het vaste aantal stappen gebruiken.

    \begin{align} α_2 \| = \dfloorratio{400 s + 400×2 − 0 − 1}{146 097} = \range{\dfloorratio{400 s + 799}{146 097}}{400} \\ δ_2 \| = s − 365 α_2 − \dfloorratio{α_2}{4} + \dfloorratio{α_2}{100} − \dfloorratio{α_2}{400} \\ α_3 \| = \dfloorratio{δ_2}{367} \\ a_1 \| = α_2 + α_3 \\ d_1 \| = s − 365 a_1 − \dfloorratio{a_1}{4} + \dfloorratio{a_1}{100} − \dfloorratio{a_1}{400} \end{align}

    Voor de \( \range{•}{400} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen is het bereik van die formule ongeveer 29 duizend jaar. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{eqnarray} \{ ω_1, δ_1 \} \| = \| \Div(s, 146 097) \\ α_1 \| = \| \dfloorratio{400 δ_1 + 799}{146 097} \\ α_2 \| = \| 400 ω_1 + α_1 \end{eqnarray}

    Hier zijn wat voorbeelden van de originele berekening en de omweg.

    \({s}\) \({ω_1}\) \({δ_1}\) \({α_1}\) \({α_2}\) \({400 s + 799}\)
    −1 −1 146096 400 0 399
    0 0 0 0 0 3
    1 0 1 0 0 7
    731707 5 1222 3 2003 292683599
    730484 4 146096 400 2000 292194399
    730485 5 0 0 2000 292194799
    5551685 37 146096 400 15200 2220674799
    5551686 38 0 0 15200 2220675199

    Voor \( s = 5 551 685 \) geeft de orignele berekening het tussenresultaat \( 400×5 551 685 + 799 = 2 220 674 799 \) dat te groot is om in een 32-bitsgetal (met teken) te passen, maar met de omweg is het grootste tussenresultaat gelijk aan 146 096 dat ruim klein genoeg is om in een 32-bitsgetal te passen.

  3. Berekening 2 splitst het dagnummer \( d_1 \) sinds het begin van het rekenjaar in het maandnummer \( m_1 \) sinds het begin van het rekenjaar en het dagnummer \( d_0 \) sinds het begin van de rekenmaand.

    \begin{align} \{ m_1, ω_2 \} \| = \Div(5 d_1 + 2, 153) \\ d_0 \| = \dfloorratio{ω_2}{5} \end{align}

  4. Berekening 1 verschuift het rekenmaandnummer \( m_1 \) en rekenjaarnummer \( a_1 \) zodat januari in plaats van maart de eerste maand van het jaar is.

    \begin{align} \{ α_3, m_0 \} \| = \Div(m_1 + 2, 12) \\ a \| = a_1 + α_3 \end{align}

  5. En dan verschuiven we het maandnummer en het dagnummer zodat de eersten nummer 1 hebben in plaats van 0.

    \begin{align} m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

Samengevat:

\begin{align} s \| = J − 1 721 120 \\ α_2 \| = \range{\dfloorratio{400 s + 799}{146 097}}{400} \\ δ_2 \| = s − 365 α_2 − \dfloorratio{α_2}{4} + \dfloorratio{α_2}{100} − \dfloorratio{α_2}{400} \\ α_3 \| = \dfloorratio{δ_2}{367} \\ a_1 \| = α_2 + α_3 \\ d_1 \| = s − 365 a_1 − \dfloorratio{a_1}{4} + \dfloorratio{a_1}{100} − \dfloorratio{a_1}{400} \\ \{ m_1, ω_2 \} \| = \Div(5 d_1 + 2, 153) \\ d_0 \| = \dfloorratio{ω_2}{5} \\ \{ α_3, m_0 \} \| = \Div(m_1 + 2, 12) \\ a \| = a_1 + α_3 \\ m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

Alternatief voor een groter bereik voor de berekening van \( α_2 \):

\begin{align} \{ ω_1, δ_1 \} \| = \Div(s, 146 097) \\ α_1 \| = \dfloorratio{400 δ_1 + 799}{146 097} \\ α_2 \| = 400 ω_1 + α_1 \end{align}

Bijvoorbeeld, welke datum in de Gregoriaanse kalender komt overeen met CJDN 2 452 827? Dan is \( J = 2 452 827 \) en dan

\begin{align*} s \| = J − 1 721 120 = 2 452 827 − 1 721 120 = 731 707 \\ α_2 \| = \range{\dfloorratio{400 s + 799}{146 097}}{400} = \dfloorratio{400×731707 + 799}{146 097} \\ \| = \dfloorratio{292 683 599}{146 097} = 2003 \\ δ_2 \| = s − 365 α_2 − \dfloorratio{α_2}{4} + \dfloorratio{α_2}{100} − \dfloorratio{α_2}{400} \\ \| = 731 707 − 365×2003 − \dfloorratio{2003}{4} + \dfloorratio{2003}{100} − \dfloorratio{2003}{400} \\ \| = 731 707 − 731 095 − 500 + 20 − 5 = 127 \\ α_3 \| = \dfloorratio{δ_2}{367} = \dfloorratio{127}{367} = 0 \\ a_1 \| = α_2 + α_3 = 2003 + 0 = 2003 \\ d_1 \| = s − 365 a_1 − \dfloorratio{a_1}{4} + \dfloorratio{a_1}{100} − \dfloorratio{a_1}{400} = 127 \\ \{ m_1, ω_2 \} \| = \Div(5 d_1 + 2, 153) = \Div(5×127 + 2, 153) \\ \| = \Div(637, 153) = \{ 4, 25 \} \\ d_0 \| = \dfloorratio{ω_2}{5} = \dfloorratio{25}{5} = 5 \\ \{ α_3, m_0 \} \| = \Div(m_1 + 2, 12) = \Div(4 + 2, 12) = \Div(6, 12) = \{ 0, 6 \} \\ a \| = a_1 + α_3 = 2003 + 0 = 2003 \\ m \| = m_0 + 1 = 6 + 1 = 7 \\ d \| = d_0 + 1 = 5 + 1 = 6 \end{align*}

De datum is 6 juli 2003.

Nog wat meer voorbeelden:

\({J}\) \({s}\) \({α_2}\) \({δ_2}\) \({α_3}\) \({a_1}\) \({d_1}\) \({m_1}\) \({ω_2}\) \({d_0}\) \({α_3}\) \({m_0}\) \({a}\) \({m}\) \({d}\)
−1 −1721121 −4713 267 0 −4713 267 8 113 22 0 10 −4713 11 23
0 −1721120 −4713 268 0 −4713 268 8 118 23 0 10 −4713 11 24
1 −1721119 −4713 269 0 −4713 269 8 123 24 0 10 −4713 11 25
1721059 −61 −1 305 0 −1 305 9 150 30 0 11 −1 12 31
1721060 −60 −1 306 0 −1 306 10 2 0 1 0 0 1 1
1721118 −2 −1 364 0 −1 364 11 139 27 1 1 0 2 28
1721119 −1 0 −1 −1 −1 365 11 144 28 1 1 0 2 29
1721120 0 0 0 0 0 0 0 2 0 0 2 0 3 1
1721425 305 0 305 0 0 305 9 150 30 0 11 0 12 31
1721426 306 0 306 0 0 306 10 2 0 1 0 1 1 1
2299160 578040 1582 227 0 1582 227 7 66 13 0 9 1582 10 14
2299161 578041 1582 228 0 1582 228 7 71 14 0 9 1582 10 15
2305506 584386 1599 364 0 1599 364 11 139 27 1 1 1600 2 28
2305507 584387 1600 −1 −1 1599 365 11 144 28 1 1 1600 2 29
2305508 584388 1600 0 0 1600 0 0 2 0 0 2 1600 3 1
2415079 693959 1900 −1 −1 1899 364 11 139 27 1 1 1900 2 28
2415080 693960 1900 0 0 1900 0 0 2 0 0 2 1900 3 1
2451544 730424 1999 305 0 1999 305 9 150 30 0 11 1999 12 31
2451545 730425 1999 306 0 1999 306 10 2 0 1 0 2000 1 1
2451603 730483 1999 364 0 1999 364 11 139 27 1 1 2000 2 28
2451604 730484 2000 −1 −1 1999 365 11 144 28 1 1 2000 2 29
2451605 730485 2000 0 0 2000 0 0 2 0 0 2 2000 3 1
2452827 731707 2003 127 0 2003 127 4 25 5 0 6 2003 7 6
2743797 1022677 2799 364 0 2799 364 11 139 27 1 1 2800 2 28
2743798 1022678 2800 −1 −1 2799 365 11 144 28 1 1 2800 2 29
2743799 1022679 2800 0 0 2800 0 0 2 0 0 2 2800 3 1

14.3.5. Van Gregoriaanse datum naar CJDN (3)

De berekeningen zijn schematisch als volgt:

  a ━━━━━━━━━━━━┓
  m ─(−1)─ m₀ ─(1)━ m₁ ━┓
  d ─(−1)─ d₀ ─────────[2]━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({r_i}\) \({h_i}\) \({t_i}\) \({g_i}\) \({γ_i}\) \({p}\)
1 12 1 12 0 0 12
2.1 146097 4800 30 1 7 5 12 400 30.436875
2.2 −2 1 10 12 400
2.3 1 1 46 48 100
2.4 −1 1 1198 1200 4
2.5 1 1 4798 4800 1

Net als voor de Juliaanse kalender kunnen we een getrapte combinatie van kalenderniveaus gebruiken. Vergeleken met de Juliaanse kalender moeten we bij berekening 2 de schrikkelregels voor elke 100 jaar en elke 400 jaar er nog bij stoppen:

\begin{eqnarray*} 30 m_1 + \dfloorratio{7 m_1 + 5}{12} − 2\dfloorratio{m_1 + 10}{12} + \dfloorratio{m_1 + 46}{48} \\ − \dfloorratio{m_1 + 1198}{1200} + \dfloorratio{m_1 + 4798}{4800} \end{eqnarray*}

dus kalendertype 4 met

\begin{eqnarray*} q \| = \| 30 \\ g \| = \| 4800 \\ \{ r_1, h_1, t_1, g_1 \} \| = \| \{ 1, 7, 5, 12 \} \\ \{ r_2, h_2, t_2, g_2 \} \| = \| \{ −2, 1, 10, 12 \} \\ \{ r_3, h_3, t_3, g_3 \} \| = \| \{ 1, 1, 46, 48 \} \\ \{ r_4, h_4, t_4, g_4 \} \| = \| \{ −1, 1, 1198, 1200 \} \\ \{ r_5, h_5, t_5, g_5 \} \| = \| \{ 1, 1, 4798, 4800 \} \end{eqnarray*}

Het CJDN \( J_0 \) dat overeenkomt met \( \{ j, m, d \} = \{ 0, 0, 0 \} \) ofwel 1 januari van het jaar 0 (in de Gregoriaanse kalender) is 1 721 060.

Verder is alles hetzelfde als voor de Juliaanse kalender. We vinden dan

\begin{align} m_1 \| = 12 a + m − 1 \\ s \| = 30 m_1 + \dfloorratio{7 m_1 − 7}{12} − 2\dfloorratio{m_1 + 10}{12} + \dfloorratio{m_1 + 46}{48} \notag \\ \| − \dfloorratio{m_1 + 1198}{1200} + \dfloorratio{m_1 + 4798}{4800} + d \\ J \| = s + 1 721 060 \end{align}

Bijvoorbeeld, wat is het CJDN dat hoort bij Juliaanse datum 6 juli 2003? Dan is \( a = 2003 \), \( m = 7 \), \( d = 6 \), en dan

\begin{align*} m_1 \| = 12 a + m − 1 = 12×2003 + 7 − 1 = 24042 \\ s \| = 30 m_1 + \dfloorratio{7 m_1 − 7}{12} − 2\dfloorratio{m_1 + 10}{12} + \dfloorratio{m_1 + 46}{48} \notag \\ \| − \dfloorratio{m_1 + 1198}{1200} + \dfloorratio{m_1 + 4798}{4800} + d \\ \| = 30×24042 + \dfloorratio{7×24042 − 7}{12} − 2\dfloorratio{24042 + 10}{12} + \dfloorratio{24042 + 46}{48} \notag \\ \| − \dfloorratio{24042 + 1198}{1200} + \dfloorratio{24042 + 4798}{4800} + 6 \\ \| = 721 260 + \dfloorratio{168 287}{12} − 2\dfloorratio{24052}{12} + \dfloorratio{24088}{48} \notag \\ \| − \dfloorratio{25240}{1200} + \dfloorratio{28840}{4800} + 6 \\ \| = 721 260 + 14023 − 2×2004 + 501 − 21 + 6 + 6 = 731 767 \\ J \| = s + 1 721 060 = 731 767 + 1 721 060 = 2 452 827 \end{align*}

Nog wat meer voorbeelden:

\begin{align*} δ_1 \| = \dfloorratio{7 m_1 − 7}{12} \\ δ_2 \| = \dfloorratio{m_1 + 10}{12} \\ δ_3 \| = \dfloorratio{m_1 + 46}{48} \\ δ_4 \| = \dfloorratio{m_1 + 1198}{1200} \\ δ_5 \| = \dfloorratio{m_1 + 4798}{4800} \end{align*}

\({a}\) \({m}\) \({d}\) \({m_1}\) \({δ_1}\) \({δ_2}\) \({δ_3}\) \({δ_4}\) \({δ_5}\) \({s}\) \({J}\)
−4713 11 23 −56546 −32986 −4712 −1178 −47 −11 −1721060 0
−4713 11 24 −56546 −32986 −4712 −1178 −47 −11 −1721059 1
−4713 11 25 −56546 −32986 −4712 −1178 −47 −11 −1721058 2
−1 12 31 −1 −2 0 0 0 0 0 1721060
0 1 1 0 −1 0 0 0 0 1 1721061
0 2 28 1 0 0 0 0 0 59 1721119
0 2 29 1 0 0 0 0 0 60 1721120
0 3 1 2 0 1 1 1 1 61 1721121
0 12 31 11 5 1 1 1 1 366 1721426
1 1 1 12 6 1 1 1 1 367 1721427
1582 10 14 18993 11078 1583 396 16 4 578101 2299161
1582 10 15 18993 11078 1583 396 16 4 578102 2299162
1600 2 28 19201 11200 1600 400 16 4 584447 2305507
1600 2 29 19201 11200 1600 400 16 4 584448 2305508
1600 3 1 19202 11200 1601 401 17 5 584449 2305509
1900 2 28 22801 13300 1900 475 19 5 694020 2415080
1900 3 1 22802 13300 1901 476 20 5 694021 2415081
1999 12 31 23999 13998 2000 500 20 5 730485 2451545
2000 1 1 24000 13999 2000 500 20 5 730486 2451546
2000 2 28 24001 14000 2000 500 20 5 730544 2451604
2000 2 29 24001 14000 2000 500 20 5 730545 2451605
2000 3 1 24002 14000 2001 501 21 6 730546 2451606
2003 7 6 24042 14023 2004 501 21 6 731768 2452828
2800 2 28 33601 19600 2800 700 28 7 1022738 2743798
2800 2 29 33601 19600 2800 700 28 7 1022739 2743799
2800 3 1 33602 19600 2801 701 29 8 1022740 2743800

14.3.6. Van CJDN naar Gregoriaanse datum (3)

De berekeningen zijn schematisch als volgt:

  a ━━━━━━━━━━━━┓
  m ─(−1)─ m₀ ─(1)━ m₁ ━┓
  d ─(−1)─ d₀ ─────────[2]━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({r_i}\) \({h_i}\) \({t_i}\) \({g_i}\) \({γ_i}\) \({p}\)
1 12 1 12 0 0 12
2.1 146 097 4800 30 1 7 5 12 400 30.436875
2.2 −2 1 10 12 400
2.3 1 1 46 48 100
2.4 −1 1 1198 1200 4
2.5 1 1 4798 4800 1

Hiervoor doorlopen we dezelfde procedure als hierboven, maar in de omgekeerde richting.

  1. Eerst berekenen we het lopende dagnummer \( s \) door van de CJDN \( J \) van de gezochte datum de CJDN \( J_0 \) van het begin van jaar 0 af te trekken.

    \begin{equation} s = J − J_0 = J − 1 721 060 \end{equation}

  2. Berekening 2 levert het lopende maandnummer \( m_1 \) en het dagnummer \( d_0 \) sinds het begin van de maand op uit het lopende dagnummer \( s \).

    We hebben

    \begin{align} μ_2 \| = \dfloorratio{gs + g\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_i γ_i r_i t_i} − 1}{f} \notag \\ \| = \dfloorratio{4800 s + 4800×3 − (−1394) − 1}{146 097} \notag \\ \| = \range{\dfloorratio{4800 s + 15793}{146 097}}{4800} \label{eq:greg3μ1} \\ δ_2 \| = s − 30 μ_2 − \dfloorratio{7 μ_2 + 5}{12} + 2\dfloorratio{μ_2 + 10}{12} − \dfloorratio{μ_2 + 46}{48} \notag \\ \| + \dfloorratio{μ_2 + 1198}{1200} − \dfloorratio{μ_2 + 4798}{4800} \\ ρ \| = 2\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_{r_i \lt 0} r_i} − q − 1 − 2 \dparen{\sum_i \dfrac{r_ih_i}{g_i}} \notag \\ \| = 2×3 − (−3) − 30 − 2×0.436875 = −21.87375 \end{align}

    Voor de \( \range{•}{4800} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen heeft die formule een bereik van slechts ongeveer 2450 jaar. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{eqnarray} \{ω_1, δ_1\} \| = \| \Div(s, 146 097) \\ μ_1 \| = \| \dfloorratio{4800 δ_1 + 15793}{146 097} \\ μ_2 \| = \| 4800 ω_1 + μ_1 \end{eqnarray}

    Hier zijn wat voorbeelden van de originele berekening en de omweg.

    \({s}\) \({ω_1}\) \({δ_1}\) \({μ_1}\) \({μ_2}\) \({4800 s + 15793}\)
    −1 −1 146096 4800 0 10993
    0 0 0 0 0 15793
    1 0 1 0 0 20593
    200000 1 53903 1771 6571 960015793
    730484 4 146096 4800 24000 3506338993
    730485 5 0 0 24000 3506343793

    Voor \( s = 730 484 \) geeft de orignele berekening het tussenresultaat \( 4800×730 484 + 15793 = 3 506 338 993 \) dat te groot is om in een 32-bitsgetal (met teken) te passen, maar met de omweg is het grootste tussenresultaat 146 096 dat ruim klein genoeg is om in een 32-bitsgetal te passen.

    Omdat \( ρ ≤ 0 \) mogen we de procedure met het vaste aantal stappen gebruiken. Dan

    \begin{align} m_1 \| = μ_2 + \dfloorratio{δ_2}{33} \\ d_0 \| = s − 30 m_1 − \dfloorratio{7 m_1 + 5}{12} + 2\dfloorratio{m_1 + 10}{12} − \dfloorratio{m_1 + 46}{48} \notag \\ \| + \dfloorratio{m_1 + 1198}{1200} − \dfloorratio{m_1 + 4798}{4800} \end{align}

  3. Berekening 1 gaat van lopend maandnummer \( m_1 \) naar jaarnummer \( a \) en maandnummer \( m_0 \) sinds het begin van het jaar. Dit is een kalenderniveau van type 1.

    \begin{equation} \{ a, m_0 \} = \Div(m_1, 12) \end{equation}

  4. En als laatste verschuiven we het maandnummer en dagnummer zodat ze beginnen bij 1 en niet 0.

    \begin{align} m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

Samengevat:

\begin{align} s \| = J − 1 721 060 \\ μ_2 \| = \range{\dfloorratio{4800 s + 15793}{146 097}}{4800} \\ δ_2 \| = s − 30 μ_2 − \dfloorratio{7 μ_2 + 5}{12} + 2\dfloorratio{μ_2 + 10}{12} − \dfloorratio{μ_2 + 46}{48} \notag \\ \| + \dfloorratio{μ_2 + 1198}{1200} − \dfloorratio{μ_2 + 4798}{4800} \\ m_1 \| = μ_2 + \dfloorratio{δ_2}{33} \\ d_0 \| = s − 30 m_1 − \dfloorratio{7 m_1 + 5}{12} + 2\dfloorratio{m_1 + 10}{12} − \dfloorratio{m_1 + 46}{48} \notag \\ \| + \dfloorratio{m_1 + 1198}{1200} − \dfloorratio{m_1 + 4798}{4800} \\ \{ a, m_0 \} \| = \Div(m_1, 12) \\ m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

Alternatief met groter bereik voor de berekening van \( μ_2 \):

\begin{align} \{ω_1, δ_1\} \| = \Div(s, 146 097) \\ μ_1 \| = \dfloorratio{4800 δ_1 + 15793}{146 097} \\ μ_2 \| = 4800 ω_1 + μ_1 \end{align}

Bijvoorbeeld, welke datum in de Gregoriaanse kalender komt overeen met CJDN 2 452 827? Dan is \( J = 2 452 827 \) en dan

\begin{align*} s \| = J − 1 721 060 = 2 452 827 − 1 721 060 = 731 767 \\ μ_2 \| = \range{\dfloorratio{4800 s + 15793}{146 097}}{4800} = \dfloorratio{4800×731 767 + 15793}{146 097} \\ \| = \dfloorratio{3 512 497 393}{146 097} = 24042 \\ δ_2 \| = s − 30 μ_2 − \dfloorratio{7 μ_2 + 5}{12} + 2\dfloorratio{μ_2 + 10}{12} − \dfloorratio{μ_2 + 46}{48} \\ \| + \dfloorratio{μ_2 + 1198}{1200} − \dfloorratio{μ_2 + 4798}{4800} \\ \| = 731 767 − 30×24042 − \dfloorratio{7×24042 + 5}{12} + 2\dfloorratio{24042 + 10}{12} − \dfloorratio{24042 + 46}{48} \\ \| + \dfloorratio{24042 + 1198}{1200} − \dfloorratio{24042 + 4798}{4800} \\ \| = 731 767 − 721 260 − \dfloorratio{168299}{12} + 2\dfloorratio{24052}{12} − \dfloorratio{24088}{48} \\ \| + \dfloorratio{25240}{1200} − \dfloorratio{28840}{4800} \\ \| = 10507 − 14024 + 2×2004 − 501 + 21 − 6 = 5 \\ m_1 \| = μ_2 + \dfloorratio{δ_2}{33} = 24042 + \dfloorratio{5}{33} = 24042 \\ d_0 \| = s − 30 m_1 − \dfloorratio{7 m_1 + 5}{12} + 2\dfloorratio{m_1 + 10}{12} − \dfloorratio{m_1 + 46}{48} \notag \\ \| + \dfloorratio{m_1 + 1198}{1200} − \dfloorratio{m_1 + 4798}{4800} = 5 \\ \{ a, m_0 \} \| = \Div(m_1, 12) = \Div(24042, 12) = \{ 2003, 6 \} \\ m \| = m_0 + 1 = 6 + 1 = 7 \\ d \| = d_0 + 1 = 5 + 1 = 6 \end{align*}

De datum is 6 juli 2003.

Nog wat meer voorbeelden:

\({J}\) \({s}\) \({ω_1}\) \({δ_1}\) \({μ_1}\) \({μ_2}\) \({δ_2}\) \({m_1}\) \({d_0}\) \({m_0}\) \({a}\) \({m}\) \({d}\)
−1 −1721061 −12 32103 1054 −56546 22 −56546 22 10 −4713 11 23
0 −1721060 −12 32104 1054 −56546 23 −56546 23 10 −4713 11 24
1 −1721059 −12 32105 1054 −56546 24 −56546 24 10 −4713 11 25
1721059 −1 −1 146096 4800 0 −1 −1 30 11 −1 12 31
1721060 0 0 0 0 0 0 0 0 0 0 1 1
1721118 58 0 58 2 2 −2 1 27 1 0 2 28
1721119 59 0 59 2 2 −1 1 28 1 0 2 29
1721120 60 0 60 2 2 0 2 0 2 0 3 1
1721425 365 0 365 12 12 −1 11 30 11 0 12 31
1721426 366 0 366 12 12 0 12 0 0 1 1 1
2299160 578100 3 139809 4593 18993 13 18993 13 9 1582 10 14
2299161 578101 3 139810 4593 18993 14 18993 14 9 1582 10 15
2305506 584446 4 58 2 19202 −2 19201 27 1 1600 2 28
2305507 584447 4 59 2 19202 −1 19201 28 1 1600 2 29
2305508 584448 4 60 2 19202 0 19202 0 2 1600 3 1
2415079 694019 4 109631 3602 22802 −1 22801 27 1 1900 2 28
2415080 694020 4 109632 3602 22802 0 22802 0 2 1900 3 1
2451544 730484 4 146096 4800 24000 −1 23999 30 11 1999 12 31
2451545 730485 5 0 0 24000 0 24000 0 0 2000 1 1
2451603 730543 5 58 2 24002 −2 24001 27 1 2000 2 28
2451604 730544 5 59 2 24002 −1 24001 28 1 2000 2 29
2451605 730545 5 60 2 24002 0 24002 0 2 2000 3 1
2452827 731767 5 1282 42 24042 5 24042 5 6 2003 7 6
2743797 1022737 7 58 2 33602 −2 33601 27 1 2800 2 28
2743798 1022738 7 59 2 33602 −1 33601 28 1 2800 2 29
2743799 1022739 7 60 2 33602 0 33602 0 2 2800 3 1

Voor de Gregoriaanse kalender zijn de formules in de hoofdstukken met "(2)" en "(3)" in de titel niet eenvoudiger dan de formules met "(1)" in de titel van het hoofdstuk, dus raden we de formules van het hoofdstuk "(1)" aan voor algemeen gebruik voor deze kalender. Het is echter niet altijd mogelijk om zulke formules te vinden, dus is het prettig om dan ook lastigere maar ook krachtigere formules achter de hand te hebben.

14.4. De Milanković-kalender

14.4.1. Van Milanković-datum naar CJDN

Sommige Oosters-Orthodoxe Kerken hebben enige tijd (vanaf 1923) een door Milutin Milanković bedachte kalender gebruikt die alleen afwijkt van de Gregoriaanse kalender door de regel welke eeuwjaren schrikkeljaren zijn. In de Gregoriaanse kalender zijn dat alle eeuwjaren die niet deelbaar zijn door 400. In de Milanković-kalender zijn dat alle eeuwjaren die bij deling door 900 een rest van 200 of 600 geven. De volgende tabel toont voor de eeuwjaren van 1500 tot 2900 welke daarvan schrikkeljaren zijn in de Gregoriaanse en Milanković-kalenders.

Jaar Gregoriaans Milanković
1500 nee ja
1600 ja nee
1700 nee nee
1800 nee nee
1900 nee nee
2000 ja ja
2100 nee nee
2200 nee nee
2300 nee nee
2400 ja ja
2500 nee nee
2600 nee nee
2700 nee nee
2800 ja nee
2900 nee ja

Tussen de jaren 1601 en 2799 lopen de Milanković- en Gregoriaanse kalenders gelijk. De jaren 1600 en 2800 zijn wel schrikkeljaren in de Gregoriaanse kalender maar niet in de Milanković-kalender.

Met deze regels heeft de Milanković-kalender een periode van 365×900 + 900/4 − (900/100)×(7/9) = 328 718 dagen. De omrekening van datum naar CJDN is voor de Milanković-kalender bijna hetzelfde als voor de Gregoriaanse kalender (zie hoofdstuk 14.3.1). De berekeningen zijn schematisch als volgt:

                         ┏━━ c₁ ━━━━━━━━━━┓
  a ━━━━━━━━━━━┓ ┏━ a₁ ━(2)─ a₂ ─┐        ┃
               (1)               │        ┃
  m ─(−1)─ m₀ ─┘ └─ m₁ ─┐        │        ┃
  d ─(−1)─ d₀ ─────────(3)─ d₁ ─(4)─ d₂ ─(5)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 12 1 12 0 2 12
2 100 1 100 0 0 100
3 153 5 30 3 2 30.6
4 36525 100 365 25 0 365.25
5 328718 9 36524 2 6 36524+2/9

De stappen zijn nu als volgt, van de Milanković-kalender naar het CJDN:

  1. Eerst verschuiven we maanden en dagen zodat de eerste beginnen met waarde 0. 1 januari komt dan overeen met \( m_0 = 0, d_0 = 0 \).

    \begin{align} m_0 \| = m − 1 \\ d_0 \| = d − 1 \end{align}

  2. Berekening 1 verschuift het maandnummer en jaarnummer zodat maart de eerste rekenmaand (maand \( m_1 = 0 \)) van het rekenjaar \( a_1 \) is in plaats van januari, net als voor de Juliaanse kalender (14.2.1):

    \begin{align} \{ α_1, m_1 \} \| = \Div(m_0 − 2, 12) = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \end{align}

  3. Berekening 2 rekent het rekeneeuwnummer \( c_1 \) en jaarnummer \( a_2 \) sinds het begin van de rekeneeuw uit uit het rekenjaarnummer \( a_1 \).

    \begin{equation} \{ c_1, a_2 \} = \Div(a_1, 100) \end{equation}

  4. Berekening 3 berekent het dagnummer \( d_1 \) sinds het begin van het rekenjaar uit het rekenmaandnummer \( m_1 \) en het dagnummer \( d_0 \) sinds het begin van de rekenmaand:

    \begin{align} d_1 \| = \dfloorratio{153 m_1 + 2}{5} + d_0 \\ \| = \dfloorratio{153 m_1 + 2}{5} + d − 1 \notag \\ \| = \dfloorratio{153 m_1 − 3}{5} + d \end{align}

  5. Berekening 4 rekent het dagnummer \( d_2 \) sinds het begin van de rekeneeuw uit uit het jaarnummer \( a_2 \) sinds het begin van de rekeneeuw en het dagnummer \( d_1 \) sinds het begin van het rekenjaar.

    \begin{equation} d_2 = \dfloorratio{36525 a_2}{100} + d_1 \end{equation}

  6. Berekening 5 rekent het lopende dagnummer \( s \) uit uit het rekeneeuwnummer \( c_1 \) en het dagnummer \( d_2 \) sinds het begin van de rekeneeuw.

    \begin{equation} s = \range{\dfloorratio{328 718 c_1 + 6}{9}}{9} + d_2 = 36524 c_1 + \dfloorratio{2 c_1 + 6}{9} + d_2 \end{equation}

    Voor de \( \range{•}{9} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen heeft die formule een bereik van ongeveer 1,3 miljoen jaar. Het alternatief daarachter heeft het maximale bereik, wat voor 32-bitsgetallen gelijk is aan ongeveer 11 miljoen jaar.

  7. En dan tellen we er de CJDN van het begin van rekenjaar 0 (dus 1 maart van jaar 0) nog bij, en dat is 1 721 120:

    \begin{equation} J = s + J_0 = s + 1 721 120 \end{equation}

Samengevat:

\begin{align} \{ α_1, m_1 \} \| = \Div(m − 3, 12) \\ a_1 \| = a + α_1 \\ \{ c_1, a_2 \} \| = \Div(a_1, 100) \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d \\ d_2 \| = \dfloorratio{36525 a_2}{100} + d_1 \\ s \| = \range{\dfloorratio{328 718 c_1 + 6}{9}}{9} + d_2 = 36524 c_1 + \dfloorratio{2 c_1 + 6}{9} + d_2 \\ J \| = s + J_0 = s + 1 721 120 \end{align}

Bijvoorbeeld, welke CJDN komt overeen met Milanković-datum 6 juli 2003? Dan is \( a = 2003 \), \( m = 7 \), \( d = 6 \) en daarmee

\begin{align*} \{ α_1, m_1 \} \| = \Div(m − 3, 12) = \Div(7 − 3, 12) = \Div(4, 12) = \{ 0, 4 \} \\ a_1 \| = a + α_1 = 2003 + 0 = 2003 \\ \{ c_1, a_2 \} \| = \Div(a_1, 100) = \Div(2003, 100) = \{ 20, 3 \} \\ d_1 \| = \dfloorratio{153 m_1 − 3}{5} + d_0 = \dfloorratio{153×4 − 3}{5} + 6 = \dfloorratio{609}{5} + 6 = 121 + 6 = 127 \\ d_2 \| = \dfloorratio{36525 a_2}{100} + d_1 = \dfloorratio{36525×3}{100} + 127 \\ \| = \dfloorratio{109 575}{100} + 122 = 1095 + 127 = 1222 \\ s \| = \dfloorratio{328 718 c_1 + 6}{9} + d_2 = \dfloorratio{328 718×20 + 6}{9} + 1222 \\ \| = \dfloorratio{6 574 366}{9} + 1222 = 730 485 + 1222 = 731 707 \\ J \| = s + 1 721 120 = 731 707 + 1 721 120 = 2 452 827 \end{align*}

Nog wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({α_1}\) \({m_1}\) \({a_1}\) \({c_1}\) \({a_2}\) \({d_1}\) \({d_2}\) \({s}\) \({J}\)
−4713 11 21 0 8 −4713 −48 87 265 32041 −1721121 −1
−4713 11 22 0 8 −4713 −48 87 266 32042 −1721120 0
−4713 11 23 0 8 −4713 −48 87 267 32043 −1721119 1
−1 12 31 0 9 −1 −1 99 305 36464 −60 1721060
0 1 1 −1 10 −1 −1 99 306 36465 −59 1721061
0 2 28 −1 11 −1 −1 99 364 36523 −1 1721119
0 3 1 0 0 0 0 0 0 0 0 1721120
0 12 31 0 9 0 0 0 305 305 305 1721425
1 1 1 −1 10 0 0 0 306 306 306 1721426
1582 10 14 0 7 1582 15 82 227 30177 578041 2299161
1582 10 15 0 7 1582 15 82 228 30178 578042 2299162
1600 2 28 −1 11 1599 15 99 364 36523 584387 2305507
1600 3 1 0 0 1600 16 0 0 0 584388 2305508
1900 2 28 −1 11 1899 18 99 364 36523 693959 2415079
1900 3 1 0 0 1900 19 0 0 0 693960 2415080
1999 12 31 0 9 1999 19 99 305 36464 730424 2451544
2000 1 1 −1 10 1999 19 99 306 36465 730425 2451545
2000 2 28 −1 11 1999 19 99 364 36523 730483 2451603
2000 2 29 −1 11 1999 19 99 365 36524 730484 2451604
2000 3 1 0 0 2000 20 0 0 0 730485 2451605
2003 7 6 0 4 2003 20 3 127 1222 731707 2452827
2800 2 28 −1 11 2799 27 99 364 36523 1022677 2743797
2800 3 1 0 0 2800 28 0 0 0 1022678 2743798

Merk op dat de jaren 1600 en 2800 wel schrikkeljaren zijn in de Gregoriaanse kalender (hoofdstuk 14.3) maar niet in de Milanković-kalender.

14.4.2. Van CJDN naar Milanković-datum

Ook in de omgekeerde richting doen we hetzelfde als voor de Gregoriaanse kalender (zie hoofdstuk 14.3.2), behalve dat we andere formules gebruiken om \( c_1 \) en \( d_2 \) uit te rekenen. De berekeningen zijn schematisch zoals in het volgende diagram:

                         ┏━━ c₁ ━━━━━━━━━━┓
  a ━━━━━━━━━━━┓ ┏━ a₁ ━(2)─ a₂ ─┐        ┃
               (1)               │        ┃
  m ─(−1)─ m₀ ─┘ └─ m₁ ─┐        │        ┃
  d ─(−1)─ d₀ ─────────(3)─ d₁ ─(4)─ d₂ ─(5)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 12 1 12 0 2 12
2 100 1 100 0 0 100
3 153 5 30 3 2 30.6
4 36525 100 365 25 0 365.25
5 328718 9 36524 2 6 36524+2/9

  1. Eerst trekken we het CJDN dat hoort bij lopende dagnummer 0 af van het CJDN om het lopende dagnummer te vinden:

    \begin{equation} s = J − J_0 = J − 1 721 120 \end{equation}

  2. Berekening 5 haalt uit lopende dagnummer \( s \) het rekeneeuwnummer \( c_1 \) en het dagnummer \( d_2 \) sinds het begin van de rekeneeuw:

    \begin{align} \{ c_1, ω_3 \} \| = \range{\Div(9 s + 2, 328 718)}{9} \\ d_2 \| = \dfloorratio{ω_3}{9} \end{align}

    Voor de \( \range{•}{9} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen heeft die formule een bereik van ongeveer 1,3 miljoen jaar. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{eqnarray} \{ ω_1, δ_1 \} \| = \| \Div(s, 328 718) \\ \{ ω_2, ω_3 \} \| = \| \Div(9 δ_1 + 2, 328 718) \\ c_1 \| = \| 9 ω_1 + ω_2 \end{eqnarray}

    Hier zijn wat voorbeelden van de originele berekening en de omweg.

    \({s}\) \({ω_1}\) \({δ_1}\) \({ω_2}\) \({ω_3}\) \({c_1}\) \({9 s + 2}\)
    −1 −1 328717 8 328711 −1 −7
    0 0 0 0 2 0 2
    1 0 1 0 11 0 11
    328717999 999 328717 8 328711 8999 2958461993
    328718000 1000 0 0 2 9000 2958462002

    Voor \( s = 328 717 999 \) geeft de orignele berekening het tussenresultaat \( 9×328 717 999 + 2 = 2 958 461 993 \) dat te groot is om in een 32-bitsgetal (met teken) te passen, maar met de omweg is het grootste tussenresultaat 328 717, ruim klein genoeg om in een 32-bitsgetal te passen.

  3. Berekening 4 haalt uit dagnummer \( d_2 \) sinds het begin van de rekeneeuw het jaartal \( a_2 \) sinds het begin van de rekeneew en het dagnummer \( d_1 \) sinds het begin van het rekenjaar.

    \begin{align} \{ a_2, ω_4 \} \| = \Div(100 d_2 + 99, 36525) \\ d_1 \| = \dfloorratio{ω_4}{100} \end{align}

  4. Berekening 3 splitst het dagnummer \( d_1 \) sinds het begin van het rekenjaar in het maandnummer \( m_1 \) sinds het begin van het rekenjaar en het dagnummer \( d_0 \) sinds het begin van de rekenmaand.

    \begin{align} \{ m_1, ω_5 \} \| = \Div(5 d_1 + 2, 153) \\ d_0 \| = \dfloorratio{ω_5}{5} \end{align}

  5. Berekening 2 voegt het rekeneeuwnummer \( c_1 \) en het rekenjaarnummer \( a_2 \) sinds het begin van de rekeneeuw samen tot het rekenjaarnummer \( a_1 \).

    \begin{equation} a_1 = 100 c_1 + a_2 \end{equation}

  6. Berekening 1 verschuift het rekenmaandnummer \( m_1 \) en rekenjaarnummer \( a_1 \) zodat januari in plaats van maart de eerste maand van het jaar is.

    \begin{align} \{ α_1, m_0 \} \| = \Div(m_1 + 2, 12) \\ a \| = a_1 + α_1 \end{align}

  7. En dan verschuiven we het maandnummer en het dagnummer zodat de eersten nummer 1 hebben in plaats van 0.

    \begin{align} m \| = m_0 + 1 \\ d \| = d_0 + 1 = \dfloorratio{ω_5}{5} + 1 \end{align}

Samengevat:

\begin{align} s \| = J − 1 721 120 \\ \{ c_1, ω_3 \} \| = \range{\Div(9 s + 2, 328 718)}{9} \\ d_2 \| = \dfloorratio{ω_3}{9} \\ \{ a_2, ω_4 \} \| = \Div(100 d_2 + 99, 36525) \\ d_1 \| = \dfloorratio{ω_4}{100} \\ \{ m_1, ω_5 \} \| = \Div(5 d_1 + 2, 153) \\ a_1 \| = 100 c_1 + a_2 \\ \{ α_1, m_0 \} \| = \Div(m_1 + 2, 12) \\ a \| = a_1 + α_1 \\ m \| = m_0 + 1 \\ d \| = \dfloorratio{ω_5}{5} + 1 \end{align}

Alternatief met groter bereik voor de berekening van \( c_1 \) en \( ω_3 \):

\begin{align} \{ ω_1, δ_1 \} \| = \Div(s, 328 718) \\ \{ ω_2, ω_3 \} \| = \Div(9 δ_1 + 2, 328 718) \\ c_1 \| = 9 ω_1 + ω_2 \end{align}

Bijvoorbeeld, welke datum in de Milanković-kalender komt overeen met CJDN 2 452 827? Dan is \( J = 2 452 827 \) en dan

\begin{align*} s \| = J − 1 721 120 = 2 452 827 − 1 721 120 = 731 707 \\ \{ c_1, ω_3 \} \| = \range{\Div(9 s + 2, 328 718)}{9} = \Div(9×731 707 + 2, 328 718) \\ \| = \Div(6 585 365, 328 718) = \{ 20, 11005 \} \\ d_2 \| = \dfloorratio{ω_3}{9} = \dfloorratio{11005}{9} = 1222 \\ \{ a_2, ω_4 \} \| = \Div(100 d_2 + 99, 36525) = \Div(100×1222 + 99, 36525) \\ \| = \Div(122 299, 36525) = \{3, 12724\} \\ d_1 \| = \dfloorratio{ω_4}{100} = \dfloorratio{12724}{100} = 127 \\ \{ m_1, ω_5 \} \| = \Div(5 d_1 + 2, 153) = \Div(5×127 + 2, 153) \\ \| = \Div(637, 153) = \{4, 25\} \\ a_1 \| = 100 c_1 + a_2 = 100×20 + 3 = 2003 \\ \{ α_1, m_0 \} \| = \Div(m_1 + 2, 12) = \Div(4 + 2, 12) = \Div(6, 12) = \{ 0, 6 \} \\ a \| = a_1 + α_1 = 2003 + 0 = 2003 \\ m \| = m_0 + 1 = 6 + 1 = 7 \\ d \| = \dfloorratio{ω_5}{5} + 1 = \dfloorratio{25}{5} + 1 = 5 + 1 = 6 \end{align*}

De datum is 6 juli 2003.

Wat meer voorbeelden:

\({J}\) \({s}\) \({c_1}\) \({ω_3}\) \({d_2}\) \({a_2}\) \({ω_4}\) \({d_1}\) \({m_1}\) \({ω_5}\) \({a_1}\) \({α_1}\) \({m_0}\) \({a}\) \({m}\) \({d}\)
−1 −1721121 −48 288377 32041 87 26524 265 8 103 −4713 0 10 −4713 11 21
0 −1721120 −48 288386 32042 87 26624 266 8 108 −4713 0 10 −4713 11 22
1 −1721119 −48 288395 32043 87 26724 267 8 113 −4713 0 10 −4713 11 23
1721060 −60 −1 328180 36464 99 30524 305 9 150 −1 0 11 −1 12 31
1721061 −59 −1 328189 36465 99 30624 306 10 2 −1 1 0 0 1 1
1721119 −1 −1 328711 36523 99 36424 364 11 139 −1 1 1 0 2 28
1721120 0 0 2 0 0 99 0 0 2 0 0 2 0 3 1
1721425 305 0 2747 305 0 30599 305 9 150 0 0 11 0 12 31
1721426 306 0 2756 306 0 30699 306 10 2 0 1 0 1 1 1
2299161 578041 15 271601 30177 82 22749 227 7 66 1582 0 9 1582 10 14
2299162 578042 15 271610 30178 82 22849 228 7 71 1582 0 9 1582 10 15
2305507 584387 15 328715 36523 99 36424 364 11 139 1599 1 1 1600 2 28
2305508 584388 16 6 0 0 99 0 0 2 1600 0 2 1600 3 1
2415079 693959 18 328709 36523 99 36424 364 11 139 1899 1 1 1900 2 28
2415080 693960 19 0 0 0 99 0 0 2 1900 0 2 1900 3 1
2451544 730424 19 328176 36464 99 30524 305 9 150 1999 0 11 1999 12 31
2451545 730425 19 328185 36465 99 30624 306 10 2 1999 1 0 2000 1 1
2451603 730483 19 328707 36523 99 36424 364 11 139 1999 1 1 2000 2 28
2451604 730484 19 328716 36524 99 36524 365 11 144 1999 1 1 2000 2 29
2451605 730485 20 7 0 0 99 0 0 2 2000 0 2 2000 3 1
2452827 731707 20 11005 1222 3 12724 127 4 25 2003 0 6 2003 7 6
2743797 1022677 27 328709 36523 99 36424 364 11 139 2799 1 1 2800 2 28
2743798 1022678 28 0 0 0 99 0 0 2 2800 0 2 2800 3 1

Merk op dat de jaren 1600 en 2800 wel schrikkeljaren zijn in de Gregoriaanse kalender (hoofdstuk 14.3) maar niet in de Milanković-kalender.

14.5. De Egyptische kalender

14.5.1. Van Egyptische datum naar CJDN

De oude Egyptenaren hadden een wel heel simpele kalender, zonder schrikkeljaren en met 30 dagen in elke maand behalve dat de laatste maand 5 dagen had.

Op het bovenste kalenderniveau heeft elk jaar 365 dagen. Op het onderste niveau heeft elke maand 30 dagen. De laatste maand heeft eigenlijk maar 5 dagen, maar dat krijgen we vanzelf door het bovenste kalenderniveau. We combineren de twee niveaus op de vlakke manier.

De kalenderniveau's zijn schematisch als volgt:

  a ━━━━━━━━━━━━━━━━━━━━━┓
  m ─(−1)─ m₀ ──┐        ┃
  d ─(−1)─ d₀ ─(1)─ d₁ ─(2)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 30 1 30 0 0 30
2 365 1 365 0 0 365

  1. Eerst trekken we 1 af van het maandnummer en het dagnummer zodat die beginnen bij 0 in plaats van 1.

    \begin{align} m_0 \| = m − 1 \\ d_0 \| = d − 1 \end{align}

  2. Berekening 1 voegt het maandnummer \( m_0 \) sinds het begin van het jaar en het dagnummer \( d_0 \) sinds het begin van de maand samen tot het dagnummer \( d_1 \) sinds het begin van het jaar.

    \begin{align} d_1 \| = 30 m_0 + d_0 \\ \| = 30 (m − 1) + d − 1 \notag \\ \| = 30 m + d ― 31 \end{align}

  3. Berekening 2 voegt het jaarnummer \( a \) en het dagnummer \( d_1 \) sinds het begin van het jaar samen tot het lopende dagnummer \( s \).

    \begin{equation} s = 365 a + d_1 \end{equation}

  4. En dan tellen we de CJDN van lopende dagnummer 0 er bij op. In de kalender volgens de era van Nabonassar was de eerste dag van het eerste jaar (1 Thoth van jaar 1) gelijk aan 26 februari −746 in de Juliaanse kalender, ofwel aan JD 1 448 638. Om dat te krijgen moeten we \( J_0 = 1 448 273 \) gebruiken.

    \begin{equation} J = s + J_0 = s + 1 448 273 \end{equation}

Samenvattend:

\begin{align} d_1 \| = 30 m + d − 31 \\ s \| = 365 a + d_1 \\ J \| = s + 1 448 273 \end{align}

Bijvoorbeeld, welke CJDN komt overeen met dag 7 van maand 5 van jaar 218 in de Egyptische kalender? Dan vinden we

\begin{align*} d_1 \| = 30 m + d − 31 = 30×5 + 7 − 31 = 126 \\ s \| = 365 a + d_1 = 365×218 + 126 = 79696 \\ J \| = s + 1 448 273 = 79696 + 1 448 273 = 1 527 969 \end{align*}

dus het antwoord is CJDN 1 527 969.

Nog een paar voorbeelden:

\({a}\) \({m}\) \({d}\) \({d_1}\) \({s}\) \({J}\)
−1 13 5 364 −1 1448272
0 1 1 0 0 1448273
0 13 5 364 364 1448637
1 1 1 0 365 1448638
1 1 30 29 394 1448667
1 2 1 30 395 1448668
218 5 7 126 79696 1527969

14.5.2. Van CJDN naar Egyptische datum

In omgekeerde richting zijn de berekeningen ook eenvoudig.

De kalenderniveau's zijn schematisch als volgt:

  a ━━━━━━━━━━━━━━━━━━━━━┓
  m ─(−1)─ m₀ ──┐        ┃
  d ─(−1)─ d₀ ─(1)─ d₁ ─(2)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 30 1 30 0 0 30
2 365 1 365 0 0 365

  1. Eerst trekken we de CJDN \( J_0 \) van lopende dagnummer 0 er van af.

    \begin{equation} s = J − J_0 = J − 1 448 273 \end{equation}

  2. Berekening 2 splits het lopende dagnummer \( s \) in een jaarnummer \( a \) en het dagnummer \( d_1 \) sinds het begin van het jaar.

    \begin{equation} \{ a, d_1 \} = \Div(s, 365) \end{equation}

  3. Berekening 1 splits the dagnummer \( d_1 \) sinds het begin van het jaar in het maandnummer \( m_0 \) sinds het begin van het jaar en het dagnummer \( d_0 \) sinds het begin van de maand.

    \begin{equation} \{ m_0, d_0 \} = \Div(d_1, 30) \end{equation}

  4. En dan tellen we 1 op bij het maandnummer en het dagnummer zodat ze beginnen bij 1 in plaats van bij 0.

    \begin{align} m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

Samenvattend:

\begin{align} s \| = J − 1 448 273 \\ \{ a, d_1 \} \| = \Div(s, 365) \\ \{ m_0, d_0 \} \| = \Div(d_1, 30) \\ m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

Welke datum in de Egyptische kalender komt overeen met CJDN 1 527 969? Dan is

\begin{align*} s \| = J − J_0 = 1 527 969 − 1 448 273 = 79696 \\ \{ a, d_1 \} \| = \Div(79696, 365) = \{ 218, 126 \} \\ \{ m_0, d_0 \} \| = \Div(126, 30) = \{ 4, 6 \} \\ m \| = m_0 + 1 = 4 + 1 = 5 \\ d \| = d_0 + 1 = 6 + 1 = 7 \end{align*}

dus het is dag 7 van maand 5 van jaar 218. Nog een paar voorbeelden:

\({J}\) \({s}\) \({a}\) \({d_1}\) \({m_0}\) \({d_0}\) \({m}\) \({d}\)
1448272 −1 −1 364 12 4 13 5
1448273 0 0 0 0 0 1 1
1448637 364 0 364 12 4 13 5
1448638 365 1 0 0 0 1 1
1448667 394 1 29 0 29 1 30
1448668 395 1 30 1 0 2 1
1527969 79696 218 126 4 6 5 7

14.6. De Babylonische kalender

14.6.1. Van Babylonische datum naar CJDN

De cyclus van Meton stelt dat 235 (synodische) maanden gelijk zijn aan 19 (tropische) jaren van elk 12 of 13 maanden, met 125 maanden van 30 dagen en 110 maanden van 29 dagen, dus in totaal 6940 dagen. De lange jaren (met 13 maanden) zijn het 1e, 4e, 7e, 9e, 12e, 15e en 18e jaar van elke cyclus. In het 18e jaar wordt maand 6 verdubbeld, en in de andere lange jaren wordt maand 12 verdubbeld. De eerste dag van de eerste maand (Nisannu) van het eerste jaar van de era van Seleukos komt overeen met 3 april −310 in de Juliaanse kalender, ofwel CJDN 1 607 923.

De Babyloniërs bepaalden het begin van elke maand aan de hand van waarnemingen. Ze gaven niet de eerste maand van elk jaar hetzelfde aantal dagen (en zo ook voor de andere maanden), maar varieerden wel het aantal maanden per jaar volgens bovenstaand schema. De verdeling van maanden over jaren ging dus onafhankelijk van de verdeling van dagen over maanden.

Als een kalender (deels) gebaseerd is op directe waarnemingen dan is hij een beetje onvoorspelbaar en kun je die niet helemaal vangen in formules. Dan hangt de kalender af van bijvoorbeeld het weer. Als het toevallig een keer flink bewolkt is dan zien de kalenderregelaars de maansikkel die avond niet maar pas de volgende avond en dan begint de nieuwe maand een dag later.

Wij leiden hier een kalender af die lijkt op die van de Babyloniërs maar die volledig voorspelbaar is. De afwijking ten opzichte van de historische kalender van de Babyloniërs zou meestal hooguit 1 dag moeten zijn.

Dat vraagt om een kalender met getrapte combinatie van een kalenderniveau tussen dag en maand en een kalenderniveau tussen maand en jaar. De berekeningen zijn schematisch:

  a ━(−1)━ a₀ ━━┓
  m ─(−1)─ m₀ ─(1)━ m₁ ━┓
  d ─(−1)─ d₀ ─────────(2)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 235 19 12 7 13 12.368421
2 6940 235 29 125 0 29.531915

  1. Eerst trekken we 1 af van het jaarnummer \( a \), maandnummer \( m \) en het dagnummer \( d \) zodat ze beginnen met 0 in plaats van 1.

    \begin{align} a_0 \| = a − 1 \\ m_0 \| = m − 1 \\ d_0 \| = d − 1 \end{align}

  2. Berekening 1 berekent het lopende maandnummer \( m_1 \) uit het jaartal \( a_0 \) en het maandnummer \( m_0 \) sinds het begin van het jaar.

    \begin{align} m_1 \| = \dfloorratio{235 a_0 + 13}{19} + m_0 \\ \| = \dfloorratio{235 (a − 1) + 13}{19} + m − 1 \notag \\ \| = \dfloorratio{235 a − 235 + 13 − 19}{19} + m \notag \\ \| = \dfloorratio{235 a − 241}{19} + m \end{align}

  3. Berekening 2 berekent het lopende dagnummer \( s \) uit het lopende maandnummer \( m_1 \) en het dagnummer \( d_0 \) sinds het begin van de maand.

    \begin{equation} s = \range{\dfloorratio{6940 m_1}{235}}{235} + d_0 \end{equation}

    Voor de \( \range{•}{235} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen heeft die formule een bereik van ongeveer 50 duizend jaar. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{eqnarray} \{ ω_1, μ_1 \} \| = \| \Div(m_1, 235) \\ δ_1 \| = \| \dfloorratio{6940 μ_1}{235} \\ s \| = \| 6940 ω_1 + δ_1 + d_0 \end{eqnarray}

    Hier zijn wat voorbeelden van de originele berekening en de omweg.

    \({m_1}\) \({ω_1}\) \({μ_1}\) \({δ_1}\) \({s (d=0)}\) \({6940 m_1}\)
    −1 −1 146096 3 −1 −1
    0 0 0 0 0 3
    1 0 1 0 0 7
    45 0 45 1328 1328 312300
    400204 1702 234 6910 11818790 2777415760

    Voor \( m_1 = 400 204 \) geeft de orignele berekening het tussenresultaat \( 6940×400 204 = 2 777 415 760 \) dat te groot is om in een 32-bitsgetal (met teken) te passen, maar met de omweg is het eindresultaat 11 818 790, groter dan de tussenresultaten en ruim klein genoeg om in een 32-bitsgetal te passen.

  4. En dan tellen we er nog de CJDN van dag 1 van maand 1 van jaar 1 bij op.

    \begin{equation} J = s + J_0 = s + 1 607 923 \end{equation}

Samenvattend:

\begin{align} m_1 \| = \dfloorratio{235 a − 241}{19} + m \\ s \| = \range{\dfloorratio{6940 m_1}{235}}{235} + d − 1 \\ J \| = s + J_0 = s + 1 607 923 \end{align}

Alternatief met meer bereik voor de berekening van \( s \):

\begin{align} \{ ω_1, μ_1 \} \| = \Div(m_1, 235) \\ δ_1 \| = \dfloorratio{6940 μ_1}{235} \\ s \| = 6940 ω_1 + δ_1 + d − 1 \end{align}

Bijvoorbeeld, welk CJDN \( J \) komt overeen met jaar 3, maand 9, dag 27 van de era van Seleukos? Dan is \( a = 3 \), \( m = 9 \), \( d = 27 \), dus

\begin{align*} m_1 \| = \dfloorratio{235 a − 241}{19} + m = \dfloorratio{235×3 − 241}{19} + 9 \\ \| = \dfloorratio{464}{19} + 9 = 24 + 9 = 33 \\ s \| = \range{\dfloorratio{6940 m_1}{235}}{235} + d − 1 = \dfloorratio{6940×33}{235} + 27 − 1 \\ \| = \dfloorratio{229 020}{235} + 26 = 974 + 26 = 1000 \\ J \| = s + J_0 = 1000 + 1 607 923 = 1 608 923 \end{align*}

Wat meer voorbeelden:

\({a}\) \({m}\) \({d}\) \({m_1}\) \({s}\) \({J}\)
−1 1 1 −25 −739 1607184
0 1 1 −12 −355 1607568
1 1 1 0 0 1607923
1 2 1 1 29 1607952
1 3 1 2 59 1607982
2 1 1 13 383 1608306
3 9 27 33 1000 1608923
2315 3 1 28623 845292 2453215

14.6.2. Van CJDN naar Babylonische Datum

Nu gaan we de andere kant op, van Juliaanse dagnummer \( J \) naar dag \( d \), maand \( m \), jaar \( a \) in de era van Seleukos.

  a ━(−1)━ a₀ ━━┓
  m ─(−1)─ m₀ ─(1)━ m₁ ━┓
  d ─(−1)─ d₀ ─────────(2)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 235 19 12 7 13 12.368421
2 6940 235 29 125 0 29.531915

  1. Eerst trekken we de CJDN van dag 1 van maand 1 van jaar 1 af van de CJDN \( J \) van de gewenste dag om het lopende dagnummer \( s \) te vinden.

    \begin{equation} s = J − J_0 = J − 1 607 923 \end{equation}

  2. Berekening 2 leidt uit het lopende dagnummer \( s \) het lopende maandnummer \( m_1 \) en het dagnummer \( d_0 \) sinds het begin van de maand af.

    \begin{align} \{ m_1, ω_2 \} \| = \range{\Div(235 s + 234, 6940)}{235} \\ d_0 \| = \dfloorratio{ω_2}{235} \end{align}

    Voor de \( \range{•}{235} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen heeft die formule een bereik van ongveer 50 duizend jaar. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{eqnarray} \{ ω_1, δ_1 \} \| = \| \Div(s, 6940) \\ \{ μ_1, ω_2 \} \| = \| \Div(235 δ_1 + 234, 6940) \\ m_1 \| = \| 235 ω_1 + μ_1 \end{eqnarray}

    Hier zijn wat voorbeelden van de originele berekening en de omweg.

    \({s}\) \({ω_1}\) \({δ_1}\) \({μ_1}\) \({ω_2}\) \({m_1}\) \({235 s + 234}\)
    −1 −1 6939 234 6939 −1 −1
    0 0 0 0 234 0 234
    1 0 1 0 469 0 469
    11818819 1702 6939 234 6939 400204 2777422699

    Voor \( s = 11 818 819 \) geeft de orignele berekening het tussenresultaat \( 235×11 818 819 + 234 = 2 777 422 699 \) dat te groot is om in een 32-bitsgetal (met teken) te passen, maar met de omweg is het eindresultaat 400 204 groter dan de tussenresultaten en ruim klein genoeg om in een 32-bitsgetal te passen.

  3. Berekening 1 leidt uit het lopende maandnummer \( m_1 \) het jaarnummer \( a_0 \) en het maandnummer \( m_0 \) sinds het begin van het jaar af.

    \begin{align} \{ a_0, ω_3 \} \| = \Div(19 m_1 + 5, 235) \\ m_0 \| = \dfloorratio{ω_3}{19} \end{align}

  4. En dan tellen we 1 op bij jaarnummer \( a_0 \), maandnummer \( m_0 \) en dagnummer \( d_0 \) om ze te laten beginnen bij 1 in plaats van 0.

    \begin{align} a \| = a_0 + 1 \\ m \| = m_0 + 1 = \dfloorratio{ω_3}{19} + 1 \\ d \| = d_0 + 1 = \dfloorratio{ω_2}{235} + 1 \end{align}

    We kunnen \( a \) ietsje sneller krijgen via

    \begin{align} \{ a, ω_3 \} \| = \{ a_0 + 1, ω_3 \} = \Div(19 m_1 + 5 + 235, 235) = \Div(19 m_1 + 240, 235) \end{align}

Samenvattend:

\begin{align} s \| = J − J_0 = J − 1 607 923 \\ \{ m_1, ω_2 \} \| = \range{\Div(235 s + 234, 6940)}{235} \\ \{ a, ω_3 \} \| = \Div(19 m_1 + 240, 235) \\ m \| = \dfloorratio{ω_3}{19} + 1 \\ d \| = \dfloorratio{ω_2}{235} + 1 \end{align}

Alternatief met groter bereik voor de berekening van \( m_1 \) en \( ω_2 \):

\begin{align} \{ ω_1, δ_1 \} \| = \Div(s, 6940) \\ \{ μ_1, ω_2 \} \| = \Div(235 δ_1 + 234, 6940) \\ m_1 \| = 235 ω_1 + μ_1 \end{align}

Bijvoorbeeld, welke datum in de Babylonische kalender komt overeen met CJDN 2 453 215? Dan is \( J = 2 453 215 \), dus

\begin{align*} s \| = J − J_0 = 2 453 215 − 1 607 923 = 845 292 \\ \{ m_1, ω_2 \} \| = \range{\Div(235 s + 234, 6940)}{235} = \Div(235×845 292 + 234, 6940) \\ \| = \Div(198 643 854, 6940) = \{ 28623, 234 \} \\ \{ a, ω_3 \} \| = \Div(19 m_1 + 240, 235) = \Div(19×28623 + 240, 235) \\ \| = \Div(544077, 235) = \{ 2315, 52 \} \\ m \| = \dfloorratio{ω_3}{19} + 1 = \dfloorratio{52}{19} + 1 = 2 + 1 = 3 \\ d \| = \dfloorratio{ω_2}{235} + 1 = \dfloorratio{234}{235} + 1 = 0 + 1 = 1 \end{align*}

ofwel dag 1 van maand 3 van jaar 2315.

Wat meer voorbeelden:

\({J}\) \({s}\) \({m_1}\) \({ω_2}\) \({a}\) \({ω_3}\) \({m}\) \({d}\)
1607184 −739 −25 69 −1 0 1 1
1607568 −355 −12 89 0 12 1 1
1607923 0 0 234 1 5 1 1
1607952 29 1 109 1 24 2 1
1607982 59 2 219 1 43 3 1
1608306 383 13 19 2 17 1 1
1608923 1000 33 6214 3 162 9 27
2453215 845292 28623 234 2315 52 3 1

14.7. De Joodse kalender

14.7.1. Van Joodse Datum naar CJDN

De Joodse kalender is een zongebonden maankalender, net als de Babylonische kalender. De Joodse kalender is veel ingewikkelder dan de Babylonische, want

Als het nodig is om aan te geven dat een jaartal uit de Joodse kalender komt dan wordt daarvoor A.M. (Anno Mundi, jaar van de wereld) gebruikt.

Een kalendermaand heeft 29 of 30 dagen, een kalenderjaar heeft 12 of 13 maanden, en een kalenderdag begint om 6 uur 's avonds.

Een kalenderjaar kan 6 verschillende lengtes hebben, namelijk 353, 354, 355, 383, 384 of 385 dagen. De jaren met 354 of 384 dagen heten regelmatig. De jaren met een dag meer dan dat heten volledig, en de jaren met een dag minder heten onvolledig. Jaren met 355 of minder dagen heten gewoon en jaren met meer dagen heten embolistisch.

Nieuwjaar is de dag waarop het jaartal eentje groter wordt. In de Joodse kalender is dat niet de eerste dag van maand nummer 1 maar de eerste dag van maand nummer 7, de maand tisjrie.

De epoche van de kalender (het begin van 1 tisjrie van het jaar A.M. 1) was om 6 uur 's avonds op zondag 6 oktober −3760 in de Juliaanse proleptische kalender, ofwel op CJD 347 997.75. Voor het verbinden van kalenderdagen uit verschillende kalenders houden wij de toestand op het midden van de dag aan (als de Zon het hoogst aan de hemel staat). Dat midden van de eerste dag (nieuwjaar) van de Joodse kalender was op maandag 7 oktober −3760 (CJDN 347 998 = \( J_0 \)).

Als voorbeeld rekenen we de CJDN uit van de volgende data in de Joodse kalender:

\({a}\) maand \({m}\) \({d}\)
−1 tisjrie 7 1
0 tisjrie 7 1
1 tisjrie 7 1
2 tisjrie 7 1
4524 kisleew 9 30
4527 siewan 3 1
4682 kisleew 9 12
4682 adar 13 29
4682 niesan 1 1
4682 siewan 3 18
4683 tisjrie 7 1
325709 adar Ⅱ 13 29

De berekeningen zijn schematisch als volgt:

  a ━━━━━━━━━━[1]━ a₁ ━━━━━━┓
  m ─(−1)─ m₀ ─┴───┃────────┨
                  [2]━ d₁ ━[3]━ d₂ ━┓
  d ─(−1)─ d₀ ─────────────────────[4]━ s ━(+J₀)━ J

  1. Eerst trekken we 1 af van het maandnummer \( m \) en het dagnummer \( d \) zodat ze beginnen met 0 in plaats van 1.

    \begin{align*} m_0 \| = m − 1 \\ d_0 \| = d − 1 \end{align*}

    Voor de voorbeelddata vinden we

    \({a}\) \({m}\) \({d}\) \({m_0}\) \({d_0}\)
    −1 7 1 6 0
    0 7 1 6 0
    1 7 1 6 0
    2 7 1 6 0
    4524 9 30 8 29
    4527 3 1 2 0
    4682 9 12 8 11
    4682 13 29 12 28
    4682 1 1 0 0
    4682 3 18 2 17
    4683 7 1 6 0
    325709 13 29 12 28

  2. Berekening 1 zorgt ervoor dat rekenmaand \( m_0 = 0 \) (nisan) de eerste maand na de wisseling van het rekenjaarnummer \( a_1 \) is. Daar is extra moeite voor nodig omdat in de Joodse kalender het kalenderjaarnummer eentje toeneemt aan het begin van kalendermaand 7. Na kalendermaand 6 van jaar \( a − 1 \) volgt kalendermaand 7 van jaar \( a \), dan maanden 8 tot en met 12 of 13 van kalenderjaar \( a \), en dan maanden 1 tot en met 6 van datzelfde kalenderjaar \( a \). Daarna volgt maand 7 van kalenderjaar \( a + 1 \), enzovoorts, zoals aangegeven in de volgende tabel. Maand 13 staat tussen haakjes omdat niet elk jaar die maand heeft.

    \({m}\) \({m_0}\) \({a}\)
    6 5 \({a−1}\)
    7 6 \({a}\)
    8 7 \({a}\)
    9 8 \({a}\)
    10 9 \({a}\)
    11 10 \({a}\)
    12 11 \({a}\)
    (13) (12) \({a}\)
    1 0 \({a}\)
    2 1 \({a}\)
    3 2 \({a}\)
    4 3 \({a}\)
    5 4 \({a}\)
    6 5 \({a}\)
    7 6 \({a+1}\)

    Het is lastig rekenen met de plotselinge afname van het maandnummer halverwege het jaar, temeer omdat het op een ingewikkelde manier van het jaar afhangt of kalendermaand 1 volgt na kalendermaand 12 of pas na kalendermaand 13 van dazelfde kalenderjaar, en bovendien kalendermaanden 8 en 9 niet in elk jaar dezelfde lengte hebben.

    Het is daarom voor de berekeningen beter om kalendermaanden 1 t/m 6 te koppelen aan de nieuwjaarsdag (van het volgende kalenderjaar) die onmiddelijk na het eind van die maand 6 komt, in plaats van aan de nieuwjaarsdag van hun eigen kalenderjaar, die 6 of 7 maanden (van mogelijk wisselende lengte) vóór die kalendermaand 1 valt.

    We gebruiken een rekenjaar dat begint met kalendermaand \( m = 1 \) dus rekenmaand \( m_0 = 0 \). Kalendermaanden 1 t/m 6 van het eind van kalenderjaar \( a − 1 \) tellen als rekenmaanden 0 t/m 5 van rekenjaar \( a \) waar de daaropvolgende kalendermaanden 7 t/m 12 of 13 en Nieuwjaar al bij horen. We krijgen dit voor elkaar met:

    \begin{align} α_1(m_0) \| = \dfloorratio{12 − m_0}{7} \\ a_1(a, m_0) \| = a + α_1(m_0) \end{align}

    Bijvoorbeeld, op de laatste dag van kalendermaand 13 van kalenderjaar 4682 in de Joodse kalender volgt de 1e dag van maand 1 van nog steeds jaar 4682 (niet 4683!). Een paar maanden later volgt op de laatste dag van maand 6 van jaar 4682 de 1e dag van maand 7 van jaar 4683. Die laatste dag is Nieuwjaar. De volgende tabel toont wat overeenkomsten.

    \({a}\) \({m}\) \({d}\) \({α_1}\) \({a_1}\) \({m_0}\) \({d_0}\)
    4682 13 29 0 4682 12 28
    4682 1 1 1 4683 0 0
    4682 2 1 1 4683 1 0
    4682 3 1 1 4683 2 0
    4682 4 1 1 4683 3 0
    4682 5 1 1 4683 4 0
    4682 6 1 1 4683 5 0
    4682 6 29 1 4683 5 28
    4683 7 1 0 4683 6 0
    4683 8 1 0 4683 7 0
    4683 9 1 0 4683 8 0
    4683 10 1 0 4683 9 0
    4683 11 1 0 4683 10 0
    4683 12 1 0 4683 11 0
    4683 12 30 0 4683 11 29
    4683 1 1 1 4684 0 0

    Voor rekenmaand \( m_0 = 8 \) vinden we \( α_1 = \dfloor{(12 − m_0)/7} = \dfloor{4/7} = 0 \) dus \( a_1 = a \). Voor rekenmaand \( m_0 = 4 \) vinden we \( α_1 = \dfloor{(12 − 4)/7} = 1 \) dus \( a_1 = a + 1 \). Zie bovenstaande tabel voor andere voorbeelden.

    Voor de voorbeelddata vinden we

    \({a}\) \({m}\) \({d}\) \({α_1}\) \({a_1}\) \({m_0}\) \({d_0}\)
    −1 7 1 0 −1 6 0
    0 7 1 0 0 6 0
    1 7 1 0 1 6 0
    2 7 1 0 2 6 0
    4524 9 30 0 4524 8 29
    4527 3 1 1 4528 2 0
    4682 9 12 0 4682 8 11
    4682 13 29 0 4682 12 28
    4682 1 1 1 4683 0 0
    4682 3 18 1 4683 2 17
    4683 7 1 0 4683 6 0
    325709 13 29 0 325709 12 28

  3. Berekening 2 levert het lopende dagnummer \( d_1 \) van nieuwjaarsdag van kalenderjaar \( a \), geteld vanaf CJDN \( J_0 \). Nieuwjaarsdag van kalenderjaar \( a \) is gelijk aan nieuwjaarsdag van rekenjaar \( a_1 \), en voor de verdere berekeningen is het duidelijker om \( a_1 \) aan te houden, dus dat zullen we doen. Berekening 2 is ingewikkeld, want hangt niet alleen af van jaar \( a_1 \) maar ook van het vorige en het volgende jaar.

    De embolistische jaren (kalenderjaren met 13 maanden) zijn het 3e, 6e, 8e, 11e, 14e, 17e en 19e jaar in elke cyclus van 19 jaar, die 235 maanden omvat. Het lopende maandnummer \( μ_2 \) van nieuwjaarsdag van jaar \( a_1 \) is gelijk aan

    \begin{equation} μ_2(a_1) = \dfloorratio{235 a_1 − 234}{19} \label{eq:j2μ1} \end{equation}

    Voor nieuwjaarsdag van het Joodse jaar A.M. 4682 (\( a_1 = 4682 \)) vinden we

    \begin{align*} μ_2(a_1) \| = \dfloorratio{235 a_1 − 234}{19} = \dfloorratio{235×4682 − 234}{19} \\ \| = \dfloorratio{1 100 036}{19} = 57896 \end{align*}

    dus Nieuwjaar van A.M. 4682 is 57896 maanden na nieuwjaar van A.M. 1.

    Voor de voorbeelddata vinden we

    \({a_1}\) \({μ_2}\)
    −1 −25
    0 −13
    1 0
    2 12
    4524 55942
    4528 55991
    4682 57896
    4683 57909
    325709 4028493

    Het begin van het jaar wordt bepaald aan de hand van een middelbare conjunctie tussen de Zon en de Maan, waarbij de lengte van de synodische maand wordt gesteld op 29 en 13753/25920 dagen, ofwel 765 433/25920 dagen. De nieuwe maan aan het begin van de maand tisjrie (de nieuwjaarsmaand) van jaar A.M. 1 viel op 5 uur, 11 minuten en 20 seconden (= 5604/25920 dagen) na het begin van de eerste dag van die maand (en die begon om 6 uur 's avonds).

    De tijd \( δ_1 \) in dagen die is verstreken tussen het begin van de eerste dag van die kalender en de nieuwe maan aan het begin van de maand met lopende maandnummer \( μ_2 \) is dan gelijk aan

    \begin{equation} δ_1(μ_2) = \range{\dfrac{765 433 μ_2 + 5604}{25920}}{25920} = 29 μ_2 + \range{\dfrac{13753 μ_2 + 5604}{25920}}{465.7} \label{eq:μ} \end{equation}

    Het lopende dagnummer \( δ_3 \) (ten opzichte van \( J_0 \)) van de kalenderdag waarop die nieuwe maan valt is dan

    \begin{align} δ_3(μ_2) \| = \dfloor{δ_1(μ_2)} = \range{\dfloorratio{765 433 μ_2 + 5604}{25920}}{25920} \\ \| = 29 μ_2 + \range{\dfloorratio{13753 μ_2 + 5604}{25920}}{465.7} \end{align}

    Voor de \( \range{•}{25920} \) zie hoofdstuk 13.4. Voor 32-bitgetallen heeft die formule een bereik van slechts 453 jaar. De \( \range{•}{465.7} \)-formule heeft een bereik van onheveer 25 duizend jaar. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{eqnarray} \{ ω_1, μ_1 \} \| = \| \Div(μ_2, 25920) \\ δ_3(μ_2) \| = \| 29 μ_2 + 13753 ω_1 + \dfloorratio{13753 μ_1 + 5604}{25920} \end{eqnarray}

    Hier zijn wat voorbeelden van de originele berekening en de omweg.

    \({a_1}\) \({μ_2}\) \({ω_1}\) \({μ_1}\) \({δ_3}\) \({13753 μ_2 + 5604}\)
    −1 −25 −1 25895 −739 −338221
    0 −13 −1 25907 −384 −173185
    1 0 0 0 0 5604
    2 12 0 12 354 170640
    4524 55942 2 4102 1652000 769375930
    4528 55991 2 4151 1653447 770049827
    4682 57896 2 6056 1709703 796249292
    4683 57909 2 6069 1710087 796428081
    16766 207356 7 25916 6123346 2851772672
    325709 4028493 155 10893 118963791 55403869833

    Voor \( μ_2 = 207 356 \) geeft de orignele berekening het tussenresultaat \( 13753×207 356 + 5604 = 2 851 772 672 \) dat te groot is om in een 32-bitsgetal (met teken) te passen, maar met de omweg is het eindresultaat 6 123 346 groter dan alle tussenresultaten, en ruim klein genoeg om in een 32-bitsgetal te passen.

    Nu passen we waar nodig het voorlopige lopende dagnummer \( δ_3 \) aan voor vier mogelijke vertragingen.

    1. De eerste vertraging treedt op als de middelbare conjunctie valt op of na het middaguur en vóór het einde van de kalenderdag (dus voor 6 uur 's avonds). In dat geval wordt nieuwjaar 1 dag vertraagd, wordt het huidige jaar 1 dag korter en het voorgaande jaar 1 dag langer.

      De tijd van de dag volgt uit \( \dmodp{δ_1}{1} \), die gelijk is aan 0 bij het begin van de kalenderdag (om 6 uur 's avonds), en gelijk is aan 3/4 op het midden van de dag. Dus als \( \dmodp{δ_1}{1} ≥ 3/4 \), dan valt nieuwjaar één dag later. Als \( \dmodp{δ_1}{1} ≥ 3/4 \) dan is \( \dmodp{δ_1}{1} + 1/4 ≥ 1 \) dus \( \dfloor{δ_1 + \frac{1}{4}} = δ_3 + 1 \), dus het lopende dagnummer \( δ_4 \) van de eerste dag van de maand, inclusief de eerste vertraging, is

      \begin{eqnarray} δ_4(μ_2) \| = \| \dfloor{δ_1(μ_2) + \frac{1}{4}} = \range{\dfloorratio{765 433 μ_2 + 12084}{25920}}{25920} \notag \\ \| = \| 29 μ_2 + \range{\dfloorratio{13753 μ_2 + 12084}{25920}}{465.7} \notag \\ \| = \| 29 μ_2 + 13753 ω_1 + \dfloorratio{13753 μ_1 + 12084}{25920} \label{eq:υ_1} \end{eqnarray}

      Voor A.M. 4682 vinden we

      \begin{align*} δ_4 \| = \range{\dfloorratio{765 433 μ_2 + 12084}{25920}}{25920} = \dfloorratio{765 433×57896 + 12084}{25920} \\ \| = \dfloorratio{44 315 521 052}{25920} = 1 709 703 = δ_3 \end{align*}

      of

      \begin{align*} \{ ω_1, μ_1 \} \| = \Div(μ_2, 25920) = \Div(57896, 25920) = \{ 2, 6056 \} \\ δ_4 \| = 29 μ_2 + 13753 ω_1 + \dfloorratio{13753 μ_1 + 12084}{25920} \\ \| = 29×57896 + 13753×2 + \dfloorratio{13753×6056 + 12084}{25920} \\ \| = 1 706 490 + \dfloorratio{83 300 252}{25920} = 1 706 490 + 3213 = 1 709 703 = δ_3 \end{align*}

      dus voor dat jaar heeft de eerste vertraging geen invloed.

      Voor de voorbeelddata vinden we

      \({a_1}\) \({μ_2}\) \({δ_4}\)
      −1 −25 −738
      0 −13 −384
      1 0 0
      2 12 354
      4524 55942 1652000
      4528 55991 1653447
      4682 57896 1709703
      4683 57909 1710087
      325709 4028493 118963792

    2. De tweede vertraging treedt op als de middelbare conjunctie (na behandeling van de eerste vertraging) valt op een zondag, woensdag of vrijdag. In dat geval wordt nieuwjaar 1 dag vertraagd, wordt het huidige jaar 1 dag korter en het voorgaande jaar 1 dag langer.

      \( δ_3 = δ_4 = 0 \) komt overeen met CJDN 347 998 en dat was een maandag, want \( \dmodp{347 998}{7} = 0 \) en 0 komt overeen met maandag. De tweede vertraging treedt op als

      \begin{equation} δ_5(μ_2) = \dmodp{δ_4(μ_2)}{7} \end{equation}

      gelijk is aan 2, 4 of 6.

      We zoeken naar een formule die 0 oplevert als \( δ_5 \) gelijk is aan 0, 1, 3 of 5, en die 1 oplevert als \( δ_5 \) gelijk is aan 2, 4 of 6. Omdat we alleen waarden 0 en 1 als uitkomst willen ligt iets zoals \( \dmodp{·}{2} \) voor de hand. Dat we alleen hele getallen willen hebben duidt op iets van de vorm \( \dmodp{⌊...δ_5...⌋}{2} \). De simpelste formule die zou kunnen werken is dan \( \dmodp{⌊kδ_5⌋}{2}\) voor een geschikte factor \( k \). Enig zoekwerk levert op dat we de gewenste uitkomsten krijgen als \( 5/6 \lt k \lt 1 \). Enkele breuken met kleine noemers die geschikt zijn voor \( k \) zijn 6/7, 7/8, 8/9, 9/10, 10/11, 11/12. De breuk met noemer 7 heeft de kleinste noemer en heeft als voordeel dat die ook de goede waarde oplevert als je \( \dmodp{⌊kδ_4⌋}{2} \) uitrekent in plaats van \( \dmodp{⌊k\dmodp{δ_4}{7}⌋}{2} \): dat scheelt weer een modulus-berekening. Daarmee is het lopende dagnummer \( δ_6 \) van de eerste dag van de maand, inclusief de eerste twee vertragingen, gelijk aan

      \begin{equation} δ_6(μ_2) = δ_4(μ_2) + \dmodp{\range{\dfloorratio{6 δ_4(μ_2)}{7}}{6}}{2} \label{eq:υ_2} \end{equation}

      Voor de \( \range{•}{6} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen is het bereik van de daardoor omsloten formule ongeveer 980 000 jaar. Als dat te weinig is, dan kun je alsnog \( \dmodp{\dfloor{k\dmodp{δ_4}{7}}}{2} \) gebruiken:

      \begin{equation} δ_6(μ_2) = δ_4(μ_2) + \dmodp{\dfloorratio{6\dmodp{δ_4(μ_2)}{7}}{7}}{2} \end{equation}

    3. De derde vertraging is nodig als een jaar (na behandeling van de eerste twee vertragingen) een lengte zou krijgen van 356 dagen, wat onacceptabel lang wordt gevonden. Door een vertraging van 2 dagen toe te passen wordt die lengte dan 354 dagen, wat wel acceptabel is. Het voorgaande jaar (dat 353 of 383 dagen lang is) wordt daarmee 2 dagen langer (dus 355 of 385 dagen).

      De lengte \( L_2(a_1) \) van jaar \( a_1 \) (met inachtneming van de eerste twee vertragingen) is gelijk aan

      \begin{equation} L_2(a_1) = δ_6(μ_2(a_1 + 1)) − δ_6(μ_2(a_1)) \end{equation}

      dus nieuwjaar van jaar \( a_1 \) wordt 2 dagen vertraagd als \( L_2(a_1) = 356 \). Dit krijgen we voor elkaar met formule

      \begin{equation} δ_7(a_1) = 2\dmodp{\dfloorratio{L_2(a_1) + 19}{15}}{2} \end{equation}

      \({L_2}\) \({δ_7}\)
      353 0
      354 0
      355 0
      356 2
      382 0
      383 0
      384 0
      385 0

    4. De vierde vertraging is nodig als het vorige jaar (na behandeling van de eerste twee vertragingen) een lengte zou krijgen van 382 dagen, wat onacceptabel kort wordt gevonden. Door het begin van het huidige jaar 1 dag uit te stellen wordt het vorige jaar 383 dagen lang, wat wel acceptabel is. Het huidige jaar (dat 355 dagen lang was) wordt daarmee 1 dag korter (dus 354 dagen).

      Dus nieuwjaar van jaar \( a_1 \) wordt 1 dag vertraagd als \( L_2(a_1 − 1) = 382 \). Dit krijgen we voor elkaar met formule

      \begin{equation} δ_8(a_1) = \dmodp{\dfloorratio{L_2(a_1 − 1) + 7}{15}}{2} \end{equation}

      \({L_2}\) \({δ_8}\)
      353 0
      354 0
      355 0
      356 0
      382 1
      383 0
      384 0
      385 0

      dus het lopende dagnummer \( d_1 \) van Nieuwjaar, met inachtneming van alle vier de vertragingen, gemeten ten opzichte van \( J_0 \), is

      \begin{align} μ_2(a_1) \| = \dfloorratio{235 a_1 − 234}{19} \\ \{ ω_1(μ_2), μ_1(μ_2) \} \| = \Div(μ_2, 25920) \\ δ_4(μ_2) \| = \range{\dfloorratio{765 433 μ_2 + 12084}{25920}}{25920} \notag \\ \| = 29 μ_2 + \range{\dfloorratio{13753 μ_2 + 12084}{25920}}{465.7} \notag \\ \| = 29 μ_2 + 13753 ω_1(μ_2) + \dfloorratio{13753 μ_1(μ_2) + 12084}{25920} \\ δ_6(μ_2) \| = δ_4(μ_2) + \dmodp{\range{\dfloorratio{6 δ_4(μ_2)}{7}}{6}}{2} \notag \\ \| = δ_4(μ_2) + \dmodp{\dfloorratio{6 \dmodp{δ_4(μ_2)}{7}}{7}}{2} \\ L_2(a_1) \| = δ_6(μ_2(a_1 + 1)) − δ_6(μ_2(a_1)) \\ d_1(a_1) \| = δ_6(μ_2(a_1)) + δ_7(a_1) + δ_8(a_1) \notag \\ \| = δ_6(μ_2(a_1)) + 2\dmodp{\dfloorratio{L_2(a_1) + 19}{15}}{2} \notag \\ \| + \dmodp{\dfloorratio{L_2(a_1 − 1) + 7}{15}}{2} \notag \\ \| = δ_6(μ_2(a_1)) + 2\dmodp{\dfloorratio{δ_6(μ_2(a_1 + 1)) − δ_6(μ_2(a_1)) + 19}{15}}{2} \notag \\ \| + \dmodp{\dfloorratio{δ_6(μ_2(a_1)) − δ_6(μ_2(a_1 − 1)) + 7}{15}}{2} \end{align}

      Merk op dat voor de berekening van \( d_1 \) van jaar \( a_1 \) de waarden van \( δ_6(μ_2(a_1 − 1)) \), \( δ_6(μ_2(a_1)) \) en \( δ_6(μ_2(a_1 + 1)) \) nodig zijn.

    We weten nu het lopende dagnummer \( d_1(a_1) \) van nieuwjaar (1 tisjrie) van het jaar \( a_1 \).

    De lengte \( L(a_1) \) van jaar \( a_1 \) is dan

    \begin{equation} L(a_1) = d_1(a_1 + 1) − d_1(a_1) \end{equation}

    Voor de berekening van \( L(a_1) \) heb je \( δ_6 \) nodig voor de 4 jaren \( a_1 − 1 \) tot en met \( a_1 + 2 \).

    Er zijn geen jaren waarvoor \( L_2(a_1) = 356 \) en tegelijkertijd \( L_2(a_1 − 1) = 382 \), dus de derde en vierde vertraging worden nooit tegelijkertijd toegepast.

    Sommige maandlengtes hangen af van de lengte van het jaar. Met alle vertragingen erbij kunnen jaren alleen de volgende lengtes hebben: 353, 354, 355, 383, 384 of 385 dagen.

    Voor \( a_1 = 4682 \) vonden we eerder dat \( δ_3 = 1 709 703 \). Uit formule \eqref{eq:υ_1} volgt dat \( δ_4 = 1 709 703 = δ_3 \), dus de eerste vertraging heeft geen effect op dat jaar. Uit formule \eqref{eq:υ_2} volgt dat

    \begin{align*} δ_6 \| = δ_4 + \dmodp{\dfloorratio{6 δ_4}{7}}{2} \\ \| = 1 709 703 + \dmodp{\dfloorratio{6×1 709 703}{7}}{2} \\ \| = 1 709 703 + \dmodp{\dfloorratio{10 258 218}{7}}{2} \\ \| = 1 709 703 + \dmodp{1 465 459}{2} = 1 709 703 + 1 = 1 709 704 \end{align*}

    dus de tweede vertraging heeft wel effect. De lengte van jaar \( a_1 = 4682 \) na de eerste twee vertragingen is \( L_2(4682) = δ_6(4683) − δ_6(4682) = 1 710 087 − 1 709 704 = 383 \) dagen. Het jaar met \( a_1 = 4683 \) heeft een lengte (na de eerste twee vertragingen) van 356 dagen, dus de derde vertraging is van toepassing, en nieuwjaar van dat jaar wordt 2 dagen later. De uitkomsten voor dat en een paar andere jaren staan in de volgende tabel. De kolom met titel "v" noemt de nummers van de vertragingen die actief waren.

    Wat meer voorbeelden:

    \({a_1}\) \({μ_2}\) \({δ_3}\) \({δ_4}\) \({δ_6}\) \({L_2}\) \({δ_7}\) \({δ_8}\) \({d_1}\) \({L}\) v
    −1 −25 −739 −738 −737 353 0 0 −737 353 1,2
    0 −13 −384 −384 −384 384 0 0 −384 384
    1 0 0 0 0 355 0 0 0 355
    2 12 354 354 355 355 0 0 355 355 2
    4523 55930 1651646 1651646 1651646 354 0 0 1651646 354
    4524 55942 1652000 1652000 1652000 355 0 0 1652000 355
    4525 55954 1652355 1652355 1652355 385 0 0 1652355 385
    4526 55967 1652738 1652739 1652740 353 0 0 1652740 353 1,2
    4527 55979 1653093 1653093 1653093 354 0 0 1653093 354
    4528 55991 1653447 1653447 1653447 385 0 0 1653447 385
    4681 57884 1709349 1709349 1709349 355 0 0 1709349 355
    4682 57896 1709703 1709703 1709704 383 0 0 1709704 385 2
    4683 57909 1710087 1710087 1710087 356 2 0 1710089 354 3
    4684 57921 1710441 1710442 1710443 353 0 0 1710443 353 1,2
    5517 68224 2014695 2014695 2014696 355 0 0 2014696 355 2
    5518 68236 2015049 2015050 2015051 382 0 0 2015051 383 1,2
    5519 68249 2015433 2015433 2015433 355 0 1 2015434 354 4
    5520 68261 2015788 2015788 2015788 355 0 0 2015788 355
    325708 4028481 118963437 118963437 118963437 355 0 0 118963437 355
    325709 4028493 118963791 118963792 118963792 385 0 0 118963792 385 1
    325710 4028506 118964175 118964176 118964177 354 0 0 118964177 354 1,2
    325711 4028518 118964530 118964530 118964531 353 0 0 118964531 353 2

    De eerste vertraging hangt af van de tijd op de dag, en de tweede vertraging van de dag in de week, dus die twee vertragingen samen hangen af van de tijd sinds het begin van de week. De embolistische jaren hangen af van het jaar in de huidige cyclus van 19 jaar = 235 maanden. De kalender als geheel herhaalt zich weer als een geheel aantal weken samenvalt met een geheel aantal cycli. De cyclus is 235×765 433/25920 = 35 975 351/5184 dagen lang, dus elke periode van 5184 cycli omvat een geheel aantal dagen, namelijk 35 975 351. Dit aantal dagen is geen veelvoud van 7, dus de kalender herhaalt zich pas weer na 7×35 975 351 = 251 827 457 dagen = 35 975 351 weken = 689 472 jaren = 8 527 680 maanden.

    De verdeling van de lengtes van de kalenderjaren in die periode van 689 472 jaar staan in de volgende tabel, met daarbij genoemd hoeveel van die jaren die lengte hebben als je verschillende mogelijke vertragingen meetelt.

    \({L}\) \({δ_3}\) \({δ_4}\) \({δ_6}\) \({δ_7}\) \({d_1}\)
    353 78738 69222 69222
    354 275 583 275 583 140 946 163 785 167 497
    355 159 873 159 873 192 933 202 449 198 737
    356 22839
    382 3712 3712
    383 25984 25984 116 288 102 965 106 677
    384 228 032 228 032 36288 36288 36288
    385 97728 111 051 111 051

    De volgende tabel toont van hoeveel jaren uit de grote periode van 689 472 het nieuwjaar wordt beïnvloed door de vertragingen genoemd in de kolom met titel "v".

    v
           # 
        % 
    268 937 39.0
    1 172 368 25.0
    2 295 488 42.9
    3 22839 3.3
    4 3712 0.5
    1+2 73872 10.7
    rest 0 0

    Nieuwjaar kan tegelijkertijd vertraagd worden door de eerste en tweede vertragingen, maar niet door een andere combinatie van meer dan één vertraging.

    De volgende tabel toont hoeveel jaren er kunnen zijn tussen twee opeenvolgende gevallen van een bepaalde combinatie van vertragingen. Bijvoorbeeld, de tijd tussen twee nieuwjaren die vertraagd werden door alleen de 2e vertraging varieert tussen 1 en 7 jaar met een gemiddelde van 2,33 jaar.

    v min max gemiddeld
       - 
    1 7 2.56
    1 1 16 4.00
    2 1 7 2.33
    3 7 71 30.19
    4 78 345 185.73
    1+2 3 53 9.33

    De volgende tabel toont hoe vaak een jaar met een bepaalde lengte volgt op een jaar met dezelfde of een andere bepaalde lengte. Het huidige jaar staat horizontaal en het volgende jaar staat vertikaal. Bijvoorbeeld, dat een jaar van 354 dagen gevolgd wordt door een jaar van 383 dagen komt 40000 keer voor in de grote periode van 689 472 jaar.

    353 354 355 383 384 385
    353 0 16404 16404 0 0 36414
    354 13776 0 54468 53354 0 45899
    355 9516 54491 16381 53323 36288 28738
    383 0 40000 66677 0 0 0
    384 29965 0 13323 0 0 0
    385 22965 56602 31484 0 0 0

  4. Berekening 3 levert het lopende dagnummer \( d_2(a_1, m_0) \) van de eerste dag van rekenmaand \( m_0 \) van rekenjaar \( a_1 \).

    De maandlengtes zijn als volgt, in jaren met verschillende lengtes:

    \({m_0}\) Naam 353 354 355 383 384 385
    0 niesan 30 30 30 30 30 30
    1 ijar 29 29 29 29 29 29
    2 siewan 30 30 30 30 30 30
    3 tammoez 29 29 29 29 29 29
    4 aaw 30 30 30 30 30 30
    5 elloel 29 29 29 29 29 29
    6 tisjrie 30 30 30 30 30 30
    7 chesjwan 29 29 30 29 29 30
    8 kisleew 29 30 30 29 30 30
    9 teweet 29 29 29 29 29 29
    10 sjewat 30 30 30 30 30 30
    -/11 adar Ⅰ 30 30 30
    11/12 adar (Ⅱ) 29 29 29 29 29 29

    De lengte van een kalenderjaar is gelijk aan de lengte van het rekenjaar met datzelfde nummer, en de lengtes van kalendermaanden 1 t/m 6 (die een ander rekenjaar dan kalenderjaar hebben) zijn onafhankelijk van het jaartal, dus om in bovenstaande tabel de juiste kolom te kiezen om de lengte van een mand te bepalen kun je net zo goed \( L(a_1) \) als \( L(a) \) gebruiken.

    In een jaar met 13 maanden wordt de embolistische (extra) maand adar Ⅰ ingevoegd tussen sjewat en de originele adar, die dan adar Ⅱ heet.

    De lengtes van de maanden passen niet in een simpele kalender (van type 1 of 2 uit hoofdstuk 13.13), want het aantal opeenvolgende maanden met dezelfde lengte verschilt meer dan één. In de eerste zeven maanden is het aantal opeenvolgende maanden met dezelfde lengte steeds gelijk aan 1, maar daarna is dat aantal soms gelijk aan 3. Bijvoorbeeld, maanden 8 t/m 10 in een jaar van 353 of 383 dagen zijn allemaal 29 dagen lang, en maanden 7 t/m 9 in een jaar van 355 of 385 dagen zijn allemaal 30 dagen lang.

    De lengtes die de maanden in een jaar van 384 dagen hebben passen bij de formule

    \begin{equation} δ_9(m_0) = \dfloorratio{384 m_0 + 7}{13} \end{equation}

    waarbij \( m_0 \) het rekenmaandnummer is en \( δ_9(m_0) \) het dagnummer van de eerste dag van die maand is sinds de eerste dag van maand 1. Let op: in een jaar van 12 maanden geven wij maand adar het rekenmaandnummer \( m_0 = 11 \) maar in een jaar van 13 maanden geven wij adar (die dan adar Ⅱ genoemd wordt) het rekenmaandnummer \( m_0 = 12 \).

    \({m_0}\) \({δ_9}\) \({\D δ_9}\)
    0 0 30
    1 30 29
    2 59 30
    3 89 29
    4 118 30
    5 148 29
    6 177 30
    7 207 29
    8 236 30
    9 266 29
    10 295 30
    11 325 30
    12 355 29

    Deze formule kan ook gebruikt worden voor de maandlengtes in een jaar van 354 dagen, als de lengte van het jaar de 12e maand (\( m_0 = 11 \)) verkort tot 29 dagen.

    Een correctie op deze formule is nodig voor jaren die een lengte \( L \) ongelijk aan 354 of 384 dagen hebben. In een jaar met 353 of 383 dagen moet rekenmaand 8 een dag korter worden. In een jaar met 355 of 385 dagen moet rekenmaand 7 een dag langer worden. De correcties \( δ_{10} \) voor maand 7 en \( δ_{11} \) voor maand 8 als functie van de jaarlengte \( L \) zijn

    \({L}\) \({δ_{10}}\) \({δ_{11}}\)
    353 0 −1
    354 0 0
    355 1 0
    383 0 −1
    384 0 0
    385 1 0

    We vinden de volgende formules voor deze correcties:

    \begin{align} δ_{10}(a_1) \| = \dmodp{\dfloorratio{L(a_1) + 1}{2}}{3} \\ δ_{11}(a_1) \| = −\dmodp{\dfloorratio{385 − L(a_1)}{2}}{3} \end{align}

    De \( δ_{10} \)-correctie is van toepassing op het begin van rekenmaanden 8 t/m 12, en de \( δ_{11} \)-correctie op het begin van rekenmaanden 9 t/m 12. In de volgende tabel geeft \( ω_2 \) aan (met waarde 1) op welke maanden de \( δ_{10} \)-correctie van toepassing is, en \( ω_3 \) voor de \( δ_{10 }\)-correctie.

    \({m_0}\) \({ω_2}\) \({ω_3}\)
    0 0 0
    1 0 0
    2 0 0
    3 0 0
    4 0 0
    5 0 0
    6 0 0
    7 0 0
    8 1 0
    9 1 1
    10 1 1
    11 1 1
    12 1 1

    Dat krijgen we met formules

    \begin{align} ω_2(m_0) \| = \dfloorratio{m_0 + 4}{12} \\ ω_3(m_0) \| = \dfloorratio{m_0 + 3}{12} \end{align}

    Daarmee wordt de formule om van kalendermaandnummer \( m_0 \) te gaan naar het dagnummer \( δ_{12} \) van de eerste dag van die maand sinds de eerste dag van het rekenjaar:

    \begin{align} \| δ_{12}(a_1, m_0) = δ_9(m_0) + ω_2(m_0) δ_{10}(a_1) + ω_3(m_0) δ_{11}(a_1) \notag \\ \| = \dfloorratio{384 m_0 + 7}{13} + \dmodp{\dfloorratio{L(a_1) + 1}{2}}{3} \dfloorratio{m_0 + 4}{12} \notag \\ \| − \dmodp{\dfloorratio{385 − L(a_1)}{2}}{3} \dfloorratio{m_0 + 3}{12} \end{align}

    Voor maand kislev (\( m_0 = 8 \)) van rekenjaar \( a_1 = 4682 \) (die \( L(a_1) = 385 \) heeft) vinden we

    \begin{align*} δ_9(m_0) \| = \dfloorratio{384 m_0 + 7 }{13} = \dfloorratio{384×8 + 7}{13} = \dfloorratio{3079}{13} = 236 \\ δ_{10}(a_1) \| = \dmodp{\dfloorratio{L(a_1) + 1}{2}}{3} = \dmodp{\dfloorratio{386}{2}}{3} = \dmodp{193}{3} = 1 \\ δ_{11}(a_1) \| = −\dmodp{\dfloorratio{385 − L(a_1)}{2}}{3} = −\dmodp{\dfloorratio{385 − 385}{2}}{3} = 0 \\ ω_2(m_0) \| = \dfloorratio{m_0 + 4}{12} = \dfloorratio{8 + 4}{12} = \dfloorratio{12}{12} = 1 \\ ω_3(m_0) \| = \dfloorratio{m_0 + 3}{12} = \dfloorratio{8 + 3}{12} = \dfloorratio{11}{12} = 0 \\ δ_{12}(a_1, m_0) \| = δ_9(m_0) + ω_2(m_0) δ_{10}(a_1) + ω_3(m_0) δ_{11}(a_1) = 236 + 1×1 − 0×0 = 237 \end{align*}

    Voor de voorbeelddata vinden we

    \({a_1}\) \({m_0}\) \({L}\) \({δ_9}\) \({δ_{10}}\) \({δ_{11}}\) \({ω_2}\) \({ω_3}\) \({δ_{12}}\)
    −1 6 353 177 0 −1 0 0 177
    0 6 384 177 0 0 0 0 177
    1 6 355 177 1 0 0 0 177
    2 6 355 177 1 0 0 0 177
    4524 8 355 236 1 0 1 0 237
    4528 2 385 59 1 0 0 0 59
    4682 8 385 236 1 0 1 0 237
    4682 12 385 355 1 0 1 1 356
    4683 0 354 0 0 0 0 0 0
    4683 2 354 59 0 0 0 0 59
    4683 6 354 177 0 0 0 0 177
    325709 12 385 355 1 0 1 1 356

    De lengte van kalendermaanden 1 t/m 6 is in elk jaar hetzelfde. Hun gezamenlijke lengte is 177 dagen. Daarom is de eerste dag van het rekenjaar (rekendag 0 van rekenmaand 0) altijd 177 dagen vóór nieuwjaar van datzelfde rekenjaar (rekendag 0 van rekenmaand 6), en daarom is de lengte van een rekenjaar gelijk aan de lengte van het kalenderjaar met hetzelfde nummer. Daarmee is het lopende dagnummer \( δ_{13} \) van de eerste dag (1 nisan) van rekenjaar \( a_1 \), ten opzichte van \( J_0 \):

    \begin{equation} δ_{13}(a_1) = d_1(a_1) − 177 \end{equation}

    Daarmee is het lopende dagnummer \( d_2(a_1, m_0) \) van de eerste dag van rekenmaand \( m_0 \) van rekenjaar \( a_1 \), gemeten sinds \( J_0 \) (1 tisjrie van kalenderjaar 1):

    \begin{equation} d_2(a_1, m_0) = δ_{13}(a_1) + δ_{12}(a_1, m_0) = d_1(a_1) − 177 + δ_{12}(a_1, m_0) \label{eq:hebd2} \end{equation}

    Voor maand kislev (\( m_0 = 8 \)) van rekenjaar \( a_1 = 4682 \) vinden we

    \[ d_2(a_1, m_0) = d_1(4682) − 177 + δ_{12}(4682, 8) = 1 709 704 − 177 + 237 = 1 709 764 \]

    Voor de voorbeelddata vinden we

    \({a_1}\) \({m_0}\) \({d_0}\) \({d_1}\) \({δ_{12}}\) \({δ_{13}}\) \({d_2}\)
    −1 6 0 −737 177 −914 −737
    0 6 0 −384 177 −561 −384
    1 6 0 0 177 −177 0
    2 6 0 355 177 178 355
    4524 8 29 1652000 237 1651823 1652060
    4528 2 0 1653447 59 1653270 1653329
    4682 8 11 1709704 236 1709527 1709763
    4682 12 28 1709704 356 1709527 1709883
    4683 0 0 1710089 0 1709912 1709912
    4683 2 17 1710089 59 1709912 1709971
    4683 6 0 1710089 177 1709912 1710089
    325709 12 28 118963792 356 118963615 118963971

  5. Berekening 3 levert het lopende dagnummer \( s \) van de gewenste dag (ten opzichte van \( J_0 \)) uit het lopende dagnummer \( d_2(a_1, m_0) \) van de eerste dag van rekenmaand \( m_0 \) van rekenjaar \( a_1 \) en van het rekendagnummer \( d_0 \) sinds de eerste dag van die maand:

    \begin{equation} s = d_2(a_1, m_0) + d_0 \end{equation}

    Voor 12 kislev 4682 vinden we

    \[ s = 1 709 764 + 11 = 1 709 775 \]

    Voor de voorbeelddata vinden we

    \({a_1}\) \({m_0}\) \({d_0}\) \({d_2}\) \({s}\)
    −1 6 0 −737 −737
    0 6 0 −384 −384
    1 6 0 0 0
    2 6 0 355 355
    4524 8 29 1652060 1652089
    4528 2 0 1653329 1653329
    4682 8 11 1709764 1709775
    4682 12 28 1709883 1709911
    4683 0 0 1709912 1709912
    4683 2 17 1709971 1709988
    4683 6 0 1710089 1710089
    325709 12 28 118963971 118963999

  6. De epoche van de kalender is 1 tisjrie van het jaar A.M. 1 en komt overeen met CJDN 347 998 = \( J_0 \). Daarmee wordt het CJDN \( J \) van de gewenste datum

    \begin{equation} J = s + J_0 = s + 347 998 \end{equation}

    Voor 12 kislev 4682 vinden we

    \[ J = 1 709 775 + 347 998 = 2 057 773 \]

    dus de CJDN die overeenkomt met 12 kislev 4682 is 2 057 773.

    Voor de voorbeelddata vinden we

    \({a}\) \({m}\) \({d}\) \({s}\) \({J}\)
    −1 7 1 −737 347261
    0 7 1 −384 347614
    1 7 1 0 347998
    2 7 1 355 348353
    4524 9 30 1652089 2000087
    4527 3 1 1653329 2001327
    4682 9 12 1709775 2057773
    4682 13 29 1709911 2057909
    4682 1 1 1709912 2057910
    4682 3 18 1709988 2057986
    4682 7 1 1709704 2057702
    325709 13 29 118963999 119311997

Samenvattend:

\begin{align} m_0 \| = m − 1 \\ a_1 \| = a + \dfloorratio{12 − m_0}{7} \\ μ_2(a_1) \| = \dfloorratio{235 a_1 − 234}{19} \\ δ_4(μ_2) \| = \range{\dfloorratio{765 433 μ_2 + 12084}{25920}}{25920} \\ δ_6(μ_2) \| = δ_4(μ_2) + \dmodp{\range{\dfloorratio{6 δ_4(μ_2)}{7}}{6}}{2} \\ L_2(a_1) \| = δ_6(μ_2(a_1 + 1)) − δ_6(μ_2(a_1)) \\ δ_7(a_1) \| = 2\dmodp{\dfloorratio{L_2(a_1) + 19}{15}}{2} \\ δ_8(a_1) \| = \dmodp{\dfloorratio{L_2(a_1 − 1) + 7}{15}}{2} \\ d_1(a_1) \| = δ_6(μ_2(a_1)) + δ_7(a_1) + δ_8(a_1) \\ L(a_1) \| = d_1(a_1 + 1) − d_1(a_1) \\ δ_9(m_0) \| = \dfloorratio{384 m_0 + 7}{13} \\ δ_{10}(a_1) \| = \dmodp{\dfloorratio{L(a_1) + 1}{2}}{3} \\ δ_{11}(a_1) \| = −\dmodp{\dfloorratio{385 − L(a_1)}{2}}{3} \\ ω_2(m_0) \| = \dfloorratio{m_0 + 4}{12} \\ ω_3(m_0) \| = \dfloorratio{m_0 + 3}{12} \\ δ_{12}(a_1, m_0) \| = δ_9(m_0) + ω_2(m_0)δ_{10}(a_1) + ω_3(m_0)δ_{11}(a_1) \\ d_2(a_1,m_0) \| = d_1(a_1) − 177 + δ_{12}(a_1,m_0) \\ s \| = d_2(a_1,m_0) + d − 1 \\ J \| = s + 347 998 \end{align}

Alternatieven met een groter bereik voor de berekening van \( δ_4 \):

\begin{align} δ_4(μ_2) \| = 29 μ_2 + \range{\dfloorratio{13753 μ_2 + 12084}{25920}}{465.7} \\ \{ ω_1(μ_2), μ_1(μ_2) \} \| = \Div(μ_2, 25920) \\ δ_4(μ_2) \| = 29 μ_2 + 13753 ω_1(μ_2) + \dfloorratio{13753 μ_1(μ_2) + 12084}{25920} \end{align}

Alternatief met een groter bereik voor de berekening van \( δ_6 \):

\begin{equation} δ_6(μ_2) = δ_4(μ_2) + \dmodp{\dfloorratio{6\dmodp{δ_4(μ_2)}{7}}{7}}{2} \end{equation}

In de praktijk zijn meer berekeningen nodig dan je op het eerste gezicht zou denken, want sommige formules moeten meerdere keren gebruikt worden. Het volgende plaatje toont de afhankelijkheden. Voor \( L \) heb je \( d_1 \) nodig voor twee jaar, en voor elke \( d_1 \) heb je \( L_2 \) nodig voor twee jaar, en voor elke \( L_2 \) heb je \( δ_6 \) nodig voor twee jaar. \( L \) en de bijbehorende afhankelijkheden zijn alleen nodig als \( m \ge 9 \), daarom zijn die aangegeven met pijlen met streeplijnen. Al met al heb je om \( J \) uit te rekenen \( d_1 \) nodig van tenminste één jaar, \( L_2 \) van tenminste twee jaar, en \( δ_6 \) van tenminste drie jaar, en als \( m \ge 9 \) dan heb je \( d_1 \), \( L_2 \) en \( δ_6 \) van nog een jaar extra nodig.

Voor 12 kislev 4682 (\( a = 4682, m = 9, d = 12 \)) is \( m ≥ 9 \) dus hebben we vier waarden van \( μ_2 \), \( μ_4 \), \( μ_6 \) nodig, drie van \( L_2 \), twee van \( d_1 \), en een van \( L \).

\begin{align*} m_0 \| = m − 1 = 9 − 1 = 8 \\ a_1 \| = a + \dfloorratio{12 − m_0}{7} = 4682 + \dfloorratio{12 − 8}{7} = 4682 + \dfloorratio{4}{7} = 4682 \\ μ_2(a_1) \| = \dfloorratio{235 a_1 − 234}{19} = \dfloorratio{235×4682 − 234}{19} \\ \| = \dfloorratio{1 100 036}{19} = 57896 \\ μ_2(a_1 + 2) \| = 57921 \\ μ_2(a_1 + 1) \| = 57909 \\ μ_2(a_1 − 1) \| = 57884 \\ δ_4(μ_2(a_1)) \| = \range{\dfloorratio{765 433 μ_2(a_1) + 12084}{25920}}{25920} = \dfloorratio{765 433×57896 + 12084}{25920} \\ \| = \dfloorratio{44 315 521 052}{25920} = 1 709 703 \\ δ_4(μ_2(a_1 + 2)) \| = 1 710 442 \\ δ_4(μ_2(a_1 + 1)) \| = 1 710 087 \\ δ_4(μ_2(a_1 − 1)) \| = 1 709 349 \\ δ_6(μ_2(a_1)) \| = δ_4(μ_2(a_1)) + \dmodp{\range{\dfloorratio{6 δ_4(μ_2(a_1))}{7}}{6}}{2} \\ \| = 1 709 703 + \dmodp{\dfloorratio{6×1 709 703}{7}}{2} \\ \| = 1 709 703 + \dmodp{\dfloorratio{10 258 218}{7}}{2} \\ \| = 1 709 703 + \dmodp{1 465 459}{2} = 1 709 704 \\ δ_6(μ_2(a_1 + 2)) \| = 1 710 443 \\ δ_6(μ_2(a_1 + 1)) \| = 1 710 087 \\ δ_6(μ_2(a_1 − 1)) \| = 1 709 349 \\ L_2(a_1) \| = δ_6(μ_2(a_1 + 1)) − δ_6(μ_2(a_1)) = 1 710 087 − 1 709 704 = 383 \\ L_2(a_1 + 1) \| = 356 \\ L_2(a_1 − 1) \| = 355 \\ δ_7(a_1) \| = 2\dmodp{\dfloorratio{L_2(a_1) + 19}{15}}{2} = 2\dmodp{\dfloorratio{383 + 19}{15}}{2} \\ \| = 2\dmodp{\dfloorratio{402}{15}}{2} = 2×\dmodp{26}{2} = 0 \\ δ_7(a_1 + 1) \| = 2 \\ δ_8(a_1) \| = \dmodp{\dfloorratio{L_2(a_1 − 1) + 7}{15}}{2} = \dmodp{\dfloorratio{355 + 7}{15}}{2} \\ \| = \dmodp{\dfloorratio{362}{15}}{2} = \dmodp{24}{2} = 0 \\ δ_8(a_1 + 1) \| = 0 \\ d_1(a_1) \| = δ_6(μ_2(a_1)) + δ_7(a_1) + δ_8(a_1) = 1 709 704 + 0 + 0 = 1 709 704 \\ d_1(a_1 + 1) \| = 1 710 089 \\ L(a_1) \| = d_1(a_1 + 1) − d_1(a_1) = 1710089 − 1709704 = 385 \\ δ_9(m_0) \| = \dfloorratio{384 m_0 + 7}{13} = \dfloorratio{384×8 + 7}{13} \\ \| = \dfloorratio{3079}{13} = 236 \\ δ_{10}(a_1) \| = \dmodp{\dfloorratio{L(a_1) + 1}{2}}{3} = \dmodp{\dfloorratio{385 + 1}{2}}{3} \\ \| = \dmodp{\dfloorratio{386}{2}}{3} = \dmodp{193}{3} = 1 \\ δ_{11}(a_1) \| = −\dmodp{\dfloorratio{385 − L(a_1)}{2}}{3} = −\dmodp{\dfloorratio{385 − 385}{2}}{3} = 0 \\ ω_2(m_0) \| = \dfloorratio{m_0 + 4}{12} = \dfloorratio{8 + 4}{12} = \dfloorratio{12}{12} = 1 \\ ω_3(m_0) \| = \dfloorratio{m_0 + 3}{12} = \dfloorratio{8 + 3}{12} = \dfloorratio{11}{12} = 0 \\ δ_{12}(a_1, m_0) \| = δ_9(m_0) + ω_2(m_0) δ_{10}(a_1) + ω_3(m_0) δ_{11}(a_1) \\ \| = 236 + 1×1 + 0×0 = 237 \\ d_2(a_1, m_0) \| = d_1(a_1) − 177 + δ_{12}(a_1, m_0) = 1 709 704 − 177 + 237 = 1 709 764 \\ s \| = d_2(a_1, m_0) + d − 1 = 1 709 764 + 12 − 1 = 1 709 75 \\ J \| = s + 347 998 = 1 709 775 + 347 998 = 2 057 773 \end{align*}

\({a}\) \({m}\) \({d}\) \({m_0}\) \({a_1}\)
−1 7 1 6 −1
0 7 1 6 0
1 7 1 6 1
2 7 1 6 2
4524 9 30 8 4524
4527 3 1 2 4528
4682 9 12 8 4682
4682 7 1 6 4682
4682 13 29 12 4682
4682 1 1 0 4683
4682 3 18 2 4683
325709 13 29 12 325709

\({a_1}\) \({μ_2}\) \({ω_1}\) \({μ_1}\) \({δ_4}\) \({δ_6}\) \({L_2}\)
−1 −25 −1 25895 −726 −725 354
0 −13 −1 25907 −372 −371 371
1 0 0 0 0 0 355
2 12 0 12 354 355 355
4524 55942 2 4102 1652002 1652003 354
4528 55991 2 4151 1653449 1653449 385
4682 57896 2 6056 1709706 1709706 385
4683 57909 2 6069 1710090 1710091 353
4684 57921 2 6081 1710444 1710444 117253353
325709 4028493 155 10893 118963797 118963797 384
325710 4028506 155 10906 118964181 118964181

14.7.2. Van CJDN naar Joodse datum

Nu gaan we de andere kant op. De kalender is zo ingewikkeld dat we niet simpelweg de berekeningen van datum naar CJDN kunnen omkeren.

  1. Reken om van CJDN \( J \) naar lopende dagnummer \( s \) sinds 1 tisjrie A.M. 1:

    \begin{equation} s = J − J_0 = J − 347 998 \end{equation}

    Voor \( J = 2 057 773 \) vinden we \( s = 2 057 773 − 347 998 = 1 709 775 \). Hier zijn nog wat voorbeelden:

    \({J}\) \({s}\)
    347261 −737
    347614 −384
    347998 0
    348353 355
    2000087 1652089
    2001327 1653329
    2057773 1709775
    2057909 1709911
    2057910 1709912
    2057986 1709988
    2057702 1709704
    119311997 118963999

  2. Om te bepalen in welke maand in welk jaar de dag met een bepaald lopende dagnummer hoort moeten we de invloed van alle vertragingen meenemen, maar de invloed van de tweede, derde en vierde vertragingen zijn alleen uit te rekenen voor een bepaalde maand in een bepaald jaar, maar wat die zijn proberen we nou juist te bepalen. We moeten dus eerst een maand en een jaar schatten zonder dat we de tweede, derde en vierde vertraging al kennen, en dan uitrekenen wat die vertragingen zijn, en dan kijken of onze schatting goed was of niet.

    Met behulp van de inverse van formule \eqref{eq:υ_1} kunnen we het voorlopige lopende rekenmaandnummer \( μ_2 \) voor lopende dagnummer \( s \) uitrekenen alsof de tweede, derde en vierde vertragingen niet bestaan.

    \begin{align} μ_2 \| = \dfloorratio{25920 s + 25920 − 12084 − 1}{765 433} = \range{\dfloorratio{25920 s + 13835}{765 433}}{25920} \label{eq:y_1p} \end{align}

    Voor de \( \range{•}{25920} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen heeft die formule een bereik van ongeveer 453 jaar. De omweg gegeven door formule \eqref{eq:detour} die we voor andere kalenders met een te beperkt bereik gebruikten is hier voor 32-bitsgetallen niet geschikt. Die omweg zou zijn

    \begin{eqnarray*} \{ ω_2', δ_1' \} \| = \| \Div(s, 765 433) \\ μ_2' \| = \| 25920 ω_2' + \dfloorratio{25920 δ_1' + 13835}{765 433} \end{eqnarray*}

    maar \( δ_1' \) kan waarden tot en met 765 432 bereiken en dan is \( 25920 δ_1' + 13835 = 25920×765432 + 13835 = 19 840 011 275 \) wat ruim viermaal te groot is voor een 32-bitsgetal.

    Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken, gebaseerd op formule \eqref{eq:PQR}ff:

    \begin{eqnarray} \{ ω_2, δ_1 \} \| = \| \Div(s, 1447) \\ μ_2 \| = \| 49 ω_2 + \dfloorratio{23 ω_2 + 25920 δ_1 + 13835}{765 433} \end{eqnarray}

    Met die omweg voor 32-bitsgetallen is de grootste mogelijke waarde van \( ω_2 \) gelijk aan \( 2^{32}/1447 ≈ 2 968 187 \), en die van \( 23 ω_2 + 25920 δ_1 + 13835 \) daarom gelijk aan slechts \( 23×2 968 187 + 25920×1446 + 13835 = 105 762 456 \), ruim klein genoeg om in een 32-bitsgetal te passen.

    Hier zijn wat voorbeelden van de originele berekening en de omweg.

    \({J}\) \({s}\) \({ω_2}\) \({δ_1}\) \({23ω_2+25920δ_1+13835}\) \({μ_2}\) \({25920 s + 13835}\)
    347261 −737 −1 710 18417012 −25 −19089205
    347614 −384 −1 1063 27566772 −13 −9939445
    347998 0 0 0 13835 0 13835
    348353 355 0 355 9215435 12 9215435
    2000087 1652089 1141 1062 27567118 55945 42822160715
    2001327 1653329 1142 855 22201701 55987 42854301515
    2057773 1709775 1181 868 22539558 57898 44317381835
    2057909 1709911 1181 1004 26064678 57903 44320906955
    2057910 1709912 1181 1005 26090598 57903 44320932875
    2057986 1709988 1181 1081 28060518 57905 44322902795
    2057702 1709704 1181 797 20699238 57896 44315541515
    119311997 118963999 82214 341 10743477 4028500 3083546867915

    Om verder te komen willen we weten wat het bij \( μ_2 \) horende rekenjaarnummer \( α_3 \) en rekenmaandnummer \( μ_3 \) zijn. Als we de inverse van formule \eqref{eq:j2μ1} toepassen op \( μ_2 \) dan krijgen we het geschatte kalenderjaar en het aantal maanden sinds nieuwjaar (dus sinds kalendermaand 7), maar dat is niet altijd handig, want als dat aantal maanden 6 of meer is dan moet je weten hoeveel maanden dat kalenderjaar bevat (12 of 13) om te bepalen wat het juiste rekenjaarnummer en het juiste rekenmaandnummer zijn, en daarvoor zijn extra berekeningen nodig.

    Het is slimmer om de inverse van formule \eqref{eq:j2μ1} toe te passen op \( μ_2 + 6 \), want dan vinden we het maandnummer \( μ_3 \) ten opzichte van kalendermaand 1, dus het rekenmaandnummer:

    \begin{align} \{ α_3, ω_3 \} \| = \Div(19 (μ_2 + 6) + 252, 235) = \Div(19 μ_2 + 366, 235) \label{eq:μ2m} \\ μ_3 \| = \dfloorratio{ω_3}{19} \end{align}

    Stel we hebben \( μ_2 = 57890 \). Als we daarop de inverse van formule \eqref{eq:j2μ1} toepassen dan vinden we

    \begin{align*} \{ α_3', ω_3' \} \| = \Div(19 μ_2 + 252, 235) = \Div(19×57890 + 252, 235) \\ \| = \Div(1 100 162, 235) = \{ 4681, 127 \} \\ μ_3' \| = \dfloorratio{ω_3}{19} = \dfloorratio{127}{19} = 6 \end{align*}

    dus 6 maanden na kalendermaand 7 = rekenmaand 6 (de maand van nieuwjaar) van jaar 4681. Dat komt overeen met kalendermaand 13 = rekenmaand 12 van jaar 4681 als dat jaar 13 maanden heeft, maar met kalendermaand 1 van kalenderjaar 4681, en met rekenmaand 0 van kalenderjaar 4682, als jaar 4681 maar 12 maanden heeft. En het kalender- of rekenmaandnummer van de daaropvolgende maanden tot aan de volgende nieuwjaar zijn op dezelfde manier onduidelijk. Dus er is dan extra werk nodig (namelijk het bepalen hoeveel maanden dat jaar heeft) voordat we kunnen weten welke maand in het jaar het is.

    Als we in plaats daarvan formule \eqref{eq:μ2m}ff gebruiken dan vinden we

    \begin{align*} \{ α_3, ω_3 \} \| = \Div(19 μ_2 + 366, 235) = \Div(19×57890 + 366, 235) \\ \| = \Div(1 100 276, 235) = \{ 4682, 6 \} \\ μ_3 \| = \dfloorratio{ω_3}{19} = \dfloorratio{6}{19} = 0 \end{align*}

    dus rekenmaand 0 van rekenjaar 4682, meteen goed.

    Onderstaande tabel geeft meer voorbeelden. Rekenjaar \( a_1 \), rekenmaand \( m_0 \) en lopende maandnummer \( μ_2 \) zijn berekend uit kalenderjaar \( a \) en kalendermaand \( m \) volgens de formules uit hoofdstuk 14.7.1. Ons doel is nu om uit die \( μ_2 \) weer \( a_1 \) en \( m_0 \) af te leiden. Uit dat lopende maandnummer \( μ_2 \) zijn het jaartal \( α_3' \) en maandnummer \( μ_3' \) berekend met de inverse van formule \eqref{eq:j2μ1}, en het jaartal \( α_3 \) en maandnummer \( μ_3 \) met formule \eqref{eq:μ2m}ff. We zien dat steeds \( α_3 = a_1 \) en \( μ_3 = m_0 \), dus daarmee is ons doel bereikt.

    \({a}\) \({m}\) \({a_1}\) \({m_0}\) \({μ_2}\) \({α_3'}\) \({μ_3'}\) \({α_3}\) \({μ_3}\)
    4680 6 4681 5 57883 4680 12 4681 5
    4681 7 4681 6 57884 4681 0 4681 6
    4681 8 4681 7 57885 4681 1 4681 7
    4681 9 4681 8 57886 4681 2 4681 8
    4681 10 4681 9 57887 4681 3 4681 9
    4681 11 4681 10 57888 4681 4 4681 10
    4681 12 4681 11 57889 4681 5 4681 11
    4681 1 4682 0 57890 4681 6 4682 0
    4681 2 4682 1 57891 4681 7 4682 1
    4681 3 4682 2 57892 4681 8 4682 2
    4681 4 4682 3 57893 4681 9 4682 3
    4681 5 4682 4 57894 4681 10 4682 4
    4681 6 4682 5 57895 4681 11 4682 5
    4682 7 4682 6 57896 4682 0 4682 6
    4682 8 4682 7 57897 4682 1 4682 7
    4682 9 4682 8 57898 4682 2 4682 8
    4682 10 4682 9 57899 4682 3 4682 9
    4682 11 4682 10 57900 4682 4 4682 10
    4682 12 4682 11 57901 4682 5 4682 11
    4682 13 4682 12 57902 4682 6 4682 12
    4682 1 4683 0 57903 4682 7 4683 0
    4682 2 4683 1 57904 4682 8 4683 1
    4682 3 4683 2 57905 4682 9 4683 2
    4682 4 4683 3 57906 4682 10 4683 3
    4682 5 4683 4 57907 4682 11 4683 4
    4682 6 4683 5 57908 4682 12 4683 5
    4683 7 4683 6 57909 4683 0 4683 6

    Als we het lopende dagnummer \( d_2 \) (van formule \eqref{eq:hebd2}) van de eerste dag van rekenmaand \( μ_3 \) van rekenjaar \( α_3 \) uitrekenen met alle toepasselijke vertragingen erbij, en dan het voorlopige dagnummer-in-de-maand \( s − d_2 \) uitrekenen, dan vinden we antwoorden die variëren tussen −2 en 29. De dagen waarvoor dit dagnummer negatief is horen in de voorgaande maand thuis, dus dan is het echte lopende maandnummer gelijk aan \( μ_2 − 1 \). Er zijn 5 963 491 zulke dagen in elke grote kalendercyclus van 8 527 680 maanden, dus niet elke maand heeft zulke dagen. Het aantal maanden in de grote kalendercyclus waarvoor de eerste twee dagen \( s \lt d_2 \) opleveren is 1 006 441, dus ongeveer 11,8% van alle maanden. En het aantal maanden waarvoor geen van de dagen \( s \lt d_2 \) opleveren is 4 767 513, dus ongeveer 55,9% van alle maanden. En 32.3% van de maanden levert één dag met \( s \lt d_2 \). Het grootste aantal maanden achter elkaar die allemaal geen dagen met \( s \lt d_2 \) hebben is 25.

    De dagen waarvoor dit dagnummer niet kleiner is dan 0 en niet groter dan 28 horen zeker in maand \( μ_2 \), want alle maanden hebben tenminste 29 dagen. De dagen waarvoor dit dagnummer gelijk is aan 29 (dus de 30e dag van de maand, want de eerste dag heeft rekendagnummer 0) kunnen in de huidige maand horen, maar zouden ook nog in de eerstvolgende maand kunnen horen, omdat sommige maanden maar 29 dagen hebben.

    Als we het dagnummer-in-de-maand uitrekenen ten opzichte van de eerstvolgende maand (dus voor \( μ_2 + 1 \)) dan vinden we antwoorden die variëren tussen −32 en 0. De dagen waarvoor dit dagnummer gelijk is aan 0 horen in deze eerstvolgende maand thuis (\( μ_2 + 1 \)). Er zijn 163 258 zulke dagen in elke grote kalendercyclus, dus ongeveer een op de 52 maanden heeft een dag waarvoor \( μ_2 \) eentje te klein is. Voor 97,6% van de dagen is \( μ_2 \) al goed.

    Helaas is er geen eenduidig verband tussen het dagnummer ten opzichte van maand \( μ_2 \) en het dagnummer ten opzichte van maand \( μ_2 + 1 \), dus moeten we beide dagnummers uitrekenen om te bepalen in welke maand de gewenste dag valt. De minimale berekening is als volgt:

    1. Bereken met formule \eqref{eq:μ2m} het voorlopige rekenjaarnummer \( α_3 \) en het voorlopige rekenmaandnummer \( μ_3 \) uit kandidaat-lopende-maandnummer \( μ_2 \):

      \begin{align} \{ α_3, ω_3 \} \| = \Div(19 μ_2 + 366, 235) \\ μ_3 \| = \dfloorratio{ω_3}{19} \end{align}

      Bereken dan met formule \eqref{eq:hebd2} het lopende dagnummer \( d_2(α_3, μ_3) \) voor de eerste dag van die rekenmaand in dat kalenderjaar, zoals beschreven in hoofdstuk 14.7.1, en dan het voorlopige rekendagnummer \( δ_{14} \) sinds de eerste dag van die maand:

      \begin{equation} δ_{14} = s − d_2(α_3, μ_3) \end{equation}

      Als \( 0 ≤ δ_{14} ≤ 28 \) dan is de gezochte rekendatum \( \{ a_1, m_0, d_0 \} \) gelijk aan \( \{ α_3, μ_3, δ_{14} \} \).

    2. Als \( δ_{14} = 29 \), bereken dan het tweede kandidaat-lopende-maandnummer \( μ_5 \):

      \begin{equation} μ_5 = μ_2 + 1 \end{equation}

      Bereken daaruit het voorlopige kalenderjaarnummer \( α_4 \), het voorlopige rekenmaandnummer \( μ_6 \), en het voorlopige rekendagnummer \( δ_{15} \):

      \begin{align} \{ α_4, ω_4 \} \| = \Div(19 μ_5 + 366, 235) \\ μ_6 \| = \dfloorratio{ω_4}{19} \\ δ_{15} \| = s − d_2(α_4, μ_6) \end{align}

      Als \( δ_{15} \lt 0 \) dan is de gezochte rekendatum \( \{ a_1, m_0, d_0 \} \) gelijk aan \( \{ α_3, μ_3, δ_{14} \} \). En anders is de gezochte rekendatum \( \{ a_1, m_0, d_0 \} \) gelijk aan \( \{ α_4, μ_6, δ_{15} \} \).

    3. Als \( δ_{14} \lt 0 \) dan is het juiste lopende rekenmaandnummer \( μ_7 = μ_2 − 1 \). Bereken daaruit het het kalenderjaarnummer \( a_1 \), het rekenmaandnummer \( m_0 \), en het rekendagnummer \( d_0 \):

      \begin{align} \{ a_1, ω_5 \} \| = \Div(19 μ_7 + 366, 235) \\ m_0 \| = \dfloorratio{ω_5}{19} \\ d_0 \| = s − d_2(a_1, m_0) \end{align}

    Voor \( J = 2 057 773 \) vonden we eerder \( s = 1 709 775 \) en , \( μ_2 = 57898 \). Dan is

    \begin{align*} \{ α_3, ω_3 \} \| = \Div(19 μ_2 + 366, 235) = \Div(19×57898 + 366, 235) \\ \| = \Div(1 100 428, 235) = \{ 4682, 158 \} \\ μ_3 \| = \dfloorratio{ω_3}{19} = \dfloorratio{158}{19} = 8 \end{align*}

    Dan rekenen we \( d_2(α_3, μ_3) = d_2(4682, 8) \) uit zoals beschreven in Hoofdstuk 14.7.1. We vinden \( d_2(4682, 8) = 1 709 764 \). Daarmee

    \[ δ_{14} = s − d_2(α_3, μ_3) = 1 709 775 − 1 709 764 = 11 \]

    Die \( δ_{14} \) is niet negatief en niet groter dan 28, dus we hebben de gezochte rekendatum al gevonden: \( \{ a_1, m_0, d_0 \} \) is gelijk aan \( \{ α_3, μ_3, δ_{14} \} = \{ 4682, 8, 11 \}\).

    Voor alle voorbeeld-CJDNs vinden we

    \({J}\) \({s}\) \({μ_2}\) \({α_3}\) \({μ_3}\) \({d_2}\) \({δ_{14}}\) \({α_4}\) \({μ_6}\) \({δ_{15}}\) \({a_1}\) \({m_0}\) \({d_2}\) \({d_0}\)
    347261 −737 −25 −1 6 −737 0 −1 6 −737 0
    347614 −384 −13 0 6 −384 0 0 6 −384 0
    347998 0 0 1 6 0 0 1 6 0 0
    348353 355 12 2 6 355 0 2 6 355 0
    2000087 1652089 55945 4524 9 1652090 −1 4524 8 1652060 29
    2001327 1653329 55987 4528 2 1653329 0 4528 2 1653329 0
    2057702 1709704 57896 4682 6 1709704 0 4682 6 1709704 0
    2057773 1709775 57898 4682 8 1709764 11 4682 8 1709764 11
    2057909 1709911 57903 4683 0 1709912 −1 4682 12 1709883 28
    2057910 1709912 57903 4683 0 1709912 0 4683 0 1709912 0
    2057986 1709988 57905 4683 2 1709971 17 4683 2 1709971 17
    2061126 1713128 58011 4691 10 1713099 29 4691 11 −1 4691 10 1713099 29
    119311997 118963999 4028500 325710 0 118964000 −1 325709 12 118963971 28

    Het aantal berekeningen dat je doet is dan niet voor alle datums hetzelfde. Als het voordeliger is als wel voor alle datums hetzelfde aantal berekeningen gedaan worden, bereken dan zoals hieronder staat.

    1. Het eerste kandidaat-lopende-maandnummer \( μ_3 \) is

      \begin{equation} μ_3 = μ_2 + 1 \end{equation}

      Bereken daaruit het voorlopige kalenderjaarnummer \( α_3 \) en het voorlopige rekenmaandnummer \( μ_4 \):

      \begin{align} \{ α_3, ω_3 \} \| = \Div(19 μ_3 + 366, 235) \\ μ_4 \| = \dfloorratio{ω_3}{19} \end{align}

      Bereken dan het lopende dagnummer \( d_2(α_3, μ_4) \) voor de eerste dag van dat rekenjaar en rekenmaand, zoals beschreven in hoofdstuk 14.7.1, en dan het voorlopige rekendagnummer \( δ_{14} \) sinds de eerste dag van die maand:

      \begin{equation} δ_{14} = s − d_2(α_3, μ_4) \end{equation}

    2. Het tweede kandidaat-lopende-maandnummer \( μ_5 \) is

      \begin{equation} μ_5 = μ_3 + \dfloorratio{δ_{14}}{64} \end{equation}

      (De deler 64 in bovenstaande deling moet groter zijn dan 32 omdat \( δ_{14} \) alle waarden tussen −32 en 0 kan hebben en we willen dat \( μ_5 = μ_3 − 1 \) als \( δ_{14} \lt 0 \). We kiezen 64 omdat dat de eerste macht van 2 groter dan 32 is, en misschien daarmee de deling ietsje sneller wordt.)

      Bereken daaruit het voorlopige rekenjaarnummer \( α_4 \), het voorlopige rekenmaandnummer \( μ_6 \), en het voorlopige rekendagnummer \( δ_{15} \):

      \begin{align} \{ α_4, ω_4 \} \| = \Div(19 μ_5 + 366, 235) \\ μ_6 \| = \dfloorratio{ω_4}{19} \\ δ_{15} \| = s − d_2(α_4, μ_6) \end{align}

    3. Het uiteindelijke lopende maandnummer \( μ_7 \) is

      \begin{equation} μ_7 = μ_5 + \dfloorratio{δ_{15}}{64} \end{equation}

      Bereken daaruit het rekenjaarnummer \( a_1 \), het rekenmaandnummer \( m_0 \), en het rekendagnummer \( d_0 \):

      \begin{align} \{ a_1, ω_5 \} \| = \Div(19 μ_7 + 366, 235) \\ m_0 \| = \dfloorratio{ω_5}{19} \\ d_0 \| = s − d_2(a_1, m_0) \end{align}

    Voor \( J = 2 057 773 \) vonden we eerder \( s = 1 709 775 \) en \( μ_2 = 57898 \). Dan is

    \begin{align*} μ_3 \| = μ_2 + 1 = 57898 + 1 = 57899 \\ \{ α_3, ω_3 \} \| = \Div(19×57899 + 366, 235) = \Div(1 100 447, 235) = \{ 4682, 177 \} \\ μ_4 \| = \dfloorratio{ω_3}{19} = \dfloorratio{177}{19} = 9 \end{align*}

    Dan kunnen we \( d_2(α_3, μ_4) = d_2(4682, 9) \) uitrekenen zoals beschreven in Hoofdstuk 14.7.1, en vinden \( d_2(4682, 9) = 1 709 794 \). Daarmee is

    \[ δ_{14} = s − d_2(4682, 9) = 1 709 775 − 1 709 794 = −19 \]

    Dan

    \[ μ_5 = μ_3 + \dfloorratio{δ_{14}}{64} = 57899 + \dfloorratio{−19}{64} = 57898 \]

    Daarmee kunnen we \( α_4 \), \( μ_6 \), \( d_2(α_4 \), \( μ_6) \), \( δ_{15} \) uitrekenen zoals \( α_3 \), \( μ_4 \), \( d_2(α_3, μ_4) \), \( δ_{14} \) hierboven. We vinden \( α_4 = 4682 \), \( μ_6 = 8 \), \( δ_{15} = 11 \). Dan

    \[ μ_7 = μ_5 + \dfloorratio{δ_{15}}{64} = 57899 + \dfloorratio{11}{64} = 57899 \]

    dus \( μ_7 = μ_5 \) en daarmee veranderen de getallen niet meer en vinden we uiteindelijk \( a_1 = 4682, m_0 = 8, d_0 = 11 \).

    Voor alle voorbeeld-CJDNs vinden we

    \({J}\) \({s}\) \({μ_2}\) \({μ_3}\) \({α_3}\) \({ω_3}\) \({μ_4}\) \({d_2}\) \({δ_{14}}\)
    347261 −737 −25 −24 −1 145 7 −707 −30
    347614 −384 −13 −12 0 138 7 −354 −30
    347998 0 0 1 1 150 7 30 −30
    348353 355 12 13 2 143 7 385 −30
    2000087 1652089 55945 55946 4524 200 10 1652119 −30
    2001327 1653329 55987 55988 4528 58 3 1653359 −30
    2057702 1709704 57896 57897 4682 139 7 1709734 −30
    2057773 1709775 57898 57899 4682 177 9 1709794 −19
    2057909 1709911 57903 57904 4683 37 1 1709942 −31
    2057910 1709912 57903 57904 4683 37 1 1709942 −30
    2057986 1709988 57905 57906 4683 75 3 1710001 −13
    119311997 118963999 4028500 4028501 325710 35 1 118964030 −31

    \({J}\) \({s}\) \({μ_5}\) \({α_4}\) \({ω_4}\) \({μ_6}\) \({d_2}\) \({δ_{15}}\)
    347261 −737 −25 −1 126 6 −737 0
    347614 −384 −13 0 119 6 −384 0
    347998 0 0 1 131 6 0 0
    348353 355 12 2 124 6 355 0
    2000087 1652089 55945 4524 181 9 1652090 −1
    2001327 1653329 55987 4528 39 2 1653329 0
    2057702 1709704 57896 4682 120 6 1709704 0
    2057773 1709775 57898 4682 158 8 1709764 11
    2057909 1709911 57903 4683 18 0 1709912 −1
    2057910 1709912 57903 4683 18 0 1709912 0
    2057986 1709988 57905 4683 56 2 1709971 17
    119311997 118963999 4028500 325710 16 0 118964000 −1

    \({J}\) \({s}\) \({μ_7}\) \({a_1}\) \({ω_5}\) \({m_0}\) \({d_2}\) \({d_0}\)
    347261 −737 −25 −1 126 6 −737 0
    347614 −384 −13 0 119 6 −384 0
    347998 0 0 1 131 6 0 0
    348353 355 12 2 124 6 355 0
    2000087 1652089 55944 4524 162 8 1652060 29
    2001327 1653329 55987 4528 39 2 1653329 0
    2057702 1709704 57896 4682 120 6 1709704 0
    2057773 1709775 57898 4682 158 8 1709764 11
    2057909 1709911 57902 4682 234 12 1709883 28
    2057910 1709912 57903 4683 18 0 1709912 0
    2057986 1709988 57905 4683 56 2 1709971 17
    119311997 118963999 4028499 325709 232 12 118963971 28

  3. Berekening 1 levert het kalenderjaar \( a \) uit het rekenjaar \( a_1 \) en rekenmaand \( m_0 \). Rekenmaanden 0 t/m 5 van rekenjaar \( a_1 \) horen bij kalenderjaar \( a = a_1 − 1 \), en rekenmaanden 6 t/m 12 horen bij kalenderjaar \( a = a_1 \). Dat krijgen we voor elkaar met

    \begin{equation} a = a_1 + \dfloorratio{m_0 − 6}{7} \end{equation}

    \({m_0}\) \({\D a}\)
    0 −1
    1 −1
    2 −1
    3 −1
    4 −1
    5 −1
    6 0
    7 0
    8 0
    9 0
    10 0
    11 0
    12 0

    Voor \( J = 2 057 773 \) hadden we \( a_1 = 4682 \) en \( m_0 = 8 \) dus

    \[ a = a_1 + \dfloorratio{m_0 − 6}{7} = 4682 + \dfloorratio{8 − 6}{7} = 4682 + \dfloorratio{2}{7} = 4682 \]

    Voor alle voorbeeld-CJDNs vinden we

    \({J}\) \({a_1}\) \({m_0}\) \({d_0}\) \({a}\) \({m}\) \({d}\)
    347261 −1 6 0 −1 7 1
    347614 0 6 0 0 7 1
    347998 1 6 0 1 7 1
    348353 2 6 0 2 7 1
    2000087 4524 8 29 4524 9 30
    2001327 4528 2 0 4527 3 1
    2057702 4682 6 0 4682 7 1
    2057773 4682 8 11 4682 9 12
    2057909 4682 12 28 4682 13 29
    2057910 4683 0 0 4682 1 1
    2057986 4683 2 17 4682 3 18
    119311997 325709 12 28 325709 13 29

  4. En dan tellen we 1 bij de rekenmaand en rekendag op om de kalendermaand en kalenderdag te vinden.

    \begin{align} m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

    Voor \( J = 2 057 773 \) hadden we \( m_0 = 8 \) en \( d_0 = 11 \) dus

    \begin{align*} m \| = m_0 + 1 = 8 + 1 = 9 \\ d \| = d_0 + 1 = 11 + 1 = 12 \end{align*}

    dus \( J = 2 057 773 \) komt overeen met dag 12 van maand 9 van jaar 4682.

    Zie voor alle voorbeeld-CJDNs de tabel in het vorige voorbeeld.

Samenvattend:

\begin{align} s \| = J − 347 998 \\ μ_2 \| = \range{\dfloorratio{25920 s + 13835}{765 433}}{25920} \\ \{ α_3, ω_3 \} \| = \Div(19 μ_2 + 366, 235) \\ μ_3 \| = \dfloorratio{ω_3}{19} \\ δ_{14} \| = s − d_2(α_3, μ_3) \end{align}

met \( d_2 \) berekend zoals beschreven in hoofdstuk 14.7.1. Een alternatief met groter bereik voor \( μ_2 \):

\begin{align} \{ ω_2, δ_1 \} \| = \Div(s, 1447) \\ μ_2 \| = 49 ω_2 + \dfloorratio{23 ω_2 + 25920 δ_1 + 13835}{765 433} \end{align}

Als \( 0 \le δ_{14} \le 28 \) dan

\begin{equation} \{ a_1, m_0, d_0 \} = \{ α_3, μ_3, δ_{14} \} \end{equation}

Anders, als \( δ_{14} = 29 \) dan

\begin{align} μ_5 \| = μ_2 + 1 \\ \{ α_4, ω_4 \} \| = \Div(19 μ_5 + 366, 235) \\ μ_6 \| = \dfloorratio{ω_4}{19} \\ δ_{15} \| = s − d_2(α_4, μ_6) \\ δ_{15} \lt 0 \| ⇒ \{ a_1, m_0, d_0 \} = \{ α_3, μ_3, δ_{14} \} \\ δ_{15} \ge 0 \| ⇒ \{ a_1, m_0, d_0 \} = \{ α_4, μ_6, δ_{15} \} \end{align}

Anders is \( δ_{14} \lt 0 \), en dan

\begin{align} μ_7 \| = μ_2 − 1 \\ \{ a_1, ω_5 \} \| = \Div(19 μ_7 + 366, 235) \\ m_0 \| = \dfloorratio{ω_5}{19} \\ d_0 \| = s − d_2(a_1, m_0) \end{align}

Als we eenmaal \( \{ a_1, m_0, d_0 \} \) gevonden hebben dan volgt nog:

\begin{align} a \| = a_1 + \dfloorratio{m_0 − 6}{7} \\ m \| = m_0 + 1 \\ d \| = d_0 + 1 \end{align}

14.8. Een maankalender met veel vaste maandlengtes

Als de verdeling van dagen over maanden onafhankelijk is van de verdeling van maanden over jaren, dan zal een bepaalde maand van het jaar niet in elk jaar dezelfde lengte hebben. Bijvoorbeeld, de eerste maand van jaar 1 van de Babylonische kalender heeft 29 dagen, maar de eerste maand van jaar 2 heeft 30 dagen. Het zou voor het hoofdrekenen met de kalender wel handig zijn als de meeste maanden elk jaar dezelfde lengte hadden. Kunnen we een zongebonden maankalender maken die dat heeft?

Het is met de gegevens van de cyclus van Meton niet mogelijk om een gegeven maand even lang te laten zijn in elk jaar waarin hij zit. Als we een vast aantal van de eerste 12 kalendermaanden in elk jaar lang maken (met 30 dagen), dan is het aantal daarmee overeenkomende lange maanden in de cyclus van 19 jaar gelijk aan een veelvoud van 19. Als de 13e maand altijd kort is dan zou het totale aantal lange maanden gelijk zijn aan een veelvoud van 19, en als de 13e maand altijd lang is dan zou het totale aantal lange maanden gelijk zijn aan 7 (het aantal jaren met 13 maanden in de cyclus van 19 jaar) plus een veelvoud van 19, maar de cyclus van Meton vereist 125 = 6×19 + 11 lange maanden en dat past bij geen van de twee mogelijkheden, dus kan de lengte van één of meer maanden niet in elk jaar hetzelfde zijn.

We willen het kleinste aantal verschillende maandlengtes gebruiken, dus alleen maanden van 29 of 30 dagen.

Als we de voorgaande kalenderrekentechnieken willen gebruiken dan is het het handigste als we voor het rekenen tussen maanden en dagen maar één rechte lijn nodig hebben, maar dan is het nodig dat zowel lange jaren als korte jaren dezelfde rechte lijn gebruiken en dus dezelfde maandlengtes hebben, afgezien van verkorting helemaal aan het eind door de jaarlengte.

Er moeten 125 lange maanden (van 30 dagen) zijn en 110 korte maanden (van 29 dagen) in elke periode van 19 jaar = 235 maanden. Als \( n \) van de eerste 11 maanden van elk jaar lang zijn dan levert dat \( 19n \) lange maanden op in de periode van 19 jaar, en dan moeten \( 125 − 19n \) van de 26 12e en 13e maanden lang zijn, dus \( 125 − 19n \) moet tussen 0 en 26 (inclusief) zijn, en dat betekent dat \( n = 6 \) moet zijn, want \( n = 5 \) levert 30 (te groot) en \( n = 7 \) levert −8 (te klein).

\( n = 6 \) levert 11 lange 12e en 13e maanden op. Die 11 lange maanden kunnen niet allemaal 13e maand zijn want er zijn maar 7 13e maanden, dus moeten sommige 12e maanden lang zijn.

Een lange maand mag kort worden als die aan het eind van het jaar zit, maar niet als er nog een maand volgt in hetzelfde jaar, dus als sommige 12e maanden lang zijn dan mogen er alleen korte 12e maanden zijn als die de laatste maand van het jaar zijn, dus als het jaar 12 maanden heeft. Dus we kunnen de volgende soorten jaren hebben:

maand 12 maand 13 jaarlengte
kort geen 354
lang geen 355
lang kort 384
lang lang 385

Er moeten 7 lange jaren (van 13 maanden) en 12 korte jaren (van 12 maanden) zijn in elke 19 jaar. Als die lange en korte jaren alletwee zo kort mogelijk zijn (dus 354 en 384 dagen) dan levert dat 7×384 + 12×354 = 6936 dagen op, dus dan moeten er nog 4 dagen bij. Dat betekent dat 4 jaren één dag langer moeten worden, dus 355 of 385 dagen. Dat betekent dat er tenminste drie verschillende jaarlengtes nodig zijn, en dat kan niet met een kalenderniveau van type 2 of 3, dus hebben we een kalenderniveau van type 4 nodig.

We koppelen de lunisolaire kalender aan de de moderne (Gregoriaanse) kalender aan de hand van de volgende overwegingen:

  1. Het kalenderjaar in de lunisolaire kalender moet ongeveer hetzelfde zijn als het kalenderjaar in de moderne (Gregoriaanse) kalender.

  2. Aangezien het hier om een lunisolaire kalender gaat is het de bedoeling dat elke maand begint bij nieuwe maan, dus we willen de kalenders koppelen in een jaar waarop er een nieuwe maan is/was aan het begin van dat jaar in de moderne kalender.

  3. De Cyclus van Meton omvat 19 jaar, en we kunnen kiezen welk van die 19 jaren we gebruiken om de maankalender te koppelen aan de moderne kalender. Daarmee hebben we ongeveer een maand speling in waar het begin van het maanjaar gemiddeld ligt ten opzichte van het begin van het jaar in de moderne kalender. We kiezen de koppeling zodat het begin van het maanjaar gemiddeld zo dicht mogelijk ligt bij het begin van de winter op het noordelijk halfrond (21 december).

  4. De Cyclus van Meton volgt de maanstanden niet precies, dus in de loop van de tijd zal onze lunisolaire kalender onvermijdelijk steeds meer uit de pas gaan lopen met de maanstanden, dus het jaar waarin we de koppeling maken moet niet ver van nu zijn.

Ik heb gezocht naar het moderne kalenderjaar tussen 1900 en 2100 waarin de maanstand van de middelbare Maan aan het begin van het jaar (0 uur UTC aan het begin van 1 januari) zo dicht mogelijk bij nieuwe maan was, en dat blijkt het jaar 2033 te zijn. Dus we stellen 1 januari 2033 gelijk aan de eerste dag van de eerste maand van het jaar 2033 in de lunisolaire kalender.

14.8.1. Van maankalender naar CJDN

De berekeningen zijn schematisch:

  a ━━━━━━━━━━━━━━━━━━━━┓
  m ─(−1)─ m₀ ──┐       ┃
  d ─(−1)─ d₀ ─(1)─ d₁─(2)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({r_i}\) \({h_i}\) \({t_i}\) \({g_i}\) \({γ_i}\) \({p}\)
1 384 13 29 7 7 29.538462
2.1 6940 19 354 30 7 2 19 1 365.26316
2.2 1 4 18 19 1

  1. Eerst trekken we 1 af van het maandnummer \( m \) en het dagnummer \( d \) zodat ze beginnen met 0 in plaats van 1.

    \begin{align*} m_0 \| = m − 1 \\ d_0 \| = d − 1 \end{align*}

    Als voorbeeld rekenen we de CJDN uit van de eerste dag van jaar 2033 in de maankalender, dus \( \{ a, m, d \} = \{ 2033, 1, 1 \} \). We vinden

    \begin{align*} m_0 \| = m − 1 = 1 − 1 = 0 \\ d_0 \| = d − 1 = 1 − 1 = 0 \end{align*}

  2. Berekening 1 levert dagnummer \( d_1 \) sinds de eerste dag van het jaar uit het rekenmaandnummer \( m_0 \) en het rekendagnummer \( d_0 \):

    \begin{align} d_1 \| = \dfloorratio{384 m_0 + 7}{13} + d_0 \\ \| = \dfloorratio{384 (m − 1) + 7}{13} + d − 1 \notag \\ \| = \dfloorratio{384 m − 390}{13} + d \end{align}

    Dit levert op dat maand 12 lang is (met 30 dagen) en maand 13 kort (met 29 dagen) en dat 6 van de eerste 11 maanden altijd lange maanden zijn.

    Bijvoorbeeld, als \( m_0 = 4 \) en \( d_0 = 0 \), dan vinden we

    \[ d_1 = \dfloorratio{384×4 + 7}{13} + 0 = \dfloorratio{1543}{13} = 118 \]

    dus de eerste dag van de vijfde maand (\( m_0 = 4 \)) is de 118e dag sinds de eerste dag van het jaar.

    Voor de eerste dag van de eerste 14 maanden vinden we de volgende resultaten (met \( L \) de lengte van de maand):

    \({m}\) \({m_0}\) \({d_1(d_0=0)}\) \({L}\)
    1 0 0 30
    2 1 30 29
    3 2 59 30
    4 3 89 29
    5 4 118 30
    6 5 148 29
    7 6 177 30
    8 7 207 29
    9 8 236 30
    10 9 266 29
    11 10 295 30
    12 11 325 30
    13 12 355 29
    14 13 384

  3. Berekening 2 geeft het lopende dagnummer \( s \) uit het jaar \( a \) en het dagnummer \( d_1 \) sinds de eerste dag van het jaar.

    \begin{equation} s = 354 a + 30\dfloorratio{7 a + 2}{19} + \dfloorratio{4 a + 18}{19} + d_1 \end{equation}

    De volgende tabel toont de lopende dagnummers voor 20 jaren, en de lengte \( L \) voor de eerste 19 daarvan. Dat patroon van jaarlengtes herhaalt zich elke 19 jaar. Er zijn 8 jaren van 354 dagen lang, 4 jaren van 355 dagen lang, en 7 jaren van 384 dagen lang, samen 6940 dagen in 19 jaar.

    \({a}\) \({s(d_1=0)}\) \({L}\)
    0 0 355
    1 355 354
    2 709 384
    3 1093 354
    4 1447 355
    5 1802 384
    6 2186 354
    7 2540 384
    8 2924 354
    9 3278 355
    10 3633 384
    11 4017 354
    12 4371 354
    13 4725 384
    14 5109 355
    15 5464 384
    16 5848 354
    17 6202 354
    18 6556 384
    19 6940

    In ons voorbeeld is \( a = 2033, d_1 = 0 \) dus

    \begin{align*} s \| = 354 a + 30\dfloorratio{7 a + 2}{19} + \dfloorratio{4 a + 18}{19} + d_1 \\ \| = 354×2033 + 30\dfloorratio{7×2033 + 2}{19} + \dfloorratio{4×2033 + 18}{19} + 0 \\ \| = 719 682 + 30\dfloorratio{14233}{19} + \dfloorratio{8150}{19} \\ \| = 719 682 + 30×749 + 428 = 742 580 \end{align*}

  4. En dan tellen we er nog de CJDN \( J_0 \) van dag 1 van maand 1 van jaar 0 bij op. We koppelen de twee kalenders op de eerste dag van jaar 2033. In de moderne kalender komt die dag overeen met CJDN 2 463 599. In de maankalender vonden we hierboven dat voor de eerste dag van jaar 2033 geldt \( s = 742 580 \). Daaruit volgt dat \( J_0 = 2 463 599 − 742 580 = 1 721 019 \).

    \begin{equation} J = s + J_0 = s + 1 721 019 \end{equation}

    Voor ons voorbeeld geldt

    \[ J = s + J_0 = 742 580 + 1 721 019 = 2 463 599 \]

    dus de CJDN die hoort bij de eerste dag van jaar 2033 in deze maankalender is 2 463 599, en dat komt overeen met de eerste dag van jaar 2033 in de moderne (Gregoriaanse) kalender.

Samenvattend:

\begin{align} d_1 \| = \dfloorratio{384 m − 390}{13} + d \\ s \| = 354 a + 30\dfloorratio{7 a + 2}{19} + \dfloorratio{4 a + 18}{19} + d_1 \\ J \| = s + 1 721 019 \end{align}

Voor ons voorbeeld (met \( a = 2033, m = 1, d = 1 \)) vinden we

\begin{align*} d_1 \| = \dfloorratio{384 m − 390}{13} + d = \dfloorratio{384×1 − 390}{13} \\ \| = \dfloorratio{−6}{13} + 1 = −1 + 1 = 0 \\ s \| = 354 a + 30\dfloorratio{7 a + 2}{19} + \dfloorratio{4 a + 18}{19} + d_1 \\ \| = 354×2033 + 30\dfloorratio{7×2033 + 2}{19} + \dfloorratio{4×2033 + 18}{19} + 0 \\ \| = 719 682 + 30\dfloorratio{14233}{19} + \dfloorratio{8150}{19} \\ \| = 719 682 + 30×749 + 428 = 742 580 \\ J \| = s + 1 721 019 = 742 580 + 1 721 019 = 2 463 599 \end{align*}

dus dag 1 van maand 1 van jaar 2033 in de maankalender komt overeen met CJDN 2 463 599, die overeenkomt met 1 januari 2033 in de moderne (Gregoriaanse) kalender.

14.8.2. Van CJDN naar maankalender

De berekeningen zijn schematisch:

  a ━━━━━━━━━━━━━━━━━━━━┓
  m ─(−1)─ m₀ ──┐       ┃
  d ─(−1)─ d₀ ─(1)─ d₁─(2)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({r_i}\) \({h_i}\) \({t_i}\) \({g_i}\) \({γ_i}\) \({p}\)
1 384 13 29 7 7 29.538462
2.2 6940 19 354 30 7 2 19 1 365.26316
2.3 1 4 18 19 1

De berekeningen zijn als volgt:

  1. Eerst trekken we de CJDN \( J_0 \) van dag 1 van maand 1 van jaar 0 af van de CJDN van de gewenste datum om het lopende dagnummer \( s \) te vinden:

    \begin{equation} s = J − J_0 = J − 1 721 019 \end{equation}

    Als voorbeeld rekenen we de datum uit die overeenkomt met CJDN 2 459 695. Dan

    \[ s = J − J_0 = 2 459 695 − 1 721 019 = 738 676 \]

  2. Berekening 2 haalt uit het lopende dagnummer \( s \) het jaarnummer \( a \) en het rekendagnummer \( d_1 \) sinds de eerste dag van het jaar:

    \begin{align} g s \| + g\dparen{\sum_{r_i \gt 0} r_i} − \dparen{\sum_i γ_ir_it_i} − 1 \notag \\ \| = 19 s + 19×31 − (1×30×2 + 1×1×18) = 19 s + 511 \\ α_2 \| = \range{\dfloorratio{19 s + 511}{6940}}{19} \\ δ_2 \| = s − q α_2 − \dparen{\sum_i r_i \dfloorratio{h_i α_2 + t_i}{g_i}} \notag \\ \| = s − 354 α_2 − 30 \dfloorratio{7 α_2 + 2}{19} − \dfloorratio{4 α_2 + 18}{19} \\ a \| = α_2 + \dfloorratio{δ_2}{q + \sum_{r_i \gt 0} r_1} = α_2 + \dfloorratio{δ_2}{385} \notag \\ d_1 \| = s − 354 a − 30 \dfloorratio{7 a + 2}{19} − \dfloorratio{4 a + 18}{19} \end{align}

    Voor de \( \range{•}{19} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen heeft die formule een bereik van ongeveer 619 duizend jaar. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{eqnarray} \{ ω_1, δ_1 \} \| = \| \Div(s, 6940) \\ α_1 \| = \| \dfloorratio{19 δ_1 + 511}{6940} \\ α_2 \| = \| 19 ω_1 + α_1 \end{eqnarray}

    Hier zijn wat voorbeelden van de originele berekening en de omweg.

    \({s}\) \({ω_1}\) \({δ_1}\) \({α_1}\) \({α_2}\) \({19 s + 511}\)
    −1 −1 6939 19 0 492
    0 0 0 0 0 511
    1 0 1 0 0 530
    738676 106 3036 8 2022 14035355
    201301639 29005 6939 19 551114 3824731652

    Voor \( s = 201 301 639 \) geeft de orignele berekening het tussenresultaat \( 19×201 301 639 + 511 = 3 824 731 652 \) dat te groot is om in een 32-bitsgetal (met teken) te passen, maar met de omweg is het eindresultaat 551 114 groter dan elk tussenresultaat, en ruim klein genoeg om in een 32-bitsgetal te passen.

    Voor ons voorbeeld vinden we

    \begin{align*} ω_2 \| = \range{19 s + 511}{19} = 19×738 676 + 511 = 14 035 355 \\ α_2 \| = \dfloorratio{ω_2}{6940} = \dfloorratio{14 035 355}{6940} = 2022 \end{align*}

    of

    \begin{align*} \{ ω_1, δ_1 \} \| = \Div(s, 6940) = \Div(738 676, 6940) = \{ 106, 3036 \} \\ α_2 \| = 19 ω_1 + \dfloorratio{19 δ_1 + 511}{6940} = 19×106 + \dfloorratio{19×3036 + 511}{6940} \\ \| = 2014 + \dfloorratio{58195}{6940} = 2014 + 8 = 2022 \end{align*}

    en dan

    \begin{align*} δ_2 \| = s − 354 α_2 − 30 \dfloorratio{7 α_2 + 2}{19} − \dfloorratio{4 α_2 + 18}{19} \\ \| = 738 676 − 354×2022 − 30 \dfloorratio{7×2022 + 2}{19} − \dfloorratio{4×2022 + 18}{19} \\ \| = 738 676 − 715 788 − 30 \dfloorratio{14156}{19} − \dfloorratio{8106}{19} \\ \| = 22888 − 30×745 − 426 = 112 \\ a \| = α_2 + \dfloorratio{δ_2}{385} = 2022 + \dfloorratio{112}{385} = 2022 \\ d_1 \| = s − 354 a − 30 \dfloorratio{7 a + 2}{19} − \dfloorratio{4 a + 18}{19} = 112 \end{align*}

  3. Berekening 1 berekent uit het rekendagnummer \( d_1 \) sinds de eerste dag van het jaar het rekenmaandnummer \( m_0 \) en het rekendagnummer \( d_0 \) sinds de eerste dag van de maand.

    \begin{align} \{ m_0, ω_3 \} \| = \Div(gd_1 + g − t − 1, f) = \Div(13 d_1 + 13 − 7 − 1, 384) \notag \\ \| = \Div(13 d_1 + 5, 384) \\ d_0 \| = \dfloorratio{ω_3}{g} = \dfloorratio{ω_3}{13} \end{align}

    Voor ons voorbeeld vinden we

    \begin{align*} \{ m_0, ω_3 \} \| = \Div(13 d_1 + 5, 384) = \Div(13×112 + 5, 384) \\ \| = \Div(1461, 384) = \{ 3, 309 \} \\ d_0 \| = \dfloorratio{ω_3}{13} = \dfloorratio{309}{13} = 23 \end{align*}

  4. En dan tellen we 1 op bij de rekemaand \( m_0 \) en rekendag \( d_0 \) om de kalendermaand \( m \) en kalenderdag \( d \) te vinden.

    \begin{align} m \| = m_0 + 1 \\ d \| = d_0 + 1 = \dfloorratio{ω_3}{13} + 1 \end{align}

    We kunnen \( m \) ietsje sneller vinden via

    \begin{equation} \{ m, ω_3 \} = \{ m_0 + 1, ω_3 \} = \Div(13 d_1 + 5 + 384, 384) = \Div(13 d_1 + 389, 384) \end{equation}

    Voor ons voorbeeld vinden we

    \begin{align} m \| = m_0 + 1 = 3 + 1 = 4 \\ d \| = d_0 + 1 = 23 + 1 = 24 \end{align}

    dus de gezochte datum is dag 24 van maand 4 van jaar 2022.

Samenvattend:

\begin{align} s \| = J − 1 721 019 \\ α_2 \| = \range{\dfloorratio{19 s + 511}{6940}}{19} \\ δ_2 \| = s − 354 α_2 − 30 \dfloorratio{7 α_2 + 2}{19} − \dfloorratio{4 α_2 + 18}{19} \\ a \| = α_2 + \dfloorratio{δ_2}{385} \\ d_1 \| = s − 354 a − 30 \dfloorratio{7 a + 2}{19} − \dfloorratio{4 a + 18}{19} \\ \{ m, ω_3 \} \| = \Div(13 d_1 + 389, 384) \\ d \| = \dfloorratio{ω_3}{13} + 1 \end{align}

Alternatief met groter bereik voor de berekening van \( α_2 \):

\begin{align} \{ ω_1, δ_1 \} \| = \Div(s, 6940) \\ α_1 \| = \dfloorratio{19 δ_1 + 511}{6940} \\ α_2 \| = 19 ω_1 + α_1 \end{align}

Voor ons voorbeeld vinden we

\begin{align*} s \| = J − 1 721 019 = 2 459 695 − 1 721 019 = 738 676 \\ α_2 \| = \range{\dfloorratio{19s + 511}{6940}}{19} = \dfloorratio{19×738 676 + 511}{6940} = \dfloorratio{14 035 355}{6940} = 2022 \\ δ_2 \| = s − 354 α_2 − 30 \dfloorratio{7 α_2 + 2}{19} − \dfloorratio{4 α_2 + 18}{19} \\ \| = 738 676 − 354×2022 − 30 \dfloorratio{7×2022 + 2}{19} − \dfloorratio{4×2022 + 18}{19} \\ \| = 738 676 − 715 788 − 30 \dfloorratio{14156}{19} − \dfloorratio{8106}{19} \\ \| = 22888 − 30×745 − 426 = 112 \\ a \| = α_2 + \dfloorratio{δ_2}{385} = 2022 + \dfloorratio{112}{385} = 2022 \\ d_1 \| = s − 354 a − 30 \dfloorratio{7 a + 2}{19} − \dfloorratio{4 a + 18}{19} = 112 \\ \{ m, ω_3 \} \| = \Div(13 d_1 + 389, 384) = \Div(13×112 + 389, 384) = \Div(1845, 384) = \{ 4, 309 \} \\ d \| = \dfloorratio{ω_3}{13} + 1 = \dfloorratio{309}{13} + 1 = 23 + 1 = 24 \end{align*}

dus de gezochte datum is dag 24 van maand 4 van jaar 2022, net als hierboven.

Hier zijn voor enkele jaren de data (jaar-maand-dag) in de moderne (Gregoriaanse) kalender die overeenkomen met nieuwjaar in de maankalender.

\({a}\) D
2019 2018-12-08 8
2020 2019-12-27 27
2021 2020-12-15 15
2022 2022-01-03 34
2023 2022-12-23 23
2024 2023-12-13 13
2025 2024-12-31 31
2026 2025-12-20 20
2027 2026-12-09 9
2028 2027-12-28 28
2029 2028-12-17 17
2030 2030-01-05 5
2031 2030-12-25 25
2032 2031-12-14 14
2033 2033-01-01 32
2034 2033-12-22 22
2035 2034-12-11 11
2036 2035-12-30 30
2037 2036-12-18 18
2038 2037-12-08 8

14.9. De Islamitische kalender

De religieuze Islamitische kalender hangt af van waarnemingen en is daarom niet te vangen in formules. De administratieve kalender heeft vaste regels en is wel te beschrijven door formules. In de administratieve kalender hebben de oneven maanden 30 dagen en de even maanden 29, behalve dat de laatste maand soms 29 en soms 30 dagen heeft. Daarmee heeft een jaar 354 of 355 dagen. Van elke 30 jaren zijn er 11 lang (met 355 dagen) en de rest kort (met 354 dagen). Een complete cyclus heeft daarmee 11×355 + 19×354 = 10631 dagen.

Rob van Gent (op //www.staff.science.uu.nl/~gent0113/islam/islam_tabcal.htm) noemt vier verschillende manieren die gebruikt worden om de 11 schrikkeljaren over elke cyclus van 30 jaren te verdelen. Tabel 3 meldt die manieren en hun schrikkeljaarverdeling en geeft de bijbehorende \( r \) (zoals in formule \eqref{eq:Nisl}).

Tabel 3: Schrikkeljaren in Islamitische Kalender

Type Schrikkeljaren \({r}\) Oorsprong/Gebruik
I 2 5 7 10 13 15 18 21 24 26 29 15 Kūshyār ibn Labbān, Ulugh Beg
II 2 5 7 10 13 16 18 21 24 26 29 14 al-Fazārī, al-Khwārizmī, al-Battānī, Toledo- en Alfonsijnse Tafels
III 2 5 8 10 13 16 19 21 24 27 29 11 Fātimiden-, Misri- of Bohrakalender
IV 2 5 8 11 13 16 19 21 24 27 30 9 Habash al-Hāsib, al-Bīrūnī, Elias van Nisibis

Het aantal lange jaren tussen het begin van jaar 0 en het begin van jaar \( a \) is

\begin{equation} N = \dfloorratio{11a + r}{30} \label{eq:Nisl} \end{equation}

Er zijn van elk type nog twee varianten: de astronomische telling "a" volgens welke de eerste dag van de kalender (1 Muharram van jaar 1) begon bij zonsondergang van woensdag 14 juli 622 (ongeveer CJD 1 948 438.75), en de burgerlijke telling "c" volgens welke de kalender begon bij zonsondergang van donderdag 15 juli 622 (ongeveer CJD 1 948 439.75). De meestgebruikte telling is IIc.

Voor het onderste kalenderniveau zoeken we een rechte lijn die afwisselend 30 en 29 dagen geeft behalve dat de 12e maand 30 dagen heeft, en voor korte jaren (met 354 dagen) snijden we de laatste dag er vanaf. In een kalender gebaseerd op een rechte lijn voor 355/12 wordt de afwisseling van 29 en 30 dagen al verstoord na 5 of 7 maanden, maar wij hebben een afwisseling van 29 en 30 dagen nodig die onafgebroken is voor tenminste 11 maanden. Daarvoor blijkt \( p \) hooguit 29 + 6/11 te moeten zijn, en 355/12 = 29 + 7/12 is groter dan dat. We gebruiken \( p = 29 \frac{6}{11} = 325/11 \).

In de Islamitische kalender lopen kalenderdagen van zonsondergang tot zonsondergang. De CJDN-kalenderdagen lopen van middernacht tot middernacht. Voor de berekeningen maken we de koppeling midden op de dag. De CJDN die volgens onderstaande formules bij een bepaalde Islamitische kalenderdatum hoort hoort daarbij tussen middernacht en zonsondergang. Tussen zonsondergang en middernacht is volgens de Islamitische tijdrekening de volgende dag al begonnen, maar volgens de CJDN nog niet.

Bijvoorbeeld, CJDN 2 455 774 komt overeen met Gregoriaanse datum 31 juli 2011 (31-07-2011) en loopt van middernacht tot middernacht lokale tijd. Onderstaande formules (voor type IIc) zeggen dat CJDN 2 455 774 overeenkomt met Islamitische datum 29 Sha`ban 1432 (29-08-1432) ― dat betekent dat van middernacht tot zonsondergang die twee data met elkaar kloppen. Van zonsondergang tot middernacht is het in de Gregoriaanse kalender nog steeds 31 juli en in CJDN nog steeds 2 455 774 maar in de Islamitische kalender al de volgende dag (dus 1 Ramaḍān).

14.9.1. Van Islamitische datum naar CJDN

De berekeningen zijn schematisch als volgt:

  a ━(−1)━ a₀ ━━━━━━━━━━┓
  m ─(−1)─ m₀ ──┐       ┃
  d ─(−1)─ d₀ ─(1)─ d₁─(2)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 325 11 29 6 5 29.545455
2 10631 30 354 11 \({r}\) 354.36667

  1. Eerst trekken we 1 af van het jaartal, maandnummer en dagnummer zodat ze bij 0 beginnen in plaats van bij 1.

    \begin{eqnarray} a_0 \| = \| a − 1 \\ m_0 \| = \| m − 1 \\ d_0 \| = \| d − 1 \end{eqnarray}

  2. Berekening 1 berekent uit het rekendagnummer \( d_0 \) en het rekenmaandnummer \( m_0 \) het dagnummer \( d_1 \) sinds de eerste dag van het jaar.

    \begin{align} d_1 \| = \dfloorratio{325 m_0 + 5}{11} + d_0 \\ \| = \dfloorratio{325 (m − 1) + 5}{11} + d − 1 \notag \\ \| = \dfloorratio{325 m − 320}{11} + d − 1 \notag \\ \| = \dfloorratio{325 m − 331}{11} + d \end{align}

  3. Berekening 2 berekent uit het rekenjaartal \( a_0 \) en het dagnummer \( d_1 \) sinds de eerste dag van het jaar het lopende dagnummer \( s \) sinds het begin van rekenjaar 0 uit.

    \begin{align} s \| = \range{\dfloorratio{10631 a_0 + r}{30}}{30} + d_1 \\ \| = \range{\dfloorratio{10631 (a − 1) + r}{30}}{30} + d_1 \notag \\ \| = \range{\dfloorratio{10631 a + r − 10631}{30}}{30} + d_1 \\ \| = 354 a_0 + \dfloorratio{11 a_0 + r}{30} + d_1 \\ \| = 354 (a − 1) + \dfloorratio{11 (a − 1) + r}{30} + d_1 \notag \\ \| = 354 a − 354 + \dfloorratio{11 a + r − 11}{30} + d_1 \notag \\ \| = 354 a + \dfloorratio{11 a + r − 3905}{30} + d_1 \end{align}

    Voor de \( \range{•}{30} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen heeft die formule een bereik van ongeveer 404 duizend islamitische kalenderjaren. De daaropvolgende formule heeft het grootst mogelijke bereik, wat voor 32-bitsgetallen gelijk is aan ongeveer 12,1 miljoen islamitische kalenderjaren.

  4. En dan tellen we er de CJDN bij op van het begin van rekenjaar 0.

    \begin{equation} J = s + J_0 \end{equation}

Samenvattend:

\begin{align} d_1 \| = \dfloorratio{325 m − 331}{11} + d \\ s \| = \range{\dfloorratio{10631 a + r − 10631}{30}}{30} + d_1 \\ \| = 354 a + \dfloorratio{11 a + r − 10631}{30} + d_1 \\ J \| = s + J_0 \end{align}

Bijvoorbeeld, welke CJDN komt overeen met de Islamitisch datum 29 Sha`ban 1432 volgens kalendertype IIc? Dan is \( a = 1432 \), \( m = 8 \), \( d = 29 \), \( r = 14 \), \( J_0 = 1 948 440 \) en dan

\begin{align*} d_1 \| = \dfloorratio{325 m − 331}{11} + d = \dfloorratio{325×8 − 331}{11} + 29 \\ \| = \dfloorratio{2269}{11} + 29 = 206 + 29 = 235 \\ s \| = \range{\dfloorratio{10631 a + r − 10631}{30}}{30} + d_1 \\ \| = \dfloorratio{10631×1432 + 14 − 10631}{30} + 235 \\ \| = \dfloorratio{15 212 975}{30} + 235 = 507 099 + 235 = 507 334 \\ \| = 354 a + \dfloorratio{11 a + r − 10631}{30} + d_1 \\ \| = 354×1432 + \dfloorratio{11×1432 + 14 − 10631}{30} + 235 \\ \| = 506 928 + \dfloorratio{5135}{30} + 235 = 506 928 + 171 + 235 = 507 334 \\ J \| = s + J_0 = 507 334 + 1 948 440 = 2 455 774 \end{align*}

14.9.2. Van CJDN naar Islamitische datum

Nu gaan we in de omgekeerde richting. De berekeningen zijn schematisch als volgt:

  a ━(−1)━ a₀ ━━━━━━━━━━┓
  m ─(−1)─ m₀ ──┐       ┃
  d ─(−1)─ d₀ ─(1)─ d₁─(2)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 325 11 29 6 5 29.545455
2 10631 30 354 11 \({r}\) 354.36667

  1. Eerst trekken we de CJDN van het begin van rekenjaar 0 af van CJDN \( J \).

    \begin{equation} s = J − J_0 \end{equation}

  2. Berekening 2 haalt het rekenjaar \( a_0 \) en het dagnummer \( d_1 \) sinds het begin van het rekenjaar uit het lopende dagnummer \( s \).

    \begin{eqnarray} \{ a_0, ω_2 \} \| = \| \range{\Div(30 s + 29 − r, 10631)}{30} \\ d_1 \| = \| \dfloorratio{ω_2}{30} \end{eqnarray}

    Voor de \( \range{•}{30} \) zie hoofdstuk 13.4. Voor 32-bitsgetallen heeft die formule een bereik van ongeveer 404 duizend islamitische kalenderjaren. Als je het maximale bereik wilt hebben dan kun je het volgende alternatief gebruiken:

    \begin{eqnarray} \{ ω_1, δ_1 \} \| = \| \Div(s, 10631) \\ \{ α_1, ω_2 \} \| = \| \Div(30 δ_1 + 29 − r, 10631) \\ a_0 \| = \| 30 ω_1 + α_1 \end{eqnarray}

    Hier zijn wat voorbeelden van de originele berekening en de omweg, voor \( r = 14 \):

    \({s}\) \({ω_1}\) \({δ_1}\) \({α_1}\) \({ω_2}\) \({a_0}\) \({30 s + 15}\)
    −1 −1 10630 29 10616 −1 −15
    0 0 0 0 15 0 15
    1 0 1 0 45 0 45
    507334 47 7677 21 7074 1431 15220035
    177006149 16649 10630 29 10616 499499 5310184485

    Voor \( s = 177 006 149 \) geeft de orignele berekening het tussenresultaat \( 30×177 006 149 + 15 = 5 310 184 485 \) dat veel te groot is om in een 32-bitsgetal (met teken) te passen, maar met de omweg is het eindresultaat 499 499 groter dan elk tussenresultaat, en ruim klein genoeg om in een 32-bitsgetal te passen.

  3. Berekening 1 haalt het rekenmaandnummer \( m_0 \) en het rekendagnummer \( d_0 \) uit het dagnummer \( d_1 \) sinds het begin van het rekenjaar.

    \begin{eqnarray} \{ m_0, ω_3 \} \| = \| \Div(11 d_1 + 5, 325) \\ d_0 \| = \| \dfloorratio{ω_3}{11} \end{eqnarray}

  4. En dan tellen we 1 op bij het rekenjaarnummer, rekenmaandnummer, en rekendagnummer.

    \begin{eqnarray} a \| = \| a_0 + 1 \\ m \| = \| m_0 + 1 \\ d \| = \| d_0 + 1 = \dfloorratio{ω_3}{11} + 1 \end{eqnarray}

    We kunnen \( m \) ietsje sneller vinden via

    \begin{equation} \{ m, ω_3 \} = \{ m_0 + 1, ω_3 \} = \Div(11 d_1 + 5 + 325, 325) = \Div(11 d_1 + 330, 325) \end{equation}

Samengevat:

\begin{align} s \| = J − J_0 \\ \{ a_0, ω_2 \} \| = \range{\Div(30 s + 29 − r, 10631)}{30} \\ d_1 \| = \dfloorratio{ω_2}{30} \\ a \| = a_0 + 1 \\ \{ m, ω_3 \} \| = \Div(11 d_1 + 330, 325) \\ d \| = \dfloorratio{ω_3}{11} + 1 \end{align}

Alternatief met groter bereik voor de berekening van \( a_0 \) en \( ω_2 \):

\begin{align} \{ ω_1, δ_1 \} \| = \Div(s, 10631) \\ \{ α_1, ω_2 \} \| = \Div(30 δ_1 + 29 − r, 10631) \\ a_0 \| = 30 ω_1 + α_1 \end{align}

Bijvoorbeeld, welke Islamitische datum (in kalendertype IIc) komt overeen me CJDN 2 455 774? Dan is \( J = 2 455 774 \), \( r = 14 \), \( J_0 = 1 948 440 \), en dan

\begin{align*} s \| = 2 455 774 − 1 948 440 = 507 334 \\ \{ a_0, ω_2 \} \| = \Div(30×507 334 + 15, 10631) = \Div(15 220 035, 10631) = \{1431, 7074\} \\ d_1 \| = \dfloorratio{7074}{30} = 235 \\ \{ m_0, ω_3 \} \| = \Div(11×235 + 5, 325) = \Div(2590, 325) = \{7, 315\} \\ d_0 \| = \dfloorratio{315}{11} = 28 \\ a \| = 1431 + 1 = 1432 \\ m \| = 7 + 1 = 8 \\ d \| = 28 + 1 = 29 \end{align*}

ofwel 29 Sha`ban 1432.

14.10. De Mayakalender

De Maya uit Anahuac (Midden-Amerika) gebruikten drie verschillende kalenders, waarvan er twee (de Tzolkin en de Haab) periodiek waren met vrij korte perioden, en de derde (de Lange Telling) misschien ook wel als periodiek bedoeld was maar die zulke lange perioden heeft dat hij in de praktijk als doorlopend (in plaats van periodiek) kan worden beschouwd.

Verschillende gebieden in Midden-Amerika hadden iets verschillende versies van deze kalenders, met andere namen voor dagen en maanden, andere manieren om jaren aan te geven, en soms telde men dagen vanaf dag 0 in plaats van vanaf dag 1. Hieronder geven we de kalenders van de stad Tikal.

14.10.1. Tussen CJDN en Mayakalender

14.10.2. De Haab

De Haab heeft een dagnummer en een maand, maar geen jaarnummer. Er zijn 18 maanden van 20 dagen, plus een 19e maand van 5 dagen, en dat is samen 365 dagen, en dat noemen we het Haab-jaar. Er zijn geen schrikkeldagen. De maanden hebben een naam, en de dagen hebben een nummer dat begint bij 0.

Wij schrijven een datum in de Haab als \( \{ h_d, h_m \} \) waarin \( h_d \) het dagnummer is (van 0 tot 19) en \( h_m \) het maandnummer (van 1 tot 19).

Om een CJDN \( J \) om te rekenen naar een Haab-datum \( \{ h_d, h_m \} \) moeten we eerst \( H \) uitrekenen, het aantal dagen sinds het begin van het huidige Haab-jaar (met \( H = 0 \) voor de eerste dag van het Haab-jaar).

\begin{align} H \| = \dmodp{J + 65}{365} \\ h_m \| = \dfloorratio{H}{20} + 1 \\ h_d \| = \dmodp{H}{20} \end{align}

Een voorbeeld: Welke Haab-datum komt overeen met 15 december 1965 = CJDN 2 439 110? Dan is \( J = 2 439 110 \) en

\begin{align*} H \| = \dmodp{J + 65}{365} = \dmodp{2 439 175}{365} = 245 \\ h_m \| = \dfloorratio{245}{20} + 1 = 13 \\ h_d \| = \dmodp{245}{20} = 5 \end{align*}

dus die dag is 245 dagen sinds het begin van het huidige Haab-jaar en komt overeen met de 5e dag van de 13e maand, dus \( \{ 5. 13 \} \).

Om een Haab-datum \( \{ h_d, h_m \} \) om te rekenen naar een CJDN rekenen we eerst \( H \) uit

\begin{equation} H = h_d + 20×(h_m − 1) \end{equation}

We weten dan dat

\begin{equation} J ≡ H − 65 \pmod{365} \end{equation}

Omdat er geen jaarnummer in de Haab zit komt deze Haab-datum elke 365 dagen weer terug. We kunnen formule \eqref{eq:nearestle} gebruiken om de laatste \( J \) op of voor een bepaalde \( J_0 \) te vinden die overeenkomt met deze Haab-datum:

\begin{equation} J = J_0 − \dmodp{J_0 − H + 65}{365} \end{equation}

Welke CJDN komt overeen met Haab-datum \( \{ 5, 13 \} \)? Dan is \( h_d = 5 \), \( h_m = 13 \), dus \( H = 5 + 20×(13 − 1) = 245 \) en dan \( J ≡ 245 − 65 ≡ 180 \pmod{365} \). Dat klopt met de originele \( J \) waarmee we in het vorige voorbeeld begonnen (2 439 110), want \( 2 439 110 = 6682×365 + 180 ≡ 180 \pmod{365} \).

Wat is de laatste CJDN in het jaar 1965 die overeenkomt met Haab-datum \( \{5,13\} \)? Dan zoeken we de laatste \( J ≡ 180 \pmod{365} \) op of voor CJDN \( J_0 = 2 439 126 \) (die overeenkomt met 31 december 1965), met behulp van formule \eqref{eq:nearestle}. We vinden

\begin{align*} J \| = J_0 − \dmodp{J_0 − 180}{365} \\ \| = 2 439 126 − \dmodp{2 438 946}{365} \\ \| = 2 439 126 − 16 = 2 439 110 \end{align*}

14.10.3. De Tzolkin

De Tzolkin heeft een periode van 20 dagen (de venteina) met een naam voor elke dag, en een periode van 13 dagen (de trecena) met een nummer voor elke dag (te beginnen bij 1).

Wij schrijven een datum in de Tzolkin als \( \{ t_t, t_v \} \), waarin \( t_t \) het dagnummer in de trecena is (van 1 tot 13) en \( t_v \) het dagnummer in de venteina (van 1 tot 20).

De trecena en venteina lopen allebei tegelijk op, dus na dag \( \{ 2, 7 \} \) komt dag \( \{ 3, 8 \} \) en dan \( \{ 4, 9 \} \), enzovoort. Omdat 13 en 20 relatief priem zijn komen alle mogelijke combinaties van venteina en trecena voor in deze kalender, dus na 13×20 = 260 dagen herhalen de datums zich weer.

We rekenen CJDN \( J \) als volgt om naar een Tzolkin-datum \( \{ t_t, t_v \} \):

\begin{align} t_t \| = \dmodp{J + 5}{13} + 1 \label{eq:trecena2} \\ t_v \| = \dmodp{J + 16}{20} + 1 \label{eq:venteina2} \end{align}

Wat is de Tzolkin-datum die overeenkomt met CJDN 2 439 110? Dan is

\begin{align*} t_t \| = \dmodp{2 439 110 + 5}{13} + 1 = 3 + 1 = 4 \\ t_v \| = \dmodp{2 439 110 + 16}{20} + 1 = 6 + 1 = 7 \end{align*}

dus die datum is \( \{ 4, 7 \} \).

Om een Tzolkin-datum \( \{ t_t, t_v \} \) om te rekenen naar een CJDN moeten we de twee gelijktijdige congruenties van vergelijkingen \eqref{eq:trecena2} en \eqref{eq:venteina2} oplossen, ofwel

\begin{align} J \| ≡ t_t − 6 \pmod{13} \\ J \| ≡ t_v − 17 \pmod{20} \end{align}

We combineren die congruenties op de manier van hoofdstuk 13.12.3. We hebben \( x_1 = t_t \), \( x_2 = t_v \), \( p_1 = 13 \), \( p_2 = 20 \), \( a_1 = 6 \), \( a_2 = 17 \). Dan

\begin{align} C_1 \| = x_1 − a_1 = t_t − 6 \\ P_1 \| = p_1 = 13 \end{align}

De grootste gemene deler van 13 en 20 is 1:

\begin{align} g_2 \| = 1 \\ Q_1 \| = \frac{P_1}{g_2} = \frac{13}{1} = 13 \\ q_2 \| = \frac{p_2}{g_2} = \frac{20}{1} = 20 \end{align}

We zoeken nu \( r_2 \) die voldoet aan \( r_2Q_1 ≡ 1 \pmod{q_2} \) ofwel \( 13r_2 ≡ 1 \pmod{20} \) en vinden \( r_2 = 17 \), want \( 13×17 = 221 ≡ 1 \pmod{20} \). Dan

\begin{align} \| \begin{split} C_2 \| = C_1 (1 − r_2Q_1) + (x_2 − a_2) r_2Q_1 \\ \| = (t_t − 6)×(1 − 17×13) + (t_v − 17)×17×13 \\ \| = 221 t_v − 220 t_t − 2437 \end{split} \\ P_2 \| = p_2Q_1 = 20×13 = 260 \end{align}

dus de oplossing is

\begin{equation} J ≡ 221 t_v − 220 t_t − 2437 = −39 t_v + 40 t_t − 97 \pmod{260} \end{equation}

Welke dagen komen overeen met Tzolkin-datum \( \{ 4, 7 \} \)? Dat zijn dagen met

\[ J ≡ −39×7 + 40×4 − 97 ≡ 50 \pmod{260} \]

Dat klopt met \( J = 2 439 110 \) want \( 2 439 110 = 9381×260 + 50 ≡ 50 \pmod{260} \).

\[ J ≡ −39×7 + 40×4 − 97 ≡ 50 \pmod{260} \]

Omdat er geen jaarnummer in de Tzolkin zit komt deze Tzolkin-datum elke 260 dagen weer terug. We kunnen formule \eqref{eq:nearestle} gebruiken om de laatste \( J \) op of voor een bepaalde \( J_0 \) te vinden die overeenkomt met deze Tzolkin-datum:

\begin{equation} J = J_0 − \dmodp{J_0 − 40 t_t + 39 t_v + 97}{260} \end{equation}

De laatste Tzolkin-datum \( \{ 4, 7 \} \) die gebeurt op of voor 31 december 1965 (= CJDN 2 439 126) is

\[ J = 2 439 126 − \dmodp{2 439 126 − 50}{260} = 2 439 126 − 16 = 2 439 110 \]

Voor het aantal dagen \( T \) sinds de laatste \( \{ 1, 1 \} \) geldt

\begin{equation} \begin{split} T \| ≡ 40 (t_t − 1) − 39 (t_v − 1) \\ \| ≡ 40 t_t − 39 t_v − 1 \\ \| ≡ 40 t_t + 221 t_v − 1 \pmod{260} \end{split} \end{equation}

dus

\begin{equation} T ≡ \dmodp{40 t_t + 221 t_v − 1}{260} \end{equation}

Voor CJDN 2 439 110 (met \( \{ t_t, t_v \} = \{ 4, 7 \} \)) vinden we

\[ T = \dmodp{40×4 + 221×7 − 1}{260} = \dmodp{1706}{260} = 146 \]

dus de laatste dag daarvoor die \( \{ 1, 1 \} \) had was CJDN

\[ J = 2 439 110 − 146 = 2 438 964 \]

en dat klopt, want

\begin{align*} t_t \| = \dmodp{J + 5}{13} + 1 = \dmodp{2 438 969}{13} + 1 = 1 \\ t_v \| = \dmodp{J + 16}{20} + 1 = \dmodp{2 438 980}{20} + 1 = 1 \end{align*}

14.10.4. Tzolkin en Haab

Soms wordt een datum aangegeven met Tzolkin en Haab. Van CJDN naar Tzolkin en Haab staat hierboven beschreven. Van een datum met Tzolkin en Haab naar CJDN is weer iets lastiger. We moeten dan tegelijkertijd oplossen:

\begin{align} J \| ≡ H − 65 \pmod{365} \\ J \| ≡ T − 96 \pmod{260} \end{align}

De eerste formule vonden we voor de Haab alleen, en de tweede formule voor de Tzolkin alleen. Deze formules hebben weer de vorm van hoofdstuk 13.12.3, met \( x_1 = H \), \( x_2 = T \), \( p_1 = 365 \), \( p_2 = 260 \), \( a_1 = 65 \), \( a_2 = 96 \). Dan

\begin{align} C_1 \| = x_1 − a_1 = H − 65 \\ P_1 \| = p_1 = 365 \end{align}

De grootste gemene deler van 365 en 260 is 5, dus

\begin{align} g_2 \| = 5 \\ Q_1 \| = \frac{P_1}{g_1} = \frac{365}{5} = 73 \\ q_2 \| = \frac{p_2}{g_1} = \frac{260}{5} = 52 \end{align}

We zoeken nu \( r_2 \) die voldoet aan \( r_2Q_1 ≡ 1 \pmod{q_2} \) ofwel \( 73r_2 ≡ 1 \pmod{52} \) en vinden \( r_2 = 5 \), want \( 73×5 = 365 = 7×52 + 1 ≡ 1 \pmod{52} \). Dan

\begin{align} \| \begin{split} C_2 \| = C_1 (1 − r_2Q_1) + (x_2 − a_2) r_2Q_1 \\ \| = (H − 65)×(1 − 5×73) + (T − 96)×5×73 \\ \| = 365 T − 364 H − 11380 \end{split} \\ P_2 \| = p_2Q_1 = 365×52 = 18980 \end{align}

dus de oplossing is

\begin{equation} J ≡ 365 T − 364 H − 11380 ≡ 365 T − 364 H + 7600 \pmod{18980} \end{equation}

De Tzolkin en Haab hebben samen een periode van 18980 dagen, ofwel ongeveer 52 jaar.

Welke CJDN komen overeen met \( \{ t_t, t_v, h_d, h_m \} = \{ 4, 7, 5, 13 \} \)? Dan is \( H = 245 \) en \( T = 146 \), dus \( J ≡ 365×146 − 364×245 + 7600 ≡ −28290 ≡ 9670 \pmod{18980} \), en dat klopt met de originele \( J = 2 439 110 \) waar we mee begonnen, want \( 2 439 110 = 128×18980 + 9670 ≡ 9670 \pmod{18980} \).

Omdat \( g_2 \) niet gelijk is aan 1 komen niet alle mogelijke combinaties van \( H \) en \( T \) voor in de kalender. Je krijgt uit voorgaande formule wel voor alle combinaties van \( H \) en \( T \) een antwoord, maar dat antwoord is alleen bruikbaar voor combinaties van \( H \) en \( T \) die ook echt in de kalender voorkomen. Dat zijn combinaties waarvoor \( H − T ≡ 65 − 96 ≡ 4 \pmod{5} \).

In het voorbeeld dat we al steeds gebruiken is \( H = 245 \) en \( T = 146 \), dus \( H − T = 99 ≡ 4 \pmod{5} \), dus deze combinatie komt inderdaad voor in deze kalender.

14.10.5. De Lange Telling

De Lange Telling telt dagen en heeft een serie steeds langere perioden. De kleinste is 20 dagen, de volgende is 18 keer zo lang (dus 360 dagen), en daarna is elke volgende periode steeds 20 keer zo lang als de vorige. Het getal voor elke periode begint bij 0. Vaak zijn datums in de Lange Telling gegeven met vijf getallen, maar nog langere perioden zijn bekend, tot het negende getal toe. De langst bekende periode komt overeen met ongeveer 63 miljoen jaar. Hieronder gaan we er van uit dat de Lange Telling vijf getallen bevat, en kan het vijfde getal willekeurig groot worden.

De begindatum 0.0.0.0.0 van de Lange Telling komt waarschijnlijk overeen met CJDN \( J_0 = 584 283 \) (6 september −3113 in de Juliaanse kalender).

Het omrekenen tussen Lange Telling \( l_5.l_4.l_3.l_2.l_1 \) en CJDN \( J \) gaat schematisch als volgt:

  l₅ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  l₄ ────────────────────┐        ┃
  l₃ ───────────┐        │        ┃
  l₂ ──┐        │        │        ┃
  l₁  ─(1)─ d₁ ─(2)─ d₂ ─(3)─ d₃ ─(4)━ s ━(+J₀)━ J

De samenvatting van de kalenderniveau's is

(n) \({f}\) \({g}\) \({q}\) \({h}\) \({t}\) \({p}\)
1 20 1 20 0 0 20
2 360 1 360 0 0 360
3 7200 1 7200 0 0 7200
4 144000 1 144000 0 0 144000

Van Lange Telling naar CJDN:

\begin{eqnarray} d_1 \| = \| 20 l_2 + l_1 \\ d_2 \| = \| 360 l_3 + d_1 \\ d_3 \| = \| 7200 l_4 + d_2 \\ d_4 \| = \| 144 000 l_5 + d_3 \\ J \| = \| d_4 + J_0 = d_4 + 584 283 \end{eqnarray}

Van CJDN naar Lange Telling:

\begin{eqnarray} d_4 \| = \| J − J_0 = J − 584 283 \\ \{ l_5, d_3 \} \| = \| \Div(d_4, 144 000) \\ \{ l_4, d_2 \} \| = \| \Div(d_3, 7200) \\ \{ l_3, d_1 \} \| = \| \Div(d_2, 360) \\ \{ l_2, l_1 \} \| = \| \Div(d_1, 20) \end{eqnarray}

Bijvoorbeeld, welke CJDN komt overeen met Lange Telling 12.17.12.5.7? Dan is \( l_5 = 12 \), \( l_4 = 17 \), \( l_3 = 12 \), \( l_2 = 5 \), en \( l_1 = 7 \), en dan

\begin{align*} d_1 \| = 20 l_2 + l_1 = 20×5 + 7 = 107 \\ d_2 \| = 360 l_3 + d_1 = 360×12 + 107 = 4427 \\ d_3 \| = 7200 l_4 + d_2 = 7200×17 + 4427 = 126 827 \\ d_4 \| = 144 000 l_5 + d_3 = 144 000×12 + 126 827 = 1 854 827 \\ J \| = d_4 + 584 283 = 1 854 827 + 584 283 = 2 439 110 \end{align*}

Welke Lange Telling \( L \) komt overeen met CJDN \( J = 2 439 110 \)? Dan is

\begin{align*} \{ l_5, d_3 \} \| = \Div(2 439 110 − 584 283, 144 000) \\ \| = \Div(1 854 827, 144 000) = \{ 12, 126 827 \} \\ \{ l_4, d_2 \} \| = \Div(126 827, 7200) = \{ 17, 4427 \} \\ \{ l_3, d_1 \} \| = \Div(4427, 360) = \{ 12, 107 \} \\ \{ l_2, l_1 \} \| = \Div(107, 20) = \{ 5, 7 \} \end{align*}

Het antwoord is \( L = 12.17.12.5.7 \).

15. Snelle schatting van het aantal dagen tussen twee datums

Als je wilt weten hoeveel dagen er zijn tussen twee datums, dan kun je dat precies uitrekenen door het CJDN van beide datums van elkaar af te trekken. Als je genoegen neemt met een mogelijke fout van een paar dagen, dan kun je het ook schatten uit het verschil gemeten in kalenderjaren, kalendermaanden, en kalenderdagen.

Zulke informatie (het aantal kalenderjaren, maanden en dagen) is in de meeste kalenders niet voldoende om het preciese aantal dagen uit te reken, want niet elk jaar bevat even veel dagen als elk ander jaar en niet elke maand bevat even veel dagen als elke andere maand (in alle kalenders).

Stel dat de tweede datum \( j \) kalenderjaren en \( m \) kalendermaanden en \( d \) kalenderdagen later is dan de eerste (beide in dezelfde kalender, de Gregoriaanse kalender of Joodse kalender of administratieve Islamitische kalender of Egyptische kalender), waarbij je gewoon het jaartal, maandnummer en dagnummer van de tweede datum aftrekt van die van de eerste datum (die later moet zijn). De variabele \( j \) mag positief of nul zijn, maar niet negatief. De variabelen \( m \) en \( d \) mogen positief of nul of negatief zijn, maar \( m \) mag niet overeenkomen met meer dan een kalenderjaar, en \( d \) mag niet overeenkomen met meer dan een kalendermaand. Voor de joodse kalender stellen we dat tisjrie maand nummer 1 is en dat adar Ⅱ samen met adar Ⅰ als maand nummer 6 gerekend wordt (zodat maand 6 tot 59 dagen lang kan zijn). Voor de Egyptische kalender rekenen we de laatste 5 dagen van het jaar als een 13e maand. Dan kun je het aantal dagen \( n \) tussen de twee datums schatten met de formule

\begin{equation} n = \dfloor{a j + b m + c d} \end{equation}

met \( a \), \( b \) en \( c \) uit de volgende tabel:

\({a}\) \({b}\) \({c}\) \({|Δ|_\text{max}}\) \({σ}\) \({p_0}\)
Gregoriaans 365.24 30.4 1 4 1.1 35 %
Joods 365.25 31.0 0.9 37 12.9 3 %
Islamitisch 354.367 29.5 1 2 0.6 62 %
Egyptisch 365 30 1 0 0 100 %

De \( |Δ|_\text{max} \) uit de tabel toont de grootste fout (gemeten in dagen) die je met die formule voor die kalender maakt (gebaseerd op 10.000 willekeurige testdatums) voor datums die niet meer dan 400 jaar uiteen zijn. De \( σ \) toont de standaardafwijking (zeg maar de gemiddelde fout, ook gemeten in dagen). De \( p_0 \) toont de kans dat het geschatte aantal dagen \( n \) tussen de twee datums precies goed is.

Het is wel duidelijk dat de Egyptische kalender het meest regelmatig is, want die geeft de kleinste fouten (namelijk nul). Daarna volgt de administratieve Islamitische kalender, dan de Gregoriaanse kalender (met meer variatie in de maandlengten dan de Islamitische kalender), en als laatste de Joodse kalender (met variatie in het aantal maanden per jaar).

Een voorbeeld: Hoeveel dagen zitten er tussen 2003-05-25 en 2017-01-17 in de drie kalenders? Die datums schelen 14 jaar, −4 maanden en −8 dagen. In de Gregoriaanse kalender geeft dat \( n = \dfloor{365.24×14 + 30.4×−4 − 8} = \dfloor{4983.76} = 4983 \) dagen. Het echte aantal dagen tussen die twee datums in de Gregoriaanse kalender is 4986.

In de Joodse kalender geeft dit \( n = \dfloor{365.25×14 + 31.0×−4 + 0.9×−8} = \dfloor{4982.3} = 4983 \) dagen, hetgeen heel toevallig gelijk is aan het echte aantal dagen tussen die twee datums in de Joodse kalender.

In de administratieve Islamitische kalender geeft dit \( n = \dfloor{354.367×14 + 29.5×−4 − 8} = \dfloor{4835.138} = 4835 \) dagen, hetgeen gelijk is aan het echte aantal dagen tussen die twee datums in de administratieve Islamitische kalender.

In de Egyptische kalender geeft dit \( n = \dfloor{365×14 + 30×−4 − 8} = \dfloor{4982} = 4982 \) dagen, hetgeen gelijk is aan het echte aantal dagen tussen die twee datums in de Egyptische kalender.



[AA]

talen: [en] [nl]

//aa.quae.nl/nl/reken/juliaansedag.html;
Laatst vernieuwd: 2025-01-23