From 49f90ffdebf2ae10f9fe9579d90bcf2da692b7a6 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 4 Mar 2005 15:57:03 -0300 Subject: new functions (to complete math.h) --- lmathlib.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/lmathlib.c b/lmathlib.c index 4609e3b2..25bb40cf 100644 --- a/lmathlib.c +++ b/lmathlib.c @@ -1,5 +1,5 @@ /* -** $Id: lmathlib.c,v 1.61 2004/05/10 18:11:32 roberto Exp roberto $ +** $Id: lmathlib.c,v 1.62 2005/01/07 20:00:33 roberto Exp roberto $ ** Standard mathematical library ** See Copyright Notice in lua.h */ @@ -33,16 +33,31 @@ static int math_sin (lua_State *L) { return 1; } +static int math_sinh (lua_State *L) { + lua_pushnumber(L, sinh(luaL_checknumber(L, 1))); + return 1; +} + static int math_cos (lua_State *L) { lua_pushnumber(L, cos(luaL_checknumber(L, 1))); return 1; } +static int math_cosh (lua_State *L) { + lua_pushnumber(L, cosh(luaL_checknumber(L, 1))); + return 1; +} + static int math_tan (lua_State *L) { lua_pushnumber(L, tan(luaL_checknumber(L, 1))); return 1; } +static int math_tanh (lua_State *L) { + lua_pushnumber(L, tanh(luaL_checknumber(L, 1))); + return 1; +} + static int math_asin (lua_State *L) { lua_pushnumber(L, asin(luaL_checknumber(L, 1))); return 1; @@ -78,6 +93,14 @@ static int math_mod (lua_State *L) { return 1; } +static int math_modf (lua_State *L) { + double ip; + double fp = modf(luaL_checknumber(L, 1), &ip); + lua_pushnumber(L, ip); + lua_pushnumber(L, fp); + return 2; +} + static int math_sqrt (lua_State *L) { lua_pushnumber(L, sqrt(luaL_checknumber(L, 1))); return 1; @@ -192,8 +215,11 @@ static int math_randomseed (lua_State *L) { static const luaL_reg mathlib[] = { {"abs", math_abs}, {"sin", math_sin}, + {"sinh", math_sinh}, {"cos", math_cos}, + {"cosh", math_cosh}, {"tan", math_tan}, + {"tanh", math_tanh}, {"asin", math_asin}, {"acos", math_acos}, {"atan", math_atan}, @@ -201,6 +227,7 @@ static const luaL_reg mathlib[] = { {"ceil", math_ceil}, {"floor", math_floor}, {"mod", math_mod}, + {"modf", math_modf}, {"frexp", math_frexp}, {"ldexp", math_ldexp}, {"sqrt", math_sqrt}, @@ -225,6 +252,8 @@ LUALIB_API int luaopen_math (lua_State *L) { luaL_openlib(L, LUA_MATHLIBNAME, mathlib, 0); lua_pushnumber(L, PI); lua_setfield(L, -2, "pi"); + lua_pushnumber(L, HUGE_VAL); + lua_setfield(L, -2, "huge"); return 1; } -- cgit v1.2.3-55-g6feb