@tf_export('math.conj', v1=['math.conj', 'conj'])
@dispatch.add_dispatch_support
@deprecation.deprecated_endpoints('conj')
def conj(x, name=None):
    "Returns the complex conjugate of a complex number.\n\n  Given a tensor `input` of complex numbers, this operation returns a tensor of\n  complex numbers that are the complex conjugate of each element in `input`. The\n  complex numbers in `input` must be of the form \\\\(a + bj\\\\), where *a* is the\n  real part and *b* is the imaginary part.\n\n  The complex conjugate returned by this operation is of the form \\\\(a - bj\\\\).\n\n  For example:\n\n      # tensor 'input' is [-2.25 + 4.75j, 3.25 + 5.75j]\n      tf.math.conj(input) ==> [-2.25 - 4.75j, 3.25 - 5.75j]\n\n  If `x` is real, it is returned unchanged.\n\n  Args:\n    x: `Tensor` to conjugate.  Must have numeric or variant type.\n    name: A name for the operation (optional).\n\n  Returns:\n    A `Tensor` that is the conjugate of `x` (with the same type).\n\n  Raises:\n    TypeError: If `x` is not a numeric tensor.\n  "
    if isinstance(x, ops.Tensor):
        dt = x.dtype
        if (dt.is_floating or dt.is_integer):
            return x
    with ops.name_scope(name, 'Conj', [x]) as name:
        x = ops.convert_to_tensor(x, name='x')
        if (x.dtype.is_complex or (x.dtype == dtypes.variant)):
            return gen_math_ops.conj(x, name=name)
        elif (x.dtype.is_floating or x.dtype.is_integer):
            return x
        else:
            raise TypeError(('Expected numeric or variant tensor, got dtype %r' % x.dtype))
Returns the complex conjugate of a complex number.

Given a tensor `input` of complex numbers, this operation returns a tensor of
complex numbers that are the complex conjugate of each element in `input`. The
complex numbers in `input` must be of the form \\(a + bj\\), where *a* is the
real part and *b* is the imaginary part.

The complex conjugate returned by this operation is of the form \\(a - bj\\).

For example:

    # tensor 'input' is [-2.25 + 4.75j, 3.25 + 5.75j]
    tf.math.conj(input) ==> [-2.25 - 4.75j, 3.25 - 5.75j]

If `x` is real, it is returned unchanged.

Args:
  x: `Tensor` to conjugate.  Must have numeric or variant type.
  name: A name for the operation (optional).

Returns:
  A `Tensor` that is the conjugate of `x` (with the same type).

Raises:
  TypeError: If `x` is not a numeric tensor.
@tf_export('math.conj', v1=['math.conj', 'conj'])
@dispatch.add_dispatch_support
@deprecation.deprecated_endpoints('conj')
def conj(x, name=None):
    "Returns the complex conjugate of a complex number.\n\n  Given a tensor `input` of complex numbers, this operation returns a tensor of\n  complex numbers that are the complex conjugate of each element in `input`. The\n  complex numbers in `input` must be of the form \\\\(a + bj\\\\), where *a* is the\n  real part and *b* is the imaginary part.\n\n  The complex conjugate returned by this operation is of the form \\\\(a - bj\\\\).\n\n  For example:\n\n      # tensor 'input' is [-2.25 + 4.75j, 3.25 + 5.75j]\n      tf.math.conj(input) ==> [-2.25 - 4.75j, 3.25 - 5.75j]\n\n  If `x` is real, it is returned unchanged.\n\n  Args:\n    x: `Tensor` to conjugate.  Must have numeric or variant type.\n    name: A name for the operation (optional).\n\n  Returns:\n    A `Tensor` that is the conjugate of `x` (with the same type).\n\n  Raises:\n    TypeError: If `x` is not a numeric tensor.\n  "
    if isinstance(x, ops.Tensor):
        dt = x.dtype
        if (dt.is_floating or dt.is_integer):
            return x
    with ops.name_scope(name, 'Conj', [x]) as name:
        x = ops.convert_to_tensor(x, name='x')
        if (x.dtype.is_complex or (x.dtype == dtypes.variant)):
            return gen_math_ops.conj(x, name=name)
        elif (x.dtype.is_floating or x.dtype.is_integer):
            return x
        else:
            raise TypeError(('Expected numeric or variant tensor, got dtype %r' % x.dtype))