FORTRAN90はどうでしょう?

このエントリーをはてなブックマークに追加
1なななななし

FORTRAN90使ってますか? FORTRAN77とどう違うのでしょうか?
CやC++と比べてどっちがいいと思いますか?(シミュレーション
に使うとしたらの話です)

2名無しさんの初恋 :2000/10/07(土) 19:37
COMPLEX と LOGICAL 変数の取り扱いが違う、g77 だとデフォルトは
f90の仕様に揃えてある。

#あ、そういう話ではない?しつれいしましたぁ
#つーか、本読めば? do enddo あっはっは
3クレクレくん :2000/10/09(月) 13:37
なるべく安い(無料ならなおさら歓迎)fortranのコンパイラ
はなんでしょうか?どこからダウンロードできるか教えて
欲しいです。あとそのコンパイラの解説書としてはなにがいい
でしょうか?
数値計算をしたいのですが、よろしくお願いします
4名無しさん@1周年 :2000/10/09(月) 14:37
このスレはなかったことにしてくれ、たのむから。
fortran自体なかったことにしてくれ、たのむから。
3さんは後に続く人のためにもC,C++で数値計算してくれ、たのむから。
fortranコンパイラはfortranをコンパイルできないようになってくれ、たのむから。
これから科学計算の本を出す人はC,C++でだしてくれ、たのむから。
5>4 :2000/10/11(水) 03:53
そういう人に限って,四則演算しか使っていないのに,
‘プログラムは,Cじゃなきゃ駄目’だとか言うんだよね〜・・・

# コンパイラの性能は,まだまだFortranの方が上です.

## LinuxやFreeBSDを導入しなくとも,Windows上で,
## フリーのGnuのFortranが使えるようです.
## ダウンロード先は,調べてください...>3
6名無しさん@1周年 :2000/10/11(水) 09:20
math.h には間違った値を反す関数がまぎれこんでいることあり。
float と double の扱いも怪しい。
もっとひどいのが、java.lang.Math。Javaの数値計算は
すごいよ。

fortranの関数の方が信頼性が高い。
4はCとかC++で実用的なプログラム作ったことないんだろな。

74 :2000/10/11(水) 09:56
>5,6
かなり心外な意見でおどろいてます。
私に反論するならむしろ、
”fortranで実用的なプログラムを作ったことがないんだろうな”
というべきでは?
これにたいしてはYESで、本にのってたのがfortranだったから
仕方なく使ったぐらい。もしかしたらfortranの機能を使い切ってないと思う。
だからfortranのすばらしさをしらないかも…。
C++は自分で言うのもなんですがいろいろやってます。
(学生の宿題レベルと同じにしないでください)

fortranのコンパイラってなかなかフリーでないし(g77があるからいいけど)
コンパイラの性能の話だってどっちもどっちじゃないの?っていうかホンとにはやいの?
そんなにきになるなら機種依存するけどCならインラインアセンブラがあるでしょ。

僕が言いたいのはもはや科学者ぐらいしか使わないような言語を
わざわざ大学の講義で教えたり、本にのっけたりするなってこと。
だいたいfortranで大規模なもんなんてつくってるって話聞いたこともない。
OOPできないfortranなんてうんざりだ!!(fortran2000?)

あとfortranの関数が信頼性が高いってのも意味不明だ。
信頼性のある関数を使えばいいだけじゃん。
8名無しさん@1周年 :2000/10/11(水) 10:10
まぁ、みんながみんな速度や精度を気にしてるわけじゃないしね。
学生は理論の実装を知りたいだけだから、
初めは標準的なCがわかりやすいから本にはCを載せた方が望ましいね。
9無学さん :2000/10/11(水) 10:19
>4おいおいFortranで大規模なものが無いなんて君は何を
勉強したんだい?
有限要素方の大規模なソルバーや昔のCADアプリなんて大概
Fortranでプログラミングされていたんだぜ
電磁気過渡解析用の有名なプログラムなんてのも軒並みFortran
ベースで後からPC用にCで書き直していると言うのが現状だ
OOPがいいといいながらもOOPは作った人の勝手なコーディングと
まともな仕様にもとづいたFortranライブラリとでは
Fortranの方が信頼性というメンでは格段に優れている
伊達に50年近くの歴史があるわけじゃないんだよ
10:2000/10/11(水) 10:42
>9
ちょっと言いすぎでしたが、今はCなんですよね。
信用のないライブラリは使わなければいいし、
そんなにCのライブラリは信用できないものなんでしょうか?
よろしければ信頼のおけない関数を教えてください。今後きをつけたいと思います。

ちなみに現在学部生で学校でも数値計算関係やんないので本読んでるのですが、
一部を除いてfortranだらけの環境につらくなってやつあたりかきこしてしまいました。
ご勘弁を。
11:2000/10/11(水) 10:48
>よろしければ信頼のおけない関数を教えてください。
ちなみに環境はVC++6です。
12名無しさん@1周年 :2000/10/11(水) 17:40
過去の遺産があるためにCに移行したくても難しいのが現状。
言語の仕様はC/C++の方が上かもしれないけど、数値計算に
限ればたいした差がないと思う。まあ、4のような人が良い
コードをたくさん書いて、Cのユーザが増えてコンパイラも
優秀になって行くといいと思うけど。
13名無しさん@1周年 :2000/10/11(水) 19:34
>11
erf
Newmerical Recipes in Cの例題プログラムもまちがっているぞ。
14名無しさん@1周年 :2000/10/11(水) 19:36
数値計算でOOPを使うメリットを教えてください。
15ふぉるとん :2000/10/12(木) 13:43

C++に関してはあまり知らないのですが、F90ははっきり言って
F77よりも書きやすい。それはまるでMATLABのよう。聞いた話では
MATLABはF90をモデルとして作られたらしい。ベクトルやマトリックス
の掛け算もいちいちループをつくる必要なし。(但し、ループよりも
時間は多少長くかかる。。)また、複数の命令を一行に書ける(;を使って
区切ればよい。まるでMATLAB!)

OOPと言いますが、できますよF90で(但し、私はC++を良く知らないので
間違っている可能性はあります)。F90ではMODULEと呼ばれます。
MODULEの中で新たなDATA TYPE を定義し、またそのDATA TYPEに特殊な
演算も定義できます(これがいわゆるCLASSと呼ばれるものでしょうか?)。
またOPERATOR OVERLOADINGもできます。もちろんポインターも使えます。
DYNAMIC MEMORY ALLOCATIONなどももちろんできます。

はっきり言って、私はF90に満足しております。ちなみに用途は流体解析(CFD)
です。CFDではC++で書いてる人が結構いますけどね。あんまりC++に関する問題
は聞きませんね。
16名無しさん@1周年 :2000/10/12(木) 14:04
F90ってクラスやオーバーロードがあるんですか、全然知らなかったです。
行列は結構使うと思いますが僕の場合C++でマトリックスクラスを作って、
プログラムを見やすくしてました。これがF90で標準で持ってるなら便利そうですね。

表記の好みの違い程度なのかな?
17名無しさん@1周年 :2000/10/13(金) 17:12
>>15
F90の機能をフルに使うとしたら、C++で書くのと違いがない
ような気がするんですがどうでしょう?
自分はCもF90も分からないんですが、F77は飽きたんで次に
どの言語を使おうか迷ってるんですが。
18ふぉるとん :2000/10/14(土) 01:07

>17
私はC++のすべてを知っている訳ではないのですが、F90はC++に
近いことは確かだと思います。また、数値計算に使うのであれば
やはり数値計算用の標準関数を持っているF90のほうが私は好き
ですね。(C++の人によく「CLASS」を作ればいいじゃん、てな
事を言われますが、標準されているほうが手間が省ける)

F77の次はF90かC++のどっちか? 分野にもよるでしょうけど
基本的にどちらも知っておいたほうが良いでしょう。しかし
それでも矢張りどちらが最初か選ぶ必要はありますね。F77
の次ってことなら、わたしはF90をオススメします。実は私は
F77にうんざりしてF90を使い始めました。その時の感動は忘れ
られないですね。とにかくプログラムが驚くほどコンパクトになる。
さらに前に記述したF90の特徴はC++と通じるものが結構あって、
C++を学ぶのに非常に役立つと思います。(但し、いろいろな
新しい特徴を使用するとF77に比べて計算速度が遅くなることが
しばしばあります。これはしょうがないですけど、速度が大事
なら、やっぱり最速と言われるF77じゃないですかね?)


19名無しさん :2000/10/14(土) 19:56
私もf90及びcなどを使っていますが,なにが問題かというと極端にf90について
の情報が少ないということでしょう。f90は参照渡しですので高次の配列の受け渡し
は簡単だし,複素演算にも向いています。ただフリーのf90コンパイラは
GNUでも提供されていませんし,windowsの製品版も一万円ぐらいする。
とにかく情報が少ない,たとえばf90なんていう雑誌なんかがでてくれればよい
のだが(Cマガみたいな...)。俺的になぜfortranが嫌いになるのかといえば
みんなやってないからが一番なのではないかと思っている。ただ信頼性が高い
とかいうのは本当だろうか?
20名無しさん@1周年 :2000/10/15(日) 00:04
個人ユースのみ、linux用f90コンパイラ(F90からF77への翻訳機能)
無料で配布されています。
g77インストール済みが前提。
http://www.psrv.com/lnxf90.html
2119 :2000/10/15(日) 00:45
>20 ありがとうございます。さっそく使ってみます。
f90とCをリンクさせたり,matlabとデータの受け渡しをしたり
してお互いのいいとこを連携させたいと思ってます。
infoseekでfortranを調べたら30件ほど
しか引っかかりませんでした。残念です。
22名無しさん@1周年 :2000/10/15(日) 10:00
fortranがコンパイル効果が高いと言われるのはどのような理由なのでしょうか?
Cとの言語仕様の比較で説明できる方、教えてください。
23無学さん :2000/10/16(月) 16:09
>22
コンピュータは元々数値演算を行うための道具で、fortranは
その計算を行うための手っ取り早いプログラミング言語として
車の両輪のようにお互い発達してきたものだから数値計算では
他の言語よりも早くなくては意味が無いから・・・と言う理由では
24ふぉるとん :2000/10/17(火) 00:24

>22
「コンパイル効果」が何を意味するのか正確には判りませんが、
C++を使っている同僚に聞くと、C++ではコンパイル時に
最適化レベルを高く設定すると(計算速度向上の為)コンパイラー
が勝手にコードを書き換え過ぎて自分が書いた命令通りに計算
してくれないことがあるそうです。FORTRANでは
そのようなことは起こりません。書いた通りにやってくれます。
と思いますが。
25名無しさん@1周年 :2000/10/17(火) 10:54
>24
うそです。
FORTRAN77のコンパイラも、最適化レベルを上げすぎると
まったく違う答えを出してくれます。
26名無しさん@1周年 :2000/10/17(火) 13:43

>25
ってことはその最適化って全く役に立ってないってことじゃん!
誰がそんなの使ってるの?????
27名無しさん@1周年 :2000/10/17(火) 15:54
>26
25の言っている答えってのは、実行バイナリが変化するってことでは?
だけど、変化するのは当然でそのための最適化レベルのような…わけわからんです。

バイナリが変わると問題になるのはリアルタイム処理を行う時に
ウェイトタイムが必要であえて意味なしのループを作っていたりする場面で、
コンパイラがこの部分をかってに省くと困るわけです。

22がいっているのは、なぜFortranが最適化されやすいか?
それはCとFortranのどの辺りの言語の差が原因になっているか?
ってことでは。
例えばポインターのあるなしとか…。
28名無しさん@1周年 :2000/10/18(水) 22:11
ベクトル計算機の場合、ループによる配列操作(行列の加算など)を
コンパイラで自動ベクトル化して高速化します。それ以外に、メモリ
キャッシュその他の影響で最も高速に扱えるデータ型は配列です。

この処理に向いた言語がFORTRANということがまず一つ。もう一つは、
数値計算領域ではFORTRANの利用者が多いのでやはりオプティマイズが
最も進んでいるのがFOTRANということが二つ目の理由でしょう。

最近ではCでも問題ないとは思いますが、早い計算機ほどFORTRANが
最も早い言語であるという傾向はあります。書けるのであれば
マシン語でベクトルユニットぶん回すのが最も早いでしょうが。

C++も一般的に使えるようになりましたがオブジェクト指向
風にnewやポインタを多用するとベクトル化率が落ちますので
便利なCとしてしか使い物にならないという話もあります。
2927 :2000/10/18(水) 23:07
>28
まだコンピュータの知識が足りないのでいくつか質問さしてください。

ベクトル計算機ってのはペンティアムのMMX命令のようなSIMDか
ItaniumなどのVLIWかどちらのことを言うのでしょうか?

ポインタを多様するとベクトル化が落ちると言うのは、
メモリのプリフェッチができないというという理解で正しいでしょうか?
3025 :2000/10/19(木) 11:18
>27
>25の言っている答えってのは、実行バイナリが変化するってことでは?
そんなわけないっしょ(w
変化するのは計算結果。ま、信頼性の問題だから、今は解決してるかもしれないし、
もちろんコンパイラを作った人の技術に依存するわけで。
あでもごめん、俺この目で見たわけじゃないんだ。
ただ、まったく分野の違う複数の先輩から同じ事聞いたんで、
「あ、そういうもんなのか」と頭から信じてる。
ただしかなり信頼のおける証言だと思う。

3127 :2000/10/19(木) 13:46
>30
そのコンパイラはどこのものを使ってらっしゃるのでしょうか?
26も言ってるけど、計算結果のかわるコンパイラなんて誰が使うの?って思った。

ただ、速度重視でコンパイルしたら通常と違うライブラリにリンクされちゃうってことはあるかも。
32>29 :2000/10/19(木) 21:16
ベクトル計算機というのはSX5やVPP5000などを指します。
インテルのMMXやSSEはこれらのベクトル演算機と似たもの
かとも考えますがそちらは詳しくないので分かりません。

簡単に説明しますとループ最内ループを自動的にベクトル命令を
使ってくれるように展開してくれるのが自動ベクトル化コンパイラです。
PCであれば自動的にfloat配列の演算をSSEを用いたものに
変換してくれるコンパイラということになるでしょう。
ベクトル型スパコンのコンパイラとしてはこのような
ものを用いる必要があります。

このようになっていますので、ルール内で綺麗な順序で
配列要素にアクセスしないと自動ベクトル化できません。

なおプリフェッチなどは関係ありません。それはキャッシュの話です。
もちろんスパコンでなくてもこのキャッシュ関係で配列に
順アクセスするのが最も早いという事情は同じだと思われます。
3325 :2000/10/20(金) 12:39
最適化のレベルで計算結果が変わるって話だけど、念のためにもう一度
先輩に聞いてみた。
「まったく違う答え」ってのはいい過ぎだったかも知れん。
ただ計算の順番を勝手に入れ替えたりして、シビアな繰り返し計算を
ガンガンやると誤差が積み重なって、目に見える差がでることが
あるらしい。  大げさに書いてスマソ。
だからこれはFORTRANに限った話じゃないし、
メーカーが違ったら同じFORTRANでも違う計算結果が出る可能性が
ある、という話と同じ次元。

↑これは実際この目で見た。LINUX上のGNU FORTRANとVPPのFORTRANでは
明らかに異なる結果を出した。物理的には同じ意味の結果なんだけど、
数字が2、3桁目でずれた。
「俺らの計算の有効数字ってこんなもんなんだな」って実感したよ。
ちなみにすべて倍精度計算。

詳細が知りたい人がいたらもう少し詳しく書いてもいいけど。
34名無しさん@1周年 :2000/10/20(金) 19:30
>>31
例えば、日立のSR8000なら
http://www.hitachi.co.jp/Prod/comp/hpc/foruser/sr8000/tebiki/frame.html
ここのマニュアルの
http://www.hitachi.co.jp/Prod/comp/hpc/foruser/sr8000/tebiki/fort_opt.html
この部分に注意書がある。
最適化オプションを最大にする場合はコンパイラのレポートを
ちゃんと確認して、結果のコンシステンシーもチェックしない
と怖いと思う。
35名無しさん :2000/10/20(金) 20:17
33>そこもうちょっと詳しく聞きたい。私もフォートランの場合は
Cに比べて誤差の積み重ねが謙虚に出ると思うし実際あぶなっかしい
なぜ数値演算用の言語なのに,一番大事なとこでちゃんと結果がでないのか?
またCなどの参考書には必ず,基本型の数値範囲を表示するプログラム
(例えばlimit.hのヘッダ内に記述されている)のにフォートランでは
そのような記述が書かれていないのか?(私の知るところf90に関しての
参考書はせいぜい5冊ほどしか知らないが,そのすべてに載っていない)
これでは怖くてプログラムもできやしない。理論が間違っているならともかく
数値演算の誤差でオーバーフーローを起こしたらたまらない。
36無学さん :2000/10/20(金) 20:42
>35
なんか買い違いしていないか?
CPUが同じならばCで書こうとFORTRANで書こうと
数値演算の精度はその計算機に依存するだけであって言語とは
関係無し(IEEEで浮動小数点フォーマットの規格もあるが)
桁落ちなどで誤差が累積するのはプログラミングが単に下手な
だけだろう
もう少しコンピュータの基本を勉強すべきだね
37GNU/名無しさん :2000/10/20(金) 20:54
>33
詳細きぼーん。

だいぶ前だからかなり記憶は怪しいけどpgf77とg77で
結果が違ったことがあったような気がした。
別のコンピュータだったかもしれないけど。
3831 :2000/10/20(金) 22:40
>34
情報どうもです。
今まで考えたこともなかったですが、どうやら最適化レベルで結果の変わる世界もあるようですね。

>ただし、この最適化を行った場合、ハードウェアのデータ変換命令を用いるため、上記組込み関数を高速実行できるが、組込み関数の引数が中央値の場合、偶数方向に丸めるので注意が必要である。

こういう命令ってペンティアムにもあるのかな?
39名無しさん :2000/10/21(土) 17:21
>36
私が質問しているのは今現在f90を使っている人たちであり
あなたではない。プログラムが下手とかいうのならば数値演算の
誤差の回避方法を教えていただきたい。数千,数万の計算での誤差
というのはあまり気にはならないかもしれない。
しかしこれが数十万という数値演算の場合,その誤差の伝播は
結果に著しく反映するのです。それに計算機だけでなく
コンパイラにも依存するのではないのですか?
それと数値演算の場合,プログラミングテクニックはあまり
問題にならない。
 数値演算の場合は現象をどのようにモデル化するかが
重要であるからだ。数値シミュレーションにおいてもっとも重要
なのが誤差の問題なのです。どのように誤差を回避できるかを
議論しているのに,おまえはへたくそといわれたらお話にもならない。
それともあなたは数値演算に関してはトップの方なのですか?
それにあなたは一つの計算機しか使ってないようだが,複数の計算機
を扱っているひとも世の中にはいるのです。だいたい勘違いを買い違い
などと書いて,送信するときにチェックもいれない人間に誤差の関係
が分かるはずもない。
40名無しさん@1周年 :2000/10/21(土) 19:30
>36

>CPUが同じならばCで書こうとFORTRANで書こうと
>数値演算の精度はその計算機に依存するだけであって言語とは
>関係無し(IEEEで浮動小数点フォーマットの規格もあるが)

optimist

41外野(昔、某センターニュースの記事を書いた事がある人) :2000/10/22(日) 15:01
 誤差を回避するには多倍長演算をするしかないだろうな。πの
計算は大抵これでしょ?言語によらず、これは一緒。東大の情報
基盤センターが改名する前のセンターニュースに一度載っていたよ。

大型機に限って言えば、CとFORTRANの大きな差は最適化の方法が
解っているかどうかってとこでしょうね。FORTRANは歴史が古いので、
コンパイラの内部には最適化手法が山積みになっている事に間違いは
無いよ。第二にベクトル化/並列化を行うときのインライン展開を
考えると、FORTRANに比べて関数が関数を呼び更に再帰を使うCは
ベクトル化や並列化を行なうのがむつかしく、効果があまり
期待できない。(嘘だと思ったら,そっくり同じ動作を行なう
プログラムを書いて計測してみればよい)

f90は今のところ,CとFORTRANの折中といったところで言語としての
地位が中途半端であまり手を出す人はいませんね(あくまで現時点の
話よ)。速さを求めるなら f77 で、複雑な機能を使いたい時にはCで
というところで役割分担をさせた方がよいという人が多数派みたい
ですね。(しかし大型機は上位ビットと下位ビットがひっくりかえるので
さらに面倒なのであった)


#「大型のダブルなら64ビット演算だから誤差は気にするな」という
#突っ込みはなしね。
42無学さん :2000/10/23(月) 11:43
>35=39
何処の文脈見りゃF90の話なんだい?
そもそもコンパイラの最適化から話が出て最適化のレベルで
計算精度が異なると言う所に割り込んでの発言だろうに
そんなにF90の計算精度が気になるなら使うの止めたらいいじゃん
少なくとも昔の大型機でF77の最適化と計算精度や最適化の癖に
ついてはマニュアルに明記してあったからそれに合わせて最適化のレ
ベルとコーディングの仕方に工夫が必要だったんだよ
悪いけど俺は計算機はスパコンから組み込みCPUのプログラムまで
手広く手がけているのでCPUやコンパイラの癖は多分君よりは知っ
ているよ。
誤字脱字はオン書きで電話代がもったいないのとMS−IMSの変換
がお間抜けだからあしからず
43sage:2000/10/23(月) 14:23
句読点は正しく使いましょう。
44名無しさん@1周年:2000/10/24(火) 09:27
つまらん揚げ足取りか
4525=33:2000/10/24(火) 13:55
>35、37
そのとき計算したのは素粒子論の格子ゲージ理論に基づいたクォーク間の
ストリングテンション(素粒子論ではかなり基本的な物理量だと思って)。
(だったと思う)
モンテ・カルロ法を使って多重積分を延々と続ける。経路積分ってやつだ。
モンテカルロだから統計の手法に従って誤差が計算できるんだけど、
コンパイラ(丸め誤差の取り扱い?)の違いに起因する誤差と
ほとんどいい勝負だったような気がする。
(モンテカルロの誤差は計算を続ければ小さくなるけどね)

こんなもんでいい?
「詳細」って書いたけど、コンパイラ(CPU?)が何をしたかを聞きたいなら
期待はずれだよ。断っておくけど俺が書けるのは「何を計算したか」だけ。
計算機の専門的なことはさっぱり。

46名無しさん@1周年:2000/10/24(火) 18:54
CPUにはCPUなりの都合があるからそういうことを加味した
プログラムを書かなきゃ単純に理論通りのプログラムを組んだって
まともに動く分けないだろう特に多重積分じゃね
CPUのレジスタは有限なんだからその有限なりソースを有効に使う
プログラミングスキルが必要でCPUの事は知らないと言いながら
計算誤差に関して文句たれるのは言っていることが矛盾していないか
そんなに誤差が気になるならばAlpha UNIXのFORTRANで4倍精度でも
使ってみたらいいじゃん有効桁数が30桁以上とれるぞ
47名無しさん@1周年:2000/10/25(水) 12:05
>>39
桁落ちが生じるのは計算機の本質的な限界だけど、その誤差を
コントロールできず累積させてしまうのは人間の側の問題だと
思います。
>>45
虚時間の離散化の幅が荒いとか、特異値分解をしていないのでは?
>>46
問題によっては扱う数値のスケールが指数関数的に違ってくる場合
があるので、そのような場合は精度を倍にしただけでは追い付かな
いこともあります。
4845:2000/10/25(水) 17:17
>47
>桁落ちが生じるのは計算機の本質的な限界だけど、その誤差を
その通りなんだけど、要求される精度が得られてることは
確認できたからそれでよし、としたわけ。


>虚時間の離散化の幅が荒いとか、特異値分解をしていないのでは?
原因考えてくれてありがとうございます。
でももうこの分野からは足を洗ったので、原因は闇の中です。(w

>問題によっては扱う数値のスケールが指数関数的に違ってくる場合
同意。
4947>48:2000/10/25(水) 17:48
>でももうこの分野からは足を洗ったので、
とても賢明な選択に思えます。(良い意味で)
5045:2000/10/26(木) 16:38
>49
ってことは47はまだ首までどっぷり漬かってるってわけね
5147:2000/10/26(木) 18:47
>>50
素粒子ではないけど物理系のDです。欝。
52名無しさん@1周年:2000/10/27(金) 12:14
CよりFortanが速いと伺ってます。
しかし比較演算子とかどうにかできませんか。
CやBasicは>、<でわかりやすいのですが。
fortranはGEとか・・・
直感的でない気が・・
53名無しさん@1周年:2000/10/28(土) 02:56
>52
Fortran90では>、<、<=、>=ですよ。
さらにCやC++の{}に比べてFortran90のほうが
非常に直感的で分かり易いと思います。ちょっと複雑な
コードになると、例えばどこまでが一つのループなのか分かり難い
んです{}だと。END DOなら一目瞭然です。
54名無しさん@1周年:2000/10/28(土) 08:38

そうそう、どう考えてもFORTRANの方が直感的だよ。
55名無しさん@1周年:2000/10/28(土) 10:12
fortranだと他人が書いたもんでもある程度分かるよね.
Cだとほんと書いた本人しかわからんぞ.
56名無しさん@1周年:2000/10/29(日) 16:44
ある本で読んだことがあるけど
Fortranは超特急、CはFortranほどのスピードじゃないが
陸も海の空にもいける乗り物だと

Fortranは科学計算用でCは大規模システム用では
もっともお互い近づいていく気がするが・・
5756:2000/10/29(日) 16:47
>55
Cの本でも同じようなことが書いていたぞ。
おそらくあたなのみたのはひどいコーディングのプログラムじゃないかと。
もっともBASICほどひどいものはないけど。
GOTO・・・これはやめてほしい。
58名無しさん@1周年:2000/10/29(日) 22:43
昔は確かにCは数値計算に使うなって言われてた。まず単精度浮動小数点の計算しても
内部で勝手に倍精度に直して速度が低下するとか、標準の乱数ルーチンが思い切り周期が
短いとか。それとLAPACKやBLASその他の信頼性のあるライブラリが無かったことと、
上にも書いてあるが、最適化がなってなかった。最近はこれらの問題はかなり解決されている
ので、別にどっち使っても構わないと思うが。
59名無しさん@1周年:2000/10/30(月) 08:44
Cで書かれた数値計算の本が増えてきましたよね。
オーム社の数値計算ハンドブックはBASIC。
最近JAVAで書かれたやつも見ました。
FORTRANは比較的少ない気がしますが何ででしょう。
60名無しさん@1周年:2000/10/30(月) 13:52
最近FORTRANがはやらないのはCやC++のように気軽に使える
コンパイラが無いのと、GUIのプログラミングに向かないからでは

多次元配列を使う時はやっぱりFORTRANのほうがプログラミングが
楽で良い
61名無しさん@1周年:2000/10/31(火) 07:37
全体はCで書いて必要なところは
Fortranで書くということはできないんですか。
つまりCからfortranを呼び出すということ。
62名無しさん@1周年:2000/10/31(火) 12:57
>>61
出来るらしいけど、パフォーマンス的にどうなんだろう?
あと、複素数の扱いも気になる。
63名無しさん@1周年:2000/10/31(火) 15:34
C++でクラス作ってメンバ関数をinlineしてもダメ?
64名無しさん@1周年:2000/11/01(水) 08:21
Cは演算子のオーバーロードができるようになって
飛躍的に使い勝手がよくなった。
たとえば行列計算を
A=B+C
みたいに書ける。
ただパフォーマンスとしてはどうかしらないけどね。
65名無しさん@1周年:2000/11/01(水) 09:14

FORTRAN90では行列やベクトル計算のA=B+Cなんて標準だよ。
もちろん演算子のオーバーロードもできる。なんてったって、
FORTRANは数値計算用だけあっていろいろ便利なものが標準
装備されてるよ。複素数とかね。

自分でCLASS作って。。。なんてじゃまくさいんだよね。


66名無しさん@1周年:2000/11/01(水) 16:12
>65
>自分でCLASS作って。。。なんてじゃまくさいんだよね。
一回作ってしまえば使いまわしができますね。
67名無しさん@1周年:2000/11/01(水) 19:03
以前C++の数値計算ライブラリ探したことがあるよ。
十万だった・・・・
68名無しさん@1周年 :2000/11/03(金) 18:13
RedHat LinuxにFortran90ただでついてるよ
69>68:2000/11/03(金) 23:34
マジ? バージョンは何ですか?
70>68:2000/11/10(金) 02:33
g77の間違いではないですか?
71名無しさん@1周年:2000/11/17(金) 10:34
確かにfortranは数値計算のライブラリが充実していますね.
IMSLライブラリには結構複雑なな偏微分方程式の解を求める
関数が装備されてるのが魅力ですね.
72名無しさん@キティ立入禁止:2000/12/07(木) 16:38
FORTRAN90は今や数値計算の分野ではスタンダードです。
73名無しさん@1周年:2000/12/26(火) 23:12
## LinuxやFreeBSDを導入しなくとも,Windows上で,
>## フリーのGnuのFortranが使えるようです.
>## ダウンロード先は,調べてください...

申し訳ないのですが、どちらに行けば手にはいるのか
教えていただけないでしょうか?

探してはいるつもりなのですが、上手くヒットしません
お願いします。
74名無しさん@1周年:2000/12/27(水) 12:57
http://www.fortran.com/fortran/free.html
でいろいろ見てくれ。で使えそうな奴を逆に教えてくれ。
75名無しさん@1周年:2000/12/27(水) 13:01
おっと書き忘れ。GNUだったら77だけど
http://www.geocities.com/Athens/Olympus/5564/
76名無しさん@1周年:2001/01/07(日) 18:23
F77はメモリの動的確保ができないがヤダ
F90でできるんなら使うけど
77名無しさん@1周年:2001/01/08(月) 04:39
>76 See >>15 !!!
78名無しさん@1周年:2001/01/09(火) 03:06
Frotran90の良い本を紹介してくださると幸いです
79名無しさん@1周年:2001/01/12(金) 20:25
Linux(i386)上で動く商用のFortaranコンパイラって
どれが一番いいですか?
80球大脳:2001/01/13(土) 17:40
>>78
戸川隼人『ザ・Fortran90/95』サイエンス社
富田博之『Fortran90プログラミング』培風館
東田 他『入門Fortran90実戦プログラミング』ソフトバンク ←おすすめながら現在品切れ中
M.Metcalf,J.Reid『詳細Fortran90』bit別冊 共立出版
81名無しさん@1周年:2001/01/16(火) 02:02
Cで作った共有メモリに
Fortranからアクセスする方法誰か知らない?

CERNLIBのPAWの共有メモリにCプログラムで
作ったヤツを使いたいんだけど・・・・
82え?フォートラン:2001/01/17(水) 23:44
なにいってんの?この人たち?
Cに決まってんじゃん!
83名無しさん@1周年 :2001/01/18(木) 00:16
>>82
Fortranもいいゼ〜
歴史が深いよ。
84名無しさん@1周年:2001/01/18(木) 02:03
ソフトバンクがfortranの本を出しましたか!
買おうかなあ...
fortranでいいリンク先あったら教えてください
85趣味レート?:2001/01/18(木) 02:41
>>78, >>84
Fortranに限ったことではないけど、数値計算するなら必須(?)
ってたぶん外出だと思うけど…

http://www.ulib.org/webRoot/Books/Numerical_Recipes/
求めていたものと違ったらスマソ
86名無しさん@1周年:2001/01/18(木) 20:05
8782:2001/01/19(金) 22:46
86>
う〜ん・・・そうなんだ
なんかこれって極論?そこまでの議論はいまわれわれがそれぞれ直面
する問題にたいしての答えになってるのかどうか?
ずいぶん古いご時世の人だな♪
88名無しさん@1周年:2001/01/19(金) 23:08
>>81
リンクすれ
89名無しさん@1周年:2001/02/06(火) 13:34
>>79
俺も知りたい。
90名無しさん@1周年:2001/02/06(火) 16:38
>82
「本物のプログラマ」ってのはジョークじゃん!
本気にしてどうするの?

あんたCが好きみたいだね。俺、C++も使ったりするけど
今はFORTRAN90がいいね。OOPもできちゃうしね。
数値計算ではC++かF90だよ。Cなんて使ってる人間は
いないね、少なくとも俺のまわりには。
91名無しさん:2001/02/07(水) 13:56
Cなんて古いね。だれも使ってないよ。
92下っ端PG:2001/02/11(日) 21:08
>Fortran90でOOPもできちゃうしね

初耳ですが、、Fortranは77しか知らないのだけど、
まじですか?
93名無しさん@1周年:2001/02/11(日) 21:49
構造体とか演算子オーバーロードとか
94下っ端PG:2001/02/12(月) 00:23
>93
それってOOPなのか、
95名無しさん@1周年:2001/02/12(月) 00:54
f90をOOPLっていうのは抵抗あるなあ〜
継承、動的束縛ないもの。
96名無しさん@1周年:2001/02/12(月) 05:47
>95
だったら、OOPって言わなければいいだけのことじゃん。
97名無しさん@1周年:2001/02/12(月) 05:49
OOPの定義求む!
9895:2001/02/12(月) 14:03
>>96
(脱力)いや,だから90とかがOOPって言ってることに対して言ってるの.
オレはf90マンセー派だよ.
Cで数値計算するのは余計な労力が必要だし,
C++はパフォーマンス出しづらいもん.

fortranのI/Oの仕様だけはなんとかしてほしいって思わない?
printf()互換にしてくれたらどんなに楽なことか...
99名無しさん@1周年:2001/02/12(月) 20:10
10 WRITE(*,*) "OK, I got it"
WRITE(*,'(6A,3(5F16)),2I') "I Love",F,O,RTRAN,90
WRITE(*,'11(10I)',ADVANCE=NO) y,o,u,a,r,e,r,i,g,h,t
READ(*,*,err=10) Ans
100名無しさん@1周年:2001/02/19(月) 22:30
>>98
F90で数値計算するメリット、
Cでのデメリットは?具体的に。
ライブラリがあるから?
MATが使い易いから?
101名無しさん@1周年:2001/02/19(月) 22:31
つーか、数値計算にOOPなんて要るわけ?
102名無しさん@1周年:2001/02/19(月) 23:21
>つーか、数値計算にOOPなんて要るわけ?
開発期間とか再利用を考えてのことでしょ。

たとえばそれによって開発時間が10分の1になるなら
たとえプログラムの実行時間が10倍遅くなっても
プロジェクトの期間(=開発+実行時間)が短縮される。

つまりそのプロジェクトにおいてプログラムの実行時間自体が
重要な場合はそれほど必要ない。

だから過去の遺産がクラスライブラリ化されるまではメリットが
少ないかもしれない。実際は探せば大概あるけれど。

しかし、所詮は小さなプロジェクトでは
オブジェクト指向の真価は発揮されようがないとも思う。

10395:2001/02/20(火) 14:36
>>100
あくまでCと比較ね.
f90のメリット
complex型の存在.
→周波数領域の計算が楽
ポインタを使わなくても,行列を動的に確保できる
→最適化が効きやすい
数値計算向きの優秀なコンパイラの存在(Digital fortran等)
ライブラリ...はまあ問題の種類への依存が強いのでノーコメント.

デメリットは
難解なI/O仕様
コンパイラのチェックが甘い傾向にある
APIとのインターフェースが環境依存
という感じで,本質とはちょっと違う部分だと思う.

24, 35, 53, 54, 55に書いてあることは,俺には理解できない.

あと,数値計算とOOPLはなじみにくいという意見です.
継承,動的束縛,カプセル化のいずれもが速度・サイズの点で不利.
数値計算では一般的なプロジェクトよりも実行時間の割合が多いと思う.
104あぼーん:あぼーん
あぼーん
105名無しさん@1周年:2001/02/21(水) 04:57
>あくまでCと比較ね.
>f90のメリット
>complex型の存在.
>→周波数領域の計算が楽
>ポインタを使わなくても,行列を動的に確保できる
>→最適化が効きやすい
 http://www.geocities.co.jp/SiliconValley/1002/c99d/c99d00.htm
によれば、C99では複素数型(_Complex型)や可変長配列がサポートされるようですよ。
まだ処理系は出てないけど…。
106名無しさん@1周年:2001/03/14(水) 14:44
f90でグラフィック処理はできるのか?数値演算との兼ね合いが大事でしょう
f90を使うメリットが見当たらない
107QP:2001/03/14(水) 19:23
>>106
それは言語仕様の問題ではなくライブラリの話ですよね。
別にf90を擁護するつもりはないが。
108名無しさん@1周年:2001/03/25(日) 04:30
C++はコンパイラが演算順位を厳密に守らないから数値解析に使えない。
もし、有限要素法で解析して図を出したいのならS言語が便利だ。
109名無しさん@1周年:2001/03/26(月) 06:52
>C++はコンパイラが演算順位を厳密に守らないから
具体的にはどういうことなの?
110ふーん:2001/04/07(土) 17:11
富士通のスパコンのコンパイラ作ってる奴が言ってた.
まず,CもしくはC++で安定動作を確認.カーネルやデバイス周りの開発.
次に,Fortranで演算パフォーマンスのチューニング.
CやC++の演算に関しては後回し.しかし,ライブラリに関しては共通部分多し.
111名無しさん@1周年:2001/05/01(火) 06:57
スレ立てる前に過去ログを見ろ
112  :01/09/27 03:56
今だと、Linux用のIntel社製のC++とFortran90のコンパイラが
無料で(ただしサポートなしで)手に入れてずっと使うことができる。
  http://developer.intel.com/software/products/eval/
これのLinux用のコンパイラのNon-Commercial Unsupported
Softwareを見よ。 ただしこれで販売する製品のオブジェクトや
バイナリを作ることはできない。
OSはRH6.2 あるいはRH7.1互換である必要があり、
多少最初にインストールするには知識が要る。(サポートは、なしだ)
だが、確かにIntel系のCPUの最適化ができる。
Athlonでも動作する。


サポートありのバージョンでもアカデミックはたしか100ドル程度。
113名無しさん@1周年:01/09/28 21:00
fortranでのblas+lapackは、もはや業界標準化しようとしてます。
もはやほとんどfortran言語の一部になりつつあります。
これは結構なメリットですよ。
ルーチンの使用法なんかもweb検索すると、すぐわかる。
スパコンでも昔は各社独自のライブラリでした。
いまはblas+lapackがなかったら相手にしてもらえない。

数値計算の記述の簡明さにおいては、f90が最適だと思います。
f90からCに移行するメリットはない。
保守的なf77ユーザーでさえf90に移行しつつあります。
ただf90はOOの呪縛にしばられてて、ちょっと仕様が混乱気味です。
注意して使いましょう。
バッチ的処理の数値計算にOOは無意味です---混乱を招くだけ。
関数とデータをひとくくりにすると身動きが取れなくなります。
それらは独立の存在物として扱うべき。
(なんでもかんでも勉強しても無駄です。
配列的表記法、sumやmaxval等の便利関数、動的allocationだけ
使えれば十分。構造体など必要なし。
f77 userなら3日もあればじゅうぶん慣れます)
114名無しさん@1周年:01/09/28 21:52
f77からf90へ移行しました。
f90の機能で使っているのは動的allocationぐらいだな。
115わかっdfた:01/09/29 08:23
116名無しさん@1周年:01/09/29 17:36
IntelのIA32用コンパイラとCompaqのAlpha用コンパイラのおかげで
Linuxの環境でもF90に完全移行できるようになった。多謝。
ビジネスに使っているわけではないからこれで十分だ。
117名無しさん@1周年:01/10/01 03:48
まぁ、C に移行するよりは f90 の方がええんやないかな。
C ももう十分古いよ。
complex 型とかあるし、別に f90 を使ったんでええと思う。
ただ、C に比べて情報量が少ないのが難点かもしれんが。

C++ は、量子化学計算界では
ProteinDF というプログラムで使われている。
開発効率、機能追加可能性、マシン間並列計算可能性が高いということで
なかなか利用価値は高かったそうだ。

プログラム全体を高速化することに意味はない。
高速計算が必要な部分だけそれなりのコーディングをして、
それ以外を OOP にするという使い方をすれば、
OOPL をそれほど毛嫌いする必要はない。
全部 OOP にしなくてはならないなんて規則はないわけだし。
C++ から f90 のルーチン呼んだりとかできるんでしょ?
計算のカーネルだけ f90 に任せるとか、
ハイブリッドな使い方してもいいんじゃないかな?
勉強する手間は1.5〜2倍になるかもしれないけどね。

>>113
構造体使わなかったら、
悪夢の引数数行羅列なプログラムが
できることもあるんだけどね...。
118  :01/10/01 10:25
「真の配列」特に多次元のものを持たないC言語は
ポインター(実際はアドレス)を乱用せざるをえず、
コードの可読性が低く、INCLUDEでシステム
のヘッダーを読み込むなど移植性が低すぎる。
C++はオブジェクト指向という本来強力で
安全さを増すはずの機能を安易にC言語の
2階部分として建て増しした為に損なっており、
また、プログラムを書いた者の意図を十分に
表明あるいは指定せずに関数オーバーロードが
出来てしまったりとか、勝手に引数の型の自動
変換をするとか、継承というプロトタイピングには
便利だが、もつれたダーティなコードを次第に
温存しやすそうな機能とか、仮想XXとか、
ようするに言語仕様として「複雑」であるのが
欠点。動的機能はソースを読んで検証することが
容易ではない。OSのようなものは、ユーザー
プロセスがちゃんと完了まで動作すれば、大体
において動けばときどきハングしてもよいのだが、
数値計算などのクリチカルな応用においては、
計算の過程が最後まで動いたとしても、結果が
ときどきおかしかったりなどの再現性がない
症状や、再現性を実現しにくい仕様になっている
と、解決がOSのデバッグ同様に難しい。

概して、最先端の科学・技術計算のコードを書ける
人間は非常に希少資源であり、そういった人間が
安易に乱発される新機能付の言語や言語の方言
に付き合わされることはトータルとしてみた場合に
資源の無駄使いであることが多いのではないか?
問題の解法を理解しているあるいは考案できる、
探索できる人間と、計算機科学の最新の実験的
機能を駆使した新言語やプログラミングシステム
でしのぎを競っている分野もよく理解してすばら
しいコードを書くというのは両立させるとしたら
それだけ人材の供給が細くなる。
 最先端の計算技法・解放の研究環境として必要な
ものは:
   信頼性が高いシステム。
   定義のはっきりしたあいまいさの少ない記述言語。
   使わない機能が少ない、機能を絞った言語。
   安定した開発環境。
   他へ移植されやすい言語。
   人間が読んで判りやすい記述が出来る言語。
   人間が書きやすい言語。
   最後にランタイムデバッグが容易な言語。
といったぐあいかな? 異論はいろいろあるだろうけど。
119名無しさん@1周年:01/10/03 16:50
Linux上でifcをFortranコンパイラーに使ってMPICHを動かしてるひといます?
うまくいかず、困ってます。
環境
VineLinux2.1.5
MPICH1.2.2.2
120 :01/10/04 00:04
どこで困っているかが、読み取れないのでは
なんともしようがないのでは? ifc は
ちゃんと動くので?
121119:01/10/04 11:37
ifcは動いてます。
mpichでmake,make installするのですが
mpif90でコンパイルすることができません。

mpichのconfigureでいろいろオプションを指定して
やってみたのですがうまくいかず困っています。
122名無しさん@1周年:01/11/07 09:11
>>113
構造体は要るだろ。
たとえば、配列本体とその大きさを構造体に入れておく、
とかやりだすと、構造体なしじゃ生きていけない体になるよ。
123    :01/12/15 18:56
Intelから出ているLinux用の無料の
IntelFortranCompiler(Fortran90)とC++を
導入して利用する方法がLinuxの板にいけば
でているよ。
124名無しさん@1周年:02/07/09 02:06
このスレは死んでいる
125名無しさん@1周年:02/07/10 02:05
>>122
> たとえば、配列本体とその大きさを構造体に入れておく、
> とかやりだすと、構造体なしじゃ生きていけない体になるよ。
配列の大きさはわざわざ指定しなくても、
REAL(DP), DIMENSION(:,:), INTENT(INOUT) :: a
見たいな書き方もできますよ。

もう読んでないでしょうけど。
126名無しさん@1周年:02/07/10 12:19
>>118
で、何を使うのがお勧めなの?
127名無しさん@1周年:02/07/12 22:50
            (⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒
            ( どうやって誘拐しようかなぁ〜。。
          O  ( 最近溜まってるからナぁ。   
        ο    〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
        。    そんな犯罪をしないで、ここに逝け!http://fun.to/muke サンプルはタダっす
  うふふ
___∧_∧__
   ( ・∀・)
――(    )―┘、            マツデチ!    キャッキャッ!!
‐――┐ ) )――┐         ≡≡∧,,∧   ≡≡∧ ∧
    (__ノ__ノ    . |         ≡≡ミ,,>∀<ミ ≡≡(,,・∀・)
                     ≡≡ミ_u,,uノ  ≡≡ミ_u,,uノ
                   "~"    """  :::     "~""~"
                

128DELL13:02/07/13 21:39
熱流体解析でFORTRANを使っているんですが,世間一般はFORTRANを使っているのですか?
129名無しさん@1周年:02/07/18 03:20
もしよければ教えてください。
今fortran使ってたのですがfatal error C1007がでてきたのですが、
なんなのでしょうか?
130名無しさん@1周年:02/07/18 18:08
>>129
Visual fortran?
131名無しさん@1周年:02/07/23 11:44
>>128
流体業界はおもいっきしFortran。
132名無しさん@1周年:02/07/24 03:35
こちらプロセッサな人です。

フォートランは良く知らないけど、Cについて誤解があるみたいなのでカキコ。
Cのライブラリ(IEEEな)に関して、特に数式に関しては
アセンブリでかかれていることが多いです。
深い部分にリカージョンを使うことはまれ。
っていうか、アセンブリにはリカージョンはない。

また、言語レベルでの浮動小数点演算に関してははっきり言ってどれも同じ。
ちなみに、CではFORTRANのライブラリをそのまま(バイナリ)使えます。
逆は難しい。



133<_ _>:02/07/24 12:55
>129

C1000unknown fatal error; contact Microsoft
C1001internal compiler error; contact Microsoft
C1002compiler out of heap space in C2.EXE
C1003error count exceeded; stopping compilation
C1004unexpected end-of-file found; disk full or unmatched #if
C1005string too big for buffer
C1006compiler intermediate file create/write error
C1007invalid option on compiler command line
C1008no source file specified
C1009macros nested too deeply
C1010macro expansion exceeded available space
134名無しさん@1周年:02/07/25 00:24
Fortran95がFortran90とどこが違うのかを詳しく解説した
日本語の本にはなにがありますか?
135名無しさん@1周年:02/07/25 01:25
詳しいかどうかは知らんが
http://www.media.kyoto-u.ac.jp/htomita/

そういえばfortran2000てなかったっけ?
136 :02/07/29 03:48
サブルーチンの中で、ローカルに定義してALLOCATEで割付けた配列は、
DEALLOCATEしなくてもそのサブルーチンから抜けたら、自動的に
記憶域が返却されるのだろうか? 説明書を見てもよく分からない。

SUBROUTINE SUB(N)
REAL,ALLOCATABLE::A(:,:,:)
ALLOCATE(A(N,N,N))
 意味のある処理が続くがAのDEALLOCATEによる解放指示はしない。
END SUBROUTINE SUB
とやったときに、割り付けられたAの記憶の実体は
このサブルーチンを抜けたときに消滅回収されるのかな?
具体的な処理系で実験してみると、回収されるようだ。
 たとえば Nを結構大きくとって、沢山回数呼ぶと、
もしも記憶の実体がどこかに残留するならば、とうの昔に
割り付けが不可能になるはずだが、そうはならない。
137名無しさん@1周年:02/08/07 22:14
>132
直接Cのライブラリを呼ぶのではなく、
FORTRANから使われることを意識したCのルーチンを
間にかましてあげれば解決することが多い気がする。
138名無しさん@1周年:02/08/08 00:42
>>136 ぼくもよくわかりませんが,
必ずしも回収されるとも限らないようです。
ぼくの経験では,
面倒なのでそういう仮定で組んでました(およそはそれでいけた)が,
なにかのときに上手くいかずしかたなくdeallocateを
いれていくようにした記憶があります.いいかげんですみません。

すくなくともその保証がないです.A(N,N,N)の領域は,
次にsub(N)を呼ぶことを仮定してreleaseせずとっておくと
いうことも考えれます。実際,細かいルーチンだと,
いちいちリリースしてたら,そこで律速しかねないから,
そういうようなルーズな仕様になってるんじゃないかと思います.
139名無しさん@1周年:02/08/11 02:35

グローバル変数とローカル変数の使い分けについて教えて下さい。


あるサイトには
> プログラム全体を通して常に共有する必要がある変数は、グローバル変数とし、
> 限られた関数内でしか使用しない変数はローカル変数とすべきです。

となっていました。確かにこれはこれで十分理解できるのですが、私としては次の
ようなルールも有りかな、と考えています。

・グローバル変数は PARAMETER 宣言された変数のみとする

(パラメータは変数じゃないだろ!!というツッコミは勘弁して下さい。
ここではCOMMON文やMODULEでやり取りされる変数の事を、グローバル変数
としました。)


こうする事のメリットは、
・各 SUBROUTINE で変更が加えられる変数が明らかになるため、バグ取りが容易になる
(特にf90以降では INTENT が使用できるため、さらに明確になる)

と考えています。

その反面デメリットとしてはグローバル変数が減る分、
SUBROUTINE 等の引数が増えるのは事実でして、下手をすれば引数だけで2行3行と
なることもあり有り得、その分バグがもぐり込みやすくなります。


私自身としては、引数に関係したバグは比較的見つけやすく、かつコンパイル時
に発見される事も期待できる事から、バグの取りやすさのみに着目すれば、デメ
リットよりもメリットの方が大きいと思うのですが、fortranの多くのソースでは
COMMON文が多用されてますよね。



やはりこの方法には問題があるということなのでしょうか。
140名無しさん@1周年:02/08/11 13:16
そもそもcommonは,使うべきではないです.
データフロー(どこでつくられどこで引用されるか)
がわからなくなってしまいます.

fortranプログラムで重要なのは,
データ,データ構造,データの関数関係です。
これを尊重したコーディングをすべきです.
変数を使いまわすことも極力避けるべきです。
理想的には変数はonce-writeとすべきです。

グローバル変数は使うべきでないと思いますが,
>グローバル変数は PARAMETER 宣言された変数のみとする
なら,まあまあ,納得できます。

subroutineの引数がふえるのは,
いまのfortranでは仕方がないです。
構造体をつかうのもデータフローが不明瞭になるのでよくないです.
で,バグを押さえるには、
「必要以上にこまかくルーチンを分割しない」ことです.
「サブルーチン化」には,
1.ブロック化してプログラムを見やすくする
2.パターン化された処理を一つにまとめる(関数化する)
の二つの意味がありますが、実は1つめにはあんまり意味がないんです。
emacsのsearchなら、cyclicにファイルをサーチしてくれますし、
「変数の使いまわしをしない」に気をつけてプログラムを書くなら
プログラムの長さが長くなっても問題はないです。

141名無しさん@1周年:02/08/11 13:21
たとえば,

integer(4) function parameter1()
parameter=1
end

なんてものをつくってglobal変数のかわりにすることも
可能です。[引用時に()を付け忘れるとヤバイのが難点です]
142名無しさん@1周年:02/08/11 13:28
サブルーチンへ変数引渡しがきちんと行われてるかどうかは
サムチェックをかけるのが簡単です。
f90ならa(n,m)に対して,
print *,' suma=',sum(abs(a))
としてsubroutineの内外でcallしてやればちゃんと引き渡されてるか
どうかチェックできます。
143139:02/08/11 19:13
>> 140
アドバイスありがとうございます。

やはりCOMMON文を使った変数の受渡しは好ましくないのですね。
前からもやもやとしていたものが、すっきりしました。


> 理想的には変数はonce-writeとすべきです。
この once-write とは 「変数の使いまわしをしない」と同義なのでしょうか。
googleで調べてみても、これだ!と思われる物がみつかりませんでしたので。


>> 141,142
なるほど、こういうテクニックがあるのですね。
参考にさせていただきます。
144コギャルとHな出会い:02/08/11 22:12
http://kado7.ug.to/net/


朝までから騒ぎ!!
   小中高生
 コギャル〜熟女まで
   メル友
  i/j/PC/対応

女性の子もたくさん来てね
  小中高生大歓迎です                 
全国デ−トスポット情報も有ります。
全国エステ&ネイル情報あります。

  激安携帯情報あります。
145名無しさん@1周年:02/08/11 22:25
>この once-write とは 「変数の使いまわしをしない」と同義なのでしょうか。
>googleで調べてみても、これだ!と思われる物がみつかりませんでしたので。
ええ,ぼくはその意味で書きました。
f77だとworkエリアを上位ルーチンから渡していく必要が
ありましたが,f90だとその必要もないですしね。


「COMMONは危ない」というのは多くの人の共通認識で,
せめてmoduleを使おうということになっているんだと思います.

まだ構造体を使うほうがましです。でも構造体でもその一部を
書き変えたりすることをすると,データフローが
わかりにくくなって,人のプログラムを読んでると
非常にストレスがたまります.subroutineの引数が50個
並んでるほうがずっといいです(実際その程度のものはざらです).

だいたい,昔の本には「ルーチンの長さは60行以内が好ましい」
みたいな意味不明のことが書いてありますが、
こういうことにこだわる必要は全くないです。
いくらルーチンサイズが長くても,変数がそのルーチン内
でユニークな意味を持っていれば(一たん書き込まれた後は
引用されるだけ),なら可読性においても問題はないです。

まあいろんなことをいう人がいますし,
一つの意見だとおもってください.
146139:02/08/12 20:56
>> 145
いつもありがとうございます


> 非常にストレスがたまります.subroutineの引数が50個
> 並んでるほうがずっといいです(実際その程度のものはざらです).

そうなのですか。
引数のずらっと並んだ自家製のSUBROUTINEを見て、「プログラム書く
才能ないなー」等と落ち込んでました。


> だいたい,昔の本には「ルーチンの長さは60行以内が好ましい」
> みたいな意味不明のことが書いてありますが、
> こういうことにこだわる必要は全くないです。

僕の場合には100行までと教えられましたが、構造を無視して分割
されたプログラムには疑問をもっていました。

これからは自信を持って大きなファイルを作れそうです。
147コギャルとHな出会い:02/08/12 21:59
http://kado7.ug.to/net/


朝までから騒ぎ!!
   小中高生
 コギャル〜熟女まで
   メル友
  i/j/PC/対応

女性の子もたくさん来てね
  小中高生大歓迎です                 
全国デ−トスポット情報も有ります。
全国エステ&ネイル情報あります。

  激安携帯情報あります。
148名無しさん@1周年:02/09/24 15:29
gnqsを使ってintel fortran for linuxでコンパイルしたソフトを
走らせたいのですが、スクリプトファイルの書き方がいまいちわからない
ので、教えてもらえませんか?
 具体的には

ソースで

write(10,*) wdata
read(20,*) rdata

として、スクリプトで
************************

#!/usr/csh
# QSUB -q testq
# QSUB

setenv F_FF10 file1
setenv F_FF20 file2

./a.out

***********************

という感じでやりたいのです。
問題なのは、プログラム中のwriteとreadのデータの受け渡しに
スクリプトでsetenvを使うとろこなんですが、intel fortran
の外部メモリの受け渡しに使われる環境変数が何かわからないという点です。
このコンパイラはF_FFではダメなんでしょうか?

149名無しさん@1周年:02/09/24 16:17
-------変態・MTTどこでも-------
---●●●変態痴女を紹介致します。●●●---
例えば>欲求不満オマ●コヌレヌレ女・露出オナニー痴女・
フェラチオおしゃぶり女・ミニスカ・ノーパン娘・巨乳パイズリ娘・
アナルSEXおねだり娘・オマ〇コ弄られマン汁グチョグチョ女・
SM牝豚・緊縛・浣腸・スカトロ・等・・・刺激を求めています。
●●●学生・OL・主婦・モデル・牝豚・女王様・オカマ等・多数!●●●
 090-8002-8356番   
下のURLを小文字に変換してください。
  http://www.エムティーティードコモ.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能-----



150コギャルとH:02/09/24 16:51
http://tigers-fan.com/~pppnn

http://sakayasan.net/zjjj1/

ヌキヌキ部屋に直行
  コギャルとヌキヌキ
  全国地域別出会い
151名無しさん@1周年:02/10/01 18:39
>>148
うちの大学のスパコンだとftn??ダターヨーナ。
ぐーぐるってみたけどよく分からん。がんばって調べれ。
152名無しさん@1周年:02/10/02 14:07
>>151
マルチ投稿して他スレで解決した模様
153148:02/10/03 13:34
>152

いや、解決してないので困っているところです。
ftnもやってみましたがダメでした・・・。
154名無しさん@1周年:02/10/03 14:34
155名無しさん@1周年:02/10/09 17:12
Fortranを勉強しなくては、ならなくなったプログラムに関する超初心者です
お勧めのFortranに関するサイトとか本とかあったらお願いします
156名無しさん@1周年:02/10/09 23:44
どのレベルのFortran言語かいな?
157名無しさん@1周年:02/10/10 02:43
水準3000
158名無しさん@1周年:02/10/10 06:20
猛烈な勢いで空回りしております
159名無しさん@1周年:02/11/09 00:18
はやくGNU FORTRANがFortran90の言語水準を完全サポートして欲しいと
切に思います。
160名無しさん@1周年:02/11/20 17:40
>>159
fortran95サポートならあるよ
161>>160:02/11/20 20:16
ちゃんとFortranのポインタとか、レコード型とか動的割り付け記憶とか
モジュール機能とか、ヴェクトル構文とかサポートされているの?
162名無しさん@1周年:02/11/20 21:02
Vector構文て90標準だっけ???(実装系拡張だった記憶が…)
163>>161:02/11/20 23:11
俺はまだ77使ってるのでわかりません
ttp://www.fortran.com/F/
ここにあるので自分で調べてください。あと報告よろしく

164162:02/11/22 21:37
申し訳ないがURLの中身詳しく見てない。
ベクトル構文てこんな感じの話だったっけ。

real,  dimension(3,3) :: mat
integer,dimension(3)  :: vec = (/1,2,3/)
mat = reshape((/1,2,3,4,5,6,7,8,9/),(/3,3/))
do j=1,3,1
print *, mat(vec,j)
end do

165名無しさん@1周年:02/11/23 15:21
人を[信じる] [信じない] よりも 現実を確認するのが
一番11ね!http://www.tyousa.com/
166名無しさん@1周年:02/11/28 21:42
無料のfortranコンパイラーがありましたら、教えて下さい
167VF:02/11/30 11:03
F90は、OOPじゃないと思うんだけど。

いくらMODULEが使えたとしても、それはC++のNAMESPACEに近いものでしかないし、
コンストラクタ、デストラクタはないし。

確かに、データのカプセル可は、MODULE内でPRIAVTEを使うことによって可能にはなる。
が、USEされるMODULEがUSEし、それが続くと、少々鬱だ。。。
USEした際、ONLYしてくれた方が、読みやすくなる。

それでも、配列処理に関して言えば、F90は便利だけどね。

でも、データの隠蔽を可能にしておきながら、コンストラクタ、デストラクタがないのは謎だ。。。


168VF:02/11/30 11:06
ついか。

あっ、でも、OOPの定義にコンストラクタとかがないんなら、OOPなのかもしんない(ワラ
169名無しさん@1周年:02/12/17 04:37
Linux用であれば、インテルCPU向けのFortran90コンパイラが、無料で
ダウンロードして使える。但し原則はノーサポート。
x86の各種機能に特化した命令を吐けるのと、Itanium用のコンパイラも
同伴されているのがイイ。C++もLinux用であれば無料で手に入る。
RedHat系のOSとライブラリ環境を前提としている。
170名無しさん@1周年:02/12/31 04:12
171名無しさん@1周年:02/12/31 05:20
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
172名無しさん@1周年:03/01/10 05:08
real,pointer,dimension(123):: a

って書いたときに、a は、
 1)実数を要素とする長さ123の配列を指差す為のポインターである。
 2)実数を指差せるポインターを要素とする長さ123の配列である。
のどちらが正しいのか???
 また、1)の場合、2)の場合を実現する宣言の仕方は?
173名無しさん@1周年:03/01/10 13:01
f90の詳しい仕様は知らないけど、VFでは1しかできませんでした。
2の実現の仕方は知りません。
174山崎渉:03/01/11 05:19
(^^)
175山崎渉:03/03/13 13:19
(^^)
176山崎渉:03/04/17 09:16
(^^)
177山崎渉:03/04/20 04:02
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
178山崎渉:03/05/21 22:04
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
179名無しさん@3周年:03/05/26 13:26
Cのregister機能はf90にみたいなのはありますか?
180名無しさん@3周年:03/05/26 14:20
アダルトDVDが安い!

http://ime.nu/www.net-de-dvd.com/


181名無しさん@3周年:03/05/26 17:51
>>179
FORTRANの前に日本語を勉強しる!
182名無しさん@3周年:03/05/26 20:22
>>179
標準仕様にはない。
処理系によっては似たような機能が有るかもしれないが
レジスタの使い方はコンパイラに任せるのが普通。

つーかCでも今時registerなんて最適化のジャマになるだけで
使わない方が質の良いコードができるぞ。
183bloom:03/05/26 20:24
184_:03/05/26 21:02
185名無しさん@3周年:03/05/26 21:20
26才人妻です。ダンナがかまってくれないので、いつも一人でオナってます。
でも、けっこうオカズに困るんですよね。そんな時見つけたのがYUIS!!
安いし、安心して買えるしなかなかいいですよ!いつもバイブ物買ってます!

http://www.dvd-yuis.com/
186名無しさん@3周年:03/05/26 22:09
ネット上で自分の分身キャラ「アバター」を作って楽しくコミュニケーション
無料登録すると、もれなく商品券とメールアドレスが貰えます!!
http://f15.aaacafe.ne.jp/~suikas/cafe.html
187山崎渉:03/05/28 14:17
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
188名無しさん@3周年:03/07/21 19:34
fortran90擦れピーンチ!やはり絶滅危惧種なのか?
189名無しさん@3周年:03/07/21 20:46
開店セール見に来てーーーーーーーーーー!DVDを見ようー!GO!
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
開店セール1枚 500円より→→→http://www.dvd-exp.com 
アダルトDVDが激安販売→→→http://www.dvd-exp.com 
アダルトDVDの価格はなーんと1枚900円→→→http://www.dvd-exp.com 
最短でご注文いただいた翌日にお届け!→→→http://www.dvd-exp.com 
セルビデオ店の人気商品が24時間お買い物が出来ます。
        時間をかけてゆっくり選んでください!
          http://www.dvd-exp.com←へGO!
           DVDエクスプレス
190名無しさん@3周年:03/07/22 22:35
***************************************************************
           ★白ロム専門店 [Dream Store]★
505シリーズが続々登場です!F505iも発売開始!!
Dream Storeでは白ロムの買取も始めました!
要らなくなった白ロムをDream Storeに売って下さい!
新機種も続々登場しております。SH505i/J-SH53/F505i/N505iなど…
在庫処分品もSO505i・D505i・SH251i・SO211iなどが追加されました。
その他の機種も全品値下げ致しましたので一度ご来店下さい!!

Dream Storeでは白ロム(携帯電話)を取扱っております。
白ロムは簡単に言うと機種変更用携帯です。
1年未満,水没した,盗難されたなどの方はshopで機種変更するより安く出来ます。
まずは価格を見に来てくださいね。皆様からのご注文を心よりお待ちしております。
             http://dream-store.net
****************************************************************


191名無しさん@3周年:03/07/23 19:51
(^-^)こんにちわ!マコです★
今アメリカにいるんだけど、Hなバイト始めちゃったのvv
マコと一緒にらぶらぶなことしよっエヘ(*^^)
マコに会いに来てくれたら、7日間会費無料+10分間無料なのだ★
マコの恥ずかしいトコ全部見せちゃうよ(/▽^*)イヤン♪
二人っきりでいっぱい楽しいことしようね ^^*)
今だったら10分無料で遊べるよぉ〜☆
じゃ、マコに会いにきてねっ
http://www.gras-cafe.com
☆  ☆  ☆  ☆  ☆
192山崎 渉:03/08/02 02:24
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
194名無しさん@3周年:03/08/07 04:00
なんだか、シミュレーションの板全般、荒れているな。
195名無しさん@3周年:03/08/15 02:26
今がチャンス!「誰も知らない」スーパービジネス

HPを宣伝するだけの誰でもできる簡単なお仕事です。
間接収入もあるので安定した収入が望めます。

2chを見てようがほったらかしで次から次へと入金される
その喜びを是非味わってください。
通帳見るたびにほっぺたを落とさないよう注意!!

詳しくはコチラ
http://www.mahou.tv/muchey/partner.htm
196名無しさん@3周年:03/08/15 06:24
オチンチンを大きくするには
根元を締め付けて毎日マッサージすると大きくなるんだって
http://homepage3.nifty.com/manko/
197山崎 渉:03/08/15 17:49
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
198名無しさん@3周年:03/12/06 04:24
A が、「長さ123の整数の配列」を要素とする長さ456の配列だと定義したい
ときに、
INTEGER,DIMENSION(123) :: A(456)
ってやると、なぜか
INTEGER,DIMENSION(456) :: A
あるいは
INTEGER A(456)
と同じになってしまうようなんですが、これは仕様ですか?
199名無しさん@3周年:03/12/06 08:54
>>198
>INTEGER,DIMENSION(123) :: A(456)

Visual Fortranのマニュアルによれば
>型宣言文では,配列後の配列指定は,DIMENSION後の配列指定よりも優先されます。
なので、それだと単に「整数123個を要素とする配列A」になる。

>A が、「長さ123の整数の配列」を要素とする長さ456の配列だと定義したい
なら普通、2次元配列を使って
INTEGER, DIMENSION(123, 456) :: A
とする。

ついでに、ここは人が少ないみたいなんで誘導
FORTRAN II
http://pc2.2ch.net/test/read.cgi/tech/1068351911/
Fortran
http://pc2.2ch.net/tech/kako/1003/10032/1003214738.html
200名無しさん@3周年:03/12/07 03:29
デスクトップ広告って知ってます?
特にパソコンを長時間使用する方は必見です。
http://k.excite.co.jp/hp/u/mufufu-21/?yid=mufufu-21&ssl=4YI7OA10OHTCC7N2PM30
201名無しさん@3周年:03/12/07 08:00
INTEGER,DIMENSION(123):: A
DIMENSION A(456)

とすると、Aのサイズは456になるんだろうね。でもなんだか気持ち悪い。
こういうのは本来はエラ-にすべきだよ。
202名無しさん@3周年:03/12/20 03:01
F90のmodule機能って具体的にどういう活用の仕方があるんでしょうか。
自分は、allocatableにした配列はcommonのなかに書けないのでcommon文の
代わりに使ってるような感じです。
マニュアルみると他にもmodule使ってあれこれできるみたいだけど、
実際的な数値計算コードの中で役に立つ使い方があるのかよく分かりません。
203名無しさん@3周年:03/12/21 12:53
>>202
中途半端なオブジェクト指向もどきにするため。
moduleはcommonのような名前空間にプラスαの機能がついたもの。
使い慣れると色々便利よ。
common文のような退屈なコードを、
use hoge_mod
の一文で代用できるしね。

実際的な数値コードってのは何じゃい?
構造化しやすくなる、コード量が少なくなる、実装とインターフェイスを分ける事ができるなど。
数値計算に用いるプログラムのコーディングに限らず有用な面が多い。
204名無しさん@3周年:04/01/03 20:19
Fortran90は確かに便利になった。けど色々文句あるよ。
(1) module副プログラムを別のmoduleからuseする場合、
 modulename.func()
とか
modulename::func()
とか、モジュール名を冠して引用する仕様なら良かったのに
205名無しさん@3周年:04/01/03 20:26
(2) ポインタを配列の窓として仕様する場合、配列の上限・下限が指定できない
integer :: A(-10:10,-10:10,0:3)
integer,pointer:: P(:,:)
P=>A(:,:,0)
とすると、Pの第1成分と第2成分の添字の下限は1になってしまうのね。
配列のスライスが欲しいときって、やっぱり添字の下限がそのままになってほしい。
配列の下限値が指定できるのが、Fortranの最大の強みなんだから。
まぁ、別の配列を確保してコピーすれば済むことなんだけど。。。
206名無しさん@3周年:04/01/03 20:48
(3)オブジェクト指向にしてほしかった。
科学計算でも、ポリモルフィズムは有用だと思う。
207名無しさん@3周年:04/01/04 12:02
継承や非明示的な演算子オーバーロード,
異なる引数の型の組合せに対して
定義を複数書くだけで,特別の注意を喚起する指定無しに
受け付けてしまうような言語(C++とか)は,
安全なプログラミングの方針とは矛盾している.
簡単に地雷のような眠り続けるバグを植え込んでしまいがちだからだ.
C++のように,本来はオブジェクト指向で安全なプログラミングを
可能とする原理を載せるのに,Cとの互換性を保つために,それらを
台無しにした上で,ぐちゃぐちゃで複雑な言語仕様にしてしまったものが
不幸なことに標準になってしまったことは,実に残念というべきである.

便利だが,危険性を孕む機能は,それを入れるよりは入れない方が
安全で信頼ある大規模コードを開発し保守しやすい.
機能をどうしても入れたいのなら,実現法を工夫して,危険性を
無くすか,間違いがあったら容易に発見できるようにすべきである.

C++の文法上の言語機能をそのまま無批判にFORTRANに輸入しない
ことが望まれる.そんなことするぐらいだったら,そういう目的には
C++を使えばよいからだ.
208名無しさん@3周年:04/01/04 12:08
unix 用に作られている gnu 文化の影響を受けたソフトウェアは,
C で書かれていても OOP 的なものを持っているような感じがします.
[C のような強力な表現力] + [流儀]
で,かなり良いプログラムを作れそうですが,どうなんでしょう.

今から Frotran 始めるのですが,
C (その他高級言語, ツール) から Fortran を呼べるなら,
もう全てを Fortran で作る必要はないのですね?
インターフェイスが強烈に悪いプログラムにならないかと不安なんです.

ところで,なぜ 90 のスレなんでしょうか.
90 はサポートするが 95 はサポートしない処理系があるのでしょうか.
なぜか 90 の方が頻繁に使われる...
209名無しさん@3周年:04/01/04 21:01
>>なぜ90のスレなんでしょうか
別に他意は無いように思うのですが。
単に77じゃなくて90ということなのでは?
だから95な話題とかもどんどんしよう!?

けど95ってHPFとの互換という趣旨で作られたように思うので、
厳密にはやっぱ90とは少し違う香りがしそう。
しかし所詮香り程度の違い?
210名無しさん@3周年:04/01/04 22:52
>>209
Fortran95で追加・変更された機能については
http://www1.jpn.hp.com/products/software/development/dvf/docs/vf-html/Lr/lr01_03.htm

また、Fortran95ではFortran90で廃止予定事項にされていた機能の一部が廃止されています。
211名無しさん@3周年:04/01/05 16:08
初めてフォートランやるんですけど、
ラリー・ニーホフという人の本「入門Fortran90」買いました。
研究室のUNIXは結構古そうでしたけど、g77でコンパイルできるのでしょうか?
自宅のPCはウィンドウズですが、ウィンドウズ用の90コンパイラって
フリーでありますか?
ど素人な質問ですいません。
212名無しさん@3周年:04/01/05 19:34
>>211
GCCが入ってれば大抵一緒に入れてあるでしょう。

g77で使えるFortran90相当の機能
http://gcc.gnu.org/onlinedocs/g77/Fortran-90-Features.html

Linuxなら非商用、サポートなしの条件でIntel Fortranがフリーで使える。
Windows用のは期間限定の物しか知らない。
http://pc2.2ch.net/test/read.cgi/tech/1068351911/3

商用の物は学割が使えるなら通常価格よりもかなり安く買えるが
それでもC/C++なんかと比べると高い。
http://www.mtl.t.u-tokyo.ac.jp/~nminoru/programming/x86-fortran.html
213名無しさん@3周年:04/01/05 20:43
>> 207
同意。
C言語のポインタの演算子*と&に相当するものがFortran90/95にないことについて。
実際にコーディングしてみると、はじめは混乱したが、慣れてくるとCよりも
すっきりしたコードがかける。悪しき慣習を継承しなかったことに感謝。

継承の問題に関しては、難しい問題やね。楽なコードはバグりやすいってことじゃないかな。
科学計算ではバグは致命的なので、多少苦労してでもバグがないコードを書くってこですかね。

#90と95の違いに固執する香具師の気持ちがわからんなぁ。
214名無しさん@3周年:04/01/05 20:55
>>212
ありがとうございます。
研究室の先輩や先生もg77でコンパイルしていました。
ということはまだまだ77のほうが普及しているということでしょうか。
みなさんもg77で満足していますか?
215名無しさん@3周年:04/01/05 22:46
>>213
固執するほどの違いがあるんですか?
なんだかバージョンの違いが激しくて恐いなぁ (違いがあるなら).

>>214 満足していません!w

intel fortran compiler に .rpm しかなくて困った人へ.
google で探せば .deb に変換してインストールする方法を
解説なさっているページがあります.これのお陰でできました.
216名無しさん@3周年:04/01/05 23:16
>>213
でも、assertとenumをFORTRANに追加して欲しい

FORTRANには割付配列があるのがいいね。
スコープを抜ければ、勝手に領域を開放してくれるし。
ただし、実行中に何度も呼び出される関数内で、allocate, deallocateを繰り返すと、
フラグメンテーションによって、メモリ使用量が大幅に増大するので注意。

継承を導入してくれると嬉しいけど、moduleにその機能を追加するのは無理でしょ。
コンストラクタ、デストラクタについても同様。

>>214
一度F90へ移行すると、F77に戻られなくなる。
common文、多すぎるgoto文なんて糞食らえ!
研究室単位でFORTRAN使ってるんなら、別にフリーにこだわらなくてもいいのでは。
コンパイラなんて高々数万円だから、研究室で買えるでしょ。
g77だと、SSE2などのそれなりに最近の拡張機能への対応が不十分な事もあって、
高速なコードが書けるとは言い難い。
並列計算機への移植性を考えても、g77を使う事は滅多にないだろうから。

Q. なぜいまだにg77を使ってるのか?
A. FORTRAN使用者には化石が多く、そういった人はF77しか知らないから。
217216:04/01/05 23:18
>高速なコードが書けるとは言い難い。
「高速な実行コードが吐けるとは言い難い」
218名無しさん@3周年:04/01/06 02:31
>>215-216
ありがとうございます。教官が年輩なせいか、研究室メンバー全員77
のようです。自分はド素人なのでまだよくわからないのですが、Fortranは
科学技術計算用に開発された言語ということで、Cと迷った末にFortranをおぼえようと決めました。
コンパイラは研究室の経費で買えると思います。
みなさんはNumerical Recipes はin 90 のほうを使っていますか?
今どちらを注文しようか迷ってるんです。
使っている方などいましたらどんな感じか教えてください。お願いします。
219名無しさん@3周年:04/01/06 15:27
ニューメリカルレシピは77と90は必携だろ
あとLAPACKの手引きもな
220名無しさん@3周年:04/02/22 20:47
un
221名無しさん@3周年:04/02/22 22:02
> 218
 あのー、両方勉強すべきじゃないですか。
 だいいち、フォートランなんて数日でおさえられるでしょう。
 まあ、昔,bitに掲載された「本物のプログラマーはフォートラン
 を使う」のようなテクニックを使うのでなければ。
222名無しさん@3周年:04/03/09 08:42
フォ-トランでもCでも、何も計算機言語を知らない素人でまっさらから
まともに配布が出来てメインテナンスできるレベルの「ソフトウェア」
をかけるようになるのには、俗に10年のコ-ディング経験が必要と言います。

単純に言語仕様のみに関していっても、計算機言語の複雑度からいえば
PASCAL < FORTRAN < C < C++
です。感覚的に言語仕様の学習内容を数値であらわせば、
1:3:5:8
ぐらいでしょうか。C++の場合には、ダイナミックな機能(記憶ではなくて)
が入り込んでいるので、ソ-スだけをみていても簡単には理解出来ない
バグが入り込む可能性が高いでしょう。

数値計算に関してのみ使うのであれば、FORTRANが一番といっていいほど、
計算機の非専門家に対して科学技術関係のソフトウェアを安全に開発
してもらうのには適しています。ポインタを明示的に使わなければ
プログラムがかけないC言語やC++言語は、素人向きではありませんし、
言語自身に真の配列がそもそも無いのが大いに問題ありです。

223C/C++の欠点。:04/03/13 12:48
あとCやC++は、タイピングの速度向上の為に、1文字の記号にあまりにも
強力な意味を持たせ過ぎなところがあります。
演算子の種類が多く、それらの優先順位も、それほど自明なもの許りでは
ありません。また、豊富にある基本デ-タ型(文字型、語長の異なる
整数それも符号無しと有りのもの、語長の異なる実数)
それらの混合演算の規則の間違えの起き易さ。

一番初心者にとって、頭がこんがらがるのが、
変数の「型」とその宣言についてでしょう。
ある型の配列であること、
ある型へのポインタであること、
ある型を持つ関数であること、
それらは、通常のそれ以前の言語では、一段階ずつ宣言して
いくのが普通でしたが、C言語C++言語では、この宣言に関しても
ごく簡単な記号を用いて、しかも優先順位を(これも自明なものでは
なくて人為的匂いが濃厚)設定することで、一発で宣言できるように
しましたが、これもあまりにも抽象的であって、理解が困難あるいは
間違えしやすいです。
long *(**a[])();

224162:04/03/24 21:06
>223
その最後って何?

えっと long へのポインタを返す引数無しの関数であって、
関数のメモリ上のアドレスは **a[] のハンドル配列
の最初に格納されている。

ということ?それとも

long を返す引数無しの関数であって、
関数のメモリ上のアドレスは。。。

よくわからんね。
225名無しさん@3周年:04/04/10 00:42
fortran77では 例えばinteger*8 hoge って書いてたのが,
fortran90では「それは古いよ」ってコンパイルメッセージで言われるよね?

なので
integer(8) hoge
で良いのかと思ったら,これはダメなんですか?
なんかうまく行きませんでした.
rea(8) hoge って書き方はできるのに・・

integer(kind=8) hoge
って書かないといけないんですか?
226名無しさん@3周年:04/04/10 02:21
>>225
integer(n)でもinteger(kind=n)でもOKです。
ただし nの値(種別値)は処理系によって異なります。
(1, 2, 4, 8 になっているものが多いようですが)
この種別値は SELECTED_INT_KIND 関数で調べることが出来ます。

print *, SELECTED_INT_KIND(10)
として表示される値が8バイト整数の種別値です(本当は少し意味が違いますが)
もし -1 が表示されたら、その処理系では8バイト整数(相当の型)は使えません。

実数の場合は SELECTED_REAL_KIND を使います。
また、定数の精度もこの種別値を使って
12345_4, 1.2345_8
等と指定することが出来ます。
詳しい仕様や使い方はマニュアル等で調べてみて下さい。
227名無しさん@3周年:04/04/15 01:22
fortran77 では, integer*8 だとか real*4 だとかいう書き方は
規格内にはありません.それは拡張仕様です.文字列の型の宣言でのみ
長さの指定が許されています.
228名無しさん@3周年:04/05/05 17:25
FORTRAN2000とかいうのどうなったんだろ?
229名無しさん@3周年:04/05/05 19:25
>>228
Fortran 2003 Final Committee Draft
ttp://www.swcp.com/~walt/fcd_announce.html

完全準拠の処理系が出るのはいつになるやら。
230名無しさん@3周年:04/05/18 11:06
IFCとG77では全然違う数字吐きます。CPUはアスロン・・・
コードが悪いんかなぁ?
231名無しさん@3周年:04/05/19 19:26
(・ω・`彡 )з
232名無しさん@3周年:04/06/14 01:37
Fortran で OS が書けるようになったんだろうか?
233名無しさん@そうだ選挙に行こう:04/07/11 13:22
>>232
いままでは書けなかったんですか?
書く人がいるとかは置いておいて...
234名無しさん@3周年:04/07/14 20:31
matlabとfortran連携させたい
matlabとfortran連携させたい
matlabとfortran連携させたい
235名無しさん@3周年:04/07/19 06:04
>>234
させれば?
236名無しさん@3周年:04/07/19 10:26
簡単にできるんでしょ?

できたら報告ヨロ >>234
237名無しさん@3周年:04/07/23 05:37
234、出て来い
238234:04/07/23 19:59
登場しますた!
239fortran77:04/07/24 08:40
X**2+Y**2=4
Y=X・tanX
Xの範囲は0<X<π/2
Xの値を凾w=0.01のステップで0から次々に増加させ、各々の
Xの値と、両式から得られるYの値を表としてファイルへ出力せよ。

この連立方程式からYを消去して得られる方程式の解を、2分法により
少数第6桁までで、求めよ。

すれ違いかもですが、困ってます。調べてやってみたのですが、
うまくいきません。
だれか書いてもらえないでしょうか?(fortran77です)
ファイルへの出力方法はわかるのですが・・特に分けて表のように
表示させたりする方法がわかりません。
240名無しさん@3周年:04/07/25 01:46
>>239
カラムの区切りにタブを入れると表になります.
241名無しさん@3周年:04/07/25 18:58
>>239
> Xの範囲は0<X<π/2
なのに
> Xの値を凾w=0.01のステップで0から次々に増加させ
とは、これいかに。
242名無しさん@3周年:04/07/25 23:25
implicit real*8 (a-h,o-z)
pi=3.1415926535897932384626433832795d0
x0=0.0d0
x1=pi/2.0d0
dx=0.01d0
nx=int( (x1-x0)/dx )
r=2.0d0
err=1.0d-6
c
open(unit=1,file='./test.txt',status='unknown')
do 100 i=1,nx-1
x=dble(i)*dx
y1= dsqrt( r*r-x*x )
y2=x*dtan( x )
fx=x**2+( x*dtan(x) )**2-r*r
write(1,600)i,x,y1,y2,fx
write(6,*)i,x,y1,y2,fx
100 continue
600 format( i5,4f15.7)
close(1)
243名無しさん@3周年:04/07/25 23:25
xs=x0
xe=x1
fx0=x0**2+( x0*dtan(x0) )**2-r*r
niter=0
10 xm=( xe+xs )/2.0d0
fx=xm**2+( xm*dtan(xm) )**2-r*r
niter=niter+1
if( fx0*fx.lt.0.0d0 ) go to 20
xs=xm
fx0=fx
go to 30
20 continue
xe=xm
30 if( xe-xs.ge.err )go to 10
write(6,610)niter,xm,fx
610 format(i5,2e15.7)
c
stop
end
c
244名無しさん@3周年:04/07/31 00:19
>>239>>242-243 を見たのだろうか...?
245名無しさん@3周年:04/07/31 17:20
239出て来いやー
246名無しさん@3周年:04/07/31 20:25
>>239>>242-243 をコピペしたレポートを提出して
今頃はこのスレのことなんかすっかり忘れて
遊びほうけていることだろう。

そして冬休み前に新しい課題が出されたら
何食わぬ顔して、またこのスレに戻ってくるのさ。
247名無しさん@3周年:04/07/31 23:25
至急、質問があります。
FFT(高速フーリエ変換)のプログラムを作ってます。
今まで処理データ数が16000個くらいで、順調に計算できていました。
しかし、データ数を70000個くらいに増やすと、出力ファイルに
『*』印がたくさん出てきます。
ちなみに言語はフォートランで出力はCSV形式で出力してます。
これはフォーマットの設定が悪いんでしょうか?
248名無しさん@3周年:04/07/31 23:58
249名無しさん@3周年:04/08/01 10:31
>>248 に,ここは fortran のプログラムを語るスレではないことに気づかされた.
250249:04/08/01 11:44
なんだ,>>248 は誘導じゃなくてマルチポストのお知らせだったのか.
251 ◆Iyutn6izzo :04/10/28 11:10:30
>>1
個人的にはFORTRAN90だな。
252名無しさん@3周年:04/10/28 17:43:08
Cは並列コンパイラで処理するのが難しいなり。
ポインタとか諸処の理由で、コンパイラが苦労するらしい。

>>118を部分引用
>「真の配列」特に多次元のものを持たないC言語は
>ポインター(実際はアドレス)を乱用せざるをえず、

CPU複数で高速処理するなら、
Fortranが上記の理由で速いらしい。
スパコンとか、グリッドとか。
253名無しさん@3周年:04/10/28 22:09:53
>>242
> implicit real*8 (a-h,o-z)

こう書くのもうヤメレ、オレ嫌い

応仁の乱のころのFORTRANといえば、この文から始めたらしいがな。
254名無しさん@3周年:04/10/28 22:46:23
Windowsでftn77ってコンパイラが非商用版はフリーだったけど
ftn95の非商用版も出たね
255名無しさん@3周年:04/10/29 04:11:57
いまは、
implicit none
と書いてから始めよう。
256名無しさん@3周年:04/10/30 03:16:06
実際、数値計算するんなら、F90+HPFのほうがC(C++)より圧倒的にいい。
素人が、何にも考えずに書いた場合、たいていの計算は、
F90のほうがCより1.2倍くらいは速いと思う。しかも、ほぼ自動で並列計算にもできるし。
ホントはプログラムを書くこと自体は慣れもあってC++のほうが楽なんだけど、
数値計算でC++を使うのは考えられない。
257こんちゃ:04/11/03 09:10:32
これを見たあなたは1週間後不幸がきます。それがいやならこれを見た人はコピペして5箇所にカキコしてください。私の友達は信じず、1週間以内に死にました。私はコピペしたのでこれを見た4日後にずっと好きだった人に告られました
258名無しさん@3周年:04/11/12 23:38:47
古い話だけど
》27
コンパイルの最適化オプションで結果が変わるのは本当だよ。たとえばSXのコンパイラのマニュアルにも書いてあるよ。
もっとも、結果が変わるような汚いソース書かなければ良いわけだが。
259名無しさん@3周年:04/11/14 02:21:37
>258
それって大抵は初期化忘れだと思うんですが、
そうじゃない場合もあるんですか?
260名無しさん@3周年:04/12/11 09:45:23
保守
261名無しさん@3周年:04/12/11 18:51:06
>>259
例えば最適化のために(数学的に矛盾のない範囲で)計算順序が変更された場合、
中間結果の丸め方の違いのために、結果が変わる場合がある。
ttp://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/pg/pg06_08_04.htm
262名無しさん@3周年:04/12/15 11:47:28
おまえら、配列の添字を1から始めてる?0から始めてる?

データをCで扱うことがあるので、おれは0から始まるようにしてる。愚か?
263名無しさん@3周年:04/12/15 21:09:08
0に一票
264名無しさん@3周年:04/12/23 15:13:34
誰かAbsoftFortanのAMD64用を64bitのLinux上で使っている人いる?
265名無しさん@3周年:04/12/24 17:28:19
>>263やはりそうか。
世の中的には、1からはじまるほうが例外的だからなぁ。
266名無しさん@3周年:04/12/24 22:47:58
思想の違いだろ。1番目のデータと、ここ(ポインタ)のデータって感じで。
昔(コード全部大文字で書いてた頃な)は1からしか始められなかったような
気がするが、どうだったけ。
267名無しさん@3周年:04/12/25 12:34:04
「1 番目」を 0 に,自然に脳内変換する人口が増えたんだと思う.
268名無しさん@3周年:05/01/13 08:51:32
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
269名無しさん@3周年:05/02/14 15:42:20
質問です.
ISMLのサブルーチン名DASPGを使って,
非線形の連立微分方程式を解こうとしています.
いざ計算をさせると,1000回doさせようとしているのですが,
以下のエラーがでます.
*** TERMINAL ERROR 6 from D3SPG. At T = 1.150000E-04 and stepsize H =
*** 1.562501E-11, the corrector failed to converge repeatedly or
*** with abs(H)=5.531311E-11.
Here is a traceback of subprogram calls in reverse order:
Routine name Error type Error code
------------ ---------- ----------
D3SPG 5 6 (Called internally)
D2SPG 0 0 (Called internally)
DASPG 0 0
USER 0 0
どうしたらいいのでしょうか?
分かる方がいれば,アドバイスよろしくお願いします.
270名無しさん@3周年:05/02/14 19:19:52
271ぼるじょあ ◆yBEncckFOU :05/02/20 09:07:23
                                         
     ∧_∧  ∧_∧                             
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕                             
  = ◎――――――◎                      山崎渉&ぼるじょあ
                                          
272山.崎 渉:05/02/22 19:51:40
...これからも僕を応援して下さいね(^^)。   
  
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
         
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。                         
  =〔~∪ ̄ ̄〕                                            
  = ◎――◎                      山崎渉                       
                                
 __∧_∧_                                                 
 |(  ^^ )| <寝るぽ(^^)      
 |\⌒⌒⌒\                                
 \ |⌒⌒⌒~|         山崎渉             
   ~ ̄ ̄ ̄ ̄                            
                            
   ∧_∧                                       
  (  ^^ )< ぬるぽ(^^)      
                                                       
    (⌒V⌒)                    
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。   
  ⊂|    |つ                                
   (_)(_)                      山崎パン 
                                         
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕                          
  = ◎――――――◎                      山崎渉&ぼるじょあ
273名無しさん@5周年:2005/10/30(日) 01:24:21
激安。FORTRAN90コンパイラとして使うぞ。


http://www.nag-j.co.jp/FortranBuilder.htm
274yusuke:2005/10/30(日) 14:57:52
質問ですが・・・。
現在fortran90を使って有限要素法をプログラミングしています。
その中で逆行列の計算が必要となって、lapackのライブラリを
使っています。
dgetriでLU分解してdgetrfで逆行列を求めるというものなのですが、
どうもそのcall文の中で使う引数で work の 意味が
わからないため、 セグメンテーション違反 
となってしまいます。
使っているコンパイラはpgf90 で、使用ワークステーションも
メモリ20Gをつんでいるのですが・・・。
どなたかこの原因わかるかたいらっしゃいますか?
275名無しさん@5周年:2005/10/31(月) 19:00:54
連立方程式AX=Bを解くのなら,dgetriで逆行列inv(A)を求めるのでは
なくdgetrfでAをLU分解した後にdgetrsでAX=Bを解いた方が良いと思う.

276名無しさん@5周年:2005/11/01(火) 01:31:20
WORK は名前の通り、作業用の配列。 LWORK にその大きさを入れておく。
概ね LWORK = N でよい。

#LAPACK95なら作業領域や行列の次数を明示しなくても良いのだが。
277名無しさん@5周年:2005/11/17(木) 22:56:20
高速化を望むなら、Fortran90をつかっても、オブジェクト指向的な書き方は
しない方がいい。FORTRAN77+ALLOCATABLE配列やautomatic配列程度の機能
だけを使った方がいいでしょう。モジュールはあくまでCOMMONの代用品として
のみ使う。
コンパイラ開発者に言わせると複素数型も高速化の阻害要因になるらしい。
278名無しさん@5周年:2005/11/28(月) 17:06:24
もう90は時代遅れだよ。2003があるよ。
279名無しさん@5周年:2005/11/28(月) 22:45:48
Fortran 2003 完全準拠の処理系ってもうあったのか?
一部だけ対応してるのは結構あるけど。
280名無しさん@5周年:2005/11/29(火) 02:16:53
配列の窓だっけ、とっても重い。
281名無しさん@5周年:2005/12/02(金) 04:15:34
F90は色々できるようになって、遅い。
ポインタと構造体を追加だけで良かった。
282名無しさん@5周年:2005/12/22(木) 21:44:22
283名無しさん@5周年:2005/12/24(土) 18:14:07
突然ですが、
流体中のコロイド粒子の動きをシミュレーションしたいのですが、
何法が良いでしょうか?
284名無しさん@5周年:2005/12/27(火) 12:22:17
C++を5年, Fortran90を1年使っての感想。
数値計算に限って言えばfortranが圧倒的に有利。
まずオブジェクト指向は数値計算には使えない。
唯一速度が出るtemplateは、対応するコンパイラが少なすぎる。
(手持ちのマシンならコンパイラを買えばいいが、
 外部マシンだとそうもいかない)
C++は相当気をつけないと速度が出ない。
過去ログに出てる演算子オーバーロードはパフォーマンス落とさずに書くのが大変。
fortranの困ったところは外部からルーチンをリンクするのが難しいことかな。
コンパイラごとに仕様違いすぎ。

ところでなんで
http://gcc.gnu.org/fortran/
だれもgfortranを貼っていないんだ? たしかにbuggyだけど……。
285名無しさん@5周年:2005/12/27(火) 22:38:01
だってg95の方が更新が進んでるみたいだし
286名無しさん@5周年:2005/12/29(木) 12:48:50
そのg95すら貼っていないという罠
287名無しさん@5周年:2005/12/30(金) 13:07:11
どっちもググればすぐ見つかるだろうに…

と言いつつ貼っておく
http://g95.sourceforge.net/
288名無しさん@5周年:2006/01/14(土) 01:35:58
うちのセンターにsx3台もいらねー!!
さらに48CPU、6ノードも追加するんじゃないよ!!

4月〜5月は2台独占で使いまくりだから2台で良いよw

289名無しさん@5周年:2006/01/20(金) 19:37:17
行列を要素とする行列型の定義ってどうやるの?
また、要素が整数へのポインターである二次元配列の型とか変数の定義は
どうかけるの、Fortran90初心者の呟き
290名無しさん@5周年:2006/01/25(水) 21:56:49
>>289
行列を要素とする行列
type aa
integer, dimension(2,3) :: a
end type aa
type(aa), dimension(4,5) :: b
または
integer, dimension(2,3, 4,5) :: c

要素が整数へのポインターである二次元配列
type pp
integer, pointer :: p
end type pp
type(pp), dimension(4,5) :: q
291名無しさん@5周年:2006/01/30(月) 21:34:31
すると、「二次元配列 B 」の第(4,5)要素が指している
型AAの配列メンバーの第(2,3)要素の場所は、
B(4,5)%A(2,3) と書く訳ね。

Q(4,5)%P = 12345 とか
Qの第(4,5)要素のPP型変数のメンバーポインターが指す対象として
整数変数を動的に割り付けたかったら
ALLOCATE(Q(4,5)%P)
とするのかな?
292名無しさん@5周年:2006/03/14(火) 19:46:59
このスレはなかったことにしてくれ、たのむから。
fortran自体なかったことにしてくれ、たのむから。
291さんは後に続く人のためにもC,C++で数値計算してくれ、たのむから。
fortranコンパイラはfortranをコンパイルできないようになってくれ、たのむから。
これから科学計算の本を出す人はC,C++でだしてくれ、たのむから。
293名無しさん@5周年:2006/03/14(火) 20:02:17
嫌。
294名無しさん@5周年:2006/03/14(火) 20:21:50
>292
フロントエンド・I/O部分…C
純粋な計算部分…fortran
で組んでリンクできないやつは素人
295名無しさん@5周年:2006/03/15(水) 19:04:51
>>294
何で計算はfotranなの?
やっぱり関数いっぱいついてるから?
POWER(*,*)なんてやってらんないから?
変数宣言しなくていいから?
}じゃなくて100 continueとか enddoって書いて無いと気持ち悪いから?
でもVSみたいな便利なIDEは安く買えないんでしょfortranは?
296名無しさん@5周年:2006/03/16(木) 00:48:22
枯れたルーチンがたくさんあるとかかんとかいろいろ理由はあるが

複素数を使うルーチンの設計がものすげえ簡単

これにつきる
297名無しさん@5周年:2006/03/16(木) 14:14:30
298名無しさん@5周年:2006/03/16(木) 14:29:16
299名無しさん@5周年:2006/03/17(金) 06:06:37
CでもC99の仕様に複素数いれられて
掛け算もサポートされてるから、
簡単に使えるよん
300名無しさん@5周年:2006/05/02(火) 16:51:13
C++は演算子を用いた行列計算を効率的にしてくれ、たのむから。
(今のところ、できないことを承知で。。。)

呪文みたいなテンプレートはもう少し整理してくれ。頼むから。

例外処理ももう少しJAVAなみに整理してくれ。頼むから。

CLRもいいけど、標準のGUIを決めてくれ。(あっ、CLRは標準になったっけ?
それにしても胡散臭いな)
301名無しさん@5周年:2006/05/02(火) 18:48:45
うはー、この掲示板誰も書き込んでねぇ
302名も無きマテリアルさん:2006/06/03(土) 22:08:57
http://www.uopmu.ees.osakafu-u.ac.jp/~yabu/soft/c-cal.html
http://hep-www.px.tsukuba.ac.jp/~masato/link/www.math.meiji.ac.jp/mk/labo/studying-C/Programing-in-C/node1.html

というのもあるけど、Fortran90の方が
(1) 過去の遺産が沢山ある
(2) 実行速度がやや(icc, ifortとの比較で約1.3)倍
(3) MPIやopen MPでの並列化がやや楽
(4) 習ったのが森口先生の本だった(年が分かる)
etc
で数値計算にはFortran90,
グラフ化のinterfaceは Matlab か C/C++ で
書く環境に慣れてしまっていますが,グラフ化を
簡単化する方法はないですかね?
303名無しさん@5周年:2006/06/03(土) 23:56:27
>複素数を使うルーチンの設計がものすげえ簡単
>C++は演算子を用いた行列計算を効率的にしてくれ、たのむから。

matlab系でいいじゃん。
Atlas組み込んでるからそこそこ速いよ。
遅いといってる奴はmatlabが使えない間抜けだな。
わかりきってることだが。
304名無しさん@5周年:2006/06/27(火) 04:46:54
グラフ化には、gnuplot を使えば十分だろう。
305名無しさん@5周年:2006/07/26(水) 09:59:01
matlabなんか高くて使えるか。アホ!
というと、octaveやscilabがあるとワンパターンなこと言う
だろうが。

しかし、matlabは関数やサブルーチンを使うプログラムになると
引数の受け渡しが独特でうっとおしんだよ。

それにしょせんスクリプト言語だから、
行数が多くなると遅くなる。

matlabを使った上で言ってるんだ。わかったか! 糞
306名無しさん@5周年:2006/10/01(日) 23:52:32
今期のシラバス見たら、計算物理の授業はFORTRAN77でやるらしい。
なぜFortran90でやらないんだ?
307名無しさん@5周年:2006/10/02(月) 01:06:08
>>306
1. FORTRAN77の方が参考資料が豊富にあるから
2. FORTRAN77でも十分にこなせる授業内容だから
3. 教官が77しか知らないから
308名無しさん@5周年:2006/10/02(月) 09:52:55
>>306
4. 過去のプログラム資産がほとんど77(または66)だから。
309303:2006/10/05(木) 12:29:44
>305
>それにしょせんスクリプト言語だから、
>行数が多くなると遅くなる。

matlabで行数が多くなるプログラミングしている時点で
君には向かないよ。悪態ついてないで自分の能力の無さを省みなさい(プッ
310名無しさん@5周年:2006/11/03(金) 13:37:53
>>309

お前の計算みたいな、なんちゃってプログラムとは違うんだよ。
せいぜい数十行のプログラムしか作ったことのない馬鹿のくせに
偉そうなこと言うな。
311名無しさん@5周年:2006/11/04(土) 12:15:59
>>310

馬鹿などという言葉を軽々しく使う無能研究者乙。
僕ちゃんの研究は最先端何だっ!てか?
笑わせるなよ。
312名無しさん@5周年:2006/11/04(土) 15:24:52
おっ、馬鹿が何か言ってら。気になるので10/5から
ずっと見てたのか。ご苦労なこった。

お前みたいな馬鹿なんぞにクチュグチュ
言われたくねぇ。おとなしくMATLABで
演習問題でもやってろ。MATLAB坊や
313名無しさん@5周年:2006/11/04(土) 15:25:32
あと、氏ね
314名無しさん@5周年:2006/11/04(土) 21:04:38
あのビチグソ野郎のMATLAB坊はもう去ったかな。
10/5からイライラしてたんだよね。
315名無しさん@5周年:2006/11/04(土) 21:54:44
VIPからきますた。
【目指せ】みんなで協力【1日3000円】

webマネーかせぎまくりんぐwwwwwwwww
アマゾンで買い物しまくりんぐwwwwwww

ヽ( `Д.´)ノ URLは☆をとって貼るんだ!

http://sky.g☆eoc☆iti☆es.jp/☆v☆ip☆ba☆ruki☆s☆u/
316名無しさん@5周年:2006/11/05(日) 10:51:55
>314

(((;;;:: ;: ;;          ;; ;:;::)) ::)
   ( ::: (;;   ∧_,∧   );:;;;)) )::: :; :))
    ((:: :;;  (´・ω・)っ ;;;; ; :))
     ((;;;  (っ ,r どどどどど・・・・・
          i_ノ┘

 ((;;;;゜;;:::(;;:  ∧__,∧ '';:;;;):;:::))゜))  ::)))
 (((; ;;:: ;:::;;⊂(´・ω・`)  ;:;;;,,))...)))))) ::::)
  ((;;;:;;;:,,,." ヽ ⊂ ) ;:;;))):...,),)):;:::::))))
   ("((;:;;;  (⌒) |どどどどど・・・・・
         三 `J

         .∧__,,∧   
       ⊂(´・ω・`)⊃
    ☆   ノ   丿 キキーッ
      ヽ .ノ  (⌒) 彡
       と_丿=.⌒


            ( ´⌒ ⌒ ⌒ヾ
     ∧_ ∧ ( m9(^Д^)プギャー!! )
     ( ・ω・` ) ノノ〜 ヾ ノノ ノ〜′
       (⊃⌒*⌒⊂) 
       /__ノωヽ__)
317312:2006/11/05(日) 12:56:08
やべっ。間違えてageちまった。
318true 312:2006/11/05(日) 21:43:42
人の番号騙ってageるな
319312 ◆3WnL17fDbw :2006/11/06(月) 00:18:16
お前こそ騙るな。氏ね。
偽者対策としてトリップつけることにする。
320312 ◆3WnL17fDbw :2006/11/06(月) 00:20:44
>>318
自作自演までして何がしたいんだ?
321名無しさん@5周年:2006/11/06(月) 11:54:50
馬鹿か
322true 312:2006/11/06(月) 12:17:51
まだ、馬鹿が何か言ってら。ご苦労なこった。
323名無しさん@5周年:2006/11/06(月) 17:32:24
そろそろ、f90 の話を し  な  い  か
324名無しさん@5周年:2006/11/06(月) 18:14:54
◆3WnL17fDbw とかtrue 312とかになりすまして
何やってるんだ。お前MATLAB坊か?

よっぽど悔しかったんだな。それにしても
陰険で暗い野郎だ。

もう、相手するのも秋田。ぶっ飛んでけ

               ―― ω――― ←>>319=320=322のキャンタマ
       ガッ!     // | ヽ
    /   ∧__∧  / / |  ヽ
  // / (    )   /  .|
 ( ̄ ̄二⊂   彡⊃    ガキキキキーン!!
   ̄ ̄   y  人  
      ミ(___)__),, 

>>323

ゴメン
325312 ◆3WnL17fDbw :2006/11/06(月) 22:28:23
>>324
いつまでもクチュグチュと自作自演までして
本当に馬鹿な構ってチャンだな。
早く自分の世界へお帰り。

>>323
自由形式と固定形式どちら派?
自分は自由形式推奨で、今研究室の資産を
77から95に移植中。

いつまでも馬鹿に付き合ってられないので名無しに
戻ります。失礼しました。
326true 312:2006/11/06(月) 22:44:07
おおーっ、急にかっこつけちゃってw

ご ま か す な !
327名無しさん@5周年:2006/11/07(火) 08:30:16
Fedora Core 5のgfortranってどうなの?
gcc-2.96のときg77が
"Hello World!"
でWarning吐いたのにはワロタ..

>>326
うぜえ.スレ違いのことしか書けない奴は失せろ..
328名無しさん@5周年:2006/11/07(火) 16:49:26
>>325
言語同段の固定形式派から、自由形式派に鞍替え

変数名や関数名の文字数が長くなり、
最初の6文字を空白に使うのが惜しくなった。

移植するときに(些細な)バグを発見して、
苦笑することがよくあった。
329名無しさん@5周年:2007/06/16(土) 22:37:21

(・∀・) 今年初の書き込み (・∀・)
330名無しさん@5周年:2007/09/11(火) 03:46:20
今のGCCにはgfortranというFortran90以上の処理系がGPLで入っとるんぞなもし。
331名無しさん@5周年:2007/09/11(火) 19:26:02

    〃〃∩  _, ,_
     ⊂⌒( `Д´) < ヤダヤダ!Fortran2003完全準拠の処理系じゃなきゃヤダヤダ!
       `ヽ_つ__つ
              ジタバタ
332名無しさん@5周年:2007/12/06(木) 04:00:36
来年から大学院へ進学して、バリバリ数値計算する予定の者です。
「こうやってプログラム書くと、早く.and.正確に計算できますよー」
というのがまとめられた本があれば教えてください。

例えば
「Fortranでは二次元配列A(2:2)のメモリへの格納は
A(1:1)
A(2:1)
A(1:2)
A(2:2)
の順番」
といった様なことが知りたいです
333名無しさん@5周年:2007/12/13(木) 13:36:28
出版物じゃないですが、

http://accc.riken.jp/HPC/training/text.html

ここの「チューニング技法入門」は役に立つと思う。
334332:2008/01/04(金) 15:47:52
>>333
遅れすですが、ざっと読んでみました。
ちょうど、キャッシュの有効利用について知りたかったので助かります。
Fortran入門書は山ほどあるのに、最適化とか高速化について、まとめて書かれた本少ないですよね

ありがとうございました!
335名無しさん@5周年:2008/01/04(金) 16:15:24
>>333
定番だよねそこ
336名無しさん@5周年:2008/01/04(金) 19:15:31
並列化スレで「IBMの"虎の巻"なる本がイイ」という話題があって、
Amazonをはじめ、方々探したのですが見つかりませんでした。

定番だったのか。定番ならもっと早くアドレス晒して欲しかった...
337名無しさん@5周年:2008/01/22(火) 22:00:40
>336
虎の巻というのは333>が引用しているリンク先をみれば
なんだか分かるから見て観なさい。
338名無しさん@5周年:2008/02/04(月) 02:51:23
gfortranとg95とどっちが良いのでしょうか?
339名無しさん@5周年:2008/02/04(月) 21:31:43
現状ではどっちも似たようなもんだと思うけど。
GCC4.xに入ってる分、gfortranの方がお手軽な感じはする。
340エヴァ大好き:2008/04/29(火) 14:04:28
あの〜私FORTRAN90初心者なんですが、ガウスの消去法のプログラムを作りたいのですが、
どなたか簡単に作っていただけないでしょうか?
ちなみに格子点の間隔は0.25で格子点9個です。
341エヴァ大好き:2008/04/29(火) 14:09:28
時間が無い!!!!!!!!!!!助けて
342名無しさん@5周年:2008/04/29(火) 14:34:53
>>341
マルチポストすんなカス。宿題は自分でやれ。
343エヴァ大好き:2008/04/29(火) 14:37:41
いいじゃん!!!!お前暇人だろ?
344名無しさん@5周年:2008/04/29(火) 15:54:42
死ね
345名無しさん@5周年:2008/04/29(火) 17:11:47
そういえば世間は連休か
346名無しさん@5周年:2008/04/29(火) 17:34:39
プログラムを作りたいのですが作ってくださいっておかしくね?
347名無しさん@5周年:2008/04/30(水) 14:40:05
答えはネットで!の時代ですからね。ネットに答えが見つかればそれでよし。
丸写ししかしてないのに、終われば全て自力で解決したと錯覚。
嘆かわしい世の中だこと。と、思いきや!
願わくばこういった連中はもっと増えて欲しい。
こつこつやってきた俺らの市場価値が上がるからね。
348名無しさん@5周年:2008/05/02(金) 02:34:17
ム板の宿題丸投げスレに行けばいいのに
349名無しさん@5周年:2008/05/02(金) 21:38:57
>>346
作りたくないけど、点数欲しいから代わりに作って

ってことでは?
350名無しさん@5周年:2008/05/02(金) 23:53:04
>>349
作れないけど、点数だけはほしいから、、だね
351名無しさん@5周年:2008/11/14(金) 16:18:58
hoshu
352名無しさん@5周年:2009/05/14(木) 23:22:48
  ┌────────┐
  │ ☆祝☆長寿スレ |
  └────┰───┘ 
     ∧_∧
    ( ・∀・)   ∬
    ( ⊃旦⊃   旦
    ( ⌒)⌒) ┳┳


□□このスレッドは20世紀生まれです■■
353名無しさん@5周年:2009/10/08(木) 22:21:18
よく>>292みたいな、Fortranを抹殺して欲しいという意見を見るけど、何が具体的に問題なの?
スパコンの計算では明らかにFortranが有利だし、90以降はかなり読みやすいコード書けるし、
どうしてそこまで毛嫌いするのかわかりませんワ
354名無しさん@5周年:2009/10/08(木) 22:23:20
むしろ消滅すべきはC++だろう・・・
355名無しさん@5周年:2009/10/08(木) 23:30:18
>>353
開発資源の分散だと思う。
でも、科学計算系のみんながFortranにくれば無問題なのにな。
356名無しさん@5周年:2009/10/09(金) 02:09:40
Fortranは一応下位互換があるから
77ベース固定書式に90以降の機能を混ぜて使うことができるのがいい。
357名無しさん@5周年:2009/10/16(金) 02:26:08
結局プログラムを書くのは、今でも人間なわけで、
価値のある(行数を稼ぐだけではない)プログラムを
書けて複雑な応用問題が解ける人間は希少資源。
そのために、情報科学者が思いつきで便利だろうとかいって
安易に濫造する便利で高機能な新言語はなかなか普及しない。
なぜなら言語は定義されコンパイラが実現しただけでは
道はまだ半分にもなっておらず、そういった希少資源である
人間がその新言語なるものをうまく使いこなす方法を
発見発明していかなければならないからだ。その期間に
稀少な頭脳は停滞する。また過去の旧言語で書かれたコード
は、言語が古くなっても重要な価値が残っており、それらは
新言語で書き直しが完了して完全に旧言語でかかれたプログラムの
保守が停止しないうちは、棄てられないのだ。
 ただし、教育の問題で、C言語に洗脳された学生や教師ばかりに
なってしまい、Fortranプログラマは今や人材不足で、絶滅しかねない
状況だ。これは非常に残念なことだ。Fortran77からFortran90への
以降の期間の長い停滞が実にボディブローのように効いたと言える。
358名無しさん@5周年:2009/10/16(金) 08:56:53
フォートランの無料のコンパイラ得られず
Cだとポインタ絡み面倒でアルゴリズム書けず
C#で組んでおっそいの作ってPCで動かすとorz
359名無しさん@5周年:2009/10/16(金) 10:34:12
gfortran じゃだめ? F77,90いけるよ。たぶん95もいける・・とおもうよ。
Win(のDos窓)でもLinuxでもあるよ。使ってないからわからないけどMac版もあったと思うよw
少なくとも openMP ならちゃんと2コア使う実行ファイルを吐いてくれるよ。
360名無しさん@5周年:2009/10/16(金) 18:46:01
Mac だと Fink で gfortran と g95 の両方がインストールできる。FORTRAN77 しか
使ったことが無いので、ボチボチ Fortran90 の勉強でもしようかと思ってる。

g95 は公式サイトにバイナリ置いてるよ。

http://www.g95.org/downloads.shtml
361名無しさん@5周年:2009/10/16(金) 19:25:17
g95だと、装置番号に対応するファイル名の指定を実行シェルからできるけど、OpenMP使えない。
gfortranはその逆で、ファイルを実行シェルから指定できないけど、OpenMPがつかえる。

無料コンパイラの代表格であるし、どちらか早く対応して欲しい。

(学校のクラスターにはpgf90が入っているから、研究では困らんのだけど)
362名無しさん@5周年:2009/12/26(土) 23:02:16
test
363名無しさん@5周年:2009/12/26(土) 23:18:43
Fortran90/95いいね〜
fftw3+lapack95+OpenMPで高速計算手軽にできるじゃん

これでファイル出力にHDF5が使えりゃ文句無いのだけど
資料が見つからないorz

これからは
計算のメイン部分:Fortran90/95
テストプログラム作成/データ解析/必要なら初期データ作成:Matlab/Octave
で分担すれば個人でもかなりの事が簡単にできるよこれ
364363:2009/12/27(日) 23:25:07
>これでファイル出力にHDF5が使えりゃ文句無いのだけど
>資料が見つからないorz

日本語の資料が1件だけヒットした
要望があればテスト結果報告する
365名無しさん@5周年:2009/12/28(月) 14:24:07
HDF5ってことは気象・海洋関係の方ですかね?
366名無しさん@5周年:2010/01/13(水) 01:18:01
>>365
残念ながら違います
fortranのバイナリだと機種やコンパイラに依存するんでこの際だから
HDF5にしようと考えた次第です
Rやmatlab/octaveもサポートしてるし自分が使ってる計算アプリもHDF5形式でデータを吐くので
勉強しようという意味もあるんですが

日本語の資料
ttp://airex.tksc.jaxa.jp/dr/prc/japan/contents/AA0064303011/64303011.pdf
サンプルは既にファイルがある場合なのでそのまま実行するとエラーorz

ファイルが無い場合は h5*create_f 系でファイルやデータセットを新規作成
詳しくは reference manual を参照
ttp://hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RM_r166.pdf
あと
ttp://hdfgroup.com/HDF5/doc/UG/UG_frame12Dataspaces.html
のサンプルプログラム h5_write.f90 とか

使用時はモジュール追加
use hdf5

コンパイル時オプション
-lhdf5_hl -lhdf5 -lhdf_fortran -lz

で行けました
367363:2010/01/13(水) 01:24:43
>>365
改行が多すぎますと出たので続き

環境は Ubuntu9.10 64bit Desktop版
HDF5 は既存のライブラリを入れても hdf5.mod が無かったので
ttp://www.hdfgroup.org/HDF5/
から最新のソースを取ってきて checkinstall で deb 形式にしてインストール
Fedra11 だと既存のライブラリに hdf5.mod が存在するので
そちらでもテストする予定

以上
368363:2010/01/13(水) 01:32:36
失礼
367の
>>365>>366 の間違いです
369名無しさん@5周年:2010/01/13(水) 13:55:01
HDFの4の方を使ってる・・・というかコンパイルがうまくいった4から
移動するのが億劫なだけ。
>>363-367
4と比べて5のメリットってどんなのがあるの?
370名無しさん@5周年:2010/01/13(水) 15:39:03
>fortranのバイナリだと機種やコンパイラに依存するんでこの際だから
確かに機種依存は厄介だよなぁ
もっとも、昔と違ってメジャーなFortranコンパイラは絞られてきたけど

国内だとHDF5使ってる主なところは、宇宙・気象・海洋系とJAXAぐらいかな
自分の聞く限りでは

俺もHDF使おうかなぁ・・・と言っても大したコード書いてないけど
371363:2010/01/13(水) 18:15:08
>>369
HDF4は使った事がないので正確には答えられないかもですが

ttp://www.hdfgroup.org/HDF-FAQ.html
Are there limitations to HDF4 files? にある幾つかの問題は
解決されていると考えます

例えば、HDF5では多次元配列もそのまま扱えます
自分は4次元配列データの入出力を行っています

あとはメリットというかデメリットとして
HDF6が出た場合にHDF4のサポートがどうなるかというのがありますね

>>370
自分が使おうと考えた理由の一つに
HDF View
ttp://www.hdfgroup.org/hdf-java-html/hdfview/
で中身が数値や画像として見られるので
誰が何の目的で作ったかわからないようなデータを
大量に作成してしまうのはある程度避けられるのではないか
というのもあります
372名無しさん@5周年:2010/01/13(水) 18:46:09
>>371
HDFViewは自分のコード用じゃないけど使ったことあります
ただ、ローカルで使うには重くてかなりしんどかった
>>366のJAXAの例みたいに、データ、データベースシステム、可視化、クライアント用Web
という感じで上手く階層構造にしてやらんと、でかいデータ扱うのは絶対無理っぽいね
373369:2010/01/14(木) 03:35:28
>>371
ありがとう。版数あがってるだけあってやっぱり5の方がいいのかな・・
>>366
ちなみに・・・HDF4では
-lmfhdf -ldf -lsz -ljpeg -lz
だった。設定次第でこのへんは違うかもしれないけど。jpegとszip圧縮使ってるのね。
374363
Fedora11 でもようやく試せたのでレポートです

gfortran, hdf5 は既存の rpm をインストールすればOK
BLAS, LAPACK, ATLAS も rpm でインスコできるけどそれらを使うなら
ソースからコンパイルし直すか ACML や MKL, GotoBLAS の方がいいでしょう

で, fortran90 の自作アプリが吐き出した HDF5 データを Octave で読み込ませたら
ヘッダのバージョンが 1.8.2
ライブラリのバージョンが 1.8.3
で違うと怒られて Octave が落ちました(笑

.bashrc に

export HDF5_DISABLE_VERSION_CHECK=1

を加えて反映させるとまだ Octave に怒られますが
一応HDF5データの読み込みは成功しました

結論としては Fedora11 の方が敷居は低かったです

以上