Example #1
0
File: add.c Project: Gruelty/urbit
/* functions
*/
  u2_weak                                                         //  transfer
  j2_mbc(Pt1, add)(u2_wire wir_r, 
                   u2_atom a,                                     //  retain
                   u2_atom b)                                     //  retain
  {
    mpz_t a_mp, b_mp;

    u2_mp(a_mp, a);
    u2_mp(b_mp, b);

    mpz_add(a_mp, a_mp, b_mp);
    mpz_clear(b_mp);

    return u2_rl_mp(wir_r, a_mp);
  }
Example #2
0
File: unix.c Project: Gruelty/urbit
/* _unix_dump(): dump noun to file.
*/
static void
_unix_dump(FILE*   fil,
           u2_noun som)
{
  if ( u2_no == u2_dust(som) ) {
    mpz_t amp;

    if ( u2_yes == _unix_term(som) ) {
      c3_w met_w = u2_met(3, som);
      c3_y *buf_y = alloca(met_w + 1);

      u2_bytes(0, met_w, buf_y, som);
      buf_y[met_w] = 0;
      fprintf(fil, "%%%s", buf_y);
    }
    else {
      u2_mp(amp, som);
      gmp_fprintf(fil, "%Zd", amp);
      mpz_clear(amp);
    }
  }
  else {
    fputc('[', fil);
    _unix_dump(fil, u2_h(som));
    fprintf(fil, " ");
    _unix_dump_in(fil, u2_t(som));
    fputc(']', fil);
  }
}
Example #3
0
File: lth.c Project: mnemnion/urbit
/* functions
*/
  u2_weak                                                         //  transfer
  j2_mbc(Pt1, lth)(u2_wire wir_r, 
                   u2_atom a,                                     //  retain
                   u2_atom b)                                     //  retain
  {
    mpz_t   a_mp, b_mp;
    u2_flag cmp;

    u2_mp(a_mp, a);
    u2_mp(b_mp, b);

    cmp = (mpz_cmp(a_mp, b_mp) < 0) ? u2_yes : u2_no;

    mpz_clear(a_mp);
    mpz_clear(b_mp);

    return cmp;
  }
Example #4
0
File: bail.c Project: MacTop/urbit
/* u2_bi_mp():
**
**   Copy (b) into (a_mp).
*/
void
u2_bi_mp(u2_ray  wir_r,
         mpz_t   a_mp,
         u2_noun b)
{
  if ( u2_no == u2_stud(b) ) u2_bl_bail(wir_r, c3__exit);

  u2_mp(a_mp, b);
}
Example #5
0
File: mod.c Project: mnemnion/urbit
/* functions
*/
  u2_weak                                                         //  transfer
  j2_mbc(Pt1, mod)(u2_wire wir_r, 
                   u2_atom a,                                     //  retain
                   u2_atom b)                                     //  retain
  {
    if ( _0 == b ) {
      return u2_none;
    } else {
      mpz_t a_mp, b_mp;

      u2_mp(a_mp, a);
      u2_mp(b_mp, b);

      mpz_tdiv_r(a_mp, a_mp, b_mp);
      mpz_clear(b_mp);

      return u2_rl_mp(wir_r, a_mp);
    }
  }
Example #6
0
File: dec.c Project: mnemnion/urbit
  u2_weak                                                         //  transfer
  j2_mbc(Pt1, dec)(u2_wire wir_r, 
                   u2_atom a)                                     //  retain
  {
    if ( _0 == a ) {
      return u2_none;
    } 
    else {
      mpz_t a_mp;

      u2_mp(a_mp, a);
      mpz_sub_ui(a_mp, a_mp, 1);

      return u2_rl_mp(wir_r, a_mp);
    }
  }