import { assert } from "../../../../../core/assert.js";

/**
 * Hand-optimized mitchell function with c = 0.3333333 and b = 0.3333333
 * NOTE: assumes non-negative values only
 * @param {number} x
 * @returns {number}
 */
export function mitchell_v1(x) {
    assert.greaterThanOrEqual(x, 0);

    if (x < 1.0) {
        return 0.8888888888888888 + x * x * (-2 + x * 1.1666666666666667);
    }
    if (x < 2.0) {
        return 1.7777777777777777 + x * (-3.3333333333333335 + x * (2 + x * -0.3888888888888889));
    }
    return 0.0;
}

mitchell_v1.support = 2;
