全ソースコード[文字コード:UTF-8]
ソースコードについては何の権利も主張しませんので自由にお使いください。
- p.9 12行目 12は8の2倍より大きく→21は8の2倍より大きく
- p.59 contain.c の5行目
int cmp(void *x, void *y)
はint cmp(const void *x, const void *y)
としないとコンパイラが警告を出すかもしれません。 - p.214 weights.c の6行目
char side[2][3] = { "左", "右" };
はUTF-8の時代ではchar side[2][4] = { "左", "右" };
としないと動作がおかしくなります。あるいはもっとわかりやすくchar *side[2] = { "左", "右" };
とするべきでした。 - p.312 本文 log((1-x)/x) → log(x/(1-x)) プログラムのほうは正しくなっています。なお,乱数
rnd()
がぴったり 0 になれば log(0) つまり -Inf になりますが,その対策は省略してあります(「乱数」の項にぴったり 0 や 1 にならないようにする方法が書いてあります)。 - pp.334-336 印刷されたソースコード中
return ~r ^ ...
のように~
(NOT) と^
(XOR) が混在しているreturn
が4箇所ありますが,いずれも~
(NOT) は不要で,return r ^ ...
が正しいコードです。つまり,ソースコード中のcrc*.c
が正しいものです。本の製作過程で間違いが混入したようです。申し訳ありません。