public void TestExample() { double[] x = new[] { 1.0, 2.0, 3.0 }; double[] y = new[] { 3.0, 5.0, 6.5 }; var trendline = new Trendline(x, y); Assert.That(Math.Round(trendline.GetY(0.0), 3), Is.EqualTo(1.333)); Assert.That(Math.Round(trendline.GetY(3.14), 3), Is.EqualTo(6.828)); }
public void TestLinear() { // y = 2x + 1 double[] x = new[] { 1.0, 2.0, 3.0 }; double[] y = new[] { 3.0, 5.0, 7.0 }; var trendline = new Trendline(x, y); Assert.That(trendline.GetX(0.0), Is.EqualTo(-0.5)); Assert.That(trendline.GetY(0.0), Is.EqualTo(1.0)); Assert.That(trendline.GetY(137.23), Is.EqualTo(275.46)); }
private static object GetTimeRemaining(ModelBase model) { var viewModel = (ProgressFieldViewModel)model; if (viewModel.Target == 0) { return(TimeSpan.MaxValue); } if (viewModel._progressStart == null) { viewModel._progressStart = DateTime.UtcNow; return(TimeSpan.MaxValue); } var elapsed = DateTime.UtcNow - viewModel._progressStart.GetValueOrDefault(); var elapsedMilliseconds = elapsed.TotalMilliseconds; lock (viewModel._elapsedSample) { if (elapsedMilliseconds - viewModel._elapsedSample[viewModel._sampleIndex] > (1000 / SampleCount)) { viewModel._elapsedSample[viewModel._sampleIndex] = elapsedMilliseconds; viewModel._progressSample[viewModel._sampleIndex] = (double)viewModel.Current; viewModel._sampleIndex = (viewModel._sampleIndex + 1) % SampleCount; var trendline = new Trendline(viewModel._progressSample, viewModel._elapsedSample); viewModel._estimatedMilliseconds = trendline.GetY(viewModel.Target); } } var remainingMilliseconds = viewModel._estimatedMilliseconds - elapsedMilliseconds; return(TimeSpan.FromMilliseconds(remainingMilliseconds)); }