public double GeometricMean() { double ret = 1.0; list nums = ToDoubleList(this); for (int i = 0; i < nums.Data.Length; i++) { ret *= (double)nums.Data[i]; } return Math.Exp(Math.Log(ret) / (double)nums.Data.Length); }