コード例 #1
0
ファイル: read.c プロジェクト: aaronlifton/urbit
/* u3_zx_read_c():
*/
u3_fox
u3_zx_read_c(u3_z   z,
             u3_fox a)
{
  u3_rat rat = u3_b_read(&z->l, a);

  if ( u3_none == rat ) {
    return u3_zc_tank(z, c3__exit);
  }
  else return rat; 
}
コード例 #2
0
ファイル: bex.c プロジェクト: aaronlifton/urbit
/* u3_zx_bex():
*/
u3_fox
u3_zx_bex(u3_z   z,
          u3_fox cor)
{
  u3_fox sam = u3_zh(z, u3_zh(z, cor));
  u3_fox a   = sam;

  if ( u3_no == u3_lr_stud(z, a) ) {
    return u3_zc_tank(z, c3__punt);
  }
  else return u3_zx_bex_c(z, a);
}
コード例 #3
0
ファイル: gt.c プロジェクト: mbrubeck/urbit
/* u3_zx_gt():
*/
u3_fox
u3_zx_gt(u3_z   z,
         u3_fox cob)
{
  u3_fox a, b;

  if ( (u3_no == u3_lr_cell(z, cob, &a, &b)) ||
       (u3_no == u3_lr_pat(z, a)) ||
       (u3_no == u3_lr_pat(z, b)) )
  {
    return u3_zc_tank(z, u3_cm_punt);
  }
  else {
    return u3_zx_gt_c(z, a, b);
  }
}
コード例 #4
0
ファイル: bex.c プロジェクト: aaronlifton/urbit
/* u3_zx_bex_c():
*/
u3_fox
u3_zx_bex_c(u3_z   z,
            u3_fox a)
{
  mpz_t mp_a;

  if ( !u3_rat_is_cat(a) ) {
    return u3_zc_tank(z, c3__punt);
  }
  else {
    mpz_init_set_ui(mp_a, 1);
    mpz_mul_2exp(mp_a, mp_a, a);

    return u3_zc_mp(z, mp_a);
  }
}
コード例 #5
0
ファイル: mod.c プロジェクト: aaronlifton/urbit
/* u3_zx_mod():
*/
u3_fox
u3_zx_mod(u3_z   z,
          u3_fox cor)
{
  u3_fox sam = u3_zh(z, u3_zh(z, cor));
  u3_fox a, b;

  if ( (u3_no == u3_lr_cell(z, sam, &a, &b)) ||
       (u3_no == u3_lr_stud(z, a)) ||
       (u3_no == u3_lr_stud(z, b)) )
  {
    return u3_zc_tank(z, c3__punt);
  }
  else {
    return u3_zx_mod_c(z, a, b);
  }
}
コード例 #6
0
ファイル: mod.c プロジェクト: aaronlifton/urbit
/* u3_zx_mod_c():
*/
u3_fox
u3_zx_mod_c(u3_z   z,
            u3_fox a,
            u3_fox b)
{
  if ( 0 == b ) {
    return u3_zc_tank(z, c3__exit);
  }
  else {
    mpz_t mp_a, mp_b;

    u3_lr_mp(z, mp_a, a);
    u3_lr_mp(z, mp_b, b);

    mpz_tdiv_r(mp_a, mp_a, mp_b);
    mpz_clear(mp_b);

    return u3_zc_mp(z, mp_a);
  }
}