Method: Fixnum#<=>

Defined in:
numeric.c

#<=>(numeric) ⇒ -1, ...

Comparison---Returns -1, 0, +1 or nil depending on whether fix is less than, equal to, or greater than numeric. This is the basis for the tests in Comparable.



# File 'numeric.c'

/*
 *  call-seq:
 *     fix <=> numeric  ->  -1, 0, +1 or nil
 *
 *  Comparison---Returns -1, 0, +1 or nil depending on whether
 *  <i>fix</i> is less than, equal to, or greater than
 *  <i>numeric</i>. This is the basis for the tests in
 *  <code>Comparable</code>.
 */

static VALUE
fix_cmp(VALUE x, VALUE y)
{
    if (x == y) return INT2FIX(0);
    if (FIXNUM_P(y)) {
    if (FIX2LONG(x) > FIX2LONG(y)) return INT2FIX(1);
    return INT2FIX(-1);
    }
    switch (TYPE(y)) {
      case T_BIGNUM:
    return rb_big_cmp(rb_int2big(FIX2LONG(x)), y);
      case T_FLOAT:
    return rb_dbl_cmp((double)FIX2LONG(x), RFLOAT_VALUE(y));
      default:
    return rb_num_coerce_cmp(x, y, rb_intern("<=>"));
    }
}

Comments