完璧なまでの曇天曇天。午後には雨粒が降ってきそうだ。梅雨明けはまだ先かな。
静岡県知事選挙,忘れないうちに起き抜け早々に投票へ行く。ワシんちの投票所は近所の小学校の体育館なのだが,玄関口が急坂になっていて運動不足気味なワシにはちょっときつい。まぁこのぐらいの坂を上がれないような有権者は不要というフィルタも・・・考え過ぎか。さて今回の知事選の結果は如何?
昨日は先月下旬にオープンしたてのららぽーと磐田に行ってきた。
遠景を撮るとどうしても茶畑が混入するのは遠州名物ということでお許し頂きたい。
混雑しているかなぁと思ったが,やたらに遠い臨時駐車場に誘導された割に,店内は広大なせいもあってスムーズに移動できる程度の人口密度だった。
しかしまさか静岡にきてまでららぽーととお付き合いすることができるとは思わなかったなぁ。昔,船橋にあったころはワシには縁遠いショッピングセンターだと遠目でザウスを眺めるだけだったが,今回来てみたら単なる普通の規模のジャスコだったので安心。ワシもとうとうジャスコに溶け込める歳になったのだなぁ(意味不明)。掛川にはジャスコはないし,袋井のジャスコはワシの定義によるとジャスコじゃなくて単なるスーパーである。遠州部と浜松東部の客が見込めると踏んで東海地方初の出店となったのだろう。目論見が当たると良いが。
さて,本日もボツボツ過ごします。あ,Twitter,ボソッと一言書き込むには便利です。いつまで続くやら。
William J.Cody, Jr & William Waite, “Software Manual for the Elementary Functions”, Prentice Hall
[ Amazon ] ISBN 0-13-822064-6, \?
ワシの手元にあるものは1992年に御茶ノ水の丸善で購入したもので,当時でも14790円だった。Amazonを検索してみると,古本でも万単位の値が付いているから,結構貴重なものなのかも知れない。もちろん,購入当時は「珍しい本があるもんだ」ぐらいにしか思ってなかった。本書のFirst authorが数値計算ソフトウェアの大御所であるとはこの度の訃報を見るまでは殆ど知らずに過ごしてきたのである。詳細はC.Molerの記事中にあるインタビュー記事を参照されたい。以下,この記事中にある情報はそれを斜め読みして得た知識が殆どである。
オープンソースの源流というのを辿っていくと,これは殆ど誰も言及していないようなのだが,数値計算ソフトウェアの配布という「習慣」に行き着くことが多い。1990年代までは,日本でも数値解析シンポジウムとかでソフトを配布するということが普通に行われていた。その大本を辿っていくと,どうやらこのCodyが行ってきた研究活動に行き着くようなのである。
朝鮮戦争から戻ってきたCodyはオクラホマ大学の数学科で修士号を,ノースウェスタン大学でPh.Dを取得して,原水爆の研究で有名なロス・アラモス研究所で仕事をした後,1991年に引退するまでアルゴンヌの国立研究所で研究者として過ごした。1960年代から,シュレジンガー方程式の計算をするうちに既存の初等関数に問題が多いことを知り,1964年に論文「CDC-3600向け倍精度平方根計算」(“Double Precision Square Root for the CDC-3600″, ACM Vol.7, 1964, pp.715-718)を掲載,ここから初等関数・特殊関数の計算法の研究を本格的に開始することになる。CDCやIBMのマシンを使いつつサポートもする必要があったため,互換性を重視しつつ性能を落とすことがないよう,マシンごとの特性を事前にチェックするサブルーチン”MACHAR” (Machine Characteristicの略?)を作成したりと,地味だが重要な仕事をしてきた。後にEISPACK(行列固有値計算サブルーチン集)の開発も手伝い(というよりコードはかなり書いたみたい),これが連立一次方程式解法ライブラリLINPACKと統合されてLAPACKとなる。で,今もMACHARはBLASに残ってたりする。
Cody自身の仕事として誇れるものは,このMACHARと特殊関数ライブラリSPECFUN,実数関数ライブラリELEFUNT, 複素関数テスト用プログラムCELEFUNTということだそうだ。IEEE754-1985や854の規格制定では議長として場を仕切っているが,W.Kahanの発想を生かしただけと控えめな感想を述べている。
話が横道に逸れてしまったが,SPECFUN, CELEFUNTは論文のページからソースコードが今でも無料でダウンロードできるし,LAPACKは言わずもがな。この源泉は,Codyが計算センターでサポート業務の一環としてプログラムを配布していたことにあるようだ。本人曰く,「税金で造ったものはpublic domainにすべき」というポリシーだそうな。これは本人の性格もさることながら,Abramowitz & Stegunの”Handbook of Mathematical Functions“がそうであるように,アメリカ合衆国の理念に通じるところがあるように思える。国家が造ったものはpublic domainにすべきって考え方,USA発祥・・・なんでしょうか? この辺になるとワシもよく分らないが,どうも本人の意志によるというよりごく当たり前の常識ということなんじゃないかと思える。もちろん,数学理論には特許が降りないためにビジネスとしては成り立たなかったから,という事情も手伝っているとは思うんだけど,どーもソフトウェアは望む人にタダで配るという伝統はこのあたりから始まっているんじゃないのかなーと思えるのだ。山形浩生さんとか八田真之さんあたりが調べてくれないかしらん?
で,本書である。あの気むずかしなKahan先生もテキストとしてご愛用したという本書は,ELEFUNTの解説本という位置づけになっている。初等関数の計算法は様々なものがあるが,本書で述べられているのは最良近似多項式に基づくものが殆どである。最新の研究結果はMullerの本にコンパクトにまとめられているが,そこでomitした近似多項式の係数表はCodyの本とかに譲るとしている。本書では平方根から始まって,log, exp, power, sin/cos/tan, asin/acos/atan/atan2, sinh/cosh/tanhの計算法が章ごとにフローチャート付きで解説されている。最良近似多項式は固定小数点数,浮動小数点数,10進,10進以外の場合と細かく分類されて提示されており,もー細かい細かいノウハウがぎっちり書き込まれていて,とうてい自分で造ろうという気分にはさせてくれない代物である。使用する固定・浮動小数点数の桁数に応じて近似多項式の係数も2~3パターンで提示されていて,全てHorner法を使って最小の計算量で済むよう計算せよと書いてある。・・・お見それしましたとしか言いようがない。和書でも山下真一郎によるものとか浜田穂積によるものもあって,まー,細かい細かい。その細かさの源泉はCodyにあるんだなとよく分ろうというものである。
何でこんなに厳密かつ多項式計算一つにもこだわんなきゃいかんのかというと,プログラムによる計算の正確さと計算速度が初等関数のそれに大きく依存しているからである。角度計算一つとっても逆三角関数が不正確ではどうしようもない。呼び出し回数も多いから高速であることが重要。現在のCPUではハードウェア内部でマイクロコードによって初等関数は計算されるが,Intel CPUですら普通の四則演算より数十倍の計算時間がかかるのが普通である。高速性と精度維持が必須の機能を担っている初等関数の計算とCodyが格闘せざるを得なかったのは,コンピュータ黎明期においては必然だったのかもしれない。本書では関数のチェック方法についても細かく記述があり,これは類書では見あたらない貴重なものである。カシオさんとこのチップはちゃんとこのテストはクリアしているのかしらん? 10進ベースの係数表はホント,貴重ですから揃えておいた方が良いですぜ。
墓石には「Family man」と刻んで欲しい,と言い残して世を去った穏和な研究者に,哀悼の意味を込めてこのぷちめれを東洋の片隅からお送りしたい。
7/2(木) 掛川・雨
朝から雨。そろそろ梅雨末期だと思うんだが,まだ本格的に梅雨前線が北上を始めたわけではないらしい。ジメジメな天候はまだ続きそう。暑いよりは過ごしやすくていいけどね。
MPIRの中核,Bill Hartさんが書いているFAQの下書きから。
Q. MPIRが”Developper Friendly”とはどういう意味ですか?
A. 私たちは,MPIRに関心を持ってくれそうな開発者やユーザに無礼な(rude)振る舞いをすることを許さないという方針を取っています。回答できる質問には全て礼儀正しく回答します。ソフトウェアを開発すべきでないユーザというのも存在しますが,そういう人たちが最終的には協力的なファンになってくれたり,あなたにとって一番価値のある貢献をしてくれたりすることもよくあることです。人々がMPIRに貢献をしやすくすること,これを最優先事項としています。
「タコを大事にしよう」というおごちゃんの標語を思い出してしまった。同じことを穏当に言っているだけである。ま,”rude”だったのを改めようってことで。
Q. GMPのWebサイトにはMPIRを”怒りの分岐ソフト(angry fork)”としており,”アンチGMP的対抗心(anti-GMP sentiments)”を持った”不満を抱えた開発者(frustrated developers)”による分派だと書いてありますが,どういうことでしょうか?
A. 彼らに聞いて下さい。 大体,我々がアンチGMPだったら,MPIRの土台のコードにGMPを使うなんてねぇ・・・あり得ないでしょ?
まぁねぇ・・・。徹底して理性的に書くって方が良かったかも。
では行ってきます。
7/1(水) 掛川・曇
九州の方は土砂降りのようだが,東海地方は曇り空どまり。太平洋高気圧の勢力も徐々に大きくなっているようだが,まだ梅雨前線を本州縦断するところまで押し上げるまでには至らず。今年の夏は冷夏かな? だと嬉しいが,景気のことを考えると暑いに越したことはないしなぁ。
T君の卒研,結構良い線行ってるので9月に喋ってみては?とそそのかすも,本人は現状に不満のようである。まぁ,確かにPentium IVマシンでは負荷が集中してしまうとDead lock状態になるようだから,これでベンチマークの結果ですとか言っても説得力には欠く。ワシはそこんとこも含めて良い結果だと思っているんだが。エエ加減な教員と完璧主義の学生さんとのマッチングというのも面白いなぁと無責任に楽しんでる今日この頃である。
PHP5とActionScript3とScilabを毎週のようにいじくっていると頭が混乱してくる。色々勉強できるのは楽しいが,最近の言語は皆似たようなものになっていてつまらん所もある。一番触ってて面白いのがScilabなんだが,機能面では大分MatlabやMathematicaに劣るような感じ。せめて,日本語フォルダのサポートぐらいできんもんか。おフランスなお国では2バイト文字は不要ってことかと文句も言いたくなるが,立場上(そのうち分ります)余り腐すわけにもいかず,何とかだまくらかして非斉次線型ODEには何とか対応したけどな。7月中にはGSLプログラムも完成させて,倍精度計算でのベンチマークぐらいはやらにゃぁ。いや,でもLAPACKとQUADPACKの組み合わせの方が良いのか。こんだけ定評ある歴史の長いソフトウェアが溢れていると,その選択の指針ぐらいは欲しいところである。
そーいや,Mathworks日本法人ができた模様。MuPADも吸収したんだし,ちゃんとMathematicaに互して競争して欲しいものである。
さて,昨年のマンションに続いて,今年も一桁違うものの,でかい買い物をすることになりそうだ。今月末には納車(あっ言っちゃった)っつーことだが,スムーズに買えるのかなぁ。さすがに15年目のパル子だけあって,とうとうエアコンのファンが狂ってきたのである。これからcrazy hotな夏が来るというのに。それで慌ててハイブリッド車を出さずに次年度以降EVをアメリカで販売するとゴーンさんが宣言した国産メーカーに見積もりを頼んだという次第。補助金だの減税だの販売値引きだので思ってた以上に安く済みそう。民主党が政権を取って補正予算を凍結する前に頂くものは頂こうというさもしい根性な私なのである。さてどーなりますやら。
本日はあぶく銭にて福満しげゆきの新刊を買った。ブログを持ってたら何か書けとあとがきにネチネチと愚痴っておられたが,まぁ講談社の方では感想を書いて「福満しげゆき 妻」とググると結構上位に出てますので,それでご満足していただけませんでしょうか?>福満先生
最近益々ふくよかになられた奥様と今日も仲むつまじいようで,小生,大変に妬ましく思っております。・・・ダメか?
ボチボチやって寝ます。あーもー,今年も半分過ぎちゃった~。もういくつ寝るとお正月カウントダウンなのである。寝ます。
6/28(日) 掛川・雨
梅雨らしい天候。昨日は今年初めてのクーラー全開日となったほどの気温だったが,今日はさほどでもない。リビングのクーラーを流すだけでワシんち全体(つーても68m^2しかないけど)が快適な気温となる。年と共に冷房に対する抵抗力がなくなってきているようで,特に足下の冷えが気になるようになってきた。だもんで,あんまし強力な冷房が効いている場所には居たくないし,家でも厚いほど長ズボンが必須という矛盾した行動を取らねばならぬ。つーまーり何が言いたいかというと,年は取りたくないということなんだな。
久々のぷちめれ祭り,ミーちゃん28歳で打ち止めにしておこうと思ってたらマイケルが死んじゃったので,思い出しついでによしながふみのBLマンガにて打ち止めっつーことに相成りました。あとはポツポツと。しかしワシ,こんなにマンガばっかり読んでて良いのか?
Firefoxが3.0.1xになってからか,やたらに落ちるは遅くなるわでどうしようもなくなってきたので,困った時のGoogle頼みっつーことでChromeを突っ込んでみた。
むぅ・・・確かに高速だわ。これでWeb engineがApple kitでなければもっと良いのに。まぁ,高速にするために軽いエンジンを選んだ(&カスタマイズした?)んだろうけど。暫くこれで頑張ってみようか。
UNIXならぬWebアプリケーション実習っつーことで,先週からPHPプログラミングに突入。つーても適当なつまみ食い知識でプログラミングしているから,時々(いつも?)躓いてしまう。
echo $a . ” + ” . $b . ” = ” . $a + $b . “\n”;
引っかかったのはこれ。$a, $bには数値データを入れているんだが,これだと数値が一個しか出力されない。最初は$a + $bの結果だけ出ているのかと思ってたらそれとも違う。これは多分,文字列演算子+として解釈されちゃってるんじゃないのかな-と思ってたら案の定。
http://www.php.net/manual/ja/language.operators.string.php
これの一番最後の説明で納得。
echo $a . ” + ” . $b . ” = ” . $a + $b . “\n”;
では$a, $b, $a + $bそれぞれ文字列として最初に解釈されてしまうので,数値データの加法になっていないのだ。だから
echo ($a) . ” + ” . ($b) . ” = ” . ($a + $b) . “\n”;
と括弧書きにしておくと,括弧内の解釈がなされて数値データとして処理がされる(和も)ので,期待したとおり
3 + 5 = 8
と出力される。うーん・・・型指定がないのがいいのかどうか,ちょっと微妙。めんどくさいよね。そもそもこの手の出力をするのにechoを使うなという話もあるけど,この後SQL文を繋げて生成してqueryするっていう実習もするので,その練習も兼ねてこれ使ってたりするからねぇ。まあ今週チャンとフォローしておこうっと。すまんこってす>受講生の方々
今日はやり残した家事をやって静岡空港見学してから明日の予習をして寝ます。あ,遅ればせながらTwitter始めました。・・・どーせ続かんって。