<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://the-democratika.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AGreek_numeral</id>
	<title>Module:Greek numeral - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://the-democratika.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AGreek_numeral"/>
	<link rel="alternate" type="text/html" href="https://the-democratika.com/wiki/index.php?title=Module:Greek_numeral&amp;action=history"/>
	<updated>2026-04-04T15:30:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://the-democratika.com/wiki/index.php?title=Module:Greek_numeral&amp;diff=5976&amp;oldid=prev</id>
		<title>&gt;LaundryPizza03: LaundryPizza03 moved page Module:Greek to Module:Greek numeral without leaving a redirect: Per RM, and to match the wrapper template</title>
		<link rel="alternate" type="text/html" href="https://the-democratika.com/wiki/index.php?title=Module:Greek_numeral&amp;diff=5976&amp;oldid=prev"/>
		<updated>2022-02-05T14:34:18Z</updated>

		<summary type="html">&lt;p&gt;LaundryPizza03 moved page &lt;a href=&quot;/wiki/index.php?title=Module:Greek&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module:Greek (page does not exist)&quot;&gt;Module:Greek&lt;/a&gt; to &lt;a href=&quot;/wiki/index.php/Module:Greek_numeral&quot; title=&quot;Module:Greek numeral&quot;&gt;Module:Greek numeral&lt;/a&gt; without leaving a redirect: Per RM, and to match the wrapper template&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Convert standard numbers to greek numerals, and vice versa&lt;br /&gt;
-- Gts-tg@el wiki, Aug. 2017&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local greek_numerals = {&lt;br /&gt;
	[&amp;quot;α&amp;quot;]  = 1,    -- ἄλφα / alpha&lt;br /&gt;
	[&amp;quot;β&amp;quot;]  = 2,    -- βῆτα / beta &lt;br /&gt;
	[&amp;quot;γ&amp;quot;]  = 3,    -- γάμμα / gamma&lt;br /&gt;
	[&amp;quot;δ&amp;quot;]  = 4,    -- δέλτα / delta&lt;br /&gt;
	[&amp;quot;ε&amp;quot;]  = 5,    -- ἔψιλον / epsilon&lt;br /&gt;
	[&amp;quot;Ϛ&amp;quot;]  = 6,    -- δίγαμμα / digamma&lt;br /&gt;
	[&amp;quot;ζ&amp;quot;]  = 7,    -- ζῆτα / zeta&lt;br /&gt;
	[&amp;quot;η&amp;quot;]  = 8,    -- ῆτα / heta&lt;br /&gt;
	[&amp;quot;θ&amp;quot;]  = 9,    -- θῆτα / theta&lt;br /&gt;
	[&amp;quot;ι&amp;quot;]  = 10,   -- ιῶτα / iota&lt;br /&gt;
	[&amp;quot;κ&amp;quot;]  = 20,   -- κάππα / kappa&lt;br /&gt;
	[&amp;quot;λ&amp;quot;]  = 30,   -- λάμδα / lamda&lt;br /&gt;
	[&amp;quot;μ&amp;quot;]  = 40,   -- μῦ / mu&lt;br /&gt;
	[&amp;quot;ν&amp;quot;]  = 50,   -- νῦ / nu&lt;br /&gt;
	[&amp;quot;ξ&amp;quot;]  = 60,   -- ξί / xi&lt;br /&gt;
	[&amp;quot;ο&amp;quot;]  = 70,   -- ὄμικρον / omikron&lt;br /&gt;
	[&amp;quot;π&amp;quot;]  = 80,   -- πί / pi&lt;br /&gt;
	[&amp;quot;ϟ&amp;quot;]  = 90,   -- κόππα / koppa&lt;br /&gt;
	[&amp;quot;ρ&amp;quot;]  = 100,  -- ρό / rho&lt;br /&gt;
	[&amp;quot;σ&amp;quot;]  = 200,  -- σίγμα / sigma&lt;br /&gt;
	[&amp;quot;ς&amp;quot;]  = 200,  -- σίγμα / sigma	(final variation)&lt;br /&gt;
	[&amp;quot;τ&amp;quot;]  = 300,  -- ταῦ / ταυ&lt;br /&gt;
	[&amp;quot;υ&amp;quot;]  = 400,  -- ύψιλον / ypsilon&lt;br /&gt;
	[&amp;quot;φ&amp;quot;]  = 500,  -- φί / phi&lt;br /&gt;
	[&amp;quot;χ&amp;quot;]  = 600,  -- χί / chi&lt;br /&gt;
	[&amp;quot;ψ&amp;quot;]  = 700,  -- ψί / psi&lt;br /&gt;
	[&amp;quot;ω&amp;quot;]  = 800,  -- ὠμέγα / omega&lt;br /&gt;
	[&amp;quot;ϡ&amp;quot;]  = 900,  -- σαμπί / sampi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- used for math graph template&lt;br /&gt;
local numeral_latin_transliteration = {&lt;br /&gt;
	[&amp;quot;α&amp;quot;]  = &amp;#039;alpha&amp;#039;,&lt;br /&gt;
	[&amp;quot;β&amp;quot;]  = &amp;#039;beta&amp;#039;,&lt;br /&gt;
	[&amp;quot;γ&amp;quot;]  = &amp;#039;gamma&amp;#039;,&lt;br /&gt;
	[&amp;quot;δ&amp;quot;]  = &amp;#039;delta&amp;#039;,&lt;br /&gt;
	[&amp;quot;ε&amp;quot;]  = &amp;#039;epsilon&amp;#039;,&lt;br /&gt;
	[&amp;quot;Ϛ&amp;quot;]  = &amp;#039;digamma&amp;#039;,&lt;br /&gt;
	[&amp;quot;ζ&amp;quot;]  = &amp;#039;zeta&amp;#039;,&lt;br /&gt;
	[&amp;quot;η&amp;quot;]  = &amp;#039;eta&amp;#039;,&lt;br /&gt;
	[&amp;quot;θ&amp;quot;]  = &amp;#039;theta&amp;#039;,&lt;br /&gt;
	[&amp;quot;ι&amp;quot;]  = &amp;#039;iota&amp;#039;,&lt;br /&gt;
	[&amp;quot;κ&amp;quot;]  = &amp;#039;kappa&amp;#039;,&lt;br /&gt;
	[&amp;quot;λ&amp;quot;]  = &amp;#039;lambda&amp;#039;,&lt;br /&gt;
	[&amp;quot;μ&amp;quot;]  = &amp;#039;mu&amp;#039;,&lt;br /&gt;
	[&amp;quot;ν&amp;quot;]  = &amp;#039;nu&amp;#039;,&lt;br /&gt;
	[&amp;quot;ξ&amp;quot;]  = &amp;#039;xi&amp;#039;,&lt;br /&gt;
	[&amp;quot;ο&amp;quot;]  = &amp;#039;omicron&amp;#039;,&lt;br /&gt;
	[&amp;quot;π&amp;quot;]  = &amp;#039;pi&amp;#039;,&lt;br /&gt;
	[&amp;quot;ϟ&amp;quot;]  = &amp;#039;koppa&amp;#039;,&lt;br /&gt;
	[&amp;quot;ρ&amp;quot;]  = &amp;#039;rho&amp;#039;,&lt;br /&gt;
	[&amp;quot;σ&amp;quot;]  = &amp;#039;sigma&amp;#039;,&lt;br /&gt;
	[&amp;quot;ς&amp;quot;]  = &amp;#039;sigma&amp;#039;, --(final variation)&lt;br /&gt;
	[&amp;quot;τ&amp;quot;]  = &amp;#039;tau&amp;#039;,&lt;br /&gt;
	[&amp;quot;υ&amp;quot;]  = &amp;#039;upsilon&amp;#039;,&lt;br /&gt;
	[&amp;quot;φ&amp;quot;]  = &amp;#039;phi&amp;#039;,&lt;br /&gt;
	[&amp;quot;χ&amp;quot;]  = &amp;#039;chi&amp;#039;,&lt;br /&gt;
	[&amp;quot;ψ&amp;quot;]  = &amp;#039;psi&amp;#039;,&lt;br /&gt;
	[&amp;quot;ω&amp;quot;]  = &amp;#039;omega&amp;#039;,&lt;br /&gt;
	[&amp;quot;ϡ&amp;quot;]  = &amp;#039;sampi&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- return number corresponding to letter&lt;br /&gt;
-- params: letter (string)&lt;br /&gt;
-- return: number&lt;br /&gt;
local function value(letter)&lt;br /&gt;
	if letter ~= &amp;#039;Ϛ&amp;#039; and letter ~= &amp;#039;ϟ&amp;#039; and letter ~= &amp;#039;ϡ&amp;#039; then&lt;br /&gt;
		letter = mw.ustring.lower(letter) &lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
    return greek_numerals[letter]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- letter value * 1000&lt;br /&gt;
-- params: letter (string), total (number)&lt;br /&gt;
-- return: number&lt;br /&gt;
local function thousandth(letter, total)&lt;br /&gt;
	&lt;br /&gt;
	if letter ~= false then&lt;br /&gt;
		total = total - value(letter) -- remove previous addition as simple number&lt;br /&gt;
    	total = total + ( value(letter) * 1000 )&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return total&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- reverse table (index to values, values to index)&lt;br /&gt;
-- params: tbl (table)&lt;br /&gt;
-- return: table&lt;br /&gt;
local function reverse_table(tbl)&lt;br /&gt;
   &lt;br /&gt;
	local reversedTable = {}&lt;br /&gt;
&lt;br /&gt;
	for letter, value in pairs(tbl) do&lt;br /&gt;
        reversedTable[value] = letter&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
	return reversedTable&lt;br /&gt;
	    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- special notation for numbers &amp;gt; 9999&lt;br /&gt;
local function mu_notation(greek_number, digits)&lt;br /&gt;
  local result  = &amp;#039;&amp;#039;&lt;br /&gt;
  local postfix = &amp;#039;&amp;#039;&lt;br /&gt;
  &lt;br /&gt;
  -- digits greater than 9999&lt;br /&gt;
  for index, digit in pairs(digits) do&lt;br /&gt;
  	-- mw.log(digit)&lt;br /&gt;
     result = result .. &amp;#039;\\&amp;#039; .. numeral_latin_transliteration[digit]&lt;br /&gt;
     &lt;br /&gt;
     greek_number = greek_number:gsub(digit, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  if greek_number ~= &amp;#039;&amp;#039; then -- if not all digits are multiples of myriad&lt;br /&gt;
     postfix = 	&amp;quot;͵&amp;quot; .. greek_number .. &amp;quot;´&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  result = &amp;#039;&amp;lt;math&amp;gt;\\stackrel{&amp;#039; .. result .. &amp;#039;}{\\Mu}&amp;lt;/math&amp;gt;&amp;#039; .. postfix&lt;br /&gt;
  &lt;br /&gt;
  return result	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- convert standard number to greek&lt;br /&gt;
-- params: frame (obj)&lt;br /&gt;
-- return: string&lt;br /&gt;
function p.to_greek(frame)&lt;br /&gt;
	local number = frame.args[1]&lt;br /&gt;
	local tbl = null&lt;br /&gt;
	local result = &amp;#039;&amp;#039;&lt;br /&gt;
	local big_values = {}&lt;br /&gt;
	local m_notation = false&lt;br /&gt;
	&lt;br /&gt;
	if tonumber(number) &amp;gt; 9999  then &lt;br /&gt;
 	   m_notation = true&lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
	tbl = reverse_table(greek_numerals) -- reverse to [&amp;lt;number&amp;gt;] = &amp;#039;&amp;lt;letter&amp;gt;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
 	if tbl[number] ~= null then &lt;br /&gt;
 		result = tbl[number] -- direct hit &lt;br /&gt;
 	else&lt;br /&gt;
 		local str_number = tostring(number)&lt;br /&gt;
 		local highest_numeric_position = #str_number&lt;br /&gt;
 		local i = 0&lt;br /&gt;
 		local index = &amp;#039;&amp;#039;&lt;br /&gt;
 		&lt;br /&gt;
 		for digit in str_number:gmatch&amp;quot;.&amp;quot; do -- break up number digits&lt;br /&gt;
 			highest_numeric_position = highest_numeric_position - 1&lt;br /&gt;
 			&lt;br /&gt;
 			if tonumber(digit) &amp;gt; 0 then&lt;br /&gt;
 			    index = tonumber(digit .. mw.ustring.rep(&amp;#039;0&amp;#039;, highest_numeric_position))&lt;br /&gt;
 			    &lt;br /&gt;
	 			if highest_numeric_position &amp;gt;= 3 then&lt;br /&gt;
	 			   &lt;br /&gt;
	 			   match = false&lt;br /&gt;
	 			   while match == false do&lt;br /&gt;
	 			   &lt;br /&gt;
	 			      if index &amp;lt; 1 then index = index * 10 end&lt;br /&gt;
	 			      	&lt;br /&gt;
	 			      if tbl[index] == nil then&lt;br /&gt;
	 			      	 index = index / 10000&lt;br /&gt;
	 			      else&lt;br /&gt;
	 			      	result = result .. tostring(tbl[tonumber(index)])&lt;br /&gt;
	 			      	match = true&lt;br /&gt;
	 			      end&lt;br /&gt;
	 			   end&lt;br /&gt;
	 			   &lt;br /&gt;
	 		 	   if highest_numeric_position &amp;gt; 3 then table.insert(big_values, tbl[tonumber(index)]) end&lt;br /&gt;
	 		 	   &lt;br /&gt;
	 		 	else&lt;br /&gt;
	 		 	   result = result .. tostring(tbl[tonumber(index)])&lt;br /&gt;
	 		 	end&lt;br /&gt;
	 		end&lt;br /&gt;
 		end&lt;br /&gt;
 		--local d = require &amp;quot;Module:Debugging&amp;quot;&lt;br /&gt;
 		--mw.log(result)&lt;br /&gt;
 		--mw.log(d.dump(big_values))&lt;br /&gt;
 	end&lt;br /&gt;
	&lt;br /&gt;
 	if m_notation == true then --special notation&lt;br /&gt;
 		&lt;br /&gt;
 		result = mu_notation(result, big_values)&lt;br /&gt;
 		local frame = mw.getCurrentFrame()&lt;br /&gt;
 		result = frame:preprocess(result)&lt;br /&gt;
 	else&lt;br /&gt;
 		if tonumber(number) &amp;gt;= 1000 then result = &amp;#039;,&amp;#039; .. result end&lt;br /&gt;
 		result = mw.ustring.upper(result) .. &amp;quot;´&amp;quot;&lt;br /&gt;
 	end&lt;br /&gt;
 	&lt;br /&gt;
 	return result&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- convert greek number to standard&lt;br /&gt;
-- greek number sample for testing: αωκα´ = 1821&lt;br /&gt;
-- params: frame (obj)&lt;br /&gt;
-- return: number&lt;br /&gt;
function p.to_standard(frame)&lt;br /&gt;
	local greek_number = frame.args[1]&lt;br /&gt;
	local total = 0&lt;br /&gt;
	local thousand_flag = false&lt;br /&gt;
	local prev_letter = false&lt;br /&gt;
	&lt;br /&gt;
	greek_number = greek_number:gsub(&amp;quot;´&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	if type(greek_number) ~= &amp;#039;string&amp;#039; then &lt;br /&gt;
		return &amp;#039;Error: value &amp;#039; .. greek_number .. &amp;#039; is &amp;#039; .. type(greek_number) .. &amp;#039; instead of expected string&amp;#039;  &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- iterate through letters&lt;br /&gt;
	for letter in mw.ustring.gmatch(greek_number, &amp;quot;.&amp;quot;) do&lt;br /&gt;
	  &lt;br /&gt;
		    -- check if thousand marker exists&lt;br /&gt;
		    if letter == &amp;quot;,&amp;quot; then &lt;br /&gt;
		    	thousand_flag = true&lt;br /&gt;
            else&lt;br /&gt;
        	    if thousand_flag == true then&lt;br /&gt;
                    total = thousandth(letter, total)   	&lt;br /&gt;
        	    	thousand_flag = false&lt;br /&gt;
        	    end &lt;br /&gt;
        	    &lt;br /&gt;
        	    total = total + value(letter)&lt;br /&gt;
        	    prev_letter = letter&lt;br /&gt;
        	end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if thousand_flag == true then&lt;br /&gt;
       total = thousandth(prev_letter, total)	&lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
	return total&lt;br /&gt;
end	&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>&gt;LaundryPizza03</name></author>
	</entry>
</feed>