constructor(field, coefficients) {
			if (coefficients.length === 0) {
				throw new IllegalArgumentException();
			}
			this.field = field;
			const coefficientsLength = coefficients.length;
			if (coefficientsLength > 1 && coefficients[0] === 0) {
				// Leading term must be non-zero for anything except the constant polynomial "0"
				let firstNonZero = 1;
				while (firstNonZero < coefficientsLength && coefficients[firstNonZero] === 0) {
					firstNonZero++;
				}
				if (firstNonZero === coefficientsLength) {
					this.coefficients = Int32Array.from([0]);
				}
				else {
					this.coefficients = new Int32Array(coefficientsLength - firstNonZero);
					System.arraycopy(coefficients, firstNonZero, this.coefficients, 0, this.coefficients.length);
				}
			}
			else {
				this.coefficients = coefficients;
			}
		}
@param field the {@link GenericGF} instance representing the field to use
to perform computations
@param coefficients coefficients as ints representing elements of GF(size), arranged
from most significant (highest-power term) coefficient to least significant
@throws IllegalArgumentException if argument is null or empty,
or if leading coefficient is 0 and this is not a
constant polynomial (that is, it is not the monomial "0")