1
0
Fork 0
forked from len0rd/rockbox

Lua: implement the ^ and % operators

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22070 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Maurus Cuelenaere 2009-07-27 16:06:51 +00:00
parent 74d4d0db0c
commit 527b069653
2 changed files with 33 additions and 22 deletions

View file

@ -529,13 +529,13 @@
@@ The luai_num* macros define the primitive operations over numbers.
*/
#if defined(LUA_CORE)
#include <math.h>
extern long rb_pow(long, long);
#define luai_numadd(a,b) ((a)+(b))
#define luai_numsub(a,b) ((a)-(b))
#define luai_nummul(a,b) ((a)*(b))
#define luai_numdiv(a,b) ((a)/(b))
#define luai_nummod(a,b) ((a) - floor((a)/(b))*(b))
#define luai_numpow(a,b) (pow(a,b))
#define luai_nummod(a,b) ((a)%(b))
#define luai_numpow(a,b) (rb_pow(a,b))
#define luai_numunm(a) (-(a))
#define luai_numeq(a,b) ((a)==(b))
#define luai_numlt(a,b) ((a)<(b))

View file

@ -31,29 +31,41 @@ int errno = 0;
char *strerror(int errnum)
{
(void) errnum;
DEBUGF("strerror()\n");
DEBUGF("strerror(%d)\n", errnum);
return NULL;
}
long floor(long x)
long rb_pow(long x, long n)
{
(void) x;
DEBUGF("floor()\n");
return 0;
}
long pow = 1;
unsigned long u;
long pow(long x, long y)
{
(void) x;
(void) y;
DEBUGF("pow()\n");
return 0;
if(n <= 0)
{
if(n == 0 || x == 1)
return 1;
if(x != -1)
return x != 0 ? 1/x : 0;
n = -n;
}
u = n;
while(1)
{
if(u & 01)
pow *= x;
if(u >>= 1)
x *= x;
else
break;
}
return pow;
}
int strcoll(const char * str1, const char * str2)
@ -91,4 +103,3 @@ const char* get_current_path(lua_State *L, int level)
return NULL;
}