public static double Calculate(IEnumerable <double> startValues, IEnumerable <IEnumerable <double> > actualContinuations, IEnumerable <IEnumerable <double> > predictedContinuations, out OnlineCalculatorError errorState) { IEnumerator <double> startValueEnumerator = startValues.GetEnumerator(); IEnumerator <IEnumerable <double> > actualContinuationsEnumerator = actualContinuations.GetEnumerator(); IEnumerator <IEnumerable <double> > predictedContinuationsEnumerator = predictedContinuations.GetEnumerator(); OnlineWeightedDirectionalSymmetryCalculator calculator = new OnlineWeightedDirectionalSymmetryCalculator(); // always move forward all enumerators (do not use short-circuit evaluation!) while (startValueEnumerator.MoveNext() & actualContinuationsEnumerator.MoveNext() & predictedContinuationsEnumerator.MoveNext()) { calculator.Add(startValueEnumerator.Current, actualContinuationsEnumerator.Current, predictedContinuationsEnumerator.Current); if (calculator.ErrorState != OnlineCalculatorError.None) { break; } } // check if all enumerators are at the end to make sure both enumerations have the same length if (calculator.ErrorState == OnlineCalculatorError.None && (startValueEnumerator.MoveNext() || actualContinuationsEnumerator.MoveNext() || predictedContinuationsEnumerator.MoveNext())) { throw new ArgumentException("Number of elements in startValues, actualContinuations and estimatedValues predictedContinuations doesn't match."); } else { errorState = calculator.ErrorState; return(calculator.WeightedDirectionalSymmetry); } }
public static double Calculate(double startValue, IEnumerable <double> actualContinuation, IEnumerable <double> predictedContinuation, out OnlineCalculatorError errorState) { OnlineWeightedDirectionalSymmetryCalculator calculator = new OnlineWeightedDirectionalSymmetryCalculator(); calculator.Add(startValue, actualContinuation, predictedContinuation); errorState = calculator.ErrorState; return(calculator.WeightedDirectionalSymmetry); }
public static double Calculate(IEnumerable<double> startValues, IEnumerable<IEnumerable<double>> actualContinuations, IEnumerable<IEnumerable<double>> predictedContinuations, out OnlineCalculatorError errorState) { IEnumerator<double> startValueEnumerator = startValues.GetEnumerator(); IEnumerator<IEnumerable<double>> actualContinuationsEnumerator = actualContinuations.GetEnumerator(); IEnumerator<IEnumerable<double>> predictedContinuationsEnumerator = predictedContinuations.GetEnumerator(); OnlineWeightedDirectionalSymmetryCalculator calculator = new OnlineWeightedDirectionalSymmetryCalculator(); // always move forward all enumerators (do not use short-circuit evaluation!) while (startValueEnumerator.MoveNext() & actualContinuationsEnumerator.MoveNext() & predictedContinuationsEnumerator.MoveNext()) { calculator.Add(startValueEnumerator.Current, actualContinuationsEnumerator.Current, predictedContinuationsEnumerator.Current); if (calculator.ErrorState != OnlineCalculatorError.None) break; } // check if all enumerators are at the end to make sure both enumerations have the same length if (calculator.ErrorState == OnlineCalculatorError.None && (startValueEnumerator.MoveNext() || actualContinuationsEnumerator.MoveNext() || predictedContinuationsEnumerator.MoveNext())) { throw new ArgumentException("Number of elements in startValues, actualContinuations and estimatedValues predictedContinuations doesn't match."); } else { errorState = calculator.ErrorState; return calculator.WeightedDirectionalSymmetry; } }
public static double Calculate(double startValue, IEnumerable<double> actualContinuation, IEnumerable<double> predictedContinuation, out OnlineCalculatorError errorState) { OnlineWeightedDirectionalSymmetryCalculator calculator = new OnlineWeightedDirectionalSymmetryCalculator(); calculator.Add(startValue, actualContinuation, predictedContinuation); errorState = calculator.ErrorState; return calculator.WeightedDirectionalSymmetry; }