public Measurement Merge(Measurement m, double overlap) { if (dimensions.Equals(m.dimensions)) { return(new Measurement((confidence * value + overlap * m.confidence * m.value) / (confidence + overlap * m.confidence), 1 - (1 - confidence) * (1 - overlap * m.confidence), dimensions)); } throw new ArgumentException(); }