Crate googology[][src]


Googlogy is the study and nomenclature of large numbers. This crate is focused on the latter component of that description, and provides utilities for converting numbers of arbitrarily large size to some natural-language description.

Currently, this crate supports two systems for naming large numbers.

The first is the Conway-Wechsler system, which uses names that may be familiar to English speakers, such as million, billion, and so on… By chaining latin prefixes together (such as in the number “one millitrillion”), it is possible it is possible to use this system to generate a name for any number, provided one has enough memory to store both the digits in the input, as well as the string output.

This system supports three different “scale” parameters:

  • Scale::Short uses a modern English naming convention where each new “illion” is scaled by powers of 1,000. The value of 10^9 is called "one billion".
  • Scale::LongBritish uses an older convention used in the UK prior to 1974. Each new “illion” is scaled by powers of 1,000,000, and powers of 1,000 that lie in between “illions” are prefixed with “thousand”. Thus, the value of 10^9 is called "one thousand million".
  • Scale::LongPeletier uses a naming convention still in use in many European languages. Similar to Scale::LongBritish, “illions” are scaled by powers of 1,000,000. However, instead of prefixing the in betweens with “thousand”, they are instead suffixed with “ard” instead of “on”. Thus, the value of 10^9 is called "one milliard".

An alternative system called the Knuth-Yllion system is also provided. Here, rather than scaling by powers of 1,000 or powers of 1,000,000, the scaling is instead exponential. A new name is given for each n in 10^(2^n). For example, 10^2 is one hundred, 10^4 is one myriad, and 10^8 is one myllion. For values in between, we describe an “yllion” number with those of lesser magnitude. For example, 10^14 would be called “one hundred myriad myllion”.

Two functions are provided in each module:

  • full_name gives a name to any arbitrary number, given a base-10 string representation of its digits.
  • power_of_ten gives a name to a power of ten. This can be useful for numbers that may be so large that storing them in memory would be impossible or otherwise impractical.



Methods for the Conway-Wechsler large number naming system. A proper description of how this system works can be found on this website.


Methods for the Knuth -yllion large number naming system. This is a myriad number system based on Donald Knuth’s essay, “Supernatural Numbers”, which was published in the 1981 book, “The Mathematical Gardner”. The basic concept behind this system is that each new “yllion” is the square of the last (i.e. where one myllion is equal to 10^8, one byllion is 10^16 instead of 10^12 if we were multipling by constant factors like in an -illion system).