예제 #1
0
파일: polarbn.c 프로젝트: mrG7/polarbn
static int Bdivmod(lua_State *L)
{
    mpi *a=Bget(L,1);
    mpi *b=Bget(L,2);
    mpi *q=Bnew(L);
    mpi *r=Bnew(L);
    mpi_div_mpi(q,r,a,b);
    return 2;
}
예제 #2
0
파일: lmapm.c 프로젝트: ld-test/lmapm
static int Bidiv(lua_State *L)			/** idiv(x,y) */
{
 M_APM a=Bget(L,1);
 M_APM b=Bget(L,2);
 M_APM q=Bnew(L);
 M_APM r=Bnew(L);
 m_apm_integer_div_rem(q,r,a,b);
 return 2;
}
예제 #3
0
파일: lmapm.c 프로젝트: ld-test/lmapm
static int Bsincos(lua_State *L)		/** sincos(x) */
{
 int n=luaL_optint(L,2,DIGITS);
 M_APM a=Bget(L,1);
 M_APM s=Bnew(L);
 M_APM c=Bnew(L);
 m_apm_sin_cos(s,c,n,a);
 return 2;
}
예제 #4
0
파일: lmapm.c 프로젝트: ld-test/lmapm
static int Bdo0(lua_State *L, void (*f)(M_APM y, M_APM x))
{
 M_APM a=Bget(L,1);
 M_APM c=Bnew(L);
 f(c,a);
 return 1;
}
예제 #5
0
파일: polarbn.c 프로젝트: mrG7/polarbn
static int Binvmod(lua_State *L)
{
    mpi *a=Bget(L,1);
    mpi *m=Bget(L,2);
    mpi *c=Bnew(L);
    mpi_inv_mod(c,a,m);
    return 1;
}
예제 #6
0
파일: polarbn.c 프로젝트: mrG7/polarbn
static int Bgcd(lua_State *L)
{
    mpi *a=Bget(L,1);
    mpi *b=Bget(L,2);
    mpi *c=Bnew(L);
    mpi_gcd(c,a,b);
    return 1;
}
예제 #7
0
파일: polarbn.c 프로젝트: mrG7/polarbn
static int Bmul(lua_State *L)
{
    mpi *a=Bget(L,1);
    mpi *b=Bget(L,2);
    mpi *c=Bnew(L);
    mpi_mul_mpi(c,a,b);
    return 1;
}
예제 #8
0
파일: polarbn.c 프로젝트: mrG7/polarbn
static int Btext(lua_State *L)
{
    size_t l;
    const char *s=luaL_checklstring(L,1,&l);
    mpi *a=Bnew(L);
    mpi_read_binary(a, (unsigned char *) s, l);
    return 1;
}
예제 #9
0
파일: lmapm.c 프로젝트: ld-test/lmapm
static int Bdo2(lua_State *L, void (*f)(M_APM z, M_APM x, M_APM y))
{
 M_APM a=Bget(L,1);
 M_APM b=Bget(L,2);
 M_APM c=Bnew(L);
 f(c,a,b);
 return 1;
}
예제 #10
0
파일: lmapm.c 프로젝트: ld-test/lmapm
static int Bdo1(lua_State *L, void (*f)(M_APM y, int n, M_APM x))
{
 int n=luaL_optint(L,2,DIGITS);
 M_APM a=Bget(L,1);
 M_APM c=Bnew(L);
 f(c,n,a);
 return 1;
}
예제 #11
0
파일: lmapm.c 프로젝트: ld-test/lmapm
static int Bdo3(lua_State *L, void (*f)(M_APM z, int n, M_APM x, M_APM y))
{
 int n=luaL_optint(L,3,DIGITS);
 M_APM a=Bget(L,1);
 M_APM b=Bget(L,2);
 M_APM c=Bnew(L);
 f(c,n,a,b);
 return 1;
}
예제 #12
0
파일: polarbn.c 프로젝트: mrG7/polarbn
static int Bneg(lua_State *L)
{
    mpi A;
    mpi *a = &A;
    mpi *b=Bget(L,1);
    mpi *c=Bnew(L);
    mpi_init(a);
    mpi_sub_mpi(c, a, b);
    mpi_free(a);
    return 1;
}
예제 #13
0
파일: polarbn.c 프로젝트: mrG7/polarbn
static int Bpowmod(lua_State *L)
{
    mpi *a=Bget(L,1);
    mpi *b=Bget(L,2);
    mpi *m=Bget(L,3);
    mpi RR;
    mpi *rr=&RR;
    mpi_init(rr);
    mpi *c=Bnew(L);
    mpi_exp_mod(c,a,b,m,rr);
    mpi_free(rr);
    return 1;
}
예제 #14
0
파일: polarbn.c 프로젝트: mrG7/polarbn
static int Babs(lua_State *L)
{
    mpi *b=Bget(L,1);
    if (mpi_cmp_int(b,0)<0) {
        mpi A;
        mpi *a=&A;
        mpi *c=Bnew(L);
        mpi_init(a);
        mpi_sub_mpi(c,a,b);
        mpi_free(a);
    }
    else lua_settop(L,1);
    return 1;
}
예제 #15
0
파일: lmapm.c 프로젝트: ld-test/lmapm
static M_APM Bget(lua_State *L, int i)
{
 LL=L;
 switch (lua_type(L,i))
 {
  case LUA_TNUMBER:
  {
   M_APM x=Bnew(L);
   m_apm_set_double(x,lua_tonumber(L,i));
   lua_replace(L,i);
   return x;
  }
  case LUA_TSTRING:
  {
   M_APM x=Bnew(L);
   m_apm_set_string(x,(char*)lua_tostring(L,i));
   lua_replace(L,i);
   return x;
  }
  default:
   return *((void**)luaL_checkudata(L,i,MYTYPE));
 }
 return NULL;
}
예제 #16
0
파일: polarbn.c 프로젝트: mrG7/polarbn
static mpi *Bget(lua_State *L, int i)
{
    switch (lua_type(L,i))
    {
        case LUA_TNUMBER:
        case LUA_TSTRING:
        {
            mpi *x=Bnew(L);
            const char *s=lua_tostring(L,i);
            if(s[0]=='X' || s[0]=='x') mpi_read_string(x, 16, s+1); else mpi_read_string(x,10,s);
            lua_replace(L,i);
            return x;
        }
        default:
            return *((mpi**)luaL_checkudata(L,i,MYTYPE));
    }
    return NULL;
}