Module:Calc
Performs a calculation.
Examples
[edit]
{{#invoke:Calc|add|5|5}}
returns 10.
{{#invoke:Calc|minus|10|5}}
returns 5.
{{#invoke:Calc|times|2|5}}
returns 10.
{{#invoke:Calc|div|10|2}}
returns 5.
{{#invoke:Calc|pow|2|5}}
returns 32.
{{#invoke:Calc|mod|3|15}}
returns 3.
Error detection
[edit]The "times" function (but not the very similar "multiplication" function) will return "You cannot multiply a number by zero" if both the second parameter is equal to 0 and the third parameter is not equal to 1. It does so using the code below.
if num2 == 0 and errordetect ~= 1 then
return RError("You cannot multiply a number by zero")
else
return num1 * num2
end
Error examples
[edit]{{#invoke:Calc|times|5|0|0}}
produces You cannot multiply a number by zero..
{{#invoke:Calc|times|5|0|1}}
produces 0.
Anti not-a-number mechanism
[edit]The "division" function (and the "div" function) will normally return n/a if all 3 parameters are equal to 0, but if the third parameter is equal to 1 it will return 1. Such a mechanism for the return of 1 is shown below.
if num1 == 0 and num2 == 0 and antinotanumber == 1 then
return 1
else
return num1 / num2
end
Anti not-a-number mechanism examples
[edit]{{#invoke:Calc|div|0|0|0}}
produces -nan
{{#invoke:Calc|div|0|0|1}}
produces 1
Loading this module in another module
[edit]To load this module in another module, use either of the below.
local calc = require('Module:Calc)
local calculate = require('Module:Calc')
Module autodoc |
---|
local p = {}
local function RError(msg)
return mw.ustring.format('<b class="error">%s</b>', msg)
end
function p.add(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
return num1 + num2
end
function p.addition(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
return num1 + num2
end
function p.minus(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
return num1 - num2
end
function p.subtraction(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
return num1 - num2
end
function p.times(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
local errordetect = tonumber(frame.args[3])
if num2 == 0 and errordetect ~= 1 then
return RError("You cannot multiply a number by zero.")
else
return num1 * num2
end
end
function p.multiplication(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
return num1 * num2
end
function p.div(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
local antinotanumber = tonumber(frame.args[3])
if num1 == 0 and num2 == 0 and antinotanumber == 1 then
return 1
else
return num1 / num2
end
end
function p.division(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
local antinotanumber = tonumber(frame.args[3])
if num1 == 0 and num2 == 0 and antinotanumber == 1 then
return 1
else
return num1 / num2
end
end
function p.mod(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
return num1 % num2
end
function p.modulo(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
return num1 % num2
end
function p.pow(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
return num1 ^ num2
end
function p.exponentiation(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
return num1 ^ num2
end
function p.size(frame)
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
local ifless = tostring(frame.args[3])
local ifmore = tostring(frame.args[4])
local ifequal = tostring(frame.args[5])
if num1 > num2 then
return ifmore
elseif num1 < num2 then
return ifless
elseif num1 == num2 then
return ifequal
else
return "Unknown"
end
end
function p.The_answer_to_life_the_universe_and_everything()
return "42" --joke
end
return p