static VALUE
nurat_fdiv(VALUE self, VALUE other)
{
VALUE div;
if (f_zero_p(other))
return DBL2NUM(nurat_to_double(self) / 0.0);
if (FIXNUM_P(other) && other == LONG2FIX(1))
return nurat_to_f(self);
div = nurat_div(self, other);
if (RB_TYPE_P(div, T_RATIONAL))
return nurat_to_f(div);
if (RB_FLOAT_TYPE_P(div))
return div;
return rb_funcall(div, rb_intern("to_f"), 0);
}