class_docstr: Exponentially modified Gaussian distribution.
  
  #### Mathematical details
  
  The exponentially modified Gaussian distribution is the sum of a normal
  distribution and an exponential distribution.
  ```none
  X ~ Normal(loc, scale)
  Y ~ Exponential(rate)
  Z = X + Y
  ```
  is equivalent to
  ```none
  Z ~ ExponentiallyModifiedGaussian(loc, scale, rate)
  ```
  
  #### Examples
  ```python
  tfd = tfp.distributions
  
  # Define a single scalar ExponentiallyModifiedGaussian distribution
  dist = tfd.ExponentiallyModifiedGaussian(loc=0., scale=1., rate=3.)
  
  # Evaluate the pdf at 1, returing a scalar.
  dist.prob(1.)
  ```
docstr: Construct an exponentially-modified Gaussian distribution.
  
  The Gaussian distribution has mean `loc` and stddev `scale`,
  and Exponential distribution has rate parameter `rate`.
  
  The parameters `loc`, `scale`, and `rate` must be shaped in a way that
  supports broadcasting (e.g. `loc + scale + rate` is a valid operation).
  Args:
    loc: Floating-point `Tensor`; the means of the distribution(s).
    scale: Floating-point `Tensor`; the stddevs of the distribution(s). Must
      contain only positive values.
    rate: Floating-point `Tensor`; the rate parameter for the exponential
      distribution.
    validate_args: Python `bool`, default `False`. When `True` distribution
      parameters are checked for validity despite possibly degrading runtime
      performance. When `False` invalid inputs may silently render incorrect
      outputs.
    allow_nan_stats: Python `bool`, default `True`. When `True`, statistics
      (e.g., mean, mode, variance) use the value "`NaN`" to indicate the
      result is undefined. When `False`, an exception is raised if one or more
      of the statistic's batch members are undefined.
    name: Python `str` name prefixed to Ops created by this class.
  
  Raises:
    TypeError: if `loc`, `scale`, and `rate` are not all the same `dtype`.
docstr_tok: ["Construct","an","exponentially-modified","Gaussian","distribution",".","The","Gaussian","distribution","has","mean","`","loc","`","and","stddev","`","scale","`",",","and","Exponential","distribution","has","rate","parameter","`","rate","`",".","The","parameters","`","loc","`",",","`","scale","`",",","and","`","rate","`","must","be","shaped","in","a","way","that","supports","broadcasting","(","e.g",".","`","loc","+","scale","+","rate","`","is","a","valid","operation",")",".","Args",":","loc",":","Floating-point","`","Tensor","`",";","the","means","of","the","distribution","(","s",")",".","scale",":","Floating-point","`","Tensor","`",";","the","stddevs","of","the","distribution","(","s",")",".","Must","contain","only","positive","values",".","rate",":","Floating-point","`","Tensor","`",";","the","rate","parameter","for","the","exponential","distribution",".","validate_args",":","Python","`","bool","`",",","default","`","False","`",".","When","`","True","`","distribution","parameters","are","checked","for","validity","despite","possibly","degrading","runtime","performance",".","When","`","False","`","invalid","inputs","may","silently","render","incorrect","outputs",".","allow_nan_stats",":","Python","`","bool","`",",","default","`","True","`",".","When","`","True","`",",","statistics","(","e.g.",",","mean",",","mode",",","variance",")","use","the","value","``","`","NaN","`","``","to","indicate","the","result","is","undefined",".","When","`","False","`",",","an","exception","is","raised","if","one","or","more","of","the","statistic","'s","batch","members","are","undefined",".","name",":","Python","`","str","`","name","prefixed","to","Ops","created","by","this","class",".","Raises",":","TypeError",":","if","`","loc","`",",","`","scale","`",",","and","`","rate","`","are","not","all","the","same","`","dtype","`","."]
code: def __init__(
      self,
      loc,
      scale,
      rate,
      validate_args=False,
      allow_nan_stats=True,
      name="ExponentiallyModifiedGaussian",
  ):
      """Construct an exponentially-modified Gaussian distribution.
  
      The Gaussian distribution has mean `loc` and stddev `scale`,
      and Exponential distribution has rate parameter `rate`.
  
      The parameters `loc`, `scale`, and `rate` must be shaped in a way that
      supports broadcasting (e.g. `loc + scale + rate` is a valid operation).
      Args:
        loc: Floating-point `Tensor`; the means of the distribution(s).
        scale: Floating-point `Tensor`; the stddevs of the distribution(s). Must
          contain only positive values.
        rate: Floating-point `Tensor`; the rate parameter for the exponential
          distribution.
        validate_args: Python `bool`, default `False`. When `True` distribution
          parameters are checked for validity despite possibly degrading runtime
          performance. When `False` invalid inputs may silently render incorrect
          outputs.
        allow_nan_stats: Python `bool`, default `True`. When `True`, statistics
          (e.g., mean, mode, variance) use the value "`NaN`" to indicate the
          result is undefined. When `False`, an exception is raised if one or more
          of the statistic's batch members are undefined.
        name: Python `str` name prefixed to Ops created by this class.
  
      Raises:
        TypeError: if `loc`, `scale`, and `rate` are not all the same `dtype`.
      """
      parameters = dict(locals())
      with tf.name_scope(name) as name:
          dtype = dtype_util.common_dtype(
              [loc, scale, rate], dtype_hint=tf.float32
          )
          self._loc = tensor_util.convert_nonref_to_tensor(
              loc, dtype=dtype, name="loc"
          )
          self._scale = tensor_util.convert_nonref_to_tensor(
              scale, dtype=dtype, name="scale"
          )
          self._rate = tensor_util.convert_nonref_to_tensor(
              rate, dtype=dtype, name="rate"
          )
          super(ExponentiallyModifiedGaussian, self).__init__(
              dtype=dtype,
              reparameterization_type=reparameterization.FULLY_REPARAMETERIZED,
              validate_args=validate_args,
              allow_nan_stats=allow_nan_stats,
              parameters=parameters,
              name=name,
          )
  
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.distributions import exponential
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import reparameterization
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import special_math
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.math import generic
label_desc: Use image node_id 1 to create a new ExponentiallyModifiedGaussian object from inherited base classes: distribution with example: obj = ExponentiallyModifiedGaussian(loc, scale, rate, validate_args, allow_nan_stats, name)