Sha256: a2de6d1473dd6a06fb192ee85b2b8473e284052d4752163b700b9d8e487ee863

Contents?: true

Size: 358 Bytes

Versions: 3

Compression:

Stored size: 358 Bytes

Contents

class Integer
  # `self`^`b` mod `m`
  #
  # @param [Integer] b power to which `self` should be raised
  # @param [Integer] m modulus
  # @return [Integer] `self`^`b` % `m`
  def power_mod(b, m)
    result = 1
    b.to_s(2).chars.each do |bit|
      result = (result * result) % m
      result = (result * self) % m if bit==?1
    end
    result
  end  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
numb-0.186.0 lib/numb/power_mod.rb
numb-0.185.0 lib/numb/power_mod.rb
numb-0.184.0 lib/numb/power_mod.rb