Module: BitUtils::JavaImpl

Defined in:
lib/bit_utils/jruby.rb

Overview

Note:

not intended for direct use.

module for Java-specific codes of BitUtils.

Class Method Summary collapse

Class Method Details

.popcount(num) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/bit_utils/jruby.rb', line 17

def popcount(num)
  case num
  when Fixnum
    popcount_fixnum num
  when Bignum
    popcount_bignum num
  else
    raise TypeError
  end
end

.popcount_bignum(num) ⇒ Object

Raises:

  • (TypeError)


34
35
36
37
38
# File 'lib/bit_utils/jruby.rb', line 34

def popcount_bignum(num)
  raise TypeError unless num.is_a?(::Bignum)
  count = num.to_java.bitCount
  num >= 0 ? count : -count
end

.popcount_fixnum(num) ⇒ Object

Raises:

  • (TypeError)


28
29
30
31
32
# File 'lib/bit_utils/jruby.rb', line 28

def popcount_fixnum(num)
  raise TypeError unless num.is_a?(::Fixnum)
  count = Java::JavaLang::Long.bitCount(num)
  num >= 0 ? count : count - 64
end

.trailing_zeros(num) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/bit_utils/jruby.rb', line 40

def trailing_zeros(num)
  case num
  when Fixnum
    trailing_zeros_fixnum num
  when Bignum
    trailing_zeros_bignum num
  else
    raise TypeError
  end
end

.trailing_zeros_bignum(num) ⇒ Object

Raises:

  • (TypeError)


58
59
60
61
# File 'lib/bit_utils/jruby.rb', line 58

def trailing_zeros_bignum(num)
  raise TypeError unless num.is_a?(::Bignum)
  num.to_java.getLowestSetBit
end

.trailing_zeros_fixnum(num) ⇒ Object

Raises:

  • (TypeError)


52
53
54
55
56
# File 'lib/bit_utils/jruby.rb', line 52

def trailing_zeros_fixnum(num)
  raise TypeError unless num.is_a?(::Fixnum)
  return -1 if num == 0
  Java::JavaLang::Long.numberOfTrailingZeros(num)
end