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
- .popcount(num) ⇒ Object
- .popcount_bignum(num) ⇒ Object
- .popcount_fixnum(num) ⇒ Object
- .trailing_zeros(num) ⇒ Object
- .trailing_zeros_bignum(num) ⇒ Object
- .trailing_zeros_fixnum(num) ⇒ Object
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
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
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
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
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 |