トップページ⇒tech
836コメント331KB

Fortran

■ このスレッドは過去ログ倉庫に格納されています
0001パッキーNGNG
Fortran90をただでコンパイルする方法はないでしょうか?
0002デフォルトの名無しさんNGNG
ゼルビス
0003デフォルトの名無しさんNGNG
激しく糞スレ
0004パッキーNGNG
なんとなく上げ
0005たかじんNGNG
カレッジにて。
0006ものすごくやさしい人NGNG
>>1 >>4
google で free の Fortran90 用のコンパイラを探せば、できますよ。
http://www.google.com/
0007質問???NGNG
FORTRANのコンパイラでDEBUGとRELEASEってのがあるんですが、大事な計算結果が変わってしまうんですけど、これってどちらの精度がいいかってわからないもんなんですか?
もし知っておられるなら教えて欲しいです。
また、計算結果がわかっていない計算をしてるので、確かめようがないので困ってます。
お願いします。
0008デフォルトの名無しさんNGNG
計算方法がまちがっている。
0009デフォルトの名無しさんNGNG
>>7
都合のよい方で、良しとしよう
0010デフォルトの名無しさんNGNG
>>7 ではありませんが、同じようなデバッグとリリースで結果が変わります。
何か考えられる原因はないですかね?
0011デフォルトの名無しさんNGNG
>>10
変数を初期化していない。
001210NGNG
実は実際に Fortran でプログラムを作っている人間ではないで確認してませんが、
初期化していない変数を、そのまま出力したりすれば値は変わると思い
ますが、計算結果を代入すれば初期化していないことは結果には関係
ないですよね?
0013デフォルトの名無しさんNGNG
DEBUG, RELEASEって最適化レベルのフラグか何か?
そうだったとして、

自分のプログラムのバグ
浮動少数値演算で最適化レベルにより計算結果が違ってくる現象
コンパイラのバグ

一般的にはこの順番で怪しい
0014デフォルトの名無しさんNGNG
>>12
計算で使用している変数の初期化をしていなかったら?
ロジックが誤っていて変数に代入している部分をスキップしていたら?
001510NGNG
どうもありがとうございます。

>>13
Windows 上の Visual Fortran のデバッグビルドとリリースビルドですが、
最適化のレベルということになるのだと思います。
で、MSDN を見てみたら、
> コンパイラを最適化すると、予期しなかったようにコードが変化する場合があります。
なんていうのがありました。どうしたら良いのかは書いてないみたいですが。

>>14
なるほど。それはそうですね。それも調べてみないとか。
VC++ なら警告レベルを上げればエラーになりそうですが、Visual Fortran
でもできるのかな。
001613NGNG
最適化レベルを上げると演算精度を犠牲にした最適化が行われる場合がある。
ゆえに、DEBUG状態の方が安全だと思う。
0017デフォルトの名無しさんNGNG
Fortran総合スレとして再利用しましょう

で・・・
Fortran関係のWeb掲示板ってどっかにある?
探してもあんまり見当たらないんだけど・・・
0018デフォルトの名無しさんNGNG
ナボナはお菓子のFortranです。
0019デフォルトの名無しさんNGNG
DEBUG と RELEASEのコンパイルオプションが自分で定義できるはず.
コンパイルスイッチをチョコチョコ変えて原因を探るべし
キット/O2とかそんなところでかかる
0020デフォルトの名無しさんNGNG
Visual Fortranを使用していますが、私の場合、
必ず /fltconsistency を使用します。

/fltconsistencyまたは/Opオプションは,Intelシステムでの
浮動小数点演算の一貫性を改善します。
0021初心者NGNG
LINUX MLD3 を使っているのですが。XeditでFORTRANプログラムをつくったのですが
f77 -o exsamp78.out exsmp78.fとやってもa.outができないのですがどうしてなんですか?
教えてください。
0022Kusakabe YouichiNGNG
In article >>21, 21 初心者 wrote:

> LINUX MLD3 を使っているのですが。XeditでFORTRANプログラムをつくったのですが
> f77 -o exsamp78.out exsmp78.fとやってもa.outができないのですがどうしてなんですか?

man f77

# っていうかふつうratforつかうぞ(って、Linuxのディストリビューションでによ
# ってはratforはいってないのもあるのかなあ)
0023デフォルトの名無しさんNGNG
連立一次方程式をガウス・ジョルダン消去法で解きたいのですが、対角成分が0になった時のピボット選択の部分はどういう風にプログラムすればいいのですか?
0024Kusakabe YouichiNGNG
In article >>23, デフォルトの名無しさん/23 wrote:

> 連立一次方程式をガウス・ジョルダン消去法で解きたいのですが、対角成分が0になった時のピボット選択の部分はどういう風にプログラムすればいいのですか?

IF文つかえばいいですね。
0025デフォルトの名無しさんNGNG
>>24
この説明で理解できる?
0026デフォルトの名無しさんNGNG
>>25 理解できない。
>>23 対角成分が非0になるように列を入れ替える。
>>7 Intel Inside な場合、Intel仕様とIEEE仕様の違いかも。
   i8087 (いしにえのIntel系FPU)の場合、
   IEEE math と Intel math という二つのモードがあって、
   IEEE で決まっている例外割り込み(桁あふれ等)を有効にするには、
   精度の低い IEEE math を使う必要があったと思われ。

#って誰の役にもたっていない...
0027デフォルトの名無しさんNGNG
*****クサカベ警報******
このスレは間も無く駄スレになります。
0028デフォルトの名無しさんNGNG
FORTRANをマターリ語ろうよ!
0029デフォルトの名無しさんNGNG
日本語の言語仕様書が欲しい・・・
0030デフォルトの名無しさんNGNG
どの版?>>29
0031デフォルトの名無しさんNGNG
>>30
Sunのf77あたり。PDFのはみっけたんだけど、書籍になってるのが欲しいッス。
根性で印刷するして、製本するしかない?
0032デフォルトの名無しさんNGNG
Sunのf77って使ったことないです。ごめんなさい。

#昔のSunにはf2cが入ってたけど、それじゃないよね。
0033デフォルトの名無しさんNGNG
>29 JISの規格書なら買えるでしょ。一万位だったか?
0034かじりたてオーとキャドNGNG
フォートランに関して是非御教授してもらいたいことがあります。

ユニックス・フォートランー>PCフォートランにコンバート作業中なのですが、
ユニックス上で組まれているフォートラン・プログラムの
各ソースプログラムからのサブルーチン経路がわかるようなモノ(ツリー)を
出力することは可能でしょうか? お願い致します。
0035デフォルトの名無しさんNGNG
頼むからカタカナで書かないでくれい。
ちなみに俺はそんなもん知らないヘタレですが。
0036デフォルトの名無しさんNGNG
ググールにて、"FORTRAN ftree" 引いてみそ。

おいらが前引いた時は、Fortran77 subset対応っぽい奴しか
見当たらなかったけど。
0037デフォルトの名無しさんNGNG
>>34
昔ホストプログラムのやつを手打ちでつくったことあるよ。サブルーチン300個ぐらいのやつ(藁
003820NGNG
>34 FLOPPY/FLOW はだめ?
ttp://www.netlib.org/floppy/contents.html
0039デフォルトの名無しさんNGNG
age
004036NGNG
>>38 あ、それそれ。
0041デフォルトの名無しさんNGNG
http://www.google.co.jp/search?q=%83t%83H%81%5B%83g%83%89%83%93%83%89%83%93%83%89%83%93&hl=ja&lr=
0042デフォルトの名無しさんNGNG
http://www.cs.utk.edu/f2j/
Fortran 2 Java(f2j) Project
0043デフォルトの名無しさんNGNG
2度と出てこなそうなスレなのであげ
0044デフォルトの名無しさんNGNG
富士通フォートランで扱える行列のサイズはどのくらいですか?
教えてください.
0045デフォルトの名無しさんNGNG
漏れはAIX-FORTRAN〜HPFだから知らん。

配列の次元数上限ならまだしも、サイズ上限って、、、
OSや環境依存でないの?
0046デフォルトの名無しさんNGNG
>>45
初心者ですいません.そうです,配列の次元数上限のことです.
いくらぐらいまで正常にプログラム回りますか?
0047デフォルトの名無しさんNGNG
整数型から文字型、文字型から整数型へ簡単に変換する方法はないでしょうか?
0048デフォルトの名無しさんNGNG
現在でも、使ってます。やはり大量データの計算処理は
fortranが早いから、使ってます。ところで算術比較で.EQ.とかって
あるけど==とか、<=とかはfortran90から使えるの??
誰かおしえてー。
0049デフォルトの名無しさんNGNG
>48 
そういった記号はf90から使えるよ。
自由書式(132桁まで)にも対応してるので
すごく使いやすくなった。
0050デフォルトの名無しさんNGNG
さげ
0051デフォルトの名無しさんNGNG
Fortran Powerstation(Win)を使っています。
つい最近Fortranを再インストールしたら

fatal error C1007:

というエラーがでてコンパイルできなくなりました。
誰か対策方法教えてください〜。お願いします。
0052デフォルトの名無しさんNGNG
↑自分で解決しました。環境変数がうまく設定していなかったようでした。
0053デフォルトの名無しさんNGNG
Compaq Visual Fortran で、COMサーバ作っている人いないかな
0054デフォルトの名無しさんNGNG
漏れの研究室、ひそかにfortranでプログラム使ってる。
欝山車脳。
0055デフォルトの名無しさんNGNG
うちの部署は堂々とFORTRANでWinアプリを作っていますが、何か?
とはいえ、鬱だ。
0056デフォルトの名無しさんNGNG
漏れの先生の主張は一つの言語を使いこなせれば、応用が利くから大丈夫。
とは言え少々欝だ
0057デフォルトの名無しさんNGNG
Fortran使いこなしても、応用利く言語ってかなり少なそう。
0058デフォルトの名無しさんNGNG
Fortran95だと別にAdaあたりとほとんどかわらんけどな。
構造体もポインタも使えるし。
0059デフォルトの名無しさんNGNG
>>47
> 整数型から文字型、文字型から整数型へ簡単に変換する方法はないでしょうか?

READ文、WRITE文を使えばOK。

こんな感じ
READ(INUM, 'I4', CNUM)
でいいと思った。(しばらく、FORTRAN使ってないので、細かいところで
間違っている可能性あり。)
0060デフォルトの名無しさんNGNG
>>47, 59 補足
文字型=>整数型 READ(CNUM, '(I4)') INUM
整数型=>文字型 WRITE(CNUM, '(I4)') CNUM
ですかね。
0061デフォルトの名無しさんNGNG
スレ違いかもわかりませんが、ちょい質問です。

FORTRAN サブルーチンを C(C++) から呼び出すとき、
文字列の配列はどうやって渡せば良いのでしょうか?

ええと、FORTRAN の CHARECTER C(3)*10 みたいな要素に、
C 側から放り込むやり方についてです。一応、自分でも試しました。

C++ で同じ文字列長の char 配列を複数用意し、
ポインタ配列を使って (配列*文字列) を表現したあと、

extern "C" fsub_( int& 配列数, char* 配列, int 文字列長 );

な関数宣言をしておいて、

SUBROUTINE FSUB( arr, cha )
integer arr
character cha(arr)*(*)

といった感じのサブルーチンに渡してみたのですが、
まともに動いてくれません。何故か文字化けします。
単純な一個の文字列ならうまく行ったんですけど…。

これが出来るようになると、ウチの研究室で FORTRAN を使う必要が
なくなって、非常に助かります。誰か偉いひと、ご支援ください。

ちなみに、コンパイラは g77 & g++ (2.96) on linux です。
0062デフォルトの名無しさんNGNG
文字化けした中身を、od -xc か dump で表示してコピペしたら?
0063デフォルトの名無しさんNGNG
>61
文字1個で上手くいくならループを回して1文字ずつ送れば良いような。
と思ったが、ちこっと調べてみたら、
最後のNULL文字以降を殺しておくこと(NULL文字以降も一緒に送られてしまうから)
for (i = strlen(<文字列>); i >= <配列長>; i++){
<文字列>[i] = ' ';
}
とやっておく、或いは、fortran側で、
<文字列> = <文字列>(1:<配列長>-1)
とやるか。

> これが出来るようになると、ウチの研究室で FORTRAN を使う必要が
> なくなって、非常に助かります。誰か偉いひと、ご支援ください。
fortran使いがまた減るのか・・・
006461NGNG
…解決しました。自分、アホでした。
ポインタ配列×文字列なんぞ使ってたのが悪かったわけで、
素直に char c[3][5]; とか宣言したらすんなり動きました。

>63
Cでメインルーチン組んだ方が応用ききますからねえ。
でも、細々としたところでは、まだ頼る必要があります。
0065のとNGNG
あるプログラムをVisualFortranで動かそうとしているのですが、動くときと動かないときがあります。
具体的な条件は以下のとおりです。

1.VisualFortran6.6(最新)付属のコマンドプロンプト上では動かない。
2.VisualFortran6.6のデバッカつきのもので動かすとちゃんと走る。
3.VisualFortran(バージョン97)では付属のコマンドプロンプトでも動く。

というものです。ちなみに1の動かないところでは「MATH〜」とエラーメッセージが出ます。
ですので、0割りなどが考えられるのですがそれならば2、3のケースでも動かないはずですよね?
ということで本当によくわかりません。
どなたかわかる方がいましたら教えてください。
抜け落ちている情報がありましたら指摘していただければすぐに書きます。
0066 NGNG
>>65
> 抜け落ちている情報がありましたら指摘していただければすぐに書きます。

「エラーメッセージは正確に」って、さっき言われたでしょ?
0067のとNGNG
ごめんなさい、エラーは、以下のとおりです。

run-time error M6201: MATH
- exp: DOMAIN error
Image PC Routine Line Source
pipe.exe 00430649 Unknown Unknown Unknown
pipe.exe 004304A7 Unknown Unknown Unknown
pipe.exe 00430601 Unknown Unknown Unknown
pipe.exe 00432998 Unknown Unknown Unknown
pipe.exe 0043240E Unknown Unknown Unknown
pipe.exe 00458AEC Unknown Unknown Unknown
pipe.exe 00452BE8 Unknown Unknown Unknown
pipe.exe 0042B919 Unknown Unknown Unknown
pipe.exe 00401672 Unknown Unknown Unknown
pipe.exe 0045C869 Unknown Unknown Unknown
pipe.exe 0044DCC4 Unknown Unknown Unknown
KERNEL32.dll 77E5D326 Unknown Unknown Unknown
0068デフォルトの名無しさんNGNG
>65
おそらくそんなに早くは実のあるレスがつかないと思われるので
気長に待ちなされ。
0069のとNGNG
>68
はい、わかりました。
0070デフォルトの名無しさんNGNG
>>67
> run-time error M6201: MATH
> - exp: DOMAIN error
は、exp() のドメイン (引数の有効範囲) を逸脱したってことだから、
exp() の引数がおかしくなってると思う。 (でも、マイナス方向は -∞ まで、
行っても大丈夫だし、プラス方向はオーバーフローエラーになるような気がする
が...。初期か忘れとかで浮動小数点として認識できないような値なんだろう
か ?)

とりあえず、問題の行は 00430649 番地にあるから、それを見直してみれば ?
(MAP ファイルの出し方と見方はわかるかな ?)
0071のとNGNG
>70
レスありがとうございます。
MAPファイルってぜんぜんわからないんですよね。。。
VisualFortran特有のものですか?
007270NGNG
>>71
ごめんよ、俺は VisualFortran つー奴は使ったこと無いので、ヘルプ
ファイルしか読んでないんだけど、Project Settings の Fortran タブ
のRun Time カテゴリにある Generate Traceback Information を
チェックしてビルドしてみてちょうだい。これで現象が再現したら、
トレースバック情報が...

forrtl: severe (24): end-of-file during read, unit 10, file ...
Image     PC    Routine Line   Source
teof.exe   004011A9 AGAIN  21    teof.for
teof.exe   004010DD GO    15    teof.for
teof.exe   004010A7 WE    11    teof.for
teof.exe   00401071 HERE   7    teof.for
teof.exe   00401035 TEOF   3    teof.for
teof.exe   004013D9 Unknown Unknown Unknown
teof.exe   004012DF Unknown Unknown Unknown
KERNEL32.dll 77F1B304 Unknown Unknown Unknown

と言うようにでるから、エラーメッセージのすぐ下の行の LineNo が問題
の行です。

これで再現しないなら、さっきチェックした Generate Traceback
Information のチェックボックスをクリアして、今度は同じ Fortran
タブの その他 カテゴリにある Generate Link Map チェックボックスを
チェックしてビルドしてね。そうすると、pipe.map (この名前が嫌なら、
Link タブの Debug カテゴリの Mapfile Name テキストボックスに好き
な名前を入れれば変更できます。) って言うファイルが作られます。
それには、関数の名前と開始アドレスが載ってるから問題の関数までは
これでわかる。(念のため再度実行して、エラーのアドレスを再確認のこ
と。) その関数に複数の exp() が使われてるなら、ヘルプで
/MAPINFO:LINENO を調べて、それを指定する。そうすると MAP ファイル
に行番号毎のアドレスが出力される。

> MAPファイルってぜんぜんわからないんですよね。。。
> VisualFortran特有のものですか?

MAP ファイル自体は、一般的な用語。コードとか、グローバル変数なんか
がどの番地に配置されているかの対応表のこと。
0073デフォルトの名無しさんNGNG
俺、そのあたり いにしえの IBM 5550 MS-Fortranでしかやった事ないけど(ワラ
C言語で言うところの matherr.h みたく、
浮動小数点例外をハンドリングするルーチンってFortranで書けなかったっけ(処理系依存 or IEEE規格)?

C言語なら、浮動小数点例外の発生したオペレーション名と引数(最大2つ)を構造体で取れるので、
forrtl: DOMAIN error: exp(NaN) (NaN = 0xffffffffffffffff)
みたいな表示をする事も可能だよ。
つうか、デバッガーの上で走らせる...と問題なく動くんだっけ(汗

007473 (横に逸れますが)NGNG
って事で、処理系のマニュアル or ヘルプファイル検索したら、
浮動小数点例外(やその他のエラー)を、人間様が判る形で表示する方法が
解説されてると思うよ。
#ちなみにIBM 5550の MS-Fortran 1.0のエラーハンドラーは、関数呼び出しタイプが _pascal だったような(汗
# i80286時代の標準言語って、pascal〜ADAだったんだよねー (遠い目

しかし、>>72の end-of-file during read って懐かしー。
FortranのREADって(Cのと同じく)トラブルのスクツだよねー。
Kernighan & Plauger が RATFORで Cモガキやったのもむべなるかな。

007570NGNG
> FortranのREADって(Cのと同じく)トラブルのスクツだよねー。
まあ、どんな言語でもそうだよね。つーか、人間でも言葉喋るより聞く方が難し
いよね。出力は、(大体) 自分の思うとおりできるけど、入力は相手次第だから
ねぇ。

ところで、のと の問題は解決したのかなぁ。
0076のとNGNG
>70
レス遅れてごめんなさい。
ちょっと忙しかったのでまだ言われたとおりにやってみていません。
でも、アドバイスありがとう。
もうすぐやるつもりです。
0077のとNGNG
>70
やってみました。
VisualFortranをさわったことないのに調べていただいて
ありがとうございます。
Generate Traceback Informationをチェックして〜というのは、
はじめにも書きましたがデバッカモードでやらせるとプログラムは
問題なく走るので原因究明にはなりませんでした。
Generate Link Map チェックボックスを チェックして〜というのは
その他のタブ、が見つけられなかった(日本語はないと思うのですが)ので、
やれませんでした。
しかし、いずれにせよこのケースは上のようにプログラムは走ってしまうと
思います。
走らないのは付属のMSDOSプロンプトを使ったときだけなので。

007870NGNG
>>77
> デバッカモードでやらせるとプログラムは問題なく走るので原因究明に
> はなりませんでした。
使ってないんでよくわからないけど、「Generate Traceback
Informationをチェックして」作った実行ファイルを「付属のMSDOSプロン
プト」で実行できないの ?

> その他のタブ、が見つけられなかった
う〜〜〜ん、ヘルプファイルにははっきり「その他」って書いてあるんだ
よなァ...。俺も変だとは思ったんだけどね。じゃあ Others とか
Miscellaneous とか言うカテゴリはないの ?

> しかし、いずれにせよこのケースは上のようにプログラムは走ってしま
> うと思います。
基本的にそんなことはない。Generate Link Map と言うのは、あくまでも
MAP ファイルを作るだけで、実行ファイルは同じものができる。
極端な話、他のオプションが変わってないなら、MAP ファイルだけ作って
00430649 がどの関数か当たりをつけると言うこともできるはず。

とりあえず Generate Link Map がわからないであれば、Project
Options: って言う所 (/include "Release" とかいっぱい書いてあると
ころ) の最後に /MAP /MAPINFO:LINES を入れてビルドし直してみて。
0079不器用ですから...NGNG
>>67
PowerFortran使った事ありませんが... (MS-Fortranだったもので)

>run-time error M6201: MATH
>- exp: DOMAIN error
>Image PC Routine Line Source

てのが、デバッガーでは出ないつうのは、
デバッガーでは例外検出しないモードか、
あるいは例外検出しても計算続行するモードになってるんじゃないのかなー?

0080のとNGNG
>70
やってみました。
>使ってないんでよくわからないけど、「Generate Traceback
>Informationをチェックして」作った実行ファイルを「付属のMSDOSプロン
>プト」で実行できないの ?
ナイスアイデアですね!
というか当たり前なのでしょうか?
しかし、実際やってみると不思議なことにexeファイルを作らずに
やってしまうみたいです。デバッカモードは。
なので、DOS窓で/tracebackというコンパイルオプションをつけて
やってみました。
すると以下のようになりました。

run-time error M6201: MATH
- exp: DOMAIN error
Image PC Routine Line Source
pipe.exe 00430A69 Unknown Unknown Unknown
pipe.exe 004308C7 Unknown Unknown Unknown
pipe.exe 00430A21 Unknown Unknown Unknown
pipe.exe 00432DB8 Unknown Unknown Unknown
pipe.exe 0043282E Unknown Unknown Unknown
pipe.exe 00458F0C Unknown Unknown Unknown
pipe.exe 00453008 Unknown Unknown Unknown
pipe.exe 0042BD39 Unknown Unknown Unknown
pipe.exe 0040D64E SMGSGS 2966 pipe.f
pipe.exe 00401672 MAIN 139 pipe.f
pipe.exe 0045CC89 Unknown Unknown Unknown
pipe.exe 0044E0E4 Unknown Unknown Unknown
KERNEL32.dll 77E5D326 Unknown Unknown Unknown

この139行目はサブルーチンSMGSGSをCALLしているところで、2966は
CF=1.D0-EXP(-YP/26.5D0)
というコードになっています(すみません、すべては見せられないので)。
たしかにEXPが使われているところで、あやしいのですがEXPは引数が0でも
問題ありませんし、ここでエラーになる要素がないような気がするのですが…。
0081デフォルトの名無しさんNGNG
linuxのfortranはネームリストの読み込みが変だ(った)
008270NGNG
>>80
とりあえず、その直前で YP (実数型だよね) の値を出力してみたら ?

> ここでエラーになる要素がないような気がするのですが…。
>>70 にも書いたけど、確かに exp() の定義域は -∞〜+∞ だから DOMAIN
error になるのは、YP がおかしいような気がする。

> DOS窓で/tracebackというコンパイルオプションをつけてやってみました。
よくわからんのだけど、DOS 窓でコンパイルしないとだめと言うことか ?
0083デフォルトの名無しさんNGNG
visualfortranのウォッチにはバグがある
0084デフォルトの名無しさんNGNG
YPの値が知りたい。必ず落ちるのか、特定の値のときだけ落ちるのか・・・
008584NGNG
すまそ。リロードしないで書き込んだらかぶってしまいまいた。ROMってます。鬱
0086のとNGNG
みなさん、レスありがとうございました。
YPの値はNahでした。
それだとEXPはだめなんですかね。
ただいまどこからNahが出てくるのか探しています。

83さんのコメントが気になるのですが本当ですか?
0087デフォルトの名無しさんNGNG
最適化をやめさせるとか。
最高レベルの最適化をするとコードが動かないこと多し。
0088のとNGNG
最適化というのはどのようなことですか?
コンパイルするときにレベル、というのは決定するのですか?
0089デフォルトの名無しさんNGNG
メニューのプロジェクトー設定タブかなんかにありませんか?
0090デフォルトの名無しさんNGNG
f90でcのマクロ定義#defineに相当するようなものってあるのでしょうか?
visualFortranのhelp探してるんだが、それらしきのが出てこない。
同じ定数をいろんな関数の中で使ってるのだが、桁数が多くて
間違いの元になりそうだから、#defineで定義できれば楽になると思ったんですが。

それとFortranって変数に数値ぶち込むときdoubleだったらいちいち
1.d0とかやらないとだめなんですね。cだったら単に1でいいのに。
型チェックがきびしいんでしょうか。
0091デフォルトの名無しさんNGNG
>>86
Nah ? Nan (Not a Number) じゃなくて ? どういう値なんだろうか...。
まあ、地道に追っていくしかないかな。頑張ってね。

>>87
そうそう、最適化するとお前みたいなへたれの書いたプログラムは動かんことが
多いよね。

>>90
数値定数でいいんなら、PARAMETER 文でいいと思うけど。
0092デフォルトの名無しさんNGNG
>>91
>数値定数でいいんなら、PARAMETER 文でいいと思うけど。
んで、複数ファイルに同じパラメータ書くのは冗長だから、
パラメータは共通ファイルに書いといて、
!include ディレクティブとか #include で取り込みたいものですね。

c   んで、UNIXのF77で fppとかcppとかm4とかsedとか使ってプリプロセスしてやると、
c   F77爺に「処理系依存するソースコード書くなゴラァ」とか怒られる罠。
c   F77爺って、一体この25年間ナニやってたのか、25分程問い詰めてみたい気分
009391NGNG
>>92
> include ディレクティブとか #include で取り込みたいものですね。
VisualFortran とかならできますけど、それが何か ?
0094デフォルトの名無しさんNGNG
ん、F77爺にF77互換で書けって言われなくて幸せですね。
0095デフォルトの名無しさんNGNG
helpでinclude検索してみました。
Fortranでもこんなことできるんですね。
昔のF77fortranに比べたらf90って、いろんなほしいなって思った
ものが実装されてるんですね。
なんだかC,C++のまねのような気もしますけど。
0096素人NGNG
プログラムファイルをコンパイルする時,
インクルード文も一緒にコンパイルするんですか?
0097デフォルトの名無しさんNGNG
たぶん、includeで指定されてるファイルをそこに展開するんだと思うが。
コンパイラへの命令みたいなものじゃないでしょうか。
0098素人NGNG
>>97
すんません,展開するってのはプログラムファイルが入っている
フォルダに入れる ってことでいいんでしょうか?
0099のとNGNG
みなさん、いろいろありがとうございました。
解決、までには至ってないですが、エラーの原因はつきとめました。
結局、アルゴリズムが悪かったようです。

Aという倍精度の実数をIF文で0の場合をはじいておいても、
A=AQRT(A)
とするとどうやらA=0となってしまうことがあるようです。
なので、そのあとでB/Aをすると0割りによりNanになるみたいです。
0割りを防ぐにはどのようにIF文などをつければいいのでしょうか?
案があれば聞かせてください。
0100デフォルトの名無しさんNGNG
AQRTってなんですか?
0101のとNGNG
すみません、SQRTの間違いです。
打ち間違えました…。
■ このスレッドは過去ログ倉庫に格納されています