幸谷智紀「多倍長精度数値計算」森北出版

幸谷智紀「多倍長精度数値計算」森北出版

[ Amazon ] ISBN 978-4-627-85491-8, \4200 + TAX

 いやぁ長かった長かった。本来なら昨年のうちに発売されているはずのものが,「可能な限り厚く書け」という方針に変更され,巻末のGNU MP(抜粋),MPFR(完璧),__float128(完璧)のリファレンスまで付録に付くことになってしまったからさぁ大変,シコシコ作業してどーにかこーにか248ページの,ワシの単著としては最大のページ数を誇るテキストが出来上がってしまったのである。担当編集者が途中交代したりして「こりゃ出ないかな?」などと疑心暗鬼になりつつも何とか今日の晴れの日を迎えたのだからとりあえずは良しとしよう。表紙のプログラムが本文で使っているC, C++プログラムとは似ても似つかぬものになっているなどと無粋なことをいう奴は嫌いなので無視することにして,ワシはこの分厚くてド高いテキストをしみじみ眺めて悦に入っているところなのである。

 そう,本書は高価である。税抜き4200円! 吉野家の牛丼並を10杯食える値段になってしまった理由はただ一つ,特殊過ぎて売れそうにないからである。・・・んなことは分かっている,だからペラい「LAPACK/BLAS入門」程度でいいんじゃないかという提案もしていたのだが,「あれじゃペラ過ぎて演習書としては物足りない」とぬかす向きがあったらしく,「どのみち売れないんだから,そんなら分厚くしてくれ」ということになった由。開き直った結果の高額書籍なのである。つーことで,長い数字並べてヘラヘラ楽しめる,そう,「π 円周率1,000,000桁表」などをお持ちの方に置かれましては是非とも座右に置かれることをお勧めしておく。何を隠そう,ワシも本書を座右にたくさん置いているのであるからして(当たり前だ),数字マニアにおかれましては,スクラッチからプログラミングする非効率さも知っておかれては如何かと思う次第なのである。

 そう,今時,多倍長計算,即ち,標準的な整数型(int, long)や実数型(float, double)を越える桁数の計算を四則演算レベルから作成するなどということは止めた方がいいのである。趣味で作るならご自由であるが,それにしても,GNU MP(GMP)やMPFR, QDといった高速かつ機能豊富なオープンソース多倍長演算ライブラリがタダで自由に使えるご時世に,それらの機能を一顧だにせずに唯我独尊的なプログラミングをすることは労力の無駄,車輪の再々発明よりたちが悪い暴挙と言わざるを得ない。本書はこれらのライブラリの解説と関数一覧(QDは初めてかしらん?),CやC++のプログラミング例を豊富に取り揃えて,あまつさえ,手間のかかるベンチマークテストまでやってお示ししているのであるから,買えとは言わないけれど(買ってくれると嬉しいけれど),スクラッチから多倍長精度プログラミングをやろうという方は一通り目通ししておくべきであると断言しておく。まぁ,Webの世界には既にこれらのライブラリをベースとした,MPACKみたいな高速計算ライブラリも多数あるので,そちらを見てもらうのも良いが,高度過ぎる複雑なライブラリを見るより,単純なCやC++テンプレート例を読んだ方が取り掛かりには良いのではないか・・・どうかは皆様で判断して頂きたい。ま,当面売り切れる本ではないので,多倍長数値計算をする必要が出てきたら,ちらとでも眺めて頂ければ幸いである。

 

11/2(土) 駿府・晴

 朝晩は薄手のコートが必要になるが、日中は夏日が続く。地球温暖化もここまでくると不安になってくるなぁ。冬が暑くある以上に夏の酷暑っぷりがどこまでエスカレートするやら。凍死する可能性は限りなく低いが,エアコン故障による熱中症死は大いにありそうである。

 自宅のMacBook Air 2011モデル,ボチボチ買い替えたいなぁと思っていたところに,macOS Catalinaが出たので,AirPlay displayをやってみたくなったのである。で,10月末日にApple経由でAir 2019を注文,本日それが届いた。

 ということで,神さんの冷たい視線を感じつつ,家事の合間にセッティングを行ったのだが,思ったより使い勝手が良くならないなぁと,大枚払った割にはガッカリしているのである。以下雑感。

  • キーボードの打鍵感がイマイチである。「ポコポコ」という音がするのはまだ許すとしても,2011モデルより安っぽいタッチが気に食わない。
  • ストレージの速度が思っていたより遅い。OSのクリーンインストールすると応答性が良くなるという解説ページもあったがメンドくさい。まぁ一番ストレージを読み書きするアプリのインストール作業さえ終えてしまえば,応答性の悪さを感じる機会は激減するのだけれども。
  • Retinaディスプレイの解像度の高さは易々として,13インチでは宝の持ち腐れっぽい。

 それでも全体的には8年前モデルよりは使い勝手が良くはなったので,とりあえずこれでよしとする。あと10年は使い続けたいなぁ。

 寝ます。

Python数値計算入門まえがきの下書き

 次年度の「数値解析1」のテキストを新たに作る予定なので,「まえがき」っぽいものを書いてみた。ろくすっぽ書いてもいないくせに完成稿を目の前にしたかのような文章を書くのは自分にプレッシャーをかけるためである。年内には下書き終了,完成は来年2月の予定だが,さてどうなることやら。


 本書はPython 3のNumPyおよびSciPyを利用することを前提に,数値計算の基本を解説したテキストである。浮動小数点演算の基礎から,偏微分方程式の数値解法まで,Pythonスクリプトを動かしながら理解するというコンセプトで執筆したつもりだが,果たしてその目的が達成できているかどうか,その判断は読者に委ねたい。
 ベースとなっているのは「ソフトウェアとしての数値計算」(https://na-inet.jp/nasoft/)で,2009年までに積み上げてきた講義資料に基づく公開Web教材である。完成以来10年経つと,さすがに記述が古びてくるので,書き足すなり書き直すなりする必要を感じていたところ,奇特な方から「Python本を書きませんか?」というお誘いがあり,自分としても近年最も勢いのある動的言語を本格的に使ってみたい欲求があったので,ホイホイと誘いに乗って古い講義ノートの虫干し作業がてら,書き出し始めたのである。
 実は著者の勤めている大学ではMATLABという,高価だが信頼性の高い数値計算ソフトウェアのサイトライセンスを導入しており,ここ数年はExcelとMATLABを使いながら講義を行っていた。しかし,MATLABのライセンスは卒業すると消滅してしまう。何より,高価なソフトウェアの癖に更に銭を取られる有料パッケージが存在していたりするのが気にくわない。Pythonならば基本,著名なパッケージは無料で使える。これは大きい。
 何より,PythonではDeep Learning用のTensorFlowやPyTorchすら無料で使えるのだし,これらの下支えとしてNumPyやSciPy,Autograd等の基本数値計算パッケージが存在している。今の時代向きの「ソフトウェアとしての数値計算」はこれらの基本数値計算パッケージを前提として語るべきであろう。
 ということで書き出したのはいいのだが,内容的に古い所があり過ぎて,全面改稿したりバッサリ削除した章が続出し,当初の予定通りにはなかなか進まなかった。著者の個人的な事情もあり,遅れに遅れて何とか次年度のテキスト印刷期限に間に合ったという次第である。それでも,不慣れな言語に四苦八苦しながら,良く出来た数値計算パッケージと戯れるのは楽しい作業であり,関数を呼び出すだけで面倒な処理がスイスイできるようになったのを体験するにつけ,時代は進んでいるなぁと,スクラッチから自分の数値計算ライブラリを構築してきた年寄としては感慨深い。その分,数値計算の初心者にとっては敷居が高いと感じるかもしれないが,折角先人が積み上げてきたソフトウェアの上に立つことができている状況を楽しむためには,その高みに親しむことも必要であると,あえて手加減せずに具体的な問題を提示してみたのである。実際に動かせるスクリプトを目の前に突き出しているのだから,大いにチャレンジして頂きたいものである。