PyObject __gt(final PyObject o, PyMultiarray result) {
        PyMultiarray a, b = PyMultiarray.asarray(o);
        final char type = PyMultiarray.commonType(this._typecode, b._typecode);
        a = PyMultiarray.asarray(this, type);
        b = PyMultiarray.asarray(b, type);
        a = PyMultiarray.stretchAxes(a, b);
        b = PyMultiarray.stretchAxes(b, this);
        if (result == null) {
            result = PyMultiarray.getResultArray(a, b, 'i');
        } else {
            PyMultiarray.checkResultArray(result, a, b);
        }
        if (result.dimensions.length == 0) {
            result.__setitem__(Py.Ellipsis, a.__gt(PyMultiarray.stretchAxes(b))
                    .__getitem__(0));
        } else {
            switch (type) {
            case '1':
                PyMultiarray.gtByte(
                        a.start,
                        a,
                        b.start,
                        b,
                        result.start,
                        result,
                        0);
                break;
            case 's':
                PyMultiarray.gtShort(
                        a.start,
                        a,
                        b.start,
                        b,
                        result.start,
                        result,
                        0);
                break;
            case 'i':
                PyMultiarray.gtInt(
                        a.start,
                        a,
                        b.start,
                        b,
                        result.start,
                        result,
                        0);
                break;
            case 'l':
                PyMultiarray.gtLong(
                        a.start,
                        a,
                        b.start,
                        b,
                        result.start,
                        result,
                        0);
                break;
            case 'f':
                PyMultiarray.gtFloat(
                        a.start,
                        a,
                        b.start,
                        b,
                        result.start,
                        result,
                        0);
                break;
            case 'd':
                PyMultiarray.gtDouble(
                        a.start,
                        a,
                        b.start,
                        b,
                        result.start,
                        result,
                        0);
                break;
            case 'O':
                PyMultiarray.gtObject(
                        a.start,
                        a,
                        b.start,
                        b,
                        result.start,
                        result,
                        0);
                break;
            case 'F':
                throw Py.ValueError("gt not supported for type ComplexFloat");
            case 'D':
                throw Py.ValueError("gt not supported for type ComplexDouble");
            default:
                throw Py.ValueError("typecode must be in [1silfFdDO]");
            }
        }
        return PyMultiarray.returnValue(result);
    }