Just above r == 1000
, the integrand underflows, even with arbitrary precision.
Table[func, {r, {1.`16*^3}}, {A, 10^Range[-4, 7]}] (* really small numbers *)
Table[func, {r, {2.`16*^3}}, {A, 10^Range[-4, 7]}] (* Underflow[] *)
For just above r == 0.0008
, it underflows at machine precision. Perhaps you can truncate the integration interval to {r, 0, 0.001}
. For large values of A
, it takes forever, though.
Perhaps the problem can be rescaled to better fit with floating-point numbers, but I have doubts it will be much more effective.