fortran66のブログ

fortran について書きます。

Fortran ニュース および【寝言】

The new features of Fortran 2018

だいぶ前ですが、John Reid の 「The new features of Fortran 2018」の最新版が出ています。
ぱっと見、今までのものの微修正の模様です。

第5章にこまごまと新しい項目が増えた気がします。
「5 Features that address deficiencies and discrepancies」

wg5-fortran.org
12 January 2018
New Documents
N2145 Summary of Fortran 2018 (Reid)
https://isotc.iso.org/livelink/livelink?func=ll&objId=19441669&objAction=Open&viewType=1

以下寝言コーナー

HDD死亡

許すまじ Western Digital そんな酷使しなかったのに・・・

「語るボルヘス

書籍化された講演録は割と面白いものが多いでの買ってみました。探偵小説の項目で、探偵小説が、探偵小説読者の読み方を発明したという説が面白かったです。滑稽小説家のジェームズ・サーバーの短編「マクベス殺人事件」に出てくる無教養な頑固婆さんが思い出されます。

市川春子作品集 1,2

アニメ「宝石の国」が面白かったので、買ってみました。絵柄はガロ風ながら、ちゃんと筋書きのある話になっています。

25時のバカンス 市川春子作品集(2) (アフタヌーンKC)

25時のバカンス 市川春子作品集(2) (アフタヌーンKC)

虫と歌 市川春子作品集 (アフタヌーンKC)

虫と歌 市川春子作品集 (アフタヌーンKC)

時折見せるユーモアセンスが良かったのですが、人体欠損と年長者が年少者を食い物にするようなモラルの低さが目立っていたように感じました。

登場人物の世界観が狭いというか、全てが自分の最隣接の人間関係で情緒的に解釈・理解されていて、俯瞰性・客観性が無いために、思考が短絡的で行為の道徳性が低いと思われます。

基本的に一つの話を書き続けるタイプの作家のようです。

佐藤優ファシズムの正体」

粗製乱造感のある佐藤優氏ですが、しばらくぶりに買ってみました。目の付け所はいいと思いましたが、全体としてはイマイチでしたw


序文で新・帝国主義たるグローバル資本主義に対抗する解として、1.帝国主義のさらなる強化、2.共産革命、3.ファシズムを打ち出して、このうち1の強化は衝突からの戦争を引き起こすし、2は失敗なので、今後先進国は1の帝国主義と3のファシズムを混ぜた体制になると言い、福祉国家ファシズムと相性がいいと続けてくるので、なかなか小気味いい出だしです。
 そして、ファシズム理解のために創始者たる首領ムッソリーニ理解から始めようというので、期待も膨らみます。

しかし、ムッソリーニ理解に関しては戦前の日本の社会学者の記述を元に進めるので、その思想がムッソリーニ本来のものか、記述者の理解のものかの区別がつきません。とくに、ムッソリーニファシズムの中心思想が、中庸にあるが如く「天地の化育に参画する」的なことを言い出すので、戦前の儒学的教養のたまものかも知れず、読んでいる側としては何とも言えず窮します。

もともとイタリアは共和制ローマの時代から、地方名望家が土地の者の面倒を見る形で地方自治がなされて、その形態が現代のシチリアマフィアなどにも残っていると言われているので、その流れでファシズム的福祉制度にも結び付いたように思えます。

本書の結論では、個人と国家の間に中間共同体をおいて、そこへの帰属によって、自由・理性・合理を重んじる暴力的グローバル主義から精神的・経済的に庇護さるべしと言っているようです。反理性的な情緒豊かな共同体というヒッピー的・ヤクザ的なことを言い出すので、ちょっと期待外れな結論です。

そもそも、ルール・チェンジャーである英米アングロサクソン国家主義に舵を切ったのですから、さっさとその流れに乗るのが正解でしょう。戦前のグローバル経済でルール破りの朝鮮米の飢餓輸出などで内地が疲弊したわけで、今と変わらない。戦後の方が、物価は上がったが内地は潤ったわけだし。

金科玉条のごとく自由貿易を崇め奉って守ろうとする理由が分からない。単に自分らに得ならのればいいし、損なら止めればいい程度のものに過ぎないはずなのですが。
 
さてムッソリーニと言えば、イタリア未来派運動だろうと思われますが、ちゃんと出てきて宮崎駿の反理性的な活物傾向と結び付けられて話は脱線してゆきます。ベルグソン生の哲学です。

話はさらに脱線して「クーデターの技術」という本の話が始まります。最近話題のルトワックの「クーデター入門」が思い起こされて、同時期に復刊とはどうしたことかと思われます。たぶん、次にまた民主党みたいなのが政権をとったらクーデターしかないなと皆思っている現れでしょうw

クーデターの技術 (中公選書)

クーデターの技術 (中公選書)

クーデターの技術 (1971年)

クーデターの技術 (1971年)

クーデター入門―その攻防の技術 (1970年)

クーデター入門―その攻防の技術 (1970年)

ルトワックの“クーデター入門

ルトワックの“クーデター入門"

奇妙なのは、非理性的な排外主義や精神主義を否定している下りです。今の中共および南北朝鮮は、政権の正統性がほとんどなく、非常にもろく弱い政権になっており、政権の自己正当化のために、滑稽至極な抗日神話を作り上げようと汲々として、政府が反日排外民族主義を煽っているわけですが、そこには全く批判の目を向けず、ありしない日本の反中嫌韓などを非難しているところです。まぁ取りあえず、こう書いておくと出版上色々便利だからかもしれません。

そもそも中国と韓国を同列に並べることで、中国を侮辱しているのですが、その辺も笑いどころかと思います。

【メモ帳】あらゆる構造から exit !

Fortran 2008 で exit の拡張

Fortran 2008 では exit の適用範囲が広がって、ほぼすべての構造(construct)から exit できるようになりました。脱構築ポストモダンFortran

私は、少し誤解していて exit のあとのラベルは省略できるものと思っていましたが construct 終端のラベルとともに、必須でした。

Modern Fortran Explained §20.1.7 によると、 従来の do 構造のほかに、associate、block、if、select case、select type の各構造から exit できるそうです。

なお並列動作の観点から、do concurrent、critical の構造からは exit できません。そもそも順序がないので、これは当然でしょう。

また書いてありませんが forall や where は代入文なので、これらからも exit できません。というか、出ようもない。
[追記] forall や where construct もラベルがつけられるのですが、何の用途があるのかよく分かりません。よくよく考えると forall の方は、単一の forall 文の集合体と見なせるので、途中での脱出もありかもしれないと思ったりもしました。

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

Introduction to Programming with Fortran: With Coverage of Fortran 90, 95, 2003, 2008 and 77

Introduction to Programming with Fortran: With Coverage of Fortran 90, 95, 2003, 2008 and 77

Modern Fortran in Practice

Modern Fortran in Practice

Modern Fortran: Style and Usage

Modern Fortran: Style and Usage

ソースプログラム

intel fortran v.17 は対応していません。v.18 は if 構造に else 文が出てくると、コンパイラの内部エラーが出てしまいます。コンパイラのバグだと思われます。なお gfortran v.7 では else があっても大丈夫です。

    program test
      implicit none
      integer, target :: i = 0, m = 0
      class(*), pointer :: c => null()
      
  aa: associate (k => i)
        if (k == 1) exit aa
        print *, 'associate'
      end associate aa   
      
  bb: block
        use, intrinsic :: iso_fortran_env
        print *, compiler_version()
        print *, compiler_options()
        print *, 'block1'
        exit bb
        print *, 'block2'
      end block bb

  dd: do m = 1, 10
        if (m == 5) exit dd
        print *, 'm=', m
      end do dd
          
  ff: if (i == 0) then
        i = i + 1
        exit ff
        i = i + 999
     ! else !
        i = i + 10
      end if ff
      
  sc: select case (i)
        case (0)
          print *, 'case 0'
          exit sc
          print *, 'case 0'
        case (1)
          print *, 'case 1'
          exit sc
          print *, 'case 1'
        case default  
          print *, 'case default'
        end select sc    
        
        c => i
   st: select type (c)
       type is (integer)
         print *, 'int'
         exit st
         print *, 'int'
       type is (real)
         print *, 'real'
       class default
         print *, 'class default'      
       end select st 
        
      print *, 'end: i=', i
    end program test

実行結果

intel v.18
 associate
 インテル(R) 64 対応インテル(R) Visual Fortran コンパイラー (IA-32 対応アプリケ・
 [ション用) バージョン 18.0.1.156 ビルド 20171018

 /nologo /debug:full /Od /standard-semantics /warn:interfaces /module:Debug\ /ob
 ject:Debug\ /FdDebug\vc150.pdb /traceback /check:bounds /check:stack /libs:dll
 /threads /dbglibs /c /Qlocation,link,C:\Program Files (x86)\Microsoft Visual St
 udio\2017\Community\Common7\IDE\VC\\bin /Qm32
 block1
 m= 1
 m= 2
 m= 3
 m= 4
 case 1
 int
 end: i= 1
続行するには何かキーを押してください . . .
gfortran v.7
$gfortran -std=f2008 *.f95 -o main
$main
 associate
 GCC version 7.1.1 20170622 (Red Hat 7.1.1-3)
 -mtune=generic -march=x86-64 -std=f2008
 block1
 m=           1
 m=           2
 m=           3
 m=           4
 case 1
 int
 end: i=           1

【メモ帳】Fortran 2008 微改良

Fortran 2008 での文法微改良

文字列長を属性的に

%len で宣言長がとれる。

    program Console4
      implicit none
      character(10) :: c = 'abc'
      character(:), allocatable :: d
      print *, c%len, ':', c
      d = 'def'
      print *, d%len, ':', d
      d = d // 'inition'
      print *, d%len, ':', d
    end program Console4
          10 :abc
           3 :def
          10 :definition
続行するには何かキーを押してください . . .

allocatable 属性で可変的な文字列可能。

複素数成分を属性的に

%re, %im で実部・虚部がとれる。

    program Console5
      implicit none
      complex(kind(1.0d0)) :: c
      c = cmplx(0.1d0, 0.1d0)
      print *, c%re, c%im
      c = cmplx(0.1d0, 0.1d0, kind(1.0d0))
      print *, c%re, c%im
    end program Console5
  0.100000001490116       0.100000001490116
  0.100000000000000       0.100000000000000
続行するには何かキーを押してください . . .

落とし穴:cmplx は引数が倍精度でも、デフォルトでは単精度複素数を返す。(歴史的互換性から)

parameterized derived type の属性

デフォルト値を与えておくと省略可能。オプショナル引数的な扱い。

program Console6
  implicit none
  type :: t_test(kind, leng)
    integer, kind :: kind = 8
    integer, len  :: leng =10
    real(kind) :: x(leng)
  end type t_test
  type(t_test) :: a
  type(t_test(4)) :: b
  type(t_test(leng=5)) :: c 
  print *, a%kind, a%leng
  print *, b%kind, b%leng
  print *, c%kind, c%leng
  c = t_test(leng = 5)(1.0)
  print *, 'c='
  print *, c
end program Console6
           8          10
           4          10
           8           5
 c=
   1.00000000000000        1.00000000000000        1.00000000000000
   1.00000000000000        1.00000000000000
続行するには何かキーを押してください . . .

print * の時は、データ部のみ出力。

Introduction to Programming with Fortran: With Coverage of Fortran 90, 95, 2003, 2008 and 77

Introduction to Programming with Fortran: With Coverage of Fortran 90, 95, 2003, 2008 and 77

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained (Numerical Mathematics and Scientific Computation)

【寝言】時代はバーチャル!

Virtual Youtuber

f:id:fortran66:20180207094919j:plain

最近バーチャル・ユーチューバーが流行っているようで、ちゆ12歳から約20年でここまで来たかというかという感じです。もしくは、まだここにいたのか。

ただの外人騙しかと思った Kizuna AI さんも、今や荊棘を切り開いた先覚者として敬意を払われています。
twitter.com
twitter.com


ユーチューバーないしニコ生主という概念は、5年くらい前にちょぼらうにょぽみ先生のマンガで初めて知りましたが、ながらく多動障害的な奇行をする人達という認識でした。全く以て私の不明でした。

あいまいみー 8 (バンブーコミックス WINセレクション)

あいまいみー 8 (バンブーコミックス WINセレクション)

日ペンの美子ちゃん【公式】 (@nippen_mikochan)さんはTwitterを利用しています
f:id:fortran66:20180207094913p:plain


いまやユーチューバーは、子供たちの人気職業となって、子供向けアニメにも小学生ユーチューバーが登場するようになりっています。(c.f. 次期プリパラはユーチューバー)
f:id:fortran66:20180207102150j:plain
(「新幹線変形ロボ シンカリオン」より; cv. TKTT )

色々聞いてみると、自分には全く意味不明でも、無闇に男子学生が「むかつく~」と噛みつくものと女子学生が「ウケル~」というものは、無視できない傾向があるようです。

結論

さて Youtube には Fortran 入門動画のようなものが、少なからず上がっていますが、どれも滑舌の悪いおっさんがちんたら77風のコードを書くものばかりでナウいヤングの諸君をフィーバーさせるものではないので、ここはひとつ間宮くるみ乃至齋藤彩夏久野美咲のしびれる幼女声のバーチャルユーチューバーにハッスルしていただき、デバッグ実況などをしてもらい Fortran 講座の帷を下していただいくのがよろしいのではないかと思う次第で御座います。

www.youtube.com

Fortran 8x Explained の二つの版について

Michael Metcalf & John Reid 「Fortran 8x Explained」

M. Metcalf & J Reid のFortran XX Explained シリーズは、規格化以前の 8x に始まりますが、その 8x にも1987年版と1989年版の二つの版があります。

1989年版の方が50頁ほど厚くなっていますが、構成上の大きな差はそれほどありません。

内容的には、1987年版では parametrized type が存在するのに、1989年版ではこれが無くなっていることが大きな違いでしょう。parametrized type は Fortran 2003 で復活しましたが、微妙に使いづらいものになっています。

なお中古価格では1987年版の方が安いことが多いです。

Fortran 8X Explained

Fortran 8X Explained

分割数 p(200) 直接計算 (その2)補足

雑誌『数学セミナー』2017年2月号 特集「整数の分割」中の金子昌信氏の記事『分割数の漸近公式と円周法』に p(200) の計算結果が載っていて、第三項の数値が Hardy-Ramanujan の論文で合っていないことが書いてありました。

数値の -87.555 ⇒ -87.5840014 も書いてあります。Fortran での結果結果で正しかったようです。

fortran66.hatenablog.com

どうも去年ラマヌジャンの伝記的な映画が公開されたらしく、それに合わせた特集のようです。

【寝言】大掃除

Petit Ange

大掃除をしていたらプティアンジェの下敷きが出てきた。♪アンジェにお任せ~
f:id:fortran66:20171231185105j:plain

アンジェ違い


Rosencrantz and Guildenstern Are Dead

Rosencrantz and Guildenstern Are Dead の本も出てきて、読んでしまって無駄な時間を過ごした。Tom Stoppard が自分で監督した映画がとても面白かった記憶が。 

米国人天文学者が、Hamlet に関する新発見をして、Rosencrantz と Guildenstern の名前がチコ・ブラーエの先祖の名前である等の発見をしてからはや20年。
news.psu.edu

In his letter, Tycho suggested that some excellent English poets might compose witty epigrams in praise of him and his work. He also sent four copies of a portrait of himself that showed him standing under a stone arch featuring the family shields of his great-great-grandparents Sophie Gyldenstierne and Erik Rosenkrantz.

Shakespeare knew the Digges family and had probably seen Tycho's letter and portrait, choosing the names for the characters Rosencrantz and Guildenstern in Hamlet this way. Rosencrantz and Guildenstern personify Tychonic geocentricism, I argue, while the false king Claudius is named for Claudius Ptolemy.

クローディアス王は天動説のクラウディオス・プトレマイオスからだろうと。クローディアス王はさっさとハムレットを殺しておくべきだった。ガートルード妃に遠慮したばかりに、王国も亡び罪なき無関係な人々も無意味に死んでしまった。

Tom Stoppard: Rosencrantz and Guildenstern Are Dead : Jumpers : Travesties : Arcadia (Faber Critical Guides)

Tom Stoppard: Rosencrantz and Guildenstern Are Dead : Jumpers : Travesties : Arcadia (Faber Critical Guides)

対称性より

A secret love triangle between Hamlet, Rosencrantz, and Guildenstern takes Shakespeare to an entirely different level. Two friends and lovers are called to England to save the prince, but can they save each other? [Warning: explicit descriptions of gay anal sex]