fortran66のブログ

fortran について書きます。

【寝言】皆既月食と天王星食

月食天王星

天皇陛下の御恩徳により快晴の空の元、皆既月食天王星食を眺めることが叶いました。

やはり天王星には天皇制!

しばらくぶりで天王星を(双眼鏡で)肉眼で見ました。(望遠鏡で)高校三年生ぶりでしょうか。


www.youtube.com

iphone 13 mini での写真w

Uranus

皆既中の月の下に天王星が小さな点として写っています。スバルとヒヤデス星団も写っています。

www.nao.ac.jp

M31

ついでにアンドロメダ星雲も撮ってみました。3秒しか溜め込まないので、こっちはあんまりはっきり写りませんでした。


www.youtube.com

【メモ帳】LFortran で Fortran 202Y の Generics 試用可

FortranGenerics

Fortran 202Y での導入が目指されている Generics ですが、LFortran で試験的な実装がなされ、試してみることが可能になりました。ここで Fortran 202Y とは次期規格の Fortran 202X のさらに次の規格という意味です。また Fortran 202X は、先年 X = 3 にすることが決まっています。

fortran-lang.discourse.group

LFortran は WEB 上で試すことが出来ます。

dev.lfortran.org

試行例

LFortran はユーザー定義派生型や operator overload などがまだ実装されていないので、あまり多くは試せません。

twitter にあった例題を改変して、単項演算子二項演算子を試してみました。思ったより長々グチャグチャになり、定義位置や定義順もイマイチぴんと来ない感があります。また Fortrancase insensitive なので、Template と普通の具象名が渾然混沌区別がつかぬ感もします。

プログラム

requirement の中の function 名が漏れ出して、多重定義エラーになってしまうので名前を F0 に変えました。

module template_test_m
    implicit none
    private
    public :: unary_t, binary_t
    
    

    requirement S(T, F0) 
        type :: T; end type
        function F0(x) result(z)
            type(T), intent(in) :: x
            type(T) :: z
        end function
    end requirement

    template unary_t(T, F0)
        requires S(T, F0)
        private
        public :: unary_generic
    contains
        function unary_generic(x) result(z)
            type(T), intent(in) :: x
            type(T) :: z
            z = F0(x)
        end function
    end template
    
    
    
    
    requirement R(T, F) 
        type :: T; end type
        function F(x, y) result(z)
            type(T), intent(in) :: x, y
            type(T) :: z
        end function
    end requirement

    template binary_t(T, F)
        requires R(T, F)
        private
        public :: binary_generic
    contains
        function binary_generic(x, y) result(z)
            type(T), intent(in) :: x, y
            type(T) :: z
            z = F(x, y)
        end function
    end template


contains


    real function func_minus_real(x) result(z)
        real, intent(in) :: x
        z = -x
    end function

    
    real function func_add_real(x, y) result(z)
        real, intent(in) :: x, y
        z = x + y
    end function

    real function func_sub_real(x, y) result(z)
        real, intent(in) :: x, y
        z = x - y
    end function

    real function func_mul_real(x, y) result(z)
        real, intent(in) :: x, y
        z = x * y
    end function

    real function func_div_real(x, y) result(z)
        real, intent(in) :: x, y
        z = x / y
    end function 
    


    subroutine test_template()
        instantiate unary_t(real, func_minus_real), only: minus_real => unary_generic

        instantiate binary_t(real, func_add_real), only: add_real => binary_generic
        instantiate binary_t(real, func_sub_real), only: sub_real => binary_generic       
        instantiate binary_t(real, func_mul_real), only: mul_real => binary_generic       
        instantiate binary_t(real, func_div_real), only: div_real => binary_generic       
        
        real :: x, y
        x = 5.1
        y = 7.2

        print*, "The result is ", minus_real(x)
        if (abs(minus_real(x) + x) > 1e-5) error stop


        print*, "The result is ", add_real(x, y)
        if (abs(add_real(x, y) - 12.3) > 1e-5) error stop

        print*, "The result is ", sub_real(x, y)
        if (abs(sub_real(x, y) + 2.1) > 1e-5) error stop

        print*, "The result is ", mul_real(x, y)
       if (abs(mul_real(x, y) - 36.72) > 1e-2) error stop

        print*, "The result is ", div_real(x, y)
        if (abs(div_real(x, y) - 0.7083333) > 1e-6) error stop
    end subroutine
end module

program template_test
    use template_test_m
    implicit none

    call test_template()

end program template_test
The result is  -5.099999904632568
The result is  12.299999237060547
The result is  -2.0999999046325684
The result is  36.71999740600586
The result is  0.7083333134651184

参考資料

j3-fortran generics

github.com

議論の過程で色々仕様が変化しているようです。

Everything Functional

策定に携わっている方の要点まとめ記事です。

The State of Fortran Genericseverythingfunctional.wordpress.com

本文中の restriction が、LFortran では requirement に変わっています。

Seminar: Generic Programming in Fortran 202Y

Dr. Thomas Clune gives a seminar on July 18, 2022 at the NCAR Mesa Lab.


www.youtube.com

質疑等細部の詳細はさっぱり理解できませんw


www.youtube.com


www.youtube.com

【寝言】学士会報 第957号 2022-VI

まともな記事があってビックリの巻

巻頭に元衆院議長の伊吹文明氏の午餐会での講演をまとめたものが載っていたのですが(「絶対的正解のないのが政治ー意思決定の難しさ」)、その内容が極めて真っ当かつ常識的で驚きました。

さわりが見られます。細田衆院議長を腐しているところまでw www.gakushikai-salon.jp

絶対的正解のないのが政治ー意思決定の難しさ  伊吹文明

要旨 

保守は、「個人は間違う」という考えを前提とするため、政治では独裁ではなく民主制を、経済では統制経済ではなく大勢の人が参加する自由主義市場経済を選ぶ。ただ民主制もポピュリズムに、自由もわがままに陥るので、その欠点を民族が長い時間をかけて培ってきた伝統的規範を身につけた個人により正そうと考えるのが保守である。

昨秋、正解を引退した元衆議院議長が、保守の矜持と意思決定の難しさについて語る。

段落

  1. 一票の格差をめぐって
  2. 昨今のインフレに思うこと
  3. 消費税減税を公約にする野党の無責任
  4. 節電も、電気代値上げも、原発再稼働も嫌がる人々
  5. MMT(現代貨幣理論)は正しいのか
  6. 自由、民主制、法の支配、人権の尊重
  7. 自由のないロシア、自由が行き過ぎの日本
  8. 自由の長所と欠点
  9. 法の支配の長所と欠点
  10. 民主制の長所と欠点
  11. ポピュリズムは民主制の欠点
  12. 統制経済と独裁
  13. 「リベラル」対「新自由主義
  14. 「リベラル」対「保守」
  15. 日本人の民族的規範を形成してきたもの
  16. 日本の危機

何事も釣り合いの精神でということで、実に真っ当に思われることが書かれていました。 ただ旧大蔵省出身のせいか財政均衡・緊縮論みたいな事も言っていますが、それはしょうがないかwという感じです。

農耕社会なら太陽の1年周期で均衡が必要でしょうが、現代日本は工業化・脱工業化社会でもっと長周期の好景気・不景気の波があるのだから、単年度会計での財政均衡固執するのもいかがなものかという気がします。また小学生も習う江戸時代の三大改革で、寛政の改革天保の改革とも緊縮財政で失敗しています。それでいて、同じ土地と人間で明治になれば一気に人口増・経済成長しています。

最近、頭のおかしいサヨ爺の寝言記事ばかり出てくるので、まっとうな政治記事を読むとビックリ仰天します。

【寝言】CERN も節電

電気代高騰に鑑みて

フランス電力会社からの要請で、今年は早めに終了、来年は遅めに再開の模様です。

人口 20 万人のジュネーブ市の年間電力使用量が 3 テラワット時の所、CERN は 1.3 テラワット時ほど使用するようです。今年の電気代の見積もりは八千九百万ドル(130億円)ほど。

hackaday.com

「9 万人が電気無しで過ごせば済むこと」とアスペ素粒子おじさんに言わせたり、CERN はグリーンじゃないと温暖化サヨクを焚きつけたりしてみたいですね。

FORTRAN 音楽

曲名が草

SomeF (X+Y)

SomeF (X+Y)

  • Josh McCausland
Amazon

  1. Dimension Delta (999)
  2. SomeF (X+Y)
  3. Quotient OVERFLOW
  4. ERROR (106): FORT_BLOCKSIZE
  5. Card Check SUM ERROR
  6. DO 20 I = 2.N
  7. CONTINUE
  8. Hollerith Fields

【寝言】mashed potate to a jukebox tune ?

VACATION Connie Francis (1962)

長年、ジュークボックスの音楽に mashed potate する意味が分かりませんでしたが、ふと検索した所 1962 年ごろ大流行した踊りの一種と分かりましたw

The Mashed Potato is a dance move which was a popular dance craze of 1962.


www.youtube.com

en.wikipedia.org


www.youtube.com

日本語がうまい。


www.youtube.com

Wipe out The Ventures (1965)


www.youtube.com

日本語がうまい。


www.youtube.com

FORTRAN66

【メモ帳】Nvidia の GPU programming model 概観

GPU programming 概観

講演では Fortran/C++/python の3言語と、自動最適化、OpenACC/OpenMP 利用、cu-library 利用、CUDA 利用の概観が示されています。

質疑でお勧め度が示されましたが、新規開発なら Fortran/C++ ISO standard で書きコンパイラの自動並列化(GPU/CPU 両方可)に任せる、既存の並列化なら OpenACC annotation でコンパイラ任せがお勧め、もしくは計算のコアがライブラリ呼び出しで置き換えられるなら cu*** ライブラリを呼び出すのみ、最後の手段が CUDA で書くこと。OpenMP の場合、人間が細かく指示するより loop directive でコンパイラ任せにした方が CPU/GPU 書き分けずに済むのでお勧めというような、もっともな答えが返っていました。


www.youtube.com

ソース元 https://twitter.com/ogawa_tter/status/1585628546432585728

【寝言】胡錦濤 靖国神社参拝後の小泉総理の予言をかみしめよw

小泉総理の言葉 2007年7月23日 

> 中国政府は、将来いつかきっと後悔するでしょう。

webronza.asahi.com

 特定の人に対して靖国神社に参拝しているわけではありません。

 心ならずも家族と別れて命を捨てなければならなかった、多くの戦没者の方々に敬意と感謝の誠を捧げ、哀悼の意を表すために靖国神社に参拝しているのであります。

 私は日中友好論者であります。

 中国政府は、将来いつかきっと後悔するでしょう。

 友好国の日本国首相、しかも民主的に選ばれた首相に対して、靖国神社に参拝するかしないかを条件に首脳会談を行うか行わないか考えると言ってきた。

 私は首脳会談を拒否されても閣僚諸君は大いに中国との交流を進めてほしいと指示してきました。

胡錦濤は愚かにもダライ=ラマの日本訪問に合わせて、反日デモを組織して愚昧な支那土民を組織して官製デモを行わせたが、それがみるみる拡大してコントロールが利かないほどになり、印刷されたプラカードや幕を掲げていた官製デモとは異なり、手書きのプラカードや垂れ幕を連ねた反日暴動になって、慌てふためく羽目になった。

そうした愚挙の果てに小沢一郎と結んだ習近平に、会場をつまみ出される羽目になった。愚かな支那人よ、後悔して泣けw

習近平は小沢面談ばりの面談で、李克強や栗戦書から『自主的』に引退を引き出したそうで、さすが小沢門下生w

フルシチョフも失脚後は毎日泣いて暮らしていたようだし。胡錦濤がアマゾンの欲しいものリストに鼻紙を載せたら、便所用の都白菊なら買ってやろうぞ。