200 lines
6.0 KiB
Java
200 lines
6.0 KiB
Java
package com.google.zxing.common.reedsolomon;
|
|
|
|
/* loaded from: classes.dex */
|
|
final class GenericGFPoly {
|
|
private final GenericGF a;
|
|
private final int[] b;
|
|
|
|
GenericGFPoly(GenericGF genericGF, int[] iArr) {
|
|
if (iArr.length == 0) {
|
|
throw new IllegalArgumentException();
|
|
}
|
|
this.a = genericGF;
|
|
int length = iArr.length;
|
|
if (length <= 1 || iArr[0] != 0) {
|
|
this.b = iArr;
|
|
return;
|
|
}
|
|
int i = 1;
|
|
while (i < length && iArr[i] == 0) {
|
|
i++;
|
|
}
|
|
if (i == length) {
|
|
this.b = new int[]{0};
|
|
return;
|
|
}
|
|
this.b = new int[length - i];
|
|
int[] iArr2 = this.b;
|
|
System.arraycopy(iArr, i, iArr2, 0, iArr2.length);
|
|
}
|
|
|
|
int[] a() {
|
|
return this.b;
|
|
}
|
|
|
|
int b() {
|
|
return this.b.length - 1;
|
|
}
|
|
|
|
boolean c() {
|
|
return this.b[0] == 0;
|
|
}
|
|
|
|
public String toString() {
|
|
StringBuilder sb = new StringBuilder(b() * 8);
|
|
for (int b = b(); b >= 0; b--) {
|
|
int b2 = b(b);
|
|
if (b2 != 0) {
|
|
if (b2 < 0) {
|
|
sb.append(" - ");
|
|
b2 = -b2;
|
|
} else if (sb.length() > 0) {
|
|
sb.append(" + ");
|
|
}
|
|
if (b == 0 || b2 != 1) {
|
|
int c = this.a.c(b2);
|
|
if (c == 0) {
|
|
sb.append('1');
|
|
} else if (c == 1) {
|
|
sb.append('a');
|
|
} else {
|
|
sb.append("a^");
|
|
sb.append(c);
|
|
}
|
|
}
|
|
if (b != 0) {
|
|
if (b == 1) {
|
|
sb.append('x');
|
|
} else {
|
|
sb.append("x^");
|
|
sb.append(b);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
int a(int i) {
|
|
if (i == 0) {
|
|
return b(0);
|
|
}
|
|
if (i == 1) {
|
|
int i2 = 0;
|
|
for (int i3 : this.b) {
|
|
i2 = GenericGF.c(i2, i3);
|
|
}
|
|
return i2;
|
|
}
|
|
int[] iArr = this.b;
|
|
int i4 = iArr[0];
|
|
int length = iArr.length;
|
|
for (int i5 = 1; i5 < length; i5++) {
|
|
i4 = GenericGF.c(this.a.b(i, i4), this.b[i5]);
|
|
}
|
|
return i4;
|
|
}
|
|
|
|
int b(int i) {
|
|
return this.b[(r0.length - 1) - i];
|
|
}
|
|
|
|
GenericGFPoly c(GenericGFPoly genericGFPoly) {
|
|
if (!this.a.equals(genericGFPoly.a)) {
|
|
throw new IllegalArgumentException("GenericGFPolys do not have same GenericGF field");
|
|
}
|
|
if (c() || genericGFPoly.c()) {
|
|
return this.a.d();
|
|
}
|
|
int[] iArr = this.b;
|
|
int length = iArr.length;
|
|
int[] iArr2 = genericGFPoly.b;
|
|
int length2 = iArr2.length;
|
|
int[] iArr3 = new int[(length + length2) - 1];
|
|
for (int i = 0; i < length; i++) {
|
|
int i2 = iArr[i];
|
|
for (int i3 = 0; i3 < length2; i3++) {
|
|
int i4 = i + i3;
|
|
iArr3[i4] = GenericGF.c(iArr3[i4], this.a.b(i2, iArr2[i3]));
|
|
}
|
|
}
|
|
return new GenericGFPoly(this.a, iArr3);
|
|
}
|
|
|
|
GenericGFPoly[] b(GenericGFPoly genericGFPoly) {
|
|
if (this.a.equals(genericGFPoly.a)) {
|
|
if (!genericGFPoly.c()) {
|
|
GenericGFPoly d = this.a.d();
|
|
int b = this.a.b(genericGFPoly.b(genericGFPoly.b()));
|
|
GenericGFPoly genericGFPoly2 = d;
|
|
GenericGFPoly genericGFPoly3 = this;
|
|
while (genericGFPoly3.b() >= genericGFPoly.b() && !genericGFPoly3.c()) {
|
|
int b2 = genericGFPoly3.b() - genericGFPoly.b();
|
|
int b3 = this.a.b(genericGFPoly3.b(genericGFPoly3.b()), b);
|
|
GenericGFPoly a = genericGFPoly.a(b2, b3);
|
|
genericGFPoly2 = genericGFPoly2.a(this.a.a(b2, b3));
|
|
genericGFPoly3 = genericGFPoly3.a(a);
|
|
}
|
|
return new GenericGFPoly[]{genericGFPoly2, genericGFPoly3};
|
|
}
|
|
throw new IllegalArgumentException("Divide by 0");
|
|
}
|
|
throw new IllegalArgumentException("GenericGFPolys do not have same GenericGF field");
|
|
}
|
|
|
|
GenericGFPoly a(GenericGFPoly genericGFPoly) {
|
|
if (this.a.equals(genericGFPoly.a)) {
|
|
if (c()) {
|
|
return genericGFPoly;
|
|
}
|
|
if (genericGFPoly.c()) {
|
|
return this;
|
|
}
|
|
int[] iArr = this.b;
|
|
int[] iArr2 = genericGFPoly.b;
|
|
if (iArr.length > iArr2.length) {
|
|
iArr = iArr2;
|
|
iArr2 = iArr;
|
|
}
|
|
int[] iArr3 = new int[iArr2.length];
|
|
int length = iArr2.length - iArr.length;
|
|
System.arraycopy(iArr2, 0, iArr3, 0, length);
|
|
for (int i = length; i < iArr2.length; i++) {
|
|
iArr3[i] = GenericGF.c(iArr[i - length], iArr2[i]);
|
|
}
|
|
return new GenericGFPoly(this.a, iArr3);
|
|
}
|
|
throw new IllegalArgumentException("GenericGFPolys do not have same GenericGF field");
|
|
}
|
|
|
|
GenericGFPoly c(int i) {
|
|
if (i == 0) {
|
|
return this.a.d();
|
|
}
|
|
if (i == 1) {
|
|
return this;
|
|
}
|
|
int length = this.b.length;
|
|
int[] iArr = new int[length];
|
|
for (int i2 = 0; i2 < length; i2++) {
|
|
iArr[i2] = this.a.b(this.b[i2], i);
|
|
}
|
|
return new GenericGFPoly(this.a, iArr);
|
|
}
|
|
|
|
GenericGFPoly a(int i, int i2) {
|
|
if (i < 0) {
|
|
throw new IllegalArgumentException();
|
|
}
|
|
if (i2 == 0) {
|
|
return this.a.d();
|
|
}
|
|
int length = this.b.length;
|
|
int[] iArr = new int[i + length];
|
|
for (int i3 = 0; i3 < length; i3++) {
|
|
iArr[i3] = this.a.b(this.b[i3], i2);
|
|
}
|
|
return new GenericGFPoly(this.a, iArr);
|
|
}
|
|
}
|