code: func (s Sample) GeoMean() float64 {
  	if len(s.Xs) == 0 || s.Weights == nil {
  		return GeoMean(s.Xs)
  	}
  
  	m, wsum := 0.0, 0.0
  	for i, x := range s.Xs {
  		w := s.Weights[i]
  		wsum += w
  		lx := math.Log(x)
  		m += (lx - m) * w / wsum
  	}
  	return math.Exp(m)
  }
docs: // GeoMean returns the geometric mean of the Sample. All samples
  // values must be positive.