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;
    }
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
Performs cubic interpolation between two values bound between two other values