package edu.umd.hooka.alignment; public class Digamma { /** * Stolen from from http://www.cog.brown.edu/~mj/Software.htm * @param x * @return digamma(x) */ public static double digamma(double x) { double result = 0.0; assert(x > 0.0); for ( ; x < 7.0; ++x) result -= 1.0/x; x -= 1.0/2.0; double xx = 1.0/x; double xx2 = xx*xx; double xx4 = xx2*xx2; result += Math.log(x)+(1.0/24.0)*xx2-(7.0/960.0)*xx4+(31.0/8064.0)*xx4*xx2-(127.0/30720.0)*xx4*xx4; return result; } }