Unrelated to your question, but this lines (and all the lines below) is not really doing what you think it does: big promotes its argument to arbitrary precision, but if you perform some operations in double precision before converting to BigFloat then you get a highly inaccurate result in arbitrary precision. Instead you want to convert your operands to BigFloat and then perform the operations. You can do something like
big(2) * big(pi) / (big(154) / big(100000))
or maybe simplify to
big(100000) * big(pi) / big(77)
The same in the lines below. Note also that you can use cis(x) instead of exp(im *x).
julia> heatmap(rand(BigFloat, 200, 200))
Error showing value of type Plots.Plot{Plots.GRBackend}:
ERROR: BoundsError: attempt to access 256-element Vector{Float64} at index [257]
If I change your code to convert the output of besbeam to Float64 instead, I get a pretty picture:
Don’t know if this is what you’re expecting, but if it is maybe that’s a sign you don’t need BigFloat at all (given as Mose says it’s not really working the way you think it is in your current code anyway).
Since it’s a know issue with Plots.jl (but only for BigFloat, I would suggest not using it, maybe rather Float128 from a package or) I would suggest a different plotting package, e.g. Makie.jl. That seems to be the future, there are also many others, e.g. GR.jl directly (what Plots.jl uses by default, it’s an abstraction layer for many), or pyplot (very fast), also VegaLite if I recall. Or PythonPlot.jl.