---
- include: "../../definitions.yaml"

# If an "intent" is used, the 'terse:medium:verbose' speech for the intent name is given here for a prefix||infix||postfix||function||nofix||silent fixity
# If only one ":" is used, the first part is used for 'terse' and the second part is used for 'medium' and 'verbose'
# If no ":"s are used, the same speech is used for all forms
# If bracketing words make sense, they are separated with ";"s
# Intent mappings must specify whether they are "prefix", "infix", "postfix", or "function" with an "=" sign
# If there are multiple fixities (e.g., see transpose), they are separated with "||"
#   for readability, spaces can be used around any of the delimiter characters
# Note: if there are multiple fixities, the first one is used if the fixity is not given in the intent
- IntentMappings: {
    "binomial": "infix=binomial; choose; end binomial",

    ### Functions and Inverses
    # "closed-interval": "other=closed-interval; from,to; end closed-interval",
    # "closed-interval":"function=closed interval between; and", #NOTE: Check test, does not follow this pattern
    #"closed-open-interval":"function=interval between; included and",
    #"open-closed-interval":"function=interval between; and included",
    #"open-interval":"function=open interval between; and",
    "inverse":"function=inverse || postfix=inverse", 

    "domain": "function= ; domain",
    "codomain": "function= ; codomain",

    "image":"function=image", 
    #"fraction":"function=fraction; over; end fraction", # NOTE: Fails
    "mixed-fraction":"infix=and", # NOTE: in website says function, but follow infix speech pattern.
    "quotient":"function=integer part; divided by", # NOTE: Logic somewhere here failing, becomes "divided by of x comma, y" instead of "integer part of x divided by y"
    "evaluated-at":"infix=evaluated at",
    "remainder":"function=the remainder; divided by",

    "max":"function=max",
    "min":"function=min",

    "power":"infix=to the power",
    "root":"function=root",

    "greatest-common-divisor": "function=gcd: the gcd: the greatest common divisor",
    "least-common-multiple":"function=lcm: the lcm: the least common multiple", # In webpage typo "lest common"

    "absolute-value": "function= ; absolute value: the absolute value: the absolute value; end absolute value",
    "complex-conjugate":"function=complex conjugate",
    "complex-arg":"function=arg",
    "real-part": "function=the real part",
    "imaginary-part": "function=imaginary part: the imaginary part: the imaginary part",

    "polar-coordinate":"function=polar coordinate; comma",
    "spherical-coordinate":"function=spherical coordinate; comma; comma",
    "cartesian-coordinate":"function=cartesian coordinate; comma",
    "coordinate":"function=coordinate; comma",
    "floor":"function=floor",
    "ceiling":"function=ceiling",
    "round":"function=rounded-value",
    "fractional-part":"function=fractional part",


    ### Calculus
    # "definite-integral":"function=integral over || function=integral from; to", # Property ???
    # "derivative":"function=the derivative; with respect to", # Property ???
    # "partial-derivative":"function=partial", ## Note, included with infix, but separately under calculus tab has ??? for functionality

    "limit": "prefix=limit as:the limit as",
    "tends-to":"infix=tends to",
    "tends-to-from-above":"infix=tends to from above",
    "tends-to-from-below":"infix=tends to from below",


    ### Sets
    "set": "function= ; set: the set",
    "set-difference":"function=set difference; and || infix=minus", # NOTE: not tested
    "complement":"function=complement",
    #"empty-set":"nofix=empty set",
    "cardinality":"function=cardinality", # NOTE: does not have a defined speech template in website
    "list":"function=list",
    "tuple": "function= ; tuple: the tuple",


    ### Sequence and Series
    "sum":"function= ; sum over : sum ; ", #: sum over : sum from; to",
    "product":"function=product || function=product over || function=product from; to",


    ### Elementary classical functions
    "sine":"function=sin: sine",
    "cosine":"function=cos: cosine",
    "tangent":"function=tan: tangent",
    "secant":"function=seech: secant",
    "cosecant":"function=co-seech: cosecant",
    "cotangent":"function=co-tan: cotangent",

    "arcsine":"function=arcsine",
    "arccosine":"function=arccosine",
    "arctangent":"function=arctangent",
    "arcsecant":"function=arcsecant",
    "arccosecant":"function=arc-cosecant",
    "arccotangent":"function=arc-cotangent",

    "hyperbolic-sine":"function=shine",
    "hyperbolic-cosine":"function=cosh",
    "hyperbolic-tangent":"function=tanch",
    "hyperbolic-secant":"function=sech",
    "hyperbolic-cosecant":"function=cosech",
    "hyperbolic-cotangent":"function=coth",

    "arc-hyperbolic-sine":"function=arc shine",
    "arc-hyperbolic-cosine":"function=arc cosh",
    "arc-hyperbolic-tangent":"function=arc tanch",
    "arc-hyperbolic-secant":"function=arc sech",
    "arc-hyperbolic-cosecant":"function=arc cosech",
    "arc-hyperbolic-cotangent":"function=arc coth",

    "exponential":"function=exponential",
    "natural-logarithm": "function=l n: natural log: natural log",
    "logarithm":"function=log", ##Check arity 2 


    ### Statistics and Probability
    "mean":"function=mean", 
    "standard-deviation":"function=standard deviation",
    "variance":"function=variance",
    "median":"function=median",
    "mode":"function=mode",

    "conditional-probability":"function=probability; given", # NOTE: Check test


    ### Linear Algebra
    "vector": "function= ; vector || prefix=vector", # prefix not tested, also prefix not on webpage
    "matrix":"function=matrix", # NOTE: Failing test, recheck
    "determinant":"function=determinant",
    "adjugate":"function=adjugate",
    "magnitude":"function=magnitude",
    "norm": "function=; norm: norm: norm; end norm",
    "span":"function=span",

    "unit-vector":"prefix=unit vector",

    "identity-matrix":"nofix=identity matrix", # NOTE: no function specified
    "transpose":"function=transpose || postfix=transpose", # postfix needs testing
    "dimensional-product":"infix=by", # INFIX


    ### Constants and Sets
    "set-of-integers":"nofix=ℤ: set of all integers",
    "set-of-reals":"nofix=ℝ: set of all real numbers",
    "set-of-rationals":"nofix=ℚ: set of all rational numbers",
    "set-of-natural-numbers":"nofix=ℕ: set of all natural numbers",
    "set-of-complex-numbers":"nofix=ℂ: set of all complex numbers",
    "set-of-primes":"nofix=ℙ: set of all prime numbers",

    
    ### Geometry
    "line-segment":"prefix=line segment",
    "directed-line-segment":"prefix=directed line segment", 
    "line":"prefix=line",
    "ray":"prefix=ray",
    "arc":"prefix=arc",

    "length":"function=length",
    "area":"function=area",

    "point":"prefix=point",  ## NOTE: Has ??? for property in site. Should it be prefix? Or something else.

    ### Separators
    "time-separator":"infix=",

    ### General Concepts 
    "fenced-group":"function=fenced-group", # appears both under general concepts and grouping
     # NOTE: in site mentions "the pair x and y", due to being defined as function, needs the "of" keyword
    "ordered-pair": "function= ; the pair; and", # Needs to be tested, test converts "and" to "comma,"
    "indexed-by": "infix= ; sub; end sub: end sub: end subscript",
    # "indexed-by": "infix= ; indexed by; ",
    
    "highlight":"postfix=highlighted",
    "least-common-denominator":"function=least common denominator",
    "rate":"infix=per",
    "translation":"function= translation by; comma", # NOTE: not tested, changes "translation" -> "comma" in test
    "constraint":"infix= ; with constraint; ", 
    
    "binomial-coefficient":"infix=choose",
    "pochhammer":"function=permutation",
    "permutation-cycle":"function=permutation cycle",
    "embellished-name":"infix=with annotation",

    ### Grouping
    "annotation":"infix= ; which is ;",              # NOTE: Follows the same order as indexed-by, in site listed as function. Should it be infix?
    "braced-group":"function=grouped; end grouped",  # NOTE: not tested, site is missing "of" keyword function introduces
    #"repeating-decimal":"function=repeating decimal", # NOTE: BREAKS TEST. Check again. Site is missing "of" keyword function introduces.


    ### Other
    ## Default fixity function
    "curl": "function=curl",
    "divergence": "function=div:divergence",
    "gradient": "function=del:gradient",
    "laplacian": "function=laplacian",

    ## Default fixity prefix
    "angle": "prefix=angle",
    "angle-measure": "prefix=angle measure",
    "change": "prefix=change in",
    "for-all": "prefix=for all",
    "measured-angle": "prefix=measured angle",
    "not": "prefix=not",
    "number-of": "prefix=number of",
    "partial-derivative": "prefix=partial",
    "right-angle": "prefix=right angle",
    "square-root-of": "prefix=square root of",
    "there-does-not-exist": "prefix=there does not exist",
    "there-exists": "prefix=there exists",


    ## Default fixity infix
    "and": "infix=and",
    "applied-to": "infix=applied to",
    "approximately": "infix=approximately",
    "congruent": "infix=congruent to",
    "cartesian-product": "infix=cartesian product",
    "composed-with": "infix=composed with",
    "cross-product": "infix=cross: cross product: cross product",
    "defined-as": "infix=defined as",
    "divided-by": "infix=divided by",
    "divides": "infix=divides",
    "does-not-belong-to": "infix=does not belong to",
    "does-not-divide": "infix=does not divide",
    "dot-product": "infix=dot product",
    "downwards-diagonal-ellipsis": "infix=downwards diagonal ellipsis",
    "direct-product": "infix=direct product",
    "element-of": "infix=element of",
    "ellipsis": "infix=ellipsis",
    "equals": "infix=equals",
    "equivalent-to": "infix=equivalent to",
    "evaluates-to": "infix=evaluates to",
    "given": "infix=given",
    "greater-than": "infix=greater than",
    "greater-than-or-equal-to": "infix=greater than or equal to",
    "identically-equals": "infix=identically equals",
    "if-and-only-if": "infix=if and only if",
    "implies": "infix=implies",
    "inner-product": "infix=inner product",
    "intersection": "infix=intersection",
    "less-than": "infix=less than",
    "less-than-or-equal-to": "infix=less than or equal to",
    "list-separator": "infix=comma",
    "maps-to": "infix=maps to",
    "member-of": "infix=member of",
    "minus-or-plus": "infix=minus or plus",
    "not-subset": "infix=not subset of",
    "not-superset": "infix=not superset of",
    "not-equal-to": "infix=not equal to",
    "not-member-of": "infix=not member of",
    "not-parallel-to": "infix=not parallel to",
    "obtained-from": "infix=obtained from",
    "or": "infix=or",
    "outer-product": "infix=outer product",
    "parallel-to": "infix=parallel to",
    "perpendicular": "infix=perpendicular to",
    "plus": "infix=plus || prefix=positive", # Prefix not tested
    "minus": "infix=minus || prefix=negative", # Prefix not tested
    "plus-or-minus": "infix=plus or minus",
    "precedes": "infix=precedes",
    "proportional": "infix=proportional to",
    "range-separator": "infix=through",
    "ratio": "infix=ratio",
    "similar": "infix=similar to",
    "subset": "infix=subset of",
    "subset-or-equal": "infix=subset or equal to",
    "succeeds": "infix=succeeds",
    "such-that": "infix=such that",
    "superset": "infix=superset of",
    "superset-or-equal": "infix=superset or equal to",
    "tilde": "infix=tilde",
    "times": "infix=times",
    "union": "infix=union",
    "upwards-diagonal-ellipsis": "infix=upwards diagonal ellipsis",
    "vertical-ellipsis": "infix=vertical ellipsis",
    "xor": "infix=exclusive or",

    ## Default fixity postfix
    "factorial": "postfix=factorial",
    "percent": "postfix=percent",

    ## Default fixity nofix
    "diameter":"nofix=d: diameter",
    "distance":"nofix=d; D: distance",
    "probability":"nofix=P: probability",
    "radius":"nofix=r: radius",
    "volume":"nofix=V: volume || function=volume",
    "exponential-e":"nofix=e",
    "imaginary-i":"nofix=i",
    "differential-d":"nofix=d",
    "golden-ratio":"nofix=golden ratio",
    

    ## Other : Not tested, don't appear in https://w3c.github.io/mathml-docs/intent-core-concepts/
    "modified-variable": "silent= ",
    "say-super": "infix=super: superscript: superscript",   # used with 'mo' for superscripts (e.g, "<")
    "skip-super": "silent=",   # used with 'mo' for superscripts (e.g, "*")
    # "large-op": "infix=over || other=from,to",
    "lim-sup": "prefix=lim sup as: the limit superior as: the limit superior as",
    "lim-inf": "prefix=lim inf as: the limit inferior as : the limit inferior as",
    "logarithm-with-base": "prefix=log base: the log base: the log base",
    # "pochhammer": "infix=permutations of",  # arguments are in reverse order, so can't work here
    "trace": "function= ; trace : trace: the trace; end trace",
    "dimension": "function=; dimension : dimension: the dimension; end dimension",
    "homomorphism": "function= ; homomorphism : homomorphism: the homomorphism; end homomorphism",
    "kernel": "function= ; kernel : kernel: the kernel; end kernel",
    
    "chemistry-concentration": "function= ; concentration: concentration of: the concentration of; end concentration",
  }

  # Names of functions that in terse mode don't say "of" (or it's equivalent in other languages)
- TerseFunctionNames: {
    "divergence", "del:gradient", "curl"
  }

- NavigationParts: {
    # These are the parts of a formula that can be navigated to
    "large-op": "base; lower limit; upper limit",
    "mfrac": "numerator; denominator",
    "fraction": "numerator; denominator",
    "msqrt": "root",
    "square-root": "root",
    "mroot": "root; root index",
    "root": "root; root index",
    "msub": "base; subscript",
    "sub": "base; subscript",
    "logarithm-with-base": "base",
    "indexed-by": "base; subscript",
    "msup": "base; superscript",
    "say-super": "base; superscript",
    "skip-super": "base; superscript",
    "power": "base; exponent",
    "msubsup": "base; subscript; superscript",
    "munder": "base; under limit",
    "mover": "base; upper limit",
    "munderover": "base; under limit; upper limit",

    # words for moving into and out of one of the parts (e.g., "move right 'out of' numerator, 'in' denominator")
    # it's a hack to put them here, but at least they are grouped with the other navigation parts
    "in": "in",
    "out": "out of",
  }

- KnownWords: {
    # MathCAT will put together some runs of three or more mi's (a common mistake), but skips those in alphabetical order.
    # This is a list of exceptions so that they do get put together. Don't list words with repeated letters.

    # I asked bard and chatgpt for formula words that are alphabetical, and they failed.
    # Here are the words I managed to find, but it almost certainly not complete. Change the list for other languages.
    "Abel", "aery", "ails", "airy", "amps", "ceil", "cents", "chop", "flux", "flow", "knot", "most"
  }

- SIPrefixes: {
    "Q": "quetta", "R": "ronna", "Y": "yotta", "Z": "zetta", "E": "exa", "P": "peta", "T": "tera", "G": "giga", "M": "mega", "k": "kilo", "h": "hecto", "da": "deka",
    "d": "deci", "c": "centi", "m": "milli", "µ": "micro", "n": "nano", "p": "pico", "f": "femto", "a": "atto", "z": "zepto", "y": "yocto", "r": "ronto", "q": "quecto"
  }

# this is a list of all units that accept SIPrefixes
# from www.bipm.org/documents/20126/41483022/SI-Brochure-9-EN.pdf
#   Prefixes may be used with any of the 29 SI units with special names
#   The SI prefixes can be used with several of accepted units, but not, for example, with the non-SI units of time.
- SIUnits: {
    # base units
    "A": "amp",
    "cd": "candela",
    "K": "kelvin", "K": "kelvin", # U+212A
    "g": "gram",
    "m": "metre",     # British spelling works for US also
    "mol": "mole",
    "s": "second", "sec": "second",  # "sec" not actually legal

    # derived units
    "Bq": "becquerel",
    "C": "coulomb",
    "°C": "degree celsius", "℃": "degree celsius", # should only take negative powers
    "F": "farad",
    "Gy": "gray",
    "H": "henry",
    "Hz": "hertz",
    "J": "joule",
    "kat": "katal",
    "lm": "lumen",
    "lx": "lux",
    "N": "newton",
    "Ω": "ohm", "Ω": "ohm",       # Greek Cap letter, U+2126 OHM SIGN
    "Pa": "pascal",
    "S": "siemens",
    "Sv": "sievert",
    "T": "tesla",
    "V": "volt",
    "W": "watt",
    "Wb": "weber",

    # accepted (plus a few variants) that take SI prefixes
    "l": "litre", "L": "litre", "ℓ": "litre",  # Should only take negative powers; British spelling works for US also
    "t": "metric ton",           # should only take positive powers
    "Da": "dalton",
    "Np": "neper",               # should only take negative powers
    "u": "atomic mass unit",     # 'u' is correct: https://en.wikipedia.org/wiki/Dalton_(unit)
    "eV": "electronvolt",
    "rad": "radian",             # should only take negative powers
    "sr": "steradian",           # should only take negative powers
  
    # others that take a prefix
    "a": "annum",               # should only take positive powers
    "as": "arcsecond",          # see en.wikipedia.org/wiki/Minute_and_second_of_arc

    # technically wrong, but used in practice with SI Units
    "b": "bit",               # should only take positive powers
    "B": "byte",              # should only take positive powers
    "Bd": "baud",             # should only take positive powers
  }


- UnitsWithoutPrefixes: {
    # time
    "″": "second", "\"": "second",
    "′": "minute", "'": "minute","min": "minute",
    "h": "hour", "hr": "hour", "Hr": "hour",
    "d": "day", "dy": "day",
    "w": "week", "wk": "week",
    "y": "year", "yr": "year",    

    # angles
    "°": "degree", "deg": "degree", # should only take negative powers
    "arcmin": "arcminute",
    "amin": "arcminute",
    "am": "arcminute",
    "MOA": "arcminute",
    "arcsec": "arcsecond",
    "asec": "arcsecond",

    # distance
    "au": "astronomical unit", "AU": "astronomical unit",
    "ltyr": "light year", "ly": "light year",
    "pc": "parsec",
    "Å": "angstrom", "Å": "angstrom",           # U+00C5 and U+212B
    "fm": "fermi",

    # others
    "ha": "hectare",
    # "B": "bel",    # "B" more commonly means bytes
    "dB": "decibel", # already logarithmic, so not used with SI prefixes

    "amu": "atomic mass unit",
    "atm": "atmosphere",
    "bar": "bar",
    "cal": "calorie",
    "Ci": "curie",
    "grad": "gradian",
    "M": "molar",
    "R": "roentgen",
    "rpm": "revolution per minute",
    "℧": "m-h-o",
    "dyn": "dyne",
    "erg": "erg",

    # powers of 2 used with bits and bytes
    "Kib": "kibi-bit", "Mib": "mebi-bit", "Gib": "gibi-bit", "Tib": "tebi-bit", "Pib": "pebi-bit", "Eib": "exbi-bit", "Zib": "zebi-bit", "Yib": "yobi-bit",
    "KiB": "kibi-byte", "MiB": "mebi-byte", "GiB": "gibi-byte", "TiB": "tebi-byte", "PiB": "pebi-byte", "EiB": "exbi-byte", "ZiB": "zebi-byte", "YiB": "yobi-byte",
  }

  # this will only be used if the language is English, so it can be empty for other countries
- EnglishUnits: {
    # length
    "in": "inch",
    "ft": "foot",
    "mi": "mile",
    "rd": "rod",
    "li": "link",
    "ch": "chain",

    # area
    "sq in": "square inch", "sq. in": "square inch", "sq. in.": "square inch",
    "sq ft": "square foot", "sq. ft": "square foot", "sq. ft.": "square foot",
    "sq yd": "square yard", "sq. yd": "square yard", "sq. yd.": "square yard",
    "sq mi": "square mile", "sq. mi": "square mile", "sq. mi.": "square mile",
    "ac": "acre",
    "FBM": "board foot",

    # volume
    "cu in": "cubic inch", "cu. in": "cubic inch", "cu. in.": "cubic inch",
    "cu ft": "cubic foot", "cu. ft": "cubic foot", "cu. ft.": "cubic foot",
    "cu yd": "cubic yard", "cu. yd": "cubic yard", "cu. yd.": "cubic yard",
    "bbl": "barrel", "BBL": "barrel",
    "pk": "peck",
    "bu": "bushel",
    "tsp": "teaspoon",
    "tbl": "tablespoon",

    # liquid
    "fl dr": "fluid dram",
    "fl oz": "fluid ounce",
    "gi": "gill",
    "cp": "cup", "cup": "cup",
    "pt": "pint",
    "qt": "quart",
    "gal": "gallon",

    # weight
    "gr": "grain",
    "dr": "dram",
    "oz": "ounce", "℥": "ounce",
    "lb": "pound",
    "cwt": "hundredweight",
    "dwt": "pennyweight",
    "oz t": "troy ounce",
    "lb t": "troy pound",

    # energy
    "hp": "horsepower",
    "BTU": "BTU",
    "°F": "degree fahrenheit", "℉": "degree fahrenheit",

    # other
    "mph": "mile per hour",
    "mpg": "mile per gallon",
  }

- CurrencySymbols: {
    "$": "dollar", "¢": "cent", "€": "euro", "£": "pound", "₡": "colón", "₤": "lira", "₨": "rupee",
    "₩": "won", "₪": "shekel", "₱": "peso", "₹": "rupee", "₺": "lira", "₿": "bitcoin",
    # could add more currencies...
  }

- PluralForms: {
  # FIX: this needs to be flushed out
    "inch": "inches", "square inch": "square inches", "cubic inch": "cubic inches",
    "foot": "feet", "square foot": "square feet", "cubic foot": "cubic feet",
    "board foot": "board feet",
    "degree celsius": "degrees celsius",
    "degree fahrenheit": "degrees fahrenheit",
    "henry": "henries",
    "hertz": "hertz",
    "lux": "lux",
    "siemens": "siemens",
    "revolution per minute": "revolutions per minute",
    "mile per hour": "miles per hour",
    "mile per gallon": "miles per gallon",
    "colón": "colones", "lira": "lire", "won": "won", "bitcoin": "bitcoin"
  }

# Lines starting with "#" are a comment
# Each definition in this file is of the form
# - name: { "...", "..." "..." }
# For numbers, 
# - name: [] "...", "..." "..." ]


# ----------------  Cardinal and Ordinal Numbers  --------------------------
# The following definitions are used to convert numbers to words
# The are mainly used for ordinals, of which there are two cases:
# 1. Regular ordinals: first, second, third, ...
# 2. Ordinals used in the denominator of fractions (e.g, one half, one third)
#    When used in the denominator of fractions, a plural version might be
#    used (e.g., two halves, two thirds)
# Although a lot of languages are regular after a few entries, for generality,
# the following lists should be filled out even though they are the same
# or easily derived from others in many languages (e.g, an 's' is added for plurals).
# The larger ordinal numbers (e.g, millionth) is used when there are only
# '0's after that decimal place (e.g., 23000000).:w

# All definitions start 0, 10, 100, etc.

# The definitions for the "ones" should extend until a regular pattern begins
#   The minimum length is 10.

# For English, a regular pattern starts at twenty
- NumbersOnes: [
        "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
        "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen",
        "seventeen", "eighteen", "nineteen"
    ]

- NumbersOrdinalOnes: [
        "zeroth", "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth",
        "tenth", "eleventh", "twelfth", "thirteenth", "fourteenth", "fifteenth", "sixteenth",
        "seventeenth", "eighteenth", "nineteenth"
    ]

- NumbersOrdinalPluralOnes: [
        "zeroth", "first", "seconds", "thirds", "fourths", "fifths", "sixths", "sevenths", "eighths", "ninths",
        "tenths", "elevenths", "twelfths", "thirteenths", "fourteenths", "fifteenths", "sixteenths",
        "seventeenths", "eighteenths", "nineteenths"
    ]

    # stop when regularity begins
- NumbersOrdinalFractionalOnes: [
        "zero", "first", "half"
    ]

    # stop when regularity begins
- NumbersOrdinalFractionalPluralOnes: [
        "zeros", "firsts", "halves"
    ]


    # What to use for multiples of 10
- NumbersTens: [
        "", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"
    ]

- NumbersOrdinalTens: [
        "", "tenth", "twentieth", "thirtieth", "fortieth", "fiftieth", "sixtieth", "seventieth", "eightieth", "ninetieth"
    ]

- NumbersOrdinalPluralTens: [
        "", "tenths", "twentieths", "thirtieths", "fortieths", "fiftieths", "sixtieths", "seventieths", "eightieths", "ninetieths"
    ]


- NumbersHundreds: [
      "", "one hundred", "two hundred", "three hundred", "four hundred", "five hundred",
        "six hundred", "seven hundred", "eight hundred", "nine hundred"
    ]

- NumbersOrdinalHundreds: [
      "", "one hundredth", "two hundredth", "three hundredth", "four hundredth", "five hundredth",
        "six hundredth", "seven hundredth", "eight hundredth", "nine hundredth"
    ]

- NumbersOrdinalPluralHundreds: [
      "", "one hundredths", "two hundredths", "three hundredths", "four hundredths", "five hundredths",
        "six hundredths", "seven hundredths", "eight hundredths", "nine hundredths"
    ]
      

    # At this point, hopefully the language is regular. If not, code needs to be written
- NumbersLarge: [
        "", "thousand", "million", "billion", "trillion", "quadrillion",
        "quintillion", "sextillion", "septillion", "octillion", "nonillion",
    ]
      
- NumbersOrdinalLarge: [
        "", "thousandth", "millionth", "billionth", "trillionth", "quadrillionth",
        "quintillionth", "sextillionth", "septillionth", "octillionth", "nonillionth"
    ]
      
- NumbersOrdinalPluralLarge: [
        "", "thousandths", "millionths", "billionths", "trillionths", "quadrillionths",
        "quintillionths", "sextillionths", "septillionths", "octillionths", "nonillionths"
    ]
