| numerix_doc 0.4 | 
#include <modular_integer.hpp>
 
  
 Definition at line 153 of file modular_integer.hpp.
| static void add_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 62 of file modular_integer.hpp.
                                            {
    dest += s;
    if (dest >= m.p) dest -= m.p; }
| static void add_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 67 of file modular_integer.hpp.
                                                      {
    VERIFY (carry == 0 || carry == 1, "unexpected large carry");
    dest += s + carry;
    if (dest >= m.p) { dest -= m.p; carry= 1; } else carry= 0; }
| static void add_mod | ( | C & | dest, | 
| const C & | s1, | ||
| const C & | s2, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 73 of file modular_integer.hpp.
References modulus_add_integer_naive< V >::add_mod().
                                                          {
    dest = s1;
    add_mod (dest, s2, m); }
| static void add_mod | ( | C & | dest, | 
| const C & | s1, | ||
| const C & | s2, | ||
| const M & | m, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 78 of file modular_integer.hpp.
References modulus_add_integer_naive< V >::add_mod().
                                                                    {
    dest = s1;
    add_mod (dest, s2, m, carry); }
| static void decode_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 148 of file modular_integer.hpp.
                                               {
    (void) m;
    dest = s; }
| static void div_mod | ( | C & | dest, | 
| const C & | s1, | ||
| const C & | s2, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 174 of file modulus_naive.hpp.
References mmx::C, mmx::inv_mod(), and mmx::mul_mod().
                                                          {
    C t;
    V::inv_mod (t, s2, m);
    V::mul_mod (dest, s1, t, m); }
| static void div_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 168 of file modulus_naive.hpp.
References mmx::C, mmx::inv_mod(), and mmx::mul_mod().
                                            {
    C t = s;
    V::inv_mod (t, m);
    V::mul_mod (dest, t, m); }
| static void encode_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 137 of file modular_integer.hpp.
References mmx::reduce_mod().
                                               {
    if (s < 0 && m.p != 0) {
      dest = - s;
      V::reduce_mod (dest, m);
      dest = m.p - dest;
    }
    else
      dest = s;
      V::reduce_mod (dest, m);
  }
| static void inv_mod | ( | C & | a, | 
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 117 of file modular_integer.hpp.
                             {
    if (m.p == 0) {
      if (a == 1 || a == -1)
        return;
      else
        ERROR ("inv_mod: argument is not invertible");  
    }
    a = invert_modulo (a, m.p);
    if (a == 0 && m.p != 1)
      ERROR ("inv_mod: argument is not invertible"); }
| static void inv_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 129 of file modular_integer.hpp.
References modulus_inv_integer_naive< V >::inv_mod().
                                            {
    dest = s;
    inv_mod (dest, m); }
| static void mul_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 134 of file modulus_naive.hpp.
                                                      {
    dest *= s;
    dest += carry;
    V::reduce_mod (dest, m, carry); }
| static void mul_mod | ( | C & | dest, | 
| const C & | s1, | ||
| const C & | s2, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 140 of file modulus_naive.hpp.
                                                          {
    V::reduce_mod (dest, s1 * s2, m); }
| static void mul_mod | ( | C & | dest, | 
| const C & | s1, | ||
| const C & | s2, | ||
| const M & | m, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 144 of file modulus_naive.hpp.
                                                                    {
    V::reduce_mod (dest, s1 * s2 + carry, m, carry); }
| static void mul_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 129 of file modulus_naive.hpp.
                                            {
    dest *= s;
    V::reduce_mod (dest, m); }
| static void neg_mod | ( | C & | dest, | 
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 42 of file modular_integer.hpp.
                                {
    if (dest != 0) dest = m.p - dest; }
| static void neg_mod | ( | C & | dest, | 
| const M & | m, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 46 of file modular_integer.hpp.
                                          {
    VERIFY (carry == 0 || carry == 1, "unexpected large carry");
    if (dest != 0 || carry != 0) { dest= m.p - dest - carry; carry= 1; } }
| static void neg_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 51 of file modular_integer.hpp.
                                            {
    if (s != 0) dest = m.p - s; else dest = s;
 }
| static void neg_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 56 of file modular_integer.hpp.
                                                      {
    VERIFY (carry == 0 || carry == 1, "unexpected large carry");
    if (s != 0 || carry != 0) { dest= m.p - s - carry; carry= 1; }
    else dest= 0; }
| static bool normalize | ( | C & | p | ) |  [inline, static, inherited] | 
Definition at line 32 of file modular_integer.hpp.
                   {
    if (p < 0) p = -p;
    return true;
  }
| static void reduce_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 47 of file modulus_naive.hpp.
                                               {
    if (m.p != 0) dest = rem (s, m.p); else dest = s; }
| static void reduce_mod | ( | C & | dest, | 
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 34 of file modulus_naive.hpp.
                                   {
    if (m.p != 0) dest = rem (dest, m.p); }
| static void reduce_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 51 of file modulus_naive.hpp.
                                                         {
    if (m.p != 0) {
      carry= quo (s, m.p);
      dest = rem (s, m.p);
    }
    else {
      carry= 0;
      dest= s;
    } }
| static void reduce_mod | ( | C & | dest, | 
| const M & | m, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 38 of file modulus_naive.hpp.
                                             {
    if (m.p != 0) {
      carry= quo (dest, m.p);
      dest = rem (dest, m.p);
    }
    else
      carry= 0; }
| static void sub_mod | ( | C & | dest, | 
| const C & | s1, | ||
| const C & | s2, | ||
| const M & | m, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 108 of file modular_integer.hpp.
References modulus_add_integer_naive< V >::sub_mod().
                                                                    {
    dest = s1;
    sub_mod (dest, s2, m, carry); }
| static void sub_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 99 of file modular_integer.hpp.
References modulus_add_integer_naive< V >::sub_mod_core().
                                                      {
    sub_mod_core (dest, s, m.p, carry); }
| static void sub_mod | ( | C & | dest, | 
| const C & | s1, | ||
| const C & | s2, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 103 of file modular_integer.hpp.
References modulus_add_integer_naive< V >::sub_mod().
                                                          {
    dest = s1;
    sub_mod (dest, s2, m); }
| static void sub_mod | ( | C & | dest, | 
| const C & | s, | ||
| const M & | m | ||
| ) |  [inline, static, inherited] | 
Definition at line 95 of file modular_integer.hpp.
References modulus_add_integer_naive< V >::sub_mod_core().
                                            {
    sub_mod_core (dest, s, m.p); }
| static void sub_mod_core | ( | C & | dest, | 
| const C & | s, | ||
| const C & | p | ||
| ) |  [inline, static, inherited] | 
Definition at line 83 of file modular_integer.hpp.
                                                 {
    if (dest < s) dest += p;
    dest -= s; }
| static void sub_mod_core | ( | C & | dest, | 
| const C & | s, | ||
| const C & | p, | ||
| C & | carry | ||
| ) |  [inline, static, inherited] | 
Definition at line 88 of file modular_integer.hpp.
References mmx::C.
                                                           {
    VERIFY (carry == 0 || carry == 1, "unexpected large carry");
    C t = s + carry;
    if (t == p || dest < t) { dest += p; carry= 1; } else carry= 0;
    dest -= t; }