private double GetAverage(string dsName, string rpnExpression) { RpnCalculator rpnCalculator = null; if (rpnExpression != null) { rpnCalculator = new RpnCalculator(rpnExpression); } double [] vals = GetValues(dsName); double totalVal = 0; long totalSecs = 0; for (int i = 0; i < vals.Length - 1; i++) { long t1 = Math.Max(request.FetchStart, timestamps[i]); long t2 = Math.Min(request.FetchEnd, timestamps[i + 1]); double val = vals[i + 1]; if (rpnCalculator != null) { rpnCalculator.Value = val; val = rpnCalculator.Calculate(); } if (!Double.IsNaN(val)) { totalSecs += (t2 - t1); totalVal += (t2 - t1) * val; } } return(totalSecs > 0? totalVal / totalSecs: Double.NaN); }
private double GetLast(string dsName, string rpnExpression) { RpnCalculator rpnCalculator = null; if (rpnExpression != null) { rpnCalculator = new RpnCalculator(rpnExpression); } double [] vals = GetValues(dsName); double val = vals[vals.Length - 1]; if (rpnCalculator != null) { rpnCalculator.Value = val; val = rpnCalculator.Calculate(); } return(val); }
private double GetMin(string dsName, string rpnExpression) { RpnCalculator rpnCalculator = null; if (rpnExpression != null) { rpnCalculator = new RpnCalculator(rpnExpression); } double [] vals = GetValues(dsName); double min = Double.NaN; for (int i = 0; i < vals.Length - 1; i++) { double val = vals[i + 1]; if (rpnCalculator != null) { rpnCalculator.Value = val; val = rpnCalculator.Calculate(); } min = Util.Min(min, val); } return(min); }