def dot(localization, proxy_obj, arguments):
        dvar = call_utilities.parse_varargs_and_kwargs(
            localization, arguments, ['out'], {
                'out': numpy.ndarray,
            }, 'dot')

        if isinstance(dvar, StypyTypeError):
            return dvar

        if Number == type(arguments[0]) and Number == type(arguments[1]):
            return call_utilities.cast_to_greater_numpy_type(
                arguments[0], arguments[1])

        if Number == type(arguments[0]) and call_utilities.is_iterable(
                arguments[1]):
            c_t = get_contained_elements_type(localization, arguments[1])
            if not 'out' in dvar.keys():
                return call_utilities.create_numpy_array(c_t)
            else:
                set_contained_elements_type(localization, dvar['out'], c_t)
                return dvar['out']

        if Number == type(arguments[1]) and call_utilities.is_iterable(
                arguments[0]):
            c_t = get_contained_elements_type(localization, arguments[0])
            if not 'out' in dvar.keys():
                return call_utilities.create_numpy_array(c_t)
            else:
                set_contained_elements_type(localization, dvar['out'], c_t)
                return dvar['out']

        if call_utilities.is_iterable(
                arguments[0]) and call_utilities.is_iterable(arguments[1]):
            if call_utilities.get_dimensions(
                    localization,
                    arguments[0]) == 1 and call_utilities.get_dimensions(
                        localization, arguments[1]) == 1:
                return call_utilities.cast_to_greater_numpy_type(
                    call_utilities.get_inner_type(localization, arguments[0]),
                    call_utilities.get_inner_type(localization, arguments[1]))

            typ = call_utilities.cast_to_greater_numpy_type(
                call_utilities.get_inner_type(localization, arguments[0]),
                call_utilities.get_inner_type(localization, arguments[1]))
            for i in range(
                    call_utilities.get_dimensions(localization, arguments[0])):
                typ = call_utilities.create_numpy_array(typ)

            if not 'out' in dvar.keys():
                return typ
            else:
                set_contained_elements_type(
                    localization, dvar['out'],
                    get_contained_elements_type(localization, typ))
                return dvar['out']

        return arguments[0]
Пример #2
0
    def divide(localization, proxy_obj, arguments, func_name='divide'):
        dvar = call_utilities.parse_varargs_and_kwargs(
            localization, arguments, ['out', 'where'], {
                'out': numpy.ndarray,
                'where': numpy.ndarray,
            }, func_name, 2)

        if isinstance(dvar, StypyTypeError):
            return dvar

        if Number == type(arguments[0]) and Number == type(arguments[1]):
            return call_utilities.cast_to_greater_numpy_type(
                arguments[0], arguments[1])

        try:
            dims = 0
            if call_utilities.is_iterable(arguments[0]):
                param0 = call_utilities.get_inner_type(localization,
                                                       arguments[0])
                dims = call_utilities.get_dimensions(localization,
                                                     arguments[0])
            else:
                param0 = arguments[0]

            if call_utilities.is_iterable(arguments[1]):
                param1 = call_utilities.get_inner_type(localization,
                                                       arguments[1])
                temp = call_utilities.get_dimensions(localization,
                                                     arguments[1])
                if temp > dims:
                    dims = temp
            else:
                param1 = arguments[1]
            if dims > 0:
                ret = call_utilities.create_numpy_array_n_dimensions(
                    call_utilities.cast_to_greater_numpy_type(param0, param1),
                    dims)
            else:
                ret = call_utilities.cast_to_greater_numpy_type(param0, param1)

        except Exception as ex:
            return StypyTypeError(localization, str(ex))

        if 'out' in dvar.keys():
            set_contained_elements_type(localization, dvar['out'], ret)
            return dvar['out']

        return ret
Пример #3
0
    def einsum(localization, proxy_obj, arguments):
        if isinstance(arguments[-1], dict):
            if Str == type(arguments[0]):
                arg_num = 2
            else:
                arg_num = 1

            dvar = call_utilities.parse_varargs_and_kwargs(localization, arguments,
                                                           ['out', 'dtype', 'order', 'casting', 'optimize'], {
                                                               'out': IterableDataStructure,
                                                               'dtype': type,
                                                               'order': Str,
                                                               'casting': Str,
                                                               'optimize': [bool, Str]
                                                           }, 'einsum', arg_num)

            if isinstance(dvar, StypyTypeError):
                return dvar

            val_temp = call_utilities.check_possible_values(dvar, 'order', ['C', 'F', 'A', 'K'])
            if isinstance(val_temp, StypyTypeError):
                return val_temp

            val_temp = call_utilities.check_possible_values(dvar, 'casting', ['no', 'equiv', 'safe', 'same_kind', 'unsafe'])
            if isinstance(val_temp, StypyTypeError):
                return val_temp

            val_temp = call_utilities.check_possible_values(dvar, 'optimize', ['greedy', 'optimal', False, True])
            if isinstance(val_temp, StypyTypeError):
                return val_temp

            arguments = arguments[:-1]
        else:
            dvar = dict()

        typ = None
        if Str == type(arguments[0]):
            arg_list = arguments[1:]
            if Number == type(arguments[1]) and 'out' in dvar:
                return dvar['out']
        else:
            arg_list = arguments

        for arg in arg_list:
            if call_utilities.is_iterable(arg):
                typ_temp = call_utilities.cast_to_numpy_type(call_utilities.get_inner_type(localization, arg))
                typ = call_utilities.cast_to_greater_numpy_type(typ, typ_temp)

        union = UnionType.add(typ, call_utilities.create_numpy_array(DynamicType))

        if 'out' in dvar:
            set_contained_elements_type(localization, dvar['out'], DynamicType)
            return call_utilities.create_numpy_array(DynamicType)

        return union
Пример #4
0
    def outer(localization, proxy_obj, arguments):
        dvar = call_utilities.parse_varargs_and_kwargs(localization, arguments, ['out'],{
            'out': numpy.ndarray,
        }, 'outer', 2)

        if isinstance(dvar, StypyTypeError):
            return dvar

        t1 = get_contained_elements_type(localization, arguments[0])
        t2 = get_contained_elements_type(localization, arguments[1])
        l = wrap_contained_type(list())
        set_contained_elements_type(localization, l, call_utilities.cast_to_greater_numpy_type(t1, t2))

        if 'out' in dvar:
            set_contained_elements_type(localization, dvar['out'], l)

        return call_utilities.create_numpy_array(l)
Пример #5
0
    def convolve(localization, proxy_obj, arguments):
        dvar = call_utilities.parse_varargs_and_kwargs(localization, arguments, ['mode'],{
            'mode': Str,
        }, 'convolve', 2)

        dvar = call_utilities.check_possible_values(dvar, 'mode', ['full', 'same', 'valid'])
        if isinstance(dvar, StypyTypeError):
            return dvar

        if Number == type(arguments[0]):
            type1 = arguments[0]
        else:
            type1 = get_contained_elements_type(localization, arguments[0])

        if Number == type(arguments[1]):
            type2 = arguments[1]
        else:
            type2 = get_contained_elements_type(localization, arguments[1])

        return call_utilities.create_numpy_array(call_utilities.cast_to_greater_numpy_type(type1, type2))
Пример #6
0
    def cross(localization, proxy_obj, arguments):
        dvar = call_utilities.parse_varargs_and_kwargs(localization, arguments, ['axisa', 'axisb','axisc', 'axis'],{
            'axisa': Integer,
            'axisb': Integer,
            'axisc': Integer,
            'axis': Integer,
        }, 'cross', 2)

        if isinstance(dvar, StypyTypeError):
            return dvar

        if Number == type(arguments[0]):
            type1 = arguments[0]
        else:
            type1 = get_contained_elements_type(localization, arguments[0])

        if Number == type(arguments[1]):
            type2 = arguments[1]
        else:
            type2 = get_contained_elements_type(localization, arguments[1])

        return call_utilities.create_numpy_array(call_utilities.cast_to_greater_numpy_type(type1, type2))