o:$YARD::CodeObjects::MethodObject:@scope:
instance:@visibility:public:
@pathI"Fixnum#**:EF:@parameters[�:@files[[I"numeric.c;T0:@current_file_has_commentsF:
@name:**:@source_type:c:
@tags[�:@docstringIC:YARD::Docstring"�Raises <code>fix</code> to the <code>numeric</code> power, which may
be negative or fractional.

  2 ** 3      #=> 8
  2 ** -1     #=> 0.5
  2 ** 0.5    #=> 1.4142135623731;F:@objectIu:YARD::StubProxyFixnum#**;F:
@summary0:@ref_tags[�;[o:YARD::Tags::OverloadTag
:@tag_nameI"
overload;F:
@text0;;:@types0:@signatureI"**(numeric);F;IC;"�;F;Iu;Fixnum#**;F;0;[�;[�:	@allI"�;F;[[:numeric0;Iu;Fixnum#**;F;I"�Raises <code>fix</code> to the <code>numeric</code> power, which may
be negative or fractional.

  2 ** 3      #=> 8
  2 ** -1     #=> 0.5
  2 ** 0.5    #=> 1.4142135623731


@overload **(numeric);F:@namespaceIu;Fixnum;F:@docstring_extra0:@sourceI"�/*
 *  call-seq:
 *    fix ** numeric  ->  numeric_result
 *
 *  Raises <code>fix</code> to the <code>numeric</code> power, which may
 *  be negative or fractional.
 *
 *    2 ** 3      #=> 8
 *    2 ** -1     #=> 0.5
 *    2 ** 0.5    #=> 1.4142135623731
 */

static VALUE
fix_pow(VALUE x, VALUE y)
{
    long a = FIX2LONG(x);

    if (FIXNUM_P(y)) {
    long b = FIX2LONG(y);

    if (b < 0)
        return rb_funcall(rb_rational_raw1(x), rb_intern("**"), 1, y);

    if (b == 0) return INT2FIX(1);
    if (b == 1) return x;
    if (a == 0) {
        if (b > 0) return INT2FIX(0);
        return DBL2NUM(INFINITY);
    }
    if (a == 1) return INT2FIX(1);
    if (a == -1) {
        if (b % 2 == 0)
        return INT2FIX(1);
        else
        return INT2FIX(-1);
    }
    return int_pow(a, b);
    }
    switch (TYPE(y)) {
      case T_BIGNUM:

    if (rb_funcall(y, '<', 1, INT2FIX(0)))
        return rb_funcall(rb_rational_raw1(x), rb_intern("**"), 1, y);

    if (a == 0) return INT2FIX(0);
    if (a == 1) return INT2FIX(1);
    if (a == -1) {
        if (int_even_p(y)) return INT2FIX(1);
        else return INT2FIX(-1);
    }
    x = rb_int2big(FIX2LONG(x));
    return rb_big_pow(x, y);
      case T_FLOAT:
    if (RFLOAT_VALUE(y) == 0.0) return DBL2NUM(1.0);
    if (a == 0) {
        return DBL2NUM(RFLOAT_VALUE(y) < 0 ? INFINITY : 0.0);
    }
    if (a == 1) return DBL2NUM(1.0);
    {
        double dy = RFLOAT_VALUE(y);
        if (a < 0 && dy != round(dy))
        return rb_funcall(rb_complex_raw1(x), rb_intern("**"), 1, y);
        return DBL2NUM(pow((double)a, dy));
    }
      default:
    return rb_num_coerce_bin(x, y, rb_intern("**"));
    }
};F