summaryrefslogtreecommitdiff
path: root/japanese/FreeWnn-lib/files/patch-Wnn-etc-hindo.c
diff options
context:
space:
mode:
Diffstat (limited to 'japanese/FreeWnn-lib/files/patch-Wnn-etc-hindo.c')
-rw-r--r--japanese/FreeWnn-lib/files/patch-Wnn-etc-hindo.c128
1 files changed, 128 insertions, 0 deletions
diff --git a/japanese/FreeWnn-lib/files/patch-Wnn-etc-hindo.c b/japanese/FreeWnn-lib/files/patch-Wnn-etc-hindo.c
new file mode 100644
index 000000000000..8020a4ef0ae1
--- /dev/null
+++ b/japanese/FreeWnn-lib/files/patch-Wnn-etc-hindo.c
@@ -0,0 +1,128 @@
+Index: Wnn/etc/hindo.c
+===================================================================
+RCS file: /home/cvs/private/hrs/freewnn/Wnn/etc/hindo.c,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -r1.1.1.1 -r1.2
+--- Wnn/etc/hindo.c 20 Dec 2008 07:13:30 -0000 1.1.1.1
++++ Wnn/etc/hindo.c 20 Dec 2008 15:22:40 -0000 1.2
+@@ -5,7 +5,7 @@
+ /*
+ * FreeWnn is a network-extensible Kana-to-Kanji conversion system.
+ * This file is part of FreeWnn.
+- *
++ *
+ * Copyright Kyoto University Research Institute for Mathematical Sciences
+ * 1987, 1988, 1989, 1990, 1991, 1992
+ * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
+@@ -49,8 +49,8 @@
+ 仮頻度がbのとき、頻度の更新の確率は 1 / ([b÷4]+1)
+ 但し b=0の時は、頻度更新確率 0
+
+-
+- a == -1 <==> b == 0x7f = 127;
++
++ a == -1 <==> b == 0x7f = 127;
+ この時、このエントリーは、変換に決して用いられない
+ (コメントアウトされている)ことを表す。
+ 9/1/89 H.T.
+@@ -58,47 +58,48 @@
+
+ /** 整数引数の平方根関数。但し引数<0の時のエラーチェックはなし(0を返す)。*/
+ static int
+-isqrt (i)
+- int i;
++isqrt(int i)
+ {
+- register int a, b;
++ register int a, b;
++
++ if (i <= 0)
++ return (0);
++
++ for (a = i, b = 1; b <<= 1, a >>= 2;);
++
++ while ((a = i / b) < b)
++ b = (b + a) >> 1;
+
+- if (i <= 0)
+- return (0);
+- for (a = i, b = 1; b <<= 1, a >>= 2;);
+- while ((a = i / b) < b)
+- b = (b + a) >> 1;
+- return (b);
++ return (b);
+ }
+
+ /** 実頻度a→仮頻度b */
+ int
+-asshuku (hin)
+- int hin;
++asshuku(int hin)
+ {
+- register int c;
++ register int c;
+
+- if (hin == -1)
+- return (127);
+- if (hin <= 4)
+- return (hin);
+- /* 大半は頻度0と想定してのスピードアップ。motoni1,2でも同じ */
+-
+- c = (isqrt ((hin <<= 1) + 1) + 1) & ~1;
+- c += hin / c - 2;
+- return (c < 126 ? c : 126);
++ if (hin == -1)
++ return (127);
++ if (hin <= 4)
++ return (hin);
++ /* 大半は頻度0と想定してのスピードアップ。motoni1,2でも同じ */
++
++ c = (isqrt((hin <<= 1) + 1) + 1) & ~1;
++ c += hin / c - 2;
++
++ return (c < 126 ? c : 126);
+ }
+
+ /** 仮頻度b→実頻度(min)a */
+ /*
+ int
+-motoni1(hin)
+-int hin;
++motoni1(int hin)
+ {
+ register int c;
+
+ if(hin == 127) return(-1);
+- if(hin <= 4) return(hin);
++ if(hin <= 4) return(hin);
+ c = hin >> 2;
+ return( (hin - (c << 1)) * (c + 1) );
+ }
+@@ -106,15 +107,17 @@ int hin;
+
+ /** 仮頻度b→実頻度(mid)a */
+ int
+-motoni2 (hin)
+- int hin;
++motoni2(int hin)
+ {
+- register int c;
++ register int c;
++
++ if (hin == 127)
++ return (-1);
++
++ if (hin <= 4)
++ return (hin);
++
++ c = hin >> 2;
+
+- if (hin == 127)
+- return (-1);
+- if (hin <= 4)
+- return (hin);
+- c = hin >> 2;
+- return ((hin - (c << 1)) * (c + 1) + (c >> 1));
++ return ((hin - (c << 1)) * (c + 1) + (c >> 1));
+ }