Пример #1
0
def value_sgn(ins):
    """ SGN: get sign. """
    inp = vartypes.pass_number_keep(parse_bracket(ins))
    if inp[0] == '%':
        inp_int = vartypes.unpack_int(inp)
        return vartypes.pack_int(0 if inp_int==0 else (1 if inp_int > 0 else -1))
    else:
        return vartypes.pack_int(fp.unpack(inp).sign() )
Пример #2
0
def value_sgn(ins):
    """ SGN: get sign. """
    inp = vartypes.pass_number_keep(parse_bracket(ins))
    if inp[0] == '%':
        inp_int = vartypes.unpack_int(inp)
        return vartypes.pack_int(0 if inp_int == 0 else (
            1 if inp_int > 0 else -1))
    else:
        return vartypes.pack_int(fp.unpack(inp).sign())
Пример #3
0
def value_fix(ins):
    """ FIX: round towards zero. """
    inp = vartypes.pass_number_keep(parse_bracket(ins))
    if inp[0] == '%':
        return inp
    elif inp[0] == '!':
        # needs to be a float to avoid overflow
        return fp.pack(fp.Single.from_int(fp.unpack(inp).trunc_to_int()))
    elif inp[0] == '#':
        return fp.pack(fp.Double.from_int(fp.unpack(inp).trunc_to_int()))
Пример #4
0
def value_fix(ins):
    """ FIX: round towards zero. """
    inp = vartypes.pass_number_keep(parse_bracket(ins))
    if inp[0] == '%':
        return inp
    elif inp[0] == '!':
        # needs to be a float to avoid overflow
        return fp.pack(fp.Single.from_int(fp.unpack(inp).trunc_to_int()))
    elif inp[0] == '#':
        return fp.pack(fp.Double.from_int(fp.unpack(inp).trunc_to_int()))
Пример #5
0
def value_neg(ins):
    """ -: get negative value. """
    return vartypes.number_neg(vartypes.pass_number_keep(parse_expr_unit(ins)))
Пример #6
0
def value_int(ins):
    """ INT: get floor value. """
    inp = vartypes.pass_number_keep(parse_bracket(ins))
    return inp if inp[0] == '%' else fp.pack(fp.unpack(inp).ifloor())
Пример #7
0
def value_abs(ins):
    """ ABS: get absolute value. """
    return vartypes.number_abs(vartypes.pass_number_keep(parse_bracket(ins)))
Пример #8
0
def value_str(ins):
    """ STR$: string representation of a number. """
    s = vartypes.pass_number_keep(parse_bracket(ins))
    return representation.value_to_str_keep(s, screen=True)
Пример #9
0
def value_neg(ins):
    """ -: get negative value. """
    return vartypes.number_neg(vartypes.pass_number_keep(parse_expr_unit(ins)))
Пример #10
0
def value_int(ins):
    """ INT: get floor value. """
    inp = vartypes.pass_number_keep(parse_bracket(ins))
    return inp if inp[0] == '%' else fp.pack(fp.unpack(inp).ifloor())
Пример #11
0
def value_abs(ins):
    """ ABS: get absolute value. """
    return vartypes.number_abs(vartypes.pass_number_keep(parse_bracket(ins)))
Пример #12
0
def value_str(ins):
    """ STR$: string representation of a number. """
    s = vartypes.pass_number_keep(parse_bracket(ins))
    return representation.value_to_str_keep(s, screen=True)