Reverse octal
and other numberings of ancestors
Sosa numbering
Genealogists who compile a list of a person's ancestors, called
an ahnentafel or ahnenreihe, most often use Sosa numbering.
The "root" individual whose ancestors are being listed is numbered 1,
and at each generation the father and then the mother of each person
in the previous generation is listed, and numbered, in order.
Thus here are the first few generations:
- Person.
- Person's father
- Person's mother
- Person's father's father
- Person's father's mother
- Person's mother's father
- Person's mother's mother
- Person's father's father's father
- Person's father's father's mother
- Person's father's mother's father
- Person's father's mother's mother
- Person's mother's father's father
- Person's mother's father's mother
- Person's mother's mother's father
- Person's mother's mother's mother
This system has these features:
- Ancestors are numbered sequentially starting from 1. Gaps are visible as missing numbers.
- If an ancestor is numbered n, his or her father is 2×n and his or her mother is 2×n+1.
- With the possible exception of the root, all males have even numbers and all females have odd numbers.
- Generations are numbered by powers of two. Ancestors g steps removed from the root are numbered starting at 2g and up to but not including 2g+1.
- It is widely known and understood.
Nevertheless, Sosa is not always easy to work with. For instance,
tracing an ancestral line, or seeing who is an ancestor (or even
parent) of who, can require considerable arithmetic. It takes some
crunching to get that the descent from #7399 goes 3699, 1849, 924, 462,
231, 115, 57, 28, 14, 7, 3, 1. Which of the sixteen of the root's
great-great-grandparents, 16 through 31, is #889 an ancestor of?
(Answer: 27.)
And these are fairly small numbers. Many
genealogies sport far more generations. Here are two extreme examples,
where the largest numbers appearing are 18484050353669565969914629455873
and 147793783161630549847572480, respectively. Can you guess which
of the root's great-great-grandparents each of these is alleged to be
the ancestor of? These examples are of course rather incredible, but
many ahnentafels with two or three dozen generations are not, such as
long royal descents. It can be quite hard to see the relationships in
the numbers.
Binary
Today the whole world uses a positional number system with a base of
10, also known as decimal. Starting from the right, each position to
be filled with a digit in a written number has a value ten times the
previous one. So, "4253" represents four thousands plus two hundreds
plus five tens plus three ones.
The choice of ten is arbitrary, stemming from the number of fingers humans
have. A positional system based on another number, say seven,
works just the same. Then "4253" represents four seven-cubeds (343
in decimal) plus two seven-squareds (49 in decimal) plus five sevens
plus and three ones, or what in decimal we would call 1508.
Other bases are mostly a mathematical curiosity, but do have
applications. For instance, computers internally use base 2, or
binary, since it is easier to make an electronic switch with two
positions than with ten. Thus the stereotype that machines think in
ones and zeros, or bits. "11001001" is 201 in decimal.
And ancestor numbering is really binary. Analogous to bits of 0 or 1,
each ancestor is either a mother or a father. As an example, take the
Sosa number above of 8109. In binary, this is 1110101110111, and the
line of descent goes 111010111011, 11101011101, 1110101110, 111010111,
11101011, 1110101, 111010, 11101, 1110, 111, 11, 1, in other words we just
drop the bits off the end. Similarly, we readily see that #1101111001
(889) is an ancestor of #11011 (27).
Binary ancestor numbering has many nice features:
- As noted, descent can be traced by dropping bits off the end.
- Ancestors of a person are numbered by adding bits. The great-grandparents of 11001 are 11001xxx, with each x a zero or one.
- The generation number, counting the root as "generation one", is equal to the number of bits in each person's number. Thus, generation five will be all five-bit binary numbers.
- Each bit has a meaning, 0 is "...'s father", and 1 is "...'s mother", except the initial 1 means the root person. Thus 110010 is the root's mother's father's father's mother's father.
- Other basic information inscrutable in base 10 is readily available. For instance, the root's paternal ancestors all start with 10, and maternal ancestors start with 11.
However, it has one glaring defect: it is quite cumbersome. Even eight-
or nine-bit numbers are an eyesore, and hearing one spoken may just
be hypnotic.
Octal
Computer programmers who must work with binary also find it cumbersome,
so a common technique is to group bits by threes or by fours.
This is accomplished by using a base of a power of two,
in this case 8 or 16 respectively. These bases are better known as
octal and hexadecimal, and are both widely used.
Thus "10101001" could be grouped "10 101 001", and thus be "251" in octal,
or as "1010 1001", and be "a9" in hexadecimal (since hexadecimal requires
sixteen distinct digits, the letters a through f
are added with the values ten through fifteen).
We do the same with Sosa numbering. I do not recommend hexadecimal,
since mixing letters and numbers is confusing, and letters are often
used to label descendants. Octal has only two fewer digits than
decimal, and the average number is about 11% longer written in octal
versus decimal1, which is not too burdensome.
For comparison, the last generation in the above list would instead
read as follows:
- Person's father's father's father
- Person's father's father's mother
- Person's father's mother's father
- Person's father's mother's mother
- Person's mother's father's father
- Person's mother's father's mother
- Person's mother's mother's father
- Person's mother's mother's mother
The next generation would be numbered 20–37.
However, some benefits of binary are weakened with octal:
- Instead of dropping bits to follow the line of descent, there is a cycle of three. If we start with 16347 (in decimal the familiar 7399), the line goes 7163, 3471, 1634, 716, 347, 163, 71, 34, 16, 7, 3, 1. Thus, arithmetic is still needed, although less than in decimal.
- Ancestral relationships are easier to see, but again not as trivial. It may not be obvious that 1571 (in decimal 889) is the ancestor of 33 (decimal 27), but once you understand octal it is easy to see that 1571 is the ancestor of 157, whose child is 67, whose child is 33, or that 1571 is the ancestor of 15, whose parents are 32 and 33.
- All people in one generation have numbers with the same number of digits, but the converse is not true. Instead, groups of three generations have the same number of digits. E.g., generations one through three have one digit, four through six have two digits, and so on. However, the first digit tells you which of the three you're in: 1 means the first of the group, 2–3 means the second, and 4–7 means the third.
- Each digit except the first represents sequences of three "...'s mother" and "...'s father" steps rather than one. "5" is for instance "...'s mother's father's mother". Surely with practice could can simply read them off, and write them down, which may make arithmetic easier.
- Ancestors of the root's father start with 10–14, 2, 4, or 5. Maternal ancestors start with 15–17, 3, 6, or 7.
Using octal for Sosa numbering is certainly still appealing, but I
propose a further alteration.
Reverse octal
Different bases can be used not just with whole numbers (integers), but
with any real number. For instance, in decimal 0.43 means four tenths
plus three hundredths. "0.43" in base 7 would thus be four sevenths
plus 3 forty-ninths, which is about 0.633 decimal. The "." (or a
"," in some countries) is often called a "decimal point"; this can
be confusing if we're not using decimal, so I will call it a binary
point, an octal point, or whatever is appropriate.
Reverse binary numbering works just like binary numbering, except
we put the bits after the binary point (in the same order). Thus,
we number ancestors with fractions rather than integers, starting
with 0.1 instead of 1. I will explain in a moment why we would do
this, but first a technical point: In binary Sosa numbering there
is a placeholder 1 at the start. The placeholder is needed because
110, 0110, and 00110 are all the same number, while 1110, 10110,
and 100110 are not. In reverse binary we put the placeholder bit at
the end, because 0.011, 0.0110, and 0.01100 are all the same number,
but 0.0111, 0.01101, and 0.011001 are not. We thus start with 0.1
(the root); 0.01, 0.11 (the parents); 0.001, 0.011, 0.101, 0.111 (the
grandparents); and so on. 0.001101 is the root's father's father's
mother's mother's father.
Reverse binary offers no real advantage over just binary, but
reverse octal does offer an advantage over octal, namely that the
bits are not shifted through the groups of three when a generation
is added. For instance, if a person's reverse binary number is
0.1011100111, then her (it is a her!) parents are 0.10111001101 and
0.10111001111. Grouping by threes, these numbers are 0.101 110 011 1,
0.101 110 011 01, and 0.101 110 011 11, or in octal 0.5634, 0.5632,
and 0.5636. No arithmetic is needed at all! The only confusing part
is the disposition of the last digit, but for that you just need to
remember "the basic pattern":
The Basic Pattern
All ancestors of x4 start with x, and this pattern iterates
indefinitely.
I use the distinct symbol ° as the octal point. Also, the initial
zero before the octal point is redundant and so is dropped, so the
person above would be labelled °5634. The octal point itself
may be optionally dispensed with in tables and lists.
The root person is thus °4. The Sosa decimal example of 7399
translates to °63474, and the line of descent is 6347, 6346, 6344,
635, 636, 634, 63, 62, 64, 7, 6, 4. It requires no arithmetic to see
that °5714 (decimal 889) is the ancestor of °56 (decimal 27),
though you do need to know that any x7y (for y not empty)
descends through x74, x7, x6, x4. Someone's direct patrilineal
line goes 4, 2, 1, 04, 02, 01, 004, 002, 001, etc., and the matrilineal
line goes 4, 6, 7, 74, 76, 77, 774, and so on.
A summary of the properties of reverse octal:
- Lines of descent and long-term relationships are almost trivial to see.
- As in octal, groups of three generations have the same number of digits. The first of any three has all numbers ending in 4, the second in 2 or 6, and the third in 1, 3, 5, or 7.
- Ancestors are not numbered sequentially, but through an odd-looking sequence, albeit one that becomes familiar with practice, allowing you to see gaps.
- A person is male who has a number ending in 1, 2, 5, or x4 where x is an even digit. A person is female who has a number ending in 3, 6, 7, or x4 where x is an odd digit. Note that the root °4 is in neither category.
- The root's paternal ancestors start with 0–3, and maternal ancestors start with 4–7.
Mathematicians may appreciate another interpretation of this system:
The root "owns" the interval (0,1), where all his or her ancestors are.
The root's father owns (0,1/2) and the root's mother owns (1/2,1),
and so on, with each person's two parents splitting the interval that
person owns. A person is labelled with the midpoint of their interval.
A long example
I illustrate this system with Stewart
Baldwin's table of ancestors of
Llywelyn the Great. This work, though impressive,
is hard to follow via the Sosa numbers, the largest of which is 25763840.
Here are the same ancestors labelled with reverse octal (for full details
see Baldwin's page):
4. Llywelyn ap Iorwerth, prince of North Wales
2. Iorwerth Drwyndwn ab Owain Gwynedd
6. Margred ferch Madog
1. Owain Gwynedd
3. Gwladus ferch Llywarch
5. Madog ap Maredudd
04. Gruffydd ap Cynan, king of Gwynedd
14. Angharad ferch Owain
24. Llywarch ap Trahaern
44. Maredudd ap Bleddyn
54. Hunydd ferch Einudd
02. Cynan ab Iago
06. Radnaillt of Dublin
12. Owain ab Edwin
20. Trahaern ap Caradog, king of Gwynedd
42. Bleddyn ap Cynfyn, king of Gwynedd and Powys
46. Haer ferch Cillin
52. Einudd of Dyffrin Clwyd
01. Iago ab Idwal, king of Gwynedd
05. Amlaíb mac Sitric
07. Máelcorcre ingen Dúnlaing
11. Edwin of Tegeingl
13. Iwerydd ferch Cynfyn
21. Caradog
41. Cynfyn ap Gwerystan
43. Angharad ferch Maredudd
45. Cillin y Blaidd Rhudd
004. Idwal ap Meuric, king of Gwynedd
044. Sitric mac Amlaíb, king of Dublin
054. Slani ingen Briain
064. Dúnlaing mac Tuathail, king of Laigin
124. =41
404. Gwerystan
424. Maredudd ap Owain
002. Meuric ab Idwal Voel
042. Amlaíb Cuaran, king of Dublin and York
046. Gormlaith ingen Murchada
052. Brian Bóruma mac Cennétig, king of Mumu/Munster and Ireland
062. Tuathal mac Augaire, king of Laigin
122. =404
422. Owain ap Hywel Dda, king of South Wales
001. Idwal Voel ab Anarawd, king of Gwynedd
272. Sitric ua Ímair, king of Dublin and York
045. Murchad mac Finn, king of Laigin
051. Cennétig mac Lorcain, king of Thomond
053. Be Bind ingen Aurchada
061. Augaire mac Ailella, king of Laigin
421. Hywel Dda ap Cadell, king of South Wales
423. Elen ferch Llywarch
0004. Anarawd ap Rhodri Mawr, king of Gwynedd
0404. ? mac Ímair
0444. Finn mac Máel Mórda
0504. Lorcan mac Lachtnai
0524. Aurchad mac Murchada, king of Uí Briúin
0604. Ailill mac Dúnlaing, king of Laigin
4204. Cadell ap Rhodri, king of South Wales
4224. Llywarch ap Hyfaidd
0002. Rhodri Mawr, king of Gwynedd
0402. Ímar, king of Dublin
0442. Máel Mórda mac Muirecáin, king of Airthir Liphi
0502. Lachtnae mac Cuircc
0522. Murchad mac Máenaig, king of Iarthar (West) Connacht
0602. Dúnlaing mac Muiredaig, king of Laigin
4202. =0002
4222. Hyfaidd ap Bleiddig, king of Dyfed
0001. Merfyn Frych ap Gwriad, king of Gwynedd
0441. Muirecán mac Diarmata, king of Laigin
0501. Corcc mac Anluain
0521. Máenach mac Flaithnia
0601. Muiredach mac Brain, half-king of Laigin
0603. Etromma ingen Indellaig
4201. =0001
4221. Bleiddig (or Bledri)
4223. Tangwystyl ferch Owain
00004. Gwriad
00014. Esyllt ferch Cynan Dindaethwy
04404. Diarmait mac Ruadrach, king of Airthir Liphi
05004. Anluan mac Mathgamna
05204. Flaithnia mac Fiangalaig
06004. Bran Ardchenn mac Muiredaig, king of Laigin
06024. Indellach mac Meic [F]orb[b]a
06034. Fidcossa
42004. =00004
42014. =00014
42224. Owain ap Maredudd
00012. Cynan Dindaethwy ap Rhodri Molwynog, king of Gwynedd
04402. Ruaidri mac Fáeláin, king of Laigin
05002. Mathgamain mac Toirrdelbaig
05202. Fiangalach mac Flainn Rodba
06002. Muiredach mac Murchada, king of Laigin
06022. Mac [F]orb[b]a
42012. =00012
42222. Maredudd ap Tewdws, king of Dyfed
00011. Rhodri Molwynog ab Idwal Iwrch
04401. Fáelán mac Murchada, king of Laigin
05001. Toirrdelbach
05201. Flann Rodba mac Amalgada
06001. Murchad mac Brain Muit, king of Laigin
06003. Conchenn ingen Cellaig Cualain
42011. =00011
42221. Tewdos ap Rhain
0001 04. Idwal Iwrch ap Cadwaladr Fendigaid
0440 04. =06001
0520 04. Amalgaid mac Cind Fáelad
0600 04. Bran Mut mac Conaill
0600 14. Almaith ingen Blathmaic
0600 24. Cellach Cualann mac Gerthide, king of Laigin
0600 34. Mugain ingen Faílbe
4201 04. =000104
4222 04. Rhain ap Cadwgon Trydelig
0001 02. Cadwaladr Fendigaid ap Cadwallon, king of Gwynedd
0440 02. =060004
0520 02. Cenn Fáelad mac Colgan, king of Connacht
0600 02. Conall mac Fáeláin
0600 06. Condadil ingen Crundmáel
0600 12. Blathmac mac Eogain
0600 16. Etain ingen Mongáin
0600 22. Gerthide mac Dícolla Dánae
0600 32. Failbe mac Domnaill
0600 36. Ethne ingen Crundmáel
4201 02. =000102
4222 02. Cadwgon Trydelig ap Cathen
0001 01. Cadwallon ap Cadfan, king of Gwynedd
0440 01. =060002
0440 03. =060006
0520 01. Colgú
0600 01. Fáelán mac Colmáin, king of Laigin
0600 03. Sárnat ingen Echach
0600 05. Crundmáel mac Fínáin
0600 11. Eogan mac Colmáin
0600 15. Mongán
0600 21. Dícuill Dánae mac Rónáin Craich
0600 31. Domnall mac Cormaic
0600 35. Crundmáel Erbuilc mac Rónáin, king of Laigin
0600 37. Failend ingen Suibne
4201 01. =000101
4222 01. Cathen ap Gwlyddien
0001 004. Catamanus, king of Gwynedd
0440 004. =060001
0440 014. =060003
0440 024. =060005
0600 004. Colmán mac Cairpri
0600 014. Fedelm ingen Óengusa
0600 024. Eochu mac Báeth
0600 044. Fínán mac Maine
0600 054. Lassar of Airgialla
0600 104. Colmán mac Báetáin
0600 204. Rónán Crach mac Óeda
0600 304. Cormac mac Diarmata
0600 344. Rónán mac Coluim, king of Uí Chennselaig
0600 364. Suibne mac Commáin
4201 004. =0001004
4222 004. Gwlyddien ap Nowy
0001 002. Iago, king of Gwynedd
0440 002. =0600004
0440 006. =0600014
0440 012. =0600024
0440 022. =0600044
0440 026. =0600054
0600 002. Cairpre mac Cormaic
0600 012. Óengus
0600 016. Lassi ingen Fergna
0600 022. Báeth
0600 042. Maine mac Nad Fraích
0600 102. Báetán mac Echdach
0600 202. Áed Díbchíne mac Senaig
0600 302. Diarmait
0600 342. Columb mac Cormaic
0600 362. Colmán mac Cobthaig
4201 002. =0001002
4222 002. Nowy ap Arthur
0440 001. =0600002
0440 005. =0600012
0440 007. =0600016
0440 011. =0600022
0440 021. =0600042
0600 001. Cormac mac Ailella
0600 015. Fergnae mac Fergusa
0600 041. Nad Fraích mac Echdach
0600 101. Eochaid mac Muiredaig
0600 201. Senach Díbech
0600 301. Eochu Guinech, king of Uí Bairrche
0600 341. Cormac mac Nath Í
0600 361. Cobthach
4222 001. Arthur ap Pedr
0440 0004. =0600001
0440 0064. =0600015
0440 0204. =0600041
0600 0004. Ailill mac Dúnlainge, king of Laigin/Leinster
0600 0144. Fergus
0600 0404. Eochaid mac Dúnlainge
0600 1004. Muiredaig mac Loairn
0600 3404. Nath Í mac Crimthaind
4222 0004. Pedr/Peter ap Cyngar
0440 0002. =06000004
0600 0002. Dúnlaing
0600 0402. =06000002
0600 1002. Loarn
0600 3402. Crimthann mac Énnai Chennselaig, king of Laigin/Leinster
4222 0002. Cyngar ap Gwerthefyr
0440 0001. =06000002
0600 3401. Énnae Cennselach
4222 0001. Uortiporius, king of Demetia/Dyfed
4222 0000 4. Agricola, king of Demetia/Dyfed
Note that for octal strings of six digits or more I group the
digits in fours, similar to how decimal digits are traditionally
grouped in threes.
With this labelling, one can "read off" interesting facts.
For instance, the last entry, Agricola °4222 0000 4,
is a direct patrilineal ancestor of the woman Tangwystyl ferch
Owain °4223. The line founder Dúnlaing, who appears
three times in the genealogy, is the direct patrilineal ancestor
of three women—Máelcorcre ingen Dúnlaing °07,
her distant ancestor Condadil ingen Crundmáel °0600 06,
and her husband's grandmother Gormlaith ingen Murchada °047.
There are four "maternal" steps out to Agricola—and six (out of 17)
to Failend ingen Suibne °0600 37.
The only tricky part is the gymnastics with the last digit, but that
just takes practice.
Twisted octal (a tangent)
Reverse octal has a few unsatisfactory properties, the largest one in
my view being that it uses funny fractions instead of a simple sequence
of integers starting with 1. What I call twisted octal is a variation
designed to address this. I don't really intend it as a serious proposal,
just an interesting one. Who knows though?
It's twisted because the order of the bits is reversed but the placeholder
bit is at the start, as is necessary for integers. The numbering is done
at each generation by sequentially numbering first the fathers of everyone
in the previous generation, and then the mothers. Hence, it starts off
- Person.
- Person's father
- Person's mother
- Person's father's father
- Person's mother's father
- Person's father's mother
- Person's mother's mother
- Person's father's father's father
- Person's mother's father's father
- Person's father's mother's father
- Person's mother's mother's father
- Person's father's father's mother
- Person's mother's father's mother
- Person's father's mother's mother
- Person's mother's mother's mother
Or, keep the "natural" order and number them
- Person.
- Person's father
- Person's mother
- Person's father's father
- Person's father's mother
- Person's mother's father
- Person's mother's mother
- Person's father's father's father
- Person's father's father's mother
- Person's father's mother's father
- Person's father's mother's mother
- Person's mother's father's father
- Person's mother's father's mother
- Person's mother's mother's father
- Person's mother's mother's mother
This system's structure is similar to reverse octal. However, as in
"forward" octal, the first digit rather than the last is the exceptional
one. The ancestors of 14 in this scheme are just those whose number
ends in 4.
Ancestors within each generation are no longer in numerical order,
in contrast with Sosa numbering (of any base) and reverse octal.
I leave it to the reader to work out the other properties of this
system, many of which are direct analogs of those in reverse octal.
Other operations
Sometimes one wants to computate relations relative to another root.
In Sosa numbering, the #76 of #123 is... #7884. In octal, the
#114 of #173 is #17314. In reverse octal, the °144 of
°734 is °73144. In these cases, octal can be conveniently
applied without arithmetic. However, this is just "lucky"; both
numbers denote six steps from the root, a multiple of three.
In other cases, a "shift" operation is needed. Consider in Sosa that #204
of #247 is #31692. In octal, #314 of #367 is #75714. In reverse octal,
°462 of °736 is °73631. In these cases, one of the two
numbers—the second in the case of "forward" octal, the first in the
case of reverse octal—must be multiplied or divided respectively by
two and attached to the other number, with due accommodation for the
transitional digit. This is still far simpler than decimal.
Simpler examples: My °13 is my father's °26, and my °704
is my mother's °61. My °251 will be my children's °1244 or
°5244, depending on my (hypothetical) sex.
Conclusion
The proposed numbering schemes trade some advantages for others.
For me, the disadvantages of Sosa numbering led me to develop and
use this altenative, despite Sosa's established position.
Whether reverse octal is a good idea or a crazy one, I have been using
it for several years now. Perhaps others will also find it useful.