From 6b9dece367bbeeec23a506242d9c76dfc82f1f53 Mon Sep 17 00:00:00 2001 From: Enrico Horn Date: Fri, 9 Jul 2021 23:06:29 +0200 Subject: [PATCH] Fix mathlib min, max and atan2 behaviour --- .../src/main/java/org/luaj/vm2/lib/MathLib.java | 8 ++++---- .../main/java/org/luaj/vm2/lib/jse/JseMathLib.java | 14 ++++++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/luaj-core/src/main/java/org/luaj/vm2/lib/MathLib.java b/luaj-core/src/main/java/org/luaj/vm2/lib/MathLib.java index 38eed3d4..1618076e 100644 --- a/luaj-core/src/main/java/org/luaj/vm2/lib/MathLib.java +++ b/luaj-core/src/main/java/org/luaj/vm2/lib/MathLib.java @@ -269,9 +269,9 @@ public class MathLib extends TwoArgFunction { static class max extends VarArgFunction { @Override public Varargs invoke(Varargs args) { - LuaValue m = args.checkvalue(1); + LuaValue m = args.checknumber(1); for (int i = 2, n = args.narg(); i <= n; ++i) { - LuaValue v = args.checkvalue(i); + LuaValue v = args.checknumber(i); if (m.lt_b(v)) m = v; } @@ -282,9 +282,9 @@ public class MathLib extends TwoArgFunction { static class min extends VarArgFunction { @Override public Varargs invoke(Varargs args) { - LuaValue m = args.checkvalue(1); + LuaValue m = args.checknumber(1); for (int i = 2, n = args.narg(); i <= n; ++i) { - LuaValue v = args.checkvalue(i); + LuaValue v = args.checknumber(i); if (v.lt_b(m)) m = v; } diff --git a/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseMathLib.java b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseMathLib.java index aeb12244..e0fb80ac 100644 --- a/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseMathLib.java +++ b/luaj-jse/src/main/java/org/luaj/vm2/lib/jse/JseMathLib.java @@ -96,9 +96,8 @@ public class JseMathLib extends org.luaj.vm2.lib.MathLib { LuaValue math = env.get("math"); math.set("acos", new acos()); math.set("asin", new asin()); - LuaValue atan = new atan2(); - math.set("atan", atan); - math.set("atan2", atan); + math.set("atan", new atan()); + math.set("atan2", new atan2()); math.set("cosh", new cosh()); math.set("exp", new exp()); math.set("log", new log()); @@ -118,13 +117,20 @@ public class JseMathLib extends org.luaj.vm2.lib.MathLib { protected double call(double d) { return Math.asin(d); } } - static final class atan2 extends TwoArgFunction { + static final class atan extends TwoArgFunction { @Override public LuaValue call(LuaValue x, LuaValue y) { return valueOf(Math.atan2(x.checkdouble(), y.optdouble(1))); } } + static final class atan2 extends TwoArgFunction { + @Override + public LuaValue call(LuaValue x, LuaValue y) { + return valueOf(Math.atan2(x.checkdouble(), y.checkdouble())); + } + } + static final class cosh extends UnaryOp { @Override protected double call(double d) { return Math.cosh(d); }