1
0
forked from GitHub/gf-core

added getFunctionProb in the Java and C API

This commit is contained in:
krasimir
2016-05-30 11:25:59 +00:00
parent a00532d5e4
commit 3381ae1aa0
4 changed files with 32 additions and 0 deletions

View File

@@ -165,6 +165,17 @@ pgf_function_type(PgfPGF* pgf, PgfCId funname)
return absfun->type;
}
double
pgf_function_prob(PgfPGF* pgf, PgfCId funname)
{
PgfAbsFun* absfun =
gu_seq_binsearch(pgf->abstract.funs, pgf_absfun_order, PgfAbsFun, funname);
if (absfun == NULL)
return INFINITY;
return absfun->ep.prob;
}
GuString
pgf_print_name(PgfConcr* concr, PgfCId id)
{

View File

@@ -66,6 +66,9 @@ pgf_iter_functions_by_cat(PgfPGF* pgf, PgfCId catname,
PgfType*
pgf_function_type(PgfPGF* pgf, PgfCId funname);
double
pgf_function_prob(PgfPGF* pgf, PgfCId funname);
GuString
pgf_print_name(PgfConcr*, PgfCId id);

View File

@@ -178,6 +178,18 @@ Java_org_grammaticalframework_pgf_PGF_getFunctionType(JNIEnv* env, jobject self,
return jtype;
}
JNIEXPORT jdouble JNICALL
Java_org_grammaticalframework_pgf_PGF_getFunctionProb(JNIEnv* env, jobject self, jstring jid)
{
PgfPGF* pgf = get_ref(env, self);
GuPool* tmp_pool = gu_local_pool();
PgfCId id = j2gu_string(env, jid, tmp_pool);
double prob = pgf_function_prob(pgf, id);
gu_pool_free(tmp_pool);
return prob;
}
typedef struct {
GuMapItor fn;
JNIEnv *env;

View File

@@ -42,6 +42,12 @@ public class PGF {
*/
public native Type getFunctionType(String fun);
/** Returns the negative logarithmic probability of the function
* with the given name.
* @param fun The name of the function.
*/
public native double getFunctionProb(String fun);
/** Returns an iterable over the set of all expression in
* the given category. The expressions are enumerated in decreasing
* probability order.