package androidx.constraintlayout.solver; import androidx.constraintlayout.solver.ArrayRow; import java.util.Arrays; /* loaded from: classes.dex */ public class ArrayLinkedVariables implements ArrayRow.ArrayRowVariables { private static final boolean DEBUG = false; private static final boolean FULL_NEW_CHECK = false; static final int NONE = -1; private static float epsilon = 0.001f; protected final Cache mCache; private final ArrayRow mRow; int currentSize = 0; private int ROW_SIZE = 8; private SolverVariable candidate = null; private int[] mArrayIndices = new int[8]; private int[] mArrayNextIndices = new int[8]; private float[] mArrayValues = new float[8]; private int mHead = -1; private int mLast = -1; private boolean mDidFillOnce = false; @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public int getCurrentSize() { return this.currentSize; } public int getHead() { return this.mHead; } /* JADX INFO: Access modifiers changed from: package-private */ public ArrayLinkedVariables(ArrayRow arrayRow, Cache cache) { this.mRow = arrayRow; this.mCache = cache; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public final void put(SolverVariable solverVariable, float f) { if (f == 0.0f) { remove(solverVariable, true); return; } int i = this.mHead; if (i == -1) { this.mHead = 0; this.mArrayValues[0] = f; this.mArrayIndices[0] = solverVariable.id; this.mArrayNextIndices[this.mHead] = -1; solverVariable.usageInRowCount++; solverVariable.addToRow(this.mRow); this.currentSize++; if (this.mDidFillOnce) { return; } int i2 = this.mLast + 1; this.mLast = i2; int[] iArr = this.mArrayIndices; if (i2 >= iArr.length) { this.mDidFillOnce = true; this.mLast = iArr.length - 1; return; } return; } int i3 = -1; for (int i4 = 0; i != -1 && i4 < this.currentSize; i4++) { if (this.mArrayIndices[i] == solverVariable.id) { this.mArrayValues[i] = f; return; } if (this.mArrayIndices[i] < solverVariable.id) { i3 = i; } i = this.mArrayNextIndices[i]; } int i5 = this.mLast; int i6 = i5 + 1; if (this.mDidFillOnce) { int[] iArr2 = this.mArrayIndices; if (iArr2[i5] != -1) { i5 = iArr2.length; } } else { i5 = i6; } int[] iArr3 = this.mArrayIndices; if (i5 >= iArr3.length && this.currentSize < iArr3.length) { int i7 = 0; while (true) { int[] iArr4 = this.mArrayIndices; if (i7 >= iArr4.length) { break; } if (iArr4[i7] == -1) { i5 = i7; break; } i7++; } } int[] iArr5 = this.mArrayIndices; if (i5 >= iArr5.length) { i5 = iArr5.length; int i8 = this.ROW_SIZE * 2; this.ROW_SIZE = i8; this.mDidFillOnce = false; this.mLast = i5 - 1; this.mArrayValues = Arrays.copyOf(this.mArrayValues, i8); this.mArrayIndices = Arrays.copyOf(this.mArrayIndices, this.ROW_SIZE); this.mArrayNextIndices = Arrays.copyOf(this.mArrayNextIndices, this.ROW_SIZE); } this.mArrayIndices[i5] = solverVariable.id; this.mArrayValues[i5] = f; if (i3 != -1) { int[] iArr6 = this.mArrayNextIndices; iArr6[i5] = iArr6[i3]; iArr6[i3] = i5; } else { this.mArrayNextIndices[i5] = this.mHead; this.mHead = i5; } solverVariable.usageInRowCount++; solverVariable.addToRow(this.mRow); int i9 = this.currentSize + 1; this.currentSize = i9; if (!this.mDidFillOnce) { this.mLast++; } int[] iArr7 = this.mArrayIndices; if (i9 >= iArr7.length) { this.mDidFillOnce = true; } if (this.mLast >= iArr7.length) { this.mDidFillOnce = true; this.mLast = iArr7.length - 1; } } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public void add(SolverVariable solverVariable, float f, boolean z) { float f2 = epsilon; if (f <= (-f2) || f >= f2) { int i = this.mHead; if (i == -1) { this.mHead = 0; this.mArrayValues[0] = f; this.mArrayIndices[0] = solverVariable.id; this.mArrayNextIndices[this.mHead] = -1; solverVariable.usageInRowCount++; solverVariable.addToRow(this.mRow); this.currentSize++; if (this.mDidFillOnce) { return; } int i2 = this.mLast + 1; this.mLast = i2; int[] iArr = this.mArrayIndices; if (i2 >= iArr.length) { this.mDidFillOnce = true; this.mLast = iArr.length - 1; return; } return; } int i3 = -1; for (int i4 = 0; i != -1 && i4 < this.currentSize; i4++) { if (this.mArrayIndices[i] == solverVariable.id) { float[] fArr = this.mArrayValues; float f3 = fArr[i] + f; float f4 = epsilon; if (f3 > (-f4) && f3 < f4) { f3 = 0.0f; } fArr[i] = f3; if (f3 == 0.0f) { if (i == this.mHead) { this.mHead = this.mArrayNextIndices[i]; } else { int[] iArr2 = this.mArrayNextIndices; iArr2[i3] = iArr2[i]; } if (z) { solverVariable.removeFromRow(this.mRow); } if (this.mDidFillOnce) { this.mLast = i; } solverVariable.usageInRowCount--; this.currentSize--; return; } return; } if (this.mArrayIndices[i] < solverVariable.id) { i3 = i; } i = this.mArrayNextIndices[i]; } int i5 = this.mLast; int i6 = i5 + 1; if (this.mDidFillOnce) { int[] iArr3 = this.mArrayIndices; if (iArr3[i5] != -1) { i5 = iArr3.length; } } else { i5 = i6; } int[] iArr4 = this.mArrayIndices; if (i5 >= iArr4.length && this.currentSize < iArr4.length) { int i7 = 0; while (true) { int[] iArr5 = this.mArrayIndices; if (i7 >= iArr5.length) { break; } if (iArr5[i7] == -1) { i5 = i7; break; } i7++; } } int[] iArr6 = this.mArrayIndices; if (i5 >= iArr6.length) { i5 = iArr6.length; int i8 = this.ROW_SIZE * 2; this.ROW_SIZE = i8; this.mDidFillOnce = false; this.mLast = i5 - 1; this.mArrayValues = Arrays.copyOf(this.mArrayValues, i8); this.mArrayIndices = Arrays.copyOf(this.mArrayIndices, this.ROW_SIZE); this.mArrayNextIndices = Arrays.copyOf(this.mArrayNextIndices, this.ROW_SIZE); } this.mArrayIndices[i5] = solverVariable.id; this.mArrayValues[i5] = f; if (i3 != -1) { int[] iArr7 = this.mArrayNextIndices; iArr7[i5] = iArr7[i3]; iArr7[i3] = i5; } else { this.mArrayNextIndices[i5] = this.mHead; this.mHead = i5; } solverVariable.usageInRowCount++; solverVariable.addToRow(this.mRow); this.currentSize++; if (!this.mDidFillOnce) { this.mLast++; } int i9 = this.mLast; int[] iArr8 = this.mArrayIndices; if (i9 >= iArr8.length) { this.mDidFillOnce = true; this.mLast = iArr8.length - 1; } } } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public float use(ArrayRow arrayRow, boolean z) { float f = get(arrayRow.variable); remove(arrayRow.variable, z); ArrayRow.ArrayRowVariables arrayRowVariables = arrayRow.variables; int currentSize = arrayRowVariables.getCurrentSize(); for (int i = 0; i < currentSize; i++) { SolverVariable variable = arrayRowVariables.getVariable(i); add(variable, arrayRowVariables.get(variable) * f, z); } return f; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public final float remove(SolverVariable solverVariable, boolean z) { if (this.candidate == solverVariable) { this.candidate = null; } int i = this.mHead; if (i == -1) { return 0.0f; } int i2 = 0; int i3 = -1; while (i != -1 && i2 < this.currentSize) { if (this.mArrayIndices[i] == solverVariable.id) { if (i == this.mHead) { this.mHead = this.mArrayNextIndices[i]; } else { int[] iArr = this.mArrayNextIndices; iArr[i3] = iArr[i]; } if (z) { solverVariable.removeFromRow(this.mRow); } solverVariable.usageInRowCount--; this.currentSize--; this.mArrayIndices[i] = -1; if (this.mDidFillOnce) { this.mLast = i; } return this.mArrayValues[i]; } i2++; i3 = i; i = this.mArrayNextIndices[i]; } return 0.0f; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public final void clear() { int i = this.mHead; for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) { SolverVariable solverVariable = this.mCache.mIndexedVariables[this.mArrayIndices[i]]; if (solverVariable != null) { solverVariable.removeFromRow(this.mRow); } i = this.mArrayNextIndices[i]; } this.mHead = -1; this.mLast = -1; this.mDidFillOnce = false; this.currentSize = 0; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public boolean contains(SolverVariable solverVariable) { int i = this.mHead; if (i == -1) { return false; } for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) { if (this.mArrayIndices[i] == solverVariable.id) { return true; } i = this.mArrayNextIndices[i]; } return false; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public int indexOf(SolverVariable solverVariable) { int i = this.mHead; if (i == -1) { return -1; } for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) { if (this.mArrayIndices[i] == solverVariable.id) { return i; } i = this.mArrayNextIndices[i]; } return -1; } boolean hasAtLeastOnePositiveVariable() { int i = this.mHead; for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) { if (this.mArrayValues[i] > 0.0f) { return true; } i = this.mArrayNextIndices[i]; } return false; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public void invert() { int i = this.mHead; for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) { float[] fArr = this.mArrayValues; fArr[i] = fArr[i] * (-1.0f); i = this.mArrayNextIndices[i]; } } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public void divideByAmount(float f) { int i = this.mHead; for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) { float[] fArr = this.mArrayValues; fArr[i] = fArr[i] / f; i = this.mArrayNextIndices[i]; } } public final int getId(int i) { return this.mArrayIndices[i]; } public final float getValue(int i) { return this.mArrayValues[i]; } public final int getNextIndice(int i) { return this.mArrayNextIndices[i]; } SolverVariable getPivotCandidate() { SolverVariable solverVariable = this.candidate; if (solverVariable != null) { return solverVariable; } int i = this.mHead; SolverVariable solverVariable2 = null; for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) { if (this.mArrayValues[i] < 0.0f) { SolverVariable solverVariable3 = this.mCache.mIndexedVariables[this.mArrayIndices[i]]; if (solverVariable2 == null || solverVariable2.strength < solverVariable3.strength) { solverVariable2 = solverVariable3; } } i = this.mArrayNextIndices[i]; } return solverVariable2; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public SolverVariable getVariable(int i) { int i2 = this.mHead; for (int i3 = 0; i2 != -1 && i3 < this.currentSize; i3++) { if (i3 == i) { return this.mCache.mIndexedVariables[this.mArrayIndices[i2]]; } i2 = this.mArrayNextIndices[i2]; } return null; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public float getVariableValue(int i) { int i2 = this.mHead; for (int i3 = 0; i2 != -1 && i3 < this.currentSize; i3++) { if (i3 == i) { return this.mArrayValues[i2]; } i2 = this.mArrayNextIndices[i2]; } return 0.0f; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public final float get(SolverVariable solverVariable) { int i = this.mHead; for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) { if (this.mArrayIndices[i] == solverVariable.id) { return this.mArrayValues[i]; } i = this.mArrayNextIndices[i]; } return 0.0f; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public int sizeInBytes() { return (this.mArrayIndices.length * 12) + 36; } @Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables public void display() { int i = this.currentSize; System.out.print("{ "); for (int i2 = 0; i2 < i; i2++) { SolverVariable variable = getVariable(i2); if (variable != null) { System.out.print(variable + " = " + getVariableValue(i2) + " "); } } System.out.println(" }"); } public String toString() { int i = this.mHead; String str = ""; for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) { str = ((str + " -> ") + this.mArrayValues[i] + " : ") + this.mCache.mIndexedVariables[this.mArrayIndices[i]]; i = this.mArrayNextIndices[i]; } return str; } }