diff options
| author | Enji Cooper <ngie@FreeBSD.org> | 2023-08-11 08:41:49 +0000 |
|---|---|---|
| committer | Enji Cooper <ngie@FreeBSD.org> | 2023-08-11 08:41:49 +0000 |
| commit | dc9c7dc6ec9ecb5449d71d79ae13f9782c866b73 (patch) | |
| tree | 77811130a73711377eb46a3e3eb9fac15fdcf746 /lib/lua | |
| parent | d328162dcb73d9041fe8ceb9fbae7276c3dacb53 (diff) | |
Diffstat (limited to 'lib/lua')
| -rw-r--r-- | lib/lua/Makefile | 9 | ||||
| -rw-r--r-- | lib/lua/Makefile.inc | 1 | ||||
| -rw-r--r-- | lib/lua/libm/Makefile | 20 | ||||
| -rw-r--r-- | lib/lua/libm/h_lualibm.c | 92 | ||||
| -rwxr-xr-x | lib/lua/libm/lualibm.lua | 92 | ||||
| -rw-r--r-- | lib/lua/libm/t_lualibm.sh | 46 |
6 files changed, 260 insertions, 0 deletions
diff --git a/lib/lua/Makefile b/lib/lua/Makefile new file mode 100644 index 000000000000..80cc7d6239c7 --- /dev/null +++ b/lib/lua/Makefile @@ -0,0 +1,9 @@ +# $NetBSD: Makefile,v 1.1 2022/11/21 22:01:33 christos Exp $ + +.include <bsd.own.mk> + +TESTS_SUBDIRS= libm + +TESTSDIR= ${TESTSBASE}/lib/lua + +.include <bsd.test.mk> diff --git a/lib/lua/Makefile.inc b/lib/lua/Makefile.inc new file mode 100644 index 000000000000..01b5f23410c8 --- /dev/null +++ b/lib/lua/Makefile.inc @@ -0,0 +1 @@ +.include "../Makefile.inc" diff --git a/lib/lua/libm/Makefile b/lib/lua/libm/Makefile new file mode 100644 index 000000000000..9f0f42d673fe --- /dev/null +++ b/lib/lua/libm/Makefile @@ -0,0 +1,20 @@ +# $NetBSD: Makefile,v 1.1 2022/11/21 22:01:33 christos Exp $ + +NOMAN= # defined + +.include <bsd.own.mk> + +TESTSDIR= ${TESTSBASE}/lib/lua/libm +TESTS_SH= t_lualibm + +BINDIR= ${TESTSDIR} +PROGS+= h_lualibm +DPADD+= ${LIBM} +LDADD+= -lm + +FILESDIR= ${TESTSDIR} +FILESMODE= 0555 +FILES+= lualibm.lua + + +.include <bsd.test.mk> diff --git a/lib/lua/libm/h_lualibm.c b/lib/lua/libm/h_lualibm.c new file mode 100644 index 000000000000..6dca7fd7dd8a --- /dev/null +++ b/lib/lua/libm/h_lualibm.c @@ -0,0 +1,92 @@ +#include <math.h> +#include <stdio.h> + +#define TEST(M_) printf("%-24s%+2.13f\n", #M_, M_) +#define TESTI(M_) printf("%-24s%d\n", #M_, M_) + +int +main(void) +{ + TEST(M_E); + TEST(M_LOG2E); + TEST(M_LOG10E); + TEST(M_LN2); + TEST(M_LN10); + TEST(M_PI); + TEST(M_PI_2); + TEST(M_PI_4); + TEST(M_1_PI); + TEST(M_2_PI); + TEST(M_2_SQRTPI); + TEST(M_SQRT2); + TEST(M_SQRT1_2); + + TEST(cos(M_PI_2)); + TEST(acos(cos(M_PI_2))); + TEST(cosh(M_SQRT1_2)); + TEST(acosh(cosh(M_SQRT1_2))); + TEST(sin(M_PI_2)); + TEST(asin(sin(M_PI_2))); + TEST(sinh(M_PI_2)); + TEST(asinh(sinh(M_PI_2))); + TEST(tan(M_SQRT2)); + TEST(atan(tan(M_SQRT2))); + TEST(tanh(M_SQRT2)); + TEST(atanh(tanh(M_SQRT2))); + TEST(atan2(M_SQRT2, M_SQRT2)); + TEST(cbrt(8.0)); + TEST(ceil(M_PI)); + TEST(ceil(M_E)); + TEST(copysign(-2.0, 10.0)); + TEST(copysign(2.0, -10.0)); + TEST(erf(M_SQRT1_2)); + TEST(erfc(M_SQRT1_2)); + TEST(exp(M_PI_4)); + TEST(exp2(3.0)); + TEST(expm1(M_PI_4)); + TEST(fabs(-M_SQRT2)); + TEST(fabs(M_SQRT2)); + TEST(fdim(M_PI, M_PI_2)); + TEST(fdim(M_PI, -M_PI_2)); + TESTI(finite(1.0 / 0.0)); + TEST(floor(M_PI)); + TEST(floor(M_E)); + TEST(fma(M_PI, M_E, M_SQRT2)); + TEST(fmax(M_PI, M_E)); + TEST(fmin(M_PI, M_E)); + TEST(fmod(100.5, 10.0)); + TEST(gamma(5.0)); + TEST(hypot(3.0, 4.0)); + printf("%-24s%d\n", "ilogb(10.0)", ilogb(10.0)); + TESTI(isinf(1.0 / 0.0)); + TESTI(isnan(log(-1.0))); + TEST(j0(M_PI)); + TEST(j1(M_PI)); + TEST(jn(3, M_PI)); + TEST(lgamma(M_PI)); + TEST(log(M_E)); + TEST(log10(100.0)); + TEST(log1p(M_PI)); + TEST(nan("")); +#ifdef notyet + // XXX: vax + TEST(nextafter(1.0e-14, 1.0)); +#endif + TEST(pow(M_SQRT2, 2.0)); + TEST(remainder(M_PI, M_E)); + TEST(rint(M_PI)); + TEST(rint(M_E)); + printf("%-24s%+2.13f\n", "scalbn(1.0, 2)", scalbn(1.0, 2)); + TEST(sin(M_PI_4)); + TEST(sinh(M_PI_4)); + TEST(sqrt(9.0)); + TEST(tan(M_PI_4)); + TEST(tanh(M_PI_4)); + TEST(trunc(M_PI)); + TEST(trunc(M_E)); + TEST(y0(M_PI)); + TEST(y1(M_PI)); + TEST(yn(3, M_PI)); + + return 0; +} diff --git a/lib/lua/libm/lualibm.lua b/lib/lua/libm/lualibm.lua new file mode 100755 index 000000000000..0036bd704fbb --- /dev/null +++ b/lib/lua/libm/lualibm.lua @@ -0,0 +1,92 @@ +#!/usr/bin/lua + +local lm = require("libm") + +local fmtf = "%-24s%+2.13f" +local fmti = "%-24s%d" + +local function test(s, x) + print(string.format(fmtf, s, x)) +end + +local function testb(s, x) + print(string.format(fmti, s, x and 1 or 0)) +end + +test("M_E", lm.M_E); +test("M_LOG2E", lm.M_LOG2E) +test("M_LOG10E", lm.M_LOG10E) +test("M_LN2", lm.M_LN2) +test("M_LN10", lm.M_LN10) +test("M_PI", lm.M_PI) +test("M_PI_2", lm.M_PI_2) +test("M_PI_4", lm.M_PI_4) +test("M_1_PI", lm.M_1_PI) +test("M_2_PI", lm.M_2_PI) +test("M_2_SQRTPI", lm.M_2_SQRTPI) +test("M_SQRT2", lm.M_SQRT2) +test("M_SQRT1_2", lm.M_SQRT1_2) + +test("cos(M_PI_2)", lm.cos(lm.M_PI_2)) +test("acos(cos(M_PI_2))", lm.acos(lm.cos(lm.M_PI_2))) +test("cosh(M_SQRT1_2)", lm.cosh(lm.M_SQRT1_2)) +test("acosh(cosh(M_SQRT1_2))", lm.acosh(lm.cosh(lm.M_SQRT1_2))) +test("sin(M_PI_2)", lm.sin(lm.M_PI_2)) +test("asin(sin(M_PI_2))", lm.asin(lm.sin(lm.M_PI_2))) +test("sinh(M_PI_2)", lm.sinh(lm.M_PI_2)) +test("asinh(sinh(M_PI_2))", lm.asinh(lm.sinh(lm.M_PI_2))) +test("tan(M_SQRT2)", lm.tan(lm.M_SQRT2)) +test("atan(tan(M_SQRT2))", lm.atan(lm.tan(lm.M_SQRT2))) +test("tanh(M_SQRT2)", lm.tanh(lm.M_SQRT2)) +test("atanh(tanh(M_SQRT2))", lm.atanh(lm.tanh(lm.M_SQRT2))) +test("atan2(M_SQRT2, M_SQRT2)", lm.atan2(lm.M_SQRT2, lm.M_SQRT2)) +test("cbrt(8.0)", lm.cbrt(8.0)) +test("ceil(M_PI)", lm.ceil(lm.M_PI)) +test("ceil(M_E)", lm.ceil(lm.M_E)) +test("copysign(-2.0, 10.0)", lm.copysign(-2.0, 10.0)) +test("copysign(2.0, -10.0)", lm.copysign(2.0, -10.0)) +test("erf(M_SQRT1_2)", lm.erf(lm.M_SQRT1_2)) +test("erfc(M_SQRT1_2)", lm.erfc(lm.M_SQRT1_2)) +test("exp(M_PI_4)", lm.exp(lm.M_PI_4)) +test("exp2(3.0)", lm.exp2(3.0)) +test("expm1(M_PI_4)", lm.expm1(lm.M_PI_4)) +test("fabs(-M_SQRT2)", lm.fabs(-lm.M_SQRT2)) +test("fabs(M_SQRT2)", lm.fabs(lm.M_SQRT2)) +test("fdim(M_PI, M_PI_2)", lm.fdim(lm.M_PI, lm.M_PI_2)) +test("fdim(M_PI, -M_PI_2)", lm.fdim(lm.M_PI, -lm.M_PI_2)) +testb("finite(1.0 / 0.0)", lm.finite(1.0 / 0.0)) +test("floor(M_PI)", lm.floor(lm.M_PI)) +test("floor(M_E)", lm.floor(lm.M_E)) +test("fma(M_PI, M_E, M_SQRT2)", lm.fma(lm.M_PI, lm.M_E, lm.M_SQRT2)) +test("fmax(M_PI, M_E)", lm.fmax(lm.M_PI, lm.M_E)) +test("fmin(M_PI, M_E)", lm.fmin(lm.M_PI, lm.M_E)) +test("fmod(100.5, 10.0)", lm.fmod(100.5, 10.0)) +test("gamma(5.0)", lm.gamma(5.0)) +test("hypot(3.0, 4.0)", lm.hypot(3.0, 4.0)) +print(string.format(fmti, "ilogb(10.0)", lm.ilogb(10.0))) +testb("isinf(1.0 / 0.0)", lm.isinf(1.0 / 0.0)) +testb("isnan(log(-1.0))", lm.isnan(lm.log(-1.0))) +test("j0(M_PI)", lm.j0(lm.M_PI)) +test("j1(M_PI)", lm.j1(lm.M_PI)) +test("jn(3, M_PI)", lm.jn(3, lm.M_PI)) +test("lgamma(M_PI)", lm.lgamma(lm.M_PI)) +test("log(M_E)", lm.log(lm.M_E)) +test("log10(100.0)", lm.log10(100.0)) +test("log1p(M_PI)", lm.log1p(lm.M_PI)) +test("nan(\"\")", lm.nan("")) +-- XXX vax test("nextafter(1.0e-14, 1.0)", lm.nextafter(1.0e-14, 1.0)) +test("pow(M_SQRT2, 2.0)", lm.pow(lm.M_SQRT2, 2.0)) +test("remainder(M_PI, M_E)", lm.remainder(lm.M_PI, lm.M_E)) +test("rint(M_PI)", lm.rint(lm.M_PI)) +test("rint(M_E)", lm.rint(lm.M_E)) +print(string.format(fmtf, "scalbn(1.0, 2)", lm.scalbn(1.0, 2))) +test("sin(M_PI_4)", lm.sin(lm.M_PI_4)) +test("sinh(M_PI_4)", lm.sinh(lm.M_PI_4)) +test("sqrt(9.0)", lm.sqrt(9.0)) +test("tan(M_PI_4)", lm.tan(lm.M_PI_4)) +test("tanh(M_PI_4)", lm.tanh(lm.M_PI_4)) +test("trunc(M_PI)", lm.trunc(lm.M_PI)) +test("trunc(M_E)", lm.trunc(lm.M_E)) +test("y0(M_PI)", lm.y0(lm.M_PI)) +test("y1(M_PI)", lm.y1(lm.M_PI)) +test("yn(3, M_PI)", lm.yn(3, lm.M_PI)) diff --git a/lib/lua/libm/t_lualibm.sh b/lib/lua/libm/t_lualibm.sh new file mode 100644 index 000000000000..8e2bc0ad4e73 --- /dev/null +++ b/lib/lua/libm/t_lualibm.sh @@ -0,0 +1,46 @@ +# $NetBSD: t_lualibm.sh,v 1.1 2022/11/21 22:01:33 christos Exp $ +# +# Copyright (c) 2008 The NetBSD Foundation, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +atf_test_case lualibm + +lualibm_head() +{ + atf_set "descr" "Checks libm implementation for lua" +} + +lualibm_body() +{ + + "$(atf_get_srcdir)/h_lualibm" > expout + atf_check -o file:expout "$(atf_get_srcdir)/lualibm.lua" +} + + +atf_init_test_cases() +{ + atf_add_test_case lualibm +} |
