public void Push(double value)
{
if (sines.Count == Window)
{
SumOfSines -= sines.Dequeue();
SumOfCosines -= cosines.Dequeue();
}
double cos = Math.Cos(value);
double sin = Math.Sin(value);
sines.Enqueue(sin);
cosines.Enqueue(cos);
SumOfSines += sin;
SumOfCosines += cos;
int N = sines.Count;
double rho = Math.Sqrt(SumOfSines * SumOfSines + SumOfCosines * SumOfCosines);
Mean = Math.Atan2(SumOfSines / N, SumOfCosines / N);
Variance = 1.0 - rho / N;
}