'Given a tuple of element-wise argument types, find a matching
signature in the dispatcher.
Return a 2-tuple containing the matching signature, and
compilation result.  Will return two None\'s if no matching
signature was found.'

def find_ewise_function(self, ewise_types):

    if self._frozen:
        loop = numpy_support.ufunc_find_matching_loop(self, ewise_types)
        if (loop is None):
            return (None, None)
        ewise_types = tuple((loop.inputs + loop.outputs))[:len(ewise_types)]
    for (sig, cres) in self._dispatcher.overloads.items():
        if (sig.args == ewise_types):
            return (sig, cres)
    return (None, None)
