Example #1
0
static int Bcompare(lua_State *L)
{
    mpi *a=Bget(L,1);
    mpi *b=Bget(L,2);
    lua_pushinteger(L,mpi_cmp_mpi(a,b));
    return 1;
}
Example #2
0
static int Blt(lua_State *L)
{
 M_APM a=Bget(L,1);
 M_APM b=Bget(L,2);
 lua_pushboolean(L,m_apm_compare(a,b)<0);
 return 1;
}
Example #3
0
static int Bcompare(lua_State *L)		/** compare(x,y) */
{
 M_APM a=Bget(L,1);
 M_APM b=Bget(L,2);
 lua_pushinteger(L,m_apm_compare(a,b));
 return 1;
}
Example #4
0
static int Blt(lua_State *L)
{
    mpi *a=Bget(L,1);
    mpi *b=Bget(L,2);
    lua_pushboolean(L, mpi_cmp_mpi(a,b)<0);
    return 1;
}
Example #5
0
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;
}
Example #6
0
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;
}
Example #7
0
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;
}
Example #8
0
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;
}
Example #9
0
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;
}
Example #10
0
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;
}
Example #11
0
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;
}
Example #12
0
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;
}
Example #13
0
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;
}
Example #14
0
static int Bgc(lua_State *L)
{
 M_APM a=Bget(L,1);
 m_apm_free(a);
 lua_pushnil(L);
 lua_setmetatable(L,1);
 return 0;
}
Example #15
0
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;
}
Example #16
0
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;
}
Example #17
0
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;
}
Example #18
0
static int Btohex(lua_State *L)
{
    mpi *a=Bget(L,1);
    int n = mpi_msb(a);
    size_t numChars = 3 + n/4;
    char *s = (char *) malloc(numChars); /*for radix 16, we are safe with one char for every 4 bits with one extra for the terminating 0*/
    mpi_write_string(a, 16, s, &numChars);
    lua_pushstring(L,s);
    free(s);
    return 1;
}
Example #19
0
static int Btotext(lua_State *L)
{
    mpi *a = Bget(L,1);
    int n = mpi_size(a);
    unsigned char *s = (unsigned char *) malloc(n);
    if (s == NULL) return 0;
    mpi_write_binary(a, s, n);
    lua_pushlstring(L, (const char *) s, n);
    free(s);
    return 1;
}
Example #20
0
/**
 * Call the client process monitor with command
 * @return
 */
private int call_cpm(char *svcnm, char *cmd, char *tag, char *subsect)
{
    UBFH *p_ub = (UBFH *)tpalloc("UBF", NULL, CPM_DEF_BUFFER_SZ);
    int ret=SUCCEED;
    long rsplen;
    char output[CPM_OUTPUT_SIZE];
    
    /* Setup the call buffer... */
    if (NULL==p_ub)
    {
        NDRX_LOG(log_error, "Failed to alloc FB!");        
        FAIL_OUT(ret);
    }
    
    if (SUCCEED!=Bchg(p_ub, EX_CPMTAG, 0, tag, 0L))
    {
        NDRX_LOG(log_error, "Failed to set EX_CPMCOMMAND to %s!", tag);        
        FAIL_OUT(ret);
    }
    
    if (SUCCEED!=Bchg(p_ub, EX_CPMSUBSECT, 0, subsect, 0L))
    {
        NDRX_LOG(log_error, "Failed to set EX_CPMSUBSECT to %s!", subsect);        
        FAIL_OUT(ret);
    }
    
    if (SUCCEED!=Bchg(p_ub, EX_CPMCOMMAND, 0, cmd, 0L))
    {
        NDRX_LOG(log_error, "Failed to set EX_CPMCOMMAND to %s!", cmd);
        FAIL_OUT(ret);
    }
    
    /* Call the client admin */
    if (FAIL==(ret=tpcall(svcnm, (char *)p_ub, 0L, (char **)&p_ub, &rsplen, 0L)))
    {
        fprintf(stderr, "%s\n", tpstrerror(tperrno));
    }
    
    /* print the stuff we got from CPM. */
    if (SUCCEED==Bget(p_ub, EX_CPMOUTPUT, 0, (char *)output, 0L))
    {
        fprintf(stdout, "%s\n", output);
    }

out:

    if (NULL!=p_ub)
    {
        tpfree((char *)p_ub);
    }

    return ret;
}
Example #21
0
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;
}
Example #22
0
static int Btostring(lua_State *L)		/** tostring(x,[n,exp]) */
{
 char *s;
 M_APM a=Bget(L,1);
 int n=luaL_optint(L,2,DIGITS);
 if (lua_toboolean(L,3))
 {
  int m=(n<0) ? m_apm_significant_digits(a) : n;
  s=malloc(m+16);
  if (s!=NULL) m_apm_to_string(s,n,a);
 }
 else
  s=m_apm_to_fixpt_stringexp(n,a,'.',0,0);
 lua_pushstring(L,s);
 if (s!=NULL) free(s);
 return 1;
}
Example #23
0
void RUNTX(TPSVCINFO *p_svc)
{
    int first=1;
    UBFH *p_ub = (UBFH *)p_svc->data;
    char buf[1024];

    p_ub = (UBFH *)tprealloc ((char *)p_ub, Bsizeof (p_ub) + 4096);

    if (SUCCEED!=Bget(p_ub, T_STRING_FLD, 0, buf, 0))
    {
        NDRX_LOG(log_error, "TESTERROR: Failed to get T_STRING_FLD: %s",
                                          Bstrerror(Berror));
        tpreturn (TPFAIL, 0L, NULL, 0L, 0L);
    }
    
    if (SUCCEED!=__write_to_tx_file(buf))
    {
        NDRX_LOG(log_error, "TESTERROR: Failed to call __write_to_tx_file()");
        tpreturn (TPFAIL, 0L, NULL, 0L, 0L);
    }
    
    /* Return OK */
    tpreturn (TPSUCCESS, 0L, (char *)p_ub, 0L, 0L);
}
Example #24
0
void test_update_data_2(UBFH *p_ub)
{
    short s;
    long l;
    char c;
    float f;
    double d;
    char buf[100];
    BFLDLEN len;
    char carr[] = "CARRAY1 TEST STRING DATA1 --- SOME --- LONG - STUFF";

    /* OCC 0 */
    assert_equal(Bget(p_ub, T_SHORT_FLD, 0, (char *)&s, 0), SUCCEED);
    assert_equal(s, 881);
    assert_equal(Bget(p_ub, T_LONG_FLD, 0, (char *)&l, 0), SUCCEED);
    assert_equal(l, -10211);
    assert_equal(Bget(p_ub, T_CHAR_FLD, 0, (char *)&c, 0), SUCCEED);
    assert_equal(c, '1');
    assert_equal(Bget(p_ub, T_FLOAT_FLD, 0, (char *)&f, 0), SUCCEED);
    assert_double_equal(f, 117.31);
    assert_equal(Bget(p_ub, T_DOUBLE_FLD, 0, (char *)&d, 0), SUCCEED);
    assert_double_equal(d, 112312.1111);
    assert_equal(Bget(p_ub, T_STRING_FLD, 0, (char *)buf, 0), SUCCEED);
    assert_string_equal(buf, "TEST STR VAL1M THIS IS LOGN STRING");

    len = sizeof(buf);
    assert_equal(Bget(p_ub, T_CARRAY_FLD, 0, (char *)buf, &len), SUCCEED);
    assert_equal(strncmp(buf, carr, strlen(carr)), 0);

    /* OCC 1 */
    assert_equal(Bget(p_ub, T_SHORT_FLD, 6, (char *)&s, 0), SUCCEED);
    assert_equal(s, 81);
    assert_equal(Bget(p_ub, T_LONG_FLD, 6, (char *)&l, 0), SUCCEED);
    assert_equal(l, -211);
    assert_equal(Bget(p_ub, T_CHAR_FLD, 6, (char *)&c, 0), SUCCEED);
    assert_equal(c, '.');
    assert_equal(Bget(p_ub, T_FLOAT_FLD, 6, (char *)&f, 0), SUCCEED);
    assert_double_equal(f, 11.31);
    assert_equal(Bget(p_ub, T_DOUBLE_FLD, 6, (char *)&d, 0), SUCCEED);
    assert_double_equal(d, 11231.1111);
    assert_equal(Bget(p_ub, T_STRING_FLD, 6, (char *)buf, 0), SUCCEED);
    assert_string_equal(buf, "3EST STRING ARRAY2 THIS IS EVEN MORE LONGER");

    len = sizeof(buf);
    carr[0] = '2';
    assert_equal(Bget(p_ub, T_CARRAY_FLD, 6, (char *)buf, &len), SUCCEED);
    assert_equal(strncmp(buf, carr, strlen(carr)), 0);

    /* Test FLD2 */
    assert_equal(Bget(p_ub, T_SHORT_2_FLD, 1, (char *)&s, 0), SUCCEED);
    assert_equal(s, 2121);
    assert_equal(Bget(p_ub, T_LONG_2_FLD, 1, (char *)&l, 0), SUCCEED);
    assert_equal(l, 2121);
    assert_equal(Bget(p_ub, T_CHAR_2_FLD, 1, (char *)&c, 0), SUCCEED);
    assert_equal(c, 'c');
    assert_equal(Bget(p_ub, T_FLOAT_2_FLD, 1, (char *)&f, 0), SUCCEED);
    assert_double_equal(f, 1227);
    assert_equal(Bget(p_ub, T_DOUBLE_2_FLD, 1, (char *)&d, 0), SUCCEED);
    assert_double_equal(d, 1232.1);
    assert_equal(Bget(p_ub, T_STRING_2_FLD, 1, (char *)buf, 0), SUCCEED);
    assert_string_equal(buf, "XTEST STR VAL");

    len = sizeof(buf);
    carr[0] = 'G';
    assert_equal(Bget(p_ub, T_CARRAY_2_FLD, 1, (char *)buf, &len), SUCCEED);
    assert_equal(strncmp(buf, carr, strlen(carr)), 0);
}
Example #25
0
void test_update_data_1(UBFH *p_ub)
{
    short s;
    long l;
    char c;
    float f;
    double d;
    char buf[100];
    BFLDLEN len;
    char carr[] = "CARRAY1 TEST STRING DATA";

    /* OCC 0 */
    assert_equal(Bget(p_ub, T_SHORT_FLD, 0, (char *)&s, 0), SUCCEED);
    assert_equal(s, 88);
    assert_equal(Bget(p_ub, T_LONG_FLD, 0, (char *)&l, 0), SUCCEED);
    assert_equal(l, -1021);
    assert_equal(Bget(p_ub, T_CHAR_FLD, 0, (char *)&c, 0), SUCCEED);
    assert_equal(c, 'c');
    assert_equal(Bget(p_ub, T_FLOAT_FLD, 0, (char *)&f, 0), SUCCEED);
    assert_double_equal(f, 17.31);
    assert_equal(Bget(p_ub, T_DOUBLE_FLD, 0, (char *)&d, 0), SUCCEED);
    assert_double_equal(d, 12312.1111);
    assert_equal(Bget(p_ub, T_STRING_FLD, 0, (char *)buf, 0), SUCCEED);
    assert_string_equal(buf, "TEST STR VAL");

    len = sizeof(buf);
    assert_equal(Bget(p_ub, T_CARRAY_FLD, 0, (char *)buf, &len), SUCCEED);
    assert_equal(strncmp(buf, carr, strlen(carr)), 0);

    /* OCC 1 */
    assert_equal(Bget(p_ub, T_SHORT_FLD, 5, (char *)&s, 0), SUCCEED);
    assert_equal(s, 8);
    assert_equal(Bget(p_ub, T_LONG_FLD, 5, (char *)&l, 0), SUCCEED);
    assert_equal(l, -21);
    assert_equal(Bget(p_ub, T_CHAR_FLD, 5, (char *)&c, 0), SUCCEED);
    assert_equal(c, '.');
    assert_equal(Bget(p_ub, T_FLOAT_FLD, 5, (char *)&f, 0), SUCCEED);
    assert_double_equal(f, 1.31);
    assert_equal(Bget(p_ub, T_DOUBLE_FLD, 5, (char *)&d, 0), SUCCEED);
    assert_double_equal(d, 1231.1111);
    assert_equal(Bget(p_ub, T_STRING_FLD, 5, (char *)buf, 0), SUCCEED);
    assert_string_equal(buf, "TEST STRING ARRAY2");

    len = sizeof(buf);
    carr[0] = 'Y';
    assert_equal(Bget(p_ub, T_CARRAY_FLD, 5, (char *)buf, &len), SUCCEED);
    assert_equal(strncmp(buf, carr, strlen(carr)), 0);

    /* Test FLD2 */
    assert_equal(Bget(p_ub, T_SHORT_2_FLD, 8, (char *)&s, 0), SUCCEED);
    assert_equal(s, 212);
    assert_equal(Bget(p_ub, T_LONG_2_FLD, 8, (char *)&l, 0), SUCCEED);
    assert_equal(l, 212);
    assert_equal(Bget(p_ub, T_CHAR_2_FLD, 8, (char *)&c, 0), SUCCEED);
    assert_equal(c, 'b');
    assert_equal(Bget(p_ub, T_FLOAT_2_FLD, 8, (char *)&f, 0), SUCCEED);
    assert_double_equal(f, 12127);
    assert_equal(Bget(p_ub, T_DOUBLE_2_FLD, 8, (char *)&d, 0), SUCCEED);
    assert_double_equal(d, 1231232.1);
    assert_equal(Bget(p_ub, T_STRING_2_FLD, 8, (char *)buf, 0), SUCCEED);
    assert_string_equal(buf, "XTEST STR VAL");

    len = sizeof(buf);
    carr[0] = 'X';
    assert_equal(Bget(p_ub, T_CARRAY_2_FLD, 8, (char *)buf, &len), SUCCEED);
    assert_equal(strncmp(buf, carr, strlen(carr)), 0);
}
Example #26
0
static int Bdigitsin(lua_State *L)		/** digitsin(x) */
{
 M_APM a=Bget(L,1);
 lua_pushinteger(L,m_apm_significant_digits(a));
 return 1;
}
Example #27
0
static int Biszero(lua_State *L)
{
    mpi *a=Bget(L,1);
    lua_pushboolean(L, mpi_cmp_int(a,0)==0);
    return 1;
}
Example #28
0
static int Bisodd(lua_State *L)
{
    mpi *a=Bget(L,1);
    lua_pushboolean(L, mpi_get_bit(a,0));
    return 1;
}
Example #29
0
static int Bnumber(lua_State *L)
{
    Bget(L,1);
    lua_settop(L,1);
    return 1;
}
Example #30
0
static int Bbits(lua_State *L)
{
    mpi *a=Bget(L,1);
    lua_pushinteger(L, mpi_msb(a));
    return 1;
}