ordinal 0.1.2.0 → 0.2.0.0
raw patch · 16 files changed
+1065/−30 lines, 16 filesdep +regexPVP ok
version bump matches the API change (PVP)
Dependencies added: regex
API changes (from Hackage documentation)
+ Text.Numerals.Algorithm: longScaleTitle :: Text -> Text -> FreeValueSplitter
+ Text.Numerals.Algorithm: shortScaleTitle :: Text -> FreeValueSplitter
+ Text.Numerals.Algorithm: valueSplit' :: (Text -> Text) -> HighNumberAlgorithm -> FreeValueSplitter
+ Text.Numerals.Languages: german :: NumeralsAlgorithm
+ Text.Numerals.Languages.German: german :: NumeralsAlgorithm
+ Text.Numerals.Languages.German: highWords' :: HighNumberAlgorithm
+ Text.Numerals.Languages.German: lowWords' :: Vector Text
+ Text.Numerals.Languages.German: merge' :: FreeMergerFunction
+ Text.Numerals.Languages.German: midWords' :: [(Integer, Text)]
+ Text.Numerals.Languages.German: negativeWord' :: Text
+ Text.Numerals.Languages.German: oneWord' :: Text
+ Text.Numerals.Languages.German: ordinize' :: Text -> Text
+ Text.Numerals.Languages.German: zeroWord' :: Text
- Text.Numerals.Algorithm.Template: ordinizeFromDict :: String -> [(String, String)] -> Name -> Dec
+ Text.Numerals.Algorithm.Template: ordinizeFromDict :: String -> [(String, String)] -> Name -> [Dec]
Files
- CHANGELOG.md +4/−0
- README.md +47/−2
- ordinal.cabal +5/−2
- src/Text/Numerals/Algorithm.hs +27/−9
- src/Text/Numerals/Algorithm/Template.hs +7/−4
- src/Text/Numerals/Internal.hs +2/−2
- src/Text/Numerals/Languages.hs +2/−1
- src/Text/Numerals/Languages/Dutch.hs +2/−2
- src/Text/Numerals/Languages/English.hs +2/−2
- src/Text/Numerals/Languages/French.hs +2/−3
- src/Text/Numerals/Languages/German.hs +144/−0
- src/Text/Numerals/Prefix.hs +23/−3
- test/Text/Numerals/Languages/DutchSpec.hs +44/−0
- test/Text/Numerals/Languages/EnglishSpec.hs +44/−0
- test/Text/Numerals/Languages/FrenchSpec.hs +44/−0
- test/Text/Numerals/Languages/GermanSpec.hs +666/−0
CHANGELOG.md view
@@ -2,6 +2,10 @@ For a full list of changes, see the history on [GitHub](https://github.com/hapytex/ordinal). +## Version 0.2.0.0++Added support for the *German* language.+ ## Version 0.1.0.0 The first version that is deployed on Hackage. This version contains
README.md view
@@ -13,8 +13,9 @@ The following languages are currently supported (in *alphabetical* order): 1. Dutch (nl);- 2. English (en); and- 3. French (fr)+ 2. English (en);+ 3. French (fr); and+ 4. German (de) ## Usage @@ -59,6 +60,15 @@ The package uses the `Data.Vector` module which is not safe, and therefore `ordinal` is not safe either. +## Continuous Integration++The commits on GitHub are validated by [*Travis*](https://travis-ci.com/hapytex/ordinal).+The build will validate that the system is building, that the compiler does not+generate any *errors* or *warnings*. It will also run the test-suite and will+run `hlint` on the source code to check for improvements. Finally it will run+`grep` on the Haskell files in the `src/` directory to check for missing+elements (`???`) and `TODO`s.+ ## Contribute You can contribute by making a pull request on the [*GitHub@@ -66,6 +76,41 @@ You can contact the package maintainer by sending a mail to [`hapytexeu+gh@gmail.com`](mailto:hapytexeu+gh@gmail.com).++### Adding a new language++There is a `src/Text/Numerals/Languages/Language.hs.template` template file to+include a new language. This includes a list of tasks to do in order to add the+language. The `test/` directory contains a `test/Text/Numerals/Languages/LanguageSpec.hs.template`+file to test the new language. In these templates, one needs to fill in the+`???` parts.++Normally the languages are tested for all numbers in the 0-200 range, and the+first hundred Fibonacci numbers greater than 200, so:+```+[+ 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393+ ,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352+ ,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733+ ,1134903170,1836311903,2971215073,4807526976,7778742049,12586269025,20365011074+ ,32951280099,53316291173,86267571272,139583862445,225851433717,365435296162+ ,591286729879,956722026041,1548008755920,2504730781961,4052739537881,6557470319842+ ,10610209857723,17167680177565,27777890035288,44945570212853,72723460248141+ ,117669030460994,190392490709135,308061521170129,498454011879264,806515533049393+ ,1304969544928657,2111485077978050,3416454622906707,5527939700884757,8944394323791464+ ,14472334024676221,23416728348467685,37889062373143906,61305790721611591,99194853094755497+ ,160500643816367088,259695496911122585,420196140727489673,679891637638612258+ ,1100087778366101931,1779979416004714189,2880067194370816120,4660046610375530309+ ,7540113804746346429,12200160415121876738,19740274219868223167,31940434634990099905+ ,51680708854858323072,83621143489848422977,135301852344706746049,218922995834555169026+ ,354224848179261915075,573147844013817084101,927372692193078999176,1500520536206896083277+ ,2427893228399975082453,3928413764606871165730,6356306993006846248183,10284720757613717413913+ ,16641027750620563662096,26925748508234281076009,43566776258854844738105+ ,70492524767089125814114,114059301025943970552219+]+```++and powers of ten until *10<sup>24</sup>*. ---
ordinal.cabal view
@@ -1,5 +1,5 @@ name: ordinal-version: 0.1.2.0+version: 0.2.0.0 synopsis: Convert numbers to words in different languages. description: A package based on Python's num2words package that converts numbers@@ -32,14 +32,16 @@ , Text.Numerals.Languages.Dutch , Text.Numerals.Languages.English , Text.Numerals.Languages.French+ , Text.Numerals.Languages.German , Text.Numerals.Prefix other-modules: Text.Numerals.Internal build-depends: base >= 4.7 && < 5+ , containers >=0.5+ , regex >=1.0 , text >= 0.1 , template-haskell >=2.2.0.0- , containers >=0.5 , vector >= 0.7 default-language: Haskell2010 @@ -52,6 +54,7 @@ Text.Numerals.Languages.DutchSpec Text.Numerals.Languages.EnglishSpec Text.Numerals.Languages.FrenchSpec+ Text.Numerals.Languages.GermanSpec build-depends: base , ordinal
src/Text/Numerals/Algorithm.hs view
@@ -18,6 +18,8 @@ -- * Large number algorithms , HighNumberAlgorithm(ShortScale, LongScale) , shortScale, longScale+ , shortScaleTitle, longScaleTitle+ , valueSplit' -- * Conversion to a 'NumberSegment' , toSegments , toSegmentLow, toSegmentMid, toSegmentHigh@@ -27,8 +29,7 @@ import Data.Foldable(toList) import Data.List(sortOn)-import Data.Maybe(maybe)-import Data.Text(Text, cons)+import Data.Text(Text, cons, toTitle) import Data.Vector(Vector, (!), (!?), fromList) import qualified Data.Vector as V @@ -50,14 +51,14 @@ instance NumToWord NumeralsAlgorithm where- toCardinal NumeralsAlgorithm { minusWord=minusWord, oneWord=oneWord, lowWords=lowWords, midWords=midWords, highWords=highWords, mergeFunction=mergeFunction } = cardinal+ toCardinal NumeralsAlgorithm { minusWord=_minusWord, oneWord=_oneWord, lowWords=_lowWords, midWords=_midWords, highWords=_highWords, mergeFunction=_mergeFunction } = cardinal where cardinal i- | i < 0 = minusWord <> cons ' ' (go (-j))+ | i < 0 = _minusWord <> cons ' ' (go (-j)) | otherwise = go j- where go = compressSegments oneWord mergeFunction . toSegments lowWords midWords highWords+ where go = compressSegments _oneWord _mergeFunction . toSegments _lowWords _midWords _highWords j = fromIntegral i :: Integer - toOrdinal na@NumeralsAlgorithm { ordinize=ordinize } = ordinize . toCardinal na+ toOrdinal na@NumeralsAlgorithm { ordinize=_ordinize } = _ordinize . toCardinal na _toNumberScale :: (Integral i, Integral j) => i -> (j, i)@@ -80,6 +81,15 @@ longScale :: Text -> Text -> FreeValueSplitter longScale suf1 = valueSplit . LongScale suf1 +-- | Construct a 'FreeValueSplitter' function for the given suffix for a /short scale/, the names are written in /title case/.+shortScaleTitle :: Text -> FreeValueSplitter+shortScaleTitle = valueSplit' toTitle . ShortScale++-- | Construct a 'FreeValueSplitter' function for the given suffixes for a /long scale/, the names are written in /title case/.+longScaleTitle :: Text -> Text -> FreeValueSplitter+longScaleTitle suf1 = valueSplit' toTitle . LongScale suf1++ _highWithSuffix :: Text -> Int -> Maybe Text _highWithSuffix suf = fmap (<> suf) . (latinPrefixes !?) @@ -90,15 +100,23 @@ | otherwise = _highWithSuffix suf2 k where k = div j 2 +-- Generate a /value splitter/ for a 'HighNumberAlgorithm' but where the result+-- is post-processed by a function.+valueSplit'+ :: (Text -> Text) -- ^ The post-processing function.+ -> HighNumberAlgorithm -- ^ The 'HighNumberAlgorithm' that is used.+ -> FreeValueSplitter -- ^ The 'FreeValueSplitter' result.+valueSplit' f vs i = (m,) . f <$> _highToText vs (j-2)+ where ~(j, m) = _toNumberScale i+ instance ValueSplit HighNumberAlgorithm where- valueSplit vs i = (m,) <$> _highToText vs (j-2)- where ~(j, m) = _toNumberScale i+ valueSplit = valueSplit' id -- | 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))+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
src/Text/Numerals/Algorithm/Template.hs view
@@ -16,14 +16,15 @@ ) where import Data.Map.Strict(Map, elems, fromListWith)-import Data.Text(isSuffixOf, pack, snoc)+import Data.Text(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)+import Language.Haskell.TH(Body(GuardedB), Clause(Clause), Dec(FunD, SigD), Exp(AppE, ConE, LitE, VarE), Guard(NormalG), Lit(CharL, IntegerL, StringL), Name, Pat(VarP), Type(ConT, AppT, ArrowT), mkName) _getPrefix :: [Char] -> [Char] -> (Int, [Char]) _getPrefix [] bs = (0, bs)+_getPrefix as [] = (length as, []) _getPrefix aa@(a:as) ba@(b:bs) | a == b = _getPrefix as bs | otherwise = (length aa, ba)@@ -59,7 +60,9 @@ :: 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')])) []]+ -> [Dec] -- ^ The corresponding declaration.+ordinizeFromDict nm ts pp = [SigD nnm (tText (tText ArrowT)), FunD nnm [Clause [VarP t] (GuardedB (map _toGuard (elems (_ordinizeMap t' ts)) ++ [(NormalG (ConE 'True), AppE (VarE pp) t')])) []]] where t = mkName "t" t' = VarE t+ nnm = mkName nm+ tText = (`AppT` ConT ''Text)
src/Text/Numerals/Internal.hs view
@@ -75,9 +75,9 @@ | 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)+ | md == 0 = Just (d, 2 * e + 1) | otherwise = Nothing- where (d, m) = divMod q i+ where (d, md) = divMod q i _replaceSuffix :: Int -> Text -> Text -> Text _replaceSuffix n s = (<> s) . dropEnd n
src/Text/Numerals/Languages.hs view
@@ -9,9 +9,10 @@ -} module Text.Numerals.Languages (- dutch, english, french+ dutch, english, french, german ) where import Text.Numerals.Languages.Dutch(dutch) import Text.Numerals.Languages.English(english) import Text.Numerals.Languages.French(french)+import Text.Numerals.Languages.German(german)
src/Text/Numerals/Languages/Dutch.hs view
@@ -31,7 +31,7 @@ import Text.Numerals.Class(valueSplit) import Text.Numerals.Internal(_million, _mergeWithSpace) -$(pure [ordinizeFromDict "_ordinize'" [+$(pure (ordinizeFromDict "_ordinize'" [ ("nul", "nuld") , ("één", "eerst") , ("twee", "tweed")@@ -50,7 +50,7 @@ , ("end", "endst") , ("joen", "joenst") , ("rd", "rdst")- ] 'id])+ ] 'id)) -- | A function that converts a number in words in /cardinal/ form to /ordinal/ -- form according to the /Dutch/ language rules.
src/Text/Numerals/Languages/English.hs view
@@ -39,7 +39,7 @@ -- | A function that converts a number in words in /cardinal/ form to /ordinal/ -- form according to the /English/ language rules.-$(pure [ordinizeFromDict "ordinize'" [+$(pure (ordinizeFromDict "ordinize'" [ ("one", "first") , ("two", "second") , ("three", "third")@@ -52,7 +52,7 @@ , ("ten", "tenth") , ("eleven", "eleventh") , ("twelve", "twelfth")- ] '_ordinizepp])+ ] '_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.
src/Text/Numerals/Languages/French.hs view
@@ -24,7 +24,6 @@ ) 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)@@ -32,10 +31,10 @@ import Text.Numerals.Class(FreeMergerFunction, valueSplit) import Text.Numerals.Internal(_divisable100, _mergeWith, _mergeWithSpace, _mergeWithHyphen, _million, _stripLastIf, _thousand) -$(pure [ordinizeFromDict "_ordinize'" [+$(pure (ordinizeFromDict "_ordinize'" [ ("cinq", "cinqu") , ("neuf", "neuv")- ] 'id])+ ] '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.
+ src/Text/Numerals/Languages/German.hs view
@@ -0,0 +1,144 @@+{-# LANGUAGE OverloadedLists, OverloadedStrings, QuasiQuotes, TemplateHaskell #-}++{-|+Module : Text.Numerals.Languages.German+Description : A module to convert numbers to words in the /German/ language.+Maintainer : hapytexeu+gh@gmail.com+Stability : experimental+Portability : POSIX++This module contains logic to convert numbers to words in the /German/ language.+-}++module Text.Numerals.Languages.German (+ -- * Num to word algorithm+ german+ -- * Convert to ordinal+ , ordinize'+ -- * Constant words+ , negativeWord', zeroWord', oneWord'+ -- * Names for numbers+ , lowWords', midWords', highWords'+ -- * Merge function+ , merge'+ ) where++import Data.Bool(bool)+import Data.Text(Text, isSuffixOf, toLower, toTitle)+import Data.Vector(Vector)++import Text.Numerals.Algorithm(HighNumberAlgorithm(LongScale), NumeralsAlgorithm, numeralsAlgorithm, valueSplit')+import Text.Numerals.Algorithm.Template(ordinizeFromDict)+import Text.Numerals.Class(FreeMergerFunction)+import Text.Numerals.Internal(_mergeWith, _mergeWithSpace, _million)+import Text.RE.TDFA.Text(RE, SearchReplace, (*=~/), ed)++$(pure (ordinizeFromDict "_ordinize'" [+ ("eins", "ers")+ , ("drei", "drit")+ , ("acht", "ach")+ , ("sieben", "sieb")+ , ("ig", "igs")+ , ("ert", "erts")+ , ("end", "ends")+ , ("ion", "ions")+ , ("nen", "ns")+ , ("rde", "rds")+ , ("rden", "rds")+ ] 'id))++-- | A 'NumeralsAlgorithm' to convert numbers to words in the /German/ language.+german :: NumeralsAlgorithm -- ^ A 'NumeralsAlgorithm' that can be used to convert numbers to different formats.+german = numeralsAlgorithm negativeWord' zeroWord' oneWord' lowWords' midWords' (valueSplit' toTitle highWords') merge' ordinize'++-- | The words used to mark a negative number in the /German/ language.+negativeWord' :: Text+negativeWord' = "minus"++-- | The word used for the number /zero/ in the /German/ language.+zeroWord' :: Text+zeroWord' = "null"++-- | The word used for the number /one/ in the /German/ language.+oneWord' :: Text+oneWord' = "eins"++-- | A 'Vector' that contains the word used for the numbers /two/ to /twenty/ in the /German/ language.+lowWords' :: Vector Text+lowWords' = [+ "zwei"+ , "drei"+ , "vier"+ , "fünf"+ , "sechs"+ , "sieben"+ , "acht"+ , "neun"+ , "zehn"+ , "elf"+ , "zwölf"+ , "dreizehn"+ , "vierzehn"+ , "fünfzehn"+ , "sechzehn"+ , "siebzehn"+ , "achtzehn"+ , "neunzehn"+ , "zwanzig"+ ]++-- | A list of 2-tuples that contains the names of values between /thirty/ and+-- /thousand/ in the /German/ language.+midWords' :: [(Integer, Text)]+midWords' = [+ (1000, "tausend")+ , (100, "hundert")+ , (90, "neunzig")+ , (80, "achtzig")+ , (70, "siebzig")+ , (60, "sechzig")+ , (50, "fünfzig")+ , (40, "vierzig")+ , (30, "dreißig")+ ]++-- | A merge function that is used to combine the names of words together to+-- larger words, according to the /German/ grammar rules.+merge' :: FreeMergerFunction+merge' 1 100 = const ("ein" <>)+merge' 1 1000 = const ("ein" <>)+merge' 1 r | r < _million = const id+merge' 1 r = const (_merge' 1 r "eine")+merge' l r = _merge' l r++_pluralize :: Text -> Text+_pluralize t+ | "e" `isSuffixOf` t = t <> "n"+ | otherwise = t <> "en"++_merge' :: FreeMergerFunction+_merge' l r+ | r > l && r >= _million = (. bool id _pluralize (l > 1)) . _mergeWithSpace+ | r > l = (<>)+_merge' l 1 | 10 < l && l < 100 = const . ("einund" <> )+_merge' l r+ | r < 10 && 10 < l && l < 100 = flip (_mergeWith "und")+ | l >= _million = _mergeWithSpace+ | otherwise = (<>)++_ordinalSuffixRe :: SearchReplace RE Text+_ordinalSuffixRe = [ed|(eine)? ([a-z]+(illion|illiard)ste)$///${2}|]++-- | A function that converts a number in words in /cardinal/ form to /ordinal/+-- form according to the /German/ language rules.+ordinize' :: Text -> Text+ordinize' = postprocess . (<> "te") . _ordinize' . toLower+ where postprocess "eintausendste" = "tausendste"+ postprocess "einhundertste" = "hundertste"+ postprocess t = t *=~/ _ordinalSuffixRe++-- | An algorithm to obtain the names of /large/ numbers (one million or larger)+-- in /German/. German uses a /long scale/ with the @illion@ and @illiard@+-- suffixes.+highWords' :: HighNumberAlgorithm+highWords' = LongScale "illion" "illiard"
src/Text/Numerals/Prefix.hs view
@@ -37,11 +37,31 @@ , "tredec" , "quattuordec" , "quindec"- , "sexdec"- , "septended"+ , "sedec"+ , "septendec" , "octodec"- , "novemdec"+ , "novendec" , "vigint"+ , "unvigint"+ , "duovigint"+ , "tresvigint"+ , "quattuorvigint"+ , "quinvigint"+ , "sesvigint"+ , "septemvigint"+ , "octovigint"+ , "novemvigint"+ , "trigint"+ , "untrigint"+ , "duotrigint"+ , "trestrigint"+ , "quattuortrigint"+ , "quintrigint"+ , "sestrigint"+ , "septentrigint"+ , "octotrigint"+ , "noventrigint"+ , "quadragint" ] -- | The /Latin/ prefixes in a 'Vector' for /O(1)/ lookup.
test/Text/Numerals/Languages/DutchSpec.hs view
@@ -314,6 +314,28 @@ , (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")+ , (1000, "duizend")+ , (10000, "tienduizend")+ , (100000, "honderdduizend")+ , (1000000, "een miljoen")+ , (10000000, "tien miljoen")+ , (100000000, "honderd miljoen")+ , (1000000000, "een miljard")+ , (10000000000, "tien miljard")+ , (100000000000, "honderd miljard")+ , (1000000000000, "een biljoen")+ , (10000000000000, "tien biljoen")+ , (100000000000000, "honderd biljoen")+ , (1000000000000000, "een biljard")+ , (10000000000000000, "tien biljard")+ , (100000000000000000, "honderd biljard")+ , (1000000000000000000, "een triljoen")+ , (10000000000000000000, "tien triljoen")+ , (100000000000000000000, "honderd triljoen")+ , (1000000000000000000000, "een triljard")+ , (10000000000000000000000, "tien triljard")+ , (100000000000000000000000, "honderd triljard")+ , (1000000000000000000000000, "een quadriljoen") ] ordinals :: [(Integer, Text)]@@ -619,4 +641,26 @@ , (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")+ , (1000, "duizendste")+ , (10000, "tienduizendste")+ , (100000, "honderdduizendste")+ , (1000000, "een miljoenste")+ , (10000000, "tien miljoenste")+ , (100000000, "honderd miljoenste")+ , (1000000000, "een miljardste")+ , (10000000000, "tien miljardste")+ , (100000000000, "honderd miljardste")+ , (1000000000000, "een biljoenste")+ , (10000000000000, "tien biljoenste")+ , (100000000000000, "honderd biljoenste")+ , (1000000000000000, "een biljardste")+ , (10000000000000000, "tien biljardste")+ , (100000000000000000, "honderd biljardste")+ , (1000000000000000000, "een triljoenste")+ , (10000000000000000000, "tien triljoenste")+ , (100000000000000000000, "honderd triljoenste")+ , (1000000000000000000000, "een triljardste")+ , (10000000000000000000000, "tien triljardste")+ , (100000000000000000000000, "honderd triljardste")+ , (1000000000000000000000000, "een quadriljoenste") ]
test/Text/Numerals/Languages/EnglishSpec.hs view
@@ -314,6 +314,28 @@ , (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")+ , (1000, "one thousand")+ , (10000, "ten thousand")+ , (100000, "one hundred thousand")+ , (1000000, "one million")+ , (10000000, "ten million")+ , (100000000, "one hundred million")+ , (1000000000, "one billion")+ , (10000000000, "ten billion")+ , (100000000000, "one hundred billion")+ , (1000000000000, "one trillion")+ , (10000000000000, "ten trillion")+ , (100000000000000, "one hundred trillion")+ , (1000000000000000, "one quadrillion")+ , (10000000000000000, "ten quadrillion")+ , (100000000000000000, "one hundred quadrillion")+ , (1000000000000000000, "one quintillion")+ , (10000000000000000000, "ten quintillion")+ , (100000000000000000000, "one hundred quintillion")+ , (1000000000000000000000, "one sextillion")+ , (10000000000000000000000, "ten sextillion")+ , (100000000000000000000000, "one hundred sextillion")+ , (1000000000000000000000000, "one septillion") ] ordinals :: [(Integer, Text)]@@ -619,4 +641,26 @@ , (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")+ , (1000, "one thousandth")+ , (10000, "ten thousandth")+ , (100000, "one hundred thousandth")+ , (1000000, "one millionth")+ , (10000000, "ten millionth")+ , (100000000, "one hundred millionth")+ , (1000000000, "one billionth")+ , (10000000000, "ten billionth")+ , (100000000000, "one hundred billionth")+ , (1000000000000, "one trillionth")+ , (10000000000000, "ten trillionth")+ , (100000000000000, "one hundred trillionth")+ , (1000000000000000, "one quadrillionth")+ , (10000000000000000, "ten quadrillionth")+ , (100000000000000000, "one hundred quadrillionth")+ , (1000000000000000000, "one quintillionth")+ , (10000000000000000000, "ten quintillionth")+ , (100000000000000000000, "one hundred quintillionth")+ , (1000000000000000000000, "one sextillionth")+ , (10000000000000000000000, "ten sextillionth")+ , (100000000000000000000000, "one hundred sextillionth")+ , (1000000000000000000000000, "one septillionth") ]
test/Text/Numerals/Languages/FrenchSpec.hs view
@@ -314,6 +314,28 @@ , (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")+ , (1000, "mille")+ , (10000, "dix mille")+ , (100000, "cent mille")+ , (1000000, "un million")+ , (10000000, "dix millions")+ , (100000000, "cent millions")+ , (1000000000, "un milliard")+ , (10000000000, "dix milliards")+ , (100000000000, "cent milliards")+ , (1000000000000, "un billion")+ , (10000000000000, "dix billions")+ , (100000000000000, "cent billions")+ , (1000000000000000, "un billiard")+ , (10000000000000000, "dix billiards")+ , (100000000000000000, "cent billiards")+ , (1000000000000000000, "un trillion")+ , (10000000000000000000, "dix trillions")+ , (100000000000000000000, "cent trillions")+ , (1000000000000000000000, "un trilliard")+ , (10000000000000000000000, "dix trilliards")+ , (100000000000000000000000, "cent trilliards")+ , (1000000000000000000000000, "un quadrillion") ] ordinals :: [(Integer, Text)]@@ -619,4 +641,26 @@ , (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")+ , (1000, "millième")+ , (10000, "dix millième")+ , (100000, "cent millième")+ , (1000000, "un millionième")+ , (10000000, "dix millionsième")+ , (100000000, "cent millionsième")+ , (1000000000, "un milliardième")+ , (10000000000, "dix milliardsième")+ , (100000000000, "cent milliardsième")+ , (1000000000000, "un billionième")+ , (10000000000000, "dix billionsième")+ , (100000000000000, "cent billionsième")+ , (1000000000000000, "un billiardième")+ , (10000000000000000, "dix billiardsième")+ , (100000000000000000, "cent billiardsième")+ , (1000000000000000000, "un trillionième")+ , (10000000000000000000, "dix trillionsième")+ , (100000000000000000000, "cent trillionsième")+ , (1000000000000000000000, "un trilliardième")+ , (10000000000000000000000, "dix trilliardsième")+ , (100000000000000000000000, "cent trilliardsième")+ , (1000000000000000000000000, "un quadrillionième") ]
+ test/Text/Numerals/Languages/GermanSpec.hs view
@@ -0,0 +1,666 @@+module Text.Numerals.Languages.GermanSpec (+ spec+ ) where++import Data.Text(Text)++import Test.Hspec(Spec)+import Text.Numerals.Languages.German(german)+import Text.Numerals.LanguageTest(testLanguage)++spec :: Spec+spec = testLanguage "German" german cardinals ordinals++cardinals :: [(Integer, Text)]+cardinals = [+ (0, "null")+ , (1, "eins")+ , (2, "zwei")+ , (3, "drei")+ , (4, "vier")+ , (5, "fünf")+ , (6, "sechs")+ , (7, "sieben")+ , (8, "acht")+ , (9, "neun")+ , (10, "zehn")+ , (11, "elf")+ , (12, "zwölf")+ , (13, "dreizehn")+ , (14, "vierzehn")+ , (15, "fünfzehn")+ , (16, "sechzehn")+ , (17, "siebzehn")+ , (18, "achtzehn")+ , (19, "neunzehn")+ , (20, "zwanzig")+ , (21, "einundzwanzig")+ , (22, "zweiundzwanzig")+ , (23, "dreiundzwanzig")+ , (24, "vierundzwanzig")+ , (25, "fünfundzwanzig")+ , (26, "sechsundzwanzig")+ , (27, "siebenundzwanzig")+ , (28, "achtundzwanzig")+ , (29, "neunundzwanzig")+ , (30, "dreißig")+ , (31, "einunddreißig")+ , (32, "zweiunddreißig")+ , (33, "dreiunddreißig")+ , (34, "vierunddreißig")+ , (35, "fünfunddreißig")+ , (36, "sechsunddreißig")+ , (37, "siebenunddreißig")+ , (38, "achtunddreißig")+ , (39, "neununddreißig")+ , (40, "vierzig")+ , (41, "einundvierzig")+ , (42, "zweiundvierzig")+ , (43, "dreiundvierzig")+ , (44, "vierundvierzig")+ , (45, "fünfundvierzig")+ , (46, "sechsundvierzig")+ , (47, "siebenundvierzig")+ , (48, "achtundvierzig")+ , (49, "neunundvierzig")+ , (50, "fünfzig")+ , (51, "einundfünfzig")+ , (52, "zweiundfünfzig")+ , (53, "dreiundfünfzig")+ , (54, "vierundfünfzig")+ , (55, "fünfundfünfzig")+ , (56, "sechsundfünfzig")+ , (57, "siebenundfünfzig")+ , (58, "achtundfünfzig")+ , (59, "neunundfünfzig")+ , (60, "sechzig")+ , (61, "einundsechzig")+ , (62, "zweiundsechzig")+ , (63, "dreiundsechzig")+ , (64, "vierundsechzig")+ , (65, "fünfundsechzig")+ , (66, "sechsundsechzig")+ , (67, "siebenundsechzig")+ , (68, "achtundsechzig")+ , (69, "neunundsechzig")+ , (70, "siebzig")+ , (71, "einundsiebzig")+ , (72, "zweiundsiebzig")+ , (73, "dreiundsiebzig")+ , (74, "vierundsiebzig")+ , (75, "fünfundsiebzig")+ , (76, "sechsundsiebzig")+ , (77, "siebenundsiebzig")+ , (78, "achtundsiebzig")+ , (79, "neunundsiebzig")+ , (80, "achtzig")+ , (81, "einundachtzig")+ , (82, "zweiundachtzig")+ , (83, "dreiundachtzig")+ , (84, "vierundachtzig")+ , (85, "fünfundachtzig")+ , (86, "sechsundachtzig")+ , (87, "siebenundachtzig")+ , (88, "achtundachtzig")+ , (89, "neunundachtzig")+ , (90, "neunzig")+ , (91, "einundneunzig")+ , (92, "zweiundneunzig")+ , (93, "dreiundneunzig")+ , (94, "vierundneunzig")+ , (95, "fünfundneunzig")+ , (96, "sechsundneunzig")+ , (97, "siebenundneunzig")+ , (98, "achtundneunzig")+ , (99, "neunundneunzig")+ , (100, "einhundert")+ , (101, "einhunderteins")+ , (102, "einhundertzwei")+ , (103, "einhundertdrei")+ , (104, "einhundertvier")+ , (105, "einhundertfünf")+ , (106, "einhundertsechs")+ , (107, "einhundertsieben")+ , (108, "einhundertacht")+ , (109, "einhundertneun")+ , (110, "einhundertzehn")+ , (111, "einhundertelf")+ , (112, "einhundertzwölf")+ , (113, "einhundertdreizehn")+ , (114, "einhundertvierzehn")+ , (115, "einhundertfünfzehn")+ , (116, "einhundertsechzehn")+ , (117, "einhundertsiebzehn")+ , (118, "einhundertachtzehn")+ , (119, "einhundertneunzehn")+ , (120, "einhundertzwanzig")+ , (121, "einhunderteinundzwanzig")+ , (122, "einhundertzweiundzwanzig")+ , (123, "einhundertdreiundzwanzig")+ , (124, "einhundertvierundzwanzig")+ , (125, "einhundertfünfundzwanzig")+ , (126, "einhundertsechsundzwanzig")+ , (127, "einhundertsiebenundzwanzig")+ , (128, "einhundertachtundzwanzig")+ , (129, "einhundertneunundzwanzig")+ , (130, "einhundertdreißig")+ , (131, "einhunderteinunddreißig")+ , (132, "einhundertzweiunddreißig")+ , (133, "einhundertdreiunddreißig")+ , (134, "einhundertvierunddreißig")+ , (135, "einhundertfünfunddreißig")+ , (136, "einhundertsechsunddreißig")+ , (137, "einhundertsiebenunddreißig")+ , (138, "einhundertachtunddreißig")+ , (139, "einhundertneununddreißig")+ , (140, "einhundertvierzig")+ , (141, "einhunderteinundvierzig")+ , (142, "einhundertzweiundvierzig")+ , (143, "einhundertdreiundvierzig")+ , (144, "einhundertvierundvierzig")+ , (145, "einhundertfünfundvierzig")+ , (146, "einhundertsechsundvierzig")+ , (147, "einhundertsiebenundvierzig")+ , (148, "einhundertachtundvierzig")+ , (149, "einhundertneunundvierzig")+ , (150, "einhundertfünfzig")+ , (151, "einhunderteinundfünfzig")+ , (152, "einhundertzweiundfünfzig")+ , (153, "einhundertdreiundfünfzig")+ , (154, "einhundertvierundfünfzig")+ , (155, "einhundertfünfundfünfzig")+ , (156, "einhundertsechsundfünfzig")+ , (157, "einhundertsiebenundfünfzig")+ , (158, "einhundertachtundfünfzig")+ , (159, "einhundertneunundfünfzig")+ , (160, "einhundertsechzig")+ , (161, "einhunderteinundsechzig")+ , (162, "einhundertzweiundsechzig")+ , (163, "einhundertdreiundsechzig")+ , (164, "einhundertvierundsechzig")+ , (165, "einhundertfünfundsechzig")+ , (166, "einhundertsechsundsechzig")+ , (167, "einhundertsiebenundsechzig")+ , (168, "einhundertachtundsechzig")+ , (169, "einhundertneunundsechzig")+ , (170, "einhundertsiebzig")+ , (171, "einhunderteinundsiebzig")+ , (172, "einhundertzweiundsiebzig")+ , (173, "einhundertdreiundsiebzig")+ , (174, "einhundertvierundsiebzig")+ , (175, "einhundertfünfundsiebzig")+ , (176, "einhundertsechsundsiebzig")+ , (177, "einhundertsiebenundsiebzig")+ , (178, "einhundertachtundsiebzig")+ , (179, "einhundertneunundsiebzig")+ , (180, "einhundertachtzig")+ , (181, "einhunderteinundachtzig")+ , (182, "einhundertzweiundachtzig")+ , (183, "einhundertdreiundachtzig")+ , (184, "einhundertvierundachtzig")+ , (185, "einhundertfünfundachtzig")+ , (186, "einhundertsechsundachtzig")+ , (187, "einhundertsiebenundachtzig")+ , (188, "einhundertachtundachtzig")+ , (189, "einhundertneunundachtzig")+ , (190, "einhundertneunzig")+ , (191, "einhunderteinundneunzig")+ , (192, "einhundertzweiundneunzig")+ , (193, "einhundertdreiundneunzig")+ , (194, "einhundertvierundneunzig")+ , (195, "einhundertfünfundneunzig")+ , (196, "einhundertsechsundneunzig")+ , (197, "einhundertsiebenundneunzig")+ , (198, "einhundertachtundneunzig")+ , (199, "einhundertneunundneunzig")+ , (200, "zweihundert")+ , (233, "zweihundertdreiunddreißig")+ , (377, "dreihundertsiebenundsiebzig")+ , (610, "sechshundertzehn")+ , (987, "neunhundertsiebenundachtzig")+ , (1597, "eintausendfünfhundertsiebenundneunzig")+ , (2584, "zweitausendfünfhundertvierundachtzig")+ , (4181, "viertausendeinhunderteinundachtzig")+ , (6765, "sechstausendsiebenhundertfünfundsechzig")+ , (10946, "zehntausendneunhundertsechsundvierzig")+ , (17711, "siebzehntausendsiebenhundertelf")+ , (28657, "achtundzwanzigtausendsechshundertsiebenundfünfzig")+ , (46368, "sechsundvierzigtausenddreihundertachtundsechzig")+ , (75025, "fünfundsiebzigtausendfünfundzwanzig")+ , (121393, "einhunderteinundzwanzigtausenddreihundertdreiundneunzig")+ , (196418, "einhundertsechsundneunzigtausendvierhundertachtzehn")+ , (317811, "dreihundertsiebzehntausendachthundertelf")+ , (514229, "fünfhundertvierzehntausendzweihundertneunundzwanzig")+ , (832040, "achthundertzweiunddreißigtausendvierzig")+ , (1346269, "eine Million dreihundertsechsundvierzigtausendzweihundertneunundsechzig")+ , (2178309, "zwei Millionen einhundertachtundsiebzigtausenddreihundertneun")+ , (3524578, "drei Millionen fünfhundertvierundzwanzigtausendfünfhundertachtundsiebzig")+ , (5702887, "fünf Millionen siebenhundertzweitausendachthundertsiebenundachtzig")+ , (9227465, "neun Millionen zweihundertsiebenundzwanzigtausendvierhundertfünfundsechzig")+ , (14930352, "vierzehn Millionen neunhundertdreißigtausenddreihundertzweiundfünfzig")+ , (24157817, "vierundzwanzig Millionen einhundertsiebenundfünfzigtausendachthundertsiebzehn")+ , (39088169, "neununddreißig Millionen achtundachtzigtausendeinhundertneunundsechzig")+ , (63245986, "dreiundsechzig Millionen zweihundertfünfundvierzigtausendneunhundertsechsundachtzig")+ , (102334155, "einhundertzwei Millionen dreihundertvierunddreißigtausendeinhundertfünfundfünfzig")+ , (165580141, "einhundertfünfundsechzig Millionen fünfhundertachtzigtausendeinhunderteinundvierzig")+ , (267914296, "zweihundertsiebenundsechzig Millionen neunhundertvierzehntausendzweihundertsechsundneunzig")+ , (433494437, "vierhundertdreiunddreißig Millionen vierhundertvierundneunzigtausendvierhundertsiebenunddreißig")+ , (701408733, "siebenhunderteins Millionen vierhundertachttausendsiebenhundertdreiunddreißig")+ , (1134903170, "eine Milliard einhundertvierunddreißig Millionen neunhundertdreitausendeinhundertsiebzig")+ , (1836311903, "eine Milliard achthundertsechsunddreißig Millionen dreihundertelftausendneunhundertdrei")+ , (2971215073, "zwei Milliarden neunhunderteinundsiebzig Millionen zweihundertfünfzehntausenddreiundsiebzig")+ , (4807526976, "vier Milliarden achthundertsieben Millionen fünfhundertsechsundzwanzigtausendneunhundertsechsundsiebzig")+ , (7778742049, "sieben Milliarden siebenhundertachtundsiebzig Millionen siebenhundertzweiundvierzigtausendneunundvierzig")+ , (12586269025, "zwölf Milliarden fünfhundertsechsundachtzig Millionen zweihundertneunundsechzigtausendfünfundzwanzig")+ , (20365011074, "zwanzig Milliarden dreihundertfünfundsechzig Millionen elftausendvierundsiebzig")+ , (32951280099, "zweiunddreißig Milliarden neunhunderteinundfünfzig Millionen zweihundertachtzigtausendneunundneunzig")+ , (53316291173, "dreiundfünfzig Milliarden dreihundertsechzehn Millionen zweihunderteinundneunzigtausendeinhundertdreiundsiebzig")+ , (86267571272, "sechsundachtzig Milliarden zweihundertsiebenundsechzig Millionen fünfhunderteinundsiebzigtausendzweihundertzweiundsiebzig")+ , (139583862445, "einhundertneununddreißig Milliarden fünfhundertdreiundachtzig Millionen achthundertzweiundsechzigtausendvierhundertfünfundvierzig")+ , (225851433717, "zweihundertfünfundzwanzig Milliarden achthunderteinundfünfzig Millionen vierhundertdreiunddreißigtausendsiebenhundertsiebzehn")+ , (365435296162, "dreihundertfünfundsechzig Milliarden vierhundertfünfunddreißig Millionen zweihundertsechsundneunzigtausendeinhundertzweiundsechzig")+ , (591286729879, "fünfhunderteinundneunzig Milliarden zweihundertsechsundachtzig Millionen siebenhundertneunundzwanzigtausendachthundertneunundsiebzig")+ , (956722026041, "neunhundertsechsundfünfzig Milliarden siebenhundertzweiundzwanzig Millionen sechsundzwanzigtausendeinundvierzig")+ , (1548008755920, "eine Billion fünfhundertachtundvierzig Milliarden acht Millionen siebenhundertfünfundfünfzigtausendneunhundertzwanzig")+ , (2504730781961, "zwei Billionen fünfhundertvier Milliarden siebenhundertdreißig Millionen siebenhunderteinundachtzigtausendneunhunderteinundsechzig")+ , (4052739537881, "vier Billionen zweiundfünfzig Milliarden siebenhundertneununddreißig Millionen fünfhundertsiebenunddreißigtausendachthunderteinundachtzig")+ , (6557470319842, "sechs Billionen fünfhundertsiebenundfünfzig Milliarden vierhundertsiebzig Millionen dreihundertneunzehntausendachthundertzweiundvierzig")+ , (10610209857723, "zehn Billionen sechshundertzehn Milliarden zweihundertneun Millionen achthundertsiebenundfünfzigtausendsiebenhundertdreiundzwanzig")+ , (17167680177565, "siebzehn Billionen einhundertsiebenundsechzig Milliarden sechshundertachtzig Millionen einhundertsiebenundsiebzigtausendfünfhundertfünfundsechzig")+ , (27777890035288, "siebenundzwanzig Billionen siebenhundertsiebenundsiebzig Milliarden achthundertneunzig Millionen fünfunddreißigtausendzweihundertachtundachtzig")+ , (44945570212853, "vierundvierzig Billionen neunhundertfünfundvierzig Milliarden fünfhundertsiebzig Millionen zweihundertzwölftausendachthundertdreiundfünfzig")+ , (72723460248141, "zweiundsiebzig Billionen siebenhundertdreiundzwanzig Milliarden vierhundertsechzig Millionen zweihundertachtundvierzigtausendeinhunderteinundvierzig")+ , (117669030460994, "einhundertsiebzehn Billionen sechshundertneunundsechzig Milliarden dreißig Millionen vierhundertsechzigtausendneunhundertvierundneunzig")+ , (190392490709135, "einhundertneunzig Billionen dreihundertzweiundneunzig Milliarden vierhundertneunzig Millionen siebenhundertneuntausendeinhundertfünfunddreißig")+ , (308061521170129, "dreihundertacht Billionen einundsechzig Milliarden fünfhunderteinundzwanzig Millionen einhundertsiebzigtausendeinhundertneunundzwanzig")+ , (498454011879264, "vierhundertachtundneunzig Billionen vierhundertvierundfünfzig Milliarden elf Millionen achthundertneunundsiebzigtausendzweihundertvierundsechzig")+ , (806515533049393, "achthundertsechs Billionen fünfhundertfünfzehn Milliarden fünfhundertdreiunddreißig Millionen neunundvierzigtausenddreihundertdreiundneunzig")+ , (1304969544928657, "eine Billiard dreihundertvier Billionen neunhundertneunundsechzig Milliarden fünfhundertvierundvierzig Millionen neunhundertachtundzwanzigtausendsechshundertsiebenundfünfzig")+ , (2111485077978050, "zwei Billiarden einhundertelf Billionen vierhundertfünfundachtzig Milliarden siebenundsiebzig Millionen neunhundertachtundsiebzigtausendfünfzig")+ , (3416454622906707, "drei Billiarden vierhundertsechzehn Billionen vierhundertvierundfünfzig Milliarden sechshundertzweiundzwanzig Millionen neunhundertsechstausendsiebenhundertsieben")+ , (5527939700884757, "fünf Billiarden fünfhundertsiebenundzwanzig Billionen neunhundertneununddreißig Milliarden siebenhundert Millionen achthundertvierundachtzigtausendsiebenhundertsiebenundfünfzig")+ , (8944394323791464, "acht Billiarden neunhundertvierundvierzig Billionen dreihundertvierundneunzig Milliarden dreihundertdreiundzwanzig Millionen siebenhunderteinundneunzigtausendvierhundertvierundsechzig")+ , (14472334024676221, "vierzehn Billiarden vierhundertzweiundsiebzig Billionen dreihundertvierunddreißig Milliarden vierundzwanzig Millionen sechshundertsechsundsiebzigtausendzweihunderteinundzwanzig")+ , (23416728348467685, "dreiundzwanzig Billiarden vierhundertsechzehn Billionen siebenhundertachtundzwanzig Milliarden dreihundertachtundvierzig Millionen vierhundertsiebenundsechzigtausendsechshundertfünfundachtzig")+ , (37889062373143906, "siebenunddreißig Billiarden achthundertneunundachtzig Billionen zweiundsechzig Milliarden dreihundertdreiundsiebzig Millionen einhundertdreiundvierzigtausendneunhundertsechs")+ , (61305790721611591, "einundsechzig Billiarden dreihundertfünf Billionen siebenhundertneunzig Milliarden siebenhunderteinundzwanzig Millionen sechshundertelftausendfünfhunderteinundneunzig")+ , (99194853094755497, "neunundneunzig Billiarden einhundertvierundneunzig Billionen achthundertdreiundfünfzig Milliarden vierundneunzig Millionen siebenhundertfünfundfünfzigtausendvierhundertsiebenundneunzig")+ , (160500643816367088, "einhundertsechzig Billiarden fünfhundert Billionen sechshundertdreiundvierzig Milliarden achthundertsechzehn Millionen dreihundertsiebenundsechzigtausendachtundachtzig")+ , (259695496911122585, "zweihundertneunundfünfzig Billiarden sechshundertfünfundneunzig Billionen vierhundertsechsundneunzig Milliarden neunhundertelf Millionen einhundertzweiundzwanzigtausendfünfhundertfünfundachtzig")+ , (420196140727489673, "vierhundertzwanzig Billiarden einhundertsechsundneunzig Billionen einhundertvierzig Milliarden siebenhundertsiebenundzwanzig Millionen vierhundertneunundachtzigtausendsechshundertdreiundsiebzig")+ , (679891637638612258, "sechshundertneunundsiebzig Billiarden achthunderteinundneunzig Billionen sechshundertsiebenunddreißig Milliarden sechshundertachtunddreißig Millionen sechshundertzwölftausendzweihundertachtundfünfzig")+ , (1100087778366101931, "eine Trillion einhundert Billiarden siebenundachtzig Billionen siebenhundertachtundsiebzig Milliarden dreihundertsechsundsechzig Millionen einhunderteinstausendneunhunderteinunddreißig")+ , (1779979416004714189, "eine Trillion siebenhundertneunundsiebzig Billiarden neunhundertneunundsiebzig Billionen vierhundertsechzehn Milliarden vier Millionen siebenhundertvierzehntausendeinhundertneunundachtzig")+ , (2880067194370816120, "zwei Trillionen achthundertachtzig Billiarden siebenundsechzig Billionen einhundertvierundneunzig Milliarden dreihundertsiebzig Millionen achthundertsechzehntausendeinhundertzwanzig")+ , (4660046610375530309, "vier Trillionen sechshundertsechzig Billiarden sechsundvierzig Billionen sechshundertzehn Milliarden dreihundertfünfundsiebzig Millionen fünfhundertdreißigtausenddreihundertneun")+ , (7540113804746346429, "sieben Trillionen fünfhundertvierzig Billiarden einhundertdreizehn Billionen achthundertvier Milliarden siebenhundertsechsundvierzig Millionen dreihundertsechsundvierzigtausendvierhundertneunundzwanzig")+ , (12200160415121876738, "zwölf Trillionen zweihundert Billiarden einhundertsechzig Billionen vierhundertfünfzehn Milliarden einhunderteinundzwanzig Millionen achthundertsechsundsiebzigtausendsiebenhundertachtunddreißig")+ , (19740274219868223167, "neunzehn Trillionen siebenhundertvierzig Billiarden zweihundertvierundsiebzig Billionen zweihundertneunzehn Milliarden achthundertachtundsechzig Millionen zweihundertdreiundzwanzigtausendeinhundertsiebenundsechzig")+ , (31940434634990099905, "einunddreißig Trillionen neunhundertvierzig Billiarden vierhundertvierunddreißig Billionen sechshundertvierunddreißig Milliarden neunhundertneunzig Millionen neunundneunzigtausendneunhundertfünf")+ , (51680708854858323072, "einundfünfzig Trillionen sechshundertachtzig Billiarden siebenhundertacht Billionen achthundertvierundfünfzig Milliarden achthundertachtundfünfzig Millionen dreihundertdreiundzwanzigtausendzweiundsiebzig")+ , (83621143489848422977, "dreiundachtzig Trillionen sechshunderteinundzwanzig Billiarden einhundertdreiundvierzig Billionen vierhundertneunundachtzig Milliarden achthundertachtundvierzig Millionen vierhundertzweiundzwanzigtausendneunhundertsiebenundsiebzig")+ , (135301852344706746049, "einhundertfünfunddreißig Trillionen dreihunderteins Billiarden achthundertzweiundfünfzig Billionen dreihundertvierundvierzig Milliarden siebenhundertsechs Millionen siebenhundertsechsundvierzigtausendneunundvierzig")+ , (218922995834555169026, "zweihundertachtzehn Trillionen neunhundertzweiundzwanzig Billiarden neunhundertfünfundneunzig Billionen achthundertvierunddreißig Milliarden fünfhundertfünfundfünfzig Millionen einhundertneunundsechzigtausendsechsundzwanzig")+ , (354224848179261915075, "dreihundertvierundfünfzig Trillionen zweihundertvierundzwanzig Billiarden achthundertachtundvierzig Billionen einhundertneunundsiebzig Milliarden zweihunderteinundsechzig Millionen neunhundertfünfzehntausendfünfundsiebzig")+ , (573147844013817084101, "fünfhundertdreiundsiebzig Trillionen einhundertsiebenundvierzig Billiarden achthundertvierundvierzig Billionen dreizehn Milliarden achthundertsiebzehn Millionen vierundachtzigtausendeinhunderteins")+ , (927372692193078999176, "neunhundertsiebenundzwanzig Trillionen dreihundertzweiundsiebzig Billiarden sechshundertzweiundneunzig Billionen einhundertdreiundneunzig Milliarden achtundsiebzig Millionen neunhundertneunundneunzigtausendeinhundertsechsundsiebzig")+ , (1500520536206896083277, "eine Trilliard fünfhundert Trillionen fünfhundertzwanzig Billiarden fünfhundertsechsunddreißig Billionen zweihundertsechs Milliarden achthundertsechsundneunzig Millionen dreiundachtzigtausendzweihundertsiebenundsiebzig")+ , (2427893228399975082453, "zwei Trilliarden vierhundertsiebenundzwanzig Trillionen achthundertdreiundneunzig Billiarden zweihundertachtundzwanzig Billionen dreihundertneunundneunzig Milliarden neunhundertfünfundsiebzig Millionen zweiundachtzigtausendvierhundertdreiundfünfzig")+ , (3928413764606871165730, "drei Trilliarden neunhundertachtundzwanzig Trillionen vierhundertdreizehn Billiarden siebenhundertvierundsechzig Billionen sechshundertsechs Milliarden achthunderteinundsiebzig Millionen einhundertfünfundsechzigtausendsiebenhundertdreißig")+ , (6356306993006846248183, "sechs Trilliarden dreihundertsechsundfünfzig Trillionen dreihundertsechs Billiarden neunhundertdreiundneunzig Billionen sechs Milliarden achthundertsechsundvierzig Millionen zweihundertachtundvierzigtausendeinhundertdreiundachtzig")+ , (10284720757613717413913, "zehn Trilliarden zweihundertvierundachtzig Trillionen siebenhundertzwanzig Billiarden siebenhundertsiebenundfünfzig Billionen sechshundertdreizehn Milliarden siebenhundertsiebzehn Millionen vierhundertdreizehntausendneunhundertdreizehn")+ , (16641027750620563662096, "sechzehn Trilliarden sechshunderteinundvierzig Trillionen siebenundzwanzig Billiarden siebenhundertfünfzig Billionen sechshundertzwanzig Milliarden fünfhundertdreiundsechzig Millionen sechshundertzweiundsechzigtausendsechsundneunzig")+ , (26925748508234281076009, "sechsundzwanzig Trilliarden neunhundertfünfundzwanzig Trillionen siebenhundertachtundvierzig Billiarden fünfhundertacht Billionen zweihundertvierunddreißig Milliarden zweihunderteinundachtzig Millionen sechsundsiebzigtausendneun")+ , (43566776258854844738105, "dreiundvierzig Trilliarden fünfhundertsechsundsechzig Trillionen siebenhundertsechsundsiebzig Billiarden zweihundertachtundfünfzig Billionen achthundertvierundfünfzig Milliarden achthundertvierundvierzig Millionen siebenhundertachtunddreißigtausendeinhundertfünf")+ , (70492524767089125814114, "siebzig Trilliarden vierhundertzweiundneunzig Trillionen fünfhundertvierundzwanzig Billiarden siebenhundertsiebenundsechzig Billionen neunundachtzig Milliarden einhundertfünfundzwanzig Millionen achthundertvierzehntausendeinhundertvierzehn")+ , (114059301025943970552219, "einhundertvierzehn Trilliarden neunundfünfzig Trillionen dreihunderteins Billiarden fünfundzwanzig Billionen neunhundertdreiundvierzig Milliarden neunhundertsiebzig Millionen fünfhundertzweiundfünfzigtausendzweihundertneunzehn")+ , (1000, "eintausend")+ , (10000, "zehntausend")+ , (100000, "einhunderttausend")+ , (1000000, "eine Million")+ , (10000000, "zehn Millionen")+ , (100000000, "einhundert Millionen")+ , (1000000000, "eine Milliard")+ , (10000000000, "zehn Milliarden")+ , (100000000000, "einhundert Milliarden")+ , (1000000000000, "eine Billion")+ , (10000000000000, "zehn Billionen")+ , (100000000000000, "einhundert Billionen")+ , (1000000000000000, "eine Billiard")+ , (10000000000000000, "zehn Billiarden")+ , (100000000000000000, "einhundert Billiarden")+ , (1000000000000000000, "eine Trillion")+ , (10000000000000000000, "zehn Trillionen")+ , (100000000000000000000, "einhundert Trillionen")+ , (1000000000000000000000, "eine Trilliard")+ , (10000000000000000000000, "zehn Trilliarden")+ , (100000000000000000000000, "einhundert Trilliarden")+ , (1000000000000000000000000, "eine Quadrillion")+ ]++ordinals :: [(Integer, Text)]+ordinals = [+ (0, "nullte")+ , (1, "erste")+ , (2, "zweite")+ , (3, "dritte")+ , (4, "vierte")+ , (5, "fünfte")+ , (6, "sechste")+ , (7, "siebte")+ , (8, "achte")+ , (9, "neunte")+ , (10, "zehnte")+ , (11, "elfte")+ , (12, "zwölfte")+ , (13, "dreizehnte")+ , (14, "vierzehnte")+ , (15, "fünfzehnte")+ , (16, "sechzehnte")+ , (17, "siebzehnte")+ , (18, "achtzehnte")+ , (19, "neunzehnte")+ , (20, "zwanzigste")+ , (21, "einundzwanzigste")+ , (22, "zweiundzwanzigste")+ , (23, "dreiundzwanzigste")+ , (24, "vierundzwanzigste")+ , (25, "fünfundzwanzigste")+ , (26, "sechsundzwanzigste")+ , (27, "siebenundzwanzigste")+ , (28, "achtundzwanzigste")+ , (29, "neunundzwanzigste")+ , (30, "dreißigste")+ , (31, "einunddreißigste")+ , (32, "zweiunddreißigste")+ , (33, "dreiunddreißigste")+ , (34, "vierunddreißigste")+ , (35, "fünfunddreißigste")+ , (36, "sechsunddreißigste")+ , (37, "siebenunddreißigste")+ , (38, "achtunddreißigste")+ , (39, "neununddreißigste")+ , (40, "vierzigste")+ , (41, "einundvierzigste")+ , (42, "zweiundvierzigste")+ , (43, "dreiundvierzigste")+ , (44, "vierundvierzigste")+ , (45, "fünfundvierzigste")+ , (46, "sechsundvierzigste")+ , (47, "siebenundvierzigste")+ , (48, "achtundvierzigste")+ , (49, "neunundvierzigste")+ , (50, "fünfzigste")+ , (51, "einundfünfzigste")+ , (52, "zweiundfünfzigste")+ , (53, "dreiundfünfzigste")+ , (54, "vierundfünfzigste")+ , (55, "fünfundfünfzigste")+ , (56, "sechsundfünfzigste")+ , (57, "siebenundfünfzigste")+ , (58, "achtundfünfzigste")+ , (59, "neunundfünfzigste")+ , (60, "sechzigste")+ , (61, "einundsechzigste")+ , (62, "zweiundsechzigste")+ , (63, "dreiundsechzigste")+ , (64, "vierundsechzigste")+ , (65, "fünfundsechzigste")+ , (66, "sechsundsechzigste")+ , (67, "siebenundsechzigste")+ , (68, "achtundsechzigste")+ , (69, "neunundsechzigste")+ , (70, "siebzigste")+ , (71, "einundsiebzigste")+ , (72, "zweiundsiebzigste")+ , (73, "dreiundsiebzigste")+ , (74, "vierundsiebzigste")+ , (75, "fünfundsiebzigste")+ , (76, "sechsundsiebzigste")+ , (77, "siebenundsiebzigste")+ , (78, "achtundsiebzigste")+ , (79, "neunundsiebzigste")+ , (80, "achtzigste")+ , (81, "einundachtzigste")+ , (82, "zweiundachtzigste")+ , (83, "dreiundachtzigste")+ , (84, "vierundachtzigste")+ , (85, "fünfundachtzigste")+ , (86, "sechsundachtzigste")+ , (87, "siebenundachtzigste")+ , (88, "achtundachtzigste")+ , (89, "neunundachtzigste")+ , (90, "neunzigste")+ , (91, "einundneunzigste")+ , (92, "zweiundneunzigste")+ , (93, "dreiundneunzigste")+ , (94, "vierundneunzigste")+ , (95, "fünfundneunzigste")+ , (96, "sechsundneunzigste")+ , (97, "siebenundneunzigste")+ , (98, "achtundneunzigste")+ , (99, "neunundneunzigste")+ , (100, "hundertste")+ , (101, "einhunderterste")+ , (102, "einhundertzweite")+ , (103, "einhundertdritte")+ , (104, "einhundertvierte")+ , (105, "einhundertfünfte")+ , (106, "einhundertsechste")+ , (107, "einhundertsiebte")+ , (108, "einhundertachte")+ , (109, "einhundertneunte")+ , (110, "einhundertzehnte")+ , (111, "einhundertelfte")+ , (112, "einhundertzwölfte")+ , (113, "einhundertdreizehnte")+ , (114, "einhundertvierzehnte")+ , (115, "einhundertfünfzehnte")+ , (116, "einhundertsechzehnte")+ , (117, "einhundertsiebzehnte")+ , (118, "einhundertachtzehnte")+ , (119, "einhundertneunzehnte")+ , (120, "einhundertzwanzigste")+ , (121, "einhunderteinundzwanzigste")+ , (122, "einhundertzweiundzwanzigste")+ , (123, "einhundertdreiundzwanzigste")+ , (124, "einhundertvierundzwanzigste")+ , (125, "einhundertfünfundzwanzigste")+ , (126, "einhundertsechsundzwanzigste")+ , (127, "einhundertsiebenundzwanzigste")+ , (128, "einhundertachtundzwanzigste")+ , (129, "einhundertneunundzwanzigste")+ , (130, "einhundertdreißigste")+ , (131, "einhunderteinunddreißigste")+ , (132, "einhundertzweiunddreißigste")+ , (133, "einhundertdreiunddreißigste")+ , (134, "einhundertvierunddreißigste")+ , (135, "einhundertfünfunddreißigste")+ , (136, "einhundertsechsunddreißigste")+ , (137, "einhundertsiebenunddreißigste")+ , (138, "einhundertachtunddreißigste")+ , (139, "einhundertneununddreißigste")+ , (140, "einhundertvierzigste")+ , (141, "einhunderteinundvierzigste")+ , (142, "einhundertzweiundvierzigste")+ , (143, "einhundertdreiundvierzigste")+ , (144, "einhundertvierundvierzigste")+ , (145, "einhundertfünfundvierzigste")+ , (146, "einhundertsechsundvierzigste")+ , (147, "einhundertsiebenundvierzigste")+ , (148, "einhundertachtundvierzigste")+ , (149, "einhundertneunundvierzigste")+ , (150, "einhundertfünfzigste")+ , (151, "einhunderteinundfünfzigste")+ , (152, "einhundertzweiundfünfzigste")+ , (153, "einhundertdreiundfünfzigste")+ , (154, "einhundertvierundfünfzigste")+ , (155, "einhundertfünfundfünfzigste")+ , (156, "einhundertsechsundfünfzigste")+ , (157, "einhundertsiebenundfünfzigste")+ , (158, "einhundertachtundfünfzigste")+ , (159, "einhundertneunundfünfzigste")+ , (160, "einhundertsechzigste")+ , (161, "einhunderteinundsechzigste")+ , (162, "einhundertzweiundsechzigste")+ , (163, "einhundertdreiundsechzigste")+ , (164, "einhundertvierundsechzigste")+ , (165, "einhundertfünfundsechzigste")+ , (166, "einhundertsechsundsechzigste")+ , (167, "einhundertsiebenundsechzigste")+ , (168, "einhundertachtundsechzigste")+ , (169, "einhundertneunundsechzigste")+ , (170, "einhundertsiebzigste")+ , (171, "einhunderteinundsiebzigste")+ , (172, "einhundertzweiundsiebzigste")+ , (173, "einhundertdreiundsiebzigste")+ , (174, "einhundertvierundsiebzigste")+ , (175, "einhundertfünfundsiebzigste")+ , (176, "einhundertsechsundsiebzigste")+ , (177, "einhundertsiebenundsiebzigste")+ , (178, "einhundertachtundsiebzigste")+ , (179, "einhundertneunundsiebzigste")+ , (180, "einhundertachtzigste")+ , (181, "einhunderteinundachtzigste")+ , (182, "einhundertzweiundachtzigste")+ , (183, "einhundertdreiundachtzigste")+ , (184, "einhundertvierundachtzigste")+ , (185, "einhundertfünfundachtzigste")+ , (186, "einhundertsechsundachtzigste")+ , (187, "einhundertsiebenundachtzigste")+ , (188, "einhundertachtundachtzigste")+ , (189, "einhundertneunundachtzigste")+ , (190, "einhundertneunzigste")+ , (191, "einhunderteinundneunzigste")+ , (192, "einhundertzweiundneunzigste")+ , (193, "einhundertdreiundneunzigste")+ , (194, "einhundertvierundneunzigste")+ , (195, "einhundertfünfundneunzigste")+ , (196, "einhundertsechsundneunzigste")+ , (197, "einhundertsiebenundneunzigste")+ , (198, "einhundertachtundneunzigste")+ , (199, "einhundertneunundneunzigste")+ , (200, "zweihundertste")+ , (233, "zweihundertdreiunddreißigste")+ , (377, "dreihundertsiebenundsiebzigste")+ , (610, "sechshundertzehnte")+ , (987, "neunhundertsiebenundachtzigste")+ , (1597, "eintausendfünfhundertsiebenundneunzigste")+ , (2584, "zweitausendfünfhundertvierundachtzigste")+ , (4181, "viertausendeinhunderteinundachtzigste")+ , (6765, "sechstausendsiebenhundertfünfundsechzigste")+ , (10946, "zehntausendneunhundertsechsundvierzigste")+ , (17711, "siebzehntausendsiebenhundertelfte")+ , (28657, "achtundzwanzigtausendsechshundertsiebenundfünfzigste")+ , (46368, "sechsundvierzigtausenddreihundertachtundsechzigste")+ , (75025, "fünfundsiebzigtausendfünfundzwanzigste")+ , (121393, "einhunderteinundzwanzigtausenddreihundertdreiundneunzigste")+ , (196418, "einhundertsechsundneunzigtausendvierhundertachtzehnte")+ , (317811, "dreihundertsiebzehntausendachthundertelfte")+ , (514229, "fünfhundertvierzehntausendzweihundertneunundzwanzigste")+ , (832040, "achthundertzweiunddreißigtausendvierzigste")+ , (1346269, "eine million dreihundertsechsundvierzigtausendzweihundertneunundsechzigste")+ , (2178309, "zwei millionen einhundertachtundsiebzigtausenddreihundertneunte")+ , (3524578, "drei millionen fünfhundertvierundzwanzigtausendfünfhundertachtundsiebzigste")+ , (5702887, "fünf millionen siebenhundertzweitausendachthundertsiebenundachtzigste")+ , (9227465, "neun millionen zweihundertsiebenundzwanzigtausendvierhundertfünfundsechzigste")+ , (14930352, "vierzehn millionen neunhundertdreißigtausenddreihundertzweiundfünfzigste")+ , (24157817, "vierundzwanzig millionen einhundertsiebenundfünfzigtausendachthundertsiebzehnte")+ , (39088169, "neununddreißig millionen achtundachtzigtausendeinhundertneunundsechzigste")+ , (63245986, "dreiundsechzig millionen zweihundertfünfundvierzigtausendneunhundertsechsundachtzigste")+ , (102334155, "einhundertzwei millionen dreihundertvierunddreißigtausendeinhundertfünfundfünfzigste")+ , (165580141, "einhundertfünfundsechzig millionen fünfhundertachtzigtausendeinhunderteinundvierzigste")+ , (267914296, "zweihundertsiebenundsechzig millionen neunhundertvierzehntausendzweihundertsechsundneunzigste")+ , (433494437, "vierhundertdreiunddreißig millionen vierhundertvierundneunzigtausendvierhundertsiebenunddreißigste")+ , (701408733, "siebenhunderteins millionen vierhundertachttausendsiebenhundertdreiunddreißigste")+ , (1134903170, "eine milliard einhundertvierunddreißig millionen neunhundertdreitausendeinhundertsiebzigste")+ , (1836311903, "eine milliard achthundertsechsunddreißig millionen dreihundertelftausendneunhundertdritte")+ , (2971215073, "zwei milliarden neunhunderteinundsiebzig millionen zweihundertfünfzehntausenddreiundsiebzigste")+ , (4807526976, "vier milliarden achthundertsieben millionen fünfhundertsechsundzwanzigtausendneunhundertsechsundsiebzigste")+ , (7778742049, "sieben milliarden siebenhundertachtundsiebzig millionen siebenhundertzweiundvierzigtausendneunundvierzigste")+ , (12586269025, "zwölf milliarden fünfhundertsechsundachtzig millionen zweihundertneunundsechzigtausendfünfundzwanzigste")+ , (20365011074, "zwanzig milliarden dreihundertfünfundsechzig millionen elftausendvierundsiebzigste")+ , (32951280099, "zweiunddreißig milliarden neunhunderteinundfünfzig millionen zweihundertachtzigtausendneunundneunzigste")+ , (53316291173, "dreiundfünfzig milliarden dreihundertsechzehn millionen zweihunderteinundneunzigtausendeinhundertdreiundsiebzigste")+ , (86267571272, "sechsundachtzig milliarden zweihundertsiebenundsechzig millionen fünfhunderteinundsiebzigtausendzweihundertzweiundsiebzigste")+ , (139583862445, "einhundertneununddreißig milliarden fünfhundertdreiundachtzig millionen achthundertzweiundsechzigtausendvierhundertfünfundvierzigste")+ , (225851433717, "zweihundertfünfundzwanzig milliarden achthunderteinundfünfzig millionen vierhundertdreiunddreißigtausendsiebenhundertsiebzehnte")+ , (365435296162, "dreihundertfünfundsechzig milliarden vierhundertfünfunddreißig millionen zweihundertsechsundneunzigtausendeinhundertzweiundsechzigste")+ , (591286729879, "fünfhunderteinundneunzig milliarden zweihundertsechsundachtzig millionen siebenhundertneunundzwanzigtausendachthundertneunundsiebzigste")+ , (956722026041, "neunhundertsechsundfünfzig milliarden siebenhundertzweiundzwanzig millionen sechsundzwanzigtausendeinundvierzigste")+ , (1548008755920, "eine billion fünfhundertachtundvierzig milliarden acht millionen siebenhundertfünfundfünfzigtausendneunhundertzwanzigste")+ , (2504730781961, "zwei billionen fünfhundertvier milliarden siebenhundertdreißig millionen siebenhunderteinundachtzigtausendneunhunderteinundsechzigste")+ , (4052739537881, "vier billionen zweiundfünfzig milliarden siebenhundertneununddreißig millionen fünfhundertsiebenunddreißigtausendachthunderteinundachtzigste")+ , (6557470319842, "sechs billionen fünfhundertsiebenundfünfzig milliarden vierhundertsiebzig millionen dreihundertneunzehntausendachthundertzweiundvierzigste")+ , (10610209857723, "zehn billionen sechshundertzehn milliarden zweihundertneun millionen achthundertsiebenundfünfzigtausendsiebenhundertdreiundzwanzigste")+ , (17167680177565, "siebzehn billionen einhundertsiebenundsechzig milliarden sechshundertachtzig millionen einhundertsiebenundsiebzigtausendfünfhundertfünfundsechzigste")+ , (27777890035288, "siebenundzwanzig billionen siebenhundertsiebenundsiebzig milliarden achthundertneunzig millionen fünfunddreißigtausendzweihundertachtundachtzigste")+ , (44945570212853, "vierundvierzig billionen neunhundertfünfundvierzig milliarden fünfhundertsiebzig millionen zweihundertzwölftausendachthundertdreiundfünfzigste")+ , (72723460248141, "zweiundsiebzig billionen siebenhundertdreiundzwanzig milliarden vierhundertsechzig millionen zweihundertachtundvierzigtausendeinhunderteinundvierzigste")+ , (117669030460994, "einhundertsiebzehn billionen sechshundertneunundsechzig milliarden dreißig millionen vierhundertsechzigtausendneunhundertvierundneunzigste")+ , (190392490709135, "einhundertneunzig billionen dreihundertzweiundneunzig milliarden vierhundertneunzig millionen siebenhundertneuntausendeinhundertfünfunddreißigste")+ , (308061521170129, "dreihundertacht billionen einundsechzig milliarden fünfhunderteinundzwanzig millionen einhundertsiebzigtausendeinhundertneunundzwanzigste")+ , (498454011879264, "vierhundertachtundneunzig billionen vierhundertvierundfünfzig milliarden elf millionen achthundertneunundsiebzigtausendzweihundertvierundsechzigste")+ , (806515533049393, "achthundertsechs billionen fünfhundertfünfzehn milliarden fünfhundertdreiunddreißig millionen neunundvierzigtausenddreihundertdreiundneunzigste")+ , (1304969544928657, "eine billiard dreihundertvier billionen neunhundertneunundsechzig milliarden fünfhundertvierundvierzig millionen neunhundertachtundzwanzigtausendsechshundertsiebenundfünfzigste")+ , (2111485077978050, "zwei billiarden einhundertelf billionen vierhundertfünfundachtzig milliarden siebenundsiebzig millionen neunhundertachtundsiebzigtausendfünfzigste")+ , (3416454622906707, "drei billiarden vierhundertsechzehn billionen vierhundertvierundfünfzig milliarden sechshundertzweiundzwanzig millionen neunhundertsechstausendsiebenhundertsiebte")+ , (5527939700884757, "fünf billiarden fünfhundertsiebenundzwanzig billionen neunhundertneununddreißig milliarden siebenhundert millionen achthundertvierundachtzigtausendsiebenhundertsiebenundfünfzigste")+ , (8944394323791464, "acht billiarden neunhundertvierundvierzig billionen dreihundertvierundneunzig milliarden dreihundertdreiundzwanzig millionen siebenhunderteinundneunzigtausendvierhundertvierundsechzigste")+ , (14472334024676221, "vierzehn billiarden vierhundertzweiundsiebzig billionen dreihundertvierunddreißig milliarden vierundzwanzig millionen sechshundertsechsundsiebzigtausendzweihunderteinundzwanzigste")+ , (23416728348467685, "dreiundzwanzig billiarden vierhundertsechzehn billionen siebenhundertachtundzwanzig milliarden dreihundertachtundvierzig millionen vierhundertsiebenundsechzigtausendsechshundertfünfundachtzigste")+ , (37889062373143906, "siebenunddreißig billiarden achthundertneunundachtzig billionen zweiundsechzig milliarden dreihundertdreiundsiebzig millionen einhundertdreiundvierzigtausendneunhundertsechste")+ , (61305790721611591, "einundsechzig billiarden dreihundertfünf billionen siebenhundertneunzig milliarden siebenhunderteinundzwanzig millionen sechshundertelftausendfünfhunderteinundneunzigste")+ , (99194853094755497, "neunundneunzig billiarden einhundertvierundneunzig billionen achthundertdreiundfünfzig milliarden vierundneunzig millionen siebenhundertfünfundfünfzigtausendvierhundertsiebenundneunzigste")+ , (160500643816367088, "einhundertsechzig billiarden fünfhundert billionen sechshundertdreiundvierzig milliarden achthundertsechzehn millionen dreihundertsiebenundsechzigtausendachtundachtzigste")+ , (259695496911122585, "zweihundertneunundfünfzig billiarden sechshundertfünfundneunzig billionen vierhundertsechsundneunzig milliarden neunhundertelf millionen einhundertzweiundzwanzigtausendfünfhundertfünfundachtzigste")+ , (420196140727489673, "vierhundertzwanzig billiarden einhundertsechsundneunzig billionen einhundertvierzig milliarden siebenhundertsiebenundzwanzig millionen vierhundertneunundachtzigtausendsechshundertdreiundsiebzigste")+ , (679891637638612258, "sechshundertneunundsiebzig billiarden achthunderteinundneunzig billionen sechshundertsiebenunddreißig milliarden sechshundertachtunddreißig millionen sechshundertzwölftausendzweihundertachtundfünfzigste")+ , (1100087778366101931, "eine trillion einhundert billiarden siebenundachtzig billionen siebenhundertachtundsiebzig milliarden dreihundertsechsundsechzig millionen einhunderteinstausendneunhunderteinunddreißigste")+ , (1779979416004714189, "eine trillion siebenhundertneunundsiebzig billiarden neunhundertneunundsiebzig billionen vierhundertsechzehn milliarden vier millionen siebenhundertvierzehntausendeinhundertneunundachtzigste")+ , (2880067194370816120, "zwei trillionen achthundertachtzig billiarden siebenundsechzig billionen einhundertvierundneunzig milliarden dreihundertsiebzig millionen achthundertsechzehntausendeinhundertzwanzigste")+ , (4660046610375530309, "vier trillionen sechshundertsechzig billiarden sechsundvierzig billionen sechshundertzehn milliarden dreihundertfünfundsiebzig millionen fünfhundertdreißigtausenddreihundertneunte")+ , (7540113804746346429, "sieben trillionen fünfhundertvierzig billiarden einhundertdreizehn billionen achthundertvier milliarden siebenhundertsechsundvierzig millionen dreihundertsechsundvierzigtausendvierhundertneunundzwanzigste")+ , (12200160415121876738, "zwölf trillionen zweihundert billiarden einhundertsechzig billionen vierhundertfünfzehn milliarden einhunderteinundzwanzig millionen achthundertsechsundsiebzigtausendsiebenhundertachtunddreißigste")+ , (19740274219868223167, "neunzehn trillionen siebenhundertvierzig billiarden zweihundertvierundsiebzig billionen zweihundertneunzehn milliarden achthundertachtundsechzig millionen zweihundertdreiundzwanzigtausendeinhundertsiebenundsechzigste")+ , (31940434634990099905, "einunddreißig trillionen neunhundertvierzig billiarden vierhundertvierunddreißig billionen sechshundertvierunddreißig milliarden neunhundertneunzig millionen neunundneunzigtausendneunhundertfünfte")+ , (51680708854858323072, "einundfünfzig trillionen sechshundertachtzig billiarden siebenhundertacht billionen achthundertvierundfünfzig milliarden achthundertachtundfünfzig millionen dreihundertdreiundzwanzigtausendzweiundsiebzigste")+ , (83621143489848422977, "dreiundachtzig trillionen sechshunderteinundzwanzig billiarden einhundertdreiundvierzig billionen vierhundertneunundachtzig milliarden achthundertachtundvierzig millionen vierhundertzweiundzwanzigtausendneunhundertsiebenundsiebzigste")+ , (135301852344706746049, "einhundertfünfunddreißig trillionen dreihunderteins billiarden achthundertzweiundfünfzig billionen dreihundertvierundvierzig milliarden siebenhundertsechs millionen siebenhundertsechsundvierzigtausendneunundvierzigste")+ , (218922995834555169026, "zweihundertachtzehn trillionen neunhundertzweiundzwanzig billiarden neunhundertfünfundneunzig billionen achthundertvierunddreißig milliarden fünfhundertfünfundfünfzig millionen einhundertneunundsechzigtausendsechsundzwanzigste")+ , (354224848179261915075, "dreihundertvierundfünfzig trillionen zweihundertvierundzwanzig billiarden achthundertachtundvierzig billionen einhundertneunundsiebzig milliarden zweihunderteinundsechzig millionen neunhundertfünfzehntausendfünfundsiebzigste")+ , (573147844013817084101, "fünfhundertdreiundsiebzig trillionen einhundertsiebenundvierzig billiarden achthundertvierundvierzig billionen dreizehn milliarden achthundertsiebzehn millionen vierundachtzigtausendeinhunderterste")+ , (927372692193078999176, "neunhundertsiebenundzwanzig trillionen dreihundertzweiundsiebzig billiarden sechshundertzweiundneunzig billionen einhundertdreiundneunzig milliarden achtundsiebzig millionen neunhundertneunundneunzigtausendeinhundertsechsundsiebzigste")+ , (1500520536206896083277, "eine trilliard fünfhundert trillionen fünfhundertzwanzig billiarden fünfhundertsechsunddreißig billionen zweihundertsechs milliarden achthundertsechsundneunzig millionen dreiundachtzigtausendzweihundertsiebenundsiebzigste")+ , (2427893228399975082453, "zwei trilliarden vierhundertsiebenundzwanzig trillionen achthundertdreiundneunzig billiarden zweihundertachtundzwanzig billionen dreihundertneunundneunzig milliarden neunhundertfünfundsiebzig millionen zweiundachtzigtausendvierhundertdreiundfünfzigste")+ , (3928413764606871165730, "drei trilliarden neunhundertachtundzwanzig trillionen vierhundertdreizehn billiarden siebenhundertvierundsechzig billionen sechshundertsechs milliarden achthunderteinundsiebzig millionen einhundertfünfundsechzigtausendsiebenhundertdreißigste")+ , (6356306993006846248183, "sechs trilliarden dreihundertsechsundfünfzig trillionen dreihundertsechs billiarden neunhundertdreiundneunzig billionen sechs milliarden achthundertsechsundvierzig millionen zweihundertachtundvierzigtausendeinhundertdreiundachtzigste")+ , (10284720757613717413913, "zehn trilliarden zweihundertvierundachtzig trillionen siebenhundertzwanzig billiarden siebenhundertsiebenundfünfzig billionen sechshundertdreizehn milliarden siebenhundertsiebzehn millionen vierhundertdreizehntausendneunhundertdreizehnte")+ , (16641027750620563662096, "sechzehn trilliarden sechshunderteinundvierzig trillionen siebenundzwanzig billiarden siebenhundertfünfzig billionen sechshundertzwanzig milliarden fünfhundertdreiundsechzig millionen sechshundertzweiundsechzigtausendsechsundneunzigste")+ , (26925748508234281076009, "sechsundzwanzig trilliarden neunhundertfünfundzwanzig trillionen siebenhundertachtundvierzig billiarden fünfhundertacht billionen zweihundertvierunddreißig milliarden zweihunderteinundachtzig millionen sechsundsiebzigtausendneunte")+ , (43566776258854844738105, "dreiundvierzig trilliarden fünfhundertsechsundsechzig trillionen siebenhundertsechsundsiebzig billiarden zweihundertachtundfünfzig billionen achthundertvierundfünfzig milliarden achthundertvierundvierzig millionen siebenhundertachtunddreißigtausendeinhundertfünfte")+ , (70492524767089125814114, "siebzig trilliarden vierhundertzweiundneunzig trillionen fünfhundertvierundzwanzig billiarden siebenhundertsiebenundsechzig billionen neunundachtzig milliarden einhundertfünfundzwanzig millionen achthundertvierzehntausendeinhundertvierzehnte")+ , (114059301025943970552219, "einhundertvierzehn trilliarden neunundfünfzig trillionen dreihunderteins billiarden fünfundzwanzig billionen neunhundertdreiundvierzig milliarden neunhundertsiebzig millionen fünfhundertzweiundfünfzigtausendzweihundertneunzehnte")+ , (1000, "tausendste")+ , (10000, "zehntausendste")+ , (100000, "einhunderttausendste")+ , (1000000, "millionste")+ , (10000000, "zehnmillionste")+ , (100000000, "einhundertmillionste")+ , (1000000000, "eine milliardte")+ , (10000000000, "zehnmilliardste")+ , (100000000000, "einhundertmilliardste")+ , (1000000000000, "billionste")+ , (10000000000000, "zehnbillionste")+ , (100000000000000, "einhundertbillionste")+ , (1000000000000000, "eine billiardte")+ , (10000000000000000, "zehnbilliardste")+ , (100000000000000000, "einhundertbilliardste")+ , (1000000000000000000, "trillionste")+ , (10000000000000000000, "zehntrillionste")+ , (100000000000000000000, "einhunderttrillionste")+ , (1000000000000000000000, "eine trilliardte")+ , (10000000000000000000000, "zehntrilliardste")+ , (100000000000000000000000, "einhunderttrilliardste")+ , (1000000000000000000000000, "quadrillionste")+ ]