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