diff --git a/tsdate/approx.py b/tsdate/approx.py
index c5fd295..0db0a87 100644
--- a/tsdate/approx.py
+++ b/tsdate/approx.py
@@ -111,9 +111,6 @@ def sufficient_statistics(a_i, b_i, a_j, b_j, y_ij, mu_ij):
 
     :return: normalizing constant, E[t_i], E[log t_i], E[t_j], E[log t_j]
     """
-    assert a_i > 0 and b_i >= 0, "Invalid parent parameters"
-    assert a_j > 0 and b_j >= 0, "Invalid child parameters"
-    assert y_ij >= 0 and mu_ij > 0, "Invalid edge parameters"
 
     a = a_i + a_j + y_ij
     b = a_j
@@ -124,9 +121,6 @@ def sufficient_statistics(a_i, b_i, a_j, b_j, y_ij, mu_ij):
         a_i, b_i, a_j, b_j, y_ij, mu_ij
     )
 
-    if sign_f <= 0:
-        raise hypergeo.Invalid2F1("Singular hypergeometric function")
-
     logconst = (
         log_f + hypergeo._betaln(y_ij + 1, b) + hypergeo._gammaln(a) - a * np.log(t)
     )
@@ -142,6 +136,10 @@ def sufficient_statistics(a_i, b_i, a_j, b_j, y_ij, mu_ij):
         - hypergeo._digamma(c)
     )
 
+    # check that Jensen's inequality holds
+    assert np.log(t_i) > ln_t_i
+    assert np.log(t_j) > ln_t_j
+
     return logconst, t_i, ln_t_i, t_j, ln_t_j
 
 
diff --git a/tsdate/hypergeo.py b/tsdate/hypergeo.py
index 5bd396c..e3e14ea 100644
--- a/tsdate/hypergeo.py
+++ b/tsdate/hypergeo.py
@@ -29,8 +29,9 @@ import numba
 import numpy as np
 from numba.extending import get_cython_function_address
 
+# TODO: these are reasonable defaults, but could
+# be made settable via a control dict
 _HYP2F1_TOL = np.sqrt(np.finfo(np.float64).eps)
-_HYP2F1_CHECK = np.sqrt(_HYP2F1_TOL)
 _HYP2F1_MAXTERM = int(1e6)
 
 _PTR = ctypes.POINTER
@@ -115,7 +116,7 @@ def _is_valid_2f1(f1, f2, a, b, c, z):
     See Eq. 6 in https://doi.org/10.1016/j.cpc.2007.11.007
     """
     if z == 0.0:
-        return np.abs(f1 - a * b / c) < _HYP2F1_CHECK
+        return np.abs(f1 - a * b / c) < _HYP2F1_TOL
     u = c - (a + b + 1) * z
     v = a * b
     w = z * (1 - z)
@@ -124,7 +125,7 @@ def _is_valid_2f1(f1, f2, a, b, c, z):
         numer = np.abs(u * f1 - v)
     else:
         numer = np.abs(f2 + u / w * f1 - v / w)
-    return numer / denom < _HYP2F1_CHECK
+    return numer / denom < _HYP2F1_TOL
 
 
 @numba.njit("UniTuple(float64, 7)(float64, float64, float64, float64)")
@@ -255,7 +256,7 @@ def _hyp2f1_recurrence(a, b, c, z):
 
 
 @numba.njit(
-    "UniTuple(float64, 6)(float64, float64, float64, float64, float64, float64)"
+    "UniTuple(float64, 7)(float64, float64, float64, float64, float64, float64)"
 )
 def _hyp2f1_dlmf1583_first(a_i, b_i, a_j, b_j, y, mu):
     """
@@ -287,7 +288,7 @@ def _hyp2f1_dlmf1583_first(a_i, b_i, a_j, b_j, y, mu):
     )
 
     # 2F1(a, -y; c; z) via backwards recurrence
-    val, sign, da, _, dc, dz, _ = _hyp2f1_recurrence(a, y, c, z)
+    val, sign, da, _, dc, dz, d2z = _hyp2f1_recurrence(a, y, c, z)
 
     # map gradient to parameters
     da_i = dc - _digamma(a_i + a_j) + _digamma(a_i)
@@ -295,13 +296,18 @@ def _hyp2f1_dlmf1583_first(a_i, b_i, a_j, b_j, y, mu):
     db_i = dz / (b_j - mu) + a_j / (mu + b_i)
     db_j = dz * (1 - z) / (b_j - mu) - a_j / s / (mu + b_i)
 
+    # needed to verify result
+    d2b_j = (1 - z) / (b_j - mu) ** 2 * (d2z * (1 - z) - 2 * dz * (1 + a_j)) + (
+        1 + a_j
+    ) * a_j / (b_j - mu) ** 2
+
     val += scale
 
-    return val, sign, da_i, db_i, da_j, db_j
+    return val, sign, da_i, db_i, da_j, db_j, d2b_j
 
 
 @numba.njit(
-    "UniTuple(float64, 6)(float64, float64, float64, float64, float64, float64)"
+    "UniTuple(float64, 7)(float64, float64, float64, float64, float64, float64)"
 )
 def _hyp2f1_dlmf1583_second(a_i, b_i, a_j, b_j, y, mu):
     """
@@ -320,7 +326,7 @@ def _hyp2f1_dlmf1583_second(a_i, b_i, a_j, b_j, y, mu):
     )
 
     # 2F1(a, y+1; c; z) via series expansion
-    val, sign, da, _, dc, dz, _ = _hyp2f1_taylor_series(a, y + 1, c, z)
+    val, sign, da, _, dc, dz, d2z = _hyp2f1_taylor_series(a, y + 1, c, z)
 
     # map gradient to parameters
     da_i = da + np.log(z) + dc + _digamma(a_i) - _digamma(a_i + y + 1)
@@ -328,10 +334,16 @@ def _hyp2f1_dlmf1583_second(a_i, b_i, a_j, b_j, y, mu):
     db_i = (1 - z) * (dz + a / z) / (b_i + b_j)
     db_j = -z * (dz + a / z) / (b_i + b_j)
 
+    # needed to verify result
+    d2b_j = (
+        z / (b_i + b_j) ** 2 * (d2z * z + 2 * dz * (1 + a))
+        + a * (1 + a) / (b_i + b_j) ** 2
+    )
+
     sign *= (-1) ** (y + 1)
     val += scale
 
-    return val, sign, da_i, db_i, da_j, db_j
+    return val, sign, da_i, db_i, da_j, db_j, d2b_j
 
 
 @numba.njit(
@@ -345,18 +357,14 @@ def _hyp2f1_dlmf1583(a_i, b_i, a_j, b_j, y, mu):
     assert 0 <= mu <= b_j
     assert y >= 0 and y % 1.0 == 0.0
 
-    f_1, s_1, da_i_1, db_i_1, da_j_1, db_j_1 = _hyp2f1_dlmf1583_first(
+    f_1, s_1, da_i_1, db_i_1, da_j_1, db_j_1, d2b_j_1 = _hyp2f1_dlmf1583_first(
         a_i, b_i, a_j, b_j, y, mu
     )
 
-    f_2, s_2, da_i_2, db_i_2, da_j_2, db_j_2 = _hyp2f1_dlmf1583_second(
+    f_2, s_2, da_i_2, db_i_2, da_j_2, db_j_2, d2b_j_2 = _hyp2f1_dlmf1583_second(
         a_i, b_i, a_j, b_j, y, mu
     )
 
-    if np.abs(f_1 - f_2) < _HYP2F1_TOL:
-        # TODO: detect a priori if this will occur
-        raise Invalid2F1("Singular hypergeometric function")
-
     f_0 = max(f_1, f_2)
     f_1 = np.exp(f_1 - f_0) * s_1
     f_2 = np.exp(f_2 - f_0) * s_2
@@ -366,10 +374,22 @@ def _hyp2f1_dlmf1583(a_i, b_i, a_j, b_j, y, mu):
     db_i = (db_i_1 * f_1 + db_i_2 * f_2) / f
     da_j = (da_j_1 * f_1 + da_j_2 * f_2) / f
     db_j = (db_j_1 * f_1 + db_j_2 * f_2) / f
+    d2b_j = (d2b_j_1 * f_1 + d2b_j_2 * f_2) / f
 
     sign = np.sign(f)
     val = np.log(np.abs(f)) + f_0
 
+    # use first/second derivatives to check that result is non-singular
+    dz = -db_j * (mu + b_i)
+    d2z = d2b_j * (mu + b_i) ** 2
+    if (
+        not _is_valid_2f1(
+            dz, d2z, a_j, a_i + a_j + y, a_j + y + 1, (mu - b_j) / (mu + b_i)
+        )
+        or sign <= 0
+    ):
+        raise Invalid2F1("Hypergeometric series is singular")
+
     return val, sign, da_i, db_i, da_j, db_j
 
 

diff --git a/tests/test_hypergeo.py b/tests/test_hypergeo.py
index 86afdfa..ba248bd 100644
--- a/tests/test_hypergeo.py
+++ b/tests/test_hypergeo.py
@@ -240,3 +240,28 @@ class TestTransforms:
         offset = self._2f1_validate(*pars)
         check = self._2f1_grad_validate(*pars, offset=offset)
         assert np.allclose(grad, check)
+
+
+@pytest.mark.parametrize(
+    "pars",
+    [
+        # taken from examples in issues tsdate/286, tsdate/289
+        [1.104, 0.0001125, 118.1396, 0.009052, 1.0, 0.001404],
+        [2.7481, 0.001221, 344.94083, 0.02329, 3.0, 0.00026624],
+    ],
+)
+class TestSingular2F1:
+    """
+    Test detection of cases where 2F1 is close to singular and DLMF 15.8.3
+    suffers from catastrophic cancellation: in these cases, use DLMF 15.8.1
+    even though it takes much longer to converge.
+    """
+
+    def test_dlmf1583_throws_exception(self, pars):
+        with pytest.raises(Exception, match="is singular"):
+            hypergeo._hyp2f1_dlmf1583(*pars)
+
+    def test_exception_uses_dlmf1581(self, pars):
+        v1, *_ = hypergeo._hyp2f1(*pars)
+        v2, *_ = hypergeo._hyp2f1_dlmf1581(*pars)
+        assert np.isclose(v1, v2)

"Invalid parent parameters" error using variational gamma
When running the following code, I get an error. I have attached the trees file so we can debug

```python
import tskit
import tsdate
ts = tskit.load("debug.trees")
tsdate.date(ts, mutation_rate=1e-8, Ne=1e4, progress=True, method="variational_gamma")
```

```
File ~/Library/jupyterlab-desktop/jlab_server/lib/python3.10/site-packages/tsdate/core.py:1050, in ExpectationPropagation.iterate(self, iter_num, progress)
   1048 if iter_num:
   1049     desc = f"EP (iter {iter_num + 1:>2}, leafwards)"
-> 1050 self.propagate(
   1051     edges=self.edges_by_child_desc(grouped=False), desc=desc, progress=progress
   1052 )

File ~/Library/jupyterlab-desktop/jlab_server/lib/python3.10/site-packages/tsdate/core.py:1022, in ExpectationPropagation.propagate(self, edges, desc, progress)
   1012 child_cavity = self.lik.ratio(
   1013     self.posterior[edge.child], self.child_message[edge.id]
   1014 )
   1015 # Get the target posterior: that is, the cavity multiplied by the
   1016 # edge likelihood, and projected onto a gamma distribution via
   1017 # moment matching.
   1018 (
   1019     norm_const,
   1020     self.posterior[edge.parent],
   1021     self.posterior[edge.child],
-> 1022 ) = approx.gamma_projection(*parent_cavity, *child_cavity, *edge_lik)
   1023 # Get the messages: that is, the multiplicative difference between
   1024 # the target and cavity posteriors. This only involves updating the
   1025 # variational parameters for the parent and child on the edge.
   1026 self.parent_message[edge.id] = self.lik.ratio(
   1027     self.posterior[edge.parent], parent_cavity
   1028 )

File ~/Library/jupyterlab-desktop/jlab_server/lib/python3.10/site-packages/tsdate/approx.py:114, in sufficient_statistics()
     95 @numba.njit(
     96     "UniTuple(float64, 5)(float64, float64, float64, float64, float64, float64)"
     97 )
     98 def sufficient_statistics(a_i, b_i, a_j, b_j, y_ij, mu_ij):
     99     """
    100     Calculate gamma sufficient statistics for the PDF proportional to
    101     :math:`Ga(t_j | a_j, b_j) Ga(t_i | a_i, b_i) Po(y_{ij} |
   (...)
    112     :return: normalizing constant, E[t_i], E[log t_i], E[t_j], E[log t_j]
    113     """
--> 114     assert a_i > 0 and b_i >= 0, "Invalid parent parameters"
    115     assert a_j > 0 and b_j >= 0, "Invalid child parameters"
    116     assert y_ij >= 0 and mu_ij > 0, "Invalid edge parameters"

AssertionError: Invalid parent parameters
```

[debug.trees.zip](https://github.com/tskit-dev/tsdate/files/12013054/debug.trees.zip)

tests/test_hypergeo.py::TestSingular2F1::test_dlmf1583_throws_exception[pars0] tests/test_hypergeo.py::TestSingular2F1::test_dlmf1583_throws_exception[pars1]
tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars3] tests/test_hypergeo.py::TestPolygamma::test_gammaln[1e-10] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars38] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars73] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars4] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars39] tests/test_hypergeo.py::TestPolygamma::test_gammaln[1e-06] tests/test_hypergeo.py::TestPolygamma::test_gammaln[0.01] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars5] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars6] tests/test_hypergeo.py::TestPolygamma::test_gammaln[10.0] tests/test_hypergeo.py::TestPolygamma::test_gammaln[100.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars40] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars41] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars42] tests/test_hypergeo.py::TestPolygamma::test_gammaln[1000.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars43] tests/test_hypergeo.py::TestPolygamma::test_gammaln[100000.0] tests/test_hypergeo.py::TestPolygamma::test_gammaln[10000000000.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars7] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars8] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars9] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars10] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars44] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars45] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars46] tests/test_hypergeo.py::TestPolygamma::test_digamma[1e-10] tests/test_hypergeo.py::TestPolygamma::test_digamma[1e-06] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars11] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars74] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars75] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars12] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars76] tests/test_hypergeo.py::TestPolygamma::test_digamma[0.01] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars13] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars47] tests/test_hypergeo.py::TestPolygamma::test_digamma[10.0] tests/test_hypergeo.py::TestPolygamma::test_digamma[100.0] tests/test_hypergeo.py::TestPolygamma::test_digamma[1000.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars14] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars15] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars48] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars49] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars16] tests/test_hypergeo.py::TestPolygamma::test_digamma[100000.0] tests/test_hypergeo.py::TestPolygamma::test_digamma[10000000000.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars17] tests/test_hypergeo.py::TestPolygamma::test_trigamma[1e-10] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars18] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars77] tests/test_hypergeo.py::TestPolygamma::test_trigamma[1e-06] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars19] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars50] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars51] tests/test_hypergeo.py::TestPolygamma::test_trigamma[0.01] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars52] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars78] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars79] tests/test_hypergeo.py::TestPolygamma::test_trigamma[10.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars53] tests/test_hypergeo.py::TestPolygamma::test_trigamma[100.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars20] tests/test_hypergeo.py::TestPolygamma::test_trigamma[1000.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars80] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars54] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars21] tests/test_hypergeo.py::TestPolygamma::test_trigamma[100000.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars55] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars56] tests/test_hypergeo.py::TestPolygamma::test_trigamma[10000000000.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars22] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars0] tests/test_hypergeo.py::TestPolygamma::test_betaln[1e-10] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars57] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars58] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars59] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars1] tests/test_hypergeo.py::TestPolygamma::test_betaln[1e-06] tests/test_hypergeo.py::TestPolygamma::test_betaln[0.01] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars60] tests/test_hypergeo.py::TestPolygamma::test_betaln[10.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars61] tests/test_hypergeo.py::TestPolygamma::test_betaln[100.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars2] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars23] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars24] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars25] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars26] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars62] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars63] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars64] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars3] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars27] tests/test_hypergeo.py::TestPolygamma::test_betaln[1000.0] tests/test_hypergeo.py::TestPolygamma::test_betaln[100000.0] tests/test_hypergeo.py::TestPolygamma::test_betaln[10000000000.0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars4] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars65] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars66] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars67] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars28] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars29] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars30] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars31] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars1] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars2] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars32] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars33] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars5] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars6] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars0] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars68] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars69] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars70] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars34] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars35] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars7] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars8] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars1] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars71] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars72] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars36] tests/test_hypergeo.py::TestTaylorSeries::test_2f1[pars37] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars2] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars3] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars4] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars5] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars55] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars27] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars28] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars6] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars9] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars10] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars7] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars8] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars9] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars29] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars11] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars10] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars56] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars30] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars11] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars12] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars12] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars13] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars57] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars13] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars31] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars14] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars15] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars58] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars16] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars32] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars14] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars17] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars33] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars18] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars15] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars59] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars34] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars19] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars20] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars16] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars35] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars21] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars60] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars17] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars22] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars23] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars36] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars61] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars18] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars62] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars24] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars48] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars37] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars63] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars49] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars50] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars19] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars51] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars52] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars64] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars38] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars53] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars54] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars39] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars55] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars40] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars56] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars57] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars58] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars59] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars41] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars60] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars61] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars42] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars65] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars62] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars43] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars63] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars66] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars64] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars44] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars65] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars67] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars45] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars66] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars67] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars68] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars69] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars46] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars68] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars69] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars1] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars20] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars70] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars21] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars2] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars71] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars22] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars72] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars3] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars4] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars5] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars73] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars6] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars7] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars47] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars8] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars48] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars23] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars24] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars9] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars49] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars25] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars10] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars26] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars11] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars25] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars26] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars12] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars27] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars28] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars29] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars13] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars30] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars31] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars32] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars14] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars33] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars34] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars35] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars15] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars36] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars37] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars38] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars16] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars50] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars39] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars40] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars41] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars51] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars42] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars17] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars43] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars52] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars44] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars18] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars45] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars19] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars46] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars53] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars74] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars75] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars47] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars54] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars20] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars70] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars71] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars21] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars72] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars36] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars73] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars74] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars76] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars75] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars22] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars37] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars38] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars39] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars23] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars24] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars76] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars77] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars78] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars79] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars40] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars80] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars81] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars25] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars82] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars41] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars83] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars26] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars84] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars85] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars42] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars86] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars27] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars87] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars88] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars89] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars28] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars43] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars81] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars29] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars44] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars82] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars30] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars45] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars83] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars31] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars46] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars32] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars84] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars47] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars33] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars48] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars85] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars77] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars78] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars34] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars86] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars49] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars50] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars79] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars35] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars87] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars51] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars67] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars88] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars68] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars52] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars69] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars53] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars89] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars70] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars54] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars90] tests/test_hypergeo.py::TestTaylorSeries::test_2f1_grad[pars80] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars90] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars55] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars91] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars71] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars91] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars92] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars93] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars56] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars94] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars72] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars92] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars95] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars96] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars57] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars97] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars73] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars98] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars93] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars99] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars58] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars100] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars74] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars101] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars94] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars59] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars102] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars103] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars75] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars95] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars104] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars105] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars60] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars106] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars76] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars96] tests/test_hypergeo.py::TestRecurrence::test_2f1[pars107] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars61] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars77] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars0] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars78] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars20] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars62] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars97] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars21] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars22] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars63] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars23] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars24] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars79] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars98] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars64] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars25] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars26] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars65] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars99] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars27] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars28] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars80] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars66] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars29] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars100] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars101] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars9] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars102] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars106] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars10] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars11] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars12] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars13] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars103] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars14] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars104] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars107] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars15] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars16] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars0] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars17] tests/test_hypergeo.py::TestRecurrence::test_2f1_grad[pars105] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars1] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars18] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars2] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars3] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars39] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars19] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars4] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars48] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars49] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars5] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars30] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars6] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars50] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars7] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars51] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars8] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars52] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars56] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars53] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars57] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars58] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars31] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars54] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars32] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars59] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars33] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars34] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars60] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars40] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars41] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars42] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars61] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars43] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars62] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars55] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars63] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars71] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars44] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars72] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars64] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars73] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars45] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars65] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars74] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars46] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars47] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars66] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars84] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars67] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars68] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars69] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars35] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars36] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars37] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars38] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars78] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars85] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars79] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars86] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars87] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars88] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars75] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars89] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars101] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars102] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars103] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars104] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars70] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars96] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars105] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars97] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars98] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars99] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars100] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars80] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars106] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars107] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars108] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars109] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars111] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars112] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars113] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars114] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars110] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars76] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars77] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars90] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars91] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars119] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars92] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars93] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars94] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars81] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars82] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars95] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars83] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars127] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars123] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars128] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars124] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars129] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars115] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars116] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars117] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars130] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars118] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars133] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars134] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1521-pars0-0.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1521-pars0-1.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1521-pars0-5.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1521-pars0-10.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1581-pars1-0.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1581-pars1-1.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1581-pars1-5.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1581-pars1-10.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1583-pars2-0.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1583-pars2-1.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1583-pars2-5.0] tests/test_hypergeo.py::TestTransforms::test_2f1[_hyp2f1_dlmf1583-pars2-10.0] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1521-pars0-0.0] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1521-pars0-1.0] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1521-pars0-5.0] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1521-pars0-10.0] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars120] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1581-pars1-0.0] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars131] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1581-pars1-1.0] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars132] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars125] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1581-pars1-5.0] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1581-pars1-10.0] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1583-pars2-1.0] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1583-pars2-0.0] tests/test_hypergeo.py::TestSingular2F1::test_exception_uses_dlmf1581[pars0] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1583-pars2-10.0] tests/test_hypergeo.py::TestSingular2F1::test_exception_uses_dlmf1581[pars1] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars121] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars122] tests/test_hypergeo.py::TestCheckValid2F1::test_is_valid_2f1[pars126] tests/test_hypergeo.py::TestTransforms::test_2f1_grad[_hyp2f1_dlmf1583-pars2-5.0]