fortran66のブログ

fortran について書きます。

【メモ帳】イラン民族音楽

  • 幽玄な音のかなたに

イランの日本向けラジオ番組アーカイブの模様です。民族音楽が聴けます。

下の方にある番号の付いた四角の絵がリンクになっていて、講釈と音声があります。

http://parstoday.com/ja/radio/program--%E5%B9%BD%E7%8E%84%E3%81%AA%E9%9F%B3%E3%81%AE%E3%81%8B%E3%81%AA%E3%81%9F%E3%81%AB

また登録ボタンを押すとアーカイブへ行けます。単なるリンクの模様です。

【ニュース】イランニュース Pars News

安倍首相 イラン到着!

貴重な映像 昭和58年

安倍首相、サアダーバード宮殿で歓迎式典に出席 (動画)

http://parstoday.com/ja/news/iran-i53753

動画は重いですが、イラン軍楽隊の演奏による君が代が聞かれます。

http://media.parstoday.com/image/4bsi8e87d7967f1fsk3_800C450.jpg

イランメディアによる安倍首相訪問の論評

視点:安倍首相のイラン訪問 - 東西アジアの2大国による関係の「新たな一章」 http://parstoday.com/ja/news/iran-i53747

イラン国家安全保障最高評議会のホスラヴィー報道官は、安倍首相のイラン訪問について「核合意へのアメリカの復帰、イランが被った損害の補填、アメリカの対イラン制裁の解除など、国際社会が認め、強調する原則の実施に向けた努力が、この訪問の成功を保障するものになるだろう」と述べました。

  この1年間、核合意から離脱したアメリカは最大級の圧力をかけ始め、勝利への切り札の大半をイラン経済への圧力行使に利用してきました。このような状況下での安倍首相の訪問は、日本や第三者による調停という議論とは無関係です。 なぜなら、アメリカこそが大きな過ちを犯しているのであり、制裁の前の状況に戻らなければならないからです。

アメリカのトランプ大統領がインタビューの中で、自らを武器商人と表現しました。

この揚げ足取りセンス、嫌いじゃないw

マザー・アース久しぶりw

イラン人女性が安倍首相に請願、「イラン人の友好のメッセージを伝えてほしい」 http://parstoday.com/ja/news/iran-i53694

イランよ、これは悪手w 前に鳩山ポッポwを利用したのもいただけない。

まぁ、はじめからイランの差し金だったとも思われぬ。

 イランの女流ドキュメンタリー製作者でジャーナリストでもあるアーテフェ・タルガーニー氏が近年、テロ組織ISISにより殺害された日本人ジャーナリストの後藤健二氏の母・石堂順子さんへの共感を示し、故・後藤さんの願いである「戦争のない世界の実現」を約束するため、ガラス瓶入りのイラン製バラ香水を贈呈したいとしています。

 当時ジャーナリストだった後藤健二さん(47)は、ISISに身柄を拘束される前に、特に中東アフリカ地域の難民問題や子どもの教育、貧困、戦争に関するドキュメンタリーを製作していました。

 現在、後藤さんの製作したドキュメンタリーのうち、アフリカ・シエラレオネの少年兵や血まみれのダイヤモンド、アフガニスタンでの少女や教育に関するものが残されています。

 タルガーニー氏はかつて、アフガン移民の就学児童の教育に携わった経験を持っています。ISISが猶予期限を提示した際に石堂順子氏に書簡をしたためたのは、彼女のこの経験があったからと言われています。

 この書簡は当時、「ISISに拘束されている日本人男性の母親に宛てた、イラン人の母親の書簡」という見出しで、一部のメディアではトップニュースで報じられました。

 現在、タルガーニー氏は1979年のイスラム革命以後日本首相として初めてイランを訪問する安倍首相に対し、イラン国民の友愛に触れる友好のメッセージを、石堂順子氏に伝えるよう請願しています。

【ニュース】フィリピン大統領「私も同性愛者だったが『治した』」 その他

うほっ いい男!

www.newsweekjapan.jp

フィリピンのロドリゴ・ドゥテルテ大統領が先週、来日した際に、自分はかつて同性愛者だったが「治した」と発言して物議を醸している。

フィリピンのオンラインメディア「ラップラー」によれば、ドゥテルテは政敵であるアントニオ・トリリャネス上院議員について、体の動きが見るからに同性愛者だと揶揄。また、元妻のエリザベス・ジマーマンに出会う以前は自分も同性愛者だったと「告白した」という。

-

ドゥテルテは過激な麻薬撲滅政策において、警察や武装民兵による超法規的な殺人を後押ししてきた。また、麻薬密売の撲滅につながることを期待して扇動的な言葉をあえて使い、暴力に油を注いでいる。

一方、ホモの本場イギリスでは

コーブはホモ臭いw www.bbc.com

英国人なら阿片チンキをやり給へ!

老水夫行 (研究社小英文叢書 (11))

老水夫行 (研究社小英文叢書 (11))

阿片常用者の告白 (岩波文庫)

阿片常用者の告白 (岩波文庫)

ちなみにクリントンは、イギリス帝国主義者にして人種差別主義者で南アフリカアパルトヘイトの原因を作り、ローデシアに名を遺すセシル・ローズ基金によるローズ奨学金を得てオクスフォード大に留学し大麻を吸った。

米大統領任期切れが近づくと、ノーベル平和賞狙いで南アのアパルトヘイトに口を突っ込みだしたが、ローズ奨学金を受けておきながらと底の浅さに失笑を買う。

アーカンソー州リトルロック


Marilyn Monroe & Jane Russell -Two little girls from Little Rock

【ニュース】Cray

HPEによるクレイ買収は

HP によるクレイ買収に関する記事が出ていました。HP の HPC 部門が分離してくっつく形になるようです。Chapel 部門は残りそうですね。

tech.nikkeibp.co.jp

独立組織「クレイ事業部」に  HPEの日本法人である日本ヒューレット・パッカードおよびクレイジャパンは買収に関してコメントしなかったが、クレイのある顧客によると、クレイはHPEの中でクレイ事業部という独立組織となり、HPEのHPC(ハイ・パフォーマンス・コンピューティング)部門がクレイ事業部に吸収される形になるという。クレイのピーター・ウンガロ社長兼CEO(最高経営責任者)がクレイ事業部を率いる。同氏は34歳で米IBMのHPC責任者となり36歳でクレイのCEOに就任した。

-

 クレイはHPEと買収で合意する10日前に米オークリッジ国立研究所(ORNL)から660億円でFrontierと呼ぶシステムを受注。その7週間前には米インテルのサブコントラクターとして550億円以上のシステムAuroraを米アルゴンヌ国立研究所(ANL)から受注している。2システムの稼働時期は2021年から2022年の間で、処理性能はオークリッジのFrontierが1.5エクサFLOPS、アルゴンヌのAuroraが1エクサFLOPSと見込まれている。

 さらにクレイは米ローレンス・バークレー国立研究所(LBNL)に入るPerlmutterを161億円で受注済み。こちらは2020年に完成するが1エクサFLOPSをやや下回る。

-

 米国にはスパコンの5大顧客が存在する。オークリッジ、アルゴンヌ、ローレンス・バークレーに加えて米ローレンス・リバモア国立研究所(LLNL)と米ロスアラモス国立研究所(LANL)がある。全て米エネルギー省(DOE)が所管する。

 5大顧客は2020~2022年に5台のエクサFLOPS級のシステムを買い求める。ローレンス・リバモアに入るEl Capitanは1カ月以内に受託メーカーが決定する運びだがクレイが獲得する公算が大きい。ロスアラモスのCrossroadsも入札中でこちらもクレイが受注し、総なめにする可能性もある。その場合、受注総額は約2400億円だ。クレイとHPEの両社でスパコンの処理性能トップ500のうち20%を獲得、シェア1位のメーカーになる。  

アーキテクチャーがてんでんばらばらなので、遅延・予算オーバー・性能出ずの猪鹿蝶を期待。

そこに我が国の富嶽が渡洋攻撃でナパーム弾の絨毯爆撃あのよろし! あの日揚がったZ旗を!

民主党クリントン(オス)時代に、日本製スパコンダンピングを名目に400%を超える関税をかける一方、その後アメリカはインテルのチップを7割引きで中国にダンピングして売るとかw 真のタリフマンはクリン㌧!


On A Slow Boat To China (1949) - Bing Crosby


On A Slow Boat To China (1949) - Frank Sinatra

【メモ帳】ZMQ binding

ZMQ 4.3.1

以前 ZMQ の f77 binding を利用して、Fortran で HTML サーバー文字表示を試してみました。

fortran66.hatenablog.com

よくよく f77 ZMQ 文書を見てみると、自由書式用の include ファイルもあったようです。

interoperability with C

ここでは、Fortran2003 以降で強化されつつある、C 言語との相互運用について勉強するために、C で書かれた ZMQ ルーチンに、出来るだけインターフェースだけを使って、呼び出してみることを試してみました。

まだ数個のルーチンしかインターフェースを書いていませんが、早くも Fortran では無理っぽいルーチンがありました。

zmq_msg_init_data

ZMQ の初期化関数で、動的メモリー解放用ルーチンの関数ポインタを渡して、ZMQ のライブラリ内で Fortran で確保したメモリーを解放させるものです。うまくいきません。

関数ポインタを呼び出させて配列の内容を変えることは出来ましたが、解放は実行時のエラーになりました。ただ Fortran2018 での CFI 関数を使えば可能な気もします。

zmq_msg_init_data(3) - 0MQ Api

ZMQ インストールメモ

wget https://github.com/zeromq/libzmq/releases/download/v4.3.1/zeromq-4.3.1.tar.gz
tar zxvf zeromq-4.3.1.tar.gz
cd zeromq-4.3.1/
./configure
make -j 8
sudo make install

静的 Fortran HTTP サーバー

とりあえず、以前に書いた HTTP サーバーを試せるところまで interface を書いて見ました。型がうるさくて混乱します。

メモ帳として書いておきます。

f:id:fortran66:20190609211513p:plain
ZMQ

コンソール出力

hp8@HP8:~/f08_zmq$ ./a.out
 context                    0
 socketSuccess
 socket      139763505916576
 text:tcp://*:8080
 bind           0
 zmq_recv           5
 zmq_recv           5
 zmq_recv           5
 zmq_recv           5
 zmq_recv           5
^C
hp8@HP8:~/f08_zmq$

github.com

メイン・ルーチン

module m_test
    implicit none
    character(len = *), parameter :: CRLF = achar(13) // achar(10)
    character(len = *), parameter :: http_response_p =          &
          'HTTP/1.0 200 OK'                        // CRLF // &
          'Content-Type: text/html'                // CRLF // &
                                                      CRLF // &
          '<!DOCTYPE html>'                        // CRLF // &
          '<html>'                                 // CRLF // &
          '<head>'                                 // CRLF // &
          '<title>Fortran ZMQ http server</title>' // CRLF // &
          '</head>'                                // CRLF // &
          '<body>'                                 // CRLF // &
          '<h1>Fortran ZMQ http server </h1>'      // CRLF // &
          '<p>Reiwa 1-6-9 (2019.6.9)   </p>'       // CRLF // &
          '</body>'                                // CRLF // &
          '</html>'                                // achar(0)
end module m_test

program test
    use, intrinsic :: iso_c_binding
    use f08_zmq
    use m_test
    implicit none
    integer(c_int) :: ierr, id_size, iraw_size
    type(c_ptr) :: ctx, socket
    integer(8), pointer :: iadd1, iadd2
    integer(8), pointer :: inull => null()
    character(:), allocatable, target :: text, id, raw, http_response
    ctx = zmq_ctx_new()
    call c_f_pointer(ctx, iadd1)
    print *, 'context', iadd1

    socket = zmq_socket(ctx, ZMQ_STREAM)
    print *, 'socket', zmq_strerror(zmq_errno())
    call c_f_pointer(socket, iadd2)
    print *, 'socket', iadd2

    text = 'tcp://*:8080'//achar(0)
    print *, 'text:', text
    ierr = zmq_bind(socket, c_loc(text))
    print *, 'bind', ierr
    if (ierr /= 0) stop 'error'

    allocate(character(len = 256)::id, raw)
    http_response = http_response_p

    do
        id_size = zmq_recv(socket, c_loc(id), 256_c_size_t, 0)
        print *, 'zmq_recv', id_size
        if (id_size <= 0) stop 'id_size error!'
        do
            iraw_size = zmq_recv(socket, c_loc(raw), 256_c_size_t, 0)
            if (iraw_size < 0) stop 'raw_size error!'
            if (iraw_size == 256) cycle
            exit
        end do
        ierr = zmq_send(socket, c_loc(id), int(id_size, c_size_t), ZMQ_SNDMORE)
        ierr = zmq_send(socket, c_loc(http_response), int(len(http_response), c_size_t), 0)
        ierr = zmq_send(socket, c_loc(id), int(id_size, c_size_t), ZMQ_SNDMORE)
        ierr = zmq_send(socket, c_loc(inull), 0_c_size_t, 0)
     end do
     ierr = zmq_close(socket)
     print *, 'zmq_close socket', ierr, zmq_strerror(zmq_errno())
     ierr = zmq_ctx_term(ctx)
     print *, 'ierr=', ierr, zmq_strerror(zmq_errno())
end program test

メモ帳:動かない

type(c_ptr) で番地を渡しただけでは、サブルーチン等では割り付けを解放できない。gfortran は見かけ上解放するが、メインルーチンに戻ると解放されていない。intel fortran では実行時エラーで異常終了。

    module m_test
        use, intrinsic :: iso_c_binding
        implicit none
    contains
        subroutine sub(cptr)
            type(c_ptr) :: cptr
            real, pointer :: arr(:)
            call c_f_pointer(cptr, arr, [10])
            print *, associated(arr), arr
            arr = arr(10:1:-1)
            deallocate(arr)
            print *, associated(arr)

!            real, allocatable, target :: brr(:)
!            call c_f_pointer(cptr, brr, [10])
!            print *, 'brr', allocated(brr), brr
!            brr = brr(10:1:-1)
!            deallocate(brr)
!            print *, 'brr', allocated(brr)
        end subroutine sub
    end module m_test

    program Console4
        use, intrinsic :: iso_c_binding
        use m_test
        implicit none
        real, pointer :: crr(:)
        integer :: i
        allocate(crr(10))
        crr = [(i, i = 1, size(crr))]
        print *, 'crr', associated(crr) 
        call sub(c_loc(crr))
        print *, 'crr', associated(crr) 
    end program Console4

【ニュース】かつて f18 と呼ばれたコンパイラ

元 f18 が flang 襲名

LLVM の新 Fortran コンパイラ・プロントエンドの f18 が、結局 flang の名を継ぐことになったようです。Fortran にすると名前が一般的過ぎるという理由に依るようです。

www.phoronix.com

f:id:fortran66:20190608005425p:plain
The Compiler Formerly Known As F18

どうせなら、「かつて f18 と呼ばれていたコンパイラ」とか、ヘンテコな発音不能戦国大名の花押の様なマークでよかったんじゃないかと思うでプルンス。

f:id:fortran66:20190608010034j:plain
プルンス

【メモ帳】分割数と約数和の漸化式

分割数に関する漸化式

整数の分割数 p(n) と約数和関数 \sigma(n) の関わる漸化式。


{\displaystyle
p(n)={1\over n}\sum_{k=1}^n\sigma(k)p(n-k)
}

Symmetric Functions and Hall Polynomials (Oxford Classic Texts in the Physical Sciences: Oxford Mathematical Mongraphs)

Symmetric Functions and Hall Polynomials (Oxford Classic Texts in the Physical Sciences: Oxford Mathematical Mongraphs)

p.27 (1) 式

証明

整数 n の約数の和を取る約数和関数 \sigma(n) の母関数 S(t) は以下のようになっている。


{\displaystyle
S(t)= \sum_{k=1}^\infty\sigma(k)\,t^{k-1}=\sum_{k=1}^\infty{kt^{k-1}\over1-t^k}
}

これは、一番右の式の分母を級数に展開し、各次数ごとにまとめることで示せる。(TeX では書きにくいですが、表形式で項を並べると約数が出てくることがはっきりします。)


{\displaystyle
\begin{align}
S(t)&={1\over1-t}+{2t\over 1-t^2}+{3t^2\over 1-t^3}+{4t^3\over 1-t^4}+\cdots\\
&=(1+t+t^2+\cdots)+2t(1+t^2+t^4+\cdots)+3t^2(1+t^3+t^6+\cdots)+4t^3(1+t^4+t^8+\cdots)+\cdots\\
&=1+(1+2)t+(1+3)t^2+(1+2+4)t^3+(1+5)t^4+(1+2+3+6)t^5+(1+7)t^6+\cdots\\
&=\sigma(1)+\sigma(2)t+\sigma(3)t^2+\sigma(4)t^3+\sigma(5)t^4+\sigma(6)t^5+\sigma(7)t^6+\cdots\\
&=\sum_{k=1}^\infty\sigma(k)\,t^{k-1}
\end{align}
}

また、一番右の表式は、


{\displaystyle
\sum_{k=1}^\infty{kt^{k-1}\over1-t^k}=-\sum_{k=1}^\infty{d\over dt}\log(1-t^k)={d\over dt}\log(\prod_{k=1}^\infty{1\over1-t^k})
}

とも表わせる。つまり、


{\displaystyle
S(t)=\sum_{k=1}^\infty\sigma(k)t^{k-1}={d\over dt}\log(\prod_{k=1}^\infty{1\over1-t^k})
}

の関係が得られた。

一方で Euler により分割数 p(k) の母関数は以下のようにあらわされた。


{\displaystyle
P(t)=\sum_{k=0}^\infty p(k) \,t^k=\prod_{k=1}^\infty {1\over1-t^k}
}

但し、ここで形式上 0 の分割数を p(0)=1 とした。

上で S(t) について求めた関係から、


{\displaystyle
S(t)={d\over dt}\log P(t)={P'(t)\over P(t)}
}

つまり、


{\displaystyle
P'(t)=S(t)P(t)
}

が得られる。

この式に、級数表示の式を入れると、


{\displaystyle
\sum_{n=1}^\infty np(n)\,t^{n-1}=\left(\sum_{k=1}^{\infty}\sigma(k)\,t^{k-1}\right)\left(\sum_{j=0}^{\infty}p(j)\,t^j\right)=\sum_{k=1}^\infty\sum_{j=0}^\infty\sigma(k)p(j)\,t^{k+j-1}
}

ここで、最後の式で k+j=n とすれば


{\displaystyle
\sum_{n=1}^\infty np(n)\,t^{n-1}=\sum_{n=1}^\infty\sum_{k=1}^n\sigma(k)p(n-k)\,t^{n-1}
}

が得られる。

辺々べきの等しい項を比べて、分割数に関する漸化式、


{\displaystyle
p(n)={1\over n}\sum_{k=1}^n\sigma(k)p(n-k)
}

が得られる。