129 :
仕様書無しさん :04/07/04 17:58
>>128 廃止"予定"事項なのでFortran95ではまだ使えます。
Fortran90で廃止予定事項として上がっていた物のうち
実数型制御変数を使ったDOループやPAUSE文などは
Fortran95で廃止されています。
ただ、規格上は廃止されていても実際のコンパイラでは
これらの機能を使える物がほとんどのようですが。
(オプション等でエラーや警告が出るようにはなります)
131 :
仕様書無しさん :04/07/31 23:26
至急、質問があります。 FFT(高速フーリエ変換)のプログラムを作ってます。 今まで処理データ数が16000個くらいで、順調に計算できていました。 しかし、データ数を70000個くらいに増やすと、出力ファイルに 『*』印がたくさん出てきます。 ちなみに言語はフォートランで出力はCSV形式で出力してます。 これはフォーマットの設定が悪いんでしょうか?
>>131 マルチポストするような奴には教えてやらん。
133 :
仕様書無しさん :04/08/04 22:55
申し訳ありませんが質問なのですが。 character*10 cc real array(10) array(5)=5.0 write(cc,'(A)') 'array' として、character の cc を使ってarrayの中身を表示することは可能でしょうか? イメージ的には write(*,*) cc(5) のような感じです。(上のままではコンパイル通りませんが)
>>133 最終的には,文字列が加工できるから使う変数を動的に変えられるだろうな,って話?
135 :
仕様書無しさん :04/08/04 23:40
>134 その通りです。 でも、やり方がわかりません。何か別にうまい方法があるのかもしれませんが。
>>135 こういう方法を使わないアルゴリズムを作れませんか?
高級言語なら,文字列からシンボルを引くことができます.
C 言語でも似たようなことができ,関数へのポインタと文字列をメンバにした
構造体を用意します.
fortran はよく知りませんが,関数へのポインタを変数に入れられましたよね?
文字列の配列を作って,さらに関数へのポインタを入れる配列をインデックスを揃えて
作るとかは? ...できるのかな ;-D
>>136 すでに存在する巨大なfortranプログラム+巨大なinclude fileをベースに
一部変更する必要があり、その中で上のような事ができれば便利だと
感じたので質問してみました。
何か別の方法を考えてみます。
>>136-137 EXTERNALを使えば関数へのポインタを引数に取れるけど
変数に代入したり、配列にするのは無理。
intrinsic cos
external bar2, bar3
write(*,*) foo(cos, 0.)
a = 2.
write(*,*) foo(bar2, a)
write(*,*) foo(bar3, a)
end
real function foo(f,x)
external f
foo = f(x)
end
real function bar2(x)
bar2 = x**2
end
real function bar3(x)
bar3 = x**3
end
あとはこのページが参考になるかな?
ttp://user.ecc.u-tokyo.ac.jp/~tt37103/tips/f90/function_pointer.html
140 :
仕様書無しさん :04/08/14 00:36
DIMENSION A(100)というのの100のところは最大で、どのくらいまでできるんでしょうか? DIMENSION A(131072)までは、プログラムが実行されるのに、 DIMENSION A(262144)にすると、 「Stack Overflow Re-ling program with bigger stack value. stack:reserve,commit.Will attempt to trace back」 「Stack Overflow: at address=541718,esp=547f6 00541718 routine at address 541718[+0000]」 って出てプログラムが実行できないんです。
>>140 処理系に依る。
FTN95だと
DIMENSION A(300000)
とかでもできた。
142 :
仕様書無しさん :04/08/21 06:51
143 :
仕様書無しさん :04/08/22 17:20
>>140 コンパイル・オプションで、スタックのサイズを変えられないの?
あとは、動的にメモリを取得するとか。
144 :
仕様書無しさん :04/08/22 23:14
>>140 コンパイル・オプションで、スタックのサイズを変えられないの?
あとは、動的にメモリを取得するとか。
>>139 Fortran 2003ならprocedure pointer (関数・サブルーチンへのポインタ)が使えるんだけどね。
いかんせん、Fortran 2003準拠の処理系がまだないのが…
>>145 お、いつのまにかFortran2003なんて出てたんですね。っていうか2000は?
148 :
仕様書無しさん :04/10/04 20:47:49
社会保険庁のシステムがFORTRANで組まれているという話をよく聞きますが、なんででしょう? この手の業種はかつてはCOBOLが一般的だったような気がするのですが。。。
149 :
仕様書無しさん :04/10/04 22:30:31
おいおい、ところどころ宿題スレになってんな。 もっとマ板らしいネタスレにしようぜ。 俺はFORTRAN使ったことない
おれはある
俺は今でも使ってる
俺はFORTRANで書かれている
154 :
仕様書無しさん :04/10/13 02:36:04
FORTRAN77(の方言)で、メモリを動的確保するサブルーチン/関数 はありますか。
Fortranでいいフリーのデバッガってないですかね? gdbも一応Fortranに対応しているようですが,世の中の情報が少なくて困ります. あと,静的なツールもフリーでご存知の方いらっしゃったらお願いします.当方はctagsを使っているのですが...
open watcom
157 :
仕様書無しさん :04/11/02 00:33:15
わからない問題がいくつかあるんですが暇つぶしに解いてくれる猛者はいませんか??
158 :
仕様書無しさん :04/11/02 01:35:39
いないか(´Д⊂グスン
159 :
仕様書無しさん :04/11/02 01:42:26
sdf
160 :
仕様書無しさん :04/11/02 01:44:21
助けてくれるんですか??
161 :
仕様書無しさん :04/11/18 11:11:48
分からない問題があるのですが助けてくれる方いませんか??
以下のようなプログラでは、配列Aの部分配列(スライス)をポインタPと結合しています。 このとき、ポインタの下限値 lbound(P)が1、上限値 ubound(P) が 4 になってしまうんだけど、なんとかポインタの下限値を結合先と一致させる方法はありませんか?ポインタの下限値と上限値をそれぞれ 0 と 3にしたいのです。 program main integer,dimension(0:3,0:3,0:3,0:10),target :: A integer,dimension(:,:,:),pointer :: P p => A(:,:,:,2) print *, lbound(P), ubound(P) print *, lbound(A), ubound(A) end program main ちなみに、以下のように、配列A全体を結合させると、結合先と添字の下限値が一致しますが、目的はこのようなコードではありません。 program main integer,dimension(0:3,0:3,0:3),target :: A integer,dimension(:,:,:),pointer :: P p => A print *, lbound(P), ubound(P) print *, lbound(A), ubound(A) end program main
164 :
仕様書無しさん :04/11/23 19:11:21
フリーのfortranコンパイラを探しています。 Windows用の。
165 :
仕様書無しさん :04/11/23 19:12:10
フリーのfortranコンパイラを探しています。 Windows用の。
フリーのfortranコンパイラを探しています。 Windows用の。 全裸で
ここはプログラ「マ」板ですから,
>>164 は釣りだと思います.
いや,「探しているプログラマ」というのを演出しているのかも.
フリーのfortranプログラマを探しています。 Windows用の。
169 :
164 :04/11/25 20:47:12
フリーの100万円探しています。 Windows用の
170 :
仕様書無しさん :04/11/26 00:05:48
まだVisualFortranってあるの?
Power Stationって何
>>171 1. かつてMicrosoftで出してたWindows 上のFORTRAN
Microsoft Fortran
↓
Microsoft Fortran Powerstation
(↓ 実は別物)
DEC Visual Fortran
↓
Compaq Visual Fortran
↓
(HPに会社ごと身売り HPブランドではVFは放置)
(↓ 実は別物?)
Intel Visual Fortran
2. 昔のIBMのEWS(RS/6000)も、POWERSTATION という名前だったような気がする。
174 :
仕様書無しさん :04/12/11 07:53:55
>>172 CVFとIVFの関係は、フロントエンド部がCVFを元にしており、
バックエンドがIntel独自という関係ではないかな?
つまり半分別物。
175 :
仕様書無しさん :04/12/18 09:12:10
>>163 一般的には、部分配列を取ると、コンパイラ側でいったん非明示的ワーク配列に展開してそれを改めて引き渡したりしている。
今の状況では、本来メモリー的にはすでに連続しているので必要ないのだが、多分ワークに展開されていると思う。
非明示的ワーク配列の添え字が1から始まるという事情で、ポインター側の添え字も1から始まることになってしまうのだろう。
1個目と2個目のプログラムの挙動の違いはそういうことだと推測される。
したがって、手動で明示的に3次元の0から始まるワーク配列に展開して、それにポインタを割り付けるしかないと言うことになる。
多分オーバーヘッド的にはあまり変わらないと思う。
ただし、以上はいくつか他の場合の挙動に基づく推測なので、正しくないかも。
176 :
175 :04/12/18 09:14:47
>>175 の補足
program main
integer,target :: A(0:3,0:3,0:3)
integer,pointer :: P(:,:,:), q(:,:,:)
p => A
q => A(:,:,:)
print *
print *, lbound(P), ubound(P)
print *
print *, lbound(q), ubound(q)
print *
print *, lbound(A), ubound(A)
end program main
出力結果 by DVF
0 0 0 3 3 3
1 1 1 4 4 4
0 0 0 3 3 3
♪おおブレネリ あなたのおうちはどこ わたしのおうちは スイッツァランドよ きれいな湖水の ほとりなのよ ヤッ〜ホ〜
178 :
仕様書無しさん :
04/12/25 16:45:14 FORTRAN IV YOU !