Island Life

2007/06/16

撮影

リゾート・ヴィラを紹介するビデオの撮影。話が来たときは、 マウイとカウアイのリゾートだっていうから「もしや現地ロケ?」と ちょっと期待したんだけどそこまで予算は無いらしく、普通にスタジオで グリーンバックの撮影だった。

それでも、時々こうして人前で何かするのは良い。普段一人でモニタに向かう 仕事だと停滞しがちなエネルギーがぐっと上昇する。

Tag: 芝居

2007/06/05

浮動小数点数

もっと議論になるかと思ったけどあんまり反応が無いのかな。

浮動小数の世界

IEEE 754の64ビット倍精度浮動小数(いわゆるdouble)で

  • 正確に表現できる最大の整数はいくつか
  • 正確に表現できない最小の正整数はいくつか

まず素直な答え。正規化された正の倍精度浮動小数点数の値vは、 hidden bitを含めた仮数部の値をm、指数部の値をeとすると、

 v = m * 2^(e-1023-52)

但しm, eはいずれも整数で、以下の範囲を取る。

  • 2^52 ≦ m < 2^53
  • 1 ≦ e ≦ 2046

このことから、

  • eが1023+52=1075の場合、vは2^52 ≦ v < 2^53の範囲の値を1.0刻みで表現できる。
  • eが1074になれば、vは2^51≦ v < 2^52の範囲の値を0.5刻みで表現できる。
  • eが1073になれば、vは2^50≦ v < 2^51の範囲の値を0.25刻みで… 以下略。

一方、

  • eが1076になれば、vは2^53≦ v < 2^54の範囲の値を2.0刻みで表現できる。
  • eが1077になれば、vは2^54≦ v < 2^55の範囲の値を4.0刻みで以下略。

eが1075を越えるとvは常に整数になることに注意。これから、

  • 正確に表現出来る最大の整数は、e = 2046、m = 2^53-1の場合
    gosh> (* (- (expt 2 53) 1) (expt 2 (- 2046 1075)))
    179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368
    
  • 正確に表現出来ない最小の正整数は、vが2刻みになった直後の、刻みの目から 落ちる数。すなわち2^53+1。
    gosh> (+ (expt 2 53) 1)
    9007199254740993
    

…なのだけれど、特に最大の整数については違和感を覚える人も多いのではないか。 53bitということは10進数で16桁前後。有効数字がそれだけなのにいきなり300桁以上の 整数をぽんと出されても、その下の方の桁に意味はあるの? みたいな。

これは、浮動小数点数の運用に関わっている。定義上は、それぞれの浮動小数点数は 上式で定義される「正確な」値vを持つのだけれど、運用上、浮動小数点数は vを中心とする、ある程度幅を持った曖昧な値を表現するものとして扱われることが多い。

(そのため、浮動小数点数演算=誤差を含んだ不正確な演算、整数演算=正確な演算、 みたいな先入観を持たれることも多いが、溢れたビットを捨てちゃうという点では C言語のint演算とdouble演算はどっちも不正確だし、ビット溢れしない範囲の演算を している限りにおいてはどっちも正確。Schemeでは、正確な数値かどうかというのは 数値の表現法と直交する属性として定義されている (cf. Scheme:非正確な整数?))

さて、そういう非正確な数値の表現として浮動小数点数を見た場合、仮数部m、 指数部eの浮動小数点数は、次のような幅を持った値vを表現していることになる。

 (m-1/2) * 2^(e-1023-52) ≦ v ≦ (m+1/2) * 2^(e-1023-52)   ; mが偶数
 (m-1/2) * 2^(e-1023-52) < v < (m+1/2) * 2^(e-1023-52)   ; mが奇数

但しこれはIEEE754のデフォルトの丸め規則 (中間の値は偶数側に丸める) の場合。 また、mが2^52の場合は幅が切り替わる境界なのでちょっとだけ違ってくる。

 (m-1/4) * 2^(e-1023-52) ≦ v ≦ (m+1/2) * 2^(e-1023-52)   ; m == 2^52の場合

この見方を取った場合、そもそも「正確に表現できる整数」なんてあるのかって 話になるんだけれども、整数になることがわかっている操作 (例えば小数点や指数 表現を含まない数字を浮動小数点数として読み込んだ場合) の結果ならば、 上記の範囲内に含まれる整数がただひとつであれば、その整数値を以って 浮動小数点数が表現している整数と考えても良いだろう。つまり、"13" を 浮動小数点数として読み込んだ結果13.0は、やっぱり整数13だよね、と考えるわけ。

この立場を取ると、正確に表現出来ない最小の正整数は2^53になる。 なぜなら、2^53+1 を読み込ませた時もデフォルトの丸め規則によって 2^53と同じ表現になってしまうため、2^53の浮動小数点数表現を得ただけでは どちらの整数値か区別できないためだ。

gosh> (exact->inexact 9007199254740993)
9.007199254740992e15
gosh> (exact->inexact 9007199254740992)
9.007199254740992e15
gosh> (eqv? (exact->inexact 9007199254740993) (exact->inexact 9007199254740992))
#t

(「幅のある数」と「整数」という条件から考えた時、 9.007199254740992e15 は整数「9007199254740992」または「9007199254740993」を 表現している、と解釈できるため)

正確に表現出来る最大の整数は? 当初は2^53-1だと思ってたんだが、 丸め規則を考慮すると、例えば2^53+2は該当する整数値がひとつしかない (2^53+1は2^53へ、2^53+3は2^53+4へと丸められるため)。 このことから、こちらの答は 2^54-2となる。

gosh> (- (expt 2 54) 1)
18014398509481983
gosh> (exact->inexact (- (expt 2 54) 1))
1.8014398509481984e16
gosh> (- (expt 2 54) 2)
18014398509481982
gosh> (exact->inexact (- (expt 2 54) 2))
1.8014398509481982e16
gosh> (- (expt 2 54) 3)
18014398509481981
gosh> (exact->inexact (- (expt 2 54) 3))
1.801439850948198e16

Tag: Programming

2007/06/01

倒置

英語の倒置法の話。 仮定の話を出すif節の代わりに動詞と主語を倒置させる ( Were it not ... <= If it were not ...) とか、 副詞句を前に出した時に動詞と主語を倒置 させる (Within these walls are now confined two mighty monarchies. <= Two mighty monarchies are now confined within these walls.) というのは普通に文章を読んでいて日常的に目にするし、 その変化がもたらすリズムを感じることは出来るようになった。 日本語でも倒置というのは普通は後ろにある動詞が先に来るわけで、 もたらす効果 (もっと後で来るだろうと思ってた動詞がひょっと前に顔を出す 意外性) に似たところがある。

けれど、動詞が後ろに来るケースというのがあって、これがどうも掴みにくい。

  • And let us, ciphers to this great accompt / on your imaginary forces work. <= let us work on your imaginary forces
  • ... who [I] your humble patience pray / gently to hear, kindly to judge, our play. <= who [I] pray your humble patience, gently to hear, kindly to judge, our play

読むにしても話すにしても、英語モードの場合、動詞を中心に考えることが 多いんだけれど、その肝心の動詞がなかなか出てこないから、掴みどころが 無いというか、どこを支点にバランスを取ったらいいのかわからないというか。 なんかバランス悪いんだけど、そのバランスの悪さを「崩し」として受け止めれば いいんだろうか。

Tag: 英語

2007/05/30

土曜日にかみさんがかかってる指圧の先生に揉んでもらったら、 蓄積していた疲労が噴出して、日曜と月曜はほとんど寝て過ごした。 疲れがたまってるなとは思ってたけどこれほどとは思わなんだ。油断大敵。

こないだやったBank of HawaiiのCM (TVスポットとprint) のキャンペーンが開始されたらしい。 行きつけのコーヒー屋の店員が私の顔を見るなり銀行のパンフレットや広告が出てる新聞やらを取り出してきた。
「これあなたでしょう? うちのお客さんにセレブリティが居るなんて!」
いや…CM出ただけでセレブリティにはならないと思います…non speakingだし…

ちなみにCMは報酬という面では一番良いんだけど、 一度ある商品のCMに出ると、その有効期間(1年くらい)は競合他社のCMには 出られない(product conflict)のが普通なので、そうそう仕事にありつけない。

Tag: 芝居

2007/05/26

理系文系

Ryoの開発日記: 無駄に喧嘩を売る

あの、能力という観点で、文系の人間が理系の人間より優れているものって何かあるんですか?

釣りっぽいけど、この手の話は議論を見ててどうも噛み合わないものがあるなあと 感じていた。理系の晩年 文理格差の拡大 なんかもそう。いやもちろん、「文系」「理系」という分類自体がナンセンスなんだけど、 日本では現実としてそういう分類があるわけだし、 そういう切り口で統計を取ったら格差もあるのだろうから、 全く無益な議論というわけでもないんだろうと。

で、ふと、噛み合わない理由らしきものを思いついた。 「理系」に進む人にも、「理系的なるものが得意だから|好きだから」進む人と、 「文系的なるものが不得意だから」進む人がいる。「文系」の方もまた然り。 もちろん両方の理由を持っている人もいるだろうが、 「理系的なるものが得意|好き」というのと「文系的なるものが不得意|嫌い」というのは 実はかなり独立した現象なのではなかろうか。二分法で考えてしまうから 相対的にどちらかが得意|好きであると判断してしまってるだけで。

で、「文系」vs「理系」の議論が噛み合わないのは、 「理系的なるものが好きで理系やってる人」vs「理系的なるものが嫌いで文系やってる人」 を比べてる人と、 「文系的なるものが好きで文系やってる人」vs「文系的なるものが嫌いで理系やってる人」 を比べてる人がいるからなんではないか。 そりゃ前者の議論をしてる人は「理系の方が出来て当然」になるし、 後者の議論をしてる人は「文系の方が出来て当然」になる。

上のリンク先のフィクショナルな文理格差の話は最初に読んだ時に猛烈に違和感が あったんだけど、こう考えるとすっきりする。 だってあの話って「文系的なるもの(あの話の中では人付き合いというのは こちらに分類されてるらしい)が嫌いで理系に進んだ」人の話でしょう。 大学生活や仕事の記述を見るに「理系的なるものが得意」だとは思えないし。 「文系」と「理系」で統計的に所得格差が生じているのは、「理系」の待遇が とりたてて悪いわけじゃなくて、「所得を得やすい能力」のうち 「文系的なるもの」に分類されるものの方がやや多いだけかもしれない。 だとすればその格差は線引きから生じたアーティファクトに過ぎないのかもしれない。

問題は、「文系」「理系」という線引きが個々人の能力や興味とは無関係に なされているにもかかわらず、システムがそうなっているせいで 思考の枠が「文系」vs「理系」に規定されてしまうことだと思う。 教わる方も教える方も。例えば数学に興味を持った生徒が 数学者の伝記をがんがん読んで数学の歴史にものすごく詳しくなったとする。 けれど数学史だけに詳しくても歴史で点数は取れない。 数学は出来るから「理系」に分類される。 そして数学史から歴史全体に興味を広げてゆくチャンスを失う。 そんなことがあったら不幸ではないか。
(追記2007/05/27 15:46:36 PDT: このような誤った認識の典型が、上の「文理格差」の 話で出てくる、「人付き合いが苦手だから理系」という理由づけだ。 人付き合いの上手さと「文系」/「理系」とは全く関係がない (数学者の変人ぶりなどがおもしろおかしく語られたりするが、 どんな分野でも一番先っぽにいる人には相当変人が多いのだ)。 にもかかわらずそのような理由づけが受け入れられてしまうのは、 「文系」「理系」に関するステロタイプがあって、またその ステロタイプに自分を適応させてしまう人々がある程度居るという ことだろう。血液型性格診断と同レベルの話だと思う。)

Tag: Career

More entries ...