全ソースコード[文字コード: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.296
rndtest.c25行目が一部文字化けしていますがś2は±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が正しいものです。本の製作過程で間違いが混入したようです。申し訳ありません。 - p.347 56行目
malloc()のサイズのn + n4は実はn - n4で十分です(元のままでも動作に支障はありません)。プルリクありがとうございます。