From b945fae40e270c8085ccdd8485bb01121f0a8406 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 16 Sep 1997 16:25:59 -0300 Subject: Lua standard mathematical library --- mathlib.c | 221 -------------------------------------------------------------- 1 file changed, 221 deletions(-) delete mode 100644 mathlib.c (limited to 'mathlib.c') diff --git a/mathlib.c b/mathlib.c deleted file mode 100644 index 3be26b67..00000000 --- a/mathlib.c +++ /dev/null @@ -1,221 +0,0 @@ -/* -** mathlib.c -** Mathematics library to LUA -*/ - -char *rcs_mathlib="$Id: mathlib.c,v 1.25 1997/06/19 18:03:04 roberto Exp roberto $"; - -#include -#include - -#include "lualib.h" -#include "auxlib.h" -#include "lua.h" - -#ifndef PI -#define PI 3.14159265358979323846 -#endif -#define TODEGREE(a) ((a)*180.0/PI) -#define TORAD(a) ((a)*PI/180.0) - -static void math_abs (void) -{ - double d = luaL_check_number(1); - if (d < 0) d = -d; - lua_pushnumber (d); -} - - -static void math_sin (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (sin(TORAD(d))); -} - - - -static void math_cos (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (cos(TORAD(d))); -} - - - -static void math_tan (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (tan(TORAD(d))); -} - - -static void math_asin (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (TODEGREE(asin(d))); -} - - -static void math_acos (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (TODEGREE(acos(d))); -} - - -static void math_atan (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (TODEGREE(atan(d))); -} - - -static void math_atan2 (void) -{ - double d1 = luaL_check_number(1); - double d2 = luaL_check_number(2); - lua_pushnumber (TODEGREE(atan2(d1, d2))); -} - - -static void math_ceil (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (ceil(d)); -} - - -static void math_floor (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (floor(d)); -} - -static void math_mod (void) -{ - float x = luaL_check_number(1); - float y = luaL_check_number(2); - lua_pushnumber(fmod(x, y)); -} - - -static void math_sqrt (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (sqrt(d)); -} - - -static void math_pow (void) -{ - double d1 = luaL_check_number(1); - double d2 = luaL_check_number(2); - lua_pushnumber(pow(d1,d2)); -} - -static void math_min (void) -{ - int i=1; - double dmin = luaL_check_number(i); - while (lua_getparam(++i) != LUA_NOOBJECT) - { - double d = luaL_check_number(i); - if (d < dmin) dmin = d; - } - lua_pushnumber (dmin); -} - -static void math_max (void) -{ - int i=1; - double dmax = luaL_check_number(i); - while (lua_getparam(++i) != LUA_NOOBJECT) - { - double d = luaL_check_number(i); - if (d > dmax) dmax = d; - } - lua_pushnumber (dmax); -} - -static void math_log (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (log(d)); -} - - -static void math_log10 (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (log10(d)); -} - - -static void math_exp (void) -{ - double d = luaL_check_number(1); - lua_pushnumber (exp(d)); -} - -static void math_deg (void) -{ - float d = luaL_check_number(1); - lua_pushnumber (d*180./PI); -} - -static void math_rad (void) -{ - float d = luaL_check_number(1); - lua_pushnumber (d/180.*PI); -} - -static void math_random (void) -{ - double r = (double)(rand()%RAND_MAX) / (double)RAND_MAX; - if (lua_getparam(1) == LUA_NOOBJECT) - lua_pushnumber(r); - else - lua_pushnumber((int)(r*luaL_check_number(1)) + 1); -} - -static void math_randomseed (void) -{ - srand(luaL_check_number(1)); -} - - -static struct luaL_reg mathlib[] = { -{"abs", math_abs}, -{"sin", math_sin}, -{"cos", math_cos}, -{"tan", math_tan}, -{"asin", math_asin}, -{"acos", math_acos}, -{"atan", math_atan}, -{"atan2", math_atan2}, -{"ceil", math_ceil}, -{"floor", math_floor}, -{"mod", math_mod}, -{"sqrt", math_sqrt}, -{"min", math_min}, -{"max", math_max}, -{"log", math_log}, -{"log10", math_log10}, -{"exp", math_exp}, -{"deg", math_deg}, -{"rad", math_rad}, -{"random", math_random}, -{"randomseed", math_randomseed} -}; - -/* -** Open math library -*/ -void mathlib_open (void) -{ - luaL_openlib(mathlib, (sizeof(mathlib)/sizeof(mathlib[0]))); - lua_pushcfunction(math_pow); - lua_pushnumber(0); /* to get its tag */ - lua_settagmethod(lua_tag(lua_pop()), "pow"); -} - -- cgit v1.2.3-55-g6feb