code: def norm_to_lognorm(
      mu_n: np.ndarray, Cov_n: np.ndarray
  ) -> Tuple[np.ndarray, np.ndarray]:
      """Compute mean and covariance of a log-MVN from its MVN sufficient statistics
  
      If `X ~ N(mu_n, Cov_n)` and `Y = exp(X)`, then `Y` is log-normal with
  
          mu_ln_{i} = exp(mu_n_{i}) + 0.5 * Cov_n_{ii}
          Cov_ln_{ij} = exp(mu_n_{i} + mu_n_{j} + 0.5 * (Cov_n_{ii} + Cov_n_{jj})) *
          (exp(Cov_n_{ij}) - 1)
      """
      diag_n = np.diag(Cov_n)
      b = mu_n + 0.5 * diag_n
      mu_ln = np.exp(b)
      Cov_ln = (np.exp(Cov_n) - 1) * np.exp(
          b.reshape(-1, 1) + b.reshape(1, -1)
      )
      return mu_ln, Cov_ln
  
imports: from __future__ import annotations
  from logging import Logger
  from typing import Callable, List, Optional, Tuple, TYPE_CHECKING
  import numpy
  from ax.core.observation import Observation, ObservationData, ObservationFeatures
  from ax.core.optimization_config import OptimizationConfig
  from ax.core.outcome_constraint import OutcomeConstraint
  from ax.core.search_space import SearchSpace
  from ax.modelbridge.transforms.base import Transform
  from ax.models.types import TConfig
  from ax.utils.common.logger import get_logger
  from scipy.stats import norm
label_desc: Use image node_id 3 for calling a global function with example usage: norm_to_lognorm(mu_n, Cov_n) and returns: mu_ln,  Cov_ln