code: def _to_bin_lower_upper_logarithmic(value: int) -> Tuple[int, int]:
      """Finds the lower and upper bounds of the histogram bin which contains
      the given integer.
  
      Keep algorithm in sync with
      private_contribution_bounds._generate_possible_contribution_bounds.
      """
      # For scalability reasons bins can not be all width=1. For the goals of
      # contribution computations it is ok to have bins of larger values have
      # larger width.
      # Here, the following strategy is used: n is rounded down, such that only 3
      # left-most digits of n is kept, e.g. 123->123, 1234->1230, 12345->12300.
      bound = 1000
      while value > bound:
          bound *= 10
  
      round_base = bound // 1000
      lower = value // round_base * round_base
      bin_size = round_base if value != bound else round_base * 10
      return lower, lower + bin_size
  
imports: import bisect
  import operator
  from typing import List, Tuple
  import numpy
  import pipeline_dp
  from pipeline_dp import pipeline_backend, pipeline_functions
  from pipeline_dp.dataset_histograms import histograms
label_desc: Use image node_id 1 for calling a global function with example usage: _to_bin_lower_upper_logarithmic(value) and returns: lower,  unknown