Skip to content

Commit

Permalink
bug fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
akzhan committed Nov 12, 2017
1 parent 3d0d812 commit a6fc65f
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 18 deletions.
18 changes: 9 additions & 9 deletions src/big/big_float.cr
Expand Up @@ -297,16 +297,16 @@ end
# :nodoc:
struct Crystal::Hasher
def float(value : BigFloat)
# more exact version of `Math.frexp`
LibGMP.mpf_get_d_2exp(out exp, self)
frac = BigFloat.new do |mpf|
if exp >= 0
LibGMP.mpf_div_2exp(mpf, self, exp)
else
LibGMP.mpf_mul_2exp(mpf, self, -exp)
end
end
permute(float_normalize_wrap(value) do |value|
# more exact version of `Math.frexp`
LibGMP.mpf_get_d_2exp(out exp, value)
frac = BigFloat.new do |mpf|
if exp >= 0
LibGMP.mpf_div_2exp(mpf, value, exp)
else
LibGMP.mpf_mul_2exp(mpf, value, -exp)
end
end
float_normalize_reference(value, frac, exp)
end)
end
Expand Down
10 changes: 5 additions & 5 deletions src/big/big_int.cr
Expand Up @@ -560,12 +560,12 @@ struct Crystal::Hasher
def int(value : BigInt)
# it should calculate `remainder(HASH_MODULUS)`
if LibGMP::ULong == UInt64
v = LibGMP.tdiv_ui(self, HASH_MODULUS).to_i64
self < 0 ? -v : v
elsif self >= HASH_MODULUS_INT_P || self <= HASH_MODULUS_INT_N
unsafe_truncated_mod(HASH_MODULUS_INT_P).to_i64
v = LibGMP.tdiv_ui(value, HASH_MODULUS).to_i64
value < 0 ? -v : v
elsif value >= HASH_MODULUS_INT_P || value <= HASH_MODULUS_INT_N
value.unsafe_truncated_mod(HASH_MODULUS_INT_P).to_i64
else
to_i64
value.to_i64
end
end
end
8 changes: 4 additions & 4 deletions src/big/big_rational.cr
Expand Up @@ -282,10 +282,10 @@ struct Crystal::Hasher
private HASH_MODULUS_RAT_N = -BigRational.new((1_u64 << HASH_BITS) - 1)

def float(value : BigRational)
rem = self
if self >= HASH_MODULUS_RAT_P || self <= HASH_MODULUS_RAT_N
num = numerator
denom = denominator
rem = value
if value >= HASH_MODULUS_RAT_P || value <= HASH_MODULUS_RAT_N
num = value.numerator
denom = value.denominator
div = num.tdiv(denom)
floor = div.tdiv(HASH_MODULUS)
rem -= floor * HASH_MODULUS
Expand Down

0 comments on commit a6fc65f

Please sign in to comment.