def _extend_support_with_default_value(self, x, f, default_value):
with tf.name_scope("<STR_LIT>"):<EOL><INDENT>x = tf.convert_to_tensor(value=x, dtype=self.dtype, name="<STR_LIT:x>")<EOL>loc = self.loc + tf.zeros_like(self.scale) + tf.zeros_like(x)<EOL>x = x + tf.zeros_like(loc)<EOL>y = f(tf.where(x < loc, self._inv_z(<NUM_LIT:0.5>) + tf.zeros_like(x), x))<EOL>if default_value == <NUM_LIT:0.>:<EOL><INDENT>default_value = tf.zeros_like(y)<EOL><DEDENT>elif default_value == <NUM_LIT:1.>:<EOL><INDENT>default_value = tf.ones_like(y)<EOL><DEDENT>else:<EOL><INDENT>default_value = tf.fill(<EOL>dims=tf.shape(input=y),<EOL>value=dtype_util.as_numpy_dtype(self.dtype)(default_value))<EOL><DEDENT>return tf.where(x < loc, default_value, y)<EOL><DEDENT>
Returns `f(x)` if x is in the support, and `default_value` otherwise.

        Given `f` which is defined on the support of this distribution
        (`x >= loc`), extend the function definition to the real line
        by defining `f(x) = default_value` for `x < loc`.

        Args:
          x: Floating-point `Tensor` to evaluate `f` at.
          f: Callable that takes in a `Tensor` and returns a `Tensor`. This
            represents the function whose domain of definition we want to extend.
          default_value: Python or numpy literal representing the value to use for
            extending the domain.
        Returns:
          `Tensor` representing an extension of `f(x)`.