public static double Calculation(double[] realValue, double[] forecastValue) { double[] newReal = ArrayBased.ShortenRealValueArray(realValue, forecastValue); int n = newReal.Length; int m = forecastValue.Length; if (0 == n || 0 == m) { return(-1); // throw new EmptyParameterArray(); } //Sum of square differences double sumOfDifferences = newReal.Zip(forecastValue, (r, f) => Math.Pow(r - f, 2)).Sum(); return(sumOfDifferences / n); }
public static double Calculation(double[] realValue, double[] forecastValue) { double[] newReal = ArrayBased.ShortenRealValueArray(realValue, forecastValue); int n = newReal.Length; int m = forecastValue.Length; if (0 == n || 0 == m) { return(-1); // throw new EmptyParameterArray(); } //Check if there's any 0 on the realValue array if (newReal.Contains(0.0)) { return(-1); // throw new ZeroInputArray(); } //Sum of absolute differences double sumOfDifferences = newReal.Zip(forecastValue, (r, f) => Math.Abs(r - f) / Math.Abs(r)).Sum(); return(sumOfDifferences / n); }