parameters: (self, l, h, bin_size)
return_statement: return centers
docstring: @brief compute bin centers
          @param l lower bound
          @param h upper bound
          @param bin_size bin size
          @return array of bin centers
function: def bin_centers(self, l, h, bin_size):
          """
          @brief compute bin centers
          @param l lower bound
          @param h upper bound
          @param bin_size bin size
          @return array of bin centers
          """
          num_bins = self.num_bins(l, h, bin_size)
          centers = np.zeros(num_bins, dtype=self.dtype)
          for id_x in range(num_bins):
              bin_l = l+id_x*bin_size
              bin_h = min(bin_l+bin_size, h)
              centers[id_x] = (bin_l+bin_h)/2
          return centers
function_tokens: def bin_centers ( self , l , h , bin_size ) : num_bins = self . num_bins ( l , h , bin_size ) centers = np . zeros ( num_bins , dtype = self . dtype ) for id_x in range ( num_bins ) : bin_l = l + id_x * bin_size bin_h = min ( bin_l + bin_size , h ) centers [ id_x ] = ( bin_l + bin_h ) / 2 return centers