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);
 }