def METHOD_NAME(x):
    """Returns a bool array, where True if input element is complex.
    What is tested is whether the input has a non-zero imaginary part, not if
    the input type is complex.
    Args:
        x (cupy.ndarray): Input array.
    Returns:
        cupy.ndarray: Boolean array of the same shape as ``x``.
    .. seealso::
        :func:`isreal`, :func:`iscomplexobj`
    Examples
    --------
    >>> cupy.iscomplex(cupy.array([1+1j, 1+0j, 4.5, 3, 2, 2j]))
    array([ True, False, False, False, False,  True])
    """
    if numpy.isscalar(x):
        return numpy.METHOD_NAME(x)
    if not isinstance(x, cupy.ndarray):
        return cupy.asarray(numpy.METHOD_NAME(x))
    if x.dtype.kind == 'c':
        return x.imag != 0
    return cupy.zeros(x.shape, bool)