diff options
| author | christos <christos@NetBSD.org> | 2022-11-21 22:01:32 +0000 |
|---|---|---|
| committer | christos <christos@NetBSD.org> | 2022-11-21 22:01:32 +0000 |
| commit | aa8ee7f2ef496eff5f1f2b454405eafa4330a79e (patch) | |
| tree | 0220f4ad660d0fa9c1eb29825430faf1bae220bc /tests/lib/lua | |
| parent | 1a9fe3305d67bcec8f00f71582c2ea83fa493b53 (diff) | |
lua libm API from Phil Rulon
Diffstat (limited to 'tests/lib/lua')
| -rw-r--r-- | tests/lib/lua/Makefile | 9 | ||||
| -rw-r--r-- | tests/lib/lua/Makefile.inc | 1 | ||||
| -rw-r--r-- | tests/lib/lua/libm/Makefile | 20 | ||||
| -rw-r--r-- | tests/lib/lua/libm/h_lualibm.c | 89 | ||||
| -rwxr-xr-x | tests/lib/lua/libm/lualibm.lua | 92 | ||||
| -rw-r--r-- | tests/lib/lua/libm/t_lualibm.sh | 46 |
6 files changed, 257 insertions, 0 deletions
diff --git a/tests/lib/lua/Makefile b/tests/lib/lua/Makefile new file mode 100644 index 00000000000..80cc7d6239c --- /dev/null +++ b/tests/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/tests/lib/lua/Makefile.inc b/tests/lib/lua/Makefile.inc new file mode 100644 index 00000000000..01b5f23410c --- /dev/null +++ b/tests/lib/lua/Makefile.inc @@ -0,0 +1 @@ +.include "../Makefile.inc" diff --git a/tests/lib/lua/libm/Makefile b/tests/lib/lua/libm/Makefile new file mode 100644 index 00000000000..9f0f42d673f --- /dev/null +++ b/tests/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/tests/lib/lua/libm/h_lualibm.c b/tests/lib/lua/libm/h_lualibm.c new file mode 100644 index 00000000000..dca9bf2ce99 --- /dev/null +++ b/tests/lib/lua/libm/h_lualibm.c @@ -0,0 +1,89 @@ +#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("")); + TEST(nextafter(1.0e-14, 1.0)); + 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/tests/lib/lua/libm/lualibm.lua b/tests/lib/lua/libm/lualibm.lua new file mode 100755 index 00000000000..6c8e13c1114 --- /dev/null +++ b/tests/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("")) +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/tests/lib/lua/libm/t_lualibm.sh b/tests/lib/lua/libm/t_lualibm.sh new file mode 100644 index 00000000000..8e2bc0ad4e7 --- /dev/null +++ b/tests/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 +} |
