def vdiv(left, right): """ Left/right. """ if left[0] == '#' or right[0] == '#': return fp.pack( fp.div(fp.unpack(vartypes.pass_double_keep(left)), fp.unpack(vartypes.pass_double_keep(right)))) else: return fp.pack( fp.div(fp.unpack(vartypes.pass_single_keep(left)), fp.unpack(vartypes.pass_single_keep(right))))
def vtimes(left, right): """ Left*right. """ if left[0] == '#' or right[0] == '#': return fp.pack( fp.unpack(vartypes.pass_double_keep(left)).imul( fp.unpack(vartypes.pass_double_keep(right)))) else: return fp.pack( fp.unpack(vartypes.pass_single_keep(left)).imul( fp.unpack(vartypes.pass_single_keep(right))))
def vcaret(left, right): """ Left^right. """ if (left[0] == '#' or right[0] == '#') and option_double: return fp.pack( fp.power(fp.unpack(vartypes.pass_double_keep(left)), fp.unpack(vartypes.pass_double_keep(right)))) else: if right[0] == '%': return fp.pack( fp.unpack(vartypes.pass_single_keep(left)).ipow_int( vartypes.unpack_int(right))) else: return fp.pack( fp.power(fp.unpack(vartypes.pass_single_keep(left)), fp.unpack(vartypes.pass_single_keep(right))))
def vcaret(left, right): """ Left^right. """ if (left[0] == '#' or right[0] == '#') and option_double: return fp.pack( fp.power(fp.unpack(vartypes.pass_double_keep(left)), fp.unpack(vartypes.pass_double_keep(right))) ) else: if right[0] == '%': return fp.pack( fp.unpack(vartypes.pass_single_keep(left)).ipow_int(vartypes.unpack_int(right)) ) else: return fp.pack( fp.power(fp.unpack(vartypes.pass_single_keep(left)), fp.unpack(vartypes.pass_single_keep(right))) )
def vdiv(left, right): """ Left/right. """ if left[0] == '#' or right[0] == '#': return fp.pack( fp.div(fp.unpack(vartypes.pass_double_keep(left)), fp.unpack(vartypes.pass_double_keep(right))) ) else: return fp.pack( fp.div(fp.unpack(vartypes.pass_single_keep(left)), fp.unpack(vartypes.pass_single_keep(right))) )
def vtimes(left, right): """ Left*right. """ if left[0] == '#' or right[0] == '#': return fp.pack( fp.unpack(vartypes.pass_double_keep(left)).imul(fp.unpack(vartypes.pass_double_keep(right))) ) else: return fp.pack( fp.unpack(vartypes.pass_single_keep(left)).imul(fp.unpack(vartypes.pass_single_keep(right))) )
def value_cdbl(ins): """ CDBL: convert a number to double. """ return vartypes.pass_double_keep(parse_bracket(ins))
def value_mkd(ins): """ MKD$: return the byte representation of a double. """ return vartypes.pack_string(vartypes.pass_double_keep(parse_bracket(ins))[1])
def value_mkd(ins): """ MKD$: return the byte representation of a double. """ return vartypes.pack_string( vartypes.pass_double_keep(parse_bracket(ins))[1])