自由度 df のt分布において,|x| 以上の値をとる確率を与える関数です。
# t分布の両側確率 <a name="txp">txp.awk</a>
function txp(t, df, i, t1, t2, p, w, m2pi)
{
m2pi = 0.636619772367581343076
t1 = abs(t)/sqrt(df)
t2 = 1.0/(1.0+t1*t1)
if ((df%2) == 0) {
w = t1*sqrt(t2)
p = 1.0-w
for (i = 2; i <= df-2; i += 2) {
p -= w *= t2*(i-1)/i
}
}
else {
p = 1.0-m2pi*atan2(t1, 1)
if (df >= 3) {
w = m2pi*t1*t2
p -= w
for (i = 3; i <= df-2; i += 2) {
p -= w *= t2*(i-1)/i
}
}
}
return (p < 0.0 && abs(p) < 1e-10) ? 0.0 : p
}