LIBM(3lua)

NAME
libm - Lua interface to the math(3) library

SYNOPSIS
local lm = require 'libm'

DESCRIPTION
The libm Lua binding provides access to the math(3) library. If these functions are given an argument outside the domain of the function the return value will be NaN. This can be checked with lm.isnan().

Many of these functions have native equivalents in the Lua math library. Others, like round(3), cbrt(3), and the hyperbolic trigonometry functions, are not provided without an auxiliary module. The functions that are redundant are provided for completeness.

Since these functions map quite closely to the functions in the math library, detailed information about their behavior can be found in the man pages for each function in section 3 of the manual.

  List of Functions
Name | Man page | Description |
lm.acos | acos(3) | inverse trigonometric function |
lm.acosh | acosh(3) | inverse hyperbolic function |
lm.asin | asin(3) | inverse trigonometric function |
lm.asinh | asinh(3) | inverse hyperbolic function |
lm.atan | atan(3) | inverse trigonometric function |
lm.atanh | atanh(3) | inverse hyperbolic function |
lm.atan2 | atan2(3) | inverse trigonometric function |
lm.cbrt | sqrt(3) | cube root |
lm.ceil | ceil(3) | integer no less than |
lm.copysign | copysign(3) | copy sign bit |
lm.cos | cos(3) | trigonometric function |
lm.cosh | cosh(3) | hyperbolic function |
lm.erf | erf(3) | error function |
lm.erfc | erf(3) | complementary error function |
lm.exp | exp(3) | base e exponential |
lm.exp2 | exp2(3) | base 2 exponential |
lm.expm1 | expm1(3) | exp(x)-1 |
lm.fabs | fabs(3) | absolute value |
lm.fdim | erf(3) | positive difference |
lm.finite | finite(3) | test for finity |
lm.floor | floor(3) | integer no greater than |
lm.fma | fmod(3) | fused multiply-add |
lm.fmax | fmax(3) | maximum |
lm.fmin | fmin(3) | minimum |
lm.fmod | fmod(3) | remainder |
lm.hypot | hypot(3) | Euclidean distance |
lm.ilogb | ilogb(3) | exponent extraction |
lm.isinf | isinf(3) | test for infinity |
lm.isnan | isnan(3) | test for not-a-number |
lm.j0 | j0(3) | Bessel function |
lm.j1 | j0(3) | Bessel function |
lm.jn | j0(3) | Bessel function |
lm.lgamma | lgamma(3) | log gamma function |
lm.log | log(3) | natural logarithm |
lm.log10 | log(3) | logarithm to base 10 |
lm.log1p | log(3) | log(1+x) |
lm.nan | nan(3) | return quiet |
lm.nextafter | nextafter(3) | next representable number |
lm.pow | pow(3) | exponential x**y |
lm.remainder | remainder(3) | remainder |
lm.rint | rint(3) | round to nearest integer |
lm.scalbn | scalbn(3) | exponent adjustment |
lm.sin | sin(3) | trigonometric function |
lm.sinh | sinh(3) | hyperbolic function |
lm.sqrt | sqrt(3) | square root |
lm.tan | tan(3) | trigonometric function |
lm.tanh | tanh(3) | hyperbolic function |
lm.trunc | trunc(3) | nearest integral value |
lm.y0 | j0(3) | Bessel function |
lm.y1 | j0(3) | Bessel function |
lm.yn | j0(3) | Bessel function |

  List of Defined Values
Name | Value | Description
lm.M_E 2.7182818284590452354 e
lm.M_LOG2E 1.4426950408889634074 log 2e
lm.M_LOG10E 0.43429448190325182765 log 10e
lm.M_LN2 0.69314718055994530942 log e2
lm.M_LN10 2.30258509299404568402 log e10
lm.M_PI 3.14159265358979323846 pi
lm.M_PI_2 1.57079632679489661923 pi/2
lm.M_PI_4 0.78539816339744830962 pi/4
lm.M_1_PI 0.31830988618379067154 1/pi
lm.M_2_PI 0.63661977236758134308 2/pi
lm.M_2_SQRTPI 1.12837916709551257390 2/sqrt(pi)
lm.M_SQRT2 1.41421356237309504880 sqrt(2)
lm.M_SQRT1_2 0.70710678118654752440 1/sqrt(2)

NOTES
The functions finite, isfinite, isinf, and isnan return integers in the math library, the results are converted to lua boolean values by this interface.

BUGS
The single precision float, and long double data types, implemented in several of the libm routines, are not supported by this interface.

The math library has a long development history, but if a bug exists there, it will certainly exist in this interface as well.

HISTORY
A libm Lua binding appeared in NetBSD 9.4.

AUTHORS
-nosplit The libm Lua binding was written by Phillip Rulon.