Berlekamp–Massey algorithm: Difference between revisions

Content deleted Content added
GreenC bot (talk | contribs)
Code sample for the binary field in Java: made variables match closer to pseudocode; using char[] arrays instead of int[] for easier conversion to and from strings; made output something more usable than simply length of polynomial ~~~~
Line 159:
 
<source lang="java">
public class BerlekampMassey {
public static int runTest(int[] array) {
public static String findPolynomial(char[] s) {
final int N = array.length;
final int[] bn = new int[N]s.length;
intchar[] cb = new intchar[Nn]; b[0] = 1;
intchar[] tc = new intchar[Nn]; c[0] = 1;
bchar[0] t = 1new char[n];
c[int L = 0], m = -1;
for (int lN = 0; N < n; N++) {
int md = -1s[N];
for (int ni = 01; ni <= NL; ni++) {
int d ^= 0(c[i] & s[N - i]);
for (int i = 0; i <= l; i++) {
d ^= c[i] * array[n - i];
}
if (d == 1) {
System.arraycopy(c, 0, t, 0, Nn);
int N_Mdiff = nN - m;
for (int ji = 0;, j <= Ndiff; -j N_M< n; i++, j++) {
c[N_M + j] ^= b[ji];
}
if (lL <= nN / 2) {
lL = nN + 1 - lL;
m = nN;
System.arraycopy(t, 0, b, 0, Nn);
}
}
}
return lstringify(c, L);
}
 
public static String findPolynomial(String array) {
char[] charArray = array.toCharArray();
finalfor (int Ni = 0; i < array.length(); i++) {
charArray[i] -= '0';
}
return findPolynomial(charArray);
}
 
public static String stringify(char[] array, int length) {
// convert `length` chars of array to string, and reverse it
char[] output = new char[length];
for (int i = 0, j = length; i <= llength; i++, j--) {
d ^= coutput[i] *= (char)(array[nj] -+ i]'0');
}
return String.valueOf(output);
}
 
public static intvoid runTestmain(intString[] arrayargs) {
if (args.length > 0) {
System.out.println(findPolynomial(args[0]));
} else {
System.err.println("Example: java BerlekampMassey 100110101111000");
}
return l;
}
}
</source>