convert mpmath function to cython
I think I could figure this out eventually, but I'm hoping it will be a very easy question for someone out there. I would like to convert the following function to cython to be as fast as possible. I am not sure exactly what I need to import from mpmath to do that.
Here is the function:
from mpmath import * mp.dps = 25; mp.pretty = True def hyp_mp(a1,a2,b1,b2): num = gamma(a1+a2+1)*gamma(b1+b2+1)*gamma(a1+b1+1)*gamma(a2+b2+1) denom = gamma(a1+1)*gamma(a2+1)*gamma(b1+1)*gamma(b2+1)*gamma(a1+a2+b1+b2+1) return num/denom def myfisher_mp(a1,a2,b1,b2): p = hyp_mp(a1,a2,b1,b2) outp = p for i in range(0,a1): temp = hyp_mp(i,a2+a1-i,b1-i+a1,b2-a1+i) if temp > p: break else: outp += temp for i in range(0,a2): temp = hyp_mp(a1+a2-i,i,b1-a2+i,b2+a2-i) if temp > p: break else: outp += temp return outp
A good test case would be myfisher_mp(1286, 9548, 133437, 148905), which takes about 1 second on my desktop. The inputs a1,a2,b1,b2 can be assumed to be positive ints.