@tf_export('math.angle', v1=['math.angle', 'angle'])
@deprecation.deprecated_endpoints('angle')
@dispatch.add_dispatch_support
def angle(input, name=None):
    "Returns the element-wise argument of a complex (or real) tensor.\n\n  Given a tensor `input`, this operation returns a tensor of type `float` that\n  is the argument of each element in `input` considered as a complex number.\n\n  The elements in `input` are considered to be complex numbers of the form\n  \\\\(a + bj\\\\), where *a* is the real part and *b* is the imaginary part.\n  If `input` is real then *b* is zero by definition.\n\n  The argument returned by this function is of the form \\\\(atan2(b, a)\\\\).\n  If `input` is real, a tensor of all zeros is returned.\n\n  For example:\n\n  ```\n  # tensor 'input' is [-2.25 + 4.75j, 3.25 + 5.75j]\n  tf.angle(input) ==> [2.0132, 1.056]\n  ```\n\n  Args:\n    input: A `Tensor`. Must be one of the following types: `float`, `double`,\n      `complex64`, `complex128`.\n    name: A name for the operation (optional).\n\n  Returns:\n    A `Tensor` of type `float32` or `float64`.\n  "
    with ops.name_scope(name, 'Angle', [input]) as name:
        if input.dtype.is_complex:
            return gen_math_ops.angle(input, Tout=input.dtype.real_dtype, name=name)
        else:
            return array_ops.zeros_like(input)
Returns the element-wise argument of a complex (or real) tensor.

Given a tensor `input`, this operation returns a tensor of type `float` that
is the argument of each element in `input` considered as a complex number.

The elements in `input` are considered to be complex numbers of the form
\\(a + bj\\), where *a* is the real part and *b* is the imaginary part.
If `input` is real then *b* is zero by definition.

The argument returned by this function is of the form \\(atan2(b, a)\\).
If `input` is real, a tensor of all zeros is returned.

For example:

```
# tensor 'input' is [-2.25 + 4.75j, 3.25 + 5.75j]
tf.angle(input) ==> [2.0132, 1.056]
```

Args:
  input: A `Tensor`. Must be one of the following types: `float`, `double`,
    `complex64`, `complex128`.
  name: A name for the operation (optional).

Returns:
  A `Tensor` of type `float32` or `float64`.
@tf_export('math.angle', v1=['math.angle', 'angle'])
@deprecation.deprecated_endpoints('angle')
@dispatch.add_dispatch_support
def angle(input, name=None):
    "Returns the element-wise argument of a complex (or real) tensor.\n\n  Given a tensor `input`, this operation returns a tensor of type `float` that\n  is the argument of each element in `input` considered as a complex number.\n\n  The elements in `input` are considered to be complex numbers of the form\n  \\\\(a + bj\\\\), where *a* is the real part and *b* is the imaginary part.\n  If `input` is real then *b* is zero by definition.\n\n  The argument returned by this function is of the form \\\\(atan2(b, a)\\\\).\n  If `input` is real, a tensor of all zeros is returned.\n\n  For example:\n\n  ```\n  # tensor 'input' is [-2.25 + 4.75j, 3.25 + 5.75j]\n  tf.angle(input) ==> [2.0132, 1.056]\n  ```\n\n  Args:\n    input: A `Tensor`. Must be one of the following types: `float`, `double`,\n      `complex64`, `complex128`.\n    name: A name for the operation (optional).\n\n  Returns:\n    A `Tensor` of type `float32` or `float64`.\n  "
    with ops.name_scope(name, 'Angle', [input]) as name:
        if input.dtype.is_complex:
            return gen_math_ops.angle(input, Tout=input.dtype.real_dtype, name=name)
        else:
            return array_ops.zeros_like(input)