「多倍長数値計算入門」シラバス=目次予定

 次年度の後期に担当することになった「数値解析2」のためのテキストして下記のシラバス案を作ってこれに沿ったテキスト「多倍長数値計算入門(仮)」を書いてみることにした。

  1. 多倍長数値計算とは? 
  2. コンピュータの内部と演算の高速化手法
  3. 多倍長自然数演算
  4. 多倍長整数演算とその応用
  5. 多倍長浮動小数点演算
  6. 多倍長精度浮動小数点演算ライブラリの比較
  7. 並列化手法
  8. 初等関数の計算
  9. 円周率の計算
  10. 基本線型計算と並列化
  11. 連立一次方程式の求解
  12. StrassenのアルゴリズムとLU分解への応用
  13. 非線型方程式の求解
  14. Remez法による最良関数近似多項式の導出
  15. 補外法による常微分方程式の初期値問題の求解

 学部の講義だから「スタンダード」なものを講義する必要があるので,今までは多倍長計算については多少触れる程度にとどめていたのだけれど,QDもMPFR/GMPもすっかり定着したし,GMPに至ってはこれがないとLinuxのセキュリティも確保できないほど深くシステムに食い込んじゃっているので,こんだけスタンダードになっちゃったものを逆に講義しない方がおかしいという状況だからもう遠慮は要らんわな。一応整数演算とその応用についても触れるべく1章分ぐらいは雑多なものを入れる予定だが,そのほかの部分は数値計算の話題になる。

 こういう知識詰め込み型講義ってのは,漆塗り型の基礎教養的講義に比べて嫌われるらしい。受講生に言わせると,毎回講義内容もトーンもガラリと変わっちゃうので目まぐるしくて戸惑うとのこと。まぁこちらとしては「うるせぇガタガタぬかすな一度ぐらい目を回す経験ぐらいしておけ!」というつもりでやるのでアンケートはズタボロになりそうだし,ひょっとしたら受講生ゼロかなぁとも思うんだが(それはそれで一面ラッキーではある),こちらとしてはせっかく担当するのだから準備するのも「楽しみ」がないとツマランのよねぇ。

 演習はC++を主軸としつつ,ほとんどANSI Cでプログラミングという感じ。環境をWindows向けに整えるのがちと骨であるが,MPIRはあるし,QDは多分ネイティブVisual C++でも問題なくコンパイルできるだろうし,まぁ何とかなるのかなと楽観している。ダメならLinuxのCUI環境提供かCygwin使えばいいしね。

 つーことで今後LAPACK入門(仮)の校正作業と並行して準備を進めていく予定。さっさとこれ書いてワシのアカデミックキャリアの半分以上は終わったなぁという感慨を持ちたいのであります。〆切は来年8月上旬。さてどーなりますなら。

[進捗報告] 関数リファレンス,参考文献,索引挿入

 最終章を書きながら前の商を見返していたのだが,関数リファレンスとしての使い勝手が悪いので,下記のような表を挿入しまくり,最終的に10ページ近く増えてしまったぞい。

2015-11-29_173518

 あと,不完全だった参考文献,索引も入れてみた。後は校正しながら書き直す程度かなぁ。

 残っている一番の問題はWindows環境でのLAPACK/BLASの使い方の解説なんだが,本家提供のWindows用が出るまで待つか,3.5.0で書いちまうか,まだ思案中なう。

 とりあえず11月末までに全部できたので,後はチマチマ直していこうっと。もう心は「多倍長数値計算入門(仮称)」に飛んでいるのであるからして~。

マイカタ「かたくり」上・中・下,一迅社

上 [ Amazon ] ISBN 978-4-7580-0878-5, \1240 + TAX
中 [ Amazon ] ISBN 978-4-7580-0879-2, \1240 + TAX
下 [ Amazon ] ISBN 978-4-7580-0880-8, \1240 + TAX

katakuri_first
katakuri_middle
katakuri_last

 世に蛮勇あり。・・・というのはオブラートに包んだ婉曲表現であり,つまりは「バカじゃねぇの!」と吐き捨てられる行為一般を蛮勇と呼ぶのだ。

 本書の出版はまさに蛮勇,オールカラーで全話収録,しかも三分冊で一冊税込だと1300円を超える価格で一括販売である。バカのやることである。ワシが一迅社の株主なら怒り狂って社長の首を絞めに行く。既に実績のある有名マンガ家なら復刊ドットコムという事例があるからまだ理解するのだが,著者は日本のプロ商業漫画界ではほぼ無名の存在であり,しかも内容は弱小Web会社のブラック社畜生活を明るく描く,解説なしの専門用語だらけの不親切極まりない1ページ完結のぶつ切りマンガだ。講談社のWebマガジンで連載されていたとはいえ,3年の連載期間中に一度も単行本にまとめようという話もなかったという,商業的には完全に見捨てられた作品なのだ。捨てる神あれば拾う神ありとよく言われるが,拾って出した単行本が売れなければ神どころか単なるスッテンテンの貧乏人になるだけだ。まともな出版社ならやらないことを一迅社はやらかしたのである。

 しかし一迅社はそのような前科がある。低迷していた夢路行の全集を出し,鉛筆書きの個人Webサイトに張り付けられていた白黒ビットマップをまとめて単行本化してアニメ化まで行っている。まこと,賢いサラリーマンだらけの日本の出版界において数少ないベンチャー魂にあふれた大馬鹿者の出版社である。漫画に対する目の付け所については確かなものがあり,それが大衆に刺さるものかどうかを世に問う度胸は大したものなのである。確かに本書は,そして作者のマイカタにはそれが備わっており,オールカラーのド高い贅沢な大判単行本として読者に届けるだけの価値のある作品だと一迅社は確信したのだ。そしてそれは確かに間違っていない。間違っていないがビジネス的にどうなるかは未知数だ。しかるに大馬鹿出版社の大博打に対し,ワシは戸田書店静岡本店において大枚払って本書を入手し,読破してこれを書くことでその博打に一口乗ることにしたのである。以下は丁半の結果を待つこのワシの高揚感をお届けすることにする。

 実はこの著者の「マイカタ」という人物,創作系同人誌即売会コミティアではかなりの有名人である。ワシは一度だけ,この著者ともう一人の人物との合作本を読んだことがあるのだが,それはコミティア発行のパンフレットの読者投稿欄で取り上げられていたからである。
 それはマイカタ(女性)ともう一人の人物(男性同人マンガ家)の同棲生活を描いた共作エッセイマンガだった。最終的にはマイカタの方が,もう一人の同人マンガ家の経済力のなさに見切りをつけて別れてしまい,商業作家への道が開いたマイカタが都会に出ていくというものであったが,なる程,明らかにマイカタの作品にはもう一人の作品にはない「魅力」があった。この「かたくり」上巻の最初の部分はその面影が色濃く出ていて,不安定ながらもプロ編集者から「こいつを使ってみようかな」と思わせる独特の作風になっている。

 マイカタの画風の魅力は,(1)融通無碍な描線で描かれた下半身デブな可愛いキャラと,(2)世の無常を泣き笑いでからりと叫んでまとめてしまうブラックジョーク的シンプルさ,この2点に集約される。
 まずは(1)について語ることにする。
 多分,デザイン能力が抜群にあり,図画の構成能力が高いためだろう,キャラの動的表現がたがみよしひさより数倍上回っているにも関わらず,読みにくくはならず,魅力的になっているのだ。しかもこの下半身デブキャラ,特に女性キャラは脂肪多寡にもかかわらずみな可愛い。デブ専エロ漫画的肉ジワがあっても水着姿がエロく感じるのは,かなりの専門的美術教育を受けてきた可能性もあるのでは・・・と思うのである。表紙が名画のパロになっているのもそれ故なのかもしれない。
 そして(2)だ。作者マイカタの分身のような主人公・ナカウラが所属する弱小Web制作会社は,実は親会社のリストラによって消滅した支店が母体となって発足したものであり,まず上巻の最初からエグイ社長のドライな配置転換 or 退職宣言から始まるのである。それがまことに心地よい。ナカウラをはじめとする支店の面々は,支店長を新たな社長とするWeb小企業として再出発,配置転換して散り散りになった元会社の仲間と涙の別れを経て,明るい諦観を持ちつつ,土日祝日が平気で潰れるサービス残業三昧の社畜生活を開始するのである。
 マイカタという作家の持つこの二つの特徴が融合し,不思議な可愛らしさ,明るさを保ちつつドラマチックでリアルなICTを活写した物語世界を展開しているのが本作のもう一つの不思議なところなのである。

 著者のマイカタは都会(名古屋か?)に出てからすぐに漫画だけで一本立ちしたわけでなく,IT会社で働いていた経験があるとのこと。それ故,本作の端々で何の解説もなく展開されるHTMLやらAndroidやらIOSやらソース(HTML,CSS, JavaScriptのプログラム)という用語がリアルな物語の中で昇華されている。このコンピュータ関連会社のリアルさはシギサワカヤ並である。長時間労働にも関わらず明るい諦観で貫かれているのだから,重苦しいシギサワ作品とは雰囲気が真逆であるが,何か奥底には諦観ベースのブラックユーモアテイストがあるのが共通項として挙げられる。現代テクノロジーの粋を集めたはずのICT世界は今だ泥くさい低賃金労働の下支えなしでは立ち行かない,中世的階層世界を凝縮したような構造を持っており,シギサワ作品にもマイカタ作品にもその怨恨のようなものが作品のエネルギーとして立ち現れている。Amazonクラウドは倉庫を駆け回る多数の契約アルバイトによって稼いだ銭がつぎ込まれているし,Googleの堅牢なデータセンターは常に故障する基盤を交換する要員がいなければクラッシュする運命にある。そしてクラウドが支える検索対象データを担うのは,全世界で下へ下へと押しやられたHTML, CSS, JavaScript, ActionScript, PHP, C#, ASPのプログラマであり,JPEGやPNG形式の煌びやかなバナーや飾りつけを作っては張りつけつつWebページを構築するナカウラのようなデザイナーの汗と涙と低賃金なのである。

 上・中・下の3巻でマイカタのダイナミックな画風は確立し,躍動感と可愛さはそのままにプロマンガ家として一本立ちしたようだ。そして最後には上巻の最初の展開のようなドラマチックな結末と現代ICTの中世的階層世界を描いて結末を迎える。著者によれば単行本化が一向にされないことに業を煮やしての自分から申し出た打ち切りということだが,実は早いうちにICT世界から足を洗って最新技術動向をネタにできなくなったという限界を感じてのことかもしれない。今時,全部Flashで作ったページなんぞ作ってたんじゃスマホやタブレットで見れないページができちゃうだけだしなぁ。

 何にせよ,本書の刊行はワシが目撃した中では本年最大の暴挙であり,そんな大博打を打たせるだけの魅力を称えたマイカタを世に出そう(+ひと儲けしよう)という一迅社のバカな心意気に感動した一大事であった。3冊合わせて4000円近い出費を無駄と思うか安いと思うかは,そんな一迅社の心意気を,マイカタを,そしてマイカタが描いた現代ICTの中世的階層社会を,どう評価するかによって変わる。少なくともワシはそのすべてに対して惜しみない拍手を送りたく,このぷちめれを執筆したのである。

 マイカタと一迅社に幸あれ! 願わくば本書の売り上げと印税で年が越せますように!

[進捗報告] 最終章一応完成

 Hammerstein型積分方程式の解法に衣替えした最終章,一応完成。固有値問題,連立一次方程式のどちらも使ってなおかつ平易(かな?)な問題を対象に,Derivative free解法を使う内容になったので,まぁとりあえずはおさまりがいいと思っている,思いこんでいる,思いこまなきゃやってられないと思っている。

 ふひ~,これで来週一杯かけて手直しして出版社に投げることができる。最終章を書くにあたりつたつら前の章を参照したが,思いのほかreferenceとしての使い勝手がよろしくないので,その辺りの修正がメインかしらん。あとはWindows環境だが,LAPACK 3.6.0のWindows版(ここに出るはず)が出てからにしたいなぁと思いつつ,まぁ3.5.0で困るという内容ではないので一応は使えるんだけど,Reference BLASを使うためのcblas.hとcblas_f77.hがどこにも入ってない。結局,Windows環境ではスタンダードなVisual C++で使おうとするとこれを持ってこないといかん。CBLASが同梱されている3.6.0なら楽なんだろうなと愚考する次第。まぁ後はタイミングの問題かな。

 つーことで1年かかってようやっとここまでこれました。A4サイズで111ページってのはちと少ないかなぁと思いつつこの辺りでやめておかないとA5にした時に200ページ越えちゃうぞと。

 風邪ひいて死にそうなのでまずは寝ます。

[進捗報告] LAPACK 3.6.0 Released and how to install

LAPACK 3.6.0が出たので早速試す。今まで別パッケージだったCBLASが同梱されているので,ソースからコンパイルした素のLAPACK/BLASを使いたい場合は重宝しそう。

 以下インストール方法 with gfortran & gcc or ifort & icc on Linux

1. lapack-3.6.0.tgzをダウンロードして適当なディレクトリに置く
2. 解凍 -> lapack-3.6.0ディレクトリ生成 -> lapack-3.6.0へ移動(以下,カレントディレクトリを./と表記)
3. ./INSTALL/make.inc.gfortran (gfortran & gcc用) or make.inc.ifort (ifort & icc用)を./make.incにコピー
4. cd BLAS/SRC; make でBLASコンパイル -> librefblas.a生成
5. cd ../../; cd SRC; make でLAPACKコンパイル -> liblapack.a生成
6. cd ../; cd TESTING; make でLAPACKテスト -> libtmglib.a生成
7. cd CBLAS; make でCBLASコンパイル -> libcblas.a生成
8. cd ../../; makeLAPACKEコンパイル -> liblapacke.a生成

 ちなみに,5と6は./でmakeでもO.K.

 gfortranの場合,TESTINGのコンパイル時にetime関数がないとうエラーが出る。その時にはmake.incで”TIMER = NONE”を指定しておく。副作用として時間計測はできなくなる。