<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://www.vigyanwiki.in/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://www.vigyanwiki.in/index.php?action=history&amp;feed=atom&amp;title=Module%3AGreek_numeral"/>
	<link rel="alternate" type="text/html" href="https://www.vigyanwiki.in/index.php?title=Module:Greek_numeral&amp;action=history"/>
	<updated>2026-05-05T03:31:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://www.vigyanwiki.in/index.php?title=Module:Greek_numeral&amp;diff=213326&amp;oldid=prev</id>
		<title>Indicwiki: 1 revision imported from :alpha:Module:Greek_numeral</title>
		<link rel="alternate" type="text/html" href="https://www.vigyanwiki.in/index.php?title=Module:Greek_numeral&amp;diff=213326&amp;oldid=prev"/>
		<updated>2023-07-12T06:30:05Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported from &lt;a href=&quot;https://alpha.indicwiki.in/index.php?title=Module:Greek_numeral&quot; class=&quot;extiw&quot; title=&quot;alpha:Module:Greek numeral&quot;&gt;alpha:Module:Greek_numeral&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:00, 12 July 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en-GB&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Indicwiki</name></author>
	</entry>
	<entry>
		<id>https://www.vigyanwiki.in/index.php?title=Module:Greek_numeral&amp;diff=213325&amp;oldid=prev</id>
		<title>alpha&gt;Indicwiki: Created page with &quot;-- Convert standard numbers to greek numerals, and vice versa -- Gts-tg@el wiki, Aug. 2017  local p = {}  local greek_numerals = { 	[&quot;α&quot;]  = 1,    -- ἄλφα / alpha 	[&quot;β&quot;...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.vigyanwiki.in/index.php?title=Module:Greek_numeral&amp;diff=213325&amp;oldid=prev"/>
		<updated>2023-02-13T18:00:24Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- Convert standard numbers to greek numerals, and vice versa -- Gts-tg@el wiki, Aug. 2017  local p = {}  local greek_numerals = { 	[&amp;quot;α&amp;quot;]  = 1,    -- ἄλφα / alpha 	[&amp;quot;β&amp;quot;...&amp;quot;&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;]  = 'alpha',&lt;br /&gt;
	[&amp;quot;β&amp;quot;]  = 'beta',&lt;br /&gt;
	[&amp;quot;γ&amp;quot;]  = 'gamma',&lt;br /&gt;
	[&amp;quot;δ&amp;quot;]  = 'delta',&lt;br /&gt;
	[&amp;quot;ε&amp;quot;]  = 'epsilon',&lt;br /&gt;
	[&amp;quot;Ϛ&amp;quot;]  = 'digamma',&lt;br /&gt;
	[&amp;quot;ζ&amp;quot;]  = 'zeta',&lt;br /&gt;
	[&amp;quot;η&amp;quot;]  = 'eta',&lt;br /&gt;
	[&amp;quot;θ&amp;quot;]  = 'theta',&lt;br /&gt;
	[&amp;quot;ι&amp;quot;]  = 'iota',&lt;br /&gt;
	[&amp;quot;κ&amp;quot;]  = 'kappa',&lt;br /&gt;
	[&amp;quot;λ&amp;quot;]  = 'lambda',&lt;br /&gt;
	[&amp;quot;μ&amp;quot;]  = 'mu',&lt;br /&gt;
	[&amp;quot;ν&amp;quot;]  = 'nu',&lt;br /&gt;
	[&amp;quot;ξ&amp;quot;]  = 'xi',&lt;br /&gt;
	[&amp;quot;ο&amp;quot;]  = 'omicron',&lt;br /&gt;
	[&amp;quot;π&amp;quot;]  = 'pi',&lt;br /&gt;
	[&amp;quot;ϟ&amp;quot;]  = 'koppa',&lt;br /&gt;
	[&amp;quot;ρ&amp;quot;]  = 'rho',&lt;br /&gt;
	[&amp;quot;σ&amp;quot;]  = 'sigma',&lt;br /&gt;
	[&amp;quot;ς&amp;quot;]  = 'sigma', --(final variation)&lt;br /&gt;
	[&amp;quot;τ&amp;quot;]  = 'tau',&lt;br /&gt;
	[&amp;quot;υ&amp;quot;]  = 'upsilon',&lt;br /&gt;
	[&amp;quot;φ&amp;quot;]  = 'phi',&lt;br /&gt;
	[&amp;quot;χ&amp;quot;]  = 'chi',&lt;br /&gt;
	[&amp;quot;ψ&amp;quot;]  = 'psi',&lt;br /&gt;
	[&amp;quot;ω&amp;quot;]  = 'omega',&lt;br /&gt;
	[&amp;quot;ϡ&amp;quot;]  = 'sampi',&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 ~= 'Ϛ' and letter ~= 'ϟ' and letter ~= 'ϡ' 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  = ''&lt;br /&gt;
  local postfix = ''&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 .. '\\' .. 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 ~= '' 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;lt;math&amp;gt;\\stackrel{' .. result .. '}{\\Mu}&amp;lt;/math&amp;gt;' .. 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 = ''&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;lt;letter&amp;gt;'&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 = ''&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('0', 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 = ',' .. 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) ~= 'string' then &lt;br /&gt;
		return 'Error: value ' .. greek_number .. ' is ' .. type(greek_number) .. ' instead of expected string'  &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>alpha&gt;Indicwiki</name></author>
	</entry>
</feed>