このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
FORTRAN使いが優しくコメントを返しますが、
お礼はFORTRANの布教と初心者の救済と次期Fortran2008規格でのCOMEFROM文採用をお願いします。
●注意事項
・質問する前にGoogle等の検索サイトで検索しましょう。
・回答者にわかりやすい様に、質問内容はできる限り詳しく書きましょう。
・エラーの場合は起きた状況、環境(OS・コンパイラ・バージョン)、エラーメッセージも詳しく書きましょう。
●前スレ
くだすれFORTRAN(超初心者用)その5
http://toro.2ch.net/test/read.cgi/tech/1269704830/
●過去スレ
くだすれFORTRAN(超初心者用)その4
http://pc12.2ch.net/test/read.cgi/tech/1232789521/
くだすれFORTRAN(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1196384126/
くだすれFORTRAN(超初心者用)その2
http://pc11.2ch.net/test/read.cgi/tech/1164121236/
くだすれFORTRAN(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1138063703/
くだすれFORTRAN(超初心者用)その6
■ このスレッドは過去ログ倉庫に格納されています
2012/08/16(木) 20:58:00.31
2012/08/30(木) 01:26:24.03
> よそのvisual basicの方にでもいってやってきてください。
失礼しちゃうわw
失礼しちゃうわw
2012/08/30(木) 01:30:42.54
2012/08/30(木) 18:36:51.49
>>44
>parameterというのはC言語でいうconstのような、
>変数として宣言はするが変更はできないものと捉えて問題ないでしょうか?
間違っとる。parameterはread onlyのprotecrted変数とは違う。
parameterはコンパイル時に確定している値で宣言のサイズにも使える。
実行時にならないと確定しない変数とは違う。
>integer, parameter :: ncolumn = 18, ndata = 400, gomi = 6
> ^^^^^^^^^
>などとしておくべきでしょうか?
考え方は正しいが、ngomiのように先頭文字をi-nの間で始めるのが、
Gentlemanのたしなみ。さらに常数なので、i,j,kを避けるのが育ちの良さ。
>エラーの意味がやっと分かりました。
>関数や変数に使えない文字を、クォートの外に書いてしまうと発生するエラーなんですね。
違う。関数や変数に使えなくても普通にシンタックスエラーが出る記号文字もある。
全角文字は、二つの1バイト文字に解釈されて、そもそもFortran規格で
許されない文字に対応してしまうことがある。
またクォート以外にもコメントでは許されている。
>parameterというのはC言語でいうconstのような、
>変数として宣言はするが変更はできないものと捉えて問題ないでしょうか?
間違っとる。parameterはread onlyのprotecrted変数とは違う。
parameterはコンパイル時に確定している値で宣言のサイズにも使える。
実行時にならないと確定しない変数とは違う。
>integer, parameter :: ncolumn = 18, ndata = 400, gomi = 6
> ^^^^^^^^^
>などとしておくべきでしょうか?
考え方は正しいが、ngomiのように先頭文字をi-nの間で始めるのが、
Gentlemanのたしなみ。さらに常数なので、i,j,kを避けるのが育ちの良さ。
>エラーの意味がやっと分かりました。
>関数や変数に使えない文字を、クォートの外に書いてしまうと発生するエラーなんですね。
違う。関数や変数に使えなくても普通にシンタックスエラーが出る記号文字もある。
全角文字は、二つの1バイト文字に解釈されて、そもそもFortran規格で
許されない文字に対応してしまうことがある。
またクォート以外にもコメントでは許されている。
5212
2012/08/30(木) 19:24:39.72 お世話になります。
今日、師に計算結果をプロットしたグラフ用紙とそのプログラムを見せに行ったのですが、
確かに計算結果は正しい方向に向かっているが、ちょっと違うと言われました。
do i = 1, ndata
tx(i) = (i * 50.0 - 25.0) * x(3, i)
ty(i) = (i * 50.0 - 25.0) * y(3, i)
end do
do i = 1, ncolumn
sx(i) = sum( tx * a(i, :) ) ←ここが師は不明だと言っていました。
sy(i) = sum( ty * a(i, :) )
end do
s = sx / sy
プログラムを確認してもらったところ、
上記より上に関しては正しいが、上記の方法はわしは知らん、もし間違っているなら
ここだろうとのことでした。
また、iを整数にしないと計算結果は正しく出ない場合があるから直してと言われました。
(i * 50.0 - 25.0)←この部分なんですが、指数表示のデータがExcelデータx,yの1列目に
すでに表示されているので、Excelデータの1列目を3列全部読み込んでいるので
1,3列読み込んで、対応した値同士で計算させた方が良いというアドバイスを受けました。
下記にエクセルデータの全体像を記載します。
今日、師に計算結果をプロットしたグラフ用紙とそのプログラムを見せに行ったのですが、
確かに計算結果は正しい方向に向かっているが、ちょっと違うと言われました。
do i = 1, ndata
tx(i) = (i * 50.0 - 25.0) * x(3, i)
ty(i) = (i * 50.0 - 25.0) * y(3, i)
end do
do i = 1, ncolumn
sx(i) = sum( tx * a(i, :) ) ←ここが師は不明だと言っていました。
sy(i) = sum( ty * a(i, :) )
end do
s = sx / sy
プログラムを確認してもらったところ、
上記より上に関しては正しいが、上記の方法はわしは知らん、もし間違っているなら
ここだろうとのことでした。
また、iを整数にしないと計算結果は正しく出ない場合があるから直してと言われました。
(i * 50.0 - 25.0)←この部分なんですが、指数表示のデータがExcelデータx,yの1列目に
すでに表示されているので、Excelデータの1列目を3列全部読み込んでいるので
1,3列読み込んで、対応した値同士で計算させた方が良いというアドバイスを受けました。
下記にエクセルデータの全体像を記載します。
5312
2012/08/30(木) 19:25:33.04 エクセルデータx
1列目 2列目 3列目
2.50E+01 5.31E-01 2.75E-01
5.00E+01 2.27E-01 4.22E-02
↓ ↓ ↓
(x1 x2 x3)
(1〜400個まで存在します。)
-------------------------------------------
エクセルデータy
1列目 2列目 3列目
2.50E+01 5.04E-01 2.70E-01
5.00E+01 2.08E-01 4.10E-02
↓ ↓ ↓
(y1 y2 y3)
(こちらも1〜400個まで存在します。)
tx(i) = (i * 50.0 - 25.0) * x(3, i)
ty(i) = (i * 50.0 - 25.0) * y(3, i)
ここを下記のように修正すれば良いでしょうか?
tx(i) = x(1, i)* x(3, i)
ty(i) = x(1, i)* y(3, i)
1列目 2列目 3列目
2.50E+01 5.31E-01 2.75E-01
5.00E+01 2.27E-01 4.22E-02
↓ ↓ ↓
(x1 x2 x3)
(1〜400個まで存在します。)
-------------------------------------------
エクセルデータy
1列目 2列目 3列目
2.50E+01 5.04E-01 2.70E-01
5.00E+01 2.08E-01 4.10E-02
↓ ↓ ↓
(y1 y2 y3)
(こちらも1〜400個まで存在します。)
tx(i) = (i * 50.0 - 25.0) * x(3, i)
ty(i) = (i * 50.0 - 25.0) * y(3, i)
ここを下記のように修正すれば良いでしょうか?
tx(i) = x(1, i)* x(3, i)
ty(i) = x(1, i)* y(3, i)
2012/08/30(木) 20:25:51.02
修正すれば良いでしょうかじゃなくてまずはやってみろよ
前向きな姿勢は結構だけど結局は質問するばかり、
理解する力が著しく欠如しているのではないか
前向きな姿勢は結構だけど結局は質問するばかり、
理解する力が著しく欠如しているのではないか
5512
2012/08/30(木) 20:56:06.80 報告します。
先ほど、ビルドに成功して同じファイルを読み込んだのですが、微妙に値がズレてきました!
もう一回明日師に確認してもらいます。
result= 1.035215 1.035760 1.036275 1.036669
1.036880 1.036755
result= 1.035272 1.036202 1.037060 1.037667
1.037912 1.037520
先ほど、ビルドに成功して同じファイルを読み込んだのですが、微妙に値がズレてきました!
もう一回明日師に確認してもらいます。
result= 1.035215 1.035760 1.036275 1.036669
1.036880 1.036755
result= 1.035272 1.036202 1.037060 1.037667
1.037912 1.037520
2012/08/31(金) 11:37:20.94
tx(i) = x(1, i)* x(3, i)
ty(i) = x(1, i)* y(3, i)
↑
同じ数字が入っているはずだが、y(1、i)にした方がいいかな。
あと、
>エクセルデータy
>1列目 2列目 3列目
>2.50E+01 5.04E-01 2.70E-01
>5.00E+01 2.08E-01 4.10E-02
この数字が本当だとすると、 1カラム目は(i * 50.0 - 25.0) になっていないw
ty(i) = x(1, i)* y(3, i)
↑
同じ数字が入っているはずだが、y(1、i)にした方がいいかな。
あと、
>エクセルデータy
>1列目 2列目 3列目
>2.50E+01 5.04E-01 2.70E-01
>5.00E+01 2.08E-01 4.10E-02
この数字が本当だとすると、 1カラム目は(i * 50.0 - 25.0) になっていないw
5712
2012/08/31(金) 19:58:38.13 >>56
アドバイス有難うございます。
tx(i) = x(1, i)* x(3, i)
ty(i) = y(1, i)* y(3, i)
これに直してコンパイルしたところ、うまく結果が算出され、
師に確認してもらったところ、まぁいいんじゃないという
評価のグラフが書けました。
みなさんのおかげでここまで
来ることができ、大変感謝しています。
まだ別のデータが後200ほど残っているので、頑張ってタイピングしようと
思います。またやっていて困った時は相談にのってやってください。
ありがとうございました。
アドバイス有難うございます。
tx(i) = x(1, i)* x(3, i)
ty(i) = y(1, i)* y(3, i)
これに直してコンパイルしたところ、うまく結果が算出され、
師に確認してもらったところ、まぁいいんじゃないという
評価のグラフが書けました。
みなさんのおかげでここまで
来ることができ、大変感謝しています。
まだ別のデータが後200ほど残っているので、頑張ってタイピングしようと
思います。またやっていて困った時は相談にのってやってください。
ありがとうございました。
2012/09/05(水) 15:32:34.90
コンパイラを Intel visual fortran から PGI visual fortran に変更したところ、
ビルド時に
Unable to open MODULE file ifport.mod
でエラーになります。
ifport では access と DELFILESQQ を使用しているのですが、
PGIのコンパイラで使用できる同種のライブラリはありますでしょうか。
ビルド時に
Unable to open MODULE file ifport.mod
でエラーになります。
ifport では access と DELFILESQQ を使用しているのですが、
PGIのコンパイラで使用できる同種のライブラリはありますでしょうか。
2012/09/05(水) 22:38:16.39
2012/09/07(金) 20:00:53.25
それで>>58は解決したのかよ。
PGIのCUDA対応に興味あるから、色々反応するの待ってんだけど。
PGIのCUDA対応に興味あるから、色々反応するの待ってんだけど。
2012/09/15(土) 18:54:35.08
急に質問してしまい申し訳ありません。
先月からfortranについて勉強し始めました。
ですが行き詰ってしまいました。
このような記述でディスプレイに計算結果を表示したのですが・・・
何故か表示される結果がCとDが2つづつ表示されるようになっています。
記述
WRITE(6,50)A,B
WRITE(6,60)C,D
50 FORMAT('|A|=',F16.12,' |B|=',F16.12)
60 FORMAT('C =',F16.12,' D =',F16.12)
結果
|A|= 0.999681111435 |B|= 0.025044224242
C = 0.025079839523 D = 0.000000000000
C = -0.000632444304 D = 0.000000000000
おそらくwrite文のフォーマットの記述がおかしいと思うのですが
どこがおかしいのか分からず質問させていただきました。
おかしな点を指摘していただけると幸いです。
先月からfortranについて勉強し始めました。
ですが行き詰ってしまいました。
このような記述でディスプレイに計算結果を表示したのですが・・・
何故か表示される結果がCとDが2つづつ表示されるようになっています。
記述
WRITE(6,50)A,B
WRITE(6,60)C,D
50 FORMAT('|A|=',F16.12,' |B|=',F16.12)
60 FORMAT('C =',F16.12,' D =',F16.12)
結果
|A|= 0.999681111435 |B|= 0.025044224242
C = 0.025079839523 D = 0.000000000000
C = -0.000632444304 D = 0.000000000000
おそらくwrite文のフォーマットの記述がおかしいと思うのですが
どこがおかしいのか分からず質問させていただきました。
おかしな点を指摘していただけると幸いです。
2012/09/15(土) 19:24:02.52
たぶんおかしくない。それより WRITE(6,60) でソースコードを検索してみるべき。
2012/09/15(土) 19:31:56.26
↑すまん適当言った。C と D は複素数か配列じゃないだろうか。
6562
2012/09/16(日) 17:07:32.38 >>64
ありがとうございます!無事解が一つのみ表示されました。
ご指摘の通りCとDが複素数で宣言されていました・・・・
それにすら気づかず、write文のせいにしていたのが恥ずかしいです。
大変助かりました!
ありがとうございます!無事解が一つのみ表示されました。
ご指摘の通りCとDが複素数で宣言されていました・・・・
それにすら気づかず、write文のせいにしていたのが恥ずかしいです。
大変助かりました!
2012/09/18(火) 19:39:09.67
すみません、質問です。
求めたい値=
(a*固定した数値1*メモ帳データx+b*固定した数値2*メモ帳データy+(1-a-b)*固定した数値1)/固定した数値1
a=1-exp(-11.88×s)
b=exp(-11.88×s)×1-exp(-11.88×t)
固定した数値1,固定した数値2,s,tはその都度自分の方で入力しようと思います。
メモ帳のデータx,yはどれも以下のような形式になっています。
1.010629 1.010828 1.011074 1.011356 1.012
1.010916 1.012412 1.014304 1.016474 1.012
1.011208 1.013878 1.017139 1.02069 1.012
1.011433 1.014934 1.019081 1.022747 1.012
1.011525 1.015284 1.019623 1.024372 1.012
1.011341 1.014313 1.017726 1.021465 1.012
ここから何行目の何列目を指定して一つの数値を計算式に代入して「求めたい値」を算出したいのですが
可能でしょうか?
6766
2012/09/18(火) 19:44:05.52 すみません、追記です。
メモ帳データの数値はすべて使用して計算結果として算出したいので、
一枚のメモ帳に結果がすべて表示できる方法があったらお願いします。
メモ帳データの数値はすべて使用して計算結果として算出したいので、
一枚のメモ帳に結果がすべて表示できる方法があったらお願いします。
2012/09/18(火) 19:50:35.33
この辺を見ておくといいよ
http://www.nag-j.co.jp/fortran/index.html
http://www.nag-j.co.jp/fortran/index.html
2012/09/19(水) 03:23:00.74
とりあえずファイルのデータを全部2次元配列に放り込んで
結果も2次元配列の内容を全部吐き出す感じでいいだろ。
x, y に任意の組み合わせを取るなら単純じゃなくなるが。
結果も2次元配列の内容を全部吐き出す感じでいいだろ。
x, y に任意の組み合わせを取るなら単純じゃなくなるが。
70デフォルトの名無しさん
2012/09/21(金) 20:29:19.20 プログラムの歴史を学ぼうと思って、FORTRANからやってみようと思いました。
FOTRANのバージョンとか歴史はある程度理解したんですが、
WikipediaのFORTRANの歴史に載っています所謂IBM 704用のFORTRANの最初期の形なんてのは今のPCじゃ動かないんでしょうか?
標準入出力の関係もまだなかったみたいですし、多分そもそも現代のコンピュータ上では実装できないんでしょうけど。
FORTRANの歴史
http://ja.wikipedia.org/wiki/FORTRAN#FORTRAN.E3.81.AE.E6.AD.B4.E5.8F.B2
まぁ、今は諦めまして、Linuxにgfortranを入れたとこです。
Wikipediaの項目を見てたら下記リンクにあるのが昔の正規のドキュメントかなと思っているのですが、
さすがにコンパイラはIBMのものでしょうし、見ることができないですよね。出来たら初期の高級言語のコンパイラのソースも見てみたいんですけど。まぁ、見たってきっとわかりませんがね。アセンブラなんでしょうか?機械語?
Index of /pdf/ibm/704
http://www.bitsavers.org/pdf/ibm/704/
それで、これが一番最初のFORTRANの正式なドキュメントかな?と思っているのですが、当たりですかね?
http://www.bitsavers.org/pdf/ibm/704/FORTRAN_paper_1957.pdf
FOTRANのバージョンとか歴史はある程度理解したんですが、
WikipediaのFORTRANの歴史に載っています所謂IBM 704用のFORTRANの最初期の形なんてのは今のPCじゃ動かないんでしょうか?
標準入出力の関係もまだなかったみたいですし、多分そもそも現代のコンピュータ上では実装できないんでしょうけど。
FORTRANの歴史
http://ja.wikipedia.org/wiki/FORTRAN#FORTRAN.E3.81.AE.E6.AD.B4.E5.8F.B2
まぁ、今は諦めまして、Linuxにgfortranを入れたとこです。
Wikipediaの項目を見てたら下記リンクにあるのが昔の正規のドキュメントかなと思っているのですが、
さすがにコンパイラはIBMのものでしょうし、見ることができないですよね。出来たら初期の高級言語のコンパイラのソースも見てみたいんですけど。まぁ、見たってきっとわかりませんがね。アセンブラなんでしょうか?機械語?
Index of /pdf/ibm/704
http://www.bitsavers.org/pdf/ibm/704/
それで、これが一番最初のFORTRANの正式なドキュメントかな?と思っているのですが、当たりですかね?
http://www.bitsavers.org/pdf/ibm/704/FORTRAN_paper_1957.pdf
2012/09/22(土) 12:09:47.77
もともとが業務用だからね。
2012/09/24(月) 18:53:46.75
>>70
FORTRANの歴史を知りたいなら、Comuter History Museumをチェックしなければ
いかんがねー。
http://www.computerhistory.org/collections/fortranarchive/
たしか、バッカスのFORTRANコンパイラを作りたいと上申書みたいなメモから
あった気がする。マニュアルの類も文法書の他運用書などたくさんある。
704のエミュはなかったが、後のIBM360やIBM1130のエミュは存在している。
その上でFORTRANIVは動いている。FORTRANIIも動いていたかもしれない。
この時代のソフトウェアは著作権の概念がなかったのかパブリックドメインに
なっているよう。時代の進んだIBM370とかFORTRAN77のFORT VSとかのエミュはない。
昔のFORTRANのマシンコードなんかはパンチカードだか、ダンプリストだかが
うpされていた気がするので機械語レベルでは転がってる気がした。
FORTRANの歴史を知りたいなら、Comuter History Museumをチェックしなければ
いかんがねー。
http://www.computerhistory.org/collections/fortranarchive/
たしか、バッカスのFORTRANコンパイラを作りたいと上申書みたいなメモから
あった気がする。マニュアルの類も文法書の他運用書などたくさんある。
704のエミュはなかったが、後のIBM360やIBM1130のエミュは存在している。
その上でFORTRANIVは動いている。FORTRANIIも動いていたかもしれない。
この時代のソフトウェアは著作権の概念がなかったのかパブリックドメインに
なっているよう。時代の進んだIBM370とかFORTRAN77のFORT VSとかのエミュはない。
昔のFORTRANのマシンコードなんかはパンチカードだか、ダンプリストだかが
うpされていた気がするので機械語レベルでは転がってる気がした。
2012/09/24(月) 18:57:59.58
エミュとかはComputerHistoryMuseumではなく、民間のおっさん達がやってる。
ググれば出てくる。
ググれば出てくる。
2012/09/24(月) 19:22:07.62
>もともとが業務用だからね。
?
もしかして“適用業務”のことかw
?
もしかして“適用業務”のことかw
7666
2012/09/26(水) 19:24:13.20 結局、自分でプログラム組めるほど頭良くないので電卓で手打ち
でやってたんですが、エクセルでやることにしました。
フォートランは、エクセルと比べどういう計算処理をする場合に
特化しているんでしょうか?計算するんだったらfortranが一番
おすすめだそうなのでやってみたんですがチンプンカンプンです。
(>_<)
でやってたんですが、エクセルでやることにしました。
フォートランは、エクセルと比べどういう計算処理をする場合に
特化しているんでしょうか?計算するんだったらfortranが一番
おすすめだそうなのでやってみたんですがチンプンカンプンです。
(>_<)
2012/09/26(水) 21:49:19.25
Excel でできる程度の計算なら Excel でやれば良し。
Excel とか無い時代の産物なので、伝統か信仰によって勧められる事が多い。
Excel とか無い時代の産物なので、伝統か信仰によって勧められる事が多い。
2012/10/16(火) 20:22:35.55
質問があります
FORTRANを使って連番ファイルを読み込ませるためのgnuplotのバッチファイルを書きだそうとしているのですが、writeでどうやって書き出すのかわかりません
どういうことかというと、たとえば
plot "output[i].txt" u1:2
をi=1,10でwriteで出力するとき
write(filenumber,*) "plot "output[" i "].txt u 1:2"
となるためwriteで文字を出力するために使う”と、出力する文字の一つとして扱いたい”が干渉してしまうんです。
”を文字として出力するためにはどうしたらよいでしょうか?
どなたかわかる方がいたら教えていただけませんか?
FORTRANを使って連番ファイルを読み込ませるためのgnuplotのバッチファイルを書きだそうとしているのですが、writeでどうやって書き出すのかわかりません
どういうことかというと、たとえば
plot "output[i].txt" u1:2
をi=1,10でwriteで出力するとき
write(filenumber,*) "plot "output[" i "].txt u 1:2"
となるためwriteで文字を出力するために使う”と、出力する文字の一つとして扱いたい”が干渉してしまうんです。
”を文字として出力するためにはどうしたらよいでしょうか?
どなたかわかる方がいたら教えていただけませんか?
79デフォルトの名無しさん
2012/10/16(火) 21:27:08.312012/10/16(火) 22:41:51.19
言ってる意味わからんw
do i = 1, 10
write(filenumber, '(a, i2,2, a)') 'plot "output[', i, '].txt" u 1 :2'
end do
これでどうだ?番号は 01,02,... ,10 となるが。
do i = 1, 10
write(filenumber, '(a, i2,2, a)') 'plot "output[', i, '].txt" u 1 :2'
end do
これでどうだ?番号は 01,02,... ,10 となるが。
2012/10/16(火) 22:54:18.30
すまんこ。
>'(a, i2,2, a)')
i2.2 ↑ ピリオドな
ついでに。。。0が余計ならformatを動的に生成すればおk
integer :: i, klen, filenumber = 9
character (len = 80) :: fmt
do i = 1, 10
klen = int(log10(real(i))) + 1
write(fmt, '(a, i1, a)') '(a, i', klen, ', a)'
write(filenumber, fmt) 'plot "output[', i, '].txt" u 1 :2'
end do
>'(a, i2,2, a)')
i2.2 ↑ ピリオドな
ついでに。。。0が余計ならformatを動的に生成すればおk
integer :: i, klen, filenumber = 9
character (len = 80) :: fmt
do i = 1, 10
klen = int(log10(real(i))) + 1
write(fmt, '(a, i1, a)') '(a, i', klen, ', a)'
write(filenumber, fmt) 'plot "output[', i, '].txt" u 1 :2'
end do
2012/10/16(火) 23:03:43.98
'(a, i0, a)'
でいいんじゃないの?
でいいんじゃないの?
2012/10/16(火) 23:35:22.01
2012/10/17(水) 00:21:39.81
>>78
思いつくものを挙げてみると...
write(filenumber, '(a, i0, a)') 'plot "output[', i, '].txt" u 1:2'
write(filenumber, '(a, i0, a)') "plot ""output[", i, "].txt"" u 1:2"
write(filenumber, '(a, i0, a)') "plot " // char(34) // "output[", i, "].txt" // char(34) // " u 1:2"
write(filenumber, '(a, a1, a, i0, a, a1, a)') "plot ", 34, "output[", i, "].txt", 34, " u 1:2"
write(filenumber, '(13hplot "output[, i0, 12h].txt" u 1:2)') i
思いつくものを挙げてみると...
write(filenumber, '(a, i0, a)') 'plot "output[', i, '].txt" u 1:2'
write(filenumber, '(a, i0, a)') "plot ""output[", i, "].txt"" u 1:2"
write(filenumber, '(a, i0, a)') "plot " // char(34) // "output[", i, "].txt" // char(34) // " u 1:2"
write(filenumber, '(a, a1, a, i0, a, a1, a)') "plot ", 34, "output[", i, "].txt", 34, " u 1:2"
write(filenumber, '(13hplot "output[, i0, 12h].txt" u 1:2)') i
2012/11/18(日) 12:45:02.25
バッチファイルをそのまま生成させるって頭いいな
86デフォルトの名無しさん
2012/11/23(金) 13:59:34.03 質問です。
配列を引数にする関数を定義したいのですが、
やり方がよくわかりません。
function FD(w)
implicit none
integer :: i
integer,parameter :: n = 10
real(8) :: w(0:n),FD(0:n)
do i = 0, n
FD(i) = exp( - w(i))
enddo
end function FD
が関数で、これをメインプログラムで使いたいのですが、
x = FD(w)
のような省略形だとちゃんと計算できるんですけど、
do i = 0, m
x(i) = FD(w(i))
enddo
みたいに配列を明示しようとすると
配列の形状が準拠していません。
とエラーが出ます。
()を省略しないで書く方法はないですか?
配列を引数にする関数を定義したいのですが、
やり方がよくわかりません。
function FD(w)
implicit none
integer :: i
integer,parameter :: n = 10
real(8) :: w(0:n),FD(0:n)
do i = 0, n
FD(i) = exp( - w(i))
enddo
end function FD
が関数で、これをメインプログラムで使いたいのですが、
x = FD(w)
のような省略形だとちゃんと計算できるんですけど、
do i = 0, m
x(i) = FD(w(i))
enddo
みたいに配列を明示しようとすると
配列の形状が準拠していません。
とエラーが出ます。
()を省略しないで書く方法はないですか?
2012/11/23(金) 16:37:12.25
>>86
w(i)は配列ではなく配列の要素(1個の変数)ですので
当然エラーとなります。
do i = 0, m
x(i) = FD(w(i))
enddo
の3行を、
x(:) = FD(w(:))
にすれば()付きの書き方にはなります。
w(i)は配列ではなく配列の要素(1個の変数)ですので
当然エラーとなります。
do i = 0, m
x(i) = FD(w(i))
enddo
の3行を、
x(:) = FD(w(:))
にすれば()付きの書き方にはなります。
2012/11/23(金) 18:30:14.20
>>87
回答ありがとうございます。
まだ、違いがよくわからないのですが
例えば、
do i = 0, m
x(i) = FD(w(i)) + y(i+1)
enddo
とか
do i = 0, m/2
x(i) = FD(w(i))
enddo
do i = m/2, m
y(i) = FD(w(i))
enddo
のようなことは関数の場合、出来ないのですか?
(:)だと出来ることが制限されてしまうような気がするんです。
回答ありがとうございます。
まだ、違いがよくわからないのですが
例えば、
do i = 0, m
x(i) = FD(w(i)) + y(i+1)
enddo
とか
do i = 0, m/2
x(i) = FD(w(i))
enddo
do i = m/2, m
y(i) = FD(w(i))
enddo
のようなことは関数の場合、出来ないのですか?
(:)だと出来ることが制限されてしまうような気がするんです。
2012/11/23(金) 19:46:12.45
>88
x(0:m) = FD(w(0:m)) + y(1:m+1)
とか
x(0:m/2) = FD(w(0:m/2))
y(m/2:m) = FD(w(m/2:m))
となるかな
x(0:m) = FD(w(0:m)) + y(1:m+1)
とか
x(0:m/2) = FD(w(0:m/2))
y(m/2:m) = FD(w(m/2:m))
となるかな
2012/11/24(土) 14:54:58.79
それか関数の方を 配列じゃなくて 数値を引数とするように変更するかだな
2012/11/26(月) 19:24:40.40
fortran95 以降になるが、ELEMENTAL属性を使えばできる。
これはスカラーに対して定義しておくと、配列も受け付けるというもの。
ただし副作用のない PURE な副プログラムな必要がある。
elemental pure real(8) function FD(w)
implicit none
integer :: i
real(8), intent(in) :: w
FD = exp( - w )
end function FD
これでメインルーチン側で
x = FD( w )
と呼んでも
do i = 1, 10
x(i) = FD( w(i) )
end do
と呼んでもよろしい。
PURE が何かはマニュアルを見るか、鋼鉄天使くるみPUREを見る事。
シスタープリンセスREPUREでもいい。
これはスカラーに対して定義しておくと、配列も受け付けるというもの。
ただし副作用のない PURE な副プログラムな必要がある。
elemental pure real(8) function FD(w)
implicit none
integer :: i
real(8), intent(in) :: w
FD = exp( - w )
end function FD
これでメインルーチン側で
x = FD( w )
と呼んでも
do i = 1, 10
x(i) = FD( w(i) )
end do
と呼んでもよろしい。
PURE が何かはマニュアルを見るか、鋼鉄天使くるみPUREを見る事。
シスタープリンセスREPUREでもいい。
2012/12/01(土) 20:48:26.42
ELEMENTAL属性ってのは初めて聞いた 勉強になります
兄ぃありがとう
兄ぃありがとう
2012/12/02(日) 15:08:21.56
(ELEMENTALはPUREでもあるから強調しなくてもいいんだけどな…
94デフォルトの名無しさん
2012/12/02(日) 16:57:51.30 x(:)=fd(w(:))
x=fd(w)
って同じ?
: つけとかないと配列であることを
忘れちゃうので
つける習慣にしているけど。
x=fd(w)
って同じ?
: つけとかないと配列であることを
忘れちゃうので
つける習慣にしているけど。
2012/12/02(日) 17:13:25.97
同じだけど、括弧をつけて配列であることを明示したほうがいいね
2012/12/03(月) 19:08:16.44
>>93
どっこい、それがF2008でELEMENTALだがI/Oを許すという風になったので、
ELEMENTALだからと言ってPUREとは言えなくなったのだよ。
妹たちの未来を考えて、ここはPURE。
>>95
これもF2003からは同じではなくなったのだよ。
RAEL,ALLOCATABLE :: a(:)
REAL :: x(100)
a = x
F2003では代入時に割り付け配列は、(再)割り付けされる。
a = x(1:10)
とすると、a はサイズ100から10に再割り付けされる。
a(:) = x(1:10)
の時は、元のサイズ100のまま代入される。
抽象度の高い記法の方が良いのだから、括弧をつけない方が正しいと思う。
F77からの移行期には、括弧を書いて置く方がわかり易かったのは理解できるが
数学だって行列を記号1個で書いて間違わないのだからだいじょぶDEATH
どっこい、それがF2008でELEMENTALだがI/Oを許すという風になったので、
ELEMENTALだからと言ってPUREとは言えなくなったのだよ。
妹たちの未来を考えて、ここはPURE。
>>95
これもF2003からは同じではなくなったのだよ。
RAEL,ALLOCATABLE :: a(:)
REAL :: x(100)
a = x
F2003では代入時に割り付け配列は、(再)割り付けされる。
a = x(1:10)
とすると、a はサイズ100から10に再割り付けされる。
a(:) = x(1:10)
の時は、元のサイズ100のまま代入される。
抽象度の高い記法の方が良いのだから、括弧をつけない方が正しいと思う。
F77からの移行期には、括弧を書いて置く方がわかり易かったのは理解できるが
数学だって行列を記号1個で書いて間違わないのだからだいじょぶDEATH
2012/12/03(月) 23:06:44.99
(キリッ
2012/12/04(火) 13:45:46.84
>>96
2003使ったことないけど、うーんと、
要は allocatable な変数は
allocate() 使わなくても、
: 無しで左辺において、
固定サイズ(か既に大きさの確定した配列)が右辺に来る代入式で
随時 deallocate して再び allocate した事にする、
ということなのかな?
・・・・すくなくともワシには危険な香りがするw
2003使ったことないけど、うーんと、
要は allocatable な変数は
allocate() 使わなくても、
: 無しで左辺において、
固定サイズ(か既に大きさの確定した配列)が右辺に来る代入式で
随時 deallocate して再び allocate した事にする、
ということなのかな?
・・・・すくなくともワシには危険な香りがするw
2012/12/04(火) 13:48:18.15
ふとおもったけど、文字列で
mojiretsu='abcdefg'
write(*,*) mojiretu(2:4)
で bcd が表示できる例のように
文字列の番地管理の表記法って77からある(とおもうw)けど
これってかなり時代先取りだよね。偶然なのか
規格策定の時にすでにベクトル表現の思考が始まっていたのか
しらないけど。
mojiretsu='abcdefg'
write(*,*) mojiretu(2:4)
で bcd が表示できる例のように
文字列の番地管理の表記法って77からある(とおもうw)けど
これってかなり時代先取りだよね。偶然なのか
規格策定の時にすでにベクトル表現の思考が始まっていたのか
しらないけど。
100デフォルトの名無しさん
2012/12/04(火) 17:50:34.81101デフォルトの名無しさん
2012/12/05(水) 13:45:40.15 へえ、しらんかった。
でも、どういう場面でつかうんだろう?
i=2
write(*,*) 'shit'(i:4)
とか、・・・英語複数形 s をだしたり隠したり、かな?
でも正直なところ、なくても困らんな。
でも、どういう場面でつかうんだろう?
i=2
write(*,*) 'shit'(i:4)
とか、・・・英語複数形 s をだしたり隠したり、かな?
でも正直なところ、なくても困らんな。
10288
2012/12/05(水) 18:22:09.77 88です。みなさんありがとうございます。
お礼が遅くなってすみませんでした。
まだ難しくてよくわからないので、素直に括弧つけます。
お礼が遅くなってすみませんでした。
まだ難しくてよくわからないので、素直に括弧つけます。
103デフォルトの名無しさん
2012/12/06(木) 14:46:49.96 >>100 最近の言語は動的なんちゃらで、みんなそんな感じだから流行り
だろうね・・・でも量が多いと遅くなりそう。
そういう動的なことは Interactive な言語処理系でやればいいことで、
やることの量がだいたい前もって決まっていることを
なるべく早くたくさんがーっと処理したい、というのが Fortran 人wなので
・・・でもこのままでは老害って言われるし・・・うーん、むつかしいね。
だろうね・・・でも量が多いと遅くなりそう。
そういう動的なことは Interactive な言語処理系でやればいいことで、
やることの量がだいたい前もって決まっていることを
なるべく早くたくさんがーっと処理したい、というのが Fortran 人wなので
・・・でもこのままでは老害って言われるし・・・うーん、むつかしいね。
104デフォルトの名無しさん
2012/12/06(木) 15:58:43.84 ヤングの諸君を引き寄せるには、ある程度流行りの機能を入れないとまずいんだろう。
それに動的自動割り付けは、FUNCTIONで不定個数を返せるようになったので、
それを受け取るには無いと困るというのがあると思う。
REAL :: x(10)
REAL, ALLOCATABLE :: y(:)
CALL RANDOM_NUMBER(x)
! f90
ALLOCATE( y( COUNT(x > 0.5) ) )
y = f(x, 0.5)
PRINT *, y
! f2003
y = f(x, 0.5)
PRINT *, y
CONTAINS
FUNCTION f(x, a)
REAL, ALLOCATABLE :: f(:)
REAL, INTENT(IN) :: x(:), a
f = PACK(x, x > a)
END FUNCTION
END
この例はあらかじめ必要な配列の大きさが分かるが、計算してみないと
必要な配列の大きさが分からない場合は、大きめに取っておくか
二回計算する必要がある。
それに動的自動割り付けは、FUNCTIONで不定個数を返せるようになったので、
それを受け取るには無いと困るというのがあると思う。
REAL :: x(10)
REAL, ALLOCATABLE :: y(:)
CALL RANDOM_NUMBER(x)
! f90
ALLOCATE( y( COUNT(x > 0.5) ) )
y = f(x, 0.5)
PRINT *, y
! f2003
y = f(x, 0.5)
PRINT *, y
CONTAINS
FUNCTION f(x, a)
REAL, ALLOCATABLE :: f(:)
REAL, INTENT(IN) :: x(:), a
f = PACK(x, x > a)
END FUNCTION
END
この例はあらかじめ必要な配列の大きさが分かるが、計算してみないと
必要な配列の大きさが分からない場合は、大きめに取っておくか
二回計算する必要がある。
105デフォルトの名無しさん
2012/12/06(木) 17:15:11.18 可変長文字列も動的割り付けで可能になった。
program varchar
implicit none
character(len = :), allocatable :: text
text = 'automatic allocation'
print *, text
text = 'variable length text'
print *, text
stop
end program varchar
program varchar
implicit none
character(len = :), allocatable :: text
text = 'automatic allocation'
print *, text
text = 'variable length text'
print *, text
stop
end program varchar
106デフォルトの名無しさん
2012/12/06(木) 17:49:33.18 長さ同じだぞw
107デフォルトの名無しさん
2012/12/08(土) 17:47:52.98 モジュール内で定義したグローバル変数を
プログラム内で変更しないようにするにはどうしたらよいでしょうか?
(変更があったらエラーを吐くようにしたい)
parameter属性を付けるのが近いと思いますが、
そのグローバル変数はファイルからreadで読み込みます。
つまり、最初に一回だけファイルで読み込んで、
その後は変更せずに、各サブルーチンで参照できるようにしたいです。
プログラム内で変更しないようにするにはどうしたらよいでしょうか?
(変更があったらエラーを吐くようにしたい)
parameter属性を付けるのが近いと思いますが、
そのグローバル変数はファイルからreadで読み込みます。
つまり、最初に一回だけファイルで読み込んで、
その後は変更せずに、各サブルーチンで参照できるようにしたいです。
108デフォルトの名無しさん
2012/12/08(土) 23:34:47.37 >>107
ttp://www.nag-j.co.jp/fortran/fortran2003/Fortran2003_4_3.html
ttp://www.nag-j.co.jp/fortran/fortran2003/Fortran2003_4_3.html
109デフォルトの名無しさん
2012/12/10(月) 21:50:33.71 F2003でいいならprotected属性だな。
F90だったら、privateで隠匿して、値を使うところでは関数・サブルーチンで
値を取ってくるかな。
F90だったら、privateで隠匿して、値を使うところでは関数・サブルーチンで
値を取ってくるかな。
110デフォルトの名無しさん
2012/12/11(火) 12:57:04.37 protected つかわない、つかいたくない、つかえない
という時には他には intent(in) をあちこちに配置して
いちどどこかプログラム内で初期値設定した後は変えないようにする、って
手もあるけどこれは107さんの要望とはマッチしないなぁ。
protected がいちばん素直だとおもう。
という時には他には intent(in) をあちこちに配置して
いちどどこかプログラム内で初期値設定した後は変えないようにする、って
手もあるけどこれは107さんの要望とはマッチしないなぁ。
protected がいちばん素直だとおもう。
111デフォルトの名無しさん
2012/12/15(土) 21:23:37.92 もりあがってますね
112デフォルトの名無しさん
2012/12/16(日) 16:37:19.87 月に一個くらい質問というかお題投下があって
2週間くらいで20スレいく程度で
まったりと
2週間くらいで20スレいく程度で
まったりと
113デフォルトの名無しさん
2012/12/18(火) 04:20:26.48 f90から外部モジュールでf77を呼べますか? つまり固定形式で書かれたコードを外部モジュールで呼べるかってことなんですけど
114デフォルトの名無しさん
2012/12/18(火) 14:41:34.63 ん、コンパイル別々にしてリンクすればいいとおもうよん。
f77の継続行記号(6ケタ目の空白以外の任意文字)を継続前の行の最後の & に置き換える
だけで、原則f77はf90で解釈できるので、
そこだけいじって同じファイルに追加しちゃうという手もあるけどね。
f77の継続行記号(6ケタ目の空白以外の任意文字)を継続前の行の最後の & に置き換える
だけで、原則f77はf90で解釈できるので、
そこだけいじって同じファイルに追加しちゃうという手もあるけどね。
115デフォルトの名無しさん
2012/12/18(火) 14:41:50.10 呼べる。
module f77module
contains
.....
ここにサブルーチン、関数ならべる。
....
end module f77module
固定フォーマットの独立したファイルにして分割コンパイルすればよし。
module f77module
contains
.....
ここにサブルーチン、関数ならべる。
....
end module f77module
固定フォーマットの独立したファイルにして分割コンパイルすればよし。
116デフォルトの名無しさん
2012/12/19(水) 01:27:05.28 旧形式のコードて今でも普通に書かれてるの?
仕方なく再利用してるだけで、新しいコードは全部新しい文法で書くべき?
仕方なく再利用してるだけで、新しいコードは全部新しい文法で書くべき?
117デフォルトの名無しさん
2012/12/19(水) 13:23:10.08 > 旧形式のコードて今でも普通に書かれてるの?
わしゃバリバリ固定書式で書いている。
左7つ開けとかないとムズムズするのでw
> 新しいコードは全部新しい文法で書くべき?
書くべきだとおもう!
思うが・・・・
わしゃバリバリ固定書式で書いている。
左7つ開けとかないとムズムズするのでw
> 新しいコードは全部新しい文法で書くべき?
書くべきだとおもう!
思うが・・・・
118デフォルトの名無しさん
2012/12/19(水) 17:31:47.38 >>115
おおー、ありがとーございます。
おおー、ありがとーございます。
119デフォルトの名無しさん
2012/12/20(木) 00:16:24.69120デフォルトの名無しさん
2012/12/20(木) 00:56:53.25 新しい文法使ってもそれはそれで保守できるかという
自由形式として解釈できない固定形式の文法が継続行の扱いくらいかと
自由形式として解釈できない固定形式の文法が継続行の扱いくらいかと
121デフォルトの名無しさん
2012/12/20(木) 18:26:13.33 素直に固定形式のファイルと自由形式のファイルと分けた方が良いと思うズラ
f77時代は1個のファイルにまとめた方が、引数チェックや最適化のメリットが
あったが、f90以降は、MODULEとか使えば、分割コンパイルにそれほど害はないズラ
f77時代は1個のファイルにまとめた方が、引数チェックや最適化のメリットが
あったが、f90以降は、MODULEとか使えば、分割コンパイルにそれほど害はないズラ
122デフォルトの名無しさん
2012/12/21(金) 15:22:10.79 インテルだと
ifort -ipo
でファイルがバラバラでも最適処理してくれるよね。
ifort -ipo
でファイルがバラバラでも最適処理してくれるよね。
123デフォルトの名無しさん
2012/12/22(土) 20:57:03.97 コンパイラが偉い
124デフォルトの名無しさん
2012/12/23(日) 16:26:05.54125デフォルトの名無しさん
2012/12/25(火) 20:09:46.90 年内にインテルFortranの更新来ないのかな?二か月に一回の周期来てんだが。
block..end block を早く入れて欲しいわ。
たまに loop index を局所的に確保したい。頭部の宣言部が重くなりがち。
block..end block を早く入れて欲しいわ。
たまに loop index を局所的に確保したい。頭部の宣言部が重くなりがち。
126デフォルトの名無しさん
2013/01/04(金) 12:57:56.98 下記のようなループの外でopenしてループの中で書き足していくプログラムを書いているのですが,
ifortでコンパイルした場合,実行の途中でもファイルが更新されていくのですがpgiでコンパイルした場合はプログラム終了まではファイルが更新されず,
プログラム終了時に全部書き込まれます.pgiでコンパイルした場合でもプログラムの途中で適宜ファイルが更新されるようにできるのでしょうか
open(1000, file='data.dat')
do j = 1, N
write(1000, *), j
enddo
close(1000)
ifortでコンパイルした場合,実行の途中でもファイルが更新されていくのですがpgiでコンパイルした場合はプログラム終了まではファイルが更新されず,
プログラム終了時に全部書き込まれます.pgiでコンパイルした場合でもプログラムの途中で適宜ファイルが更新されるようにできるのでしょうか
open(1000, file='data.dat')
do j = 1, N
write(1000, *), j
enddo
close(1000)
127デフォルトの名無しさん
2013/01/04(金) 16:35:30.00 fortran2003のFLUSH命令を使え。
128デフォルトの名無しさん
2013/01/04(金) 17:18:02.62 >>127
うぉー!ありがとうございます
うぉー!ありがとうございます
129デフォルトの名無しさん
2013/01/09(水) 11:54:21.56 linuxでfortran 77のコンパイラってありますか?
gfortranというのを使うらしいのでそれをインストールして試したのですが知人に貰ったfortran 77のコードがコンパイルできませんでした
gfortranというのを使うらしいのでそれをインストールして試したのですが知人に貰ったfortran 77のコードがコンパイルできませんでした
130デフォルトの名無しさん
2013/01/09(水) 12:25:08.67 >>129
gfortranは77に対応していません。
フリーってことでおk?
fortran77対応のフリーのコンパイラはg77が有名かな。
linuxならintel fortranもnon commercial版になるけどフリーであったはず。
研究や企業での利用はできないから注意。
個人的にはfortran77をいつまでも使っていないで、
90に書き換えて、折角インストールしたgfortranを使った方が良いと思う。
書き換え方は拡張子を変えるのと、改行の&ぐらいでとりあえずは動くでしょ
gfortranは77に対応していません。
フリーってことでおk?
fortran77対応のフリーのコンパイラはg77が有名かな。
linuxならintel fortranもnon commercial版になるけどフリーであったはず。
研究や企業での利用はできないから注意。
個人的にはfortran77をいつまでも使っていないで、
90に書き換えて、折角インストールしたgfortranを使った方が良いと思う。
書き換え方は拡張子を変えるのと、改行の&ぐらいでとりあえずは動くでしょ
131デフォルトの名無しさん
2013/01/09(水) 12:36:06.11132デフォルトの名無しさん
2013/01/09(水) 17:25:39.34 gfortran って f77 コンパイルできないの?
f90 は f77 完全包括しているし、廃止事項をホントに廃止している
処理系はめったにないからオプション変えれば行けるんでね?
誰かおしへて。
f90 は f77 完全包括しているし、廃止事項をホントに廃止している
処理系はめったにないからオプション変えれば行けるんでね?
誰かおしへて。
133デフォルトの名無しさん
2013/01/10(木) 00:32:04.71 はじめからコードを倍精度で書くのと、コードは単精度でかいて倍精度はコンパイラのオプションに任せるのってどっちがやってる人多いのかな。
後者のメリットはコードがすっきりすることくらいか。
後者のメリットはコードがすっきりすることくらいか。
134デフォルトの名無しさん
2013/01/10(木) 18:29:17.78 AUTODBLは、べた書きの定数の桁がどう扱われるのかよく分からんとか
微妙な精度の問題が気になってIMPLICIT DOUBLE(A-H,O-Z)に乗り換えたわ。
あと、昔のプログラムだと整数とからんだCOMMONやEQUIVALENCEの整合が狂って
謎な挙動をしたりするから困る。
微妙な精度の問題が気になってIMPLICIT DOUBLE(A-H,O-Z)に乗り換えたわ。
あと、昔のプログラムだと整数とからんだCOMMONやEQUIVALENCEの整合が狂って
謎な挙動をしたりするから困る。
135デフォルトの名無しさん
2013/01/11(金) 01:47:02.97 >>132
g77の拡張機能つかってるコードをそうと知らずにgfortranでコンパイルしようとして互換性ないと勘違いした
g77の拡張機能つかってるコードをそうと知らずにgfortranでコンパイルしようとして互換性ないと勘違いした
136デフォルトの名無しさん
2013/01/12(土) 13:32:51.48 >>133
以前、同じことが気になったので、
中くらいの長さ200行ぐらいの単精度コードを手でw 倍精度化したのと、
コンパイルオプションで倍精度化したのを比べたことがある。
gfortran と ifort ではそれぞれで
実行バイナリが冒頭の一部分(コンパイル時刻?)以外は同一だった。
なので自作コードだけなら、違いはないか気にならない程度だとおもう。
third party library で
単精度と倍精度でサブルーチン名が違う場合があるので
その場合にどうなるか、はしらない。
以前、同じことが気になったので、
中くらいの長さ200行ぐらいの単精度コードを手でw 倍精度化したのと、
コンパイルオプションで倍精度化したのを比べたことがある。
gfortran と ifort ではそれぞれで
実行バイナリが冒頭の一部分(コンパイル時刻?)以外は同一だった。
なので自作コードだけなら、違いはないか気にならない程度だとおもう。
third party library で
単精度と倍精度でサブルーチン名が違う場合があるので
その場合にどうなるか、はしらない。
137デフォルトの名無しさん
2013/01/12(土) 13:34:36.19 あと、OpenMP で並列化したやつもまったく同じだった。
MPI で並列したやつはまるで駄目だったので
これは泣く泣く手で倍精度に揃えたw
MPI で並列したやつはまるで駄目だったので
これは泣く泣く手で倍精度に揃えたw
138デフォルトの名無しさん
2013/01/12(土) 14:57:23.92 third party というかソースのない、かつ組み込みでない関数/サブルーチンは
変換できないし、規定されていない方の値を渡すと意味不明な挙動になるぞ。
なお対応する interface 定義が提供される module を use して総称名で呼ぶと
コンパイル時に型にあった引数定義のサブルーチンが選ばれるようになる。
MPI はこういうトリックとは関係なく、1要素の大きさを渡すあたりに工夫が要るかと。
変換できないし、規定されていない方の値を渡すと意味不明な挙動になるぞ。
なお対応する interface 定義が提供される module を use して総称名で呼ぶと
コンパイル時に型にあった引数定義のサブルーチンが選ばれるようになる。
MPI はこういうトリックとは関係なく、1要素の大きさを渡すあたりに工夫が要るかと。
139デフォルトの名無しさん
2013/01/14(月) 23:43:04.50 知り合いのMPIのコードは倍精度はコンパイルオプションに任せてたな
140デフォルトの名無しさん
2013/01/15(火) 12:54:37.70 mpi_float を mpi_double に置き換えてくれるのかな?
MPI で単精度か倍精度が気になるのはその点くらいだよね
MPI で単精度か倍精度が気になるのはその点くらいだよね
141デフォルトの名無しさん
2013/02/09(土) 03:59:15.05 emacsのfortranモードについてなのですが、
変数宣言のあとに「::」をつけると、変数名に色がつくのが気に入っています。
ですが、改行すると色わけされません。
解決方法はありますでしょうか?
例、
integer :: i& ←色がつく
,j ←色がつかない
変数宣言のあとに「::」をつけると、変数名に色がつくのが気に入っています。
ですが、改行すると色わけされません。
解決方法はありますでしょうか?
例、
integer :: i& ←色がつく
,j ←色がつかない
142デフォルトの名無しさん
2013/02/09(土) 04:25:01.37143デフォルトの名無しさん
2013/02/09(土) 04:40:54.90144デフォルトの名無しさん
2013/02/09(土) 08:39:18.75 >>141
emacsの事は良く知らないけれど、f90.el内の
;; Variable declarations (avoid the real function call)
の次の行を編集すれば良いのでは?
あとemacsスレの方がレスが付き易いかも知れないね
emacsの事は良く知らないけれど、f90.el内の
;; Variable declarations (avoid the real function call)
の次の行を編集すれば良いのでは?
あとemacsスレの方がレスが付き易いかも知れないね
145デフォルトの名無しさん
2013/02/15(金) 04:06:55.05 >>144
返信遅くなってすみません。ありがとうございました。
返信遅くなってすみません。ありがとうございました。
146デフォルトの名無しさん
2013/02/15(金) 11:05:49.33 ずっと、fortran90メインで書いてたけど、Javaを触ってみようと奮闘したら、
訳わからん。書籍も分厚いのに、全部書いてある本ってあるの?少し違う事を
しようとしたら、必ずネットで調べらなあかん。fortranなら簡単に書けるのに。
Javaって新しい言語だから素人にもある程度優しいもんだと思ってたのは間違い
なの?自分がアホなんだろうなあ。プロの人ってすごいなあと、自らのアホさ
加減にへこむ日々。fortranで簡単にGUI使えたらJavaなんて要らないのに。
アホな書き込みすいません。
ああああああああ、だめだw。いらつかない。いらつかない。
訳わからん。書籍も分厚いのに、全部書いてある本ってあるの?少し違う事を
しようとしたら、必ずネットで調べらなあかん。fortranなら簡単に書けるのに。
Javaって新しい言語だから素人にもある程度優しいもんだと思ってたのは間違い
なの?自分がアホなんだろうなあ。プロの人ってすごいなあと、自らのアホさ
加減にへこむ日々。fortranで簡単にGUI使えたらJavaなんて要らないのに。
アホな書き込みすいません。
ああああああああ、だめだw。いらつかない。いらつかない。
147デフォルトの名無しさん
2013/02/15(金) 20:00:07.57 Fortranとかいうアホ言語使ってるからそうなるんだ
C++を使いなさい
C++が使えるようになればJavaなんか簡単
C++を使いなさい
C++が使えるようになればJavaなんか簡単
148デフォルトの名無しさん
2013/02/16(土) 12:55:18.74149デフォルトの名無しさん
2013/02/17(日) 23:13:36.88 >>146
なんでやねん
俺にすればJavaの方がFORTRANよりずっと簡単に思えるぞ
C#もだいたい似てる
使うコンピュータがメインフレームならJava、WindowsならC#がGUIが一番楽
というかメインフレームにはMonoすらない事が多いし
C#はDelphiの流れを受け継いでいるのとJavaやC++の良いとこ取りしている
ある意味卑怯な(?)言語なのでGUIはこれが一番早く完成する
なんでやねん
俺にすればJavaの方がFORTRANよりずっと簡単に思えるぞ
C#もだいたい似てる
使うコンピュータがメインフレームならJava、WindowsならC#がGUIが一番楽
というかメインフレームにはMonoすらない事が多いし
C#はDelphiの流れを受け継いでいるのとJavaやC++の良いとこ取りしている
ある意味卑怯な(?)言語なのでGUIはこれが一番早く完成する
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【いちご高騰】ヤマザキのクリスマスケーキ、いちご無し販売 [おっさん友の会★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★10 [樽悶★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- 「ドラゴンボール」初の全世界キャラクター人気投票が開幕!212キャラからナンバーワンが決まる!! [ひかり★]
- 【音楽】『日本レコード大賞』各賞発表! 大賞候補にILLIT、M!LK、ふるっぱー、幾田りら、アイナ、ミセスら… 作詩賞は指原莉乃 [冬月記者★]
- 映画史上もっとも“スカッとする”結末の作品5選 [muffin★]
- 【悲報】秋元康「女性アイドルグループはもうオワコン。会いにいける男性アイドルグループを作る」 [455031798]
- ダイエット始めたんだけど500mすら泳ぐの辛い
- 【すべてが】𝗮𝗺͜𝗮͉𝘇𝗼𝗻ブラックフライデーSALE総合【いいだろ!】 [194819832]
- マジレスで加湿器ってヤバいよなWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【訃報】日経平均先物逝く、円安株安債券安 [943688309]
