diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,8 @@
+# `ordinal` changelog
+
+For a full list of changes, see the history on [GitHub](https://github.com/hapytex/ordinal).
+
+## Version 0.1.0.0
+
+The first version that is deployed on Hackage. This version contains
+`toCardinal` and `toOrdinal` functions for /Dutch/, /English/ and /French/.
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright Willem Van Onsem (c) 2020
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Willem Van Onsem nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,73 @@
+# ordinal
+
+[![Build Status of the package by Travis](https://travis-ci.com/hapytex/ordinal.svg?branch=master)](https://travis-ci.com/hapytex/ordinal)
+[![Build Status of the package by Hackage](https://matrix.hackage.haskell.org/api/v2/packages/ordinal/badge)](https://matrix.hackage.haskell.org/#/package/ordinal)
+[![Hackage version badge](https://img.shields.io/hackage/v/ordinal.svg)](https://hackage.haskell.org/package/ordinal)
+
+A package to convert numbers to the words. It contains a datatype for
+algorithmic conversion that can convert the number for *most* languages.
+It converts numbers to its *cardinal* and *ordinal* format.
+
+The package is based on Python's [**`num2words`** package \[GitHub\]](https://github.com/savoirfairelinux/num2words).
+
+The following languages are currently supported (in *alphabetical* order):
+
+ 1. Dutch (nl);
+ 2. English (en); and
+ 3. French (fr)
+
+## Usage
+
+One can import the `Text.Numerals` module, and use the `toCardinal`
+and `toOrdinal` functions with a number-to-word algorithm that is exported by
+the `Text.Numerals.Languages` module, for example:
+
+```
+Prelude Text.Numerals Data.Text.IO> Data.Text.IO.putStrLn (toCardinal english 42)
+forty-two
+Prelude Text.Numerals Data.Text.IO> Data.Text.IO.putStrLn (toOrdinal french 42)
+quarante-deuxième
+```
+
+One can also define a language algorithm themselves, for this one can look at
+the source code of the language modules.
+
+## Package structure
+
+The modules are all located under `Text.Numerals` module. The `Text.Numerals`
+module exports the main modules.
+
+The `Text.Numerals.Class` module defines classes, data types and synonyms that
+provide an interface to convert numbers to words.
+
+The `Text.Numerals.Algorithm` module contains algorithms to make converting
+numbers to words more convienient. The module `Text.Numerals.Algorithm.Template`
+contains functions for *template Haskell*, at the moment this only contains a
+function to make an `ordinize` function.
+
+The `Text.Numerals.Prefix` module contains numerical prefixes, at the moment
+only *Latin* prefixes. These are used for *short scale* and *long scale*
+algorithms to specify millions, billions, etc. in languages.
+
+The `Text.Numerals.Languages` module exports for each implemented language its
+algorithm, this makes working with multiple languages more convienient. Under
+this module there are dedicated modules per language that do not only export the
+algorithm for that language, but also helper functions and constants.
+
+## `ordinal` is not *safe* Haskell
+
+The package uses the `Data.Vector` module which is not safe, and therefore
+`ordinal` is not safe either.
+
+## Contribute
+
+You can contribute by making a pull request on the [*GitHub
+repository*](https://github.com/hapytex/ordinal).
+
+You can contact the package maintainer by sending a mail to
+[`hapytexeu+gh@gmail.com`](mailto:hapytexeu+gh@gmail.com).
+
+---
+
+This package is dedicated to *Wouter Folens* (\* 2019), in the hope that he will
+learn about transforming numbers into words.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,3 @@
+import Distribution.Simple
+
+main = defaultMain
diff --git a/ordinal.cabal b/ordinal.cabal
new file mode 100644
--- /dev/null
+++ b/ordinal.cabal
@@ -0,0 +1,74 @@
+name:                ordinal
+version:             0.1.0.0
+synopsis:            Convert numbers to words in different languages.
+description:
+    A package based on Python's num2words package that converts numbers
+    to words in different languages.
+
+    It contains functions and data types to create a numbers-to-words
+    algorithm for different languages, and converts numbers both to
+    cardinal numbers and ordinal numbers.
+homepage:            https://github.com/hapytex/ordinal#readme
+license:             BSD3
+license-file:        LICENSE
+author:              Willem Van Onsem
+maintainer:          hapytexteu+gh@gmail.com
+copyright:           2020 Willem Van Onsem
+category:            utils
+build-type:          Simple
+extra-source-files:
+    README.md
+  , CHANGELOG.md
+cabal-version:       >=1.10
+
+library
+  hs-source-dirs:      src
+  exposed-modules:
+      Text.Numerals
+    , Text.Numerals.Algorithm
+    , Text.Numerals.Algorithm.Template
+    , Text.Numerals.Class
+    , Text.Numerals.Languages
+    , Text.Numerals.Languages.Dutch
+    , Text.Numerals.Languages.English
+    , Text.Numerals.Languages.French
+    , Text.Numerals.Prefix
+  other-modules:
+      Text.Numerals.Internal
+  build-depends:
+      base >= 4.7 && < 5
+    , text >= 0.1
+    , template-haskell >=2.15.0.0
+    , containers >=0.5
+    , vector >= 0.7
+  default-language:    Haskell2010
+
+test-suite             cardinal
+  type:                exitcode-stdio-1.0
+  main-is:             Main.hs
+  hs-source-dirs:      test
+  other-modules:
+      Text.Numerals.LanguageTest
+      Text.Numerals.Languages.DutchSpec
+      Text.Numerals.Languages.EnglishSpec
+      Text.Numerals.Languages.FrenchSpec
+  build-depends:
+      base
+    , ordinal
+    , hspec ==2.*
+    , QuickCheck >=2.13 && <2.14
+    , text >= 0.1
+  build-tool-depends: hspec-discover:hspec-discover == 2.*
+  default-language:    Haskell2010
+  default-extensions:
+      BlockArguments
+    , OverloadedStrings
+  ghc-options:
+    -Wall -Wcompat -Wcompat
+    -Wincomplete-record-updates
+    -Wincomplete-uni-patterns
+    -Wredundant-constraints
+
+source-repository head
+  type:     git
+  location: https://github.com/hapytex/ordinal
diff --git a/src/Text/Numerals.hs b/src/Text/Numerals.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Numerals.hs
@@ -0,0 +1,21 @@
+{-|
+Module      : Text.Numerals
+Description : The main module that converts numbers to words. This module re-exports a set of modules.
+Maintainer  : hapytexeu+gh@gmail.com
+Stability   : experimental
+Portability : POSIX
+
+The main module of the @ordinal@ package. This module re-exports the most important modules of the package to convert numbers to words in the supported languages and functions to construct algorithmic transformations.
+-}
+
+module Text.Numerals (
+    module Text.Numerals.Algorithm
+  , module Text.Numerals.Class
+  , module Text.Numerals.Languages
+  , module Text.Numerals.Prefix
+  ) where
+
+import Text.Numerals.Algorithm
+import Text.Numerals.Class
+import Text.Numerals.Languages
+import Text.Numerals.Prefix
diff --git a/src/Text/Numerals/Algorithm.hs b/src/Text/Numerals/Algorithm.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Numerals/Algorithm.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE RankNTypes, TupleSections #-}
+
+{-|
+Module      : Text.Numerals.Algorithm
+Description : A module that contains functions to construct algorithmic conversions from numbers to words.
+Maintainer  : hapytexeu+gh@gmail.com
+Stability   : experimental
+Portability : POSIX
+
+A module that contains data types and functions to automatically convert a number to words. It has tooling for a 'NumeralsAlgorithm'
+as well as a 'HighNumberAlgorithm' that is used to generate a 'ShortScale' or 'LongScale'.
+-}
+
+module Text.Numerals.Algorithm (
+    -- * Data types for number algorithms
+    NumeralsAlgorithm
+  , numeralsAlgorithm
+    -- * Large number algorithms
+  , HighNumberAlgorithm(ShortScale, LongScale)
+  , shortScale, longScale
+    -- * Conversion to a 'NumberSegment'
+  , toSegments
+  , toSegmentLow, toSegmentMid, toSegmentHigh
+    -- * Segment compression
+  , compressSegments
+--  , _toNumberScale
+  ) where
+
+import Data.Foldable(toList)
+import Data.List(sortOn)
+import Data.Maybe(maybe)
+import Data.Text(Text, cons)
+import Data.Vector(Vector, (!), (!?), fromList)
+import qualified Data.Vector as V
+
+import Text.Numerals.Class(NumToWord(toCardinal, toOrdinal), FreeMergerFunction, FreeValueSplitter, MergerFunction, MNumberSegment, NumberSegment(NumberSegment), NumberSegmenting, ValueSplit(valueSplit), ValueSplitter)
+import Text.Numerals.Internal(_thousand, _iLogFloor)
+import Text.Numerals.Prefix(latinPrefixes)
+
+-- | A data type for algorithmic number to word conversions. Most western
+-- languages /likely/ can work with this data type.
+data NumeralsAlgorithm = NumeralsAlgorithm {
+    minusWord :: Text  -- ^ The word used as prefix to denote negative numbers.
+  , oneWord :: Text  -- ^ The word used to denote /one/ in the language.
+  , lowWords :: Vector Text  -- ^ A 'Vector' of small numbers, the first item is the word for /two/ and each successor is the word for the next number.
+  , midWords :: [(Integer, Text)]  -- ^ A list of 2-tuples where the first item contains the value, and the second the corresponding word, the values are ordered in descending value order.
+  , highWords :: FreeValueSplitter  -- ^ A function that is used to generate words for large values (greater than or equal to one /million/), often constructed with the /short scale/ or /long scale/.
+  , mergeFunction :: FreeMergerFunction  -- ^ A function that specifies how to merge words based on the grammar of that specific language.
+  , ordinize :: Text -> Text  -- ^ A function to conver the /cardinal/ form of a number in an /ordinal/ one.
+  }
+
+
+instance NumToWord NumeralsAlgorithm where
+    toCardinal NumeralsAlgorithm { minusWord=minusWord, oneWord=oneWord, lowWords=lowWords, midWords=midWords, highWords=highWords, mergeFunction=mergeFunction } = cardinal
+       where cardinal i
+                  | i < 0 = minusWord <> cons ' ' (go (-i))
+                  | otherwise = go i
+                  where go = compressSegments oneWord mergeFunction . toSegments lowWords midWords highWords
+
+    toOrdinal na@NumeralsAlgorithm { ordinize=ordinize } = ordinize . toCardinal na
+
+
+_toNumberScale :: (Integral i, Integral j) => i -> (j, i)
+_toNumberScale i = (l, k)
+    where ~(_, l, k) = _iLogFloor _thousand i
+
+-- | A data type used for to map larger numbers to words. This data type
+-- supports the /short scale/ and /long scale/ with /Latin/ prefixes, and
+-- custom suffixes.
+data HighNumberAlgorithm
+  = ShortScale Text
+  | LongScale Text Text
+  deriving (Eq, Ord, Read, Show)
+
+-- | Construct a 'FreeValueSplitter' function for the given suffix for a /short scale/.
+shortScale :: Text -> FreeValueSplitter
+shortScale = valueSplit . ShortScale
+
+-- | Construct a 'FreeValueSplitter' function for the given suffixes for a /long scale/.
+longScale :: Text -> Text -> FreeValueSplitter
+longScale suf1 = valueSplit . LongScale suf1
+
+_highWithSuffix :: Text -> Int -> Maybe Text
+_highWithSuffix suf = fmap (<> suf) . (latinPrefixes !?)
+
+_highToText :: HighNumberAlgorithm -> Int -> Maybe Text
+_highToText (ShortScale suf) j = _highWithSuffix suf j
+_highToText (LongScale suf1 suf2) j
+    | even j = _highWithSuffix suf1 k
+    | otherwise = _highWithSuffix suf2 k
+    where k = div j 2
+
+instance ValueSplit HighNumberAlgorithm where
+    valueSplit vs i = (m,) <$> _highToText vs (j-2)
+        where ~(j, m) = _toNumberScale i
+
+-- | A /smart constructor/ for the 'NumeralsAlgorithm' type. This constructor
+-- allows one to use an arbitrary 'Foldable' type for the low words and mid
+-- words. It will also order the midwords accordingly.
+numeralsAlgorithm :: (Foldable f, Foldable g) => Text -> Text -> Text -> f Text -> g (Integer, Text) -> FreeValueSplitter -> FreeMergerFunction -> (Text -> Text) -> NumeralsAlgorithm
+numeralsAlgorithm minus zero one lowWords midWords = NumeralsAlgorithm minus one (fromList (zero : one : toList lowWords)) (sortOn (negate . fst) (toList midWords))
+
+_maybeSegment :: Integral i => (i -> NumberSegment i) -> i -> MNumberSegment i
+_maybeSegment f = go
+    where go 0 = Nothing
+          go i = Just (f i)
+
+-- | Convert the given number to a 'NumberSegment' with the given 'Vector' of
+-- low numbers. Mid words and large numbers are not taken into account. This
+-- is often the next step after the 'toSegmentMid'.
+toSegmentLow :: Integral i
+  => Vector Text  -- ^ A 'Vector' of low words.
+  -> NumberSegmenting i  -- ^ The function that maps the number to the 'NumberSegment'.
+toSegmentLow vs = go
+    where go i | i >= nvs = NumberSegment (Just (go dv)) nvs lv (tl md)
+               | otherwise = NumberSegment Nothing i (vs ! fromIntegral i) Nothing
+               where (dv, md) = divMod i nvs
+          lv = V.last vs
+          nvs = fromIntegral (V.length vs) - 1
+          tl = _maybeSegment go
+
+_splitRecurse :: Integral i => (i -> NumberSegment i) -> (i -> NumberSegment i) -> i -> Text -> i -> NumberSegment i
+_splitRecurse f g im v j = NumberSegment hd im v (_maybeSegment g md)
+    where hd | dv == 1 = Nothing
+             | otherwise = Just (f dv)
+          ~(dv, md) = divMod j im
+
+-- | Convert the given number to a 'NumberSegment' with the given 'Vector' of
+-- low numbers, and the /sorted/ list of mid numbers. Large numbers are not
+-- taken into account. This is often the next step after the 'toSegmentHigh'.
+toSegmentMid :: Integral i
+  => Vector Text  -- ^ A 'Vector' of low words.
+  -> [(Integer, Text)]  -- ^ The list of name and the names of these numbers in /descending/ order for the mid words.
+  -> NumberSegmenting i  -- ^ The function that maps the number to the 'NumberSegment'.
+toSegmentMid lows = go
+    where go [] n = toSegmentLow lows n
+          go ma@((m, v) : ms) n
+              | im > n = goms n
+              | otherwise = _splitRecurse (go ma) goms im v n
+              where im = fromIntegral m
+                    goms = go ms
+
+-- | Convert the given number to a 'NumberSegment' with the given 'Vector' of
+-- low numbers, the /sorted/ list of mid numbers, and a 'FreeValueSplitter' for
+-- large numbers.
+toSegmentHigh :: Integral i
+  => Vector Text  -- ^ A 'Vector' of low words.
+  -> [(Integer, Text)]  -- ^ The list of name and the names of these numbers in /descending/ order for the mid words.
+  -> ValueSplitter i  -- ^ The 'ValueSplitter' used for large numbers, likely a splitter from a /short scale/ or /long scale/.
+  -> NumberSegmenting i  -- ^ The function that maps the number to the 'NumberSegment'.
+toSegmentHigh lows mids highs = go
+    where go v | Just (i, t) <- highs v = _splitRecurse go go i t v
+               | otherwise = toSegmentMid lows mids v
+
+-- | Convert the given number to a 'NumberSegment' with the given 'Vector' of
+-- low numbers, the /sorted/ list of mid numbers, and a 'FreeValueSplitter' for
+-- large numbers.
+toSegments :: Integral i
+  => Vector Text  -- ^ A 'Vector' of low words.
+  -> [(Integer, Text)]  -- ^ The list of name and the names of these numbers in /descending/ order for the mid words.
+  -> ValueSplitter i  -- ^ The 'ValueSplitter' used for large numbers, likely a splitter from a /short scale/ or /long scale/.
+  -> NumberSegmenting i  -- ^ The function that maps the number to the 'NumberSegment'.
+toSegments = toSegmentHigh
+
+-- | Use the given 'MergerFunction' to compress the 'NumberSegment' to a single
+-- 'Text' object that represents the given number.
+compressSegments :: Integral i
+  => Text  -- ^ The value used for /one/ in the specific language.
+  -> MergerFunction i  -- ^ The 'MergerFunction' for the specific language that implements the grammar rules how to merge values.
+  -> NumberSegment i  -- ^ The given 'NumberSegment' value to turn into a 'Text' object.
+  -> Text  -- ^ The 'Text' object that contains the name of the number stored in the 'NumberSegment'.
+compressSegments one' merger = snd . go
+    where go (NumberSegment dv' i t md') = _mergeTail md' (dvi * i, merger dvi i dv t)
+              where (dvi, dv) = _unwrap dv'
+          _unwrap = maybe (1, one') go
+          _mergeTail Nothing r = r
+          _mergeTail (Just md') (vi, v) = (vi + mdi, merger vi mdi v md)
+              where (mdi, md) = go md'
diff --git a/src/Text/Numerals/Algorithm/Template.hs b/src/Text/Numerals/Algorithm/Template.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Numerals/Algorithm/Template.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE TemplateHaskellQuotes #-}
+
+{-|
+Module      : Text.Numerals.Algorithm.Template
+Description : A module that constructs template Haskell to make defining an ordinize function more convenient.
+Maintainer  : hapytexeu+gh@gmail.com
+Stability   : experimental
+Portability : POSIX
+
+The module is designed to construct an 'Exp' based on the mapping data provided. It will check if the text object
+ends with the given suffix, and replace the suffix with another suffix. It aims to compile this into an efficient function.
+-}
+
+module Text.Numerals.Algorithm.Template (
+    ordinizeFromDict
+  ) where
+
+import Data.Map.Strict(Map, elems, fromListWith)
+import Data.Text(isSuffixOf, pack, snoc)
+
+import Text.Numerals.Internal(_replaceSuffix)
+
+import Language.Haskell.TH(Body(GuardedB), Clause(Clause), Dec(FunD), Exp(AppE, ConE, LitE, VarE), Guard(NormalG), Lit(CharL, IntegerL, StringL), Name, Pat(VarP), mkName)
+
+_getPrefix :: [Char] -> [Char] -> (Int, [Char])
+_getPrefix [] bs = (0, bs)
+_getPrefix aa@(a:as) ba@(b:bs)
+     | a == b = _getPrefix as bs
+     | otherwise = (length aa, ba)
+
+_orCondition :: [Exp] -> Guard
+_orCondition [] = NormalG (ConE 'False)
+_orCondition xs = NormalG (foldr1 (AppE . AppE (VarE '(||))) xs)
+
+_packText :: String -> Exp
+_packText = AppE (VarE 'pack) . LitE . StringL
+
+_packExp :: Int -> String -> Exp -> Exp
+_packExp 0 [] nm = nm
+_packExp 0 [s] nm = AppE (AppE (VarE 'snoc) nm) (LitE (CharL s))
+_packExp 0 sc nm = AppE (AppE (VarE '(<>)) nm) (_packText sc)
+_packExp l sc nm = AppE (AppE (AppE (VarE '_replaceSuffix) (LitE (IntegerL (fromIntegral l)))) (_packText sc)) nm
+
+_ordinizeSingle :: Exp -> String -> String -> ((Int, String), ([Exp], Exp))
+_ordinizeSingle nm sa sb = (p, ([AppE (AppE (VarE 'isSuffixOf) (_packText sa)) nm], _packExp l sc nm))
+    where p@(l, sc) = _getPrefix sa sb
+
+_ordinizeMap :: Exp -> [(String, String)] -> Map (Int, String) ([Exp], Exp)
+_ordinizeMap n = fromListWith f . map (uncurry (_ordinizeSingle n))
+    where f (as, a) (bs, _) = (bs ++ as, a)
+
+_toGuard :: ([Exp], Exp) -> (Guard, Exp)
+_toGuard (gs, es) = (_orCondition gs, es)
+
+-- | Construct a function with the given name that maps suffixes in the first
+-- item of the 2-tuples to the second item of the 2-tuples. It turns this into a
+-- declaration.
+ordinizeFromDict
+  :: String  -- ^ The name of the function, often this is just @ordinize'@
+  -> [(String, String)]  -- ^ The list of suffixes and their corresponding mapping, the suffixes should be non-overlapping.
+  -> Name  -- ^ The name of the post-processing function in case there was no match, one can for example use 'id'.
+  -> Dec  -- ^ The corresponding declaration.
+ordinizeFromDict nm ts pp = FunD (mkName nm) [Clause [VarP t] (GuardedB (map _toGuard (elems (_ordinizeMap t' ts)) ++ [(NormalG (ConE 'True), AppE (VarE pp) t')])) []]
+    where t = mkName "t"
+          t' = VarE t
diff --git a/src/Text/Numerals/Class.hs b/src/Text/Numerals/Class.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Numerals/Class.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveFunctor, DeriveFoldable, RankNTypes, Safe #-}
+
+{-|
+Module      : Text.Numerals.Class
+Description : A module that contains the typeclasses on which the rest of the module works.
+Maintainer  : hapytexeu+gh@gmail.com
+Stability   : experimental
+Portability : POSIX
+
+A module that defines the typeclasses that are used in the rest of the module. The 'NumToWord' class
+is the typeclass that is used by all algorithmic conversion tools.
+-}
+
+module Text.Numerals.Class (
+    -- * Typeclasses
+    NumToWord(toCardinal, toOrdinal, toWords)
+  , ValueSplit(valueSplit)
+    -- * Types of numbers
+  , NumberType(Cardinal, Ordinal)
+    -- * Segmenting a number
+  , NumberSegment(NumberSegment, segmentDivision, segmentValue, segmentText, segmentRemainder)
+  , MNumberSegment
+    -- * Utility type synonyms
+  , MergerFunction, FreeMergerFunction, ValueSplitter, FreeValueSplitter, NumberSegmenting
+  ) where
+
+import Data.Text(Text)
+
+-- | A type alias of a function that is used to merge the names of two numbers according
+-- to gramatical rules. The type parameter is the type of the numbers to merge.
+type MergerFunction i = i -> i -> Text -> Text -> Text
+
+-- | A type alias of a 'MergerFunction' function with a free 'Integral' variable.
+type FreeMergerFunction = forall i . Integral i => MergerFunction i
+
+-- | A type alias of a function that maps a number to a 2-tuple that contains a
+-- number and the word for that number. This number is normally the largest
+-- number smaller than the given number. In case no name exists for a number
+-- smaller than the given one 'Nothing' is returned.
+type ValueSplitter i = i -> Maybe (i, Text)
+
+-- | A type alias of a 'ValueSplitter' function, with a free 'Integral'
+-- variable.
+type FreeValueSplitter = forall i . Integral i => ValueSplitter i
+
+-- | A type alias of a function that converts a number to a 'NumberSegment' for that number.
+type NumberSegmenting i = i -> NumberSegment i
+
+-- | A data type used to convert a number into segments. Each segment has an
+-- optional division and remainder part, together with a value and the name of
+-- that value in a language.
+data NumberSegment i = NumberSegment {
+    segmentDivision :: MNumberSegment i  -- ^ The optional division part. 'Nothing' if the division is equal to one.
+  , segmentValue :: i  -- ^ The value of the given segment.
+  , segmentText :: Text  -- ^ The name of the value of the given segment, in a specific language.
+  , segmentRemainder ::  MNumberSegment i  -- ^ The optional remainder part. 'Nothing' if the remainder is equal to zero.
+  } deriving (Foldable, Functor, Eq, Ord, Read, Show)
+
+-- | A 'Maybe' variant of the 'NumberSegment' data type. This is used since the
+-- division part can be one, or the remainder part can be zero.
+type MNumberSegment i = Maybe (NumberSegment i)
+
+-- | A data type that specifies the different types of numbers. These can be
+-- used to specify the "target format".
+data NumberType
+  = Cardinal  -- ^ /Cardinal/ numbers like one, two, three, etc.
+  | Ordinal  -- ^ /Ordinal/ numbers like first, second, third, etc.
+  deriving (Bounded, Enum, Eq, Ord)
+
+-- | A type class used for num to word algorithms. It maps an 'Integral' type
+-- @i@ to 'Text'.
+class NumToWord a where
+    -- | Convert the given number to a 'Text' object that is the given number in
+    -- words.
+    toCardinal :: Integral i
+      => a  -- ^ The conversion algorithm that transforms the number into words.
+      -> i  -- ^ The number to transform into a /cardinal/ form.
+      -> Text  -- ^ The number in words in a /cardinal/ form.
+    toCardinal = toWords Cardinal
+    toOrdinal :: Integral i
+      => a  -- ^ The conversion algorithm that transforms the number into words.
+      -> i  -- ^ The number to transform into a /ordinal/ form.
+      -> Text  -- ^ The number in words in a /ordinal/ form.
+    toOrdinal = toWords Ordinal
+    toWords :: Integral i
+      => NumberType  -- ^ The given format to convert the number to.
+      -> a  -- ^ The conversion algorithm that transforms the number into words.
+      -> i  -- ^ The number to transform into the given form.
+      -> Text  -- ^ The number in words in the given form.
+    toWords Cardinal = toCardinal
+    toWords Ordinal = toOrdinal
+    {-# MINIMAL toCardinal, toOrdinal | toWords #-}
+
+-- | A type class used to split a value, based on the name of a number in a
+-- specific language. The value that is used to split, is often, depending on
+-- the language, the largest value smaller than the given number.
+class ValueSplit a where
+    -- | A function that takes an 'Integral' value, and based on the object
+    -- splits it with a value and the name of the number in a specific language.
+    valueSplit :: a -> FreeValueSplitter
diff --git a/src/Text/Numerals/Internal.hs b/src/Text/Numerals/Internal.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Numerals/Internal.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE NumericUnderscores, Safe #-}
+
+module Text.Numerals.Internal (
+    _div10, _rem10, _divisableBy, _divisable100
+  , _showText
+  , _mergeWith, _mergeWithSpace, _mergeWithHyphen, _mergeWith', _replaceSuffix
+  , _hundred, _thousand, _million, _billion, _trillion
+  , _iLog, _iLogFloor
+  , _stripLastIf
+  ) where
+
+import Data.Text(Text, cons, dropEnd, isSuffixOf, singleton, pack)
+import qualified Data.Text as T
+
+_stripLastIf :: Char -> Text -> Text
+_stripLastIf c t
+    | singleton c `isSuffixOf` t = T.init t
+    | otherwise = t
+
+_mergeWith' :: Char -> Text -> Text -> Text
+_mergeWith' m = (. cons m) . (<>)
+
+_mergeWithSpace :: Text -> Text -> Text
+_mergeWithSpace = _mergeWith' ' '
+
+_mergeWithHyphen :: Text -> Text -> Text
+_mergeWithHyphen = _mergeWith' '-'
+
+_mergeWith :: Text -> Text -> Text -> Text
+_mergeWith m = (<>) . (<> m)
+
+_showText :: Show a => a -> Text
+_showText = pack . show
+
+_divisableBy :: Integral i => i -> i -> Bool
+_divisableBy n = (0 ==) . (`mod` n)
+
+_divisable100 :: Integral i => i -> Bool
+_divisable100 = _divisableBy _hundred
+
+_div10 :: Integral i => i -> i
+_div10 = (`div` _ten)
+
+_rem10 :: Integral i => i -> i
+_rem10 = (`rem` _ten)
+
+_ten :: Integral i => i
+_ten = 10
+
+_hundred :: Integral i => i
+_hundred = 100
+
+_thousand :: Integral i => i
+_thousand = 1000
+
+_million :: Integral i => i
+_million = 1_000_000
+
+_billion :: Integral i => i
+_billion = 1_000_000_000
+
+_trillion :: Integral i => i
+_trillion = 1_000_000_000_000
+
+_iLogFloor :: (Integral i, Integral j) => i -> i -> (i, j, i)
+_iLogFloor b m = go b
+  where go i | m < i = (m, 0, 1)
+             | q < i = (q, 2 * e, j)
+             | otherwise = (div q i, 2 * e + 1, j * i)
+            where ~(q, e, j) = go (i*i)
+
+_iLog :: (Integral i, Integral j) => i -> i -> Maybe j
+_iLog b m = snd <$> go b
+  where go i | m < i = Just (m, 0)
+             | Just (q, e) <- go (i*i) = go' i q e
+             | otherwise = Nothing
+        go' i q e | q < i = Just (q, 2 * e)
+                  | m == 0 = Just (d, 2 * e + 1)
+                  | otherwise = Nothing
+            where (d, m) = divMod q i
+
+_replaceSuffix :: Int -> Text -> Text -> Text
+_replaceSuffix n s = (<> s) . dropEnd n
diff --git a/src/Text/Numerals/Languages.hs b/src/Text/Numerals/Languages.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Numerals/Languages.hs
@@ -0,0 +1,17 @@
+{-|
+Module      : Text.Numerals.Languages
+Description : A module that re-exports the algorithms to convert numbers to words in the supported languages.
+Maintainer  : hapytexeu+gh@gmail.com
+Stability   : experimental
+Portability : POSIX
+
+This module imports the /num to word/ algorithms and re-exports these algorithms. The module thus can be used to conveniently import algorithms for all supported languages.
+-}
+
+module Text.Numerals.Languages (
+    dutch, english, french
+  ) where
+
+import Text.Numerals.Languages.Dutch(dutch)
+import Text.Numerals.Languages.English(english)
+import Text.Numerals.Languages.French(french)
diff --git a/src/Text/Numerals/Languages/Dutch.hs b/src/Text/Numerals/Languages/Dutch.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Numerals/Languages/Dutch.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE OverloadedLists, OverloadedStrings, TemplateHaskell #-}
+
+{-|
+Module      : Text.Numerals.Languages.Dutch
+Description : A module to convert numbers to words in the /Dutch/ language.
+Maintainer  : hapytexeu+gh@gmail.com
+Stability   : experimental
+Portability : POSIX
+
+This module contains logic to convert numbers to words in the /Dutch/ language.
+-}
+
+module Text.Numerals.Languages.Dutch (
+    -- * Num to word algorithm
+    dutch
+    -- * Convert to ordinal
+  , ordinize'
+    -- * Constant words
+  , negativeWord', zeroWord', oneWord'
+    -- * Names for numbers
+  , lowWords', midWords', highWords'
+    -- * Merge function
+  , merge'
+  ) where
+
+import Data.Text(Text, snoc)
+import Data.Vector(Vector)
+
+import Text.Numerals.Algorithm(HighNumberAlgorithm(LongScale), NumeralsAlgorithm, numeralsAlgorithm)
+import Text.Numerals.Algorithm.Template(ordinizeFromDict)
+import Text.Numerals.Class(valueSplit)
+import Text.Numerals.Internal(_million, _mergeWithSpace)
+
+$(pure [ordinizeFromDict "_ordinize'" [
+    ("nul", "nuld")
+  , ("één", "eerst")
+  , ("twee", "tweed")
+  , ("drie", "derd")
+  , ("vier", "vierd")
+  , ("vijf", "vijfd")
+  , ("zes", "zesd")
+  , ("zeven", "zevend")
+  , ("acht", "achtst")
+  , ("negen", "negend")
+  , ("tien", "tiend")
+  , ("elf", "elfd")
+  , ("twaalf", "twaalfd")
+  , ("ig", "igst")
+  , ("erd", "erdst")
+  , ("end", "endst")
+  , ("joen", "joenst")
+  , ("rd", "rdst")
+  ] 'id])
+
+-- | A function that converts a number in words in /cardinal/ form to /ordinal/
+-- form according to the /Dutch/ language rules.
+ordinize' :: Text -> Text
+ordinize' = (`snoc` 'e') . _ordinize'
+
+-- | A 'NumeralsAlgorithm' to convert numbers to words in the /Dutch/ language.
+dutch :: NumeralsAlgorithm  -- ^ A 'NumeralsAlgorithm' that can be used to convert numbers to different formats.
+dutch = numeralsAlgorithm negativeWord' zeroWord' oneWord' lowWords' midWords' (valueSplit highWords') merge' ordinize'
+
+-- | The words used to mark a negative number in the /Dutch/ language.
+negativeWord' :: Text
+negativeWord' = "min"
+
+-- | The word used for the number /zero/ in the /Dutch/ language.
+zeroWord' :: Text
+zeroWord' = "nul"
+
+-- | The word used for the number /one/ in the /Dutch/ language.
+oneWord' :: Text
+oneWord' = "één"
+
+-- | A 'Vector' that contains the word used for the numbers /two/ to /twenty/ in the /Dutch/ language.
+lowWords' :: Vector Text
+lowWords' = [
+    "twee"
+  , "drie"
+  , "vier"
+  , "vijf"
+  , "zes"
+  , "zeven"
+  , "acht"
+  , "negen"
+  , "tien"
+  , "elf"
+  , "twaalf"
+  , "dertien"
+  , "veertien"
+  , "vijftien"
+  , "zestien"
+  , "zeventien"
+  , "achttien"
+  , "negentien"
+  , "twintig"
+  ]
+
+-- | A list of 2-tuples that contains the names of values between /thirty/ and
+-- /thousand/ in the /Dutch/ language.
+midWords' :: [(Integer, Text)]
+midWords' = [
+    (1000, "duizend")
+  , (100, "honderd")
+  , (90, "negentig")
+  , (80, "tachtig")
+  , (70, "zeventig")
+  , (60, "zestig")
+  , (50, "vijftig")
+  , (40, "veertig")
+  , (30, "dertig")
+  ]
+
+_rightAnd :: Integral i => i -> Text -> Text
+_rightAnd 1 = const "een"
+_rightAnd _ = id
+
+_leftAnd :: Integral i => i -> Text -> Text
+_leftAnd 1 = const "eenen"
+_leftAnd n | 2 <- n = addE
+           | 3 <- n = addE
+           | otherwise = (<> "en")
+           where addE = (<> "ën")
+
+-- | A merge function that is used to combine the names of words together to
+-- larger words, according to the /Dutch/ grammar rules.
+merge' :: Integral i => i -> i -> Text -> Text -> Text
+merge' 1 r
+    | r < _million = const id
+    | otherwise = const (_merge' 1 r "een")
+merge' l r = _merge' l r
+
+_merge' :: Integral i => i -> i -> Text -> Text -> Text
+_merge' l r
+    | r > l && r >= _million = _mergeWithSpace
+    | r > l = (<>)
+    | r < 10 && 10 < l && l < 100 = go
+    | l >= _million = _mergeWithSpace
+    | otherwise = (<>)
+    where go tl tr = _leftAnd r tr <> _rightAnd l tl
+
+-- | An algorithm to obtain the names of /large/ numbers (one million or larger)
+-- in /Dutch/. Dutch uses a /long scale/ with the @iljoen@ and @iljard@
+-- suffixes.
+highWords' :: HighNumberAlgorithm
+highWords' = LongScale "iljoen" "iljard"
diff --git a/src/Text/Numerals/Languages/English.hs b/src/Text/Numerals/Languages/English.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Numerals/Languages/English.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE OverloadedLists, OverloadedStrings, TemplateHaskell #-}
+
+{-|
+Module      : Text.Numerals.Languages.English
+Description : A module to convert numbers to words in the /English/ language.
+Maintainer  : hapytexeu+gh@gmail.com
+Stability   : experimental
+Portability : POSIX
+
+This module contains logic to convert numbers to words in the /English/ language.
+-}
+
+module Text.Numerals.Languages.English (
+    -- * Num to word algorithm
+    english
+    -- * Convert to ordinal
+  , ordinize'
+    -- * Constant words
+  , negativeWord', zeroWord', oneWord'
+    -- * Names for numbers
+  , lowWords', midWords', highWords'
+    -- * Merge function
+  , merge'
+  ) where
+
+import Data.Text(Text, isSuffixOf)
+import qualified Data.Text as T
+import Data.Vector(Vector)
+
+import Text.Numerals.Algorithm(HighNumberAlgorithm(ShortScale), NumeralsAlgorithm, numeralsAlgorithm)
+import Text.Numerals.Algorithm.Template(ordinizeFromDict)
+import Text.Numerals.Class(valueSplit)
+import Text.Numerals.Internal(_mergeWith, _mergeWithSpace, _mergeWithHyphen)
+
+_ordinizepp :: Text -> Text
+_ordinizepp t
+    | "y" `isSuffixOf` t = T.init t <> "ieth"
+    | otherwise = t <> "th"
+
+-- | A function that converts a number in words in /cardinal/ form to /ordinal/
+-- form according to the /English/ language rules.
+$(pure [ordinizeFromDict "ordinize'" [
+    ("one", "first")
+  , ("two", "second")
+  , ("three", "third")
+  , ("four", "fourth")
+  , ("five", "fifth")
+  , ("six", "sixth")
+  , ("seven", "seventh")
+  , ("eight", "eighth")
+  , ("nine", "ninth")
+  , ("ten", "tenth")
+  , ("eleven", "eleventh")
+  , ("twelve", "twelfth")
+  ] '_ordinizepp])
+
+-- | A 'NumeralsAlgorithm' to convert numbers to words in the /English/ language.
+english :: NumeralsAlgorithm  -- ^ A 'NumeralsAlgorithm' that can be used to convert numbers to different formats.
+english = numeralsAlgorithm negativeWord' zeroWord' oneWord' lowWords' midWords' (valueSplit highWords') merge' ordinize'
+
+-- | The words used to mark a negative number in the /English/ language.
+negativeWord' :: Text
+negativeWord' = "minus"
+
+-- | The word used for the number /zero/ in the /English/ language.
+zeroWord' :: Text
+zeroWord' = "zero"
+
+-- | The word used for the number /one/ in the /English/ language.
+oneWord' :: Text
+oneWord' = "one"
+
+-- | A 'Vector' that contains the word used for the numbers /two/ to /twenty/ in the /English/ language.
+lowWords' :: Vector Text
+lowWords' = [
+    "two"
+  , "three"
+  , "four"
+  , "five"
+  , "six"
+  , "seven"
+  , "eight"
+  , "nine"
+  , "ten"
+  , "eleven"
+  , "twelve"
+  , "thirteen"
+  , "fourteen"
+  , "fifteen"
+  , "sixteen"
+  , "seventeen"
+  , "eighteen"
+  , "nineteen"
+  , "twenty"
+  ]
+
+-- | A list of 2-tuples that contains the names of values between /thirty/ and
+-- /thousand/ in the /English/ language.
+midWords' :: [(Integer, Text)]
+midWords' = [
+    (1000, "thousand")
+  , (100, "hundred")
+  , (90, "ninety")
+  , (80, "eighty")
+  , (70, "seventy")
+  , (60, "sixty")
+  , (50, "fifty")
+  , (40, "forty")
+  , (30, "thirty")
+  ]
+
+-- | A merge function that is used to combine the names of words together to
+-- larger words, according to the /English/ grammar rules.
+merge' :: Integral i => i -> i -> Text -> Text -> Text
+merge' 1 r | r < 100 = const id
+merge' l r | 100 > l && l > r = _mergeWithHyphen
+           | l >= 100 && 100 > r = _mergeWith " and "
+           | r > l = _mergeWithSpace
+merge' _ _ = _mergeWith ", "
+
+-- | An algorithm to obtain the names of /large/ numbers (one million or larger)
+-- in /English/. English uses a /short scale/ with the @illion@ suffix.
+highWords' :: HighNumberAlgorithm
+highWords' = ShortScale "illion"
diff --git a/src/Text/Numerals/Languages/French.hs b/src/Text/Numerals/Languages/French.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Numerals/Languages/French.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE OverloadedLists, OverloadedStrings, TemplateHaskell #-}
+
+{-|
+Module      : Text.Numerals.Languages.French
+Description : A module to convert numbers to words in the /French/ language.
+Maintainer  : hapytexeu+gh@gmail.com
+Stability   : experimental
+Portability : POSIX
+
+This module contains logic to convert numbers to words in the /French/ language.
+-}
+
+module Text.Numerals.Languages.French (
+    -- * Num to word algorithm
+    french
+    -- * Convert to ordinal
+  , ordinize'
+    -- * Constant words
+  , negativeWord', zeroWord', oneWord'
+    -- * Names for numbers
+  , lowWords', midWords', highWords'
+    -- * Merge function
+  , merge'
+  ) where
+
+import Data.Text(Text, isSuffixOf, snoc)
+import qualified Data.Text as T
+import Data.Vector(Vector)
+
+import Text.Numerals.Algorithm(HighNumberAlgorithm(LongScale), NumeralsAlgorithm, numeralsAlgorithm)
+import Text.Numerals.Algorithm.Template(ordinizeFromDict)
+import Text.Numerals.Class(FreeMergerFunction, valueSplit)
+import Text.Numerals.Internal(_divisable100, _mergeWith, _mergeWithSpace, _mergeWithHyphen, _million, _stripLastIf, _thousand)
+
+$(pure [ordinizeFromDict "_ordinize'" [
+    ("cinq", "cinqu")
+  , ("neuf", "neuv")
+  ] 'id])
+
+-- | A 'NumeralsAlgorithm' to convert numbers to words in the /French/ language.
+french :: NumeralsAlgorithm  -- ^ A 'NumeralsAlgorithm' that can be used to convert numbers to different formats.
+french = numeralsAlgorithm negativeWord' zeroWord' oneWord' lowWords' midWords' (valueSplit highWords') merge' ordinize'
+
+-- | The words used to mark a negative number in the /French/ language.
+negativeWord' :: Text
+negativeWord' = "moins"
+
+-- | The word used for the number /zero/ in the /French/ language.
+zeroWord' :: Text
+zeroWord' = "zéro"
+
+-- | The word used for the number /one/ in the /French/ language.
+oneWord' :: Text
+oneWord' = "un"
+
+-- | A 'Vector' that contains the word used for the numbers /two/ to /twenty/ in the /French/ language.
+lowWords' :: Vector Text
+lowWords' = [
+    "deux"
+  , "trois"
+  , "quatre"
+  , "cinq"
+  , "six"
+  , "sept"
+  , "huit"
+  , "neuf"
+  , "dix"
+  , "onze"
+  , "douze"
+  , "treize"
+  , "quatorze"
+  , "quinze"
+  , "seize"
+  , "dix-sept"
+  , "dix-huit"
+  , "dix-neuf"
+  , "vingt"
+  ]
+
+-- | A list of 2-tuples that contains the names of values between /thirty/ and
+-- /thousand/ in the /French/ language.
+midWords' :: [(Integer, Text)]
+midWords' = [
+    (1000, "mille")
+  , (100, "cent")
+  , (80, "quatre-vingts")
+  , (60, "soixante")
+  , (50, "cinquante")
+  , (40, "quarante")
+  , (30, "trente")
+  ]
+
+-- | A merge function that is used to combine the names of words together to
+-- larger words, according to the /French/ grammar rules.
+merge' :: FreeMergerFunction
+merge' 1 r | r < _million = const id
+           | otherwise = _merge' 1 r
+merge' l r = \ta tb -> _merge' l r (_firstWithoutS l r ta) (_secondWithS l r tb)
+
+_firstWithoutS :: Integral i => i -> i -> Text -> Text
+_firstWithoutS l r t
+    | (_divisable100 (l + 20) || (_divisable100 l && l < _thousand)) && r < _million = _stripLastIf 's' t
+    | otherwise = t
+
+_secondWithS :: Integral i => i -> i -> Text -> Text
+_secondWithS l r t
+    | l < _thousand && r /= _thousand && _divisable100 r && not ("s" `isSuffixOf` t) = snoc t 's'
+    | otherwise = t
+
+_merge' :: Integral i => i -> i -> Text -> Text -> Text
+_merge' l r | r >= l || l >= 100 = _mergeWithSpace
+            | r `mod` 10 == 1 && l /= 80 = _mergeWith " et "
+            | otherwise = _mergeWithHyphen
+
+-- | A function that converts a number in words in /cardinal/ form to /ordinal/
+-- form according to the /French/ language rules.
+ordinize' :: Text -> Text
+ordinize' "un" = "premier"
+ordinize' t = _stripLastIf 'e' (_ordinize' t) <> "ième"
+
+-- | An algorithm to obtain the names of /large/ numbers (one million or larger)
+-- in /French/. French uses a /long scale/ with the @illion@ and @illiard@
+-- suffixes.
+highWords' :: HighNumberAlgorithm
+highWords' =  LongScale "illion" "illiard"
diff --git a/src/Text/Numerals/Prefix.hs b/src/Text/Numerals/Prefix.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Numerals/Prefix.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+{-|
+Module      : Text.Numerals.Prefix
+Description : A module used to define /numeric prefixes/ for /long/ and /short scales/.
+Maintainer  : hapytexeu+gh@gmail.com
+Stability   : experimental
+Portability : POSIX
+
+A module that defines /Latin/ prefixes. These prefixes are used to construct names for the /long/ and /short scales/.
+So the /m/, /b/, /tr/ in /million/, /billion/, /trillion/.
+-}
+
+module Text.Numerals.Prefix (
+    -- * Latin prefixes
+    latinPrefixes, latinPrefixes', latinPrefix
+  ) where
+
+import Data.Text(Text)
+import Data.Vector(Vector, (!?), fromList)
+
+-- | A list of /Latin/ prefixes, used for the /long/ and /short scale/.
+latinPrefixes' :: [Text]  -- ^ A list of 'Text' objects. This makes explicit recursion more convenient.
+latinPrefixes' = [
+    "m"
+  , "b"
+  , "tr"
+  , "quadr"
+  , "quint"
+  , "sext"
+  , "sept"
+  , "oct"
+  , "non"
+  , "dec"
+  , "undec"
+  , "duodec"
+  , "tredec"
+  , "quattuordec"
+  , "quindec"
+  , "sexdec"
+  , "septended"
+  , "octodec"
+  , "novemdec"
+  , "vigint"
+  ]
+
+-- | The /Latin/ prefixes in a 'Vector' for /O(1)/ lookup.
+latinPrefixes :: Vector Text  -- ^ A 'Vector' of 'Text' objects to allow fast lookup.
+latinPrefixes = fromList latinPrefixes'
+
+-- | Lookup the given /Latin/ prefix for the given value.
+latinPrefix :: Integral i
+  => i  -- ^ The value to map on a Latin prefix.
+  -> Maybe Text  -- ^ The corresponding Latin prefix, given this exists.
+latinPrefix n = latinPrefixes !? (fromIntegral n - 1)
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,3 @@
+{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
+-- cabal v2-test --test-show-details=direct
+-- cabal v2-test --test-show-details=direct --test-options="--color --format=progress"
diff --git a/test/Text/Numerals/LanguageTest.hs b/test/Text/Numerals/LanguageTest.hs
new file mode 100644
--- /dev/null
+++ b/test/Text/Numerals/LanguageTest.hs
@@ -0,0 +1,36 @@
+module Text.Numerals.LanguageTest (
+    testLanguage
+  ) where
+
+import Data.Text(Text)
+
+import Test.Hspec(SpecWith, describe, it, shouldBe)
+import Test.QuickCheck(property)
+
+import Text.Numerals.Class(toCardinal, toOrdinal)
+import Text.Numerals.Algorithm(NumeralsAlgorithm)
+
+testDifferCardinal :: NumeralsAlgorithm -> Integer -> Integer -> Bool
+testDifferCardinal al n1 n2 = n1 == n2 || toCardinal al n1 /= toCardinal al n2
+
+testDifferOrdinal :: NumeralsAlgorithm -> Integer -> Integer -> Bool
+testDifferOrdinal al n1 n2 = n1 == n2 || toOrdinal al n1 /= toOrdinal al n2
+
+testDifferCardinalOrdinal :: NumeralsAlgorithm -> Integer -> Bool
+testDifferCardinalOrdinal al n = toCardinal al n /= toOrdinal al n
+
+testDifferCardinalOrdinal' :: NumeralsAlgorithm -> Integer -> Integer -> Bool
+testDifferCardinalOrdinal' al n1 n2 = toCardinal al n1 /= toOrdinal al n2
+
+testNumberConversion :: (Integer -> Text) -> Integer -> Text -> SpecWith ()
+testNumberConversion f n t = it (show n) (f n `shouldBe` t)
+
+testLanguage :: String -> NumeralsAlgorithm -> [(Integer, Text)] -> [(Integer, Text)] -> SpecWith ()
+testLanguage languageName al cs os = describe languageName $ do
+    describe "Automatied tests" $ do
+        it "Different cardinal names" (property (testDifferCardinal al))
+        it "Different ordinal names" (property (testDifferOrdinal al))
+        it "Difference between cardinal and ordinal names" (property (testDifferCardinalOrdinal al))
+        it "Difference between cardinal and ordinal names with different number" (property (testDifferCardinalOrdinal' al))
+    describe "Test cardinal numbers" (mapM_ (uncurry (testNumberConversion (toCardinal al))) cs)
+    describe "Test ordinal numbers" (mapM_ (uncurry (testNumberConversion (toOrdinal al))) os)
diff --git a/test/Text/Numerals/Languages/DutchSpec.hs b/test/Text/Numerals/Languages/DutchSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/Text/Numerals/Languages/DutchSpec.hs
@@ -0,0 +1,622 @@
+module Text.Numerals.Languages.DutchSpec (
+    spec
+  ) where
+
+import Data.Text(Text)
+
+import Test.Hspec(Spec)
+import Text.Numerals.Languages.Dutch(dutch)
+import Text.Numerals.LanguageTest(testLanguage)
+
+spec :: Spec
+spec = testLanguage "Dutch" dutch cardinals ordinals
+
+cardinals :: [(Integer, Text)]
+cardinals = [
+    (0, "nul")
+  , (1, "één")
+  , (2, "twee")
+  , (3, "drie")
+  , (4, "vier")
+  , (5, "vijf")
+  , (6, "zes")
+  , (7, "zeven")
+  , (8, "acht")
+  , (9, "negen")
+  , (10, "tien")
+  , (11, "elf")
+  , (12, "twaalf")
+  , (13, "dertien")
+  , (14, "veertien")
+  , (15, "vijftien")
+  , (16, "zestien")
+  , (17, "zeventien")
+  , (18, "achttien")
+  , (19, "negentien")
+  , (20, "twintig")
+  , (21, "eenentwintig")
+  , (22, "tweeëntwintig")
+  , (23, "drieëntwintig")
+  , (24, "vierentwintig")
+  , (25, "vijfentwintig")
+  , (26, "zesentwintig")
+  , (27, "zevenentwintig")
+  , (28, "achtentwintig")
+  , (29, "negenentwintig")
+  , (30, "dertig")
+  , (31, "eenendertig")
+  , (32, "tweeëndertig")
+  , (33, "drieëndertig")
+  , (34, "vierendertig")
+  , (35, "vijfendertig")
+  , (36, "zesendertig")
+  , (37, "zevenendertig")
+  , (38, "achtendertig")
+  , (39, "negenendertig")
+  , (40, "veertig")
+  , (41, "eenenveertig")
+  , (42, "tweeënveertig")
+  , (43, "drieënveertig")
+  , (44, "vierenveertig")
+  , (45, "vijfenveertig")
+  , (46, "zesenveertig")
+  , (47, "zevenenveertig")
+  , (48, "achtenveertig")
+  , (49, "negenenveertig")
+  , (50, "vijftig")
+  , (51, "eenenvijftig")
+  , (52, "tweeënvijftig")
+  , (53, "drieënvijftig")
+  , (54, "vierenvijftig")
+  , (55, "vijfenvijftig")
+  , (56, "zesenvijftig")
+  , (57, "zevenenvijftig")
+  , (58, "achtenvijftig")
+  , (59, "negenenvijftig")
+  , (60, "zestig")
+  , (61, "eenenzestig")
+  , (62, "tweeënzestig")
+  , (63, "drieënzestig")
+  , (64, "vierenzestig")
+  , (65, "vijfenzestig")
+  , (66, "zesenzestig")
+  , (67, "zevenenzestig")
+  , (68, "achtenzestig")
+  , (69, "negenenzestig")
+  , (70, "zeventig")
+  , (71, "eenenzeventig")
+  , (72, "tweeënzeventig")
+  , (73, "drieënzeventig")
+  , (74, "vierenzeventig")
+  , (75, "vijfenzeventig")
+  , (76, "zesenzeventig")
+  , (77, "zevenenzeventig")
+  , (78, "achtenzeventig")
+  , (79, "negenenzeventig")
+  , (80, "tachtig")
+  , (81, "eenentachtig")
+  , (82, "tweeëntachtig")
+  , (83, "drieëntachtig")
+  , (84, "vierentachtig")
+  , (85, "vijfentachtig")
+  , (86, "zesentachtig")
+  , (87, "zevenentachtig")
+  , (88, "achtentachtig")
+  , (89, "negenentachtig")
+  , (90, "negentig")
+  , (91, "eenennegentig")
+  , (92, "tweeënnegentig")
+  , (93, "drieënnegentig")
+  , (94, "vierennegentig")
+  , (95, "vijfennegentig")
+  , (96, "zesennegentig")
+  , (97, "zevenennegentig")
+  , (98, "achtennegentig")
+  , (99, "negenennegentig")
+  , (100, "honderd")
+  , (101, "honderdéén")
+  , (102, "honderdtwee")
+  , (103, "honderddrie")
+  , (104, "honderdvier")
+  , (105, "honderdvijf")
+  , (106, "honderdzes")
+  , (107, "honderdzeven")
+  , (108, "honderdacht")
+  , (109, "honderdnegen")
+  , (110, "honderdtien")
+  , (111, "honderdelf")
+  , (112, "honderdtwaalf")
+  , (113, "honderddertien")
+  , (114, "honderdveertien")
+  , (115, "honderdvijftien")
+  , (116, "honderdzestien")
+  , (117, "honderdzeventien")
+  , (118, "honderdachttien")
+  , (119, "honderdnegentien")
+  , (120, "honderdtwintig")
+  , (121, "honderdeenentwintig")
+  , (122, "honderdtweeëntwintig")
+  , (123, "honderddrieëntwintig")
+  , (124, "honderdvierentwintig")
+  , (125, "honderdvijfentwintig")
+  , (126, "honderdzesentwintig")
+  , (127, "honderdzevenentwintig")
+  , (128, "honderdachtentwintig")
+  , (129, "honderdnegenentwintig")
+  , (130, "honderddertig")
+  , (131, "honderdeenendertig")
+  , (132, "honderdtweeëndertig")
+  , (133, "honderddrieëndertig")
+  , (134, "honderdvierendertig")
+  , (135, "honderdvijfendertig")
+  , (136, "honderdzesendertig")
+  , (137, "honderdzevenendertig")
+  , (138, "honderdachtendertig")
+  , (139, "honderdnegenendertig")
+  , (140, "honderdveertig")
+  , (141, "honderdeenenveertig")
+  , (142, "honderdtweeënveertig")
+  , (143, "honderddrieënveertig")
+  , (144, "honderdvierenveertig")
+  , (145, "honderdvijfenveertig")
+  , (146, "honderdzesenveertig")
+  , (147, "honderdzevenenveertig")
+  , (148, "honderdachtenveertig")
+  , (149, "honderdnegenenveertig")
+  , (150, "honderdvijftig")
+  , (151, "honderdeenenvijftig")
+  , (152, "honderdtweeënvijftig")
+  , (153, "honderddrieënvijftig")
+  , (154, "honderdvierenvijftig")
+  , (155, "honderdvijfenvijftig")
+  , (156, "honderdzesenvijftig")
+  , (157, "honderdzevenenvijftig")
+  , (158, "honderdachtenvijftig")
+  , (159, "honderdnegenenvijftig")
+  , (160, "honderdzestig")
+  , (161, "honderdeenenzestig")
+  , (162, "honderdtweeënzestig")
+  , (163, "honderddrieënzestig")
+  , (164, "honderdvierenzestig")
+  , (165, "honderdvijfenzestig")
+  , (166, "honderdzesenzestig")
+  , (167, "honderdzevenenzestig")
+  , (168, "honderdachtenzestig")
+  , (169, "honderdnegenenzestig")
+  , (170, "honderdzeventig")
+  , (171, "honderdeenenzeventig")
+  , (172, "honderdtweeënzeventig")
+  , (173, "honderddrieënzeventig")
+  , (174, "honderdvierenzeventig")
+  , (175, "honderdvijfenzeventig")
+  , (176, "honderdzesenzeventig")
+  , (177, "honderdzevenenzeventig")
+  , (178, "honderdachtenzeventig")
+  , (179, "honderdnegenenzeventig")
+  , (180, "honderdtachtig")
+  , (181, "honderdeenentachtig")
+  , (182, "honderdtweeëntachtig")
+  , (183, "honderddrieëntachtig")
+  , (184, "honderdvierentachtig")
+  , (185, "honderdvijfentachtig")
+  , (186, "honderdzesentachtig")
+  , (187, "honderdzevenentachtig")
+  , (188, "honderdachtentachtig")
+  , (189, "honderdnegenentachtig")
+  , (190, "honderdnegentig")
+  , (191, "honderdeenennegentig")
+  , (192, "honderdtweeënnegentig")
+  , (193, "honderddrieënnegentig")
+  , (194, "honderdvierennegentig")
+  , (195, "honderdvijfennegentig")
+  , (196, "honderdzesennegentig")
+  , (197, "honderdzevenennegentig")
+  , (198, "honderdachtennegentig")
+  , (199, "honderdnegenennegentig")
+  , (200, "tweehonderd")
+  , (233, "tweehonderddrieëndertig")
+  , (377, "driehonderdzevenenzeventig")
+  , (610, "zeshonderdtien")
+  , (987, "negenhonderdzevenentachtig")
+  , (1597, "duizendvijfhonderdzevenennegentig")
+  , (2584, "tweeduizendvijfhonderdvierentachtig")
+  , (4181, "vierduizendhonderdeenentachtig")
+  , (6765, "zesduizendzevenhonderdvijfenzestig")
+  , (10946, "tienduizendnegenhonderdzesenveertig")
+  , (17711, "zeventienduizendzevenhonderdelf")
+  , (28657, "achtentwintigduizendzeshonderdzevenenvijftig")
+  , (46368, "zesenveertigduizenddriehonderdachtenzestig")
+  , (75025, "vijfenzeventigduizendvijfentwintig")
+  , (121393, "honderdeenentwintigduizenddriehonderddrieënnegentig")
+  , (196418, "honderdzesennegentigduizendvierhonderdachttien")
+  , (317811, "driehonderdzeventienduizendachthonderdelf")
+  , (514229, "vijfhonderdveertienduizendtweehonderdnegenentwintig")
+  , (832040, "achthonderdtweeëndertigduizendveertig")
+  , (1346269, "een miljoen driehonderdzesenveertigduizendtweehonderdnegenenzestig")
+  , (2178309, "twee miljoen honderdachtenzeventigduizenddriehonderdnegen")
+  , (3524578, "drie miljoen vijfhonderdvierentwintigduizendvijfhonderdachtenzeventig")
+  , (5702887, "vijf miljoen zevenhonderdtweeduizendachthonderdzevenentachtig")
+  , (9227465, "negen miljoen tweehonderdzevenentwintigduizendvierhonderdvijfenzestig")
+  , (14930352, "veertien miljoen negenhonderddertigduizenddriehonderdtweeënvijftig")
+  , (24157817, "vierentwintig miljoen honderdzevenenvijftigduizendachthonderdzeventien")
+  , (39088169, "negenendertig miljoen achtentachtigduizendhonderdnegenenzestig")
+  , (63245986, "drieënzestig miljoen tweehonderdvijfenveertigduizendnegenhonderdzesentachtig")
+  , (102334155, "honderdtwee miljoen driehonderdvierendertigduizendhonderdvijfenvijftig")
+  , (165580141, "honderdvijfenzestig miljoen vijfhonderdtachtigduizendhonderdeenenveertig")
+  , (267914296, "tweehonderdzevenenzestig miljoen negenhonderdveertienduizendtweehonderdzesennegentig")
+  , (433494437, "vierhonderddrieëndertig miljoen vierhonderdvierennegentigduizendvierhonderdzevenendertig")
+  , (701408733, "zevenhonderdéén miljoen vierhonderdachtduizendzevenhonderddrieëndertig")
+  , (1134903170, "een miljard honderdvierendertig miljoen negenhonderddrieduizendhonderdzeventig")
+  , (1836311903, "een miljard achthonderdzesendertig miljoen driehonderdelfduizendnegenhonderddrie")
+  , (2971215073, "twee miljard negenhonderdeenenzeventig miljoen tweehonderdvijftienduizenddrieënzeventig")
+  , (4807526976, "vier miljard achthonderdzeven miljoen vijfhonderdzesentwintigduizendnegenhonderdzesenzeventig")
+  , (7778742049, "zeven miljard zevenhonderdachtenzeventig miljoen zevenhonderdtweeënveertigduizendnegenenveertig")
+  , (12586269025, "twaalf miljard vijfhonderdzesentachtig miljoen tweehonderdnegenenzestigduizendvijfentwintig")
+  , (20365011074, "twintig miljard driehonderdvijfenzestig miljoen elfduizendvierenzeventig")
+  , (32951280099, "tweeëndertig miljard negenhonderdeenenvijftig miljoen tweehonderdtachtigduizendnegenennegentig")
+  , (53316291173, "drieënvijftig miljard driehonderdzestien miljoen tweehonderdeenennegentigduizendhonderddrieënzeventig")
+  , (86267571272, "zesentachtig miljard tweehonderdzevenenzestig miljoen vijfhonderdeenenzeventigduizendtweehonderdtweeënzeventig")
+  , (139583862445, "honderdnegenendertig miljard vijfhonderddrieëntachtig miljoen achthonderdtweeënzestigduizendvierhonderdvijfenveertig")
+  , (225851433717, "tweehonderdvijfentwintig miljard achthonderdeenenvijftig miljoen vierhonderddrieëndertigduizendzevenhonderdzeventien")
+  , (365435296162, "driehonderdvijfenzestig miljard vierhonderdvijfendertig miljoen tweehonderdzesennegentigduizendhonderdtweeënzestig")
+  , (591286729879, "vijfhonderdeenennegentig miljard tweehonderdzesentachtig miljoen zevenhonderdnegenentwintigduizendachthonderdnegenenzeventig")
+  , (956722026041, "negenhonderdzesenvijftig miljard zevenhonderdtweeëntwintig miljoen zesentwintigduizendeenenveertig")
+  , (1548008755920, "een biljoen vijfhonderdachtenveertig miljard acht miljoen zevenhonderdvijfenvijftigduizendnegenhonderdtwintig")
+  , (2504730781961, "twee biljoen vijfhonderdvier miljard zevenhonderddertig miljoen zevenhonderdeenentachtigduizendnegenhonderdeenenzestig")
+  , (4052739537881, "vier biljoen tweeënvijftig miljard zevenhonderdnegenendertig miljoen vijfhonderdzevenendertigduizendachthonderdeenentachtig")
+  , (6557470319842, "zes biljoen vijfhonderdzevenenvijftig miljard vierhonderdzeventig miljoen driehonderdnegentienduizendachthonderdtweeënveertig")
+  , (10610209857723, "tien biljoen zeshonderdtien miljard tweehonderdnegen miljoen achthonderdzevenenvijftigduizendzevenhonderddrieëntwintig")
+  , (17167680177565, "zeventien biljoen honderdzevenenzestig miljard zeshonderdtachtig miljoen honderdzevenenzeventigduizendvijfhonderdvijfenzestig")
+  , (27777890035288, "zevenentwintig biljoen zevenhonderdzevenenzeventig miljard achthonderdnegentig miljoen vijfendertigduizendtweehonderdachtentachtig")
+  , (44945570212853, "vierenveertig biljoen negenhonderdvijfenveertig miljard vijfhonderdzeventig miljoen tweehonderdtwaalfduizendachthonderddrieënvijftig")
+  , (72723460248141, "tweeënzeventig biljoen zevenhonderddrieëntwintig miljard vierhonderdzestig miljoen tweehonderdachtenveertigduizendhonderdeenenveertig")
+  , (117669030460994, "honderdzeventien biljoen zeshonderdnegenenzestig miljard dertig miljoen vierhonderdzestigduizendnegenhonderdvierennegentig")
+  , (190392490709135, "honderdnegentig biljoen driehonderdtweeënnegentig miljard vierhonderdnegentig miljoen zevenhonderdnegenduizendhonderdvijfendertig")
+  , (308061521170129, "driehonderdacht biljoen eenenzestig miljard vijfhonderdeenentwintig miljoen honderdzeventigduizendhonderdnegenentwintig")
+  , (498454011879264, "vierhonderdachtennegentig biljoen vierhonderdvierenvijftig miljard elf miljoen achthonderdnegenenzeventigduizendtweehonderdvierenzestig")
+  , (806515533049393, "achthonderdzes biljoen vijfhonderdvijftien miljard vijfhonderddrieëndertig miljoen negenenveertigduizenddriehonderddrieënnegentig")
+  , (1304969544928657, "een biljard driehonderdvier biljoen negenhonderdnegenenzestig miljard vijfhonderdvierenveertig miljoen negenhonderdachtentwintigduizendzeshonderdzevenenvijftig")
+  , (2111485077978050, "twee biljard honderdelf biljoen vierhonderdvijfentachtig miljard zevenenzeventig miljoen negenhonderdachtenzeventigduizendvijftig")
+  , (3416454622906707, "drie biljard vierhonderdzestien biljoen vierhonderdvierenvijftig miljard zeshonderdtweeëntwintig miljoen negenhonderdzesduizendzevenhonderdzeven")
+  , (5527939700884757, "vijf biljard vijfhonderdzevenentwintig biljoen negenhonderdnegenendertig miljard zevenhonderd miljoen achthonderdvierentachtigduizendzevenhonderdzevenenvijftig")
+  , (8944394323791464, "acht biljard negenhonderdvierenveertig biljoen driehonderdvierennegentig miljard driehonderddrieëntwintig miljoen zevenhonderdeenennegentigduizendvierhonderdvierenzestig")
+  , (14472334024676221, "veertien biljard vierhonderdtweeënzeventig biljoen driehonderdvierendertig miljard vierentwintig miljoen zeshonderdzesenzeventigduizendtweehonderdeenentwintig")
+  , (23416728348467685, "drieëntwintig biljard vierhonderdzestien biljoen zevenhonderdachtentwintig miljard driehonderdachtenveertig miljoen vierhonderdzevenenzestigduizendzeshonderdvijfentachtig")
+  , (37889062373143906, "zevenendertig biljard achthonderdnegenentachtig biljoen tweeënzestig miljard driehonderddrieënzeventig miljoen honderddrieënveertigduizendnegenhonderdzes")
+  , (61305790721611591, "eenenzestig biljard driehonderdvijf biljoen zevenhonderdnegentig miljard zevenhonderdeenentwintig miljoen zeshonderdelfduizendvijfhonderdeenennegentig")
+  , (99194853094755497, "negenennegentig biljard honderdvierennegentig biljoen achthonderddrieënvijftig miljard vierennegentig miljoen zevenhonderdvijfenvijftigduizendvierhonderdzevenennegentig")
+  , (160500643816367088, "honderdzestig biljard vijfhonderd biljoen zeshonderddrieënveertig miljard achthonderdzestien miljoen driehonderdzevenenzestigduizendachtentachtig")
+  , (259695496911122585, "tweehonderdnegenenvijftig biljard zeshonderdvijfennegentig biljoen vierhonderdzesennegentig miljard negenhonderdelf miljoen honderdtweeëntwintigduizendvijfhonderdvijfentachtig")
+  , (420196140727489673, "vierhonderdtwintig biljard honderdzesennegentig biljoen honderdveertig miljard zevenhonderdzevenentwintig miljoen vierhonderdnegenentachtigduizendzeshonderddrieënzeventig")
+  , (679891637638612258, "zeshonderdnegenenzeventig biljard achthonderdeenennegentig biljoen zeshonderdzevenendertig miljard zeshonderdachtendertig miljoen zeshonderdtwaalfduizendtweehonderdachtenvijftig")
+  , (1100087778366101931, "een triljoen honderd biljard zevenentachtig biljoen zevenhonderdachtenzeventig miljard driehonderdzesenzestig miljoen honderdéénduizendnegenhonderdeenendertig")
+  , (1779979416004714189, "een triljoen zevenhonderdnegenenzeventig biljard negenhonderdnegenenzeventig biljoen vierhonderdzestien miljard vier miljoen zevenhonderdveertienduizendhonderdnegenentachtig")
+  , (2880067194370816120, "twee triljoen achthonderdtachtig biljard zevenenzestig biljoen honderdvierennegentig miljard driehonderdzeventig miljoen achthonderdzestienduizendhonderdtwintig")
+  , (4660046610375530309, "vier triljoen zeshonderdzestig biljard zesenveertig biljoen zeshonderdtien miljard driehonderdvijfenzeventig miljoen vijfhonderddertigduizenddriehonderdnegen")
+  , (7540113804746346429, "zeven triljoen vijfhonderdveertig biljard honderddertien biljoen achthonderdvier miljard zevenhonderdzesenveertig miljoen driehonderdzesenveertigduizendvierhonderdnegenentwintig")
+  , (12200160415121876738, "twaalf triljoen tweehonderd biljard honderdzestig biljoen vierhonderdvijftien miljard honderdeenentwintig miljoen achthonderdzesenzeventigduizendzevenhonderdachtendertig")
+  , (19740274219868223167, "negentien triljoen zevenhonderdveertig biljard tweehonderdvierenzeventig biljoen tweehonderdnegentien miljard achthonderdachtenzestig miljoen tweehonderddrieëntwintigduizendhonderdzevenenzestig")
+  , (31940434634990099905, "eenendertig triljoen negenhonderdveertig biljard vierhonderdvierendertig biljoen zeshonderdvierendertig miljard negenhonderdnegentig miljoen negenennegentigduizendnegenhonderdvijf")
+  , (51680708854858323072, "eenenvijftig triljoen zeshonderdtachtig biljard zevenhonderdacht biljoen achthonderdvierenvijftig miljard achthonderdachtenvijftig miljoen driehonderddrieëntwintigduizendtweeënzeventig")
+  , (83621143489848422977, "drieëntachtig triljoen zeshonderdeenentwintig biljard honderddrieënveertig biljoen vierhonderdnegenentachtig miljard achthonderdachtenveertig miljoen vierhonderdtweeëntwintigduizendnegenhonderdzevenenzeventig")
+  , (135301852344706746049, "honderdvijfendertig triljoen driehonderdéén biljard achthonderdtweeënvijftig biljoen driehonderdvierenveertig miljard zevenhonderdzes miljoen zevenhonderdzesenveertigduizendnegenenveertig")
+  , (218922995834555169026, "tweehonderdachttien triljoen negenhonderdtweeëntwintig biljard negenhonderdvijfennegentig biljoen achthonderdvierendertig miljard vijfhonderdvijfenvijftig miljoen honderdnegenenzestigduizendzesentwintig")
+  , (354224848179261915075, "driehonderdvierenvijftig triljoen tweehonderdvierentwintig biljard achthonderdachtenveertig biljoen honderdnegenenzeventig miljard tweehonderdeenenzestig miljoen negenhonderdvijftienduizendvijfenzeventig")
+  , (573147844013817084101, "vijfhonderddrieënzeventig triljoen honderdzevenenveertig biljard achthonderdvierenveertig biljoen dertien miljard achthonderdzeventien miljoen vierentachtigduizendhonderdéén")
+  , (927372692193078999176, "negenhonderdzevenentwintig triljoen driehonderdtweeënzeventig biljard zeshonderdtweeënnegentig biljoen honderddrieënnegentig miljard achtenzeventig miljoen negenhonderdnegenennegentigduizendhonderdzesenzeventig")
+  , (1500520536206896083277, "een triljard vijfhonderd triljoen vijfhonderdtwintig biljard vijfhonderdzesendertig biljoen tweehonderdzes miljard achthonderdzesennegentig miljoen drieëntachtigduizendtweehonderdzevenenzeventig")
+  , (2427893228399975082453, "twee triljard vierhonderdzevenentwintig triljoen achthonderddrieënnegentig biljard tweehonderdachtentwintig biljoen driehonderdnegenennegentig miljard negenhonderdvijfenzeventig miljoen tweeëntachtigduizendvierhonderddrieënvijftig")
+  , (3928413764606871165730, "drie triljard negenhonderdachtentwintig triljoen vierhonderddertien biljard zevenhonderdvierenzestig biljoen zeshonderdzes miljard achthonderdeenenzeventig miljoen honderdvijfenzestigduizendzevenhonderddertig")
+  , (6356306993006846248183, "zes triljard driehonderdzesenvijftig triljoen driehonderdzes biljard negenhonderddrieënnegentig biljoen zes miljard achthonderdzesenveertig miljoen tweehonderdachtenveertigduizendhonderddrieëntachtig")
+  , (10284720757613717413913, "tien triljard tweehonderdvierentachtig triljoen zevenhonderdtwintig biljard zevenhonderdzevenenvijftig biljoen zeshonderddertien miljard zevenhonderdzeventien miljoen vierhonderddertienduizendnegenhonderddertien")
+  , (16641027750620563662096, "zestien triljard zeshonderdeenenveertig triljoen zevenentwintig biljard zevenhonderdvijftig biljoen zeshonderdtwintig miljard vijfhonderddrieënzestig miljoen zeshonderdtweeënzestigduizendzesennegentig")
+  , (26925748508234281076009, "zesentwintig triljard negenhonderdvijfentwintig triljoen zevenhonderdachtenveertig biljard vijfhonderdacht biljoen tweehonderdvierendertig miljard tweehonderdeenentachtig miljoen zesenzeventigduizendnegen")
+  , (43566776258854844738105, "drieënveertig triljard vijfhonderdzesenzestig triljoen zevenhonderdzesenzeventig biljard tweehonderdachtenvijftig biljoen achthonderdvierenvijftig miljard achthonderdvierenveertig miljoen zevenhonderdachtendertigduizendhonderdvijf")
+  , (70492524767089125814114, "zeventig triljard vierhonderdtweeënnegentig triljoen vijfhonderdvierentwintig biljard zevenhonderdzevenenzestig biljoen negenentachtig miljard honderdvijfentwintig miljoen achthonderdveertienduizendhonderdveertien")
+  , (114059301025943970552219, "honderdveertien triljard negenenvijftig triljoen driehonderdéén biljard vijfentwintig biljoen negenhonderddrieënveertig miljard negenhonderdzeventig miljoen vijfhonderdtweeënvijftigduizendtweehonderdnegentien")
+  ]
+
+ordinals :: [(Integer, Text)]
+ordinals = [
+    (0, "nulde")
+  , (1, "eerste")
+  , (2, "tweede")
+  , (3, "derde")
+  , (4, "vierde")
+  , (5, "vijfde")
+  , (6, "zesde")
+  , (7, "zevende")
+  , (8, "achtste")
+  , (9, "negende")
+  , (10, "tiende")
+  , (11, "elfde")
+  , (12, "twaalfde")
+  , (13, "dertiende")
+  , (14, "veertiende")
+  , (15, "vijftiende")
+  , (16, "zestiende")
+  , (17, "zeventiende")
+  , (18, "achttiende")
+  , (19, "negentiende")
+  , (20, "twintigste")
+  , (21, "eenentwintigste")
+  , (22, "tweeëntwintigste")
+  , (23, "drieëntwintigste")
+  , (24, "vierentwintigste")
+  , (25, "vijfentwintigste")
+  , (26, "zesentwintigste")
+  , (27, "zevenentwintigste")
+  , (28, "achtentwintigste")
+  , (29, "negenentwintigste")
+  , (30, "dertigste")
+  , (31, "eenendertigste")
+  , (32, "tweeëndertigste")
+  , (33, "drieëndertigste")
+  , (34, "vierendertigste")
+  , (35, "vijfendertigste")
+  , (36, "zesendertigste")
+  , (37, "zevenendertigste")
+  , (38, "achtendertigste")
+  , (39, "negenendertigste")
+  , (40, "veertigste")
+  , (41, "eenenveertigste")
+  , (42, "tweeënveertigste")
+  , (43, "drieënveertigste")
+  , (44, "vierenveertigste")
+  , (45, "vijfenveertigste")
+  , (46, "zesenveertigste")
+  , (47, "zevenenveertigste")
+  , (48, "achtenveertigste")
+  , (49, "negenenveertigste")
+  , (50, "vijftigste")
+  , (51, "eenenvijftigste")
+  , (52, "tweeënvijftigste")
+  , (53, "drieënvijftigste")
+  , (54, "vierenvijftigste")
+  , (55, "vijfenvijftigste")
+  , (56, "zesenvijftigste")
+  , (57, "zevenenvijftigste")
+  , (58, "achtenvijftigste")
+  , (59, "negenenvijftigste")
+  , (60, "zestigste")
+  , (61, "eenenzestigste")
+  , (62, "tweeënzestigste")
+  , (63, "drieënzestigste")
+  , (64, "vierenzestigste")
+  , (65, "vijfenzestigste")
+  , (66, "zesenzestigste")
+  , (67, "zevenenzestigste")
+  , (68, "achtenzestigste")
+  , (69, "negenenzestigste")
+  , (70, "zeventigste")
+  , (71, "eenenzeventigste")
+  , (72, "tweeënzeventigste")
+  , (73, "drieënzeventigste")
+  , (74, "vierenzeventigste")
+  , (75, "vijfenzeventigste")
+  , (76, "zesenzeventigste")
+  , (77, "zevenenzeventigste")
+  , (78, "achtenzeventigste")
+  , (79, "negenenzeventigste")
+  , (80, "tachtigste")
+  , (81, "eenentachtigste")
+  , (82, "tweeëntachtigste")
+  , (83, "drieëntachtigste")
+  , (84, "vierentachtigste")
+  , (85, "vijfentachtigste")
+  , (86, "zesentachtigste")
+  , (87, "zevenentachtigste")
+  , (88, "achtentachtigste")
+  , (89, "negenentachtigste")
+  , (90, "negentigste")
+  , (91, "eenennegentigste")
+  , (92, "tweeënnegentigste")
+  , (93, "drieënnegentigste")
+  , (94, "vierennegentigste")
+  , (95, "vijfennegentigste")
+  , (96, "zesennegentigste")
+  , (97, "zevenennegentigste")
+  , (98, "achtennegentigste")
+  , (99, "negenennegentigste")
+  , (100, "honderdste")
+  , (101, "honderdeerste")
+  , (102, "honderdtweede")
+  , (103, "honderdderde")
+  , (104, "honderdvierde")
+  , (105, "honderdvijfde")
+  , (106, "honderdzesde")
+  , (107, "honderdzevende")
+  , (108, "honderdachtste")
+  , (109, "honderdnegende")
+  , (110, "honderdtiende")
+  , (111, "honderdelfde")
+  , (112, "honderdtwaalfde")
+  , (113, "honderddertiende")
+  , (114, "honderdveertiende")
+  , (115, "honderdvijftiende")
+  , (116, "honderdzestiende")
+  , (117, "honderdzeventiende")
+  , (118, "honderdachttiende")
+  , (119, "honderdnegentiende")
+  , (120, "honderdtwintigste")
+  , (121, "honderdeenentwintigste")
+  , (122, "honderdtweeëntwintigste")
+  , (123, "honderddrieëntwintigste")
+  , (124, "honderdvierentwintigste")
+  , (125, "honderdvijfentwintigste")
+  , (126, "honderdzesentwintigste")
+  , (127, "honderdzevenentwintigste")
+  , (128, "honderdachtentwintigste")
+  , (129, "honderdnegenentwintigste")
+  , (130, "honderddertigste")
+  , (131, "honderdeenendertigste")
+  , (132, "honderdtweeëndertigste")
+  , (133, "honderddrieëndertigste")
+  , (134, "honderdvierendertigste")
+  , (135, "honderdvijfendertigste")
+  , (136, "honderdzesendertigste")
+  , (137, "honderdzevenendertigste")
+  , (138, "honderdachtendertigste")
+  , (139, "honderdnegenendertigste")
+  , (140, "honderdveertigste")
+  , (141, "honderdeenenveertigste")
+  , (142, "honderdtweeënveertigste")
+  , (143, "honderddrieënveertigste")
+  , (144, "honderdvierenveertigste")
+  , (145, "honderdvijfenveertigste")
+  , (146, "honderdzesenveertigste")
+  , (147, "honderdzevenenveertigste")
+  , (148, "honderdachtenveertigste")
+  , (149, "honderdnegenenveertigste")
+  , (150, "honderdvijftigste")
+  , (151, "honderdeenenvijftigste")
+  , (152, "honderdtweeënvijftigste")
+  , (153, "honderddrieënvijftigste")
+  , (154, "honderdvierenvijftigste")
+  , (155, "honderdvijfenvijftigste")
+  , (156, "honderdzesenvijftigste")
+  , (157, "honderdzevenenvijftigste")
+  , (158, "honderdachtenvijftigste")
+  , (159, "honderdnegenenvijftigste")
+  , (160, "honderdzestigste")
+  , (161, "honderdeenenzestigste")
+  , (162, "honderdtweeënzestigste")
+  , (163, "honderddrieënzestigste")
+  , (164, "honderdvierenzestigste")
+  , (165, "honderdvijfenzestigste")
+  , (166, "honderdzesenzestigste")
+  , (167, "honderdzevenenzestigste")
+  , (168, "honderdachtenzestigste")
+  , (169, "honderdnegenenzestigste")
+  , (170, "honderdzeventigste")
+  , (171, "honderdeenenzeventigste")
+  , (172, "honderdtweeënzeventigste")
+  , (173, "honderddrieënzeventigste")
+  , (174, "honderdvierenzeventigste")
+  , (175, "honderdvijfenzeventigste")
+  , (176, "honderdzesenzeventigste")
+  , (177, "honderdzevenenzeventigste")
+  , (178, "honderdachtenzeventigste")
+  , (179, "honderdnegenenzeventigste")
+  , (180, "honderdtachtigste")
+  , (181, "honderdeenentachtigste")
+  , (182, "honderdtweeëntachtigste")
+  , (183, "honderddrieëntachtigste")
+  , (184, "honderdvierentachtigste")
+  , (185, "honderdvijfentachtigste")
+  , (186, "honderdzesentachtigste")
+  , (187, "honderdzevenentachtigste")
+  , (188, "honderdachtentachtigste")
+  , (189, "honderdnegenentachtigste")
+  , (190, "honderdnegentigste")
+  , (191, "honderdeenennegentigste")
+  , (192, "honderdtweeënnegentigste")
+  , (193, "honderddrieënnegentigste")
+  , (194, "honderdvierennegentigste")
+  , (195, "honderdvijfennegentigste")
+  , (196, "honderdzesennegentigste")
+  , (197, "honderdzevenennegentigste")
+  , (198, "honderdachtennegentigste")
+  , (199, "honderdnegenennegentigste")
+  , (200, "tweehonderdste")
+  , (233, "tweehonderddrieëndertigste")
+  , (377, "driehonderdzevenenzeventigste")
+  , (610, "zeshonderdtiende")
+  , (987, "negenhonderdzevenentachtigste")
+  , (1597, "duizendvijfhonderdzevenennegentigste")
+  , (2584, "tweeduizendvijfhonderdvierentachtigste")
+  , (4181, "vierduizendhonderdeenentachtigste")
+  , (6765, "zesduizendzevenhonderdvijfenzestigste")
+  , (10946, "tienduizendnegenhonderdzesenveertigste")
+  , (17711, "zeventienduizendzevenhonderdelfde")
+  , (28657, "achtentwintigduizendzeshonderdzevenenvijftigste")
+  , (46368, "zesenveertigduizenddriehonderdachtenzestigste")
+  , (75025, "vijfenzeventigduizendvijfentwintigste")
+  , (121393, "honderdeenentwintigduizenddriehonderddrieënnegentigste")
+  , (196418, "honderdzesennegentigduizendvierhonderdachttiende")
+  , (317811, "driehonderdzeventienduizendachthonderdelfde")
+  , (514229, "vijfhonderdveertienduizendtweehonderdnegenentwintigste")
+  , (832040, "achthonderdtweeëndertigduizendveertigste")
+  , (1346269, "een miljoen driehonderdzesenveertigduizendtweehonderdnegenenzestigste")
+  , (2178309, "twee miljoen honderdachtenzeventigduizenddriehonderdnegende")
+  , (3524578, "drie miljoen vijfhonderdvierentwintigduizendvijfhonderdachtenzeventigste")
+  , (5702887, "vijf miljoen zevenhonderdtweeduizendachthonderdzevenentachtigste")
+  , (9227465, "negen miljoen tweehonderdzevenentwintigduizendvierhonderdvijfenzestigste")
+  , (14930352, "veertien miljoen negenhonderddertigduizenddriehonderdtweeënvijftigste")
+  , (24157817, "vierentwintig miljoen honderdzevenenvijftigduizendachthonderdzeventiende")
+  , (39088169, "negenendertig miljoen achtentachtigduizendhonderdnegenenzestigste")
+  , (63245986, "drieënzestig miljoen tweehonderdvijfenveertigduizendnegenhonderdzesentachtigste")
+  , (102334155, "honderdtwee miljoen driehonderdvierendertigduizendhonderdvijfenvijftigste")
+  , (165580141, "honderdvijfenzestig miljoen vijfhonderdtachtigduizendhonderdeenenveertigste")
+  , (267914296, "tweehonderdzevenenzestig miljoen negenhonderdveertienduizendtweehonderdzesennegentigste")
+  , (433494437, "vierhonderddrieëndertig miljoen vierhonderdvierennegentigduizendvierhonderdzevenendertigste")
+  , (701408733, "zevenhonderdéén miljoen vierhonderdachtduizendzevenhonderddrieëndertigste")
+  , (1134903170, "een miljard honderdvierendertig miljoen negenhonderddrieduizendhonderdzeventigste")
+  , (1836311903, "een miljard achthonderdzesendertig miljoen driehonderdelfduizendnegenhonderdderde")
+  , (2971215073, "twee miljard negenhonderdeenenzeventig miljoen tweehonderdvijftienduizenddrieënzeventigste")
+  , (4807526976, "vier miljard achthonderdzeven miljoen vijfhonderdzesentwintigduizendnegenhonderdzesenzeventigste")
+  , (7778742049, "zeven miljard zevenhonderdachtenzeventig miljoen zevenhonderdtweeënveertigduizendnegenenveertigste")
+  , (12586269025, "twaalf miljard vijfhonderdzesentachtig miljoen tweehonderdnegenenzestigduizendvijfentwintigste")
+  , (20365011074, "twintig miljard driehonderdvijfenzestig miljoen elfduizendvierenzeventigste")
+  , (32951280099, "tweeëndertig miljard negenhonderdeenenvijftig miljoen tweehonderdtachtigduizendnegenennegentigste")
+  , (53316291173, "drieënvijftig miljard driehonderdzestien miljoen tweehonderdeenennegentigduizendhonderddrieënzeventigste")
+  , (86267571272, "zesentachtig miljard tweehonderdzevenenzestig miljoen vijfhonderdeenenzeventigduizendtweehonderdtweeënzeventigste")
+  , (139583862445, "honderdnegenendertig miljard vijfhonderddrieëntachtig miljoen achthonderdtweeënzestigduizendvierhonderdvijfenveertigste")
+  , (225851433717, "tweehonderdvijfentwintig miljard achthonderdeenenvijftig miljoen vierhonderddrieëndertigduizendzevenhonderdzeventiende")
+  , (365435296162, "driehonderdvijfenzestig miljard vierhonderdvijfendertig miljoen tweehonderdzesennegentigduizendhonderdtweeënzestigste")
+  , (591286729879, "vijfhonderdeenennegentig miljard tweehonderdzesentachtig miljoen zevenhonderdnegenentwintigduizendachthonderdnegenenzeventigste")
+  , (956722026041, "negenhonderdzesenvijftig miljard zevenhonderdtweeëntwintig miljoen zesentwintigduizendeenenveertigste")
+  , (1548008755920, "een biljoen vijfhonderdachtenveertig miljard acht miljoen zevenhonderdvijfenvijftigduizendnegenhonderdtwintigste")
+  , (2504730781961, "twee biljoen vijfhonderdvier miljard zevenhonderddertig miljoen zevenhonderdeenentachtigduizendnegenhonderdeenenzestigste")
+  , (4052739537881, "vier biljoen tweeënvijftig miljard zevenhonderdnegenendertig miljoen vijfhonderdzevenendertigduizendachthonderdeenentachtigste")
+  , (6557470319842, "zes biljoen vijfhonderdzevenenvijftig miljard vierhonderdzeventig miljoen driehonderdnegentienduizendachthonderdtweeënveertigste")
+  , (10610209857723, "tien biljoen zeshonderdtien miljard tweehonderdnegen miljoen achthonderdzevenenvijftigduizendzevenhonderddrieëntwintigste")
+  , (17167680177565, "zeventien biljoen honderdzevenenzestig miljard zeshonderdtachtig miljoen honderdzevenenzeventigduizendvijfhonderdvijfenzestigste")
+  , (27777890035288, "zevenentwintig biljoen zevenhonderdzevenenzeventig miljard achthonderdnegentig miljoen vijfendertigduizendtweehonderdachtentachtigste")
+  , (44945570212853, "vierenveertig biljoen negenhonderdvijfenveertig miljard vijfhonderdzeventig miljoen tweehonderdtwaalfduizendachthonderddrieënvijftigste")
+  , (72723460248141, "tweeënzeventig biljoen zevenhonderddrieëntwintig miljard vierhonderdzestig miljoen tweehonderdachtenveertigduizendhonderdeenenveertigste")
+  , (117669030460994, "honderdzeventien biljoen zeshonderdnegenenzestig miljard dertig miljoen vierhonderdzestigduizendnegenhonderdvierennegentigste")
+  , (190392490709135, "honderdnegentig biljoen driehonderdtweeënnegentig miljard vierhonderdnegentig miljoen zevenhonderdnegenduizendhonderdvijfendertigste")
+  , (308061521170129, "driehonderdacht biljoen eenenzestig miljard vijfhonderdeenentwintig miljoen honderdzeventigduizendhonderdnegenentwintigste")
+  , (498454011879264, "vierhonderdachtennegentig biljoen vierhonderdvierenvijftig miljard elf miljoen achthonderdnegenenzeventigduizendtweehonderdvierenzestigste")
+  , (806515533049393, "achthonderdzes biljoen vijfhonderdvijftien miljard vijfhonderddrieëndertig miljoen negenenveertigduizenddriehonderddrieënnegentigste")
+  , (1304969544928657, "een biljard driehonderdvier biljoen negenhonderdnegenenzestig miljard vijfhonderdvierenveertig miljoen negenhonderdachtentwintigduizendzeshonderdzevenenvijftigste")
+  , (2111485077978050, "twee biljard honderdelf biljoen vierhonderdvijfentachtig miljard zevenenzeventig miljoen negenhonderdachtenzeventigduizendvijftigste")
+  , (3416454622906707, "drie biljard vierhonderdzestien biljoen vierhonderdvierenvijftig miljard zeshonderdtweeëntwintig miljoen negenhonderdzesduizendzevenhonderdzevende")
+  , (5527939700884757, "vijf biljard vijfhonderdzevenentwintig biljoen negenhonderdnegenendertig miljard zevenhonderd miljoen achthonderdvierentachtigduizendzevenhonderdzevenenvijftigste")
+  , (8944394323791464, "acht biljard negenhonderdvierenveertig biljoen driehonderdvierennegentig miljard driehonderddrieëntwintig miljoen zevenhonderdeenennegentigduizendvierhonderdvierenzestigste")
+  , (14472334024676221, "veertien biljard vierhonderdtweeënzeventig biljoen driehonderdvierendertig miljard vierentwintig miljoen zeshonderdzesenzeventigduizendtweehonderdeenentwintigste")
+  , (23416728348467685, "drieëntwintig biljard vierhonderdzestien biljoen zevenhonderdachtentwintig miljard driehonderdachtenveertig miljoen vierhonderdzevenenzestigduizendzeshonderdvijfentachtigste")
+  , (37889062373143906, "zevenendertig biljard achthonderdnegenentachtig biljoen tweeënzestig miljard driehonderddrieënzeventig miljoen honderddrieënveertigduizendnegenhonderdzesde")
+  , (61305790721611591, "eenenzestig biljard driehonderdvijf biljoen zevenhonderdnegentig miljard zevenhonderdeenentwintig miljoen zeshonderdelfduizendvijfhonderdeenennegentigste")
+  , (99194853094755497, "negenennegentig biljard honderdvierennegentig biljoen achthonderddrieënvijftig miljard vierennegentig miljoen zevenhonderdvijfenvijftigduizendvierhonderdzevenennegentigste")
+  , (160500643816367088, "honderdzestig biljard vijfhonderd biljoen zeshonderddrieënveertig miljard achthonderdzestien miljoen driehonderdzevenenzestigduizendachtentachtigste")
+  , (259695496911122585, "tweehonderdnegenenvijftig biljard zeshonderdvijfennegentig biljoen vierhonderdzesennegentig miljard negenhonderdelf miljoen honderdtweeëntwintigduizendvijfhonderdvijfentachtigste")
+  , (420196140727489673, "vierhonderdtwintig biljard honderdzesennegentig biljoen honderdveertig miljard zevenhonderdzevenentwintig miljoen vierhonderdnegenentachtigduizendzeshonderddrieënzeventigste")
+  , (679891637638612258, "zeshonderdnegenenzeventig biljard achthonderdeenennegentig biljoen zeshonderdzevenendertig miljard zeshonderdachtendertig miljoen zeshonderdtwaalfduizendtweehonderdachtenvijftigste")
+  , (1100087778366101931, "een triljoen honderd biljard zevenentachtig biljoen zevenhonderdachtenzeventig miljard driehonderdzesenzestig miljoen honderdéénduizendnegenhonderdeenendertigste")
+  , (1779979416004714189, "een triljoen zevenhonderdnegenenzeventig biljard negenhonderdnegenenzeventig biljoen vierhonderdzestien miljard vier miljoen zevenhonderdveertienduizendhonderdnegenentachtigste")
+  , (2880067194370816120, "twee triljoen achthonderdtachtig biljard zevenenzestig biljoen honderdvierennegentig miljard driehonderdzeventig miljoen achthonderdzestienduizendhonderdtwintigste")
+  , (4660046610375530309, "vier triljoen zeshonderdzestig biljard zesenveertig biljoen zeshonderdtien miljard driehonderdvijfenzeventig miljoen vijfhonderddertigduizenddriehonderdnegende")
+  , (7540113804746346429, "zeven triljoen vijfhonderdveertig biljard honderddertien biljoen achthonderdvier miljard zevenhonderdzesenveertig miljoen driehonderdzesenveertigduizendvierhonderdnegenentwintigste")
+  , (12200160415121876738, "twaalf triljoen tweehonderd biljard honderdzestig biljoen vierhonderdvijftien miljard honderdeenentwintig miljoen achthonderdzesenzeventigduizendzevenhonderdachtendertigste")
+  , (19740274219868223167, "negentien triljoen zevenhonderdveertig biljard tweehonderdvierenzeventig biljoen tweehonderdnegentien miljard achthonderdachtenzestig miljoen tweehonderddrieëntwintigduizendhonderdzevenenzestigste")
+  , (31940434634990099905, "eenendertig triljoen negenhonderdveertig biljard vierhonderdvierendertig biljoen zeshonderdvierendertig miljard negenhonderdnegentig miljoen negenennegentigduizendnegenhonderdvijfde")
+  , (51680708854858323072, "eenenvijftig triljoen zeshonderdtachtig biljard zevenhonderdacht biljoen achthonderdvierenvijftig miljard achthonderdachtenvijftig miljoen driehonderddrieëntwintigduizendtweeënzeventigste")
+  , (83621143489848422977, "drieëntachtig triljoen zeshonderdeenentwintig biljard honderddrieënveertig biljoen vierhonderdnegenentachtig miljard achthonderdachtenveertig miljoen vierhonderdtweeëntwintigduizendnegenhonderdzevenenzeventigste")
+  , (135301852344706746049, "honderdvijfendertig triljoen driehonderdéén biljard achthonderdtweeënvijftig biljoen driehonderdvierenveertig miljard zevenhonderdzes miljoen zevenhonderdzesenveertigduizendnegenenveertigste")
+  , (218922995834555169026, "tweehonderdachttien triljoen negenhonderdtweeëntwintig biljard negenhonderdvijfennegentig biljoen achthonderdvierendertig miljard vijfhonderdvijfenvijftig miljoen honderdnegenenzestigduizendzesentwintigste")
+  , (354224848179261915075, "driehonderdvierenvijftig triljoen tweehonderdvierentwintig biljard achthonderdachtenveertig biljoen honderdnegenenzeventig miljard tweehonderdeenenzestig miljoen negenhonderdvijftienduizendvijfenzeventigste")
+  , (573147844013817084101, "vijfhonderddrieënzeventig triljoen honderdzevenenveertig biljard achthonderdvierenveertig biljoen dertien miljard achthonderdzeventien miljoen vierentachtigduizendhonderdeerste")
+  , (927372692193078999176, "negenhonderdzevenentwintig triljoen driehonderdtweeënzeventig biljard zeshonderdtweeënnegentig biljoen honderddrieënnegentig miljard achtenzeventig miljoen negenhonderdnegenennegentigduizendhonderdzesenzeventigste")
+  , (1500520536206896083277, "een triljard vijfhonderd triljoen vijfhonderdtwintig biljard vijfhonderdzesendertig biljoen tweehonderdzes miljard achthonderdzesennegentig miljoen drieëntachtigduizendtweehonderdzevenenzeventigste")
+  , (2427893228399975082453, "twee triljard vierhonderdzevenentwintig triljoen achthonderddrieënnegentig biljard tweehonderdachtentwintig biljoen driehonderdnegenennegentig miljard negenhonderdvijfenzeventig miljoen tweeëntachtigduizendvierhonderddrieënvijftigste")
+  , (3928413764606871165730, "drie triljard negenhonderdachtentwintig triljoen vierhonderddertien biljard zevenhonderdvierenzestig biljoen zeshonderdzes miljard achthonderdeenenzeventig miljoen honderdvijfenzestigduizendzevenhonderddertigste")
+  , (6356306993006846248183, "zes triljard driehonderdzesenvijftig triljoen driehonderdzes biljard negenhonderddrieënnegentig biljoen zes miljard achthonderdzesenveertig miljoen tweehonderdachtenveertigduizendhonderddrieëntachtigste")
+  , (10284720757613717413913, "tien triljard tweehonderdvierentachtig triljoen zevenhonderdtwintig biljard zevenhonderdzevenenvijftig biljoen zeshonderddertien miljard zevenhonderdzeventien miljoen vierhonderddertienduizendnegenhonderddertiende")
+  , (16641027750620563662096, "zestien triljard zeshonderdeenenveertig triljoen zevenentwintig biljard zevenhonderdvijftig biljoen zeshonderdtwintig miljard vijfhonderddrieënzestig miljoen zeshonderdtweeënzestigduizendzesennegentigste")
+  , (26925748508234281076009, "zesentwintig triljard negenhonderdvijfentwintig triljoen zevenhonderdachtenveertig biljard vijfhonderdacht biljoen tweehonderdvierendertig miljard tweehonderdeenentachtig miljoen zesenzeventigduizendnegende")
+  , (43566776258854844738105, "drieënveertig triljard vijfhonderdzesenzestig triljoen zevenhonderdzesenzeventig biljard tweehonderdachtenvijftig biljoen achthonderdvierenvijftig miljard achthonderdvierenveertig miljoen zevenhonderdachtendertigduizendhonderdvijfde")
+  , (70492524767089125814114, "zeventig triljard vierhonderdtweeënnegentig triljoen vijfhonderdvierentwintig biljard zevenhonderdzevenenzestig biljoen negenentachtig miljard honderdvijfentwintig miljoen achthonderdveertienduizendhonderdveertiende")
+  , (114059301025943970552219, "honderdveertien triljard negenenvijftig triljoen driehonderdéén biljard vijfentwintig biljoen negenhonderddrieënveertig miljard negenhonderdzeventig miljoen vijfhonderdtweeënvijftigduizendtweehonderdnegentiende")
+  ]
diff --git a/test/Text/Numerals/Languages/EnglishSpec.hs b/test/Text/Numerals/Languages/EnglishSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/Text/Numerals/Languages/EnglishSpec.hs
@@ -0,0 +1,622 @@
+module Text.Numerals.Languages.EnglishSpec (
+    spec
+  ) where
+
+import Data.Text(Text)
+
+import Test.Hspec(Spec)
+import Text.Numerals.Languages.English(english)
+import Text.Numerals.LanguageTest(testLanguage)
+
+spec :: Spec
+spec = testLanguage "English" english cardinals ordinals
+
+cardinals :: [(Integer, Text)]
+cardinals = [
+    (0, "zero")
+  , (1, "one")
+  , (2, "two")
+  , (3, "three")
+  , (4, "four")
+  , (5, "five")
+  , (6, "six")
+  , (7, "seven")
+  , (8, "eight")
+  , (9, "nine")
+  , (10, "ten")
+  , (11, "eleven")
+  , (12, "twelve")
+  , (13, "thirteen")
+  , (14, "fourteen")
+  , (15, "fifteen")
+  , (16, "sixteen")
+  , (17, "seventeen")
+  , (18, "eighteen")
+  , (19, "nineteen")
+  , (20, "twenty")
+  , (21, "twenty-one")
+  , (22, "twenty-two")
+  , (23, "twenty-three")
+  , (24, "twenty-four")
+  , (25, "twenty-five")
+  , (26, "twenty-six")
+  , (27, "twenty-seven")
+  , (28, "twenty-eight")
+  , (29, "twenty-nine")
+  , (30, "thirty")
+  , (31, "thirty-one")
+  , (32, "thirty-two")
+  , (33, "thirty-three")
+  , (34, "thirty-four")
+  , (35, "thirty-five")
+  , (36, "thirty-six")
+  , (37, "thirty-seven")
+  , (38, "thirty-eight")
+  , (39, "thirty-nine")
+  , (40, "forty")
+  , (41, "forty-one")
+  , (42, "forty-two")
+  , (43, "forty-three")
+  , (44, "forty-four")
+  , (45, "forty-five")
+  , (46, "forty-six")
+  , (47, "forty-seven")
+  , (48, "forty-eight")
+  , (49, "forty-nine")
+  , (50, "fifty")
+  , (51, "fifty-one")
+  , (52, "fifty-two")
+  , (53, "fifty-three")
+  , (54, "fifty-four")
+  , (55, "fifty-five")
+  , (56, "fifty-six")
+  , (57, "fifty-seven")
+  , (58, "fifty-eight")
+  , (59, "fifty-nine")
+  , (60, "sixty")
+  , (61, "sixty-one")
+  , (62, "sixty-two")
+  , (63, "sixty-three")
+  , (64, "sixty-four")
+  , (65, "sixty-five")
+  , (66, "sixty-six")
+  , (67, "sixty-seven")
+  , (68, "sixty-eight")
+  , (69, "sixty-nine")
+  , (70, "seventy")
+  , (71, "seventy-one")
+  , (72, "seventy-two")
+  , (73, "seventy-three")
+  , (74, "seventy-four")
+  , (75, "seventy-five")
+  , (76, "seventy-six")
+  , (77, "seventy-seven")
+  , (78, "seventy-eight")
+  , (79, "seventy-nine")
+  , (80, "eighty")
+  , (81, "eighty-one")
+  , (82, "eighty-two")
+  , (83, "eighty-three")
+  , (84, "eighty-four")
+  , (85, "eighty-five")
+  , (86, "eighty-six")
+  , (87, "eighty-seven")
+  , (88, "eighty-eight")
+  , (89, "eighty-nine")
+  , (90, "ninety")
+  , (91, "ninety-one")
+  , (92, "ninety-two")
+  , (93, "ninety-three")
+  , (94, "ninety-four")
+  , (95, "ninety-five")
+  , (96, "ninety-six")
+  , (97, "ninety-seven")
+  , (98, "ninety-eight")
+  , (99, "ninety-nine")
+  , (100, "one hundred")
+  , (101, "one hundred and one")
+  , (102, "one hundred and two")
+  , (103, "one hundred and three")
+  , (104, "one hundred and four")
+  , (105, "one hundred and five")
+  , (106, "one hundred and six")
+  , (107, "one hundred and seven")
+  , (108, "one hundred and eight")
+  , (109, "one hundred and nine")
+  , (110, "one hundred and ten")
+  , (111, "one hundred and eleven")
+  , (112, "one hundred and twelve")
+  , (113, "one hundred and thirteen")
+  , (114, "one hundred and fourteen")
+  , (115, "one hundred and fifteen")
+  , (116, "one hundred and sixteen")
+  , (117, "one hundred and seventeen")
+  , (118, "one hundred and eighteen")
+  , (119, "one hundred and nineteen")
+  , (120, "one hundred and twenty")
+  , (121, "one hundred and twenty-one")
+  , (122, "one hundred and twenty-two")
+  , (123, "one hundred and twenty-three")
+  , (124, "one hundred and twenty-four")
+  , (125, "one hundred and twenty-five")
+  , (126, "one hundred and twenty-six")
+  , (127, "one hundred and twenty-seven")
+  , (128, "one hundred and twenty-eight")
+  , (129, "one hundred and twenty-nine")
+  , (130, "one hundred and thirty")
+  , (131, "one hundred and thirty-one")
+  , (132, "one hundred and thirty-two")
+  , (133, "one hundred and thirty-three")
+  , (134, "one hundred and thirty-four")
+  , (135, "one hundred and thirty-five")
+  , (136, "one hundred and thirty-six")
+  , (137, "one hundred and thirty-seven")
+  , (138, "one hundred and thirty-eight")
+  , (139, "one hundred and thirty-nine")
+  , (140, "one hundred and forty")
+  , (141, "one hundred and forty-one")
+  , (142, "one hundred and forty-two")
+  , (143, "one hundred and forty-three")
+  , (144, "one hundred and forty-four")
+  , (145, "one hundred and forty-five")
+  , (146, "one hundred and forty-six")
+  , (147, "one hundred and forty-seven")
+  , (148, "one hundred and forty-eight")
+  , (149, "one hundred and forty-nine")
+  , (150, "one hundred and fifty")
+  , (151, "one hundred and fifty-one")
+  , (152, "one hundred and fifty-two")
+  , (153, "one hundred and fifty-three")
+  , (154, "one hundred and fifty-four")
+  , (155, "one hundred and fifty-five")
+  , (156, "one hundred and fifty-six")
+  , (157, "one hundred and fifty-seven")
+  , (158, "one hundred and fifty-eight")
+  , (159, "one hundred and fifty-nine")
+  , (160, "one hundred and sixty")
+  , (161, "one hundred and sixty-one")
+  , (162, "one hundred and sixty-two")
+  , (163, "one hundred and sixty-three")
+  , (164, "one hundred and sixty-four")
+  , (165, "one hundred and sixty-five")
+  , (166, "one hundred and sixty-six")
+  , (167, "one hundred and sixty-seven")
+  , (168, "one hundred and sixty-eight")
+  , (169, "one hundred and sixty-nine")
+  , (170, "one hundred and seventy")
+  , (171, "one hundred and seventy-one")
+  , (172, "one hundred and seventy-two")
+  , (173, "one hundred and seventy-three")
+  , (174, "one hundred and seventy-four")
+  , (175, "one hundred and seventy-five")
+  , (176, "one hundred and seventy-six")
+  , (177, "one hundred and seventy-seven")
+  , (178, "one hundred and seventy-eight")
+  , (179, "one hundred and seventy-nine")
+  , (180, "one hundred and eighty")
+  , (181, "one hundred and eighty-one")
+  , (182, "one hundred and eighty-two")
+  , (183, "one hundred and eighty-three")
+  , (184, "one hundred and eighty-four")
+  , (185, "one hundred and eighty-five")
+  , (186, "one hundred and eighty-six")
+  , (187, "one hundred and eighty-seven")
+  , (188, "one hundred and eighty-eight")
+  , (189, "one hundred and eighty-nine")
+  , (190, "one hundred and ninety")
+  , (191, "one hundred and ninety-one")
+  , (192, "one hundred and ninety-two")
+  , (193, "one hundred and ninety-three")
+  , (194, "one hundred and ninety-four")
+  , (195, "one hundred and ninety-five")
+  , (196, "one hundred and ninety-six")
+  , (197, "one hundred and ninety-seven")
+  , (198, "one hundred and ninety-eight")
+  , (199, "one hundred and ninety-nine")
+  , (200, "two hundred")
+  , (233, "two hundred and thirty-three")
+  , (377, "three hundred and seventy-seven")
+  , (610, "six hundred and ten")
+  , (987, "nine hundred and eighty-seven")
+  , (1597, "one thousand, five hundred and ninety-seven")
+  , (2584, "two thousand, five hundred and eighty-four")
+  , (4181, "four thousand, one hundred and eighty-one")
+  , (6765, "six thousand, seven hundred and sixty-five")
+  , (10946, "ten thousand, nine hundred and forty-six")
+  , (17711, "seventeen thousand, seven hundred and eleven")
+  , (28657, "twenty-eight thousand, six hundred and fifty-seven")
+  , (46368, "forty-six thousand, three hundred and sixty-eight")
+  , (75025, "seventy-five thousand and twenty-five")
+  , (121393, "one hundred and twenty-one thousand, three hundred and ninety-three")
+  , (196418, "one hundred and ninety-six thousand, four hundred and eighteen")
+  , (317811, "three hundred and seventeen thousand, eight hundred and eleven")
+  , (514229, "five hundred and fourteen thousand, two hundred and twenty-nine")
+  , (832040, "eight hundred and thirty-two thousand and forty")
+  , (1346269, "one million, three hundred and forty-six thousand, two hundred and sixty-nine")
+  , (2178309, "two million, one hundred and seventy-eight thousand, three hundred and nine")
+  , (3524578, "three million, five hundred and twenty-four thousand, five hundred and seventy-eight")
+  , (5702887, "five million, seven hundred and two thousand, eight hundred and eighty-seven")
+  , (9227465, "nine million, two hundred and twenty-seven thousand, four hundred and sixty-five")
+  , (14930352, "fourteen million, nine hundred and thirty thousand, three hundred and fifty-two")
+  , (24157817, "twenty-four million, one hundred and fifty-seven thousand, eight hundred and seventeen")
+  , (39088169, "thirty-nine million, eighty-eight thousand, one hundred and sixty-nine")
+  , (63245986, "sixty-three million, two hundred and forty-five thousand, nine hundred and eighty-six")
+  , (102334155, "one hundred and two million, three hundred and thirty-four thousand, one hundred and fifty-five")
+  , (165580141, "one hundred and sixty-five million, five hundred and eighty thousand, one hundred and forty-one")
+  , (267914296, "two hundred and sixty-seven million, nine hundred and fourteen thousand, two hundred and ninety-six")
+  , (433494437, "four hundred and thirty-three million, four hundred and ninety-four thousand, four hundred and thirty-seven")
+  , (701408733, "seven hundred and one million, four hundred and eight thousand, seven hundred and thirty-three")
+  , (1134903170, "one billion, one hundred and thirty-four million, nine hundred and three thousand, one hundred and seventy")
+  , (1836311903, "one billion, eight hundred and thirty-six million, three hundred and eleven thousand, nine hundred and three")
+  , (2971215073, "two billion, nine hundred and seventy-one million, two hundred and fifteen thousand and seventy-three")
+  , (4807526976, "four billion, eight hundred and seven million, five hundred and twenty-six thousand, nine hundred and seventy-six")
+  , (7778742049, "seven billion, seven hundred and seventy-eight million, seven hundred and forty-two thousand and forty-nine")
+  , (12586269025, "twelve billion, five hundred and eighty-six million, two hundred and sixty-nine thousand and twenty-five")
+  , (20365011074, "twenty billion, three hundred and sixty-five million, eleven thousand and seventy-four")
+  , (32951280099, "thirty-two billion, nine hundred and fifty-one million, two hundred and eighty thousand and ninety-nine")
+  , (53316291173, "fifty-three billion, three hundred and sixteen million, two hundred and ninety-one thousand, one hundred and seventy-three")
+  , (86267571272, "eighty-six billion, two hundred and sixty-seven million, five hundred and seventy-one thousand, two hundred and seventy-two")
+  , (139583862445, "one hundred and thirty-nine billion, five hundred and eighty-three million, eight hundred and sixty-two thousand, four hundred and forty-five")
+  , (225851433717, "two hundred and twenty-five billion, eight hundred and fifty-one million, four hundred and thirty-three thousand, seven hundred and seventeen")
+  , (365435296162, "three hundred and sixty-five billion, four hundred and thirty-five million, two hundred and ninety-six thousand, one hundred and sixty-two")
+  , (591286729879, "five hundred and ninety-one billion, two hundred and eighty-six million, seven hundred and twenty-nine thousand, eight hundred and seventy-nine")
+  , (956722026041, "nine hundred and fifty-six billion, seven hundred and twenty-two million, twenty-six thousand and forty-one")
+  , (1548008755920, "one trillion, five hundred and forty-eight billion, eight million, seven hundred and fifty-five thousand, nine hundred and twenty")
+  , (2504730781961, "two trillion, five hundred and four billion, seven hundred and thirty million, seven hundred and eighty-one thousand, nine hundred and sixty-one")
+  , (4052739537881, "four trillion, fifty-two billion, seven hundred and thirty-nine million, five hundred and thirty-seven thousand, eight hundred and eighty-one")
+  , (6557470319842, "six trillion, five hundred and fifty-seven billion, four hundred and seventy million, three hundred and nineteen thousand, eight hundred and forty-two")
+  , (10610209857723, "ten trillion, six hundred and ten billion, two hundred and nine million, eight hundred and fifty-seven thousand, seven hundred and twenty-three")
+  , (17167680177565, "seventeen trillion, one hundred and sixty-seven billion, six hundred and eighty million, one hundred and seventy-seven thousand, five hundred and sixty-five")
+  , (27777890035288, "twenty-seven trillion, seven hundred and seventy-seven billion, eight hundred and ninety million, thirty-five thousand, two hundred and eighty-eight")
+  , (44945570212853, "forty-four trillion, nine hundred and forty-five billion, five hundred and seventy million, two hundred and twelve thousand, eight hundred and fifty-three")
+  , (72723460248141, "seventy-two trillion, seven hundred and twenty-three billion, four hundred and sixty million, two hundred and forty-eight thousand, one hundred and forty-one")
+  , (117669030460994, "one hundred and seventeen trillion, six hundred and sixty-nine billion, thirty million, four hundred and sixty thousand, nine hundred and ninety-four")
+  , (190392490709135, "one hundred and ninety trillion, three hundred and ninety-two billion, four hundred and ninety million, seven hundred and nine thousand, one hundred and thirty-five")
+  , (308061521170129, "three hundred and eight trillion, sixty-one billion, five hundred and twenty-one million, one hundred and seventy thousand, one hundred and twenty-nine")
+  , (498454011879264, "four hundred and ninety-eight trillion, four hundred and fifty-four billion, eleven million, eight hundred and seventy-nine thousand, two hundred and sixty-four")
+  , (806515533049393, "eight hundred and six trillion, five hundred and fifteen billion, five hundred and thirty-three million, forty-nine thousand, three hundred and ninety-three")
+  , (1304969544928657, "one quadrillion, three hundred and four trillion, nine hundred and sixty-nine billion, five hundred and forty-four million, nine hundred and twenty-eight thousand, six hundred and fifty-seven")
+  , (2111485077978050, "two quadrillion, one hundred and eleven trillion, four hundred and eighty-five billion, seventy-seven million, nine hundred and seventy-eight thousand and fifty")
+  , (3416454622906707, "three quadrillion, four hundred and sixteen trillion, four hundred and fifty-four billion, six hundred and twenty-two million, nine hundred and six thousand, seven hundred and seven")
+  , (5527939700884757, "five quadrillion, five hundred and twenty-seven trillion, nine hundred and thirty-nine billion, seven hundred million, eight hundred and eighty-four thousand, seven hundred and fifty-seven")
+  , (8944394323791464, "eight quadrillion, nine hundred and forty-four trillion, three hundred and ninety-four billion, three hundred and twenty-three million, seven hundred and ninety-one thousand, four hundred and sixty-four")
+  , (14472334024676221, "fourteen quadrillion, four hundred and seventy-two trillion, three hundred and thirty-four billion, twenty-four million, six hundred and seventy-six thousand, two hundred and twenty-one")
+  , (23416728348467685, "twenty-three quadrillion, four hundred and sixteen trillion, seven hundred and twenty-eight billion, three hundred and forty-eight million, four hundred and sixty-seven thousand, six hundred and eighty-five")
+  , (37889062373143906, "thirty-seven quadrillion, eight hundred and eighty-nine trillion, sixty-two billion, three hundred and seventy-three million, one hundred and forty-three thousand, nine hundred and six")
+  , (61305790721611591, "sixty-one quadrillion, three hundred and five trillion, seven hundred and ninety billion, seven hundred and twenty-one million, six hundred and eleven thousand, five hundred and ninety-one")
+  , (99194853094755497, "ninety-nine quadrillion, one hundred and ninety-four trillion, eight hundred and fifty-three billion, ninety-four million, seven hundred and fifty-five thousand, four hundred and ninety-seven")
+  , (160500643816367088, "one hundred and sixty quadrillion, five hundred trillion, six hundred and forty-three billion, eight hundred and sixteen million, three hundred and sixty-seven thousand and eighty-eight")
+  , (259695496911122585, "two hundred and fifty-nine quadrillion, six hundred and ninety-five trillion, four hundred and ninety-six billion, nine hundred and eleven million, one hundred and twenty-two thousand, five hundred and eighty-five")
+  , (420196140727489673, "four hundred and twenty quadrillion, one hundred and ninety-six trillion, one hundred and forty billion, seven hundred and twenty-seven million, four hundred and eighty-nine thousand, six hundred and seventy-three")
+  , (679891637638612258, "six hundred and seventy-nine quadrillion, eight hundred and ninety-one trillion, six hundred and thirty-seven billion, six hundred and thirty-eight million, six hundred and twelve thousand, two hundred and fifty-eight")
+  , (1100087778366101931, "one quintillion, one hundred quadrillion, eighty-seven trillion, seven hundred and seventy-eight billion, three hundred and sixty-six million, one hundred and one thousand, nine hundred and thirty-one")
+  , (1779979416004714189, "one quintillion, seven hundred and seventy-nine quadrillion, nine hundred and seventy-nine trillion, four hundred and sixteen billion, four million, seven hundred and fourteen thousand, one hundred and eighty-nine")
+  , (2880067194370816120, "two quintillion, eight hundred and eighty quadrillion, sixty-seven trillion, one hundred and ninety-four billion, three hundred and seventy million, eight hundred and sixteen thousand, one hundred and twenty")
+  , (4660046610375530309, "four quintillion, six hundred and sixty quadrillion, forty-six trillion, six hundred and ten billion, three hundred and seventy-five million, five hundred and thirty thousand, three hundred and nine")
+  , (7540113804746346429, "seven quintillion, five hundred and forty quadrillion, one hundred and thirteen trillion, eight hundred and four billion, seven hundred and forty-six million, three hundred and forty-six thousand, four hundred and twenty-nine")
+  , (12200160415121876738, "twelve quintillion, two hundred quadrillion, one hundred and sixty trillion, four hundred and fifteen billion, one hundred and twenty-one million, eight hundred and seventy-six thousand, seven hundred and thirty-eight")
+  , (19740274219868223167, "nineteen quintillion, seven hundred and forty quadrillion, two hundred and seventy-four trillion, two hundred and nineteen billion, eight hundred and sixty-eight million, two hundred and twenty-three thousand, one hundred and sixty-seven")
+  , (31940434634990099905, "thirty-one quintillion, nine hundred and forty quadrillion, four hundred and thirty-four trillion, six hundred and thirty-four billion, nine hundred and ninety million, ninety-nine thousand, nine hundred and five")
+  , (51680708854858323072, "fifty-one quintillion, six hundred and eighty quadrillion, seven hundred and eight trillion, eight hundred and fifty-four billion, eight hundred and fifty-eight million, three hundred and twenty-three thousand and seventy-two")
+  , (83621143489848422977, "eighty-three quintillion, six hundred and twenty-one quadrillion, one hundred and forty-three trillion, four hundred and eighty-nine billion, eight hundred and forty-eight million, four hundred and twenty-two thousand, nine hundred and seventy-seven")
+  , (135301852344706746049, "one hundred and thirty-five quintillion, three hundred and one quadrillion, eight hundred and fifty-two trillion, three hundred and forty-four billion, seven hundred and six million, seven hundred and forty-six thousand and forty-nine")
+  , (218922995834555169026, "two hundred and eighteen quintillion, nine hundred and twenty-two quadrillion, nine hundred and ninety-five trillion, eight hundred and thirty-four billion, five hundred and fifty-five million, one hundred and sixty-nine thousand and twenty-six")
+  , (354224848179261915075, "three hundred and fifty-four quintillion, two hundred and twenty-four quadrillion, eight hundred and forty-eight trillion, one hundred and seventy-nine billion, two hundred and sixty-one million, nine hundred and fifteen thousand and seventy-five")
+  , (573147844013817084101, "five hundred and seventy-three quintillion, one hundred and forty-seven quadrillion, eight hundred and forty-four trillion, thirteen billion, eight hundred and seventeen million, eighty-four thousand, one hundred and one")
+  , (927372692193078999176, "nine hundred and twenty-seven quintillion, three hundred and seventy-two quadrillion, six hundred and ninety-two trillion, one hundred and ninety-three billion, seventy-eight million, nine hundred and ninety-nine thousand, one hundred and seventy-six")
+  , (1500520536206896083277, "one sextillion, five hundred quintillion, five hundred and twenty quadrillion, five hundred and thirty-six trillion, two hundred and six billion, eight hundred and ninety-six million, eighty-three thousand, two hundred and seventy-seven")
+  , (2427893228399975082453, "two sextillion, four hundred and twenty-seven quintillion, eight hundred and ninety-three quadrillion, two hundred and twenty-eight trillion, three hundred and ninety-nine billion, nine hundred and seventy-five million, eighty-two thousand, four hundred and fifty-three")
+  , (3928413764606871165730, "three sextillion, nine hundred and twenty-eight quintillion, four hundred and thirteen quadrillion, seven hundred and sixty-four trillion, six hundred and six billion, eight hundred and seventy-one million, one hundred and sixty-five thousand, seven hundred and thirty")
+  , (6356306993006846248183, "six sextillion, three hundred and fifty-six quintillion, three hundred and six quadrillion, nine hundred and ninety-three trillion, six billion, eight hundred and forty-six million, two hundred and forty-eight thousand, one hundred and eighty-three")
+  , (10284720757613717413913, "ten sextillion, two hundred and eighty-four quintillion, seven hundred and twenty quadrillion, seven hundred and fifty-seven trillion, six hundred and thirteen billion, seven hundred and seventeen million, four hundred and thirteen thousand, nine hundred and thirteen")
+  , (16641027750620563662096, "sixteen sextillion, six hundred and forty-one quintillion, twenty-seven quadrillion, seven hundred and fifty trillion, six hundred and twenty billion, five hundred and sixty-three million, six hundred and sixty-two thousand and ninety-six")
+  , (26925748508234281076009, "twenty-six sextillion, nine hundred and twenty-five quintillion, seven hundred and forty-eight quadrillion, five hundred and eight trillion, two hundred and thirty-four billion, two hundred and eighty-one million, seventy-six thousand and nine")
+  , (43566776258854844738105, "forty-three sextillion, five hundred and sixty-six quintillion, seven hundred and seventy-six quadrillion, two hundred and fifty-eight trillion, eight hundred and fifty-four billion, eight hundred and forty-four million, seven hundred and thirty-eight thousand, one hundred and five")
+  , (70492524767089125814114, "seventy sextillion, four hundred and ninety-two quintillion, five hundred and twenty-four quadrillion, seven hundred and sixty-seven trillion, eighty-nine billion, one hundred and twenty-five million, eight hundred and fourteen thousand, one hundred and fourteen")
+  , (114059301025943970552219, "one hundred and fourteen sextillion, fifty-nine quintillion, three hundred and one quadrillion, twenty-five trillion, nine hundred and forty-three billion, nine hundred and seventy million, five hundred and fifty-two thousand, two hundred and nineteen")
+  ]
+
+ordinals :: [(Integer, Text)]
+ordinals = [
+    (0, "zeroth")
+  , (1, "first")
+  , (2, "second")
+  , (3, "third")
+  , (4, "fourth")
+  , (5, "fifth")
+  , (6, "sixth")
+  , (7, "seventh")
+  , (8, "eighth")
+  , (9, "ninth")
+  , (10, "tenth")
+  , (11, "eleventh")
+  , (12, "twelfth")
+  , (13, "thirteenth")
+  , (14, "fourteenth")
+  , (15, "fifteenth")
+  , (16, "sixteenth")
+  , (17, "seventeenth")
+  , (18, "eighteenth")
+  , (19, "nineteenth")
+  , (20, "twentieth")
+  , (21, "twenty-first")
+  , (22, "twenty-second")
+  , (23, "twenty-third")
+  , (24, "twenty-fourth")
+  , (25, "twenty-fifth")
+  , (26, "twenty-sixth")
+  , (27, "twenty-seventh")
+  , (28, "twenty-eighth")
+  , (29, "twenty-ninth")
+  , (30, "thirtieth")
+  , (31, "thirty-first")
+  , (32, "thirty-second")
+  , (33, "thirty-third")
+  , (34, "thirty-fourth")
+  , (35, "thirty-fifth")
+  , (36, "thirty-sixth")
+  , (37, "thirty-seventh")
+  , (38, "thirty-eighth")
+  , (39, "thirty-ninth")
+  , (40, "fortieth")
+  , (41, "forty-first")
+  , (42, "forty-second")
+  , (43, "forty-third")
+  , (44, "forty-fourth")
+  , (45, "forty-fifth")
+  , (46, "forty-sixth")
+  , (47, "forty-seventh")
+  , (48, "forty-eighth")
+  , (49, "forty-ninth")
+  , (50, "fiftieth")
+  , (51, "fifty-first")
+  , (52, "fifty-second")
+  , (53, "fifty-third")
+  , (54, "fifty-fourth")
+  , (55, "fifty-fifth")
+  , (56, "fifty-sixth")
+  , (57, "fifty-seventh")
+  , (58, "fifty-eighth")
+  , (59, "fifty-ninth")
+  , (60, "sixtieth")
+  , (61, "sixty-first")
+  , (62, "sixty-second")
+  , (63, "sixty-third")
+  , (64, "sixty-fourth")
+  , (65, "sixty-fifth")
+  , (66, "sixty-sixth")
+  , (67, "sixty-seventh")
+  , (68, "sixty-eighth")
+  , (69, "sixty-ninth")
+  , (70, "seventieth")
+  , (71, "seventy-first")
+  , (72, "seventy-second")
+  , (73, "seventy-third")
+  , (74, "seventy-fourth")
+  , (75, "seventy-fifth")
+  , (76, "seventy-sixth")
+  , (77, "seventy-seventh")
+  , (78, "seventy-eighth")
+  , (79, "seventy-ninth")
+  , (80, "eightieth")
+  , (81, "eighty-first")
+  , (82, "eighty-second")
+  , (83, "eighty-third")
+  , (84, "eighty-fourth")
+  , (85, "eighty-fifth")
+  , (86, "eighty-sixth")
+  , (87, "eighty-seventh")
+  , (88, "eighty-eighth")
+  , (89, "eighty-ninth")
+  , (90, "ninetieth")
+  , (91, "ninety-first")
+  , (92, "ninety-second")
+  , (93, "ninety-third")
+  , (94, "ninety-fourth")
+  , (95, "ninety-fifth")
+  , (96, "ninety-sixth")
+  , (97, "ninety-seventh")
+  , (98, "ninety-eighth")
+  , (99, "ninety-ninth")
+  , (100, "one hundredth")
+  , (101, "one hundred and first")
+  , (102, "one hundred and second")
+  , (103, "one hundred and third")
+  , (104, "one hundred and fourth")
+  , (105, "one hundred and fifth")
+  , (106, "one hundred and sixth")
+  , (107, "one hundred and seventh")
+  , (108, "one hundred and eighth")
+  , (109, "one hundred and ninth")
+  , (110, "one hundred and tenth")
+  , (111, "one hundred and eleventh")
+  , (112, "one hundred and twelfth")
+  , (113, "one hundred and thirteenth")
+  , (114, "one hundred and fourteenth")
+  , (115, "one hundred and fifteenth")
+  , (116, "one hundred and sixteenth")
+  , (117, "one hundred and seventeenth")
+  , (118, "one hundred and eighteenth")
+  , (119, "one hundred and nineteenth")
+  , (120, "one hundred and twentieth")
+  , (121, "one hundred and twenty-first")
+  , (122, "one hundred and twenty-second")
+  , (123, "one hundred and twenty-third")
+  , (124, "one hundred and twenty-fourth")
+  , (125, "one hundred and twenty-fifth")
+  , (126, "one hundred and twenty-sixth")
+  , (127, "one hundred and twenty-seventh")
+  , (128, "one hundred and twenty-eighth")
+  , (129, "one hundred and twenty-ninth")
+  , (130, "one hundred and thirtieth")
+  , (131, "one hundred and thirty-first")
+  , (132, "one hundred and thirty-second")
+  , (133, "one hundred and thirty-third")
+  , (134, "one hundred and thirty-fourth")
+  , (135, "one hundred and thirty-fifth")
+  , (136, "one hundred and thirty-sixth")
+  , (137, "one hundred and thirty-seventh")
+  , (138, "one hundred and thirty-eighth")
+  , (139, "one hundred and thirty-ninth")
+  , (140, "one hundred and fortieth")
+  , (141, "one hundred and forty-first")
+  , (142, "one hundred and forty-second")
+  , (143, "one hundred and forty-third")
+  , (144, "one hundred and forty-fourth")
+  , (145, "one hundred and forty-fifth")
+  , (146, "one hundred and forty-sixth")
+  , (147, "one hundred and forty-seventh")
+  , (148, "one hundred and forty-eighth")
+  , (149, "one hundred and forty-ninth")
+  , (150, "one hundred and fiftieth")
+  , (151, "one hundred and fifty-first")
+  , (152, "one hundred and fifty-second")
+  , (153, "one hundred and fifty-third")
+  , (154, "one hundred and fifty-fourth")
+  , (155, "one hundred and fifty-fifth")
+  , (156, "one hundred and fifty-sixth")
+  , (157, "one hundred and fifty-seventh")
+  , (158, "one hundred and fifty-eighth")
+  , (159, "one hundred and fifty-ninth")
+  , (160, "one hundred and sixtieth")
+  , (161, "one hundred and sixty-first")
+  , (162, "one hundred and sixty-second")
+  , (163, "one hundred and sixty-third")
+  , (164, "one hundred and sixty-fourth")
+  , (165, "one hundred and sixty-fifth")
+  , (166, "one hundred and sixty-sixth")
+  , (167, "one hundred and sixty-seventh")
+  , (168, "one hundred and sixty-eighth")
+  , (169, "one hundred and sixty-ninth")
+  , (170, "one hundred and seventieth")
+  , (171, "one hundred and seventy-first")
+  , (172, "one hundred and seventy-second")
+  , (173, "one hundred and seventy-third")
+  , (174, "one hundred and seventy-fourth")
+  , (175, "one hundred and seventy-fifth")
+  , (176, "one hundred and seventy-sixth")
+  , (177, "one hundred and seventy-seventh")
+  , (178, "one hundred and seventy-eighth")
+  , (179, "one hundred and seventy-ninth")
+  , (180, "one hundred and eightieth")
+  , (181, "one hundred and eighty-first")
+  , (182, "one hundred and eighty-second")
+  , (183, "one hundred and eighty-third")
+  , (184, "one hundred and eighty-fourth")
+  , (185, "one hundred and eighty-fifth")
+  , (186, "one hundred and eighty-sixth")
+  , (187, "one hundred and eighty-seventh")
+  , (188, "one hundred and eighty-eighth")
+  , (189, "one hundred and eighty-ninth")
+  , (190, "one hundred and ninetieth")
+  , (191, "one hundred and ninety-first")
+  , (192, "one hundred and ninety-second")
+  , (193, "one hundred and ninety-third")
+  , (194, "one hundred and ninety-fourth")
+  , (195, "one hundred and ninety-fifth")
+  , (196, "one hundred and ninety-sixth")
+  , (197, "one hundred and ninety-seventh")
+  , (198, "one hundred and ninety-eighth")
+  , (199, "one hundred and ninety-ninth")
+  , (200, "two hundredth")
+  , (233, "two hundred and thirty-third")
+  , (377, "three hundred and seventy-seventh")
+  , (610, "six hundred and tenth")
+  , (987, "nine hundred and eighty-seventh")
+  , (1597, "one thousand, five hundred and ninety-seventh")
+  , (2584, "two thousand, five hundred and eighty-fourth")
+  , (4181, "four thousand, one hundred and eighty-first")
+  , (6765, "six thousand, seven hundred and sixty-fifth")
+  , (10946, "ten thousand, nine hundred and forty-sixth")
+  , (17711, "seventeen thousand, seven hundred and eleventh")
+  , (28657, "twenty-eight thousand, six hundred and fifty-seventh")
+  , (46368, "forty-six thousand, three hundred and sixty-eighth")
+  , (75025, "seventy-five thousand and twenty-fifth")
+  , (121393, "one hundred and twenty-one thousand, three hundred and ninety-third")
+  , (196418, "one hundred and ninety-six thousand, four hundred and eighteenth")
+  , (317811, "three hundred and seventeen thousand, eight hundred and eleventh")
+  , (514229, "five hundred and fourteen thousand, two hundred and twenty-ninth")
+  , (832040, "eight hundred and thirty-two thousand and fortieth")
+  , (1346269, "one million, three hundred and forty-six thousand, two hundred and sixty-ninth")
+  , (2178309, "two million, one hundred and seventy-eight thousand, three hundred and ninth")
+  , (3524578, "three million, five hundred and twenty-four thousand, five hundred and seventy-eighth")
+  , (5702887, "five million, seven hundred and two thousand, eight hundred and eighty-seventh")
+  , (9227465, "nine million, two hundred and twenty-seven thousand, four hundred and sixty-fifth")
+  , (14930352, "fourteen million, nine hundred and thirty thousand, three hundred and fifty-second")
+  , (24157817, "twenty-four million, one hundred and fifty-seven thousand, eight hundred and seventeenth")
+  , (39088169, "thirty-nine million, eighty-eight thousand, one hundred and sixty-ninth")
+  , (63245986, "sixty-three million, two hundred and forty-five thousand, nine hundred and eighty-sixth")
+  , (102334155, "one hundred and two million, three hundred and thirty-four thousand, one hundred and fifty-fifth")
+  , (165580141, "one hundred and sixty-five million, five hundred and eighty thousand, one hundred and forty-first")
+  , (267914296, "two hundred and sixty-seven million, nine hundred and fourteen thousand, two hundred and ninety-sixth")
+  , (433494437, "four hundred and thirty-three million, four hundred and ninety-four thousand, four hundred and thirty-seventh")
+  , (701408733, "seven hundred and one million, four hundred and eight thousand, seven hundred and thirty-third")
+  , (1134903170, "one billion, one hundred and thirty-four million, nine hundred and three thousand, one hundred and seventieth")
+  , (1836311903, "one billion, eight hundred and thirty-six million, three hundred and eleven thousand, nine hundred and third")
+  , (2971215073, "two billion, nine hundred and seventy-one million, two hundred and fifteen thousand and seventy-third")
+  , (4807526976, "four billion, eight hundred and seven million, five hundred and twenty-six thousand, nine hundred and seventy-sixth")
+  , (7778742049, "seven billion, seven hundred and seventy-eight million, seven hundred and forty-two thousand and forty-ninth")
+  , (12586269025, "twelve billion, five hundred and eighty-six million, two hundred and sixty-nine thousand and twenty-fifth")
+  , (20365011074, "twenty billion, three hundred and sixty-five million, eleven thousand and seventy-fourth")
+  , (32951280099, "thirty-two billion, nine hundred and fifty-one million, two hundred and eighty thousand and ninety-ninth")
+  , (53316291173, "fifty-three billion, three hundred and sixteen million, two hundred and ninety-one thousand, one hundred and seventy-third")
+  , (86267571272, "eighty-six billion, two hundred and sixty-seven million, five hundred and seventy-one thousand, two hundred and seventy-second")
+  , (139583862445, "one hundred and thirty-nine billion, five hundred and eighty-three million, eight hundred and sixty-two thousand, four hundred and forty-fifth")
+  , (225851433717, "two hundred and twenty-five billion, eight hundred and fifty-one million, four hundred and thirty-three thousand, seven hundred and seventeenth")
+  , (365435296162, "three hundred and sixty-five billion, four hundred and thirty-five million, two hundred and ninety-six thousand, one hundred and sixty-second")
+  , (591286729879, "five hundred and ninety-one billion, two hundred and eighty-six million, seven hundred and twenty-nine thousand, eight hundred and seventy-ninth")
+  , (956722026041, "nine hundred and fifty-six billion, seven hundred and twenty-two million, twenty-six thousand and forty-first")
+  , (1548008755920, "one trillion, five hundred and forty-eight billion, eight million, seven hundred and fifty-five thousand, nine hundred and twentieth")
+  , (2504730781961, "two trillion, five hundred and four billion, seven hundred and thirty million, seven hundred and eighty-one thousand, nine hundred and sixty-first")
+  , (4052739537881, "four trillion, fifty-two billion, seven hundred and thirty-nine million, five hundred and thirty-seven thousand, eight hundred and eighty-first")
+  , (6557470319842, "six trillion, five hundred and fifty-seven billion, four hundred and seventy million, three hundred and nineteen thousand, eight hundred and forty-second")
+  , (10610209857723, "ten trillion, six hundred and ten billion, two hundred and nine million, eight hundred and fifty-seven thousand, seven hundred and twenty-third")
+  , (17167680177565, "seventeen trillion, one hundred and sixty-seven billion, six hundred and eighty million, one hundred and seventy-seven thousand, five hundred and sixty-fifth")
+  , (27777890035288, "twenty-seven trillion, seven hundred and seventy-seven billion, eight hundred and ninety million, thirty-five thousand, two hundred and eighty-eighth")
+  , (44945570212853, "forty-four trillion, nine hundred and forty-five billion, five hundred and seventy million, two hundred and twelve thousand, eight hundred and fifty-third")
+  , (72723460248141, "seventy-two trillion, seven hundred and twenty-three billion, four hundred and sixty million, two hundred and forty-eight thousand, one hundred and forty-first")
+  , (117669030460994, "one hundred and seventeen trillion, six hundred and sixty-nine billion, thirty million, four hundred and sixty thousand, nine hundred and ninety-fourth")
+  , (190392490709135, "one hundred and ninety trillion, three hundred and ninety-two billion, four hundred and ninety million, seven hundred and nine thousand, one hundred and thirty-fifth")
+  , (308061521170129, "three hundred and eight trillion, sixty-one billion, five hundred and twenty-one million, one hundred and seventy thousand, one hundred and twenty-ninth")
+  , (498454011879264, "four hundred and ninety-eight trillion, four hundred and fifty-four billion, eleven million, eight hundred and seventy-nine thousand, two hundred and sixty-fourth")
+  , (806515533049393, "eight hundred and six trillion, five hundred and fifteen billion, five hundred and thirty-three million, forty-nine thousand, three hundred and ninety-third")
+  , (1304969544928657, "one quadrillion, three hundred and four trillion, nine hundred and sixty-nine billion, five hundred and forty-four million, nine hundred and twenty-eight thousand, six hundred and fifty-seventh")
+  , (2111485077978050, "two quadrillion, one hundred and eleven trillion, four hundred and eighty-five billion, seventy-seven million, nine hundred and seventy-eight thousand and fiftieth")
+  , (3416454622906707, "three quadrillion, four hundred and sixteen trillion, four hundred and fifty-four billion, six hundred and twenty-two million, nine hundred and six thousand, seven hundred and seventh")
+  , (5527939700884757, "five quadrillion, five hundred and twenty-seven trillion, nine hundred and thirty-nine billion, seven hundred million, eight hundred and eighty-four thousand, seven hundred and fifty-seventh")
+  , (8944394323791464, "eight quadrillion, nine hundred and forty-four trillion, three hundred and ninety-four billion, three hundred and twenty-three million, seven hundred and ninety-one thousand, four hundred and sixty-fourth")
+  , (14472334024676221, "fourteen quadrillion, four hundred and seventy-two trillion, three hundred and thirty-four billion, twenty-four million, six hundred and seventy-six thousand, two hundred and twenty-first")
+  , (23416728348467685, "twenty-three quadrillion, four hundred and sixteen trillion, seven hundred and twenty-eight billion, three hundred and forty-eight million, four hundred and sixty-seven thousand, six hundred and eighty-fifth")
+  , (37889062373143906, "thirty-seven quadrillion, eight hundred and eighty-nine trillion, sixty-two billion, three hundred and seventy-three million, one hundred and forty-three thousand, nine hundred and sixth")
+  , (61305790721611591, "sixty-one quadrillion, three hundred and five trillion, seven hundred and ninety billion, seven hundred and twenty-one million, six hundred and eleven thousand, five hundred and ninety-first")
+  , (99194853094755497, "ninety-nine quadrillion, one hundred and ninety-four trillion, eight hundred and fifty-three billion, ninety-four million, seven hundred and fifty-five thousand, four hundred and ninety-seventh")
+  , (160500643816367088, "one hundred and sixty quadrillion, five hundred trillion, six hundred and forty-three billion, eight hundred and sixteen million, three hundred and sixty-seven thousand and eighty-eighth")
+  , (259695496911122585, "two hundred and fifty-nine quadrillion, six hundred and ninety-five trillion, four hundred and ninety-six billion, nine hundred and eleven million, one hundred and twenty-two thousand, five hundred and eighty-fifth")
+  , (420196140727489673, "four hundred and twenty quadrillion, one hundred and ninety-six trillion, one hundred and forty billion, seven hundred and twenty-seven million, four hundred and eighty-nine thousand, six hundred and seventy-third")
+  , (679891637638612258, "six hundred and seventy-nine quadrillion, eight hundred and ninety-one trillion, six hundred and thirty-seven billion, six hundred and thirty-eight million, six hundred and twelve thousand, two hundred and fifty-eighth")
+  , (1100087778366101931, "one quintillion, one hundred quadrillion, eighty-seven trillion, seven hundred and seventy-eight billion, three hundred and sixty-six million, one hundred and one thousand, nine hundred and thirty-first")
+  , (1779979416004714189, "one quintillion, seven hundred and seventy-nine quadrillion, nine hundred and seventy-nine trillion, four hundred and sixteen billion, four million, seven hundred and fourteen thousand, one hundred and eighty-ninth")
+  , (2880067194370816120, "two quintillion, eight hundred and eighty quadrillion, sixty-seven trillion, one hundred and ninety-four billion, three hundred and seventy million, eight hundred and sixteen thousand, one hundred and twentieth")
+  , (4660046610375530309, "four quintillion, six hundred and sixty quadrillion, forty-six trillion, six hundred and ten billion, three hundred and seventy-five million, five hundred and thirty thousand, three hundred and ninth")
+  , (7540113804746346429, "seven quintillion, five hundred and forty quadrillion, one hundred and thirteen trillion, eight hundred and four billion, seven hundred and forty-six million, three hundred and forty-six thousand, four hundred and twenty-ninth")
+  , (12200160415121876738, "twelve quintillion, two hundred quadrillion, one hundred and sixty trillion, four hundred and fifteen billion, one hundred and twenty-one million, eight hundred and seventy-six thousand, seven hundred and thirty-eighth")
+  , (19740274219868223167, "nineteen quintillion, seven hundred and forty quadrillion, two hundred and seventy-four trillion, two hundred and nineteen billion, eight hundred and sixty-eight million, two hundred and twenty-three thousand, one hundred and sixty-seventh")
+  , (31940434634990099905, "thirty-one quintillion, nine hundred and forty quadrillion, four hundred and thirty-four trillion, six hundred and thirty-four billion, nine hundred and ninety million, ninety-nine thousand, nine hundred and fifth")
+  , (51680708854858323072, "fifty-one quintillion, six hundred and eighty quadrillion, seven hundred and eight trillion, eight hundred and fifty-four billion, eight hundred and fifty-eight million, three hundred and twenty-three thousand and seventy-second")
+  , (83621143489848422977, "eighty-three quintillion, six hundred and twenty-one quadrillion, one hundred and forty-three trillion, four hundred and eighty-nine billion, eight hundred and forty-eight million, four hundred and twenty-two thousand, nine hundred and seventy-seventh")
+  , (135301852344706746049, "one hundred and thirty-five quintillion, three hundred and one quadrillion, eight hundred and fifty-two trillion, three hundred and forty-four billion, seven hundred and six million, seven hundred and forty-six thousand and forty-ninth")
+  , (218922995834555169026, "two hundred and eighteen quintillion, nine hundred and twenty-two quadrillion, nine hundred and ninety-five trillion, eight hundred and thirty-four billion, five hundred and fifty-five million, one hundred and sixty-nine thousand and twenty-sixth")
+  , (354224848179261915075, "three hundred and fifty-four quintillion, two hundred and twenty-four quadrillion, eight hundred and forty-eight trillion, one hundred and seventy-nine billion, two hundred and sixty-one million, nine hundred and fifteen thousand and seventy-fifth")
+  , (573147844013817084101, "five hundred and seventy-three quintillion, one hundred and forty-seven quadrillion, eight hundred and forty-four trillion, thirteen billion, eight hundred and seventeen million, eighty-four thousand, one hundred and first")
+  , (927372692193078999176, "nine hundred and twenty-seven quintillion, three hundred and seventy-two quadrillion, six hundred and ninety-two trillion, one hundred and ninety-three billion, seventy-eight million, nine hundred and ninety-nine thousand, one hundred and seventy-sixth")
+  , (1500520536206896083277, "one sextillion, five hundred quintillion, five hundred and twenty quadrillion, five hundred and thirty-six trillion, two hundred and six billion, eight hundred and ninety-six million, eighty-three thousand, two hundred and seventy-seventh")
+  , (2427893228399975082453, "two sextillion, four hundred and twenty-seven quintillion, eight hundred and ninety-three quadrillion, two hundred and twenty-eight trillion, three hundred and ninety-nine billion, nine hundred and seventy-five million, eighty-two thousand, four hundred and fifty-third")
+  , (3928413764606871165730, "three sextillion, nine hundred and twenty-eight quintillion, four hundred and thirteen quadrillion, seven hundred and sixty-four trillion, six hundred and six billion, eight hundred and seventy-one million, one hundred and sixty-five thousand, seven hundred and thirtieth")
+  , (6356306993006846248183, "six sextillion, three hundred and fifty-six quintillion, three hundred and six quadrillion, nine hundred and ninety-three trillion, six billion, eight hundred and forty-six million, two hundred and forty-eight thousand, one hundred and eighty-third")
+  , (10284720757613717413913, "ten sextillion, two hundred and eighty-four quintillion, seven hundred and twenty quadrillion, seven hundred and fifty-seven trillion, six hundred and thirteen billion, seven hundred and seventeen million, four hundred and thirteen thousand, nine hundred and thirteenth")
+  , (16641027750620563662096, "sixteen sextillion, six hundred and forty-one quintillion, twenty-seven quadrillion, seven hundred and fifty trillion, six hundred and twenty billion, five hundred and sixty-three million, six hundred and sixty-two thousand and ninety-sixth")
+  , (26925748508234281076009, "twenty-six sextillion, nine hundred and twenty-five quintillion, seven hundred and forty-eight quadrillion, five hundred and eight trillion, two hundred and thirty-four billion, two hundred and eighty-one million, seventy-six thousand and ninth")
+  , (43566776258854844738105, "forty-three sextillion, five hundred and sixty-six quintillion, seven hundred and seventy-six quadrillion, two hundred and fifty-eight trillion, eight hundred and fifty-four billion, eight hundred and forty-four million, seven hundred and thirty-eight thousand, one hundred and fifth")
+  , (70492524767089125814114, "seventy sextillion, four hundred and ninety-two quintillion, five hundred and twenty-four quadrillion, seven hundred and sixty-seven trillion, eighty-nine billion, one hundred and twenty-five million, eight hundred and fourteen thousand, one hundred and fourteenth")
+  , (114059301025943970552219, "one hundred and fourteen sextillion, fifty-nine quintillion, three hundred and one quadrillion, twenty-five trillion, nine hundred and forty-three billion, nine hundred and seventy million, five hundred and fifty-two thousand, two hundred and nineteenth")
+  ]
diff --git a/test/Text/Numerals/Languages/FrenchSpec.hs b/test/Text/Numerals/Languages/FrenchSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/Text/Numerals/Languages/FrenchSpec.hs
@@ -0,0 +1,622 @@
+module Text.Numerals.Languages.FrenchSpec (
+    spec
+  ) where
+
+import Data.Text(Text)
+
+import Test.Hspec(Spec)
+import Text.Numerals.Languages.French(french)
+import Text.Numerals.LanguageTest(testLanguage)
+
+spec :: Spec
+spec = testLanguage "French" french cardinals ordinals
+
+cardinals :: [(Integer, Text)]
+cardinals = [
+    (0, "zéro")
+  , (1, "un")
+  , (2, "deux")
+  , (3, "trois")
+  , (4, "quatre")
+  , (5, "cinq")
+  , (6, "six")
+  , (7, "sept")
+  , (8, "huit")
+  , (9, "neuf")
+  , (10, "dix")
+  , (11, "onze")
+  , (12, "douze")
+  , (13, "treize")
+  , (14, "quatorze")
+  , (15, "quinze")
+  , (16, "seize")
+  , (17, "dix-sept")
+  , (18, "dix-huit")
+  , (19, "dix-neuf")
+  , (20, "vingt")
+  , (21, "vingt et un")
+  , (22, "vingt-deux")
+  , (23, "vingt-trois")
+  , (24, "vingt-quatre")
+  , (25, "vingt-cinq")
+  , (26, "vingt-six")
+  , (27, "vingt-sept")
+  , (28, "vingt-huit")
+  , (29, "vingt-neuf")
+  , (30, "trente")
+  , (31, "trente et un")
+  , (32, "trente-deux")
+  , (33, "trente-trois")
+  , (34, "trente-quatre")
+  , (35, "trente-cinq")
+  , (36, "trente-six")
+  , (37, "trente-sept")
+  , (38, "trente-huit")
+  , (39, "trente-neuf")
+  , (40, "quarante")
+  , (41, "quarante et un")
+  , (42, "quarante-deux")
+  , (43, "quarante-trois")
+  , (44, "quarante-quatre")
+  , (45, "quarante-cinq")
+  , (46, "quarante-six")
+  , (47, "quarante-sept")
+  , (48, "quarante-huit")
+  , (49, "quarante-neuf")
+  , (50, "cinquante")
+  , (51, "cinquante et un")
+  , (52, "cinquante-deux")
+  , (53, "cinquante-trois")
+  , (54, "cinquante-quatre")
+  , (55, "cinquante-cinq")
+  , (56, "cinquante-six")
+  , (57, "cinquante-sept")
+  , (58, "cinquante-huit")
+  , (59, "cinquante-neuf")
+  , (60, "soixante")
+  , (61, "soixante et un")
+  , (62, "soixante-deux")
+  , (63, "soixante-trois")
+  , (64, "soixante-quatre")
+  , (65, "soixante-cinq")
+  , (66, "soixante-six")
+  , (67, "soixante-sept")
+  , (68, "soixante-huit")
+  , (69, "soixante-neuf")
+  , (70, "soixante-dix")
+  , (71, "soixante et onze")
+  , (72, "soixante-douze")
+  , (73, "soixante-treize")
+  , (74, "soixante-quatorze")
+  , (75, "soixante-quinze")
+  , (76, "soixante-seize")
+  , (77, "soixante-dix-sept")
+  , (78, "soixante-dix-huit")
+  , (79, "soixante-dix-neuf")
+  , (80, "quatre-vingts")
+  , (81, "quatre-vingt-un")
+  , (82, "quatre-vingt-deux")
+  , (83, "quatre-vingt-trois")
+  , (84, "quatre-vingt-quatre")
+  , (85, "quatre-vingt-cinq")
+  , (86, "quatre-vingt-six")
+  , (87, "quatre-vingt-sept")
+  , (88, "quatre-vingt-huit")
+  , (89, "quatre-vingt-neuf")
+  , (90, "quatre-vingt-dix")
+  , (91, "quatre-vingt-onze")
+  , (92, "quatre-vingt-douze")
+  , (93, "quatre-vingt-treize")
+  , (94, "quatre-vingt-quatorze")
+  , (95, "quatre-vingt-quinze")
+  , (96, "quatre-vingt-seize")
+  , (97, "quatre-vingt-dix-sept")
+  , (98, "quatre-vingt-dix-huit")
+  , (99, "quatre-vingt-dix-neuf")
+  , (100, "cent")
+  , (101, "cent un")
+  , (102, "cent deux")
+  , (103, "cent trois")
+  , (104, "cent quatre")
+  , (105, "cent cinq")
+  , (106, "cent six")
+  , (107, "cent sept")
+  , (108, "cent huit")
+  , (109, "cent neuf")
+  , (110, "cent dix")
+  , (111, "cent onze")
+  , (112, "cent douze")
+  , (113, "cent treize")
+  , (114, "cent quatorze")
+  , (115, "cent quinze")
+  , (116, "cent seize")
+  , (117, "cent dix-sept")
+  , (118, "cent dix-huit")
+  , (119, "cent dix-neuf")
+  , (120, "cent vingt")
+  , (121, "cent vingt et un")
+  , (122, "cent vingt-deux")
+  , (123, "cent vingt-trois")
+  , (124, "cent vingt-quatre")
+  , (125, "cent vingt-cinq")
+  , (126, "cent vingt-six")
+  , (127, "cent vingt-sept")
+  , (128, "cent vingt-huit")
+  , (129, "cent vingt-neuf")
+  , (130, "cent trente")
+  , (131, "cent trente et un")
+  , (132, "cent trente-deux")
+  , (133, "cent trente-trois")
+  , (134, "cent trente-quatre")
+  , (135, "cent trente-cinq")
+  , (136, "cent trente-six")
+  , (137, "cent trente-sept")
+  , (138, "cent trente-huit")
+  , (139, "cent trente-neuf")
+  , (140, "cent quarante")
+  , (141, "cent quarante et un")
+  , (142, "cent quarante-deux")
+  , (143, "cent quarante-trois")
+  , (144, "cent quarante-quatre")
+  , (145, "cent quarante-cinq")
+  , (146, "cent quarante-six")
+  , (147, "cent quarante-sept")
+  , (148, "cent quarante-huit")
+  , (149, "cent quarante-neuf")
+  , (150, "cent cinquante")
+  , (151, "cent cinquante et un")
+  , (152, "cent cinquante-deux")
+  , (153, "cent cinquante-trois")
+  , (154, "cent cinquante-quatre")
+  , (155, "cent cinquante-cinq")
+  , (156, "cent cinquante-six")
+  , (157, "cent cinquante-sept")
+  , (158, "cent cinquante-huit")
+  , (159, "cent cinquante-neuf")
+  , (160, "cent soixante")
+  , (161, "cent soixante et un")
+  , (162, "cent soixante-deux")
+  , (163, "cent soixante-trois")
+  , (164, "cent soixante-quatre")
+  , (165, "cent soixante-cinq")
+  , (166, "cent soixante-six")
+  , (167, "cent soixante-sept")
+  , (168, "cent soixante-huit")
+  , (169, "cent soixante-neuf")
+  , (170, "cent soixante-dix")
+  , (171, "cent soixante et onze")
+  , (172, "cent soixante-douze")
+  , (173, "cent soixante-treize")
+  , (174, "cent soixante-quatorze")
+  , (175, "cent soixante-quinze")
+  , (176, "cent soixante-seize")
+  , (177, "cent soixante-dix-sept")
+  , (178, "cent soixante-dix-huit")
+  , (179, "cent soixante-dix-neuf")
+  , (180, "cent quatre-vingts")
+  , (181, "cent quatre-vingt-un")
+  , (182, "cent quatre-vingt-deux")
+  , (183, "cent quatre-vingt-trois")
+  , (184, "cent quatre-vingt-quatre")
+  , (185, "cent quatre-vingt-cinq")
+  , (186, "cent quatre-vingt-six")
+  , (187, "cent quatre-vingt-sept")
+  , (188, "cent quatre-vingt-huit")
+  , (189, "cent quatre-vingt-neuf")
+  , (190, "cent quatre-vingt-dix")
+  , (191, "cent quatre-vingt-onze")
+  , (192, "cent quatre-vingt-douze")
+  , (193, "cent quatre-vingt-treize")
+  , (194, "cent quatre-vingt-quatorze")
+  , (195, "cent quatre-vingt-quinze")
+  , (196, "cent quatre-vingt-seize")
+  , (197, "cent quatre-vingt-dix-sept")
+  , (198, "cent quatre-vingt-dix-huit")
+  , (199, "cent quatre-vingt-dix-neuf")
+  , (200, "deux cents")
+  , (233, "deux cent trente-trois")
+  , (377, "trois cent soixante-dix-sept")
+  , (610, "six cent dix")
+  , (987, "neuf cent quatre-vingt-sept")
+  , (1597, "mille cinq cent quatre-vingt-dix-sept")
+  , (2584, "deux mille cinq cent quatre-vingt-quatre")
+  , (4181, "quatre mille cent quatre-vingt-un")
+  , (6765, "six mille sept cent soixante-cinq")
+  , (10946, "dix mille neuf cent quarante-six")
+  , (17711, "dix-sept mille sept cent onze")
+  , (28657, "vingt-huit mille six cent cinquante-sept")
+  , (46368, "quarante-six mille trois cent soixante-huit")
+  , (75025, "soixante-quinze mille vingt-cinq")
+  , (121393, "cent vingt et un mille trois cent quatre-vingt-treize")
+  , (196418, "cent quatre-vingt-seize mille quatre cent dix-huit")
+  , (317811, "trois cent dix-sept mille huit cent onze")
+  , (514229, "cinq cent quatorze mille deux cent vingt-neuf")
+  , (832040, "huit cent trente-deux mille quarante")
+  , (1346269, "un million trois cent quarante-six mille deux cent soixante-neuf")
+  , (2178309, "deux millions cent soixante-dix-huit mille trois cent neuf")
+  , (3524578, "trois millions cinq cent vingt-quatre mille cinq cent soixante-dix-huit")
+  , (5702887, "cinq millions sept cent deux mille huit cent quatre-vingt-sept")
+  , (9227465, "neuf millions deux cent vingt-sept mille quatre cent soixante-cinq")
+  , (14930352, "quatorze millions neuf cent trente mille trois cent cinquante-deux")
+  , (24157817, "vingt-quatre millions cent cinquante-sept mille huit cent dix-sept")
+  , (39088169, "trente-neuf millions quatre-vingt-huit mille cent soixante-neuf")
+  , (63245986, "soixante-trois millions deux cent quarante-cinq mille neuf cent quatre-vingt-six")
+  , (102334155, "cent deux millions trois cent trente-quatre mille cent cinquante-cinq")
+  , (165580141, "cent soixante-cinq millions cinq cent quatre-vingt mille cent quarante et un")
+  , (267914296, "deux cent soixante-sept millions neuf cent quatorze mille deux cent quatre-vingt-seize")
+  , (433494437, "quatre cent trente-trois millions quatre cent quatre-vingt-quatorze mille quatre cent trente-sept")
+  , (701408733, "sept cent un millions quatre cent huit mille sept cent trente-trois")
+  , (1134903170, "un milliard cent trente-quatre millions neuf cent trois mille cent soixante-dix")
+  , (1836311903, "un milliard huit cent trente-six millions trois cent onze mille neuf cent trois")
+  , (2971215073, "deux milliards neuf cent soixante et onze millions deux cent quinze mille soixante-treize")
+  , (4807526976, "quatre milliards huit cent sept millions cinq cent vingt-six mille neuf cent soixante-seize")
+  , (7778742049, "sept milliards sept cent soixante-dix-huit millions sept cent quarante-deux mille quarante-neuf")
+  , (12586269025, "douze milliards cinq cent quatre-vingt-six millions deux cent soixante-neuf mille vingt-cinq")
+  , (20365011074, "vingt milliards trois cent soixante-cinq millions onze mille soixante-quatorze")
+  , (32951280099, "trente-deux milliards neuf cent cinquante et un millions deux cent quatre-vingt mille quatre-vingt-dix-neuf")
+  , (53316291173, "cinquante-trois milliards trois cent seize millions deux cent quatre-vingt-onze mille cent soixante-treize")
+  , (86267571272, "quatre-vingt-six milliards deux cent soixante-sept millions cinq cent soixante et onze mille deux cent soixante-douze")
+  , (139583862445, "cent trente-neuf milliards cinq cent quatre-vingt-trois millions huit cent soixante-deux mille quatre cent quarante-cinq")
+  , (225851433717, "deux cent vingt-cinq milliards huit cent cinquante et un millions quatre cent trente-trois mille sept cent dix-sept")
+  , (365435296162, "trois cent soixante-cinq milliards quatre cent trente-cinq millions deux cent quatre-vingt-seize mille cent soixante-deux")
+  , (591286729879, "cinq cent quatre-vingt-onze milliards deux cent quatre-vingt-six millions sept cent vingt-neuf mille huit cent soixante-dix-neuf")
+  , (956722026041, "neuf cent cinquante-six milliards sept cent vingt-deux millions vingt-six mille quarante et un")
+  , (1548008755920, "un billion cinq cent quarante-huit milliards huit millions sept cent cinquante-cinq mille neuf cent vingt")
+  , (2504730781961, "deux billions cinq cent quatre milliards sept cent trente millions sept cent quatre-vingt-un mille neuf cent soixante et un")
+  , (4052739537881, "quatre billions cinquante-deux milliards sept cent trente-neuf millions cinq cent trente-sept mille huit cent quatre-vingt-un")
+  , (6557470319842, "six billions cinq cent cinquante-sept milliards quatre cent soixante-dix millions trois cent dix-neuf mille huit cent quarante-deux")
+  , (10610209857723, "dix billions six cent dix milliards deux cent neuf millions huit cent cinquante-sept mille sept cent vingt-trois")
+  , (17167680177565, "dix-sept billions cent soixante-sept milliards six cent quatre-vingts millions cent soixante-dix-sept mille cinq cent soixante-cinq")
+  , (27777890035288, "vingt-sept billions sept cent soixante-dix-sept milliards huit cent quatre-vingt-dix millions trente-cinq mille deux cent quatre-vingt-huit")
+  , (44945570212853, "quarante-quatre billions neuf cent quarante-cinq milliards cinq cent soixante-dix millions deux cent douze mille huit cent cinquante-trois")
+  , (72723460248141, "soixante-douze billions sept cent vingt-trois milliards quatre cent soixante millions deux cent quarante-huit mille cent quarante et un")
+  , (117669030460994, "cent dix-sept billions six cent soixante-neuf milliards trente millions quatre cent soixante mille neuf cent quatre-vingt-quatorze")
+  , (190392490709135, "cent quatre-vingt-dix billions trois cent quatre-vingt-douze milliards quatre cent quatre-vingt-dix millions sept cent neuf mille cent trente-cinq")
+  , (308061521170129, "trois cent huit billions soixante et un milliards cinq cent vingt et un millions cent soixante-dix mille cent vingt-neuf")
+  , (498454011879264, "quatre cent quatre-vingt-dix-huit billions quatre cent cinquante-quatre milliards onze millions huit cent soixante-dix-neuf mille deux cent soixante-quatre")
+  , (806515533049393, "huit cent six billions cinq cent quinze milliards cinq cent trente-trois millions quarante-neuf mille trois cent quatre-vingt-treize")
+  , (1304969544928657, "un billiard trois cent quatre billions neuf cent soixante-neuf milliards cinq cent quarante-quatre millions neuf cent vingt-huit mille six cent cinquante-sept")
+  , (2111485077978050, "deux billiards cent onze billions quatre cent quatre-vingt-cinq milliards soixante-dix-sept millions neuf cent soixante-dix-huit mille cinquante")
+  , (3416454622906707, "trois billiards quatre cent seize billions quatre cent cinquante-quatre milliards six cent vingt-deux millions neuf cent six mille sept cent sept")
+  , (5527939700884757, "cinq billiards cinq cent vingt-sept billions neuf cent trente-neuf milliards sept cents millions huit cent quatre-vingt-quatre mille sept cent cinquante-sept")
+  , (8944394323791464, "huit billiards neuf cent quarante-quatre billions trois cent quatre-vingt-quatorze milliards trois cent vingt-trois millions sept cent quatre-vingt-onze mille quatre cent soixante-quatre")
+  , (14472334024676221, "quatorze billiards quatre cent soixante-douze billions trois cent trente-quatre milliards vingt-quatre millions six cent soixante-seize mille deux cent vingt et un")
+  , (23416728348467685, "vingt-trois billiards quatre cent seize billions sept cent vingt-huit milliards trois cent quarante-huit millions quatre cent soixante-sept mille six cent quatre-vingt-cinq")
+  , (37889062373143906, "trente-sept billiards huit cent quatre-vingt-neuf billions soixante-deux milliards trois cent soixante-treize millions cent quarante-trois mille neuf cent six")
+  , (61305790721611591, "soixante et un billiards trois cent cinq billions sept cent quatre-vingt-dix milliards sept cent vingt et un millions six cent onze mille cinq cent quatre-vingt-onze")
+  , (99194853094755497, "quatre-vingt-dix-neuf billiards cent quatre-vingt-quatorze billions huit cent cinquante-trois milliards quatre-vingt-quatorze millions sept cent cinquante-cinq mille quatre cent quatre-vingt-dix-sept")
+  , (160500643816367088, "cent soixante billiards cinq cents billions six cent quarante-trois milliards huit cent seize millions trois cent soixante-sept mille quatre-vingt-huit")
+  , (259695496911122585, "deux cent cinquante-neuf billiards six cent quatre-vingt-quinze billions quatre cent quatre-vingt-seize milliards neuf cent onze millions cent vingt-deux mille cinq cent quatre-vingt-cinq")
+  , (420196140727489673, "quatre cent vingt billiards cent quatre-vingt-seize billions cent quarante milliards sept cent vingt-sept millions quatre cent quatre-vingt-neuf mille six cent soixante-treize")
+  , (679891637638612258, "six cent soixante-dix-neuf billiards huit cent quatre-vingt-onze billions six cent trente-sept milliards six cent trente-huit millions six cent douze mille deux cent cinquante-huit")
+  , (1100087778366101931, "un trillion cent billiards quatre-vingt-sept billions sept cent soixante-dix-huit milliards trois cent soixante-six millions cent un mille neuf cent trente et un")
+  , (1779979416004714189, "un trillion sept cent soixante-dix-neuf billiards neuf cent soixante-dix-neuf billions quatre cent seize milliards quatre millions sept cent quatorze mille cent quatre-vingt-neuf")
+  , (2880067194370816120, "deux trillions huit cent quatre-vingts billiards soixante-sept billions cent quatre-vingt-quatorze milliards trois cent soixante-dix millions huit cent seize mille cent vingt")
+  , (4660046610375530309, "quatre trillions six cent soixante billiards quarante-six billions six cent dix milliards trois cent soixante-quinze millions cinq cent trente mille trois cent neuf")
+  , (7540113804746346429, "sept trillions cinq cent quarante billiards cent treize billions huit cent quatre milliards sept cent quarante-six millions trois cent quarante-six mille quatre cent vingt-neuf")
+  , (12200160415121876738, "douze trillions deux cents billiards cent soixante billions quatre cent quinze milliards cent vingt et un millions huit cent soixante-seize mille sept cent trente-huit")
+  , (19740274219868223167, "dix-neuf trillions sept cent quarante billiards deux cent soixante-quatorze billions deux cent dix-neuf milliards huit cent soixante-huit millions deux cent vingt-trois mille cent soixante-sept")
+  , (31940434634990099905, "trente et un trillions neuf cent quarante billiards quatre cent trente-quatre billions six cent trente-quatre milliards neuf cent quatre-vingt-dix millions quatre-vingt-dix-neuf mille neuf cent cinq")
+  , (51680708854858323072, "cinquante et un trillions six cent quatre-vingts billiards sept cent huit billions huit cent cinquante-quatre milliards huit cent cinquante-huit millions trois cent vingt-trois mille soixante-douze")
+  , (83621143489848422977, "quatre-vingt-trois trillions six cent vingt et un billiards cent quarante-trois billions quatre cent quatre-vingt-neuf milliards huit cent quarante-huit millions quatre cent vingt-deux mille neuf cent soixante-dix-sept")
+  , (135301852344706746049, "cent trente-cinq trillions trois cent un billiards huit cent cinquante-deux billions trois cent quarante-quatre milliards sept cent six millions sept cent quarante-six mille quarante-neuf")
+  , (218922995834555169026, "deux cent dix-huit trillions neuf cent vingt-deux billiards neuf cent quatre-vingt-quinze billions huit cent trente-quatre milliards cinq cent cinquante-cinq millions cent soixante-neuf mille vingt-six")
+  , (354224848179261915075, "trois cent cinquante-quatre trillions deux cent vingt-quatre billiards huit cent quarante-huit billions cent soixante-dix-neuf milliards deux cent soixante et un millions neuf cent quinze mille soixante-quinze")
+  , (573147844013817084101, "cinq cent soixante-treize trillions cent quarante-sept billiards huit cent quarante-quatre billions treize milliards huit cent dix-sept millions quatre-vingt-quatre mille cent un")
+  , (927372692193078999176, "neuf cent vingt-sept trillions trois cent soixante-douze billiards six cent quatre-vingt-douze billions cent quatre-vingt-treize milliards soixante-dix-huit millions neuf cent quatre-vingt-dix-neuf mille cent soixante-seize")
+  , (1500520536206896083277, "un trilliard cinq cents trillions cinq cent vingt billiards cinq cent trente-six billions deux cent six milliards huit cent quatre-vingt-seize millions quatre-vingt-trois mille deux cent soixante-dix-sept")
+  , (2427893228399975082453, "deux trilliards quatre cent vingt-sept trillions huit cent quatre-vingt-treize billiards deux cent vingt-huit billions trois cent quatre-vingt-dix-neuf milliards neuf cent soixante-quinze millions quatre-vingt-deux mille quatre cent cinquante-trois")
+  , (3928413764606871165730, "trois trilliards neuf cent vingt-huit trillions quatre cent treize billiards sept cent soixante-quatre billions six cent six milliards huit cent soixante et onze millions cent soixante-cinq mille sept cent trente")
+  , (6356306993006846248183, "six trilliards trois cent cinquante-six trillions trois cent six billiards neuf cent quatre-vingt-treize billions six milliards huit cent quarante-six millions deux cent quarante-huit mille cent quatre-vingt-trois")
+  , (10284720757613717413913, "dix trilliards deux cent quatre-vingt-quatre trillions sept cent vingt billiards sept cent cinquante-sept billions six cent treize milliards sept cent dix-sept millions quatre cent treize mille neuf cent treize")
+  , (16641027750620563662096, "seize trilliards six cent quarante et un trillions vingt-sept billiards sept cent cinquante billions six cent vingt milliards cinq cent soixante-trois millions six cent soixante-deux mille quatre-vingt-seize")
+  , (26925748508234281076009, "vingt-six trilliards neuf cent vingt-cinq trillions sept cent quarante-huit billiards cinq cent huit billions deux cent trente-quatre milliards deux cent quatre-vingt-un millions soixante-seize mille neuf")
+  , (43566776258854844738105, "quarante-trois trilliards cinq cent soixante-six trillions sept cent soixante-seize billiards deux cent cinquante-huit billions huit cent cinquante-quatre milliards huit cent quarante-quatre millions sept cent trente-huit mille cent cinq")
+  , (70492524767089125814114, "soixante-dix trilliards quatre cent quatre-vingt-douze trillions cinq cent vingt-quatre billiards sept cent soixante-sept billions quatre-vingt-neuf milliards cent vingt-cinq millions huit cent quatorze mille cent quatorze")
+  , (114059301025943970552219, "cent quatorze trilliards cinquante-neuf trillions trois cent un billiards vingt-cinq billions neuf cent quarante-trois milliards neuf cent soixante-dix millions cinq cent cinquante-deux mille deux cent dix-neuf")
+  ]
+
+ordinals :: [(Integer, Text)]
+ordinals = [
+    (0, "zéroième")
+  , (1, "premier")
+  , (2, "deuxième")
+  , (3, "troisième")
+  , (4, "quatrième")
+  , (5, "cinquième")
+  , (6, "sixième")
+  , (7, "septième")
+  , (8, "huitième")
+  , (9, "neuvième")
+  , (10, "dixième")
+  , (11, "onzième")
+  , (12, "douzième")
+  , (13, "treizième")
+  , (14, "quatorzième")
+  , (15, "quinzième")
+  , (16, "seizième")
+  , (17, "dix-septième")
+  , (18, "dix-huitième")
+  , (19, "dix-neuvième")
+  , (20, "vingtième")
+  , (21, "vingt et unième")
+  , (22, "vingt-deuxième")
+  , (23, "vingt-troisième")
+  , (24, "vingt-quatrième")
+  , (25, "vingt-cinquième")
+  , (26, "vingt-sixième")
+  , (27, "vingt-septième")
+  , (28, "vingt-huitième")
+  , (29, "vingt-neuvième")
+  , (30, "trentième")
+  , (31, "trente et unième")
+  , (32, "trente-deuxième")
+  , (33, "trente-troisième")
+  , (34, "trente-quatrième")
+  , (35, "trente-cinquième")
+  , (36, "trente-sixième")
+  , (37, "trente-septième")
+  , (38, "trente-huitième")
+  , (39, "trente-neuvième")
+  , (40, "quarantième")
+  , (41, "quarante et unième")
+  , (42, "quarante-deuxième")
+  , (43, "quarante-troisième")
+  , (44, "quarante-quatrième")
+  , (45, "quarante-cinquième")
+  , (46, "quarante-sixième")
+  , (47, "quarante-septième")
+  , (48, "quarante-huitième")
+  , (49, "quarante-neuvième")
+  , (50, "cinquantième")
+  , (51, "cinquante et unième")
+  , (52, "cinquante-deuxième")
+  , (53, "cinquante-troisième")
+  , (54, "cinquante-quatrième")
+  , (55, "cinquante-cinquième")
+  , (56, "cinquante-sixième")
+  , (57, "cinquante-septième")
+  , (58, "cinquante-huitième")
+  , (59, "cinquante-neuvième")
+  , (60, "soixantième")
+  , (61, "soixante et unième")
+  , (62, "soixante-deuxième")
+  , (63, "soixante-troisième")
+  , (64, "soixante-quatrième")
+  , (65, "soixante-cinquième")
+  , (66, "soixante-sixième")
+  , (67, "soixante-septième")
+  , (68, "soixante-huitième")
+  , (69, "soixante-neuvième")
+  , (70, "soixante-dixième")
+  , (71, "soixante et onzième")
+  , (72, "soixante-douzième")
+  , (73, "soixante-treizième")
+  , (74, "soixante-quatorzième")
+  , (75, "soixante-quinzième")
+  , (76, "soixante-seizième")
+  , (77, "soixante-dix-septième")
+  , (78, "soixante-dix-huitième")
+  , (79, "soixante-dix-neuvième")
+  , (80, "quatre-vingtsième")
+  , (81, "quatre-vingt-unième")
+  , (82, "quatre-vingt-deuxième")
+  , (83, "quatre-vingt-troisième")
+  , (84, "quatre-vingt-quatrième")
+  , (85, "quatre-vingt-cinquième")
+  , (86, "quatre-vingt-sixième")
+  , (87, "quatre-vingt-septième")
+  , (88, "quatre-vingt-huitième")
+  , (89, "quatre-vingt-neuvième")
+  , (90, "quatre-vingt-dixième")
+  , (91, "quatre-vingt-onzième")
+  , (92, "quatre-vingt-douzième")
+  , (93, "quatre-vingt-treizième")
+  , (94, "quatre-vingt-quatorzième")
+  , (95, "quatre-vingt-quinzième")
+  , (96, "quatre-vingt-seizième")
+  , (97, "quatre-vingt-dix-septième")
+  , (98, "quatre-vingt-dix-huitième")
+  , (99, "quatre-vingt-dix-neuvième")
+  , (100, "centième")
+  , (101, "cent unième")
+  , (102, "cent deuxième")
+  , (103, "cent troisième")
+  , (104, "cent quatrième")
+  , (105, "cent cinquième")
+  , (106, "cent sixième")
+  , (107, "cent septième")
+  , (108, "cent huitième")
+  , (109, "cent neuvième")
+  , (110, "cent dixième")
+  , (111, "cent onzième")
+  , (112, "cent douzième")
+  , (113, "cent treizième")
+  , (114, "cent quatorzième")
+  , (115, "cent quinzième")
+  , (116, "cent seizième")
+  , (117, "cent dix-septième")
+  , (118, "cent dix-huitième")
+  , (119, "cent dix-neuvième")
+  , (120, "cent vingtième")
+  , (121, "cent vingt et unième")
+  , (122, "cent vingt-deuxième")
+  , (123, "cent vingt-troisième")
+  , (124, "cent vingt-quatrième")
+  , (125, "cent vingt-cinquième")
+  , (126, "cent vingt-sixième")
+  , (127, "cent vingt-septième")
+  , (128, "cent vingt-huitième")
+  , (129, "cent vingt-neuvième")
+  , (130, "cent trentième")
+  , (131, "cent trente et unième")
+  , (132, "cent trente-deuxième")
+  , (133, "cent trente-troisième")
+  , (134, "cent trente-quatrième")
+  , (135, "cent trente-cinquième")
+  , (136, "cent trente-sixième")
+  , (137, "cent trente-septième")
+  , (138, "cent trente-huitième")
+  , (139, "cent trente-neuvième")
+  , (140, "cent quarantième")
+  , (141, "cent quarante et unième")
+  , (142, "cent quarante-deuxième")
+  , (143, "cent quarante-troisième")
+  , (144, "cent quarante-quatrième")
+  , (145, "cent quarante-cinquième")
+  , (146, "cent quarante-sixième")
+  , (147, "cent quarante-septième")
+  , (148, "cent quarante-huitième")
+  , (149, "cent quarante-neuvième")
+  , (150, "cent cinquantième")
+  , (151, "cent cinquante et unième")
+  , (152, "cent cinquante-deuxième")
+  , (153, "cent cinquante-troisième")
+  , (154, "cent cinquante-quatrième")
+  , (155, "cent cinquante-cinquième")
+  , (156, "cent cinquante-sixième")
+  , (157, "cent cinquante-septième")
+  , (158, "cent cinquante-huitième")
+  , (159, "cent cinquante-neuvième")
+  , (160, "cent soixantième")
+  , (161, "cent soixante et unième")
+  , (162, "cent soixante-deuxième")
+  , (163, "cent soixante-troisième")
+  , (164, "cent soixante-quatrième")
+  , (165, "cent soixante-cinquième")
+  , (166, "cent soixante-sixième")
+  , (167, "cent soixante-septième")
+  , (168, "cent soixante-huitième")
+  , (169, "cent soixante-neuvième")
+  , (170, "cent soixante-dixième")
+  , (171, "cent soixante et onzième")
+  , (172, "cent soixante-douzième")
+  , (173, "cent soixante-treizième")
+  , (174, "cent soixante-quatorzième")
+  , (175, "cent soixante-quinzième")
+  , (176, "cent soixante-seizième")
+  , (177, "cent soixante-dix-septième")
+  , (178, "cent soixante-dix-huitième")
+  , (179, "cent soixante-dix-neuvième")
+  , (180, "cent quatre-vingtsième")
+  , (181, "cent quatre-vingt-unième")
+  , (182, "cent quatre-vingt-deuxième")
+  , (183, "cent quatre-vingt-troisième")
+  , (184, "cent quatre-vingt-quatrième")
+  , (185, "cent quatre-vingt-cinquième")
+  , (186, "cent quatre-vingt-sixième")
+  , (187, "cent quatre-vingt-septième")
+  , (188, "cent quatre-vingt-huitième")
+  , (189, "cent quatre-vingt-neuvième")
+  , (190, "cent quatre-vingt-dixième")
+  , (191, "cent quatre-vingt-onzième")
+  , (192, "cent quatre-vingt-douzième")
+  , (193, "cent quatre-vingt-treizième")
+  , (194, "cent quatre-vingt-quatorzième")
+  , (195, "cent quatre-vingt-quinzième")
+  , (196, "cent quatre-vingt-seizième")
+  , (197, "cent quatre-vingt-dix-septième")
+  , (198, "cent quatre-vingt-dix-huitième")
+  , (199, "cent quatre-vingt-dix-neuvième")
+  , (200, "deux centsième")
+  , (233, "deux cent trente-troisième")
+  , (377, "trois cent soixante-dix-septième")
+  , (610, "six cent dixième")
+  , (987, "neuf cent quatre-vingt-septième")
+  , (1597, "mille cinq cent quatre-vingt-dix-septième")
+  , (2584, "deux mille cinq cent quatre-vingt-quatrième")
+  , (4181, "quatre mille cent quatre-vingt-unième")
+  , (6765, "six mille sept cent soixante-cinquième")
+  , (10946, "dix mille neuf cent quarante-sixième")
+  , (17711, "dix-sept mille sept cent onzième")
+  , (28657, "vingt-huit mille six cent cinquante-septième")
+  , (46368, "quarante-six mille trois cent soixante-huitième")
+  , (75025, "soixante-quinze mille vingt-cinquième")
+  , (121393, "cent vingt et un mille trois cent quatre-vingt-treizième")
+  , (196418, "cent quatre-vingt-seize mille quatre cent dix-huitième")
+  , (317811, "trois cent dix-sept mille huit cent onzième")
+  , (514229, "cinq cent quatorze mille deux cent vingt-neuvième")
+  , (832040, "huit cent trente-deux mille quarantième")
+  , (1346269, "un million trois cent quarante-six mille deux cent soixante-neuvième")
+  , (2178309, "deux millions cent soixante-dix-huit mille trois cent neuvième")
+  , (3524578, "trois millions cinq cent vingt-quatre mille cinq cent soixante-dix-huitième")
+  , (5702887, "cinq millions sept cent deux mille huit cent quatre-vingt-septième")
+  , (9227465, "neuf millions deux cent vingt-sept mille quatre cent soixante-cinquième")
+  , (14930352, "quatorze millions neuf cent trente mille trois cent cinquante-deuxième")
+  , (24157817, "vingt-quatre millions cent cinquante-sept mille huit cent dix-septième")
+  , (39088169, "trente-neuf millions quatre-vingt-huit mille cent soixante-neuvième")
+  , (63245986, "soixante-trois millions deux cent quarante-cinq mille neuf cent quatre-vingt-sixième")
+  , (102334155, "cent deux millions trois cent trente-quatre mille cent cinquante-cinquième")
+  , (165580141, "cent soixante-cinq millions cinq cent quatre-vingt mille cent quarante et unième")
+  , (267914296, "deux cent soixante-sept millions neuf cent quatorze mille deux cent quatre-vingt-seizième")
+  , (433494437, "quatre cent trente-trois millions quatre cent quatre-vingt-quatorze mille quatre cent trente-septième")
+  , (701408733, "sept cent un millions quatre cent huit mille sept cent trente-troisième")
+  , (1134903170, "un milliard cent trente-quatre millions neuf cent trois mille cent soixante-dixième")
+  , (1836311903, "un milliard huit cent trente-six millions trois cent onze mille neuf cent troisième")
+  , (2971215073, "deux milliards neuf cent soixante et onze millions deux cent quinze mille soixante-treizième")
+  , (4807526976, "quatre milliards huit cent sept millions cinq cent vingt-six mille neuf cent soixante-seizième")
+  , (7778742049, "sept milliards sept cent soixante-dix-huit millions sept cent quarante-deux mille quarante-neuvième")
+  , (12586269025, "douze milliards cinq cent quatre-vingt-six millions deux cent soixante-neuf mille vingt-cinquième")
+  , (20365011074, "vingt milliards trois cent soixante-cinq millions onze mille soixante-quatorzième")
+  , (32951280099, "trente-deux milliards neuf cent cinquante et un millions deux cent quatre-vingt mille quatre-vingt-dix-neuvième")
+  , (53316291173, "cinquante-trois milliards trois cent seize millions deux cent quatre-vingt-onze mille cent soixante-treizième")
+  , (86267571272, "quatre-vingt-six milliards deux cent soixante-sept millions cinq cent soixante et onze mille deux cent soixante-douzième")
+  , (139583862445, "cent trente-neuf milliards cinq cent quatre-vingt-trois millions huit cent soixante-deux mille quatre cent quarante-cinquième")
+  , (225851433717, "deux cent vingt-cinq milliards huit cent cinquante et un millions quatre cent trente-trois mille sept cent dix-septième")
+  , (365435296162, "trois cent soixante-cinq milliards quatre cent trente-cinq millions deux cent quatre-vingt-seize mille cent soixante-deuxième")
+  , (591286729879, "cinq cent quatre-vingt-onze milliards deux cent quatre-vingt-six millions sept cent vingt-neuf mille huit cent soixante-dix-neuvième")
+  , (956722026041, "neuf cent cinquante-six milliards sept cent vingt-deux millions vingt-six mille quarante et unième")
+  , (1548008755920, "un billion cinq cent quarante-huit milliards huit millions sept cent cinquante-cinq mille neuf cent vingtième")
+  , (2504730781961, "deux billions cinq cent quatre milliards sept cent trente millions sept cent quatre-vingt-un mille neuf cent soixante et unième")
+  , (4052739537881, "quatre billions cinquante-deux milliards sept cent trente-neuf millions cinq cent trente-sept mille huit cent quatre-vingt-unième")
+  , (6557470319842, "six billions cinq cent cinquante-sept milliards quatre cent soixante-dix millions trois cent dix-neuf mille huit cent quarante-deuxième")
+  , (10610209857723, "dix billions six cent dix milliards deux cent neuf millions huit cent cinquante-sept mille sept cent vingt-troisième")
+  , (17167680177565, "dix-sept billions cent soixante-sept milliards six cent quatre-vingts millions cent soixante-dix-sept mille cinq cent soixante-cinquième")
+  , (27777890035288, "vingt-sept billions sept cent soixante-dix-sept milliards huit cent quatre-vingt-dix millions trente-cinq mille deux cent quatre-vingt-huitième")
+  , (44945570212853, "quarante-quatre billions neuf cent quarante-cinq milliards cinq cent soixante-dix millions deux cent douze mille huit cent cinquante-troisième")
+  , (72723460248141, "soixante-douze billions sept cent vingt-trois milliards quatre cent soixante millions deux cent quarante-huit mille cent quarante et unième")
+  , (117669030460994, "cent dix-sept billions six cent soixante-neuf milliards trente millions quatre cent soixante mille neuf cent quatre-vingt-quatorzième")
+  , (190392490709135, "cent quatre-vingt-dix billions trois cent quatre-vingt-douze milliards quatre cent quatre-vingt-dix millions sept cent neuf mille cent trente-cinquième")
+  , (308061521170129, "trois cent huit billions soixante et un milliards cinq cent vingt et un millions cent soixante-dix mille cent vingt-neuvième")
+  , (498454011879264, "quatre cent quatre-vingt-dix-huit billions quatre cent cinquante-quatre milliards onze millions huit cent soixante-dix-neuf mille deux cent soixante-quatrième")
+  , (806515533049393, "huit cent six billions cinq cent quinze milliards cinq cent trente-trois millions quarante-neuf mille trois cent quatre-vingt-treizième")
+  , (1304969544928657, "un billiard trois cent quatre billions neuf cent soixante-neuf milliards cinq cent quarante-quatre millions neuf cent vingt-huit mille six cent cinquante-septième")
+  , (2111485077978050, "deux billiards cent onze billions quatre cent quatre-vingt-cinq milliards soixante-dix-sept millions neuf cent soixante-dix-huit mille cinquantième")
+  , (3416454622906707, "trois billiards quatre cent seize billions quatre cent cinquante-quatre milliards six cent vingt-deux millions neuf cent six mille sept cent septième")
+  , (5527939700884757, "cinq billiards cinq cent vingt-sept billions neuf cent trente-neuf milliards sept cents millions huit cent quatre-vingt-quatre mille sept cent cinquante-septième")
+  , (8944394323791464, "huit billiards neuf cent quarante-quatre billions trois cent quatre-vingt-quatorze milliards trois cent vingt-trois millions sept cent quatre-vingt-onze mille quatre cent soixante-quatrième")
+  , (14472334024676221, "quatorze billiards quatre cent soixante-douze billions trois cent trente-quatre milliards vingt-quatre millions six cent soixante-seize mille deux cent vingt et unième")
+  , (23416728348467685, "vingt-trois billiards quatre cent seize billions sept cent vingt-huit milliards trois cent quarante-huit millions quatre cent soixante-sept mille six cent quatre-vingt-cinquième")
+  , (37889062373143906, "trente-sept billiards huit cent quatre-vingt-neuf billions soixante-deux milliards trois cent soixante-treize millions cent quarante-trois mille neuf cent sixième")
+  , (61305790721611591, "soixante et un billiards trois cent cinq billions sept cent quatre-vingt-dix milliards sept cent vingt et un millions six cent onze mille cinq cent quatre-vingt-onzième")
+  , (99194853094755497, "quatre-vingt-dix-neuf billiards cent quatre-vingt-quatorze billions huit cent cinquante-trois milliards quatre-vingt-quatorze millions sept cent cinquante-cinq mille quatre cent quatre-vingt-dix-septième")
+  , (160500643816367088, "cent soixante billiards cinq cents billions six cent quarante-trois milliards huit cent seize millions trois cent soixante-sept mille quatre-vingt-huitième")
+  , (259695496911122585, "deux cent cinquante-neuf billiards six cent quatre-vingt-quinze billions quatre cent quatre-vingt-seize milliards neuf cent onze millions cent vingt-deux mille cinq cent quatre-vingt-cinquième")
+  , (420196140727489673, "quatre cent vingt billiards cent quatre-vingt-seize billions cent quarante milliards sept cent vingt-sept millions quatre cent quatre-vingt-neuf mille six cent soixante-treizième")
+  , (679891637638612258, "six cent soixante-dix-neuf billiards huit cent quatre-vingt-onze billions six cent trente-sept milliards six cent trente-huit millions six cent douze mille deux cent cinquante-huitième")
+  , (1100087778366101931, "un trillion cent billiards quatre-vingt-sept billions sept cent soixante-dix-huit milliards trois cent soixante-six millions cent un mille neuf cent trente et unième")
+  , (1779979416004714189, "un trillion sept cent soixante-dix-neuf billiards neuf cent soixante-dix-neuf billions quatre cent seize milliards quatre millions sept cent quatorze mille cent quatre-vingt-neuvième")
+  , (2880067194370816120, "deux trillions huit cent quatre-vingts billiards soixante-sept billions cent quatre-vingt-quatorze milliards trois cent soixante-dix millions huit cent seize mille cent vingtième")
+  , (4660046610375530309, "quatre trillions six cent soixante billiards quarante-six billions six cent dix milliards trois cent soixante-quinze millions cinq cent trente mille trois cent neuvième")
+  , (7540113804746346429, "sept trillions cinq cent quarante billiards cent treize billions huit cent quatre milliards sept cent quarante-six millions trois cent quarante-six mille quatre cent vingt-neuvième")
+  , (12200160415121876738, "douze trillions deux cents billiards cent soixante billions quatre cent quinze milliards cent vingt et un millions huit cent soixante-seize mille sept cent trente-huitième")
+  , (19740274219868223167, "dix-neuf trillions sept cent quarante billiards deux cent soixante-quatorze billions deux cent dix-neuf milliards huit cent soixante-huit millions deux cent vingt-trois mille cent soixante-septième")
+  , (31940434634990099905, "trente et un trillions neuf cent quarante billiards quatre cent trente-quatre billions six cent trente-quatre milliards neuf cent quatre-vingt-dix millions quatre-vingt-dix-neuf mille neuf cent cinquième")
+  , (51680708854858323072, "cinquante et un trillions six cent quatre-vingts billiards sept cent huit billions huit cent cinquante-quatre milliards huit cent cinquante-huit millions trois cent vingt-trois mille soixante-douzième")
+  , (83621143489848422977, "quatre-vingt-trois trillions six cent vingt et un billiards cent quarante-trois billions quatre cent quatre-vingt-neuf milliards huit cent quarante-huit millions quatre cent vingt-deux mille neuf cent soixante-dix-septième")
+  , (135301852344706746049, "cent trente-cinq trillions trois cent un billiards huit cent cinquante-deux billions trois cent quarante-quatre milliards sept cent six millions sept cent quarante-six mille quarante-neuvième")
+  , (218922995834555169026, "deux cent dix-huit trillions neuf cent vingt-deux billiards neuf cent quatre-vingt-quinze billions huit cent trente-quatre milliards cinq cent cinquante-cinq millions cent soixante-neuf mille vingt-sixième")
+  , (354224848179261915075, "trois cent cinquante-quatre trillions deux cent vingt-quatre billiards huit cent quarante-huit billions cent soixante-dix-neuf milliards deux cent soixante et un millions neuf cent quinze mille soixante-quinzième")
+  , (573147844013817084101, "cinq cent soixante-treize trillions cent quarante-sept billiards huit cent quarante-quatre billions treize milliards huit cent dix-sept millions quatre-vingt-quatre mille cent unième")
+  , (927372692193078999176, "neuf cent vingt-sept trillions trois cent soixante-douze billiards six cent quatre-vingt-douze billions cent quatre-vingt-treize milliards soixante-dix-huit millions neuf cent quatre-vingt-dix-neuf mille cent soixante-seizième")
+  , (1500520536206896083277, "un trilliard cinq cents trillions cinq cent vingt billiards cinq cent trente-six billions deux cent six milliards huit cent quatre-vingt-seize millions quatre-vingt-trois mille deux cent soixante-dix-septième")
+  , (2427893228399975082453, "deux trilliards quatre cent vingt-sept trillions huit cent quatre-vingt-treize billiards deux cent vingt-huit billions trois cent quatre-vingt-dix-neuf milliards neuf cent soixante-quinze millions quatre-vingt-deux mille quatre cent cinquante-troisième")
+  , (3928413764606871165730, "trois trilliards neuf cent vingt-huit trillions quatre cent treize billiards sept cent soixante-quatre billions six cent six milliards huit cent soixante et onze millions cent soixante-cinq mille sept cent trentième")
+  , (6356306993006846248183, "six trilliards trois cent cinquante-six trillions trois cent six billiards neuf cent quatre-vingt-treize billions six milliards huit cent quarante-six millions deux cent quarante-huit mille cent quatre-vingt-troisième")
+  , (10284720757613717413913, "dix trilliards deux cent quatre-vingt-quatre trillions sept cent vingt billiards sept cent cinquante-sept billions six cent treize milliards sept cent dix-sept millions quatre cent treize mille neuf cent treizième")
+  , (16641027750620563662096, "seize trilliards six cent quarante et un trillions vingt-sept billiards sept cent cinquante billions six cent vingt milliards cinq cent soixante-trois millions six cent soixante-deux mille quatre-vingt-seizième")
+  , (26925748508234281076009, "vingt-six trilliards neuf cent vingt-cinq trillions sept cent quarante-huit billiards cinq cent huit billions deux cent trente-quatre milliards deux cent quatre-vingt-un millions soixante-seize mille neuvième")
+  , (43566776258854844738105, "quarante-trois trilliards cinq cent soixante-six trillions sept cent soixante-seize billiards deux cent cinquante-huit billions huit cent cinquante-quatre milliards huit cent quarante-quatre millions sept cent trente-huit mille cent cinquième")
+  , (70492524767089125814114, "soixante-dix trilliards quatre cent quatre-vingt-douze trillions cinq cent vingt-quatre billiards sept cent soixante-sept billions quatre-vingt-neuf milliards cent vingt-cinq millions huit cent quatorze mille cent quatorzième")
+  , (114059301025943970552219, "cent quatorze trilliards cinquante-neuf trillions trois cent un billiards vingt-cinq billions neuf cent quarante-trois milliards neuf cent soixante-dix millions cinq cent cinquante-deux mille deux cent dix-neuvième")
+  ]
