def tukey_hh_l_mean_and_scale(h_params):
  """Computes L-mean and L-scale for a Tukey HH distribution.

  Args:
    h_params: An np.array with dimension 2 on the first axis. The slice
    h_params[0, ...] contains the left parameter of the distribution and
    h_params[1, ...] the right parameter. Each entry h must in 0 <= h < 1.

  Returns:
    The tuple (L_mean, L_scale) containing the first two L-moments for the
    given parameters. Each entry has the same shape as h_params, except for
    the first axis, which is removed.
  """
  one_div_sqrt2pi = 1.0 / np.sqrt(2.0 * np.pi)
  hl = h_params[0, ...]
  hr = h_params[1, ...]
  dtype = h_params.dtype
  l_1 = one_div_sqrt2pi * (1.0 / (hl - 1.0) + 1.0 / (1.0 - hr))
  l_2 = one_div_sqrt2pi * (
      (np.sqrt(2.0 - hl) + np.sqrt(2.0 - hr) - hl * np.sqrt(2.0 - hl) -
       hr * np.sqrt(2 - hr)) /
      ((hl - 1.0) * (hr - 1.0) * np.sqrt((hl - 2.0) * (hr - 2.0))))
  return (l_1.astype(dtype), l_2.astype(dtype))
Computes L-mean and L-scale for a Tukey HH distribution.

  Args:
    h_params: An np.array with dimension 2 on the first axis. The slice
    h_params[0, ...] contains the left parameter of the distribution and
    h_params[1, ...] the right parameter. Each entry h must in 0 <= h < 1.

  Returns:
    The tuple (L_mean, L_scale) containing the first two L-moments for the
    given parameters. Each entry has the same shape as h_params, except for
    the first axis, which is removed.
  
tensorflow_transform/gaussianization.py