public static double Calculate(IEnumerable <double> first, IEnumerable <double> second, out OnlineCalculatorError errorState) { IEnumerator <double> firstEnumerator = first.GetEnumerator(); IEnumerator <double> secondEnumerator = second.GetEnumerator(); var calculator = new OnlinePearsonsRCalculator(); // always move forward both enumerators (do not use short-circuit evaluation!) while (firstEnumerator.MoveNext() & secondEnumerator.MoveNext()) { double original = firstEnumerator.Current; double estimated = secondEnumerator.Current; calculator.Add(original, estimated); if (calculator.ErrorState != OnlineCalculatorError.None) { break; } } // check if both enumerators are at the end to make sure both enumerations have the same length if (calculator.ErrorState == OnlineCalculatorError.None && (secondEnumerator.MoveNext() || firstEnumerator.MoveNext())) { throw new ArgumentException("Number of elements in first and second enumeration doesn't match."); } else { errorState = calculator.ErrorState; return(calculator.R); } }
public double Calculate(IEnumerable<Tuple<double, double>> values, out OnlineCalculatorError errorState) { var calculator = new OnlinePearsonsRCalculator(); foreach (var tuple in values) { calculator.Add(tuple.Item1, tuple.Item2); if (calculator.ErrorState != OnlineCalculatorError.None) break; } errorState = calculator.ErrorState; return calculator.R; }
public double Calculate(IEnumerable <Tuple <double, double> > values, out OnlineCalculatorError errorState) { var calculator = new OnlinePearsonsRCalculator(); foreach (var tuple in values) { calculator.Add(tuple.Item1, tuple.Item2); if (calculator.ErrorState != OnlineCalculatorError.None) { break; } } errorState = calculator.ErrorState; return(calculator.R); }
public static double Calculate(IEnumerable<double> first, IEnumerable<double> second, out OnlineCalculatorError errorState) { IEnumerator<double> firstEnumerator = first.GetEnumerator(); IEnumerator<double> secondEnumerator = second.GetEnumerator(); var calculator = new OnlinePearsonsRCalculator(); // always move forward both enumerators (do not use short-circuit evaluation!) while (firstEnumerator.MoveNext() & secondEnumerator.MoveNext()) { double original = firstEnumerator.Current; double estimated = secondEnumerator.Current; calculator.Add(original, estimated); if (calculator.ErrorState != OnlineCalculatorError.None) break; } // check if both enumerators are at the end to make sure both enumerations have the same length if (calculator.ErrorState == OnlineCalculatorError.None && (secondEnumerator.MoveNext() || firstEnumerator.MoveNext())) { throw new ArgumentException("Number of elements in first and second enumeration doesn't match."); } else { errorState = calculator.ErrorState; return calculator.R; } }
public void Add(double x, double y) { rCalculator.Add(x, y); }