pfelem.cpp
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:1k
源码类别:

3G开发

开发平台:

Visual C++

  1. // pfelem.cpp
  2. //
  3. #include <iostream>
  4. #include "pfelem.h"
  5. PrimeFieldElem::PrimeFieldElem(void)
  6. {
  7.   Modulus=1;
  8.   Value=0;
  9. }
  10. PrimeFieldElem::PrimeFieldElem(int modulus)
  11. {
  12.   Modulus=modulus;
  13.   Value=0;
  14. }
  15. PrimeFieldElem::PrimeFieldElem(int modulus, int value)
  16. {
  17.   Modulus=modulus;
  18.   Value = value%modulus;
  19. }
  20. PrimeFieldElem neg( PrimeFieldElem _e1)
  21. {
  22.   return PrimeFieldElem(_e1.Modulus,(_e1.Modulus-_e1.Value));
  23. }
  24. PrimeFieldElem recip( PrimeFieldElem _e1)
  25. {
  26.   int ret_val=0;
  27.   for(int i=0; i<_e1.Modulus; i++)
  28.     {
  29.     if( ((_e1.Value*i) % _e1.Modulus) == 1 ) ret_val = i;
  30.     }
  31.   return PrimeFieldElem(_e1.Modulus,ret_val);
  32. }
  33. PrimeFieldElem operator/( const PrimeFieldElem _e1, const PrimeFieldElem _e2)
  34.   {return PrimeFieldElem(_e1.Modulus,(_e1.Value * recip(_e2).Value ));}
  35. ostream& operator<< ( ostream& s, const PrimeFieldElem& element)
  36. {
  37.   s << element.Value;
  38.   return s;
  39. }