Exemple #1
0
ring_elem Z_mod::divide(const ring_elem f, const ring_elem g) const
{
  if (g == _ZERO) assert(0); // MES: raise an exception
  if (f == _ZERO) return _ZERO;
  int h = modulus_sub(f, g, _P1);
  return h;
}
Exemple #2
0
 void divide(elem &result, elem a, elem b) const
 {
   if (a == zero || b == zero)
     result = zero;
   else
     result = modulus_sub(a,b,p1);
 }
Exemple #3
0
 void divide(elem &result, elem a, elem b) const
 {
   if (a == 0 || b == 0)
     result = 0;
   else
     result = modulus_sub(a,b,p1);
 }
Exemple #4
0
ring_elem Z_mod::subtract(const ring_elem f, const ring_elem g) const
{
  if (g == _ZERO)  return f;
  if (f == _ZERO)  return negate(g);

  int n = modulus_sub(_exp_table[f.int_val], _exp_table[g.int_val], P);
  return _log_table[n];
}
Exemple #5
0
 void subtract(elem &result, elem a, elem b) const
 {
   if (b == zero) result = a;
   else if (a == zero) result = modulus_add(b, minus_one, p1);
   else
     {
       int n = modulus_sub(exp_table[a], exp_table[b], p);
       result = log_table[n];
     }
 }
Exemple #6
0
void Z_mod::internal_subtract_to(ring_elem &f, ring_elem &g) const
{
  if (g == _ZERO) return;
  if (f == _ZERO)
    f = negate(g);
  else
    {
      int n = modulus_sub(_exp_table[f.int_val], _exp_table[g.int_val], P);
      f = _log_table[n];
    }
}
Exemple #7
0
ring_elem GF::divide(const ring_elem f, const ring_elem g) const
{
  if (g == _ZERO) assert(0); // MES: raise an exception
  if (f == _ZERO) return _ZERO;
  return modulus_sub(f, g, Q1_);
}