change uni-gram computing from float to double in phrase and pinyin lookup
authorPeng Wu <alexepico@gmail.com>
Mon, 15 Aug 2011 03:32:40 +0000 (11:32 +0800)
committerPeng Wu <alexepico@gmail.com>
Mon, 15 Aug 2011 04:59:50 +0000 (12:59 +0800)
src/lookup/phrase_lookup.cpp
src/lookup/pinyin_lookup.cpp

index c17677355de396fb878e083f624e96e47cadcef9..e1c460425017443832d9a82bd54f6047015d20f5 100644 (file)
@@ -180,9 +180,9 @@ phrase_token_t token){
     if ( m_phrase_index->get_phrase_item(token, m_cache_phrase_item))
         return false;
     size_t phrase_length = m_cache_phrase_item.get_phrase_length();
-    gfloat elem_poss = m_cache_phrase_item.get_unigram_frequency() / (gfloat)
+    gdouble elem_poss = m_cache_phrase_item.get_unigram_frequency() / (gdouble)
         m_phrase_index->get_phrase_index_total_freq();
-    if ( elem_poss < FLT_EPSILON )
+    if ( elem_poss < DBL_EPSILON )
         return false;
 
     lookup_value_t next_value;
@@ -197,10 +197,10 @@ bool PhraseLookup::bigram_gen_next_step(int nstep, lookup_value_t * cur_value, p
     if ( m_phrase_index->get_phrase_item(token, m_cache_phrase_item))
         return false;
     size_t phrase_length = m_cache_phrase_item.get_phrase_length();
-    gfloat unigram_poss = m_cache_phrase_item.get_unigram_frequency() /
-        (gfloat) m_phrase_index->get_phrase_index_total_freq();
+    gdouble unigram_poss = m_cache_phrase_item.get_unigram_frequency() /
+        (gdouble) m_phrase_index->get_phrase_index_total_freq();
 
-    if ( bigram_poss < FLT_EPSILON && unigram_poss < FLT_EPSILON )
+    if ( bigram_poss < FLT_EPSILON && unigram_poss < DBL_EPSILON )
         return false;
 
     lookup_value_t next_value;
index 10d61b43fef68e14b0da1046b595486deb5dbe9b..7b8e623f3e7862c7751edefe1ac7d3084da8afa9 100644 (file)
@@ -325,9 +325,9 @@ bool PinyinLookup::unigram_gen_next_step(int nstep, lookup_value_t * cur_step, p
     if (m_phrase_index->get_phrase_item(token, m_cache_phrase_item))
        return false;
     size_t phrase_length = m_cache_phrase_item.get_phrase_length();
-    gfloat elem_poss = m_cache_phrase_item.get_unigram_frequency() / (gfloat)
+    gdouble elem_poss = m_cache_phrase_item.get_unigram_frequency() / (gdouble)
        m_phrase_index->get_phrase_index_total_freq();
-    if ( elem_poss < FLT_EPSILON )
+    if ( elem_poss < DBL_EPSILON )
        return false;
     gfloat pinyin_poss = m_cache_phrase_item.get_pinyin_possibility(*m_custom, pinyinkeys);
     if (pinyin_poss < FLT_EPSILON )
@@ -345,9 +345,10 @@ bool PinyinLookup::bigram_gen_next_step(int nstep, lookup_value_t * cur_step, ph
     if (m_phrase_index->get_phrase_item(token, m_cache_phrase_item))
        return false;
     size_t phrase_length = m_cache_phrase_item.get_phrase_length();
-    gfloat unigram_poss = m_cache_phrase_item.get_unigram_frequency() / (gfloat)
-       m_phrase_index->get_phrase_index_total_freq();
-    if ( bigram_poss < FLT_EPSILON && unigram_poss < FLT_EPSILON )
+    gdouble unigram_poss = m_cache_phrase_item.get_unigram_frequency() /
+        (gdouble) m_phrase_index->get_phrase_index_total_freq();
+
+    if ( bigram_poss < FLT_EPSILON && unigram_poss < DBL_EPSILON )
        return false;
     gfloat pinyin_poss = m_cache_phrase_item.get_pinyin_possibility(*m_custom, pinyinkeys);
     if ( pinyin_poss < FLT_EPSILON )