module Polyfill::V2_5::Integer::ClassMethods
Public Instance Methods
sqrt(n)
click to toggle source
# File lib/polyfill/v2_5/integer.rb, line 9 def sqrt(n) n = InternalUtils.to_int(n) if n < 0 raise Math::DomainError, 'Numerical argument is out of domain - "isqrt"' end res = 0 bit = 1 << ((n.size * 8) - 2) bit >>= 2 while bit > n while bit != 0 res_bit = res + bit if n >= res_bit n -= res_bit res = (res >> 1) + bit else res >>= 1 end bit >>= 2 end res end