『コンピュータ・アルゴリズム事典』サポートページ
ここは何?
奥村晴彦『コンピュータ・アルゴリズム事典』(技術評論社,1987年)サポートページです。
『C言語による最新アルゴリズム事典』(技術評論社,1991年)
が出てから,もうサポートの声もかからなかったのですが,
2000年7月になって「ぜひサポートページを」というお声がありましたので,
古いディスクから復活させたものを置かせていただきます。
ソース一式 algo_pas.lzh もあります。
ご自由にお使いください。
バグ一覧
- 7ページの文献には,本書出版後に出た和田秀男先生の『コンピュータと素因子分解』(遊星社,1987)を追加させてください。
- 16ページ説明文4行目のNはすべてMの誤植です。
- 25ページ説明文最初の「実際」は「実数」の誤植です。
- 25ページのプログラムは次のようにすると速くなります。
function Isqrt(X: integer): integer;
var S, T: integer;
begin
if X = 0 then Isqrt := 0
else begin
S := 1; T := X;
while S < T do begin
S := S * 2; T := T div 2
end;
S := (S + T) div 2;
repeat
T := S;
S := (X div S + S) div 2
until S >= T;
Isqrt := T
end
end;
次の立方根も同様です。
- 54ページLucasは今までルーカスと読んでいましたが和田秀男先生にリュカが本当でないかと指摘されました。どなたかフランス語に詳しいかた,解明してください。
- 78ページのSine,Cosineいずれも K := abs(K) は不要です。また,if odd(K div 2)……の直前に
if K < 0 then K := K - 1;
が必要です。なお,これらはむしろ半角のタンジェントから導いたほうが簡単です。
- 80〜81ページの指数関数は,バグではありませんが,0≦X≦1に移すよりも,−ln(2)/2≦X≦ln(2)/2に移して,最後に2のベキ乗を掛けたほうが賢かったのです。2のベキ乗を掛けるところは,C言語ならライブラリ関数ldexpが使えます。
- 90ページ説明文2行目の「1≦」は「0≦」の間違いです。
- 105ページ下から3行目の「+ 1」は不要です。
- 非周期関数のスプライン補間のリスト(106ページ)の function Interpolation が,周期関数のスプライン補間の類似の部分(110〜111ページ)とまったく同じになってしまっています。プリンタの出力を切り貼りしたときに間違えられてしまったようです。106ページを次のようにご訂正ください。下から14〜12行目は削除してください(少し上のPeriodという変数の宣言も不要です)。下から11行目の I := 0 は I := 1 に,下から6行目の I > 0は I > 1 に直してください。
- 121ページの説明文5行目の「平面上に」は「平面上の点の座標(X,Y)が与えられたとき,それを極座標(R,Th)に」の誤植です。
- 165ページ説明文4行目O(オー)は0(ゼロ)の誤植です。
- 173ページについては,bitの88年5月号におもしろいアルゴリズムが載っています。
- 190ページ説明文9行目 A[I, J] は A[1, J] の誤植です。
- 213ページ2行目の Y[1] は Y[I] の誤植です。
- 239ページのリストの最初の行の array[1..N] of は array [1..N] of array [1..M] of の間違いです。
- 256ページ4行目「A[1] を」は「A[I] を」の誤植です。
- 259ページ説明文1行目の2番目の≦,および272ページ2行目の≦は,いずれも<の誤植です。
- 294ページ1行目「整教」は「整数」の誤植です。
- 304ページのリストの最後の end. が第2刷まででは消えてしまっており,第3刷では end; と誤植されています。
- 341ページ説明文の中ほどの7567は9567の誤植です。
上記以外にも,印刷の段階でリストの字下げがおかしくなったり空白行がなくなったりといった類のおかしなところが,特に第1刷では多数ありました。レーザープリンタの出力を切り貼りしたときに間違ってしまったとのことです。これらはプログラムの動作には関係しません。その他,誤植や編集の誤りにより文章が若干おかしくなってしまったところもありますが,意味が通じるところは,ここではいちいち挙げませんでした。
追記
massangeanaさんから:
アルゴリズム事典ですが第4章のところの多倍長eの計算ですが,
コンパイルエラーになります。
E.Num[E.Len] := 1; で E.Len = 501 なのに配列の添字の上限が500
なのが原因のようです。
リンクはご自由にどうぞ。
松阪大学
奥村晴彦
Last modified: 2003-12-08 17:51:02