Editing Module:Math

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 52: Line 52:
-- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters,
-- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters,
-- and must return a number as an output. This number is then supplied as input to the next function call.
-- and must return a number as an output. This number is then supplied as input to the next function call.
local vals = makeArgArray(...)
local vals = makeArgArray(...)
local count = #vals -- The number of valid arguments
local count = #vals -- The number of valid arguments
if count == 0 then return
if count == 0 then return
-- Exit if we have no valid args, otherwise removing the first arg would cause an error.
-- Exit if we have no valid args, otherwise removing the first arg would cause an error.
nil, 0
nil, 0
end
end  
local ret = table.remove(vals, 1)
local ret = table.remove(vals, 1)
for _, val in ipairs(vals) do
for _, val in ipairs(vals) do
Line 120: Line 120:
else
else
return p._order(input_number)
return p._order(input_number)
end
end  
end
end


Line 154: Line 154:
return math.log10(denom_value);
return math.log10(denom_value);
end
end
end
end                      
end
end
end
end  


input_number, input_string = p._cleanNumber(input_string);
input_number, input_string = p._cleanNumber(input_string);
Line 163: Line 163:
else
else
return p._precision(input_string)
return p._precision(input_string)
end
end  
end
end


Line 180: Line 180:
x = string.sub(x, 1, exponent_pos - 1)
x = string.sub(x, 1, exponent_pos - 1)
result = result - tonumber(exponent)
result = result - tonumber(exponent)
end
end  


if decimal ~= nil then
if decimal ~= nil then
Line 238: Line 238:


function p._median(...)
function p._median(...)
local vals = makeArgArray(...)
local vals = makeArgArray(...)
local count = #vals
local count = #vals
table.sort(vals)
table.sort(vals)
 
if count == 0 then
if count == 0 then
return 0
return 0
end
end
 
if p._mod(count, 2) == 0 then
if p._mod(count, 2) == 0 then
return (vals[count/2] + vals[count/2+1])/2
return (vals[count/2] + vals[count/2+1])/2
Line 254: Line 254:


--[[
--[[
min
min  


Finds the minimum argument
Finds the minimum argument
Line 279: Line 279:


--[[
--[[
sum
sum  


Finds the sum
Finds the sum
Line 305: Line 305:


--[[
--[[
average
average  


Finds the average
Finds the average
Line 347: Line 347:
else
else
return p._round(value, precision)
return p._round(value, precision)
end
end  
end
end


Line 387: Line 387:
else
else
return p._mod(x, y)
return p._mod(x, y)
end
end  
end
end


Line 431: Line 431:
precision_format
precision_format


Rounds a number to the specified precision and formats according to rules
Rounds a number to the specified precision and formats according to rules  
originally used for {{template:Rnd}}.  Output is a string.
originally used for {{template:Rnd}}.  Output is a string.


Line 463: Line 463:
-- some circumstances because the terminal digits will be inaccurately reported.
-- some circumstances because the terminal digits will be inaccurately reported.
if order + precision >= 14 then
if order + precision >= 14 then
if order + p._precision(value_string) >= 14 then
orig_precision = p._precision(value_string)
precision = 13 - order;
if order + orig_precision >= 14 then
end
precision = 13 - order;      
end      
end
end


Line 472: Line 473:
value = p._round(value, precision)
value = p._round(value, precision)
current_precision = p._precision(value)
current_precision = p._precision(value)
end
end  


local formatted_num = lang:formatNum(math.abs(value))
local formatted_num = lang:formatNum(math.abs(value))
Line 482: Line 483:
else
else
sign = ''
sign = ''
end
end  


-- Handle cases requiring scientific notation
-- Handle cases requiring scientific notation
Line 491: Line 492:
formatted_num = lang:formatNum(math.abs(value))
formatted_num = lang:formatNum(math.abs(value))
else
else
order = 0;
order = 0;      
end
end
formatted_num = sign .. formatted_num
formatted_num = sign .. formatted_num


-- Pad with zeros, if needed
-- Pad with zeros, if needed  
if current_precision < precision then
if current_precision < precision then
local padding
local padding
Line 509: Line 510:


formatted_num = formatted_num .. string.rep('0', padding)
formatted_num = formatted_num .. string.rep('0', padding)
end
end          
else
else                  
padding = precision - current_precision
padding = precision - current_precision
if padding > 20 then
if padding > 20 then
Line 526: Line 527:
else
else
order = lang:formatNum(order)
order = lang:formatNum(order)
end
end  


formatted_num = formatted_num .. '<span style="margin:0 .15em 0 .25em">×</span>10<sup>' .. order .. '</sup>'
formatted_num = formatted_num .. '<span style="margin:0 .15em 0 .25em">×</span>10<sup>' .. order .. '</sup>'
Line 535: Line 536:


--[[
--[[
Helper function that interprets the input numerically.  If the
Helper function that interprets the input numerically.  If the  
input does not appear to be a number, attempts evaluating it as
input does not appear to be a number, attempts evaluating it as
a parser functions expression.
a parser functions expression.
Cancel Editing help (opens in new window)

  [] · [[]] · [[|]] · {{}} · · “” ‘’ «» ‹› „“ ‚‘ · ~ | ° &nbsp; · ± × ÷ ² ³ ½ · §
     [[Category:]] · [[:File:]] · [[Special:MyLanguage/]] · Special:MyLanguage/ · <code></code> · <nowiki></nowiki> <code><nowiki></nowiki></code> · <syntaxhighlight lang="php"></syntaxhighlight> · <includeonly></includeonly> · <noinclude></noinclude> · #REDIRECT[[]] · <translate></translate> · <languages/> · {{#translation:}} · <tvar name=1></tvar> · {{DEFAULTSORT:}} · <s></s>