This lesson will show you how to use the Lua Math library in your scripts. This lesson assumes you have already completed the Frame Object lesson. To create a Lua script that uses the Math library: Navigate to Module:Sandbox. Add the following code and save the page: local p = {} function p.abs(frame) local x = frame.args[1] return ';abs\n:math.abs(' .. x .. ') is ' .. math.abs(x) .. '\n' end function p.acos(frame) local x = frame.args[1] return ';acos\n:math.acos(' .. x .. ') is ' .. math.acos(x) .. '\n' end function p.asin(frame) local x = frame.args[1] return ';asin\n:math.asin(' .. x .. ') is ' .. math.asin(x) .. '\n' end function p.atan(frame) local x = frame.args[1] return ';atan\n:math.atan(' .. x .. ') is ' .. math.atan(x) .. '\n' end function p.atan2(frame) local y = frame.args[1] local x = frame.args[2] return ';atan2\n:math.atan2(' .. y .. ', ' .. x .. ') is ' .. math.atan2(y, x) .. '\n' end function p.ceil(frame) local x = frame.args[1] return ';ceil\n:math.ceil(' .. x .. ') is ' .. math.ceil(x) .. '\n' end function p.cos(frame) local x = frame.args[1] return ';cos\n:math.cos(' .. x .. ') is ' .. math.cos(x) .. '\n' end function p.cosh(frame) local x = frame.args[1] return ';cosh\n:math.cosh(' .. x .. ') is ' .. math.cosh(x) .. '\n' end function p.deg(frame) local x = frame.args[1] return ';deg\n:math.deg(' .. x .. ') is ' .. math.deg(x) .. '\n' end function p.exp(frame) local x = frame.args[1] return ';exp\n:math.exp(' .. x .. ') is ' .. math.exp(x) .. '\n' end function p.floor(frame) local x = frame.args[1] return ';floor\n:math.floor(' .. x .. ') is ' .. math.floor(x) .. '\n' end function p.fmod(frame) local x = frame.args[1] local y = frame.args[2] return ';fmod\n:math.fmod(' .. x .. ', ' .. y .. ') is ' .. math.fmod(x, y) .. '\n' end function p.frexp(frame) local x = frame.args[1] return ';frexp\n:math.frexp(' .. x .. ') is ' .. math.frexp(x) .. '\n' end function p.huge() return ';huge\n:math.huge is ' .. math.huge .. '\n' end function p.ldexp(frame) local m = frame.args[1] local e = frame.args[2] return ';ldexp\n:math.ldexp(' .. m .. ', ' .. e .. ') is ' .. math.ldexp(m, e) .. '\n' end function p.log(frame) local x = frame.args[1] return ';log\n:math.log(' .. x .. ') is ' .. math.log(x) .. '\n' end function p.log10(frame) local x = frame.args[1] return ';log10\n:math.log10(' .. x .. ') is ' .. math.log10(x) .. '\n' end function p.max(frame) local x = frame.args[1] local y = frame.args[2] return ';max\n:math.max(' .. x .. ', ' .. y .. ') is ' .. math.max(x, y) .. '\n' end function p.min(frame) local x = frame.args[1] local y = frame.args[2] return ';min\n:math.min(' .. x .. ', ' .. y .. ') is ' .. math.min(x, y) .. '\n' end function p.modf(frame) local x = frame.args[1] return ';modf\n:math.modf(' .. x .. ') is ' .. math.modf(x) .. '\n' end function p.pi() return ';pi\n:math.pi is ' .. math.pi .. '\n' end function p.pow(frame) local x = frame.args[1] local y = frame.args[2] return ';pow\n:math.pow(' .. x .. ', ' .. y .. ') is ' .. math.pow(x, y) .. '\n' end function p.rad(frame) local x = frame.args[1] return ';rad\n:math.rad(' .. x .. ') is ' .. math.rad(x) .. '\n' end function p.random(frame) local m = frame.args[1] local n = frame.args[2] return ';random\n:math.random(' .. m .. ', ' .. n .. ') is ' .. math.random(m, n) .. '\n' end function p.randomseed(frame) local m = frame.args[1] local n = frame.args[2] math.randomseed(os.time()) return ';randomseed\n:math.random(' .. m .. ', ' .. n .. ') is ' .. math.random(m, n) .. '\n' end function p.sin(frame) local x = frame.args[1] return ';sin\n:math.sin(' .. x .. ') is ' .. math.sin(x) .. '\n' end function p.sinh(frame) local x = frame.args[1] return ';sinh\n:math.sinh(' .. x .. ') is ' .. math.sinh(x) .. '\n' end function p.sqrt(frame) local x = frame.args[1] return ';sqrt\n:math.sqrt(' .. x .. ') is ' .. math.sqrt(x) .. '\n' end function p.tan(frame) local x = frame.args[1] return ';tan\n:math.tan(' .. x .. ') is ' .. math.tan(x) .. '\n' end function p.tanh(frame) local x = frame.args[1] return ';tanh\n:math.tanh(' .. x .. ') is ' .. math.tanh(x) .. '\n' end return p To test your Lua script: Navigate to either the Module_talk:Sandbox page, the Wikiversity:Sandbox page, or your own user or sandbox page. Add the following code and save the page: {{#invoke:Sandbox|abs|-1}} {{#invoke:Sandbox|acos|1}} {{#invoke:Sandbox|asin|1}} {{#invoke:Sandbox|atan|1}} {{#invoke:Sandbox|atan2|1|1}} {{#invoke:Sandbox|ceil|1.5}} {{#invoke:Sandbox|cos|0.78539816339745}} {{#invoke:Sandbox|cosh|0.78539816339745}} {{#invoke:Sandbox|deg|0.78539816339745}} {{#invoke:Sandbox|exp|1}} {{#invoke:Sandbox|floor|1.5}} {{#invoke:Sandbox|fmod|5|3}} {{#invoke:Sandbox|frexp|1}} {{#invoke:Sandbox|huge}} {{#invoke:Sandbox|ldexp|1|2}} {{#invoke:Sandbox|log| 2.718281828459}} {{#invoke:Sandbox|log10|100}} {{#invoke:Sandbox|max|1|2}} {{#invoke:Sandbox|min|1|2}} {{#invoke:Sandbox|modf|1.5}} {{#invoke:Sandbox|pi}} {{#invoke:Sandbox|pow|10|2}} {{#invoke:Sandbox|rad|45}} {{#invoke:Sandbox|random|1|6}} {{#invoke:Sandbox|randomseed|1|6}} {{#invoke:Sandbox|sin|0.78539816339745}} {{#invoke:Sandbox|sinh|0.78539816339745}} {{#invoke:Sandbox|sqrt|100}} {{#invoke:Sandbox|tan|0.78539816339745}} {{#invoke:Sandbox|tanh|0.78539816339745}} The result should be similar to: abs math.abs(-1) is 1 acos math.acos(1) is 0 asin math.asin(1) is 1.5707963267949 atan math.atan(1) is 0.78539816339745 atan2 math.atan2(1, 1) is 0.78539816339745 ceil math.ceil(1.5) is 2 cos math.cos(0.78539816339745) is 0.70710678118655 cosh math.cosh(0.78539816339745) is 1.324609089252 deg math.deg(0.78539816339745) is 45 exp math.exp(1) is 2.718281828459 floor math.floor(1.5) is 1 fmod math.fmod(5, 3) is 2 frexp math.frexp(1) is 0.5 huge math.huge is inf ldexp math.ldexp(1, 2) is 4 log math.log( 2.718281828459) is 0.99999999999998 log10 math.log10(100) is 2 max math.max(1, 2) is 2 min math.min(1, 2) is 1 modf math.modf(1.5) is 1 pi math.pi is 3.1415926535898 pow math.pow(10, 2) is 100 rad math.rad(45) is 0.78539816339745 random math.random(1, 6) is 2 randomseed math.random(1, 6) is 1 sin math.sin(0.78539816339745) is 0.70710678118655 sinh math.sinh(0.78539816339745) is 0.86867096148601 sqrt math.sqrt(100) is 10 tan math.tan(0.78539816339745) is 1 tanh math.tanh(0.78539816339745) is 0.65579420263267 To understand your Lua script: math.abs(x) returns the absolute value of x returns . math.acos(x) returns the arc cosine of x (given in radians). math.asin(x) returns the arc sine of x (given in radians). math.atan(x) returns the arc tangent of x (given in radians). math.atan2(y, x) returns the arc tangent of y/x (given in radians), using the signs of both parameters to find the quadrant of the result. math.ceil(x) returns the smallest integer larger than or equal to x. math.cos(x) returns the cosine of x (given in radians). math.cosh(x) returns the hyperbolic cosine of x. math.deg(x) returns the angle x (given in radians) in degrees. math.exp(x) returns the value e^x. math.floor(x) returns the largest integer smaller than or equal to x. math.fmod(x, y) returns the remainder of the division of x by y that rounds the quotient towards zero. math.frexp(x) returns two values m and e such that x = m times 2^e, e is an integer, and the absolute value of m is in the range [0.5, 1) math.huge returns the value representing positive infinity; larger than or equal to any other numerical value. math.ldexp(m, e) returns m times 2^e (e should be an integer). math.log(x) returns the natural logarithm of x. math.log10(x) returns the base-10 logarithm of x. math.max(x, y) returns the maximum value among its arguments. math.min(x, y) returns the minimum value among its arguments. math.modf(x) returns two numbers, the integral part of x and the fractional part of x. math.pi returns the value of pi. math.pow(x, y) returns x^y. math.rad(x) returns the angle x (given in degrees) in radians. math.random(m, n) returns a pseudo-random integer in the range [m,n]. Note that unless randomseed is called first, the random number sequence will be the same every time, meaning not random. math.randomseed(os.time()) seeds the random number generator with the current server operating system elapsed time in seconds. math.sin(x) returns the sine of x (given in radians). math.sinh(x) returns the hyperbolic sine of x. math.sqrt(x) returns the square root of x. math.tan(x) returns the tangent of x (given in radians). math.tanh(x) returns the hyperbolic tangent of x. Congratulations! You've now created, tested, and understood a Lua script that uses the Math library. Lua Frame Object http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual ← Errors Lua OS Library →
{'wiki_source': 'wikiversity', 'other_info': "{'content_model': 'wikitext', 'language': 'en', 'title': 'Lua/Math Library', 'type': 'text'}"}