Method: Complex#<=>
- Defined in:
- complex.c
#<=>(object) ⇒ -1, ...
Returns:
-
self.real <=> object.realif both of the following are true:-
self.imag == 0. -
object.imag == 0. # Always true if object is numeric but not complex.
-
-
nilotherwise.
Examples:
Complex.rect(2) <=> 3 # => -1
Complex.rect(2) <=> 2 # => 0
Complex.rect(2) <=> 1 # => 1
Complex.rect(2, 1) <=> 1 # => nil # self.imag not zero.
Complex.rect(1) <=> Complex.rect(1, 1) # => nil # object.imag not zero.
Complex.rect(1) <=> 'Foo' # => nil # object.imag not defined.
1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 |
# File 'complex.c', line 1273
static VALUE
nucomp_cmp(VALUE self, VALUE other)
{
if (!k_numeric_p(other)) {
return rb_num_coerce_cmp(self, other, idCmp);
}
if (!nucomp_real_p(self)) {
return Qnil;
}
if (RB_TYPE_P(other, T_COMPLEX)) {
if (nucomp_real_p(other)) {
get_dat2(self, other);
return rb_funcall(adat->real, idCmp, 1, bdat->real);
}
}
else {
get_dat1(self);
if (f_real_p(other)) {
return rb_funcall(dat->real, idCmp, 1, other);
}
else {
return rb_num_coerce_cmp(dat->real, other, idCmp);
}
}
return Qnil;
}
|