Esempio n. 1
0
        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();
            OnlineDirectionalSymmetryCalculator dsCalculator = new OnlineDirectionalSymmetryCalculator();

            // always move forward all enumerators (do not use short-circuit evaluation!)
            while (startValueEnumerator.MoveNext() & actualContinuationsEnumerator.MoveNext() & predictedContinuationsEnumerator.MoveNext())
            {
                dsCalculator.Add(startValueEnumerator.Current, actualContinuationsEnumerator.Current, predictedContinuationsEnumerator.Current);
                if (dsCalculator.ErrorState != OnlineCalculatorError.None)
                {
                    break;
                }
            }

            // check if all enumerators are at the end to make sure both enumerations have the same length
            if (dsCalculator.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 = dsCalculator.ErrorState;
                return(dsCalculator.DirectionalSymmetry);
            }
        }
Esempio n. 2
0
        public static double Calculate(double startValue, IEnumerable <double> actualContinuation, IEnumerable <double> predictedContinuation, out OnlineCalculatorError errorState)
        {
            OnlineDirectionalSymmetryCalculator dsCalculator = new OnlineDirectionalSymmetryCalculator();

            dsCalculator.Add(startValue, actualContinuation, predictedContinuation);
            errorState = dsCalculator.ErrorState;
            return(dsCalculator.DirectionalSymmetry);
        }
    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();
      OnlineDirectionalSymmetryCalculator dsCalculator = new OnlineDirectionalSymmetryCalculator();

      // always move forward all enumerators (do not use short-circuit evaluation!)
      while (startValueEnumerator.MoveNext() & actualContinuationsEnumerator.MoveNext() & predictedContinuationsEnumerator.MoveNext()) {
        dsCalculator.Add(startValueEnumerator.Current, actualContinuationsEnumerator.Current, predictedContinuationsEnumerator.Current);
        if (dsCalculator.ErrorState != OnlineCalculatorError.None) break;
      }

      // check if all enumerators are at the end to make sure both enumerations have the same length
      if (dsCalculator.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 = dsCalculator.ErrorState;
        return dsCalculator.DirectionalSymmetry;
      }
    }
 public static double Calculate(double startValue, IEnumerable<double> actualContinuation, IEnumerable<double> predictedContinuation, out OnlineCalculatorError errorState) {
   OnlineDirectionalSymmetryCalculator dsCalculator = new OnlineDirectionalSymmetryCalculator();
   dsCalculator.Add(startValue, actualContinuation, predictedContinuation);
   errorState = dsCalculator.ErrorState;
   return dsCalculator.DirectionalSymmetry;
 }