I would like to perform the numerical integration of an integral of the form $$ \int_{-\infty}^\infty e^{i \omega 0+} G(i \omega, \mathbf{v}) d \omega ,$$ or, using the symmetry $G(i\omega)^* = G(-i \omega)$, $$ \int_0^\infty \Re(e^{i \omega 0+} G(i \omega, \mathbf{v}) ) d\omega ,$$ where $\mathbf{v}$ is a vector of additional parameters. $G(i \omega)$ is a rational function and behaves for large $\omega$ as $\omega^5/\omega^6 = 1/\omega$ and it can not be integrated analytically.
I split the integral, i.e. $\int_0^\infty = \int_0^a + \int_a^\infty$, where $a$ is a large positive constant, such that the approximation $G(i \omega) \approx 1/i \omega$ holds for $\omega \geq a$. The infinite integral gives an additive constant. The convergence factor in $\int_0^a$ can now be dropped because it is a finite integral.
Now there is this problem: I use the quad() function from SciPy to evaluate the finite integral for set of different $\mathbf{v}$. If I set the upper limit in quad() as $a=10^8, 10^9$ or $a = \infty$ then it gives consistent and correct results. But for $a = 10^{10} - 10^{14}$, the results are rubbish. For $a = \infty$ quad() gives a warning message that the integrand may be slowly convergent and that there is a roundoff error detected in the extrapolation table.
So obviously there is a numerical problem and I don't know what quad() exactly does, when one enters $\infty$ as a limit. From the source code it seems that quad() maps the big finite interval onto $[0,1]$, rescales the integrand and uses a Gauss-Kronrod method for integration, but it is not clear (to me) how big this scaling respectively the finite interval is.
Are there other reliable methods to perform a numerical integration over large intervals? Is a method where one divides the big interval into a number of subintervals with fixed width and subsequent integration (e.g. with Simpson's rule) recommended?