コード例 #1
0
ファイル: expressions.py プロジェクト: nony05/pcbasic
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
ファイル: expressions.py プロジェクト: nony05/pcbasic
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
ファイル: expressions.py プロジェクト: nony05/pcbasic
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
ファイル: expressions.py プロジェクト: nony05/pcbasic
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
ファイル: expressions.py プロジェクト: nony05/pcbasic
def value_neg(ins):
    """ -: get negative value. """
    return vartypes.number_neg(vartypes.pass_number_keep(parse_expr_unit(ins)))
コード例 #6
0
ファイル: expressions.py プロジェクト: nony05/pcbasic
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
ファイル: expressions.py プロジェクト: nony05/pcbasic
def value_abs(ins):
    """ ABS: get absolute value. """
    return vartypes.number_abs(vartypes.pass_number_keep(parse_bracket(ins)))
コード例 #8
0
ファイル: expressions.py プロジェクト: nony05/pcbasic
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
ファイル: expressions.py プロジェクト: nony05/pcbasic
def value_neg(ins):
    """ -: get negative value. """
    return vartypes.number_neg(vartypes.pass_number_keep(parse_expr_unit(ins)))
コード例 #10
0
ファイル: expressions.py プロジェクト: nony05/pcbasic
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
ファイル: expressions.py プロジェクト: nony05/pcbasic
def value_abs(ins):
    """ ABS: get absolute value. """
    return vartypes.number_abs(vartypes.pass_number_keep(parse_bracket(ins)))
コード例 #12
0
ファイル: expressions.py プロジェクト: nony05/pcbasic
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)