xref: /netbsd-src/tests/lib/lua/libm/lualibm.lua (revision ae082add65442546470c0ba499a860ee89eed305)
1#!/usr/bin/lua
2
3local lm = require("libm")
4
5local fmtf = "%-24s%+2.13f"
6local fmti = "%-24s%d"
7
8local function test(s,x)
9   print(string.format(fmtf, s, x))
10end
11
12local function testb(s,x)
13   print(string.format(fmti, s, x and 1 or 0))
14end
15
16test("M_E",lm.M_E);
17test("M_LOG2E",lm.M_LOG2E)
18test("M_LOG10E",lm.M_LOG10E)
19test("M_LN2",lm.M_LN2)
20test("M_LN10",lm.M_LN10)
21test("M_PI",lm.M_PI)
22test("M_PI_2",lm.M_PI_2)
23test("M_PI_4",lm.M_PI_4)
24test("M_1_PI",lm.M_1_PI)
25test("M_2_PI",lm.M_2_PI)
26test("M_2_SQRTPI",lm.M_2_SQRTPI)
27test("M_SQRT2",lm.M_SQRT2)
28test("M_SQRT1_2",lm.M_SQRT1_2)
29
30test("cos(M_PI_2)", lm.cos(lm.M_PI_2))
31test("acos(cos(M_PI_2))",lm.acos(lm.cos(lm.M_PI_2)))
32test("cosh(M_SQRT1_2)",lm.cosh(lm.M_SQRT1_2))
33test("acosh(cosh(M_SQRT1_2))",lm.acosh(lm.cosh(lm.M_SQRT1_2)))
34test("sin(M_PI_2)",lm.sin(lm.M_PI_2))
35test("asin(sin(M_PI_2))",lm.asin(lm.sin(lm.M_PI_2)))
36test("sinh(M_PI_2)",lm.sinh(lm.M_PI_2))
37test("asinh(sinh(M_PI_2))",lm.asinh(lm.sinh(lm.M_PI_2)))
38test("tan(M_SQRT2)",lm.tan(lm.M_SQRT2))
39test("atan(tan(M_SQRT2))",lm.atan(lm.tan(lm.M_SQRT2)))
40test("tanh(M_SQRT2)",lm.tanh(lm.M_SQRT2))
41test("atanh(tanh(M_SQRT2))",lm.atanh(lm.tanh(lm.M_SQRT2)))
42test("atan2(M_SQRT2,M_SQRT2)",lm.atan2(lm.M_SQRT2,lm.M_SQRT2))
43test("cbrt(8.0)",lm.cbrt(8.0))
44test("ceil(M_PI)",lm.ceil(lm.M_PI))
45test("ceil(M_E)",lm.ceil(lm.M_E))
46test("copysign(-2.0,10.0)",lm.copysign(-2.0,10.0))
47test("copysign(2.0,-10.0)",lm.copysign(2.0,-10.0))
48test("erf(M_SQRT1_2)",lm.erf(lm.M_SQRT1_2))
49test("erfc(M_SQRT1_2)",lm.erfc(lm.M_SQRT1_2))
50test("exp(M_PI_4)",lm.exp(lm.M_PI_4))
51test("exp2(3.0)",lm.exp2(3.0))
52test("expm1(M_PI_4)",lm.expm1(lm.M_PI_4))
53test("fabs(-M_SQRT2)",lm.fabs(-lm.M_SQRT2))
54test("fabs(M_SQRT2)",lm.fabs(lm.M_SQRT2))
55test("fdim(M_PI,M_PI_2)",lm.fdim(lm.M_PI,lm.M_PI_2))
56test("fdim(M_PI,-M_PI_2)",lm.fdim(lm.M_PI,-lm.M_PI_2))
57testb("finite(1.0/0.0)",lm.finite(1.0/0.0))
58test("floor(M_PI)",lm.floor(lm.M_PI))
59test("floor(M_E)",lm.floor(lm.M_E))
60test("fma(M_PI,M_E,M_SQRT2)",lm.fma(lm.M_PI,lm.M_E,lm.M_SQRT2))
61test("fmax(M_PI,M_E)",lm.fmax(lm.M_PI,lm.M_E))
62test("fmin(M_PI,M_E)",lm.fmin(lm.M_PI,lm.M_E))
63test("fmod(100.5,10.0)",lm.fmod(100.5,10.0))
64test("gamma(5.0)",lm.gamma(5.0))
65test("hypot(3.0,4.0)",lm.hypot(3.0,4.0))
66print(string.format(fmti, "ilogb(10.0)", lm.ilogb(10.0)))
67testb("isinf(1.0/0.0)",lm.isinf(1.0/0.0))
68testb("isnan(log(-1.0))",lm.isnan(lm.log(-1.0)))
69test("j0(M_PI)",lm.j0(lm.M_PI))
70test("j1(M_PI)",lm.j1(lm.M_PI))
71test("jn(3,M_PI)",lm.jn(3,lm.M_PI))
72test("lgamma(M_PI)",lm.lgamma(lm.M_PI))
73test("log(M_E)",lm.log(lm.M_E))
74test("log10(100.0)",lm.log10(100.0))
75test("log1p(M_PI)",lm.log1p(lm.M_PI))
76test("nan(\"\")",lm.nan(""))
77test("nextafter(1.0e-14,1.0)",lm.nextafter(1.0e-14,1.0))
78test("pow(M_SQRT2,2.0)",lm.pow(lm.M_SQRT2,2.0))
79test("remainder(M_PI,M_E)",lm.remainder(lm.M_PI,lm.M_E))
80test("rint(M_PI)",lm.rint(lm.M_PI))
81test("rint(M_E)",lm.rint(lm.M_E))
82print(string.format(fmtf, "scalbn(1.0,2)", lm.scalbn(1.0,2)))
83test("sin(M_PI_4)",lm.sin(lm.M_PI_4))
84test("sinh(M_PI_4)",lm.sinh(lm.M_PI_4))
85test("sqrt(9.0)",lm.sqrt(9.0))
86test("tan(M_PI_4)",lm.tan(lm.M_PI_4))
87test("tanh(M_PI_4)",lm.tanh(lm.M_PI_4))
88test("trunc(M_PI)",lm.trunc(lm.M_PI))
89test("trunc(M_E)",lm.trunc(lm.M_E))
90test("y0(M_PI)",lm.y0(lm.M_PI))
91test("y1(M_PI)",lm.y1(lm.M_PI))
92test("yn(3,M_PI)",lm.yn(3,lm.M_PI))
93