Modul:Expr: Unterschied zwischen den Versionen

K
keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 8: Zeile 8:
]=]
]=]


 
-- Circumference of an ellipse. Approximation by Ramanujan's formula.
-- Returns the approximation and a locical value (true, if the data is well)
local function ellipse(a, epsilon)
epsilon = tonumber(epsilon) or false;
a = tonumber(a) or false;
if not epsilon then return 0, false; end
if not a then return 0, false; end
if epsilon < 0 or epsilon > 1 then return 0, false; end
a = math.abs(a);
local b = a * math.sqrt (1 - epsilon * epsilon);
local lambda = (a - b) / (a + b);
local circumference = math.pi * (a + b) * (1 + (3 * lambda * lambda)/(10 + math.sqrt (4 - 3 * lambda * lambda)));
if circumference then
return  circumference, true;
else
return 0, false;
end
end


local messagePrefix = "lua-module-Expr-"
local messagePrefix = "lua-module-Expr-"
Zeile 261: Zeile 279:
     return r
     return r
end -- minmax()
end -- minmax()


-- Export
-- Export
Zeile 329: Zeile 345:
     return r
     return r
end -- .Expr()
end -- .Expr()
function p.ramanujan(frame)
local semiaxis = frame.args[1] or 0;
local eps = frame.args[2] or 0;
local value, isOk = ellipse(semiaxis,eps);
if isOk then
return tostring(value);
else
return "";
end
end


return p -- Expr
return p -- Expr
Anonymer Benutzer