/* Golay Code and Witt Design Generator in C++ by Ashay Dharwadker http://www.dharwadker.org ashay@dharwadker.org */ #include #include #include #include #include using namespace std; vector binary(int n); int power(int k, int j); vector golay(vector c); ofstream outfile1("golay.txt"); ofstream outfile2("witt.txt"); int main() { cout<<"The Golay Code and Witt Design Generator."< > code; vector > design; int i, j, n; for(n=0; n<4096; n++) { cout<<"Generating Golay Code Word Number:"< temp, word; temp=binary(n); for(i=0; i<12-temp.size(); i++) word.push_back(0); for(i=0; i binary(int n) { vector representation; if(n==0) return representation; int i=0; while(power(2,i)<=n) i++; n=n%power(2,i); for(int j=i-1; j>=0; j--) { if(power(2,j)<=n) representation.push_back(1); else representation.push_back(0); n=n%power(2,j); } return representation; } int power(int k, int j) { if(j==0) return 1; int p=1; for(int i=1; i<=j; i++) p*=k; return p; } vector golay(vector c) { vector sum; sum.push_back(c[0]); sum.push_back(c[1]); sum.push_back(c[2]); sum.push_back(c[3]); sum.push_back(c[4]); sum.push_back(c[5]); sum.push_back(c[6]); sum.push_back(c[7]); sum.push_back(c[8]); sum.push_back(c[9]); sum.push_back(c[10]); sum.push_back(c[11]); sum.push_back(c[0]^c[1]^c[3]^c[4]^c[5]^c[9]^c[11]); sum.push_back(c[1]^c[2]^c[4]^c[5]^c[6]^c[10]^c[11]); sum.push_back(c[0]^c[2]^c[3]^c[5]^c[6]^c[7]^c[11]); sum.push_back(c[1]^c[3]^c[4]^c[6]^c[7]^c[8]^c[11]); sum.push_back(c[2]^c[4]^c[5]^c[7]^c[8]^c[9]^c[11]); sum.push_back(c[3]^c[5]^c[6]^c[8]^c[9]^c[10]^c[11]); sum.push_back(c[0]^c[4]^c[6]^c[7]^c[9]^c[10]^c[11]); sum.push_back(c[0]^c[1]^c[5]^c[7]^c[8]^c[10]^c[11]); sum.push_back(c[0]^c[1]^c[2]^c[6]^c[8]^c[9]^c[11]); sum.push_back(c[1]^c[2]^c[3]^c[7]^c[9]^c[10]^c[11]); sum.push_back(c[0]^c[2]^c[3]^c[4]^c[8]^c[10]^c[11]); sum.push_back(c[0]^c[1]^c[2]^c[3]^c[4]^c[5]^c[6]^c[7]^c[8]^c[9]^c[10]); swap(sum[10],sum[16]); swap(sum[13],sum[20]); swap(sum[3],sum[8]); swap(sum[6],sum[14]); swap(sum[7],sum[15]); return sum; }