I'm having some trouble with identical code giving different answers. On a fresh kernel (MM 9.0.0.0, Windows 64-bit), running the same code, copy-paste, gives two different answers:

In[1]:= Integrate[
E^(-\[Rho]^2/2) \[Rho]^(
p + m + 1) (\[CapitalDelta]z^2 + \[Rho]^2)^-(m + 1/2)
, {\[Rho], 0, \[Infinity]},
Assumptions -> {{m, p} \[Element] Integers, m >= 0,
p >= 0, \[CapitalDelta]z > 0}] // FullSimplify

Out[1]= 1/2 \[Pi] (2^(1/2 (1 - m + p))
Hypergeometric1F1Regularized[1/2 + m, 1/2 (1 + m - p), \[CapitalDelta]z^2/2]
- (\[CapitalDelta]z^(1 - m + p) Gamma[1/2 (2 + m + p)]
Hypergeometric1F1Regularized[1/2 (2 + m + p), 1/2 (3 - m + p), \[CapitalDelta]z^2/2])/
Gamma[1/2 + m]) Sec[1/2 (m - p) \[Pi]]

In[2]:= Integrate[
E^(-\[Rho]^2/2) \[Rho]^(
p + m + 1) (\[CapitalDelta]z^2 + \[Rho]^2)^-(m + 1/2)
, {\[Rho], 0, \[Infinity]},
Assumptions -> {{m, p} \[Element] Integers, m >= 0,
p >= 0, \[CapitalDelta]z > 0}] // FullSimplify

Out[2]= 2^(1/2 (-1 - m + p))
Gamma[1/2 (2 + m + p)] HypergeometricU[1/2 + m, 1/2 (1 + m - p), \[CapitalDelta]z^2/2]


Subsequent runs of the same code consistently churn out, as far as I can tell, the second expression.

To make things even weirder, the first answer contains a global factor of $$\sec\left(\frac\pi2(m-p)\right),$$ which is singular for $m-p$ an odd integer. This makes useless in half the cases covered in the assumptions I explicitly gave to Integrate ({m, p} \[Element] Integers, m >= 0, p >= 0).

I also get analogous behaviour, with a slightly different first answer, if I drop the FullSimplify.

Could someone shed some light on this?

-
The second evaluation is using cached values. If you use ClearSystemCache[] before each evaluation you get the first result repeatedly see ClearSystemCache – kglr Mar 11 '13 at 11:07
@Nasser, I get 0 when I run FullSimplify[% - %%, Assumptions -> {{m, p} \[Element] Integers, m >= 0, p >= 0, \[CapitalDelta]z > 0}]. – kglr Mar 11 '13 at 11:31
@kguler I can see how clearing the cache would make it revert to the first result. I can't see why it wouldn't use those results the first time around, though. – Emilio Pisanty Mar 11 '13 at 11:41
@episanty, I can't see why either. – kglr Mar 11 '13 at 11:54

The second and subsequent evaluations of the same expression are using cached values.If you use ClearSystemCache[] before each evaluation you get the first result repeatedly. (see ClearSystemCache)

ClearSystemCache[];
Integrate[E^(-\[Rho]^2/2) \[Rho]^(p + m + 1) (\[CapitalDelta]z^2 + \[Rho]^2)^-(m + 1/2),
{\[Rho],  0, \[Infinity]}, Assumptions -> {{m, p} \[Element] Integers,
m >= 0, p >= 0, \[CapitalDelta]z > 0}] // FullSimplify


gives

Evaluating the expression second time:

 Integrate[E^(-\[Rho]^2/2) \[Rho]^(p + m + 1) (\[CapitalDelta]z^2 + \[Rho]^2)^-(m + 1/2),
{\[Rho],  0, \[Infinity]}, Assumptions -> {{m, p} \[Element] Integers,
m >= 0, p >= 0, \[CapitalDelta]z > 0}] // FullSimplify


gives

and

 FullSimplify[% - %%, Assumptions -> {{m, p} \[Element] Integers,
m >= 0, p >= 0, \[CapitalDelta]z > 0}]


gives 0.

Finally, if you repeat the assumptions of Integrate inside FullSimplify

ClearSystemCache[];
Integrate[ E^(-\[Rho]^2/2) \[Rho]^(p + m +  1) (\[CapitalDelta]z^2 + \[Rho]^2)^-(m + 1/2),
{\[Rho], 0, \[Infinity]}, Assumptions -> {{m, p} \[Element] Integers,
m >= 0,  p >= 0, \[CapitalDelta]z > 0}] //
FullSimplify[#,  Assumptions -> {{m, p} \[Element] Integers, m >= 0,
p >= 0, \[CapitalDelta]z > 0}] &


you get the output

directly (without having to re-evaluate Integrate[...]).

-