How did anyone do math in Roman numerals? (2017)
washingtoncitypaper.com
washingtoncitypaper.com
By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and, in effect, increases the mental power of the race. Before the introduction of the Arabic notation, multiplication was difficult, and the division even of integers called into play the highest mathematical faculties. Probably nothing in the modern world would have more astonished a Greek mathematician than to learn that ... a large proportion of the population of Western Europe could perform the operation of division for the largest numbers. This fact would have seemed to him a sheer impossibility ... Our modern power of easy reckoning with decimal fractions is the almost miraculous result of the gradual discovery of a perfect notation. [...] By the aid of symbolism, we can make transitions in reasoning almost mechanically, by the eye, which otherwise would call into play the higher faculties of the brain. [...] It is a profoundly erroneous truism, repeated by all copy-books and by eminent people when they are making speeches, that we should cultivate the habit of thinking of what we are doing. The precise opposite is the case. Civilisation advances by extending the number of important operations which we can perform without thinking about them. Operations of thought are like cavalry charges in a battle—they are strictly limited in number, they require fresh horses, and must only be made at decisive moments.
John Allen Paulos discusses the power of notation in his book Beyond Numeracy:
A German merchant of the fifteenth century asked an eminent professor where he should send his son for a good business education. The professor responded that German universities would be sufficient to teach the boy addition and subtraction but he would have to go to Italy to learn multiplication and division. Before you smile indulgently, try multiplying or even just adding the Roman numerals CCLXIV, MDCCCIX, DCL, ANDMLXXXI without first translating them.
Numbers may be eternal and invariant, but numerals, the symbols used to represent numbers, are not, and the above anecdote illustrates how easy it is to take for granted the Hindu-Arabic numerals we use today. The history of numeration systems is a long one extending from prehistoric times to the adoption in the Renaissance of our present system. The heroes of the story are the nameless scribes, accountants, priests, and astronomers who discovered the principles of representing numbers systematically.
Roman numerals by and large were not used for calculating, but for recording calculations. Those calculations were done (as the very word “calculate” suggests) using pebbles or other tokens, on some kind of counting board.
The point of Roman numerals is to be as direct as possible a representation of the state of the counting board. They are a serialization format.
Think of it as the JSON (or s-expressions if you like) of the ancient world. You don’t run your algorithm by writing and rewriting JSON literals over and over with pen and paper. They are just a record; your computation is done using a different automatic tool.
When someone writes down the state of a graph structure as a big nested JSON literal, you don’t laugh at them for having a uselessly unwieldy written expression.
> C has destroyed our ability to advance the state of the art in automatic optimization, automatic parallelization, automatic mapping of a high-level language to the machine.
"Progress" in CS remains fad-driven pop culture churn.
GC (and "memory safety" more generally) was not invented to solve the problems of C after C somehow revealed them solving the problems of e.g. Fortran. C variously sidestepped and ignored the work on program analysis including GC and memory safety for various commercial, aesthetic, and incidental reasons. Similar things are the case for C++ (vs. e.g. Object Pascal / Simula), Objective-C and Swift (vs. Smalltalk and Self), JavaScript and PHP (vs. nearly everything).
Lisp from 1959 stacks up incredibly well against Python today. Fortran still autovectorizes better than most modern languages. Pascal remains better to teach structured programming, we just don't teach that much anymore (and you can tell just by grabbing a half dozen loops at random and trying to figure out how well their conditions capture their invariants). Languages don't get better over time. They do get marketing budgets unimaginable before the 90s ("thanks" largely to Sun and Java for kicking this off), and for the past 20 years or so weird personal identity arguments on top of that (probably somehow Perl's fault).
Python is better.
You also don't have to write out type signatures 99.9% of the time after declaring a type, the compiler can infer them. People in the Haskell community tend to write out signatures for functions because it makes it easier to understand, but it's pretty rare to see a type signature in the body of a function.
That's not to say thinking in Haskell is always as natural or more natural than Python, but I'd argue that immutability and laziness more than types can require a lot more mental effort that can feel like fitting square pegs into round holes for certain problems. When it comes to types (at least Haskell vs. Python), I'd say it's much more a matter of personal taste.
Arabic numbers are like this (no child immediately ‘groks’ Arabic numbers), and Haskell notation is making the same case. Haskell abbreviates abstract structures so that they become fluid.
If focusing on notation is a problem, then we should all have grown up to use our fingers for counting, not Arabic numerals.
First of all programming without thinking about it (i.e. instinctively) is arguably not even possible. But let's be generous and assume that it is somehow.
Are you seriously trying to argue that it's possible to program in a complex programming language which not only requires types, but almost requires encoding complex relationships in them without involving the "higher faculties of the brain"? This is such an extraordinary claim that it requires evidence to even consider it.
Other languages almost always require more thinking and design upfront, even when doing exploratory programming.
I do not think that this is true for python any more than it is true for haskell for example.
def square(x):
return x * x
square x = x * xToo much inertia is invested in them now but I wonder if a yet easier representation exists. For example, I know that there was a brief push to use quaternions in physics.
I find it insanely difficult - but as you note, a lifetime of arabic numerals, and a lack of skill in appropriate tools (eg. an abacus) will skew that comparison.
> ... but it’s not much easier until you’ve memorized all 50 unique sums of one-digit numbers.
This doesn't feel right.
I don't think I have memorised the sum of all pairs of 1-digit numbers - but contemplating this now, it's impossible for me to be sure. I'm not sure where multiplication kicks in for breaking down larger numbers into quotient and divider for me, let alone 'most people'.
Given the maximum value (sum) of two x 1-digit numbers is 18, a naive assumption is the permutations don't really number 50 (I get 45) - and given that roman numerals didn't have a zero, a fairer comparison would be [1-9][1-9] (36 unique combinations)
Either way, in any counting system there's presumably a similar 'memorisation' gate you have to pass for the fundamental set. With roman numerals there was historically 7 I think - I, V, X, L, C, D, M - and summing those wouldn't be anywhere near as straightforward as summing sets of single-digits, so I don't think the comparison of this requirement is as skewed against arabic numerals as you suggest.
I also use the term “memorize” pretty loosely—I remember that memorizing times tables was a thing but not so much for plus—but addition is simple enough that most people can kind of intuit what 7+4 heuristically if they’re sat down and forced to do arithmetic as small children for long enough. (Also I’ve never had the patience for memorization; I just rely on my brain to cache things that I use frequently and it ended up working for times tables. Also other things.)
But I do want to acknowledge that Arabic numerals make multiplication nearly as easy as addition, which is a staggering achievement over Roman numerals.
Though I will say, on the other hand, that the Romans weren’t that stupid and neither were their medieval successors prior to the adoption of Arabic numerals. They could add things up and we’ve discussed in a parallel thread how that algorithm works. The Roman numeral system isn’t as optimized informationally—let’s not underestimate the sheer awesomeness of seamlessly expressing numbers as large as 108730026190037365462849562635965—but that would be useless to most cultures that used Roman numerals.
I would even question one more thing. To someone who doesn’t know a numeral system to begin with, do Arabic numerals actually make addition harder? I mean, very small children (and programming languages like JavaScript if you accidentally express one number as a string) sometimes make the mistake of thinking 11+8=118, but in Roman numerals that’s just like saying XI + VIII = XIVIII, which is also wrong, but not as wrong as 118. A Roman child could easily be taught no, that’s XVIIII since V’s go before I’s, and then maybe reduce to XVIV. A child today is like, “wait wtf are places?” Roman numeral users never have to learn the concepts of places, carry, or borrow, which honestly sounds like a good trade off for a civilization that doesn’t have to do multiplication and division that easily.
OTOH do we memorise any of the x+1 combinations? I hope we don't, but perhaps we do. I genuinely can't say at this point. I was trying to work out how I processed sums such as 8+7 earlier, and concluded that so far I can tell, I work out the difference of one of those numbers from 10, subtract it from the other, then it's a very simple addition - ie that becomes 10+5. But I'm now unsure if that's what I do as a general rule, and am even less sure what other people may do.
Times table I vaguely recall learning by rote in formative school, but that's an awfully long time ago, and trying to self-analyse my mechanisms for multiplications is highly challenging. It feels like I try to move those back to multiples of 10 or 100, again, too.
I recall reading aeons ago that the only intuitive interface is the nipple - beyond that, everything is learned. So what makes for an intuitive or sensible mathematical representation of things is probably so arbitrary as to be pointless arguing about. It feels that the kinds of things we do, day to day, with numbers, that base-10 arabic number system is optimum, but that may simply be the lack of exposure to a better system.
Your method for summing 8+7 is what I think I do for things like 7+4 (since I can visualize 7 as “three less than 10” and 4 as “one more than three” all in the same thought to reach 11), but for 7+8 my brain noticeably spits out 15 immediately and only a moment later does it actually do the processing you mention.
If I can tell it sums to more than 10, I break it up mentally into [larger number] + [smaller number] = [larger number] + ([smaller number] - remainder) + remainder, where [larger number] + ([smaller number] - remainder) = 10
You could break it down further by just memorizing what each digit less than 10 is when you add 1. Then you can do addition like 5 + 4 = 1 + 1 + 1 + ... = 2 + 1 + ... = 8 + 1 = 9. Then you'd only have to memorize 9 things (10 if you include 0). I guess this assumes that you know the order numbers go in though, whereas memorizing all of the combinations doesn't require that.
And yeah, you can get by with less memorization and more counting, but eh...either you’re taught not to do that or you do enough arithmetic that your brain just caches the whole table eventually anyway.
MCMLXVII + LXV
M CM L X V I I + L X V
M CM L X V I I L X V
M CM L L X X V V I I
V+V=X, L+L=C, C+CM=M so MMXXXII. Convert everything to decimal if you wanna check my work.
Note that converting CM to DCCCC is actually pretty unnecessary since you can just combine CM and C to make M instead of having to count up lots of C’s. A computer algorithm would be simpler by reducing CM to DCCC but adjusting for human fallibility, allowing for CM + C = M makes things a little easier.
Also note that this method scales to any number of sums, not just adding two numbers together.
Addition in Roman numerals is dead simple: you do it by just bunching symbols together. The only difficulty is subtractive notation, which wasn’t really used in Ancient Rome.
MCMLXVII + LXV
= MCCCCCCCCCLXVII + LXV (canonicalize)
= MCCCCCCCCCLXVIILXV (concatenate)
= MCCCCCCCCCLLXXVVII (sort)
= MCCCCCCCCCLLXXXII (combine, VV => X)
= MCCCCCCCCCCXXXII (... keep combining, LL => C)
= MMXXXII (... C{10} => M, nothing left to combine)
= MMXXXII (optionally, look for ways to re-write with the subtraction rule)- seeing L + L = C and converting CM to M ( basically striking L L and C )
- then V + V = X, ( striking Vs and add an X)
Then write whats left:
MMXXXII
Then try to re-write.
Great quote. I wonder if this process will continue with adoption of duodecimal numbers.
The Greeks were really into geometry using the compass and straight edge so they actually did a lot of math without really needing numbers at all. They viewed calculation as less worthy of mathematicians and my understanding is that we don't have a lot of evidence for how merchants and engineers did basic calculations since most of the great Greek math texts ignored it.
Algorithms and algebra probably existed in some informal way but they weren't really formalized until the Arabs did it with the help of Arabic numerals.
So, while you can do some calculations in roman numerals or using an abacus, the interesting question to me is: Did the Greeks (and the Romans) not develop algebra or use Arabic numerals because they weren't that into numbers as compared to geometry? Or was it the other way around? Did the clumsiness of doing calculations in Roman numerals keep them from developing more complex systems of numerical calculation?
I'm not an expert on the subject at all but it's always interested me. It makes me think of Bret Victor's Media for Thinking the Unthinkable (http://worrydream.com/MediaForThinkingTheUnthinkable/)
The book Mathematics for the Million[0] suggests a number of limitations were created from the roman numeral system, largely due to the difficulty of division, making infinite series and even large (and extremely small) numbers difficult to work with, intuit and even see outright. As a specific example, it suggests the Achilles and the tortoise paradox[1] is trivially intuited and resolved in the decimal system, whereas no relationship between each division is made clear in the roman numerals
[0] https://archive.org/details/HogbenMathematicsForTheMillion/p...
[1] https://en.wikipedia.org/wiki/Zeno%27s_paradoxes#Achilles_an...
Greek society was awash with arithmetical calculations. It wasn’t written about probably mostly because it was considered so obvious and commonplace. (Though it’s also a bit hard to say quite what was written about, since we’ve lost the vast majority of the books from the time.)
http://worrydream.com/refs/Netz%20-%20Counter%20Culture%20-%...
* * *
> Did the Greeks (and the Romans) not develop algebra or use Arabic numerals because they weren't that into numbers as compared to geometry?
Algebra and arabic numerals really took off with the introduction of cheap paper and printed books.
It’s really hard to transmit the oral culture of skilled use of a counting board via printed book (we might call it tacit knowledge), but you can pretty straight-forwardly print out a pen-and-paper arithmetic algorithm.
There's Morris Kline's Mathematical Thought from Ancient to Modern Times which is 3 glorious fat volumes of just this stuff.
Probably? I mean, look what the world achieved after it left roman numerals behind.
Look what the world achieved after we started wearing button shirts.
Yet the Romans were able to construct aqueducts that are still standing, and a road network spanning thousands of miles, and many other great feats of civil engineering.
We know that other civilization in the region we adept with arithmetic and geometry. And Rome's straight roads and aqueducts are evidence that their citizens understood the practical applications of such mathematics. So it stands to reason someone in the process understood how to perform arithmetic using a place-based notation. Even if they were only generating calculation tables used by field engineers.
I'm sure people devised clever tools that allowed builders to actually build these structures. Much like a roofer today doesn't need to perform any calculations beyond measurements, because they are taught how to use a speed-square to quickly find the correct angles for cutting rafters.
It sounds so simple: so hangs the chain, stands the arch. Took until Hooke in the 17th century before that was written down, though there are earlier (15th century) examples in architecture.
The Romans were still working on the Greek ideology that the circle was the perfect shape. Not to belittle what they did, but the key advances were really in concrete and having an authoritarian empire giving unprecedented resources to public works.
The Romans tested bridges by having the engineers stand under while a legion marched over.
Every culture has a concept of "nothing" which works for zero. The ancient Greeks debated over whether nothing was a number or not, but that's just a semantic splitting of hairs.
At some point a symbol for nothing becomes useful so you invent a number-like notation for it. But that's just a matter of convenience. It's not some great conceptual leap.
Therefore I think ancient arguments over whether 0 is a number (and acceptance thereof) are representative of a greater paradigmatic shift, similar in essence to the arguments over whether the square root of -1 is truly a "number."
Viewed that way 0 is the first step in a journey of an understanding of numbers from purely counting discrete entities, to abstract parts of computation.
So basically I would posit that it is in fact a great conceptual leap (just as the negative numbers are) that only seems like an obvious fluke of notation when every schoolchild has learned it.
And the "meaning" of zero as a number like others along a number line, rather than as mere notation for "nothing", I assume only ever became necessary with the invention of negative numbers.
With addition, multiplication and division, zero simply does nothing or annihilates a number, and so doesn't need to be treated like other numbers. AFAIK, zero as a number arises first in figuring out how to "get to" negative numbers, e.g. what is two minus four (one, zero, negative one, negative two), where zero is required as a numeric concept.
Negative numbers were a big step forwards. Zero, I still don't see it -- either it was just convenient notation for "nothing", or part and parcel of the shift to negative numbers. Unless I'm missing something in the historical record?
As far as I can tell from the historical record (and it doesn't help that modern histories tends to describe historical mathematical discoveries in modern terms, meaning it's difficult to work out as a lay person in what terms the historical discoverer understood their own work), it looks like the acceptance of zero, negative numbers, and complex numbers are more or less concurrent, and this also seems to coincide with the shift in mathematics from being predominantly geometric to algebraic.
I suspect most HN readers probably live in a world of binary logic where things are either "true" or "false", but I come from data-land, where ternary logic is the norm, and where "zero" is a very different concept than "null".
"Zero" is something that can be compared to other numbers, mathematical operations can be performed on it, etc., but "nothing" is just that... nothing.
I'm sure the ancient Greeks used one term to refer to both concepts, and that's exactly what people are pointing out when they refer to other cultures "inventing" the concept of zero. These cultures correctly realized that these are two distinct concepts, and so they created a new, separate term for zero.
If zero might not be a number then you can't state that 0 * n = 0 and 0 + n = n and n - n = 0, etc
Nonsense. Zero being a number is the conceptual leap. It's important.
I felt the same way when encountering Chinese numbers via Japanese. If 二 is two, 十 is ten, 四 is four, and twenty-four is 二十四, that's so clear! Two tens and four!
I quickly decided that this number system, though something I'd obviously need to learn and become acquainted with if my Japanese learning were ever to progress, wasn't necessarily as easy as I initially imagined. Yes, there are no places, but numbers in this system are grouped at different boundaries — not every thousand but every ten-thousand.
So 六十七億八千三百一万五千四百二十一 breaks up as sixty-seven hundred-thousands eight-thousand-three-hundred-and-one ten-thousands five-thousand-four-hundred and two-tens-and-one — and obviously, that's not quite how we would represent six-(billion/thousand-million) seven-hundred-and-eighty-three-million fifteen-thousand-four-hundred-and-twenty-one, or rather 6,783,015,421.
I post this not to discuss the positives or negatives on the Chinese number system compared to the Arabic one or vice-versa. Rather, just how one's imagination can be so easily captured by the apparent simplicity of an alternative to that with which one is familiar, almost to the point of wanting to adopt it altogether. The realisation of where things get tricky for oneself, often not coming until quite a bit later, sometimes doesn't come until later.
For myself, I tried using roman numerals for my own math for a long time but stopped when I found division too brain-breaking!
But reversing back the numbers into my Portuguese brain, just doesn't work after a certain size.
Here's the "original" source of the column, which is on a less... determinedly fashionable website, so it might be friendlier to mobile users and people who dislike fixed headers:
https://www.straightdope.com/columns/read/3330/how-did-anyon...
Also, previously:
Never actually used any of it so most of it has evaporated from my memory along with calculating square roots by hand, but it's nice to know at least enough to be able to look up the information if I want it.
Consider the problem "How do you divide five things for eight people?"
Simple - cut everything into 1/8 and give each person five.
But Egyptian fractions give an even easier way. 5/8ths is 1/2 + 1/8. Divide four wholes into halves - give each person a one half. Take the unit and divide it into eights and give each person one. The answer to this problem is the way you write the number itself. This makes division of the items easier and simpler.
But, if you read the "Sand Reckoner" by Archimedes, what he lays out are the rudiments of a place-value system. He essentially describes the modern notation, but not rules for addition, subtraction, multiplication and division using this notation.
Another tidbit: if you see the recent movie about Shannon "The Bit Keeper", he shows the journalist a mechanical device (he designed?) which can do calculations using Roman numerals.
And division basically works the same.
Discussed article is https://thonyc.wordpress.com/2017/02/10/the-widespread-and-p...
Nowhere as complex as it's made out to be.
Addition sounds easy and works mostly like how we do base 10 addition. I imagine they would first go for sub 5 part which is a bit exceptional and had to be manually. And then start grouping letters together like we do and create carries if they reach the next letter.
Subtraction sounds harder. It sounds close enough to our base 10 system but borrowing from next digit is much more complicated. Like subtracting D-I (500-1). The answer is CDXCIX but I am not sure how I can go there. And now imagine this with more complex numbers
But multiplication and division? in that weird base format? I won't even try
Keep in the mind that they don't convert or even think numbers in base 10 system like we do.
Then I guess the real challenge is converting numbers around?
At the end of the session, the teacher asked us to try the same with Roman numerals. That was when I knew it's significantly harder.
The base with best radix economy (except for e) is 3. But roman numerals are better still.
For representing 0-999, you would need 19 base-3 digits, but only 15 roman numerals (plus a symbol for zero).
Common numerals like II III VII VIII have worse length, while I IV VI are same, and V X IX are better.
And factoring in per-digit cost, Roman numerals up to 999 have 5 distinct digits, 46% more cost per digit than base 3, making it worse than base 3 in almost every case, information theoretically. (You could win some back with a huffman encoding, though)
You would need 19 base 3 digits and only 15 roman numerals (plus N for zero) in order to represent every number.
In base three, you sometimes have all three digits equal. With roman numerals, you can reuse the same digit in different positions.
With subtractive Roman numerals, you can get away with just 17 digits, but you lose the feature of not having to rearrange them.
Edit: actually, how did we get 19 here? I agreed at first, but my number above is just 15 digits.
The problem is: Given the full range of possible (or at least plausible) scores, how many of the cards do we need for a full set?
So let's simplify it to just a run tally. You could be 111, so you'd need at least 3 of the 1 cards etc. Allow for scoring up to 999 (unlikely) and that's 29 cards to keep somewhere (only 2 zeros needed)
In base 3, you need 7 digits, but only 3 cards per, so we are doing better with 19 cards needed (21=3*7, but don't need all zeros, and that gets you to 1093 so for 999 you could save another)
In roman numerals, You'd need an M, a D, 3 Cs, 3 Ls, 3 Xs, 1 V and 3 Is. Total is 15 cards.
Can we do better? Good question.
6 different cards give you
- 1 zero-card sequence
- 6 different 1-card sequences
- 30 different 2-card sequences
- 120 different 3-card sequences
- 360 different 4-card sequences
- 720 different 5-card sequences
- 720 different 6-card sequences
That’s enough to almost get you up to 2000. And I don’t think the resulting encoding is objectively weirder than Roman digits.Can we do better? Good question...
It would seem that such tasks would be extremely difficult for someone working with the Roman numerals.
Interestingly, he grew up with a merchant father based in Northern Africa and had internalized it.
With a soroban, a slide rule, and a book of tables, you can do most classical engineering math. Slowly.
What? On which clocks?
https://www.omegawatches.com/watch-omega-constellation-omega...
There's a reddit thread [0] that might be some of what I saw, and my wife does paleography work where she runs across books of accounts that are rendered in Roman numerals, because that's how formal accounts were prepared, even if the actual accounting was done by other means.
That same reddit thread has link to an "algorists vs abacists " article [1] which purports to back this up, but I can't confirm because the article is paywalled for me.
Edit: Moved/fixed links.
[0] https://www.reddit.com/r/AskHistorians/comments/12m0vp/how_a...