Пример #1
0
static void fp_neg(element_ptr n, element_ptr a) {
  if (fp_is0(a)) {
    fp_set0(n);
  } else {
    fp_field_data_ptr p = a->field->data;
    mpn_sub_n(n->data, p->primelimbs, a->data, p->limbs);
  }
}
Пример #2
0
static int fp_sgn_even(element_ptr a) {
  fp_field_data_ptr p = a->field->data;
  if (fp_is0(a)) return 0;
  mp_limb_t *sum = _alloca(p->limbs * sizeof(mp_limb_t));

  int carry = mpn_add_n(sum, a->data, a->data, p->limbs);
  if (carry) return 1;
  return mpn_cmp(sum, p->primelimbs, p->limbs);
}
Пример #3
0
Файл: tinyfp.c Проект: blynn/pbc
static int fp_is_sqr(element_ptr a) {
  int res;
  mpz_t z;
  mpz_init(z);
  //0 is a square
  if (fp_is0(a)) return 1;
  fp_to_mpz(z, a);
  res = mpz_legendre(z, a->field->order) == 1;
  mpz_clear(z);
  return res;
}
Пример #4
0
static int fp_sgn_odd(element_ptr a) {
  if (fp_is0(a)) return 0;
  mp_limb_t *lp = a->data;
  return lp[0] & 1 ? 1 : -1;
}