xref: /netbsd-src/share/man/man3lua/libm.3lua (revision ae082add65442546470c0ba499a860ee89eed305)
1*ae082addSchristos.\"
2*ae082addSchristos.\" Copyright (c) 2022 The NetBSD Foundation, Inc.
3*ae082addSchristos.\" All rights reserved.
4*ae082addSchristos.\"
5*ae082addSchristos.\" This code is derived from software contributed to The NetBSD Foundation
6*ae082addSchristos.\" by Phillip Rulon
7*ae082addSchristos.\"
8*ae082addSchristos.\" Redistribution and use in source and binary forms, with or without
9*ae082addSchristos.\" modification, are permitted provided that the following conditions
10*ae082addSchristos.\" are met:
11*ae082addSchristos.\" 1. Redistributions of source code must retain the above copyright
12*ae082addSchristos.\"    notice, this list of conditions and the following disclaimer.
13*ae082addSchristos.\" 2. Redistributions in binary form must reproduce the above copyright
14*ae082addSchristos.\"    notice, this list of conditions and the following disclaimer in the
15*ae082addSchristos.\"    documentation and/or other materials provided with the distribution.
16*ae082addSchristos.\"
17*ae082addSchristos.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18*ae082addSchristos.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19*ae082addSchristos.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20*ae082addSchristos.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21*ae082addSchristos.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22*ae082addSchristos.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23*ae082addSchristos.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24*ae082addSchristos.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25*ae082addSchristos.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26*ae082addSchristos.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27*ae082addSchristos.\" POSSIBILITY OF SUCH DAMAGE.
28*ae082addSchristos.\"
29*ae082addSchristos.Dd November 2, 2022
30*ae082addSchristos.Dt LIBM 3lua
31*ae082addSchristos.Os
32*ae082addSchristos.Sh NAME
33*ae082addSchristos.Nm libm
34*ae082addSchristos.Nd Lua interface to the
35*ae082addSchristos.Xr math 3
36*ae082addSchristoslibrary
37*ae082addSchristos.Sh SYNOPSIS
38*ae082addSchristos.Cd "local lm = require 'libm'"
39*ae082addSchristos.Sh DESCRIPTION
40*ae082addSchristosThe
41*ae082addSchristos.Nm
42*ae082addSchristosLua binding provides access to the
43*ae082addSchristos.Xr math 3
44*ae082addSchristoslibrary.  If these functions are given an argument outside the domain
45*ae082addSchristosof the function the return value will be NaN.  This can be checked with
46*ae082addSchristoslm.isnan().
47*ae082addSchristos.Pp
48*ae082addSchristosMany of these functions have native equivalents in the Lua math library.
49*ae082addSchristosOthers, like
50*ae082addSchristos.Xr round 3 ,
51*ae082addSchristos.Xr cbrt 3 ,
52*ae082addSchristosand the hyperbolic trigonometry functions, are not provided without an
53*ae082addSchristosauxiliary module.  The functions that are redundant are provided for
54*ae082addSchristoscompleteness.
55*ae082addSchristos.Pp
56*ae082addSchristosSince these functions map quite closely to the functions in the math
57*ae082addSchristoslibrary, detailed information about their behavior can be found in the
58*ae082addSchristosman pages for each function in section 3 of the manual.
59*ae082addSchristos.Ss List of Functions
60*ae082addSchristos.Bl -column "copysignX" "gammaX3XX" "inverse trigonometric funcX"
61*ae082addSchristos.It Sy Name Ta Sy Man page Ta Sy Description Ta
62*ae082addSchristos.It lm.acos Ta Xr acos 3 Ta inverse trigonometric function Ta
63*ae082addSchristos.It lm.acosh Ta Xr acosh 3 Ta inverse hyperbolic function Ta
64*ae082addSchristos.It lm.asin Ta Xr asin 3 Ta inverse trigonometric function Ta
65*ae082addSchristos.It lm.asinh Ta Xr asinh 3 Ta inverse hyperbolic function Ta
66*ae082addSchristos.It lm.atan Ta Xr atan 3 Ta inverse trigonometric function Ta
67*ae082addSchristos.It lm.atanh Ta Xr atanh 3 Ta inverse hyperbolic function Ta
68*ae082addSchristos.It lm.atan2 Ta Xr atan2 3 Ta inverse trigonometric function Ta
69*ae082addSchristos.It lm.cbrt Ta Xr sqrt 3 Ta cube root Ta
70*ae082addSchristos.It lm.ceil Ta Xr ceil 3 Ta integer no less than Ta
71*ae082addSchristos.It lm.copysign Ta Xr copysign 3 Ta copy sign bit Ta
72*ae082addSchristos.It lm.cos Ta Xr cos 3 Ta trigonometric function Ta
73*ae082addSchristos.It lm.cosh Ta Xr cosh 3 Ta hyperbolic function Ta
74*ae082addSchristos.It lm.erf Ta Xr erf 3 Ta error function Ta
75*ae082addSchristos.It lm.erfc Ta Xr erf 3 Ta complementary error function Ta
76*ae082addSchristos.It lm.exp Ta Xr exp 3 Ta base e exponential Ta
77*ae082addSchristos.It lm.exp2 Ta Xr exp2 3 Ta base 2 exponential Ta
78*ae082addSchristos.It lm.expm1 Ta Xr expm1 3 Ta exp(x)\-1 Ta
79*ae082addSchristos.It lm.fabs Ta Xr fabs 3 Ta absolute value Ta
80*ae082addSchristos.It lm.fdim Ta Xr erf 3 Ta positive difference Ta
81*ae082addSchristos.It lm.finite Ta Xr finite 3 Ta test for finity Ta
82*ae082addSchristos.It lm.floor Ta Xr floor 3 Ta integer no greater than Ta
83*ae082addSchristos.It lm.fma Ta Xr fmod 3 Ta fused multiply-add Ta
84*ae082addSchristos.It lm.fmax Ta Xr fmax 3 Ta maximum Ta
85*ae082addSchristos.It lm.fmin Ta Xr fmin 3 Ta minimum Ta
86*ae082addSchristos.It lm.fmod Ta Xr fmod 3 Ta remainder Ta
87*ae082addSchristos.It lm.hypot Ta Xr hypot 3 Ta Euclidean distance Ta
88*ae082addSchristos.It lm.ilogb Ta Xr ilogb 3 Ta exponent extraction Ta
89*ae082addSchristos.It lm.isinf Ta Xr isinf 3 Ta test for infinity Ta
90*ae082addSchristos.It lm.isnan Ta Xr isnan 3 Ta test for not-a-number Ta
91*ae082addSchristos.It lm.j0 Ta Xr j0 3 Ta Bessel function Ta
92*ae082addSchristos.It lm.j1 Ta Xr j0 3 Ta Bessel function Ta
93*ae082addSchristos.It lm.jn Ta Xr j0 3 Ta Bessel function Ta
94*ae082addSchristos.It lm.lgamma Ta Xr lgamma 3 Ta log gamma function Ta
95*ae082addSchristos.It lm.log Ta Xr log 3 Ta natural logarithm Ta
96*ae082addSchristos.It lm.log10 Ta Xr log 3 Ta logarithm to base 10 Ta
97*ae082addSchristos.It lm.log1p Ta Xr log 3 Ta log(1+x) Ta
98*ae082addSchristos.It lm.nan Ta Xr nan 3 Ta return quiet \*(Na Ta
99*ae082addSchristos.It lm.nextafter Ta Xr nextafter 3 Ta next representable number Ta
100*ae082addSchristos.It lm.pow Ta Xr pow 3 Ta exponential x**y Ta
101*ae082addSchristos.It lm.remainder Ta Xr remainder 3 Ta remainder Ta
102*ae082addSchristos.It lm.rint Ta Xr rint 3 Ta round to nearest integer Ta
103*ae082addSchristos.It lm.scalbn Ta Xr scalbn 3 Ta exponent adjustment Ta
104*ae082addSchristos.It lm.sin Ta Xr sin 3 Ta trigonometric function Ta
105*ae082addSchristos.It lm.sinh Ta Xr sinh 3 Ta hyperbolic function Ta
106*ae082addSchristos.It lm.sqrt Ta Xr sqrt 3 Ta square root Ta
107*ae082addSchristos.It lm.tan Ta Xr tan 3 Ta trigonometric function Ta
108*ae082addSchristos.It lm.tanh Ta Xr tanh 3 Ta hyperbolic function Ta
109*ae082addSchristos.It lm.trunc Ta Xr trunc 3 Ta nearest integral value Ta
110*ae082addSchristos.It lm.y0 Ta Xr j0 3 Ta Bessel function Ta
111*ae082addSchristos.It lm.y1 Ta Xr j0 3 Ta Bessel function Ta
112*ae082addSchristos.It lm.yn Ta Xr j0 3 Ta Bessel function Ta
113*ae082addSchristos.El
114*ae082addSchristos.Ss List of Defined Values
115*ae082addSchristos.Bl -column "M_2_SQRTPIXX" "1.12837916709551257390XX" "2/sqrt(pi)XXX"
116*ae082addSchristos.It Sy Name Ta Sy Value Ta Sy Description
117*ae082addSchristos.It lm.M_E	2.7182818284590452354	e
118*ae082addSchristos.It lm.M_LOG2E	1.4426950408889634074	log 2e
119*ae082addSchristos.It lm.M_LOG10E	0.43429448190325182765	log 10e
120*ae082addSchristos.It lm.M_LN2	0.69314718055994530942	log e2
121*ae082addSchristos.It lm.M_LN10	2.30258509299404568402	log e10
122*ae082addSchristos.It lm.M_PI	3.14159265358979323846	pi
123*ae082addSchristos.It lm.M_PI_2	1.57079632679489661923	pi/2
124*ae082addSchristos.It lm.M_PI_4	0.78539816339744830962	pi/4
125*ae082addSchristos.It lm.M_1_PI	0.31830988618379067154	1/pi
126*ae082addSchristos.It lm.M_2_PI	0.63661977236758134308	2/pi
127*ae082addSchristos.It lm.M_2_SQRTPI	1.12837916709551257390	2/sqrt(pi)
128*ae082addSchristos.It lm.M_SQRT2	1.41421356237309504880	sqrt(2)
129*ae082addSchristos.It lm.M_SQRT1_2	0.70710678118654752440	1/sqrt(2)
130*ae082addSchristos.El
131*ae082addSchristos.Sh NOTES
132*ae082addSchristosThe functions finite, isfinite, isinf, and isnan return integers in
133*ae082addSchristosthe math library, the results are converted to lua boolean values by
134*ae082addSchristosthis interface.
135*ae082addSchristos.Sh BUGS
136*ae082addSchristosThe single precision float, and long double data types, implemented in
137*ae082addSchristosseveral of the libm routines, are not supported by this interface.
138*ae082addSchristos.Pp
139*ae082addSchristosThe math library has a long development history, but if a bug exists
140*ae082addSchristosthere, it will certainly exist in this interface as well.
141*ae082addSchristos.Sh HISTORY
142*ae082addSchristosA
143*ae082addSchristos.Nm
144*ae082addSchristosLua binding appeared in
145*ae082addSchristos.Nx 9.4 .
146*ae082addSchristos.Sh AUTHORS
147*ae082addSchristos.An -nosplit
148*ae082addSchristosThe
149*ae082addSchristos.Nm
150*ae082addSchristosLua binding was written by
151*ae082addSchristos.An Phillip Rulon .
152