Method: CCMath.log2

Defined in:
ext/ccmath/ccmath.c

.log2(z) ⇒ Object



205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
# File 'ext/ccmath/ccmath.c', line 205

static VALUE
ccmath_log2(VALUE obj, VALUE z)
{
    if (codomain_check(z)) {
        double d;
        size_t numbits;

        assing_numbits(z, &d, &numbits);

        if (d < 0.0) domain_error("log2");
        if (d == 0.0) return DBL2NUM(-INFINITY);

        return DBL2NUM(log2(d) + numbits);
    }
    else {
        EXTRACT_DBLS(z);;
        float r = hypot(z_real, z_imag);
        return DBLS2COMP(log(r) / M_LN2, m_atan2(z_imag, z_real) / M_LN2);
    }
}