Class MathLib
- All Implemented Interfaces:
com.esotericsoftware.kryo.KryoSerializable
- Direct Known Subclasses:
JseMathLib
LibFunction
which implements the lua standard math
library.
It contains only the math library support that is possible on JME. For a more complete implementation based on math functions specific to JSE use org.luaj.vm2.lib.jse.JseMathLib. In Particular the following math functions are not implemented by this library:
- acos
- asin
- atan
- cosh
- log
- sinh
- tanh
- atan2
The implementations of exp()
and pow()
are constructed by
hand for JME, so will be slower and less accurate than when executed on the JSE platform.
Typically, this library is included as part of a call to either org.luaj.vm2.lib.jse.JsePlatform#standardGlobals() or
Globals globals = JsePlatform.standardGlobals();
System.out.println( globals.get("math").get("sqrt").call( LuaValue.valueOf(2) ) );
When using org.luaj.vm2.lib.jse.JsePlatform as in this example,
the subclass org.luaj.vm2.lib.jse.JseMathLib will
be included, which also includes this base functionality.
To instantiate and use it directly,
link it into your globals table via LuaValue.load(LuaValue)
using code such as:
Globals globals = new Globals();
globals.load(new JseBaseLib());
globals.load(new PackageLib());
globals.load(new MathLib());
System.out.println( globals.get("math").get("sqrt").call( LuaValue.valueOf(2) ) );
Doing so will ensure the library is properly initialized
and loaded into the globals table.
This has been implemented to match as closely as possible the behavior in the corresponding library in C.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
static final class
static final class
static final class
static final class
static final class
static final class
static class
static final class
static class
static class
static class
static final class
static final class
static class
static class
static final class
static final class
static final class
Nested classes/interfaces inherited from class com.prineside.luaj.LuaValue
LuaValue.NillableSerializer, LuaValue.None
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic MathLib
Pointer to the latest MathLib instance, used only to dispatch math.exp to tha correct platform math library.Fields inherited from class com.prineside.luaj.LuaFunction
s_metatable
Fields inherited from class com.prineside.luaj.LuaValue
ADD, CALL, CONCAT, DIV, EMPTYSTRING, ENV, EQ, FALSE, INDEX, LE, LEN, LT, METATABLE, MINUSONE, MOD, MODE, MUL, NEWINDEX, NIL, NILLABLE_SERIALIZER, NILS, NONE, NOVALS, ONE, POW, SUB, TBOOLEAN, TFUNCTION, TINT, TLIGHTUSERDATA, TNIL, TNONE, TNUMBER, TOSTRING, TRUE, TSTRING, TTABLE, TTHREAD, TUSERDATA, TVALUE, TYPE_NAMES, UNM, ZERO
-
Constructor Summary
ConstructorsConstructorDescriptionMathLib()
Construct a MathLib, which can be initialized by calling it with a modname string, and a global environment table as arguments usingcall(LuaValue, LuaValue)
. -
Method Summary
Modifier and TypeMethodDescriptionPerform one-time initialization on the library by creating a table containing the library functions, adding that table to the supplied environment, adding the table to package.loaded, and returning table as the return value.static LuaValue
dpow
(double a, double b) compute power using installed math library, or default if there is no math library installedstatic double
dpow_d
(double a, double b) double
dpow_lib
(double a, double b) Hook to override default dpow behavior with faster implementation.Methods inherited from class com.prineside.luaj.lib.TwoArgFunction
call, call, call, invoke
Methods inherited from class com.prineside.luaj.lib.LibFunction
call, read, tojstring, write
Methods inherited from class com.prineside.luaj.LuaFunction
checkfunction, classnamestub, getmetatable, isfunction, name, optfunction, strvalue, type, typename
Methods inherited from class com.prineside.luaj.LuaValue
add, add, add, and, arg, arg1, argerror, assert_, buffer, cachedDouble, cachedInt, cachedVarargsOf, cachedVarargsOf, cachedVarargsOf, cachedVarargsOf, cachedVarargsOf, cachedVarargsOf, call, checkboolean, checkclosure, checkdouble, checkglobals, checkint, checkinteger, checkjstring, checklong, checknotnil, checknumber, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, comparemt, concat, concat, concatmt, concatTo, concatTo, concatTo, div, div, div, divInto, eq, eq_b, eqmtcall, equals, error, get, get, get, gt, gt, gt, gt_b, gt_b, gt_b, gteq, gteq, gteq, gteq_b, gteq_b, gteq_b, inext, initupvalue1, invoke, invoke, invoke, invoke, invoke, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, isboolean, isclosure, isint, isinttype, islong, isnil, isnumber, isstring, istable, isthread, isuserdata, isuserdata, isvalidkey, len, length, listOf, listOf, load, lt, lt, lt, lt_b, lt_b, lt_b, lteq, lteq, lteq, lteq_b, lteq_b, lteq_b, metatag, method, method, method, method, method, method, mod, mod, mod, modFrom, mul, mul, mul, narg, neg, neq, neq_b, next, not, onInvoke, optboolean, optclosure, optdouble, optint, optinteger, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, or, pow, pow, pow, powWith, powWith, presize, raweq, raweq, raweq, raweq, raweq, rawget, rawget, rawget, rawlen, rawset, rawset, rawset, rawset, rawset, rawset, rawset, rawsetlist, set, set, set, set, set, set, set, setmetatable, strcmp, strcmp, strongvalue, sub, sub, sub, subargs, subFrom, subFrom, tableOf, tableOf, tableOf, tableOf, tableOf, tableOf, tailcallOf, testfor_b, toboolean, tobyte, tochar, todouble, tofloat, toint, tolong, tonumber, toshort, tostring, toString, touserdata, touserdata, userdataOf, userdataOf, valueOf, valueOf, valueOf, valueOf, valueOf, valueOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf
Methods inherited from class com.prineside.luaj.Varargs
argcheck, checkboolean, checkclosure, checkdouble, checkfunction, checkint, checkinteger, checkjstring, checklong, checknotnil, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, checkvalue, dealias, eval, isfunction, isnil, isnoneornil, isnumber, isstring, istable, isTailcall, isthread, isuserdata, isvalue, optboolean, optclosure, optdouble, optfunction, optint, optinteger, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, toboolean, tobyte, tochar, todouble, tofloat, toint, tojstring, tolong, toshort, touserdata, touserdata, type
-
Field Details
-
MATHLIB
Pointer to the latest MathLib instance, used only to dispatch math.exp to tha correct platform math library.
-
-
Constructor Details
-
MathLib
public MathLib()Construct a MathLib, which can be initialized by calling it with a modname string, and a global environment table as arguments usingcall(LuaValue, LuaValue)
.
-
-
Method Details
-
call
Perform one-time initialization on the library by creating a table containing the library functions, adding that table to the supplied environment, adding the table to package.loaded, and returning table as the return value.- Specified by:
call
in classTwoArgFunction
- Parameters:
modname
- the module name supplied if this is loaded via 'require'.env
- the environment to load into, typically a Globals instance.- Returns:
- First return value
(this(arg1,arg2))
, orLuaValue.NIL
if there were none. - See Also:
-
dpow
compute power using installed math library, or default if there is no math library installed -
dpow_d
public static double dpow_d(double a, double b) -
dpow_lib
public double dpow_lib(double a, double b) Hook to override default dpow behavior with faster implementation.
-