diff --git a/lmathlib.c b/lmathlib.c index b07048c7..4eeaae9e 100644 --- a/lmathlib.c +++ b/lmathlib.c @@ -1,5 +1,5 @@ /* -** $Id: lmathlib.c,v 1.83 2013/03/07 18:21:32 roberto Exp roberto $ +** $Id: lmathlib.c,v 1.84 2013/05/02 17:31:54 roberto Exp roberto $ ** Standard mathematical library ** See Copyright Notice in lua.h */ @@ -236,6 +236,19 @@ static int math_isfloat (lua_State *L) { return 1; } + +static int math_numbits (lua_State *L) { + const char *s = luaL_checkstring(L, 1); + if (*s == 'i') + lua_pushinteger(L, sizeof(lua_Integer) * CHAR_BIT); + else if (*s == 'f') + lua_pushinteger(L, sizeof(lua_Number) * CHAR_BIT); + else + luaL_argerror(L, 1, lua_pushfstring(L, "invalid option '%s'", s)); + return 1; +} + + static const luaL_Reg mathlib[] = { {"abs", math_abs}, {"acos", math_acos}, @@ -265,6 +278,7 @@ static const luaL_Reg mathlib[] = { {"randomseed", math_randomseed}, {"sinh", math_sinh}, {"sin", math_sin}, + {"numbits", math_numbits}, {"sqrt", math_sqrt}, {"tanh", math_tanh}, {"tan", math_tan},