From e6babd84f77bc13ca1ce26c0311c304b5328deef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Pospi=CC=81s=CC=8Cil?= Date: Wed, 24 Nov 2021 10:55:32 +0100 Subject: [PATCH] Fix math/gamma and add math/log-gamma --- src/core/math.c | 4 +++- test/suite0011.janet | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 test/suite0011.janet diff --git a/src/core/math.c b/src/core/math.c index ce6a61fe..e4df7aee 100644 --- a/src/core/math.c +++ b/src/core/math.c @@ -286,7 +286,8 @@ JANET_DEFINE_MATHOP(fabs, fabs, "Return the absolute value of x.") JANET_DEFINE_MATHOP(floor, floor, "Returns the largest integer value number that is not greater than x.") JANET_DEFINE_MATHOP(trunc, trunc, "Returns the integer between x and 0 nearest to x.") JANET_DEFINE_MATHOP(round, round, "Returns the integer nearest to x.") -JANET_DEFINE_MATHOP(gamma, lgamma, "Returns gamma(x).") +JANET_DEFINE_MATHOP(gamma, tgamma, "Returns gamma(x).") +JANET_DEFINE_MATHOP(lgamma, lgamma, "Returns log-gamma(x).") JANET_DEFINE_MATHOP(log1p, log1p, "Returns (log base e of x) + 1 more accurately than (+ (math/log x) 1)") JANET_DEFINE_MATHOP(erf, erf, "Returns the error function of x.") JANET_DEFINE_MATHOP(erfc, erfc, "Returns the complementary error function of x.") @@ -383,6 +384,7 @@ void janet_lib_math(JanetTable *env) { JANET_CORE_REG("math/exp2", janet_exp2), JANET_CORE_REG("math/log1p", janet_log1p), JANET_CORE_REG("math/gamma", janet_gamma), + JANET_CORE_REG("math/log-gamma", janet_lgamma), JANET_CORE_REG("math/erfc", janet_erfc), JANET_CORE_REG("math/erf", janet_erf), JANET_CORE_REG("math/expm1", janet_expm1), diff --git a/test/suite0011.janet b/test/suite0011.janet new file mode 100644 index 00000000..d8289004 --- /dev/null +++ b/test/suite0011.janet @@ -0,0 +1,31 @@ +# Copyright (c) 2021 Calvin Rose & contributors +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +(import ./helper :prefix "" :exit true) +(start-suite 11) + +(assert (< 11899423.08 (math/gamma 11.5) 11899423.085) + "math/gamma") + +(assert (< 2605.1158 (math/log-gamma 500) 2605.1159) + "math/log-gamma") + +(end-suite) +