diff options
author | desaicwtf <desaicwtf@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-07-09 18:32:00 +0000 |
---|---|---|
committer | desaicwtf <desaicwtf@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-07-09 18:32:00 +0000 |
commit | fd8a6c25ddf3a06dc2399c79a1fee608f1b5a500 (patch) | |
tree | 30473a4bfe3db48699f285f274843ec0e2ce7ff9 /gi/posterior-regularisation/prjava/src/util/DigammaFunction.java | |
parent | 2d3261e0e66981916be5933c796ff7157a20edaa (diff) |
forgot to add util folder in optimization library
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@206 ec762483-ff6d-05da-a07a-a48fb63a330f
Diffstat (limited to 'gi/posterior-regularisation/prjava/src/util/DigammaFunction.java')
-rw-r--r-- | gi/posterior-regularisation/prjava/src/util/DigammaFunction.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gi/posterior-regularisation/prjava/src/util/DigammaFunction.java b/gi/posterior-regularisation/prjava/src/util/DigammaFunction.java new file mode 100644 index 00000000..ff1478ad --- /dev/null +++ b/gi/posterior-regularisation/prjava/src/util/DigammaFunction.java @@ -0,0 +1,21 @@ +package util; + +public class DigammaFunction { + public static double expDigamma(double number){ + if(number==0)return number; + return Math.exp(digamma(number)); + } + + public static double digamma(double number){ + if(number > 7){ + return digammApprox(number-0.5); + }else{ + return digamma(number+1) - 1.0/number; + } + } + + private static double digammApprox(double value){ + return Math.log(value) + 0.04167*Math.pow(value, -2) - 0.00729*Math.pow(value, -4) + + 0.00384*Math.pow(value, -6) - 0.00413*Math.pow(value, -8); + } +} |