code: func (d HypergeometicDist) CDF(k float64) float64 {
  	// Based on Klotz, A Computational Approach to Statistics.
  	ki := int(math.Floor(k))
  	l, h := d.bounds()
  	if ki < l {
  		return 0
  	} else if ki >= h {
  		return 1
  	}
  	// Use symmetry to compute the smaller sum.
  	flip := false
  	if ki > (d.Draws+1)/(d.N+1)*(d.K+1) {
  		flip = true
  		ki = d.K - ki - 1
  		d.Draws = d.N - d.Draws
  	}
  	p := d.pmf(ki) * d.sum(ki)
  	if flip {
  		p = 1 - p
  	}
  	return p
  }
docs: // CDF is the probability of getting int(k) or fewer successes in
  // d.Draws draws with replacement from a population of size d.N that
  // contains exactly d.K successes.