?? gf2.txt
字號:
/**************************************************************************\MODULE: GF2SUMMARY:The class GF2 represents the field GF(2).Computationally speaking, it is not a particularly useful class.Its main use is to make the interfaces to the various finite field classes as uniform as possible.\**************************************************************************/#include <NTL/ZZ.h>class GF2 {public: GF2(); // initial value 0 GF2(const GF2& a); // copy constructor GF2& operator=(const GF2& a); // assignment GF2& operator=(long a); // assignment};long rep(GF2 a); // read-only access to representation of a/**************************************************************************\ Comparison\**************************************************************************/long operator==(GF2 a, GF2 b);long operator!=(GF2 a, GF2 b);long IsZero(GF2 a); // test for 0long IsOne(GF2 a); // test for 1// PROMOTIONS: operators ==, != promote long to GF2 on (a, b)./**************************************************************************\ Addition \**************************************************************************/// operator notation:GF2 operator+(GF2 a, GF2 b);GF2 operator-(GF2 a, GF2 b);GF2 operator-(GF2 a); // unary -GF2& operator+=(GF2& x, GF2 a);GF2& operator+=(GF2& x, long a);GF2& operator-=(GF2& x, GF2 a);GF2& operator-=(GF2& x, long a);GF2& operator++(GF2& x); // prefixvoid operator++(GF2& x, int); // postfixGF2& operator--(GF2& x); // prefixvoid operator--(GF2& x, int); // postfix// procedural versions:void add(GF2& x, GF2 a, GF2 b); // x = a + bvoid sub(GF2& x, GF2 a, GF2 b); // x = a - b void negate(GF2& x, GF2 a); // x = -a// PROMOTIONS: binary +, -, and procedures add, sub promote// from long to GF2 on (a, b)./**************************************************************************\ Multiplication \**************************************************************************/// operator notation:GF2 operator*(GF2 a, GF2 b);GF2& operator*=(GF2& x, GF2 a);GF2& operator*=(GF2& x, long a);// procedural versions:void mul(GF2& x, GF2 a, GF2 b); // x = a * bvoid sqr(GF2& x, GF2 a); // x = a^2GF2 sqr(GF2 a); // PROMOTIONS: operator * and procedure mul promote from long to GF2// on (a, b)./**************************************************************************\ Division\**************************************************************************/operator notation:GF2 operator/(z_p a, GF2 b);GF2& operator/=(GF2& x, GF2 a);GF2& operator/=(GF2& x, long a);procedural versions:void div(GF2& x, GF2 a, GF2 b);// x = a/bvoid inv(GF2& x, GF2 a);GF2 inv(GF2 a);// x = 1/a// PROMOTIONS: operator / and procedure div promote from long to GF2// on (a, b)./**************************************************************************\ Exponentiation\**************************************************************************/void power(GF2& x, GF2 a, long e); // x = a^e (e may be negative)GF2 power(GF2 a, long e); /**************************************************************************\ Random Elements\**************************************************************************/void random(GF2& x);GF2 random_GF2();// x = random element in GF2. Uses RandomBnd from ZZ./**************************************************************************\ Input/Output\**************************************************************************/ostream& operator<<(ostream& s, GF2 a);istream& operator>>(istream& s, GF2& x);// a ZZ is read and reduced mod 2/**************************************************************************\ Miscellany\**************************************************************************/void clear(GF2& x); // x = 0void set(GF2& x); // x = 1static GF2 GF2::zero();// GF2::zero() yields a read-only reference to zerovoid swap(GF2& x, GF2& y);// swap x and y
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -