function(self, other){
    if(isinstance(other, _b_.int)){
        if(typeof other == "boolean"){
            return other ? self - 1 : self
        }else if(other.__class__ === $B.long_int){
            return float.$factory(self - parseInt(other.value))
        }else{return float.$factory(self - other)}
    }
    if(isinstance(other, float)){return float.$factory(self - other)}
    if(isinstance(other, _b_.bool)){
        var bool_value = 0
        if(other.valueOf()){bool_value = 1}
        return float.$factory(self - bool_value)
    }
    if(isinstance(other, _b_.complex)){
        return $B.make_complex(self - other.$real, -other.$imag)
    }
    if(hasattr(other, "__rsub__")){return getattr(other, "__rsub__")(self)}
    $err("-", other)
}