src/main/java/com/flowpowered/noise/Utils.java
public static double cubicInterp(double n0, double n1, double n2, double n3, double a) {
        double p = (n3 - n2) - (n0 - n1);
        double q = (n0 - n1) - p;
        double r = n2 - n0;

        return p * a * a * a + q * a * a + r * a + n1;
    }
public static double cubicInterp(double n0, double n1, double n2, double n3, double a) {
        double p = (n3 - n2) - (n0 - n1);
        double q = (n0 - n1) - p;
        double r = n2 - n0;

        return p * a * a * a + q * a * a + r * a + n1;
    }
Performs cubic interpolation between two values bound between two other values

@param n0 the value before the first value
@param n1 the first value
@param n2 the second value
@param n3 the value after the second value
@param a the alpha value
@return the interpolated value