diff options
Diffstat (limited to 'sourcecodes/k-best/src/comp_pHat_D.cc')
| -rw-r--r-- | sourcecodes/k-best/src/comp_pHat_D.cc | 213 |
1 files changed, 0 insertions, 213 deletions
diff --git a/sourcecodes/k-best/src/comp_pHat_D.cc b/sourcecodes/k-best/src/comp_pHat_D.cc deleted file mode 100644 index fc789912..00000000 --- a/sourcecodes/k-best/src/comp_pHat_D.cc +++ /dev/null @@ -1,213 +0,0 @@ -#include <iostream> -#include <fstream> -#include <iomanip> -//#include "varpar.h" -#include <stdlib.h> -#include <math.h> -#include <list> -#include <stdio.h> -#include <vector> -//#include "cfg.h" -#include <string.h> -#include <cmath> -//HR -//#define EPSILON 0.001 -#define EPSILON 0.00001 - - -//HR: Add for hash_set -#if __GNUC__ < 3 && __GNUC__ >= 2 && __GNUC_MINOR__ >= 95 -# include <hash_set> -# include <functional> -# define gnu_namespace std -#elif __GNUC__ >= 3 -# include <ext/hash_set> -# if __GNUC_MINOR__ == 0 -# include <functional> -# define gnu_namespace std -# else -# include <ext/functional> -# define gnu_namespace __gnu_cxx -# endif -#else -# include <hash_set.h> -# include <functional.h> -# define gnu_namespace std -#endif -using namespace gnu_namespace; -#include <set> -// - - -using namespace std; - - -//HR: add from Engine.h in BayesNw -#define MARK 9e99 -#define LOG_ZERO -1e101 -//#define LOGMINUS_NEW(logA, logB) if(logA == MARK) logA = logB; else if (logA == LOG_ZERO) logA = logB; else if (logB == LOG_ZERO) logA = logA; else logA = logA + log(1-exp(logB-logA)); -//HR: add from UpdateHR.h in BayesNw to deal with the problem in sum = 0 in comp_post() -//call by reference to the original value -//the log sum result is stored in logA -//may change double into long double; no, use double -void logAddComp(double & logA, double & logB){ - if(logA == MARK){ - logA = logB; - } - else if (logA == LOG_ZERO){ - logA = logB; - } - else if(logB == MARK){ - logA = logA; - } - else if(logB == LOG_ZERO){ - logA = logA; - } - //Nither logA nor logB is MARK/LOG_ZERO - else{ - //1 - if(logA < 0 && logB < 0 ){ - logA = logA + log( 1 + exp(logB-logA) ); - } - //2 - else if(logA > 0 && logB > 0){ - //always make exp(.): . > 0 - //2.1 - if(logA >= logB){ - logA = -( -logA + log( 1 + exp(-logB+logA) ) ); - } - //2.2 - else{ - logA = -( -logB + log( 1 + exp(-logA+logB) ) ); - } - - } - //3 - else if(logA < 0 && logB > 0){ - //3.1 - if(logA + logB > 0){ - //logA = logA + log( 1 - exp(-logB-logA) ); - logA = -logB + log( exp(logA + logB) - 1 ); - - } - //3.2 - else if(logA + logB < 0){ - logA = -( logA + log( exp(-logB-logA) - 1) ); - } - //3.3 - else{ - logA = LOG_ZERO; - } - } - //4 - else if(logA > 0 && logB < 0){ - //4.1 - if(logA + logB > 0){ - logA = -logA + log( exp(logB+logA) - 1); - } - //4.2 - else if(logA + logB < 0){ - //logA = -( -logA + log(1 - exp(logB+logA)) ); - logA = -( logB + log( exp(-logA-logB) - 1) ); - - } - //4.3 - else{ - logA = LOG_ZERO; - } - } - - } - -} - - -//HR: Add -//Update from comp_post -void comp_pHat(){ - //double logSum = -450.491; //iris - double logSum = -9418.56; //tic - - //double logSum = -637.91; //zoo - - cerr << "logSum = " << logSum << endl; - - //double truelogP = -450.491; //iris - double truelogP = -9418.29; //tic - - //double truelogP = -619.502; //zoo - - cerr << "truelogP = " << truelogP << endl; - - int sampleSize = 1000; - - long double post[sampleSize]; - double relaLogScore[sampleSize]; - - double sumPost[sampleSize]; - - string str; - char str1[32]; - - FILE *fp = fopen("netpost" ,"r"); - int i = 0; - - - - - while(!feof(fp) && i < sampleSize){ - char c; - fscanf(fp,"%Lg",&post[i]); - //cout << " post[" << i << "] = " << post[i] << endl; - fscanf(fp,"%c",&c); - i++; - } - - for(int j = 0; j < sampleSize; j++){ - relaLogScore[j] = log(post[j]) + logSum; - //cout << " relaLogScore[" << i << "] = " << relaLogScore[j] << endl; - } - //cout << " relaLogScore[" << 1 << "] = " << relaLogScore[1] << endl; - //cout << " relaLogScore[" << 2 << "] = " << relaLogScore[2] << endl; - - for(int j = 0; j < sampleSize; j++){ - sumPost[j] = LOG_ZERO; - } - - for(int j = 0; j < sampleSize; j++){ - for(int k = 0; k <= j; k++){ - logAddComp(sumPost[j], relaLogScore[k]); - } - //cout << " sumPost[" << j << "] = " << sumPost[j] << endl; - } - - double DRatio[sampleSize]; - - - for(int j = 0; j < sampleSize; j++){ - DRatio[j] = exp( sumPost[j] - truelogP ) * 100; - //cout << "" << DRatio[j] << endl; - } - - double GRatio[sampleSize]; - for(int j = 0; j < sampleSize; j++){ - GRatio[j] = post[0]/post[j]; - //cout << "" << GRatio[j] << endl; - } - - cout << "\n\nDRatio\t GRatio" << endl; - for(int j = 0; j < sampleSize; j++){ - cout << "" << DRatio[j] << "\t " << GRatio[j] << endl; - } -} - - - -//HR:F -int main(int argc, char* argv[]){ - comp_pHat(); - -} - - - |
