@@ -14,7 +14,7 @@ This is a Julia implementation of the stable recurrence described in:
1414
1515Y.-l. Xu, Fast evaluation of Gaunt coefficients: recursive approach, *J. Comp. Appl. Math.*, **85**:53–65, 1997.
1616"""
17- function gaunt {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int ;normalized:: Bool = false )
17+ function gaunt {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ;normalized:: Bool = false )
1818 if normalized
1919 normalizedgaunt (T,m,n,μ,ν)
2020 else
2424doc"""
2525Calculates the Gaunt coefficients in 64-bit floating-point arithmetic.
2626"""
27- gaunt (m:: Int ,n:: Int ,μ:: Int ,ν:: Int ;kwds... ) = gaunt (Float64,m,n,μ,ν;kwds... )
27+ gaunt (m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ;kwds... ) = gaunt (Float64,m,n,μ,ν;kwds... )
2828
29- function normalization {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int )
29+ gaunt {T} (:: Type{T} ,m:: Int32 ,n:: Int32 ,μ:: Int32 ,ν:: Int32 ;normalized:: Bool = false ) = gaunt (T,Int64 (m),Int64 (n),Int64 (μ),Int64 (ν);normalized= normalized)
30+
31+ function normalization {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer )
3032 pochhammer (n+ one (T),n)* pochhammer (ν+ one (T),ν)/ pochhammer (n+ ν+ one (T),n+ ν)* gamma (n+ ν- m- μ+ one (T))/ gamma (n- m+ one (T))/ gamma (ν- μ+ one (T))
3133end
3234
33- normalization (:: Type{Float64} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int ) = normalization1 (Float64,n,ν)* normalization2 (Float64,n- m,ν- μ)
35+ normalization (:: Type{Float64} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ) = normalization1 (Float64,n,ν)* normalization2 (Float64,n- m,ν- μ)
3436
35- function normalization1 (:: Type{Float64} ,n:: Int ,ν:: Int )
37+ function normalization1 (:: Type{Float64} ,n:: Integer ,ν:: Integer )
3638 if n ≥ 8
3739 if ν ≥ 8
3840 return exp ((n+ 0.5 )* log1p (n/ (n+ 1 ))+ (ν+ 0.5 )* log1p (ν/ (ν+ 1 ))+ (n+ ν+ 0.5 )* log1p (- (n+ ν)/ (2 n+ 2 ν+ 1 ))+ n* log1p (- 2 ν/ (2 n+ 2 ν+ 1 ))+ ν* log1p (- 2 n/ (2 n+ 2 ν+ 1 )))* stirlingseries (2 n+ 1.0 )* stirlingseries (2 ν+ 1.0 )* stirlingseries (n+ ν+ 1.0 )/ stirlingseries (n+ 1.0 )/ stirlingseries (ν+ 1.0 )/ stirlingseries (2 n+ 2 ν+ 1.0 )
@@ -46,7 +48,7 @@ function normalization1(::Type{Float64},n::Int,ν::Int)
4648 end
4749end
4850
49- function normalization2 (:: Type{Float64} ,nm:: Int ,νμ:: Int )
51+ function normalization2 (:: Type{Float64} ,nm:: Integer ,νμ:: Integer )
5052 if nm ≥ 8
5153 if νμ ≥ 8
5254 return edivsqrt2pi* exp ((nm+ 0.5 )* log1p (νμ/ (nm+ 1 ))+ (νμ+ 0.5 )* log1p (nm/ (νμ+ 1 )))/ sqrt (nm+ νμ+ 1.0 )* stirlingseries (nm+ νμ+ 1.0 )/ stirlingseries (nm+ 1.0 )/ stirlingseries (νμ+ 1.0 )
@@ -60,7 +62,7 @@ function normalization2(::Type{Float64},nm::Int,νμ::Int)
6062 end
6163end
6264
63- function normalizedgaunt {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int )
65+ function normalizedgaunt {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer )
6466 qmax = min (n,ν,(n+ ν- abs (m+ μ))÷ 2 )
6567 a = Vector {T} (qmax+ 1 )
6668 a[1 ] = one (T)
@@ -106,15 +108,15 @@ function normalizedgaunt{T}(::Type{T},m::Int,n::Int,μ::Int,ν::Int)
106108 a
107109end
108110
109- function secondinitialcondition {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int )
111+ function secondinitialcondition {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer )
110112 n₄ = n+ ν- m- μ
111113 mn = m- n
112114 μν = μ- ν
113115 temp = 2 n+ 2 ν- one (T)
114116 return (temp- 2 )/ 2 * (1 - temp/ n₄/ (n₄- 1 )* (mn* (mn+ one (T))/ (2 n- 1 )+ μν* (μν+ one (T))/ (2 ν- 1 )))
115117end
116118
117- function thirdinitialcondition {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int )
119+ function thirdinitialcondition {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer )
118120 n₄ = n+ ν- m- μ
119121 mn = m- n
120122 μν = μ- ν
@@ -124,14 +126,14 @@ function thirdinitialcondition{T}(::Type{T},m::Int,n::Int,μ::Int,ν::Int)
124126 return temp* (temp- 6 )/ 4 * ( (temp- 2 )/ n₄/ (n₄- 1 )* temp2 + one (T)/ 2 )
125127end
126128
127- α {T} (:: Type{T} ,n:: Int ,ν:: Int ,p:: Int ) = (p^ 2 - (n+ ν+ 1 )^ 2 )* (p^ 2 - (n- ν)^ 2 )/ (4 p^ 2 - one (T))
128- A {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int ,p:: Int ) = p* (p- one (T))* (m- μ)- (m+ μ)* (n- ν)* (n+ ν+ one (T))
129+ α {T} (:: Type{T} ,n:: Integer ,ν:: Integer ,p:: Integer ) = (p^ 2 - (n+ ν+ 1 )^ 2 )* (p^ 2 - (n- ν)^ 2 )/ (4 p^ 2 - one (T))
130+ A {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ,p:: Integer ) = p* (p- one (T))* (m- μ)- (m+ μ)* (n- ν)* (n+ ν+ one (T))
129131
130- c₀ {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int ,p:: Int ,p₁:: Int ) = (p+ 2 )* (p+ 3 )* (p₁+ 1 )* (p₁+ 2 )* A (T,m,n,μ,ν,p+ 4 )* α (T,n,ν,p+ 1 )
131- c₁ {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int ,p:: Int ,p₁:: Int ,p₂:: Int ) = A (T,m,n,μ,ν,p+ 2 )* A (T,m,n,μ,ν,p+ 3 )* A (T,m,n,μ,ν,p+ 4 ) + (p+ 1 )* (p+ 3 )* (p₁+ 2 )* (p₂+ 2 )* A (T,m,n,μ,ν,p+ 4 )* α (T,n,ν,p+ 2 ) + (p+ 2 )* (p+ 4 )* (p₁+ 3 )* (p₂+ 3 )* A (T,m,n,μ,ν,p+ 2 )* α (T,n,ν,p+ 3 )
132- c₂ {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int ,p:: Int ,p₂:: Int ) = - (p+ 2 )* (p+ 3 )* (p₂+ 3 )* (p₂+ 4 )* A (T,m,n,μ,ν,p+ 2 )* α (T,n,ν,p+ 4 )
132+ c₀ {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ,p:: Integer ,p₁:: Integer ) = (p+ 2 )* (p+ 3 )* (p₁+ 1 )* (p₁+ 2 )* A (T,m,n,μ,ν,p+ 4 )* α (T,n,ν,p+ 1 )
133+ c₁ {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ,p:: Integer ,p₁:: Integer ,p₂:: Integer ) = A (T,m,n,μ,ν,p+ 2 )* A (T,m,n,μ,ν,p+ 3 )* A (T,m,n,μ,ν,p+ 4 ) + (p+ 1 )* (p+ 3 )* (p₁+ 2 )* (p₂+ 2 )* A (T,m,n,μ,ν,p+ 4 )* α (T,n,ν,p+ 2 ) + (p+ 2 )* (p+ 4 )* (p₁+ 3 )* (p₂+ 3 )* A (T,m,n,μ,ν,p+ 2 )* α (T,n,ν,p+ 3 )
134+ c₂ {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ,p:: Integer ,p₂:: Integer ) = - (p+ 2 )* (p+ 3 )* (p₂+ 3 )* (p₂+ 4 )* A (T,m,n,μ,ν,p+ 2 )* α (T,n,ν,p+ 4 )
133135
134- d₀ {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int ,p:: Int ,p₁:: Int ) = (p+ 2 )* (p+ 3 )* (p+ 5 )* (p₁+ 2 )* (p₁+ 4 )* A (T,m,n,μ,ν,p+ 6 )* α (T,n,ν,p+ 1 )
135- d₁ {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int ,p:: Int ,p₁:: Int ,p₂:: Int ) = (p+ 5 )* (p₁+ 4 )* A (T,m,n,μ,ν,p+ 6 )* ( A (T,m,n,μ,ν,p+ 2 )* A (T,m,n,μ,ν,p+ 3 ) + (p+ 1 )* (p+ 3 )* (p₁+ 2 )* (p₂+ 2 )* α (T,n,ν,p+ 2 ) )
136- d₂ {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int ,p:: Int ,p₁:: Int ,p₂:: Int ) = (p+ 2 )* (p₂+ 3 )* A (T,m,n,μ,ν,p+ 2 )* ( A (T,m,n,μ,ν,p+ 5 )* A (T,m,n,μ,ν,p+ 6 ) + (p+ 4 )* (p+ 6 )* (p₁+ 5 )* (p₂+ 5 )* α (T,n,ν,p+ 5 ) )
137- d₃ {T} (:: Type{T} ,m:: Int ,n:: Int ,μ:: Int ,ν:: Int ,p:: Int ,p₂:: Int ) = - (p+ 2 )* (p+ 4 )* (p+ 5 )* (p₂+ 3 )* (p₂+ 5 )* (p₂+ 6 )* A (T,m,n,μ,ν,p+ 2 )* α (T,n,ν,p+ 6 )
136+ d₀ {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ,p:: Integer ,p₁:: Integer ) = (p+ 2 )* (p+ 3 )* (p+ 5 )* (p₁+ 2 )* (p₁+ 4 )* A (T,m,n,μ,ν,p+ 6 )* α (T,n,ν,p+ 1 )
137+ d₁ {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ,p:: Integer ,p₁:: Integer ,p₂:: Integer ) = (p+ 5 )* (p₁+ 4 )* A (T,m,n,μ,ν,p+ 6 )* ( A (T,m,n,μ,ν,p+ 2 )* A (T,m,n,μ,ν,p+ 3 ) + (p+ 1 )* (p+ 3 )* (p₁+ 2 )* (p₂+ 2 )* α (T,n,ν,p+ 2 ) )
138+ d₂ {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ,p:: Integer ,p₁:: Integer ,p₂:: Integer ) = (p+ 2 )* (p₂+ 3 )* A (T,m,n,μ,ν,p+ 2 )* ( A (T,m,n,μ,ν,p+ 5 )* A (T,m,n,μ,ν,p+ 6 ) + (p+ 4 )* (p+ 6 )* (p₁+ 5 )* (p₂+ 5 )* α (T,n,ν,p+ 5 ) )
139+ d₃ {T} (:: Type{T} ,m:: Integer ,n:: Integer ,μ:: Integer ,ν:: Integer ,p:: Integer ,p₂:: Integer ) = - (p+ 2 )* (p+ 4 )* (p+ 5 )* (p₂+ 3 )* (p₂+ 5 )* (p₂+ 6 )* A (T,m,n,μ,ν,p+ 2 )* α (T,n,ν,p+ 6 )
0 commit comments