package joshua.discriminative.semiring_parsingv2.applications.min_risk_da; import joshua.discriminative.semiring_parsingv2.SignedValue; import joshua.discriminative.semiring_parsingv2.pmodule.PModule; import joshua.discriminative.semiring_parsingv2.semiring.LogSemiring; /** value contains entropy, risk, and combined value * */ public class RiskAndEntropyPM implements PModule<LogSemiring, RiskAndEntropyPM>{ SignedValue value;//combination of entropy and risk SignedValue entropy; SignedValue risk; public RiskAndEntropyPM(){ this.value = new SignedValue(); this.entropy = new SignedValue(); this.risk = new SignedValue(); } public RiskAndEntropyPM(SignedValue value, SignedValue entropy, SignedValue risk){ this.value = value; this.entropy = entropy; this.risk = risk; } public RiskAndEntropyPM duplicate() { SignedValue v = this.value.duplicate(); SignedValue e = this.entropy.duplicate(); SignedValue r = this.risk.duplicate(); return new RiskAndEntropyPM(v,e,r); } public void multiSemiring(LogSemiring p) { this.value.multiLogNumber(p.getLogValue()); this.entropy.multiLogNumber(p.getLogValue()); this.risk.multiLogNumber(p.getLogValue()); } public void add(RiskAndEntropyPM b) { this.value.add(b.value); this.entropy.add(b.entropy); this.risk.add(b.risk); } public void printInfor() { this.value.printInfor(); this.entropy.printInfor(); this.risk.printInfor(); } public void setToZero() { this.value.setToZero(); this.entropy.setToZero(); this.risk.setToZero(); } public SignedValue getValue(){ return this.value; } public SignedValue getEntropy(){ return this.entropy; } public SignedValue getRisk(){ return this.risk; } }