# File lib/facet/lisp-format.rb, line 809 def cardinal(n) return 'zero' if n.zero? out = [] negative = n < 0 n = n.abs power = 0 while n > 0 before, after = n.divmod(1000) if after > 0 block = cardinal_100s(after) + (power.zero? ? '' : ' ') if power < @@illions.size block << @@illions[power] else block << 'times ten to the ' + (power * 3).to_s + ' power' end out << block end n = before power += 1 end negative and out << 'minus' out.reverse.join(', ') end