diff --git a/src/WignerSymbols.jl b/src/WignerSymbols.jl index e63c7b6..4049c58 100644 --- a/src/WignerSymbols.jl +++ b/src/WignerSymbols.jl @@ -117,7 +117,7 @@ function wigner3j(T::Type{<:AbstractFloat}, j₁, j₂, j₃, m₁, m₂, m₃ = Wigner3j[(β₁, β₂, β₃, α₁, α₂)] = (r,s) end - return sgn*sqrt(convert(T, r))*convert(T, s) + return sgn*sqrt(convert(T, r.num)/convert(T, r.den))*(convert(T, s.num)/convert(T, s.den)) end """ @@ -214,7 +214,7 @@ function wigner6j(T::Type{<:AbstractFloat}, j₁, j₂, j₃, j₄, j₅, j₆) Wigner6j[(β₁, β₂, β₃, α₁, α₂, α₃)] = (r, s) end - return sqrt(convert(T, r))*convert(T, s) + return sqrt(convert(T, r.num)/convert(T, r.den))*(convert(T, s.num)/convert(T, s.den)) end """ diff --git a/src/halfinteger.jl b/src/halfinteger.jl index 033baf5..163362f 100644 --- a/src/halfinteger.jl +++ b/src/halfinteger.jl @@ -30,6 +30,20 @@ Base.convert(T::Type{<:Rational}, s::HalfInteger) = convert(T, s.num//2) Base.convert(T::Type{<:Real}, s::HalfInteger) = convert(T, s.num/2) Base.convert(::Type{HalfInteger}, s::HalfInteger) = s +function Base.hash(a::HalfInteger, h::UInt) + iseven(a.num) && return hash(a.num>>1, h) + num, den = a.num, 2 + den = 1 + pow = -1 + if abs(num) < 9007199254740992 + return hash(ldexp(Float64(num),pow), h) + end + h = Base.hash_integer(den, h) + h = Base.hash_integer(pow, h) + h = Base.hash_integer(num, h) + return h +end + Base.isinteger(a::HalfInteger) = iseven(a.num) ishalfinteger(a::HalfInteger) = true ishalfinteger(a::Integer) = true diff --git a/src/primefactorization.jl b/src/primefactorization.jl index 0586070..6edba28 100644 --- a/src/primefactorization.jl +++ b/src/primefactorization.jl @@ -12,8 +12,8 @@ struct PrimeIterator end primes() = PrimeIterator() -Base.iteratorsize(::Type{PrimeIterator}) = Base.IsInfinite() -Base.iteratoreltype(::Type{PrimeIterator}) = Base.HasEltype() +Compat.IteratorSize(::Type{PrimeIterator}) = Base.IsInfinite() +Compat.IteratorEltype(::Type{PrimeIterator}) = Base.HasEltype() Base.eltype(::PrimeIterator) = Int # Get the `n`th prime; store all primes up to the `n`th if not yet available diff --git a/test/runtests.jl b/test/runtests.jl index a9182bf..cb65ab5 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -5,6 +5,7 @@ end using Test using WignerSymbols using Compat +using Compat.LinearAlgebra smalljlist = 0:1//2:10 largejlist = 0:1//2:1000