# Convert from abstract type to julia-type with cost

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.