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