code: func NewWithConfig(c Config) (*HLLPP, error) {
  	if c.Precision == 0 {
  		c.Precision = 14
  	}
  
  	if c.SparsePrecision == 0 {
  		c.SparsePrecision = 20
  	}
  
  	p, pp := c.Precision, c.SparsePrecision
  	if p < 4 || p > 16 || pp < p || pp > 25 {
  		return nil, fmt.Errorf("invalid precision (p: %d, p': %d)", p, pp)
  	}
  
  	return &HLLPP{
  		p:      p,
  		pp:     pp,
  		m:      1 << p,
  		mp:     1 << pp,
  		sparse: true,
  	}, nil
  }
docs: // NewWithConfig creates a HyperLogLog++ estimator with the given Config.