00001 #include "ftwo.H"
00002 using namespace std;
00003
00004 F_2::F_2(){
00005 value= 0;
00006 }
00007
00008 F_2::F_2(long n){
00009 value= n & 1;
00010 }
00011
00012
00013
00014 F_2& F_2::operator+=(const F_2& that){
00015 value ^= that.value;
00016 return *this;
00017 }
00018
00019 F_2 F_2::operator+(const F_2& that) const {
00020 return F_2( value ^ that.value );
00021 }
00022
00023 F_2& F_2::operator-=(const F_2& that){
00024 value ^= that.value;
00025 return *this;
00026 }
00027
00028 F_2 F_2::operator-(const F_2& that) const {
00029 return F_2( value ^ that.value );
00030 }
00031
00032
00033 F_2& F_2::operator*=(const F_2& that){
00034 value &= that.value;
00035 return *this;
00036 }
00037
00038 F_2 F_2::operator*(const F_2& that) const {
00039 return F_2( value & that.value );
00040 }
00041
00042 F_2& F_2::operator/=(const F_2& that){
00043 value &= that.value;
00044 return *this;
00045 }
00046
00047 F_2 F_2::operator/(const F_2& that) const {
00048 return F_2( value & that.value );
00049 }
00050
00051
00052 F_2& F_2::operator-() {
00053 return *this;
00054 }
00055
00056 F_2 F_2::operator-() const {
00057 return *this;
00058 }
00059
00060
00061
00062 bool F_2::operator<(const F_2& that) const {
00063 return value < that.value;
00064 }
00065
00066 bool F_2::operator==(const F_2& that) const {
00067 return value == that.value;
00068 }
00069
00070 bool F_2::operator!=(const F_2& that) const {
00071 return value != that.value;
00072 }
00073
00074
00075 ostream& operator<<(ostream& os, const F_2& x){
00076
00077 os << x.value;
00078 return os;
00079 }
00080
00081 ofstream& operator<<(ofstream& file, F_2& x){
00082
00083 file << x.value;
00084 return file;
00085 }
00086
00087 void operator>>(ifstream& file, F_2& x){
00088 bool val;
00089
00090 file >> val;
00091 x.value= val;
00092 }
00093
00094
00095
00096
00097
00098 F_2 operator+(long n, const F_2& x){
00099 return F_2(n ^ x.value);
00100 }
00101
00102
00103 F_2 operator-(long n, const F_2& x){
00104 return F_2(n ^ x.value);
00105 }
00106
00107 F_2 operator*(long n, const F_2& x){
00108 return F_2(n & x.value);
00109 }
00110
00111 F_2 operator/(long n, const F_2& x){
00112 return F_2(n & x.value);
00113 }
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124