add wigner9j symbols. update README, .gitignore Manifest

This commit is contained in:
Thomas (Tom) C. Gorordo 2024-08-15 07:18:17 -07:00
parent 473e618cf0
commit 152d52595e
Signed by: tgorordo
GPG key ID: 0CBED22BB0D94490
6 changed files with 206 additions and 12 deletions

View file

@ -384,3 +384,32 @@ function sumlist!(list::Vector{<:PrimeFactorization}, ind = 1:length(list))
end
return MPZ.mul!(s, _convert!(i, g))
end
#=
# A cached binomial implementation.
bcache = LRU{Tuple{BigInt, BigInt}, PrimeFactorization}(; maxsize=10^6)
function primebinomial(n::BigInt, k::BigInt)
T = PrimeFactorization{eltype(eltype(factorialtable))}
if k == 0
return one(T)
end # guard
if haskey(bcache, (n, k))
return bcache[(n, k)]
else
den = primefactor(k)
num = mul!(copy(primefactor(n + 1 - k)), primebinomial(n, k - 1))
res = divexact!(num, den)
bcache[(n, k)] = res
return res
end
end
=#
function primebinomial(n::BigInt, k::BigInt)
num = copy(primefactorial(n))
den = copy(primefactorial(k))
den = mul!(den, primefactorial(n - k))
res = divexact!(num, den)
return res
end