# scipy.special.hyp2f1

scipy.special.hyp2f1(a, b, c, z) = <ufunc 'hyp2f1'>

  Gauss hypergeometric function 2F1(a, b; c; z)

  Parameters
    a, b, c array_like

      Arguments, should be real-valued.

    z array_like

      Argument, real or complex.

  Returns
    hyp2f1 scalar or ndarray

      The values of the gaussian hypergeometric function.

  See also

  `hyp0f1`

    confluent hypergeometric limit function.

  `hyp1f1`

    Kummer’s (confluent hypergeometric) function.

  Notes

  This function is defined for \(|z| < 1\) as

  \[\mathrm{hyp2f1}(a, b, c, z) = \sum_{n=0}^\infty \frac{(a)_n (b)_n}{(c)_n}\frac{z^n}{n!},\]

  and defined on the rest of the complex z-plane by analytic continuation [1]. Here \((\cdot)_n\) is the Pochhammer symbol; see `poch`. When \(n\) is an integer the result is a polynomial of degree \(n\).

  The implementation for complex values of `z` is described in [2].

  References

  1

    NIST Digital Library of Mathematical Functions https://dlmf.nist.gov/15.2

  2

    19. Zhang and J.M. Jin, “Computation of Special Functions”, Wiley 1996

  3

    Cephes Mathematical Functions Library, http://www.netlib.org/cephes/

  Examples

      >>> import scipy.special as sc

  It has poles when c is a negative integer.

      >>> sc.hyp2f1(1, 1, -2, 1)
      inf

  It is a polynomial when a or b is a negative integer.

      >>> a, b, c = -1, 1, 1.5
      >>> z = np.linspace(0, 1, 5)
      >>> sc.hyp2f1(a, b, c, z)
      array([1.        , 0.83333333, 0.66666667, 0.5       , 0.33333333])
      >>> 1 + a * b * z / c
      array([1.        , 0.83333333, 0.66666667, 0.5       , 0.33333333])

  It is symmetric in a and b.

      >>> a = np.linspace(0, 1, 5)
      >>> b = np.linspace(0, 1, 5)
      >>> sc.hyp2f1(a, b, 1, 0.5)
      array([1.        , 1.03997334, 1.1803406 , 1.47074441, 2.        ])
      >>> sc.hyp2f1(b, a, 1, 0.5)
      array([1.        , 1.03997334, 1.1803406 , 1.47074441, 2.        ])

  It contains many other functions as special cases.

      >>> z = 0.5
      >>> sc.hyp2f1(1, 1, 2, z)
      1.3862943611198901
      >>> -np.log(1 - z) / z
      1.3862943611198906

      >>> sc.hyp2f1(0.5, 1, 1.5, z**2)
      1.098612288668109
      >>> np.log((1 + z) / (1 - z)) / (2 * z)
      1.0986122886681098

      >>> sc.hyp2f1(0.5, 1, 1.5, -z**2)
      0.9272952180016117
      >>> np.arctan(z) / z
      0.9272952180016123

scipy.special.sh_jacobi scipy.special.hyp1f1