diff --git a/REQUIRE b/REQUIRE index 48df863..6eb57c1 100644 --- a/REQUIRE +++ b/REQUIRE @@ -1,2 +1,3 @@ julia 0.6 Primes +Compat diff --git a/src/WignerSymbols.jl b/src/WignerSymbols.jl index 27cc1be..7eb58ec 100644 --- a/src/WignerSymbols.jl +++ b/src/WignerSymbols.jl @@ -2,6 +2,17 @@ __precompile__(true) module WignerSymbols export δ, Δ, clebschgordan, wigner3j, wigner6j, racahV, racahW +if VERSION <= v"0.7.0-DEV.262" + include("mpz.jl") + using .MPZ +else + using Base.GMP.MPZ +end + +using Compat + + + include("primefactorization.jl") const Wigner3j = Dict{Tuple{UInt,UInt,UInt,Int,Int},Tuple{Rational{BigInt},Rational{BigInt}}}() @@ -283,8 +294,8 @@ function compute3jseries(β₁, β₂, β₃, α₁, α₂) krange = max(α₁, α₂, zero(α₁)):min(β₁, β₂, β₃) T = PrimeFactorization{eltype(eltype(factorialtable))} - nums = Vector{T}(length(krange)) - dens = Vector{T}(length(krange)) + nums = Vector{T}(uninitialized, length(krange)) + dens = Vector{T}(uninitialized, length(krange)) for (i, k) in enumerate(krange) num = iseven(k) ? one(T) : -one(T) den = primefactorial(k)*primefactorial(k-α₁)*primefactorial(k-α₂)* @@ -302,8 +313,8 @@ function compute6jseries(β₁, β₂, β₃, α₁, α₂, α₃, α₄) krange = max(α₁, α₂, α₃, α₄):min(β₁, β₂, β₃) T = PrimeFactorization{eltype(eltype(factorialtable))} - nums = Vector{T}(length(krange)) - dens = Vector{T}(length(krange)) + nums = Vector{T}(uninitialized, length(krange)) + dens = Vector{T}(uninitialized, length(krange)) for (i, k) in enumerate(krange) num = iseven(k) ? primefactorial(k+1) : -primefactorial(k+1) den = primefactorial(k-α₁)*primefactorial(k-α₂)*primefactorial(k-α₃)* diff --git a/src/primefactorization.jl b/src/primefactorization.jl index c0891bf..30fc0e1 100644 --- a/src/primefactorization.jl +++ b/src/primefactorization.jl @@ -1,14 +1,6 @@ using Primes.isprime import Base.divgcd -if VERSION <= v"0.7.0-DEV.262" - include("mpz.jl") - using .MPZ -else - using Base.GMP.MPZ -end - - const primetable = [2,3,5] const factortable = [UInt8[], UInt8[1], UInt8[0,1], UInt8[2], UInt8[0,0,1]] const factorialtable = [UInt32[], UInt32[], UInt32[1], UInt32[1,1], UInt32[3,1], UInt32[3,1,1]] diff --git a/test/runtests.jl b/test/runtests.jl index f59b6d2..a9182bf 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -4,6 +4,7 @@ end using Test using WignerSymbols +using Compat smalljlist = 0:1//2:10 largejlist = 0:1//2:1000 @@ -113,8 +114,8 @@ end m1range = -j1:j1 m2range = -j2:j2 m3range = -j3:j3 - V1 = Array{Float64}(length(m1range),length(m2range),length(m3range)) - V2 = Array{Float64}(length(m1range),length(m2range),length(m3range)) + V1 = Array{Float64}(uninitialized, length(m1range),length(m2range),length(m3range)) + V2 = Array{Float64}(uninitialized, length(m1range),length(m2range),length(m3range)) for J in max(abs(j1-j2-j3),abs(j1-j2+j3),abs(j1+j2-j3)):(j1+j2+j3) J12range = max(abs(j1-j2),abs(J-j3)):min((j1+j2),(J+j3)) J23range = max(abs(j2-j3),abs(j1-J)):min((j2+j3),(j1+J))