double invbinomial(double n,double k,double p) { if (k==0 && n>0 && p>=0 && p<=1) return (1 - pow(p,1/n)); return invibeta(k+1,n-k,1-p); }
double qt(double p, double df) { double t, invibeta(); t = invibeta(fabs(2*p-1), 0.5, df/2); return((p>0.5?1:-1) * sqrt(t*df/(1-t))); }
double invf(double df1, double df2, double f) { double x = invibeta(df2/2,df1/2,1-f); return (x==0) ? 0 : df2*(1-x)/(df1*x); }