# Lua/Math Library

Lua modules based on the Scribunto/Lua extension are stored in resource pages using the Module: namespace. Each module uses a table to hold functions and variables, and that containing table is returned at the end of the module code. This lesson will show you how to use the Lua Math library in your scripts.

## Prerequisites

This lesson assumes you have already completed the Frame Object lesson.

## Create a Lua Script that Uses the Math Library

To create a Lua script that uses the Math library:
* Navigate to Module:Sandbox.
* Clear all existing code.
    It's a sandbox. Everyone is free to play in the sandbox. But if you find another user is actively editing the sandbox at the same time, you may also use Module:Sandbox/Username, where Username is your Wikiversity username.
* Add the following code and save the page:

## Test Your Lua Script

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:
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

## Understand Your Lua Script

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.

## Conclusion

Congratulations! You've now created, tested, and understood a Lua script that uses the Math library. Return to the main Lua page to learn about other Lua code libraries.

## See Also

* Lua Frame Object