<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FJohnuniq%2Fgrosstonnage</id>
	<title>Module:Sandbox/Johnuniq/grosstonnage - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FJohnuniq%2Fgrosstonnage"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Johnuniq/grosstonnage&amp;action=history"/>
	<updated>2026-07-29T10:20:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/Johnuniq/grosstonnage&amp;diff=145629&amp;oldid=prev</id>
		<title>imported&gt;Johnuniq: test Luafication of Wnt&#039;s code</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Johnuniq/grosstonnage&amp;diff=145629&amp;oldid=prev"/>
		<updated>2013-09-25T01:17:47Z</updated>

		<summary type="html">&lt;p&gt;test Luafication of Wnt&amp;#039;s code&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Test idea from Wnt to convert GT (gross tonnage) to/from volume.&lt;br /&gt;
-- Usage: {{#invoke:Sandbox/Johnuniq/grosstonnage | run_tests | vol1 | vol2 | step}}&lt;br /&gt;
-- where parameters vol1, vol2, step are optional numbers.&lt;br /&gt;
-- Using {{#invoke:sandbox/Johnuniq/grosstonnage | run_tests}}&lt;br /&gt;
-- sets vol1 = 0, vol2 = 100,000, step = 1000&lt;br /&gt;
-- which outputs results from 0 to 100,000 cubic meters, in steps of 1000.&lt;br /&gt;
--&lt;br /&gt;
-- In the debug console, can do quick calculations:&lt;br /&gt;
-- =p.gt(10000)&lt;br /&gt;
-- =p.vol(2800)&lt;br /&gt;
&lt;br /&gt;
local abs = math.abs&lt;br /&gt;
local log10 = math.log10&lt;br /&gt;
&lt;br /&gt;
local function collection()&lt;br /&gt;
    -- Return a table to hold lines of text.&lt;br /&gt;
    return {&lt;br /&gt;
        n = 0,&lt;br /&gt;
        add = function (self, s)&lt;br /&gt;
            self.n = self.n + 1&lt;br /&gt;
            self[self.n] = s&lt;br /&gt;
        end,&lt;br /&gt;
        join = function (self, sep)&lt;br /&gt;
            return table.concat(self, sep or &amp;#039;\n&amp;#039;)&lt;br /&gt;
        end,&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function gross_tonnage(volume)&lt;br /&gt;
    -- Return GT equivalent to given volume in cubic meters.&lt;br /&gt;
    -- GT = (0.2 + 0.02 * log10(cubic_meters)) * cubic_meters&lt;br /&gt;
    if volume &amp;gt; 0 then&lt;br /&gt;
        return (0.2 + 0.02 * log10(volume)) * volume&lt;br /&gt;
    end&lt;br /&gt;
    return 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function volume_from_gt(gross_tonnage)&lt;br /&gt;
    -- Return volume in cubic meters equivalent to given gross tonnage.&lt;br /&gt;
    -- GT = (0.2 + 0.02 * log10(cubic_meters)) * cubic_meters&lt;br /&gt;
    if gross_tonnage &amp;lt;= 0 then&lt;br /&gt;
        return 0&lt;br /&gt;
    end&lt;br /&gt;
    local k_factor = 0.20&lt;br /&gt;
    local volume = gross_tonnage / k_factor&lt;br /&gt;
    for i = 1, 100 do&lt;br /&gt;
        k_factor = 0.20 + 0.02 * log10(volume)&lt;br /&gt;
        local new_volume = gross_tonnage / k_factor&lt;br /&gt;
        if abs(new_volume - volume) &amp;lt; 0.1 then&lt;br /&gt;
            return new_volume, i  -- also return i for curiosity&lt;br /&gt;
        end&lt;br /&gt;
        volume = new_volume&lt;br /&gt;
    end&lt;br /&gt;
    print(&amp;#039;Bug: Too many iterations&amp;#039;)&lt;br /&gt;
    return 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function run_tests(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local vol1 = tonumber(args[1]) or 0&lt;br /&gt;
    local vol2 = tonumber(args[2]) or 1e5&lt;br /&gt;
    local step = tonumber(args[3]) or 1000&lt;br /&gt;
    local results = collection()&lt;br /&gt;
    results:add(&amp;#039;&amp;lt;pre&amp;gt;&amp;#039;)&lt;br /&gt;
    results:add(&amp;#039;   Vol_input    Gross_ton    Vol_output  Iter&amp;#039;)&lt;br /&gt;
    for v = vol1, vol2, step do&lt;br /&gt;
        local gt = gross_tonnage(v)&lt;br /&gt;
        local vout, iterations = volume_from_gt(gt)&lt;br /&gt;
        results:add(string.format(&amp;#039;%12.2f %12.2f %12.5f %3d&amp;#039;, v, gt, vout, iterations or 0))&lt;br /&gt;
    end&lt;br /&gt;
    results:add(&amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;)&lt;br /&gt;
    return results:join()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return { gt = gross_tonnage, vol = volume_from_gt, run_tests = run_tests }&lt;/div&gt;</summary>
		<author><name>imported&gt;Johnuniq</name></author>
	</entry>
</feed>