Skip to content

expeditiousRubyist/googology

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Googology

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages