code: func LogarithmicBatchingPolicy(maxConcurrentInvs, maxBatchSize int, logBase float64) (Func, error) {
  	// We use 1.0001 to ensure that operation below returns a value small enough
  	// to fit into int and to avoid numerical stability issues resulting from
  	// very small values being approximated as 0 and resulting in
  	// division-by-zero errors.
  	if logBase < 1.0001 {
  		return nil, errors.Reason("log_base should be more or equal than 1.0001").Err()
  	}
  
  	log := math.Log(logBase)
  	return basePolicy(maxConcurrentInvs, maxBatchSize, func(triggers []*internal.Trigger) int {
  		return int(math.Max(math.Log(float64(len(triggers)))/log, 1.0))
  	})
  }
docs: // LogarithmicBatchingPolicy instantiates new LOGARITHMIC_BATCHING policy
  // function.
  //
  // It takes all pending triggers and collapses log_k N of them into one new
  // invocation, deriving its properties from the most recent trigger alone.