I need to use hypergeometric function define on the whole complex-plane. And I find that Arblib.jl and Nemo.jl fit for me but the problem is that they use abitary types both and thus whatever math manipulation put on these variable, new variable of this type created and thus make extra memory-allocation. As I need millions times of calculations with hypergeometric-U function ,I have no idea how to deal with this. A simple question is how can I get the julia-type values from Arblib.Acb(z) with creating new Arblib.Acb() var .Thanks!
Does this help?
julia> using ArbNumerics
julia> a = ArbComplex(1.0, 1.0)
1.0 + 1.0im
julia> b = ArbComplex(0.5, -0.5)
0.5 - 0.5im
julia> c = ArbComplex(-2.0, 1.5)
-2.0 + 1.5im
julia> d = ArbComplex(Complex(1.0, 0.5))
1.0 + 0.5im
julia> Complex{Float64}(F₀₁(a,b))
0.9209013181558816 - 0.5205859580294406im
julia> Complex{Float64}(F₁₁(a,b,c))
-0.23400524419732657 - 0.6099613128325408im
julia> Complex{Float64}(F₂₁(a,b,c,d))
-7.168618318134662 - 31.9121253862373im
assuming a,b,z are not integers (e.g. 10.0 is an integer), and a,b,z are ArbComplexs (possibly with a zero imaginary part):
using ArbNumerics
using SpecialFunctions
U(a,b,z) = (gamma(1-b)/gamma(a-b+1)) * F₁₁(a,b,z) + (gamma(b-1)/gamma(a)) * z^(1-b) * F₁₁(a-b+1,2-b,z)
It is important that you check this for correctness with values for which you know U(a,b,z) – I cannot assure this is what you want.