private static double Interpolate(double value, List <double> valuesList, List <double> interpList) { int idx = Utils.ValueIndex(value, valuesList); // out of bounds, interpolation unknown if (idx < 0) { return(idx); } // no interpolation needed, first value in list if (idx == 0) { return(interpList.First()); } double x = value; double x1 = valuesList[idx - 1]; double x2 = valuesList[idx]; double y1 = interpList[idx - 1]; double y2 = interpList[idx]; return(Utils.Interpolate(x, x1, x2, y1, y2)); }