type Smoothness = enumeration(LinearSegments "Linear interpolation", ContinuousDerivative "Akima spline interpolation (such that the first derivative is continuous)", ConstantSegments "Piecewise constant interpolation (the value from the previous abscissa point is returned)", MonotoneContinuousDerivative1 "Fritsch-Butland spline interpolation (such that the monotonicity is preserved and the first derivative is continuous)", MonotoneContinuousDerivative2 "Steffen spline interpolation (such that the monotonicity is preserved and the first derivative is continuous)", ModifiedContinuousDerivative "Modified Akima spline interpolation (such that the first derivative is continuous and shortcomings of the original Akima method are avoided)", NaturalCubicSpline "Cubic spline interpolation with natural boundary conditions (such that the first and second derivatives are continuous)");