def t(m, n): x = Integer(m) / n r = polygamma(0, x) if r.has(polygamma): return False return abs(polygamma(0, x.evalf()).evalf(strict=False) - r.evalf()).evalf(strict=False) < 1e-10
def sampling_P(condition, given_condition=None, numsamples=1, evalf=True, **kwargs): """ Sampling version of P See Also ======== diofant.stats.P diofant.stats.rv.sampling_E diofant.stats.rv.sampling_density """ count_true = 0 count_false = 0 samples = sample_iter(condition, given_condition, numsamples=numsamples, **kwargs) for x in samples: if x not in (True, False): raise ValueError("Conditions must not contain free symbols") if x: count_true += 1 else: count_false += 1 result = Integer(count_true) / numsamples if evalf: return result.evalf() else: return result