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:
parent
74d4d0db0c
commit
527b069653
2 changed files with 33 additions and 22 deletions
|
@ -529,13 +529,13 @@
|
||||||
@@ The luai_num* macros define the primitive operations over numbers.
|
@@ The luai_num* macros define the primitive operations over numbers.
|
||||||
*/
|
*/
|
||||||
#if defined(LUA_CORE)
|
#if defined(LUA_CORE)
|
||||||
#include <math.h>
|
extern long rb_pow(long, long);
|
||||||
#define luai_numadd(a,b) ((a)+(b))
|
#define luai_numadd(a,b) ((a)+(b))
|
||||||
#define luai_numsub(a,b) ((a)-(b))
|
#define luai_numsub(a,b) ((a)-(b))
|
||||||
#define luai_nummul(a,b) ((a)*(b))
|
#define luai_nummul(a,b) ((a)*(b))
|
||||||
#define luai_numdiv(a,b) ((a)/(b))
|
#define luai_numdiv(a,b) ((a)/(b))
|
||||||
#define luai_nummod(a,b) ((a) - floor((a)/(b))*(b))
|
#define luai_nummod(a,b) ((a)%(b))
|
||||||
#define luai_numpow(a,b) (pow(a,b))
|
#define luai_numpow(a,b) (rb_pow(a,b))
|
||||||
#define luai_numunm(a) (-(a))
|
#define luai_numunm(a) (-(a))
|
||||||
#define luai_numeq(a,b) ((a)==(b))
|
#define luai_numeq(a,b) ((a)==(b))
|
||||||
#define luai_numlt(a,b) ((a)<(b))
|
#define luai_numlt(a,b) ((a)<(b))
|
||||||
|
|
|
@ -32,28 +32,40 @@ char *strerror(int errnum)
|
||||||
{
|
{
|
||||||
(void) errnum;
|
(void) errnum;
|
||||||
|
|
||||||
DEBUGF("strerror()\n");
|
DEBUGF("strerror(%d)\n", errnum);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
long floor(long x)
|
long rb_pow(long x, long n)
|
||||||
{
|
{
|
||||||
(void) x;
|
long pow = 1;
|
||||||
|
unsigned long u;
|
||||||
|
|
||||||
DEBUGF("floor()\n");
|
if(n <= 0)
|
||||||
|
{
|
||||||
|
if(n == 0 || x == 1)
|
||||||
|
return 1;
|
||||||
|
|
||||||
return 0;
|
if(x != -1)
|
||||||
}
|
return x != 0 ? 1/x : 0;
|
||||||
|
|
||||||
long pow(long x, long y)
|
n = -n;
|
||||||
{
|
}
|
||||||
(void) x;
|
|
||||||
(void) y;
|
|
||||||
|
|
||||||
DEBUGF("pow()\n");
|
u = n;
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
if(u & 01)
|
||||||
|
pow *= x;
|
||||||
|
|
||||||
return 0;
|
if(u >>= 1)
|
||||||
|
x *= x;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pow;
|
||||||
}
|
}
|
||||||
|
|
||||||
int strcoll(const char * str1, const char * str2)
|
int strcoll(const char * str1, const char * str2)
|
||||||
|
@ -91,4 +103,3 @@ const char* get_current_path(lua_State *L, int level)
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue