Issue #10378 has been updated by gogo tanaka.


I can find more useful function `f_zero_p `.

```c
static VALUE
nucomp_real_p(VALUE self)
{
    get_dat1(self);
    return f_zero_p(dat->imag);
}
```

----------------------------------------
Feature #10378: [PATCH 0/3] It's better (1 + 0i).real? return true
https://bugs.ruby-lang.org/issues/10378#change-49437

* Author: gogo tanaka
* Status: Open
* Priority: Normal
* Assignee: 
* Category: core
* Target version: current: 2.2.0
----------------------------------------
Right now, `Complex#real?` return `false` anytime. 

I suppose `#is_a?(Complex)` is enough to check whether a object is `Complex`'s object or not.
(I have to admire `#real?` is more useful than `#is_a?(Complex)`)

But what we really want to know is whether a object whose class has `Numeric` as superclass  is equal to real number or not.

Actually whichever is ok, modifying `#real?` or implementing as new method(e.g #real_num? ... :(  

Anyway, I wanna method like that for `Complex`.

```cpp
static VALUE
nucomp_real_p(VALUE self)
{
    get_dat1(self);
    if (rb_equal(dat->imag, INT2FIX(0))) {
        return Qtrue;
    }
    return Qfalse;
}
```

By the way, I can find two coding styles through ruby source code.

Which is prefer?  it doesn't matter?

```cpp
if(...)
    return ...
retrun ...
```

or 

```cpp
if(...) {
    return ...
}
retrun ...
```




-- 
https://bugs.ruby-lang.org/