Various helpful mathematical functions
This module includes, and is a superset of the built-in Lua math
library so it is safe to do something like the following in your own code and still have access to both libraries:
local math = require("hs.math")
local n = math.sin(math.minFloat) -- works even though they're both from different libraries
The documentation for the math library can be found at http://www.lua.org/manual/5.3/ or from the Hammerspoon console via the help command: help.lua.math
. This includes the following functions and variables:
- hs.math.abs - help available via
help.lua.math.abs
- hs.math.acos - help available via
help.lua.math.acos
- hs.math.asin - help available via
help.lua.math.asin
- hs.math.atan - help available via
help.lua.math.atan
- hs.math.ceil - help available via
help.lua.math.ceil
- hs.math.cos - help available via
help.lua.math.cos
- hs.math.deg - help available via
help.lua.math.deg
- hs.math.exp - help available via
help.lua.math.exp
- hs.math.floor - help available via
help.lua.math.floor
- hs.math.fmod - help available via
help.lua.math.fmod
- hs.math.huge - help available via
help.lua.math.huge
- hs.math.log - help available via
help.lua.math.log
- hs.math.max - help available via
help.lua.math.max
- hs.math.maxinteger - help available via
help.lua.math.maxinteger
- hs.math.min - help available via
help.lua.math.min
- hs.math.mininteger - help available via
help.lua.math.mininteger
- hs.math.modf - help available via
help.lua.math.modf
- hs.math.pi - help available via
help.lua.math.pi
- hs.math.rad - help available via
help.lua.math.rad
- hs.math.random - help available via
help.lua.math.random
- hs.math.randomseed - help available via
help.lua.math.randomseed
- hs.math.sin - help available via
help.lua.math.sin
- hs.math.sqrt - help available via
help.lua.math.sqrt
- hs.math.tan - help available via
help.lua.math.tan
- hs.math.tointeger - help available via
help.lua.math.tointeger
- hs.math.type - help available via
help.lua.math.type
- hs.math.ult - help available via
help.lua.math.ult
Additional functions and values that are specific to Hammerspoon which provide expanded math support are documented here.
Signature |
hs.math.minFloat |
Type |
Constant |
Description |
Smallest positive floating point number representable in Hammerspoon |
Notes |
- Because specifying a delay of 0 to
hs.timer.doAfter results in the event not triggering, use this value to indicate that the action should occur as soon as possible after the current code block has completed execution.
|
Signature |
hs.math.isFinite(value) -> boolean |
Type |
Function |
Description |
Returns whether or not the value is a finite number |
Parameters |
value - the value to be tested
|
Returns |
- true if the value is a finite number, or false otherwise
|
Notes |
|
Signature |
hs.math.isInfinite(value) -> 1, -1, false |
Type |
Function |
Description |
Returns whether or not the value is the mathematical equivalent of either positive or negative "Infinity" |
Parameters |
value - the value to be tested
|
Returns |
- 1 if the value is equivalent to positive infinity, -1 if the value is equivalent to negative infinity, or false otherwise.
|
Notes |
- This function specifically checks if the
value is equivalent to positive or negative infinity --- it does not do type checking. If value is not a numeric value (e.g. a string), it cannot be equivalent to positive or negative infinity and will return false. - Because lua treats any value other than
nil and false as true , the return value of this function can be safely used in conditionals when you don't care about the sign of the infinite value.
|
Signature |
hs.math.isNaN(value) -> boolean |
Type |
Function |
Description |
Returns whether or not the value is the mathematical equivalent of "Not-A-Number" |
Parameters |
value - the value to be tested
|
Returns |
- true if
value is equal to the mathematical "value" of NaN, or false otherwise
|
Notes |
- Mathematical
NaN represents an impossible value, usually the result of a calculation, yet is still considered within the domain of mathematics. The most common case is the result of n / 0 as division by 0 is considered undefined or "impossible". - This function specifically checks if the
value is NaN --- it does not do type checking. If value is not a numeric value (e.g. a string), it cannot be equivalent to NaN and this function will return false.
|
Signature |
hs.math.randomFloat() -> number |
Type |
Function |
Description |
Returns a random floating point number between 0 and 1 |
Parameters |
|
Returns |
- A random number between 0 and 1
|
Signature |
hs.math.randomFromRange(start, end) -> integer |
Type |
Function |
Description |
Returns a random integer between the start and end paramters |
Parameters |
- start - A number to start the range, must be greater than or equal to zero
- end - A number to end the range, must be greater than zero and greater than
start
|
Returns |
- A randomly chosen integer between
start and end
|