public bool Subset(Interval <T> other) { return(this.min.CompareTo(other.min) <= 0 && other.max.CompareTo(this.max) <= 0); }
public int CompareTo(Interval <T> other) { return(min.CompareTo(other.min)); }
public static decimal Distance(this Interval <decimal> interval, decimal point) { return(point <interval.Min?interval.Min - point : point> interval.Max ? point - interval.Max : 0); }
public static TimeSpan Distance(this Interval <DateTime> interval, DateTime point) { return(point <interval.Min?interval.Min - point : point> interval.Max ? point - interval.Max : new TimeSpan(0)); }
public static double Distance(this Interval <double> interval, double point) { return(point <interval.Min?interval.Min - point : point> interval.Max ? point - interval.Max : 0); }
public static float Distance(this Interval <float> interval, float point) { return(point <interval.Min?interval.Min - point : point> interval.Max ? point - interval.Max : 0); }
public static TimeSpan Length(this Interval <DateTime> interval) { return(interval.Max - interval.Min); }
public static long Distance(this Interval <long> interval, long point) { return(point <interval.Min?interval.Min - point : point> interval.Max ? point - interval.Max : 0); }
public static float Length(this Interval <float> interval) { return(interval.Max - interval.Min); }
public static decimal Length(this Interval <decimal> interval) { return(interval.Max - interval.Min); }
public static double Length(this Interval <double> interval) { return(interval.Max - interval.Min); }
public static long Length(this Interval <long> interval) { return(interval.Max - interval.Min); }
public static int Length(this Interval <int> interval) { return(interval.Max - interval.Min); }
public bool Overlaps(Interval <T> other) { return(!((max.CompareTo(other.min) <= 0) || (other.max.CompareTo(min) <= 0))); }
public bool Equals(Interval <T> other) { return(other.min.Equals(min) && other.max.Equals(max)); }