Sha256: 7197b69db1322a244d5180152e3cdcbe1a912d35a7f786d8df5be76c398407ce

Contents?: true

Size: 1.97 KB

Versions: 12

Compression:

Stored size: 1.97 KB

Contents

o:$YARD::CodeObjects::MethodObject:@scope:
instance:@visibility:public:
@pathI"
Bignum#^:EF:@parameters[:@files[[I"
bignum.c;T0:@current_file_has_commentsF:
@name:^:@source_type:c:
@tags[:@docstringIC:YARD::Docstring"APerforms bitwise +exclusive or+ between _big_ and _numeric_.;F:@objectIu:YARD::StubProxy
Bignum#^;F:
@summary0:@ref_tags[;[o:YARD::Tags::OverloadTag
:@tag_nameI"
overload;F:
@text0;;:@types0:@signatureI"^(numeric);F;IC;";F;Iu;
Bignum#^;F;0;[;[o:YARD::Tags::Tag
;I"return;F;I";F;0;[I"Integer;F;0:	@allI"@return [Integer];F;[[:numeric0;Iu;
Bignum#^;F; I"lPerforms bitwise +exclusive or+ between _big_ and _numeric_.


@overload ^(numeric)
  @return [Integer];F:@namespaceIu;Bignum;F:@docstring_extra0:@sourceI"¬/*
 * call-seq:
 *     big ^ numeric   ->  integer
 *
 * Performs bitwise +exclusive or+ between _big_ and _numeric_.
 */

VALUE
rb_big_xor(VALUE xx, VALUE yy)
{
    volatile VALUE x, y;
    VALUE z;
    BDIGIT *ds1, *ds2, *zds;
    long i, l1, l2;
    char sign;

    x = xx;
    y = bit_coerce(yy);

    if (!RBIGNUM_SIGN(x)) {
    x = rb_big_clone(x);
    get2comp(x);
    }
    if (FIXNUM_P(y)) {
    return bigxor_int(x, FIX2LONG(y));
    }
    if (!RBIGNUM_SIGN(y)) {
    y = rb_big_clone(y);
    get2comp(y);
    }
    if (RBIGNUM_LEN(x) > RBIGNUM_LEN(y)) {
    l1 = RBIGNUM_LEN(y);
    l2 = RBIGNUM_LEN(x);
    ds1 = BDIGITS(y);
    ds2 = BDIGITS(x);
    sign = RBIGNUM_SIGN(y);
    }
    else {
    l1 = RBIGNUM_LEN(x);
    l2 = RBIGNUM_LEN(y);
    ds1 = BDIGITS(x);
    ds2 = BDIGITS(y);
    sign = RBIGNUM_SIGN(x);
    }
    RBIGNUM_SET_SIGN(x, RBIGNUM_SIGN(x)?1:0);
    RBIGNUM_SET_SIGN(y, RBIGNUM_SIGN(y)?1:0);
    z = bignew(l2, !(RBIGNUM_SIGN(x) ^ RBIGNUM_SIGN(y)));
    zds = BDIGITS(z);

    for (i=0; i<l1; i++) {
    zds[i] = ds1[i] ^ ds2[i];
    }
    for (; i<l2; i++) {
    zds[i] = sign?ds2[i]:~ds2[i];
    }
    if (!RBIGNUM_SIGN(z)) get2comp(z);

    return bignorm(z);
};F

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
pry-doc-0.4.4 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-doc-0.4.3 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-doc-0.4.2 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-doc-0.4.1 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-doc-0.4.0 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-doc-0.3.0 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-doc-0.2.4pre1 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-doc-0.2.3pre1 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-doc-0.2.1 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-doc-0.2.0 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-doc-0.1.5pre1 lib/pry-doc/core_docs_19/objects/Bignum/_5E_i.dat
pry-0.6.9pre1-i386-mingw32 lib/pry/core_docs_19/objects/Bignum/_5E_i.dat