@Override
    public Polynomial<Double, Double, Double> setCoefficient(final int degree,
            final Double value) {
        if (degree < 0)
            throw new IllegalArgumentException("The specified degree must be " +
                    "non-negative.");
        if (this.getDegree() < degree)
            throw new IllegalArgumentException("The specified degree must be " +
                    "less than or equal to the degrees of this polynomial.");
        if (!this._validator.isValid(value))
            throw new IllegalArgumentException(
                    this._validator.message(value, "Value"));
        double[] coefficients = new double[this._coefficients.length];
        for (int d = 0; d < this._coefficients.length; d++)
            if (d == degree)
                coefficients[d] = value;
            else
                coefficients[d] = this._coefficients[d];
        return new PolynomialReal(coefficients);
    }