wcosmo.analytic.indefinite_integral_hypergeometric#

wcosmo.analytic.indefinite_integral_hypergeometric(z: Array, Om0, w0=-1, zpower=0)[source]#
indefinite_integral_hypergeometric(

z: Union[float, int, numpy.ndarray], Om0, w0=-1, zpower=0

Compute the integral of \((1+z)^k / E(z)\) as described in https://doi.org/10.4236/jhepgc.2021.73057. We extend it to include other integrands via powers of \(1 + z\).

\[I(z; \Omega_{m, 0}, w_0) = \frac{(1 + z)^{k - \frac{1}{2}}} {\Omega_{m, 0}^{\frac{1}{2}} 3 w_0} B(\frac{-1 + 2k}{6 w_0}, 1) _{2}F_{1}( \frac{1}{2}, \frac{-1 + 2k}{6 w_0}, \frac{-1 + 2k + 6 w_0}{6 w_0}, x).\]

Here the argument for the hypergeometric function is

\[x = \left(\frac{\Omega_{m, 0} - 1}{\Omega_{m, 0}}\right) (1 + z)^{3 w_0}.\]

There is a special case when \(w_0 = 0\) where the hypergeometric function is not defined. In this case, we return the integral

\[I(z; \Omega_{m, 0}, w_0) = \frac{(1 + z)^{k - \frac{1}{2}}} {k - \frac{1}{2}}.\]
Parameters:
z: array_like

Redshift

Om0: array_like

The matter density fraction

w0: array_like

The (constant) equation of state parameter for dark energy

Returns:
I: array_like

The indefinite integral of \((1+z)^k / E(z)\)

Notes

The underlying hypergeometric function is not natively implemented in JAX or cupy so this will not be fully compatible. For demonstration, we can use the scipy implementation with JAX but this will not allow differentiation or GPU acceleration.

This has been discussed in cupy and may be implemented in the future (cupy/cupy#8274).