fortran66のブログ

fortran について書きます。

【寝言】昔の現代文学w

ボルヘス「七つの夜」イタロ・カルヴィーノ「アメリカ講義」

暇つぶしに(斜めに)読みました。

七つの夜 (岩波文庫)

七つの夜 (岩波文庫)

カルヴィーノ アメリカ講義――新たな千年紀のための六つのメモ (岩波文庫)

カルヴィーノ アメリカ講義――新たな千年紀のための六つのメモ (岩波文庫)

ボルヘスの方は、「詩という仕事について」にすれば、両方ともハーバード大の講義になって対称性がいいだろ、と思われますが、たまたま本屋に無かったのでお許しを。

詩という仕事について (岩波文庫)

詩という仕事について (岩波文庫)

七つの夜は1977年の講演集、アメリカ講義の方は1985年の講義録で、70年代後半から80年代にかけての現代文学のおばあちゃんちのタンスのショウノウの香り漂う本です。

内容はオーバーラップしつつ大量に古典を参照し、時代精神を反映してか本や文字記述そのものに対して異様なまでに価値や信頼を置いていて、ネット全盛の今見ると違和感を感じます。

支那文学史での、漢代に辞賦による多弁によって世界を文字で描きつくそうという試みが挫折して、空疎な六朝をへて、唐代に絶句律詩によるスケッチ的部分描写による世界記述にたどり着いた、という解説を信じれば漢代の如き有様です。

もっとも戦前の支那紹介をみると、支那人は文字の書かれたものをありがたがって、文盲の支那土民はたばこの包み紙でも、文字が書いてあると拾って大事にしている、とあるので、かなり遅くまで文字崇拝を続けていたのかもしれません。天安門広場の壁新聞くらいまでw

しかしこうしてみると、1990年代のCD-ROMでマルチメディアの時代がやって来る!というのもあながち嘘ではなかったのかもしれません。

Fortran入れ子の段数

ボルヘスは「千夜一夜」について述べていますが、「千夜一夜」は登場人物が話す物語の中の登場人物が物語を話し出して、その中の登場人物がまた物語を話し始めるという、入れ子の構造をしていています。このわけのわからない迷宮感がとても魅力的で、色々な模倣を生み出しましたが、分かりにくいことこの上ないです。

Fortran は、Module や 副プログラムの入れ子の段数に厳しい制限があって、ほぼ単段に近いのですが、これは正しい選択だと思います。

すなわち Module の中に Subroutine/Function の副プログラム、副プログラムの中に機能に制約のある内部副プログラムが1段。(Modula-2 などでは、Module の中に Module が存在可能。)

プログラムを書く段には、呼び出し関係から入れ子構造を思い浮かべやすくて、その通りに作りたいと思うものですが、他人の書いた入れ子の深いプログラムは、すぐ千夜一夜式に分かりにくいものに見えます。書式上のインデントも、長いプログラムではそれほど助けにならない場合が多いと思います。

地下鉄のザジレーモン・クノーのシュルレアリズム詩に、インデントがつけてある千夜一夜式の入れ子話がありましたが、インデントがついていても、わけのわからなさは全く変わらなかった覚えがあります。

地下鉄のザジ (中公文庫)

地下鉄のザジ (中公文庫)

ルクレチウスとラプラスの魔

カルヴィーノの講義の章立てはなかなかよくて、

  1. 軽さ
  2. 速さ
  3. 正確さ
  4. 視覚性
  5. 多様性

となっています。

その第一章では、オウィディウスとルクレーティウスとが、道家思想の物化的なメタモルフォーゼと原子論的離散集合を対比させて出てきます。

オウィディウス 変身物語〈上〉 (岩波文庫)

オウィディウス 変身物語〈上〉 (岩波文庫)

物の本質について (岩波文庫 青 605-1)

物の本質について (岩波文庫 青 605-1)

ルクレーティウスはデモクリトスエピクロスからの原子論を受け継いでいますが、原子論者はデモクリトスの頃に、すでに後にラプラスの魔として知られる初期値による決定論の難点を指摘されていました。特にそのことが自由意思の存在を否定するので、原子論を取りながらよりよく生きる意志や努力を説くことの矛盾を論難されていました。そこで、エピクロスが原子は理由もなく時々偶然に進路を変えるんだと主張しはじめたと言われています。それはルクレ―ティウスにも表れて、読むものを困惑させてきました。

この理由なき進路変更の主張は、同時代人やその後の人々の失笑を買いましたが、その後ラプラスの魔を回避する量子力学の確率解釈につながっているので馬鹿に出来ません。西洋人の哲学の伝燈を垣間見るとともに、人間の発想の貧困さも感じさせます。

Hellenistic Philosophy: Stoics, Epicureans, Sceptics

Hellenistic Philosophy: Stoics, Epicureans, Sceptics

話の始まりと終わり

カルヴィーノのアメリカ講義には補遺の章があって、話のはじめ方と終わり方についてグズグズ述べています。

アニメも90年代までは、起承転結モデルに従って一話と最終話の前後二話くらいを起・転・結に配して、残りは適当にキャラを立てる感じでやっていましたが、最近は日常系萌4コマフォーマットの完成とともに、転結抜きの人生の一局面の一瞬のスケッチ的な話法が完成したように思います。

今や視聴者側もよく教育されて、起承転結構造が無くても全然おかしいと思わないし不満も感じないようになったので、面白いものだと思います。ココロ図書館の頃に、余りにも話に構造が無く何も起こらないのでこれは死後の世界の無間地獄を描いているという解釈が出たの比して、時代を画した気がします。

ココロ図書館(1) [DVD]

ココロ図書館(1) [DVD]


昔「むかつく!」という卑語が、丁度サルトルの「嘔吐」と同じ意味で使われ出して、実存主義がここまで大衆化したかwと言われた頃からさらに時が流れて、脱構築ポストモダンがアニメにおいて上手に完成したと言えましょうww

嘔吐 新訳

嘔吐 新訳

pointer 型の type-bound procedure なら sequence 並びな派生型でも pass 属性で呼び出せる

sequence 並びの派生型データ

昨日、procedure pointer を派生型の要素として持つ場合、その procedure が pass 属性で OO 風に呼び出せることを書きました。
fortran66.hatenablog.com

本来の contains で type-bound procedure を静的に与える場合、pass される第一引数の型が、extension 可能な class 属性を強制されます。したがって、データ並びが sequence 並びの時(padding や並べ替えを許さず宣言のママの並びを強制する )や bind(c) 型の場合(C 言語との互換性を持った padding は許す並び)は、それが許されていないので type-bound な procedure を与えられません。

ところが、procedure pointer で type-bound な procedure を与える場合は、pass される第一引数を type 属性で呼べるので、この制限が外れます。

以下実行例

ソース・プログラム

    module m_mod
      implicit none
      type :: t_type
        sequence 
        integer :: i, j
        procedure(p_f), pointer :: fun => f
     ! contains
     !   procedure :: fun => f ! syntax error
      end type t_type    
      abstract interface
        integer function p_f(this)
          import
          type(t_type), intent(in) :: this
        end function p_f
      end interface
    contains
      integer function f(this)
        type(t_type), intent(in) :: this
        f = this%i + this%j
      end function f
    end module m_mod
    
    program test
      use m_mod
      implicit none
      type (t_type) :: a
      !a = t_type(1, 2, f)
      a%i = 1
      a%j = 2
      print *, a%fun()
    end program test

実行例

           3
続行するには何かキーを押してください . . .

孔子と顔一族

西洋人の嗤うべき妄想

浮動小数点数を実数だと思うと糞ですが、西洋人風にはプラトン的実数のイデアを、浮動小数点数が醜く写した実体なので、しょうがないのでしょうw アリストテレスの形相と質量も、変数型とインスタンスみたいなのもだから、西洋人が好きそうだなと思いつつ、実にしょうもないなと。

西洋人はやたらとギリシア人をありがたがって、自分らをその衣鉢を継ぐものと見なして調子に乗っていますが、ギリシア人はエジプト・メソポタミア文明から遅れること数千年、すでに両文明が衰える頃にチャッカリその結果をいただいたろうと腐したくなります。(アルカイック彫像の立像のポーズはエジプト彫像そっくりの劣化版だし~。あのアホ面は好きですが。)

大体、自然哲学がペルシア領内の小アジアで発生し、ピタゴラスフェニキア人優勢のシチリア島にいてエジプト・メソポタミアで学んで仏教的な輪廻転生説にふけっており、ギリシア本国は相対的に未開で7賢人の初めはフェニキア人との合いの子でフェニキアの新知識を持ってきたことからして答えは明々白々。

プラトンイデアも、ソクラテス死刑の前後に、処罰を嫌がって逃げ回っていた頃にシチリアピタゴラス教徒から金で買った非ギリシア的思想からの産物。そもそもソクラテスはひねくれた詭弁質問ばかり出したが、答えは一つも出さず、弟子たちも一人も答えを出せず、プラトンが旅先で金で買って解決というお粗末さw

プラトンは、ソクラテス死刑の時には「プラトンは病気だったと思います」(パイドン)と、ちゃっかり国外に逃亡中だったし、己が死ぬ時は縁故主義によってアカデメイアを凡庸な甥に継がせて、自分が継げると思っていたアリストテレスを憤激させて、同僚共々離職させています。結論:西洋アカデミズムの根源は剽窃縁故主義

孔子の顔一族えこひいき

ひるがえって、支那孔子はといえば、凡庸な自分の息子には冷たく、晩年に実の息子に先立たれてもコメント一つ出さないのに、翌年顔回が死んだときは、礼教に反してまで哭して泣きわめいています。そのことを弟子に突っ込まれると「いつ哭するの!今でしょ!」と林先生ばりに逆切れを見せる非人間ぶり。息子に離婚した元妻の顔がダブったのでしょうかw 
 
でも少なくとも学園相続に関しては、縁故主義を排していました。そして弟子の中で年長の有若が、年功序列と顔が孔子に似てるという理由で学園を継いでます。(すぐ学生運動で失脚しますが)

ここまでがまくら

では孔子縁故主義でなかったかと言うとそうではない気がします。孔子は、顔一族を依怙贔屓しているように思われます。

奇妙なことに、女の名前がほとんど残っていない支那古典の中で、孔子の母親は大したエピソードもないのに顔徴在とフルネームで出てきます。対して孟母三遷や孟母断機の教えの有名エピソード主役の孟子の母は、仇氏の出としか出てきません(私がそれしか知らないだけですがw)。取りあえず、孔子は顔一族の一員だと分かります。

孔子の可愛がった弟子は、顔回子路ですが、顔回は名の通り顔姓、子路の方は奥さんが顔姓と分かっています。それは、孔子が衛の国に逃げた時に、君主霊公のホモフレンド弥子瑕が登場して、弥子瑕の奥さんが顔姓で、子路の妻の姉妹と出てくるからです。結局、孔子の弟子の一番二番の両方が顔一族関係者というのはきな臭い。

論語は、孔子の死後だいぶたってから、派閥に分裂した弟子グループが大同団結して、それぞれ派閥ごとの伝聞を集積編纂したものとされています。読んでいくと、やたらと子路が糞味噌にけなされている篇もあれば、立派な弟子として書かれている篇もあり、評価が一定しません。顔回も生活力のない貧乏人扱いの時があります。アリストテレスばりに、孔子縁故主義・顔氏贔屓を嫌ってくそみそに言っていた派閥があるのかもしれません。

漢代の讖緯説による孔子顔回エピソードには、孔子顔回が千里眼を発揮して超能力を使うが、顔回は力及ばず急速に老化するとか、漫画チックなものが大量にあったようです。顔氏の派閥は、斉国方面のオカルト大好き派閥だったのかもしれません。

ところで韓非子の弥子瑕と霊公のラブラブエピソードには、弥子瑕が食いかけの桃を霊公に食わせるとか、専用馬車を勝手に乗り回すとか、おかま特有の人間距離感の異常さエピソードが出てきて胸糞が悪くなりますが。老けてきて霊公の愛が終わるとともに、思い出すに「まじキモッ!やっぱ厳罰に処す!」となってスカッとしますw LGBTの意識の高い皆さんは、他人の食いかけの桃をペロペロしてください。

【メモ帳】type 要素の procedure pointer は pass 属性

type bound procedure は pointer で動的付け替え可

Wirh の OO 言語のように、type 内に procedure pointer を置いたら、実行時に動的に換えられないものかとふと思って試してみました。結果、できるし呼び出しはデフォルトで pass 属性なので contains させて静的に結び付けた場合と変わりなく使えました。

改めて MFE(Modern Fortran Explained)を紐解いて見ますと、文脈が違うものの Figure 14.2 の例題にそのものの例があってギャフン死。

とりあえず contains をつけずに、普通の変数などと同様に procedure pointer を並べておけば、呼び出しは contains で括りつけた普通の type bound procedure と同じく pass 属性となって第一引数が当該派生型になるようです。

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

  • 作者: Michael Metcalf,John Reid,Malcolm Cohen
  • 出版社/メーカー: Oxford Univ Pr on Demand
  • 発売日: 2011/05/19
  • メディア: ハードカバー
  • クリック: 2回
  • この商品を含むブログを見る
Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

以下に実行例

ソースプログラム

    module m_mod1
      implicit none
      type :: t_test
        real :: x
        procedure(func), pass,pointer :: proc => null()
      end type t_test  
      abstract interface 
        pure real function func(this)
          import
          class(t_test), intent(in) :: this
        end function func  
      end interface  
    end module m_mod1  
      
    module m_mod2
      use m_mod1
      implicit none
      private 
      public :: f, g
    contains  
      pure real function f(this)
        class(t_test), intent(in) :: this
        f = sin(this%x)
      end function f
      
      pure real function g(this)
        class(t_test), intent(in) :: this
        g = cos(this%x)
      end function g
    end module m_mod2
    
    program Console9
      use m_mod1
      use m_mod2
      implicit none
      type (t_test) :: a, b
      real, parameter :: pi = 4 * atan(1.0)
      a%proc => f
      b%proc => g
      a%x = pi
      b%x = pi
      print *, 2 * a%proc() * b%proc() ! 2sin(x)cos(x)
      a%x = 2 * a%x
      print *,     a%proc()            !  sin(2x)
    end program Console9

実行結果

  1.7484555E-07
  1.7484555E-07
続行するには何かキーを押してください . . .

浮動小数点数フォーマット界の乱

浮動小数点数フォーマット

最近の AI ブームに伴って従来は必要とされなかった半精度実数フォーマットが登場したり、あるいは FPGA の普及で自分なりの実数フォーマットを作ろうという動きがでています。これからますます浮動小数点数界が騒がしくなると思われます。

以前、並列計算のグスタフソンの法則で有名なグスタフソンが新しい浮動小数点数フォーマットを提案し、IEEE754 のカーンが批判しているということを書きました。
fortran66.hatenablog.com

ここにきて、第三の人物が乱入してきた模様です。
ひと月ばかり前に incide HPC の記事で、浮動小数点数の問題を解決したという見出しが出たので、またグスタフソンかと思ったら別人のアラン・ヨルゲンセンAlan Jorgensen)氏が何か特許を取ったとという記事でした。しかし図はグスタフソンのパクリっぽい見たことあるようなもので、どういうことか?と思う記事でした。早速コメント欄にグスタフソン本人が登場して腐していました。

グスタフソンは、自分は特許を取らないからオープンソースで自由に使ってくれと言っていましたが、ちゃっかり特許を取られてしまっているように見えました。
insidehpc.com

その後、すっかり忘れていましたが、HPCwire 日本語版に補足付きの記事の翻訳が出ておりました。
www.hpcwire.jpwww.hpcwire.com

いつのまにか元々の記事のコメント欄も伸びていて、ヨルゲンセンも登場して、自説を述べたサイトのリンクを張っておりました。
BFP

論駁ページは、パスカルの引用で始まり、カントの引用で終わる厄介感でみなぎっています。

ヨルゲンセン先生は、ネバダ大学ラスベガス校で教えているとのことで、モンテカルロ法で学生もウキウキかと思いきや、鬼仏表サイトによると、先生の評価は甚だ芳しくなく、その理由の一つが、教えてるコンピュータ言語がTA諸君も誰一人知らない古臭い言語 Fortran95 であるためのようです。大草原不可避。
Alan Jorgensen at University of Nevada Las Vegas - RateMyProfessors.com

The End of Error: Unum Computing (Chapman & Hall/CRC Computational Science)

The End of Error: Unum Computing (Chapman & Hall/CRC Computational Science)

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

【乞食速報】Humble Bundle で O'Reilly の関数型プログラミング本が安い!

関数型言語本電子版

Humble Bundle で O'Reilly から出ている関数型言語の型落ち本?の電子版が安く提供されています。意識の高い乞食の皆さん急げ!

基本的にチャリティー目的なので、支払額が自由に選べるようになっていて油断すると沢山払わされます。意識の高い皆さんは勘定をはずんで、乞食の皆さんはギリギリ料金で買いましょう。支払額の分配先で O'Reilly の取り分をゼロにもできるので、過去に糞本を高い値段で買わされたという怨念を和らげることも可能かと存じます。

元がゲーム販売サイトなので、認証やダウンロードに癖があって良く迷います。

f:id:fortran66:20180213214559p:plain
www.humblebundle.com

関数型言語人気

最新動向によると、関数型言語人気はズルズル下降気味の模様です。母数が増えているためだと考察されていますが、個人的には多分、最近の従来型言語が関数型言語のいいところをつまみ食いして取り入れているため、かませ犬としての役目を終えたためではないかと思われます。

f:id:fortran66:20180213214604p:plain
出典:Ranking Programming Languages by GitHub Users

【メモ帳】インテルに感謝!八百屋に感謝!

一松 信 , 戸川 隼人 編「数値計算における誤差」

数値計算における誤差

数値計算における誤差

p.23 脚注
*1「積み残し」という言葉は、戸川先生の言葉、文献 [8], p25参照
(戸川隼人:計算機のための誤差解析の基礎、サイエンス社 1974)
*2「情報落ち」は、文献 [9] から使われ始めた
(永坂秀子:数値計算中の情報喪失について、京都大学数理解析研究所、講究録 153、p.129-151, 1972.)

p.27 宇野利雄「誤差のキャンセル」

 ほかにここでニュートン反復法につき、各根ごとに色をつけ、複素平面上どの点から出立すればどの根に収束するかを示すような区分の色塗りをするという作業の提案をする。これはやろうとしながら怠ってしまったもので、この実例をつくると、直接それが役立つかどうかは別として、反復法処理に視野広い基礎見解を与えてくれる効果はあるだろうと思っている。

フラクタル構造へ行けた?

Intel Free Software Tools

去年の11月頃に intelLinux 版をおねだりしたのですが、何か月も様々な部署をたらいまわしにされたので、遠回しのお断りなのかと思っておりました。忘れた頃にライセンスが送られてきました。

しじみ70個分のサンキューをインテルに!

Qualify for Free Software | Intel® Software