/*
 *  call-seq:
 *     fix.fdiv(numeric)   => float
 *
 *  Returns the floating point result of dividing <i>fix</i> by
 *  <i>numeric</i>.
 *
 *     654321.fdiv(13731)      #=> 47.6528293642124
 *     654321.fdiv(13731.24)   #=> 47.6519964693647
 *
 */

static VALUE
fix_fdiv(VALUE x, VALUE y)
{
    if (FIXNUM_P(y)) {
        return DOUBLE2NUM((double)FIX2LONG(x) / (double)FIX2LONG(y));
    }
    switch (TYPE(y)) {
      case T_BIGNUM:
        return DOUBLE2NUM((double)FIX2LONG(x) / rb_big2dbl(y));
      case T_FLOAT:
        return DOUBLE2NUM((double)FIX2LONG(x) / RFLOAT_VALUE(y));
      default:
        return rb_num_coerce_bin(x, y, rb_intern("fdiv"));
    }
}