Fortran
■ このスレッドは過去ログ倉庫に格納されています
0001パッキー
NGNG0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004パッキー
NGNG0005たかじん
NGNG0006ものすごくやさしい人
NGNGgoogle で free の Fortran90 用のコンパイラを探せば、できますよ。
http://www.google.com/
0007質問???
NGNGもし知っておられるなら教えて欲しいです。
また、計算結果がわかっていない計算をしてるので、確かめようがないので困ってます。
お願いします。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG都合のよい方で、良しとしよう
0010デフォルトの名無しさん
NGNG何か考えられる原因はないですかね?
0011デフォルトの名無しさん
NGNG変数を初期化していない。
001210
NGNG初期化していない変数を、そのまま出力したりすれば値は変わると思い
ますが、計算結果を代入すれば初期化していないことは結果には関係
ないですよね?
0013デフォルトの名無しさん
NGNGそうだったとして、
自分のプログラムのバグ
浮動少数値演算で最適化レベルにより計算結果が違ってくる現象
コンパイラのバグ
一般的にはこの順番で怪しい
0014デフォルトの名無しさん
NGNG計算で使用している変数の初期化をしていなかったら?
ロジックが誤っていて変数に代入している部分をスキップしていたら?
001510
NGNG>>13
Windows 上の Visual Fortran のデバッグビルドとリリースビルドですが、
最適化のレベルということになるのだと思います。
で、MSDN を見てみたら、
> コンパイラを最適化すると、予期しなかったようにコードが変化する場合があります。
なんていうのがありました。どうしたら良いのかは書いてないみたいですが。
>>14
なるほど。それはそうですね。それも調べてみないとか。
VC++ なら警告レベルを上げればエラーになりそうですが、Visual Fortran
でもできるのかな。
001613
NGNGゆえに、DEBUG状態の方が安全だと思う。
0017デフォルトの名無しさん
NGNGで・・・
Fortran関係のWeb掲示板ってどっかにある?
探してもあんまり見当たらないんだけど・・・
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGコンパイルスイッチをチョコチョコ変えて原因を探るべし
キット/O2とかそんなところでかかる
0020デフォルトの名無しさん
NGNG必ず /fltconsistency を使用します。
/fltconsistencyまたは/Opオプションは,Intelシステムでの
浮動小数点演算の一貫性を改善します。
0021初心者
NGNGf77 -o exsamp78.out exsmp78.fとやってもa.outができないのですがどうしてなんですか?
教えてください。
0022Kusakabe Youichi
NGNG> LINUX MLD3 を使っているのですが。XeditでFORTRANプログラムをつくったのですが
> f77 -o exsamp78.out exsmp78.fとやってもa.outができないのですがどうしてなんですか?
man f77
# っていうかふつうratforつかうぞ(って、Linuxのディストリビューションでによ
# ってはratforはいってないのもあるのかなあ)
0023デフォルトの名無しさん
NGNG0024Kusakabe Youichi
NGNG> 連立一次方程式をガウス・ジョルダン消去法で解きたいのですが、対角成分が0になった時のピボット選択の部分はどういう風にプログラムすればいいのですか?
IF文つかえばいいですね。
0025デフォルトの名無しさん
NGNGこの説明で理解できる?
0026デフォルトの名無しさん
NGNG>>23 対角成分が非0になるように列を入れ替える。
>>7 Intel Inside な場合、Intel仕様とIEEE仕様の違いかも。
i8087 (いしにえのIntel系FPU)の場合、
IEEE math と Intel math という二つのモードがあって、
IEEE で決まっている例外割り込み(桁あふれ等)を有効にするには、
精度の低い IEEE math を使う必要があったと思われ。
#って誰の役にもたっていない...
0027デフォルトの名無しさん
NGNGこのスレは間も無く駄スレになります。
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGSunのf77あたり。PDFのはみっけたんだけど、書籍になってるのが欲しいッス。
根性で印刷するして、製本するしかない?
0032デフォルトの名無しさん
NGNG#昔のSunにはf2cが入ってたけど、それじゃないよね。
0033デフォルトの名無しさん
NGNG0034かじりたてオーとキャド
NGNGユニックス・フォートランー>PCフォートランにコンバート作業中なのですが、
ユニックス上で組まれているフォートラン・プログラムの
各ソースプログラムからのサブルーチン経路がわかるようなモノ(ツリー)を
出力することは可能でしょうか? お願い致します。
0035デフォルトの名無しさん
NGNGちなみに俺はそんなもん知らないヘタレですが。
0036デフォルトの名無しさん
NGNGおいらが前引いた時は、Fortran77 subset対応っぽい奴しか
見当たらなかったけど。
0037デフォルトの名無しさん
NGNG昔ホストプログラムのやつを手打ちでつくったことあるよ。サブルーチン300個ぐらいのやつ(藁
003820
NGNGttp://www.netlib.org/floppy/contents.html
0039デフォルトの名無しさん
NGNG004036
NGNG0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNGFortran 2 Java(f2j) Project
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG教えてください.
0045デフォルトの名無しさん
NGNG配列の次元数上限ならまだしも、サイズ上限って、、、
OSや環境依存でないの?
0046デフォルトの名無しさん
NGNG初心者ですいません.そうです,配列の次元数上限のことです.
いくらぐらいまで正常にプログラム回りますか?
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNGfortranが早いから、使ってます。ところで算術比較で.EQ.とかって
あるけど==とか、<=とかはfortran90から使えるの??
誰かおしえてー。
0049デフォルトの名無しさん
NGNGそういった記号はf90から使えるよ。
自由書式(132桁まで)にも対応してるので
すごく使いやすくなった。
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGつい最近Fortranを再インストールしたら
fatal error C1007:
というエラーがでてコンパイルできなくなりました。
誰か対策方法教えてください〜。お願いします。
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG欝山車脳。
0055デフォルトの名無しさん
NGNGとはいえ、鬱だ。
0056デフォルトの名無しさん
NGNGとは言え少々欝だ
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG構造体もポインタも使えるし。
0059デフォルトの名無しさん
NGNG> 整数型から文字型、文字型から整数型へ簡単に変換する方法はないでしょうか?
READ文、WRITE文を使えばOK。
こんな感じ
READ(INUM, 'I4', CNUM)
でいいと思った。(しばらく、FORTRAN使ってないので、細かいところで
間違っている可能性あり。)
0060デフォルトの名無しさん
NGNG文字型=>整数型 READ(CNUM, '(I4)') INUM
整数型=>文字型 WRITE(CNUM, '(I4)') CNUM
ですかね。
0061デフォルトの名無しさん
NGNGFORTRAN サブルーチンを 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デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNG文字1個で上手くいくならループを回して1文字ずつ送れば良いような。
と思ったが、ちこっと調べてみたら、
最後のNULL文字以降を殺しておくこと(NULL文字以降も一緒に送られてしまうから)
for (i = strlen(<文字列>); i >= <配列長>; i++){
<文字列>[i] = ' ';
}
とやっておく、或いは、fortran側で、
<文字列> = <文字列>(1:<配列長>-1)
とやるか。
> これが出来るようになると、ウチの研究室で FORTRAN を使う必要が
> なくなって、非常に助かります。誰か偉いひと、ご支援ください。
fortran使いがまた減るのか・・・
006461
NGNGポインタ配列×文字列なんぞ使ってたのが悪かったわけで、
素直に char c[3][5]; とか宣言したらすんなり動きました。
>63
Cでメインルーチン組んだ方が応用ききますからねえ。
でも、細々としたところでは、まだ頼る必要があります。
0065のと
NGNG具体的な条件は以下のとおりです。
1.VisualFortran6.6(最新)付属のコマンドプロンプト上では動かない。
2.VisualFortran6.6のデバッカつきのもので動かすとちゃんと走る。
3.VisualFortran(バージョン97)では付属のコマンドプロンプトでも動く。
というものです。ちなみに1の動かないところでは「MATH〜」とエラーメッセージが出ます。
ですので、0割りなどが考えられるのですがそれならば2、3のケースでも動かないはずですよね?
ということで本当によくわかりません。
どなたかわかる方がいましたら教えてください。
抜け落ちている情報がありましたら指摘していただければすぐに書きます。
> 抜け落ちている情報がありましたら指摘していただければすぐに書きます。
「エラーメッセージは正確に」って、さっき言われたでしょ?
0067のと
NGNGrun-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おそらくそんなに早くは実のあるレスがつかないと思われるので
気長に待ちなされ。
0069のと
NGNGはい、わかりました。
0070デフォルトの名無しさん
NGNG> run-time error M6201: MATH
> - exp: DOMAIN error
は、exp() のドメイン (引数の有効範囲) を逸脱したってことだから、
exp() の引数がおかしくなってると思う。 (でも、マイナス方向は -∞ まで、
行っても大丈夫だし、プラス方向はオーバーフローエラーになるような気がする
が...。初期か忘れとかで浮動小数点として認識できないような値なんだろう
か ?)
とりあえず、問題の行は 00430649 番地にあるから、それを見直してみれば ?
(MAP ファイルの出し方と見方はわかるかな ?)
0071のと
NGNGレスありがとうございます。
MAPファイルってぜんぜんわからないんですよね。。。
VisualFortran特有のものですか?
007270
NGNGごめんよ、俺は 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デフォルトの名無しさん
NGNGC言語で言うところの matherr.h みたく、
浮動小数点例外をハンドリングするルーチンってFortranで書けなかったっけ(処理系依存 or IEEE規格)?
C言語なら、浮動小数点例外の発生したオペレーション名と引数(最大2つ)を構造体で取れるので、
forrtl: DOMAIN error: exp(NaN) (NaN = 0xffffffffffffffff)
みたいな表示をする事も可能だよ。
つうか、デバッガーの上で走らせる...と問題なく動くんだっけ(汗
007473 (横に逸れますが)
NGNG浮動小数点例外(やその他のエラー)を、人間様が判る形で表示する方法が
解説されてると思うよ。
#ちなみにIBM 5550の MS-Fortran 1.0のエラーハンドラーは、関数呼び出しタイプが _pascal だったような(汗
# i80286時代の標準言語って、pascal〜ADAだったんだよねー (遠い目
しかし、>>72の end-of-file during read って懐かしー。
FortranのREADって(Cのと同じく)トラブルのスクツだよねー。
Kernighan & Plauger が RATFORで Cモガキやったのもむべなるかな。
007570
NGNGまあ、どんな言語でもそうだよね。つーか、人間でも言葉喋るより聞く方が難し
いよね。出力は、(大体) 自分の思うとおりできるけど、入力は相手次第だから
ねぇ。
ところで、のと の問題は解決したのかなぁ。
0076のと
NGNGレス遅れてごめんなさい。
ちょっと忙しかったのでまだ言われたとおりにやってみていません。
でも、アドバイスありがとう。
もうすぐやるつもりです。
0077のと
NGNGやってみました。
VisualFortranをさわったことないのに調べていただいて
ありがとうございます。
Generate Traceback Informationをチェックして〜というのは、
はじめにも書きましたがデバッカモードでやらせるとプログラムは
問題なく走るので原因究明にはなりませんでした。
Generate Link Map チェックボックスを チェックして〜というのは
その他のタブ、が見つけられなかった(日本語はないと思うのですが)ので、
やれませんでした。
しかし、いずれにせよこのケースは上のようにプログラムは走ってしまうと
思います。
走らないのは付属のMSDOSプロンプトを使ったときだけなので。
007870
NGNG> デバッカモードでやらせるとプログラムは問題なく走るので原因究明に
> はなりませんでした。
使ってないんでよくわからないけど、「Generate Traceback
Informationをチェックして」作った実行ファイルを「付属のMSDOSプロン
プト」で実行できないの ?
> その他のタブ、が見つけられなかった
う〜〜〜ん、ヘルプファイルにははっきり「その他」って書いてあるんだ
よなァ...。俺も変だとは思ったんだけどね。じゃあ Others とか
Miscellaneous とか言うカテゴリはないの ?
> しかし、いずれにせよこのケースは上のようにプログラムは走ってしま
> うと思います。
基本的にそんなことはない。Generate Link Map と言うのは、あくまでも
MAP ファイルを作るだけで、実行ファイルは同じものができる。
極端な話、他のオプションが変わってないなら、MAP ファイルだけ作って
00430649 がどの関数か当たりをつけると言うこともできるはず。
とりあえず Generate Link Map がわからないであれば、Project
Options: って言う所 (/include "Release" とかいっぱい書いてあると
ころ) の最後に /MAP /MAPINFO:LINES を入れてビルドし直してみて。
0079不器用ですから...
NGNGPowerFortran使った事ありませんが... (MS-Fortranだったもので)
>run-time error M6201: MATH
>- exp: DOMAIN error
>Image PC Routine Line Source
てのが、デバッガーでは出ないつうのは、
デバッガーでは例外検出しないモードか、
あるいは例外検出しても計算続行するモードになってるんじゃないのかなー?
0080のと
NGNGやってみました。
>使ってないんでよくわからないけど、「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デフォルトの名無しさん
NGNG008270
NGNGとりあえず、その直前で YP (実数型だよね) の値を出力してみたら ?
> ここでエラーになる要素がないような気がするのですが…。
>>70 にも書いたけど、確かに exp() の定義域は -∞〜+∞ だから DOMAIN
error になるのは、YP がおかしいような気がする。
> DOS窓で/tracebackというコンパイルオプションをつけてやってみました。
よくわからんのだけど、DOS 窓でコンパイルしないとだめと言うことか ?
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG008584
NGNG0086のと
NGNGYPの値はNahでした。
それだとEXPはだめなんですかね。
ただいまどこからNahが出てくるのか探しています。
83さんのコメントが気になるのですが本当ですか?
0087デフォルトの名無しさん
NGNG最高レベルの最適化をするとコードが動かないこと多し。
0088のと
NGNGコンパイルするときにレベル、というのは決定するのですか?
0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNGvisualFortranのhelp探してるんだが、それらしきのが出てこない。
同じ定数をいろんな関数の中で使ってるのだが、桁数が多くて
間違いの元になりそうだから、#defineで定義できれば楽になると思ったんですが。
それとFortranって変数に数値ぶち込むときdoubleだったらいちいち
1.d0とかやらないとだめなんですね。cだったら単に1でいいのに。
型チェックがきびしいんでしょうか。
0091デフォルトの名無しさん
NGNGNah ? Nan (Not a Number) じゃなくて ? どういう値なんだろうか...。
まあ、地道に追っていくしかないかな。頑張ってね。
>>87
そうそう、最適化するとお前みたいなへたれの書いたプログラムは動かんことが
多いよね。
>>90
数値定数でいいんなら、PARAMETER 文でいいと思うけど。
0092デフォルトの名無しさん
NGNG>数値定数でいいんなら、PARAMETER 文でいいと思うけど。
んで、複数ファイルに同じパラメータ書くのは冗長だから、
パラメータは共通ファイルに書いといて、
!include ディレクティブとか #include で取り込みたいものですね。
c んで、UNIXのF77で fppとかcppとかm4とかsedとか使ってプリプロセスしてやると、
c F77爺に「処理系依存するソースコード書くなゴラァ」とか怒られる罠。
c F77爺って、一体この25年間ナニやってたのか、25分程問い詰めてみたい気分
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGFortranでもこんなことできるんですね。
昔のF77fortranに比べたらf90って、いろんなほしいなって思った
ものが実装されてるんですね。
なんだかC,C++のまねのような気もしますけど。
0096素人
NGNGインクルード文も一緒にコンパイルするんですか?
0097デフォルトの名無しさん
NGNGコンパイラへの命令みたいなものじゃないでしょうか。
0098素人
NGNGすんません,展開するってのはプログラムファイルが入っている
フォルダに入れる ってことでいいんでしょうか?
0099のと
NGNG解決、までには至ってないですが、エラーの原因はつきとめました。
結局、アルゴリズムが悪かったようです。
Aという倍精度の実数をIF文で0の場合をはじいておいても、
A=AQRT(A)
とするとどうやらA=0となってしまうことがあるようです。
なので、そのあとでB/Aをすると0割りによりNanになるみたいです。
0割りを防ぐにはどのようにIF文などをつければいいのでしょうか?
案があれば聞かせてください。
0100デフォルトの名無しさん
NGNG0101のと
NGNG打ち間違えました…。
0102デフォルトの名無しさん
NGNG0103のと
NGNGというか↑の状況なら何も難しいことはないですよね。
IF文でAを0より大きいか0かで分岐させても、表示させると
どうやらA=0でもIF文の中に入ってしまうことがあるのです。
ちゃんと0として入らないときもあるのですが。
とても小さい値のときにIF文に入ってしまうようで、しかし
そのあとAで割るとNanになってしまいます。
IF文のところを0でなく1.0D-307とすると大丈夫なのですが、
(倍精度は307桁まであるようです)そのままではコードとして
あまりに決まりが悪いので、何か方法はないでしょうか?
0104M
NGNG確か浮動小数点の場合0はある程度幅を持っていたような気がします。
VisualFortranのヘルプで”浮動小数点環境”って検索してみれば、
なにやらいろいろ書いてあります。日本語版ヘルプはコンパックのホームページからダウンロードできます。
0105デフォルトの名無しさん
NGNGそもそも実数型に対して、.GE.だとか、.EQ.だとか、等号を問題にする
ような判定式を用いるのはまずい。例えばAが0かどうかを判定するのに、
A.EQ.0.0D0とは書かずに、DABS(A).LT.DEPS(DEPSはDATA文で1.0D-10などと
定義しておく)という風に書くのはFORTRANではごく普通のやり方。
「コードとして決まりが悪い」などということはない。
というか、値が1.0D-100とか1.0D-307(w とかいうのはもうゼロと同じ
なのであって、これと0.0D0を区別して、前者の場合は正しく動くが、後者
の場合は正しく動かないというのは、プログラムのロジックに問題があると
思うぞ。誤差の問題に関して脳天気なプログラムと推察する。この観点から
プログラム全体を見直すべし。
0106デフォルトの名無しさん
NGNGそもそも実数型に対して、.GE.だとか、.EQ.だとか、等号を問題にする
ような判定式を用いるのはまずい。例えばAが0かどうかを判定するのに、
A.EQ.0.0D0とは書かずに、DABS(A).LT.DEPS(DEPSはDATA文で1.0D-10などと
定義しておく)という風に書くのはFORTRANではごく普通のやり方。
「コードとして決まりが悪い」などということはない。
というか、値が1.0D-100とか1.0D-307(w とかいうのはもうゼロと同じ
なのであって、これと0.0D0を区別して、前者の場合は正しく動くが、後者
の場合は正しく動かないというのは、プログラムのロジックに問題があると
思うぞ。誤差の問題に関して脳天気なプログラムと推察する。この観点から
プログラム全体を見直すべし。
0107105
NGNG0108のと
NGNG>というか、値が1.0D-100とか1.0D-307(w とかいうのはもうゼロと同じ
>なのであって、これと0.0D0を区別して、前者の場合は正しく動くが、後者
>の場合は正しく動かないというのは、プログラムのロジックに問題があると
>思うぞ。
すみません、理解力がないためか、前者と後者とは何を指すのでしょうか?
もし1.0D-100とか1.0D-307のことを指しているのなら、どっちもちゃんと
動きますよ。動かないのは0.0D0としたときだけです。
何を言いたいのでしょうか?
>誤差の問題に関して脳天気なプログラムと推察する。この観点から
>プログラム全体を見直すべし。
言われたとおりそうします。
しかし、
>DABS(A).LT.DEPS(DEPSはDATA文で1.0D-10などと
>定義しておく)という風に書くのはFORTRANではごく普通のやり方。
とありますが、このごくふつうのやり方ではDEPSより小さくて0.0D0より
大きい値をIF文に入れることはできないですよね。
でも本当はそうしたいわけなので、根本的解決になっていないような気が
するのですが…。
とんちんかんなことを言っていたらごめんなさい。
0109デフォルトの名無しさん
NGNG使いたいということでしょうか?
浮動小数点の値はどんな感じのビットになっていて、0の場合だけを
ビット演算ではじくとははどうでしょう?
0の場合のビットパターンを用意して、判定したい値とXORとって
ビットが全部0なら0、一つでも1があったらビットパターンが違ってたってことで0でないというのはどうでしょう?
自分でやってみた訳じゃなくて、単なる思いつきだからどうなるかは判りませんが・・・
0110105
NGNG前者…1.0D-100や1.0D-307
後者…0.0D0
要するに1.0D-100や1.0D-307は0.0D0と同じものと見なすべきだと
言いたかったわけです。
>とありますが、このごくふつうのやり方ではDEPSより小さくて0.0D0より
>大きい値をIF文に入れることはできないですよね。
>でも本当はそうしたいわけなので
ここが一番気になるところ。「そうしたい」というのは、DEPSより小さくて
0.0D0より大きい値は、0.0D0とは区別して「正しく」処理したいということ?
それだとA.NE.0.0D0などと書くのと同じで、DABS(A).GT.DEPSというように
Aを0とみなす範囲を広くとった意味がまるでなくなることになる。
本当に1.0D-20などを0.0D0とは区別して計算したいのですか? こういう区別を
しなければならないようなプログラムには根本的な問題があると思うわけです。
0111デフォルトの名無しさん
NGNG浮動小数点の中身がみれます。
0112デフォルトの名無しさん
NGNGあんまり細かいところ見ても意味がないのではないでしょうか?
0113のと
NGNGえっとですね、ちょっと単語が難しくてわからないところも
あるんですが、基本的に「本当の0だけを取り除いて、
0に非常に近いけど0じゃない値は使」うということは
IF文でできるんですよ。
しかし、そのIF文のなかで
1.0D0/A
とすると(0かそうでないかでわけた実数をAとしました)、
値がNanになってしまうというのが問題点なんですね。
そうならないためにはどうすればよいか、と悩んでいるんです。
使いたい
0114デフォルトの名無しさん
NGNG数値解析プログラマの集まりと見た。
それだけに他の情報処理系は入ってこられないから荒れない
な。
0115のと
NGNG意味ないですm(__)m
0116デフォルトの名無しさん
NGNG断言できる。
0117デフォルトの名無しさん
NGNG>より正確に表現するものです。表現可能な数値の範囲は、
>正の最大値で1.7976×10+308、正の最小値で4.9406×10-324です。
という記述をネットで発見。
最小値の逆数は10+324のオーダーになるがこれは倍精度実数型に収まらないんじゃ・・
でもこれって、のと氏のいう範囲とも食い違うし間違いかも。
自信ないのでsage
0118デフォルトの名無しさん
NGNGC++でGMP使う。
以上。
0119のと
NGNG貴重な情報をありがとう。
私の1.0D307という情報のソースは古〜い本なので、
それこそ間違っているかもしれません。
というかむしろ近くてあってるのかなと感じたのですが(^_^)
ちょっとun理系チックな考え方ですけど。
1.0D307というのはfortranで扱える最大の桁数(もちろん倍精度)
みたいで、実際1.0D307とか打ってコンパイルするとエラーが
出ますよ。
Visual fortranだけかもしれないですが。。
0120デフォルトの名無しさん
NGNG+0とか−0とか言う値が出てくるが、これって0に非常に近いけど
0じゃない、でも0と見なすって数なのか?
0121デフォルトの名無しさん
NGNG最大正の値が99999999。最小正の値が0.00000001(最初の0は表示なし)。
123.5678は表示できても12.3456789は表示できない。
(これが10進の浮動小数点っつことだよな。)
0で割れないのは数学上当たり前なので÷0はできないようにした。
じゃ、100を0.0000003で割ったらこの電卓は表示できるかね?
0122デフォルトの名無しさん
NGNG0123M
NGNGやっぱ地球科学系の数値計算とかでしょうか?
まさかWinのアプリケーションFortranで作ってるとかいう人は居ないと思いますが。
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG>まさかWinのアプリケーションFortranで作ってるとかいう人は居ないと思いますが。
>>55の鬱が悪化するかも(藁
0126105
NGNG浮動小数点をそういう電卓に喩えるのはまずい。
1.234D56のように仮数部と指数部に分けて表現する、これが浮動小数点の
基本概念。仮数部で有効桁を、指数部でオーダーを表すわけです。
「100を0.0000003で割ったら」、0.3333333333D9などとなり、これは
勿論(有効桁分は)正確に表現できます。
したがって>>のとさんのように1.0D-200は0ではないちゃんとした値であって、
きちんと計算出来て欲しいというのはもっともです。実際その値そのものは
正確に保持しているわけですからね。しかしこの考えはプログラミングの
観点からは非常に危なっかしい。この値がどこから出てきたのかというのが
問題になります。最初から例えばプランク定数で定義され、素粒子の世界だけ
で閉じている計算から出てきたものであればまあ一応OK(一応と付け足した
のは、これでも問題があるからですが、これは後回しにします)。しかし
現実に相手にしているのは有限要素法なんかだとmmとかμmとかの世界であって、
せいぜいD-10程度のオーダー。こういうオーダーの計算を行っている途中に
D-200などのオーダーの値が出てきたら、これはもうゼロ以外の何の意味も
持ちません。その辺りの考え方がアバウトなようで、心配なわけです。
と、ここまで書いて本当にここら辺りの問題をうまく伝えられるのかが疑問に
思えてきた(苦笑
まあ、のとさんも色々試行錯誤しているようで、その結果待ちということに
しましょう(w
0127デフォルトの名無しさん
NGNG指数部が桁足りないんじゃないっす?
0128C->F90
NGNGCのポインタと同じく変数のアドレスを持っている32bitの整数ということなのか
と思ったけど、本で調べてもアドレスなんてこと全く書いてなかった。
Cのポインタと同じようには使えないんでしょうか?
012970
NGNGそれは、当たり前。コンピュータの実数って所詮近似値だから、非常に小さい値の
sqrt() を取ったら 0 になってしまうことがある。
また、非常に小さい値に対して 1.0D0/A 等とやると結果が有効範囲に収まれない
ことも充分ありえる。
どうしてもこれを避けたいなら、逆に 1.0D0/A の結果が NaN になった事を検出
すると言う方法の方が簡単だと思う。ヘルプで、ISNAN(x) 関数を調べてみて。
ただ、実際問題としてそのような状況になるのはロジックに問題があるような気が
するけど、それは大丈夫 ?
0130のと
NGNG親切にいろいろありがとうございました。
126にかかれていることはよ〜くわかりましたよ。
大丈夫です、わかりやすかったです。
よく考えたら非常に小さな値をセンシティブに扱っても
意味はないですね。
先生ともディスカッションして(実は大学院生(^_^))
あまりに小さい値は0としようということになりました。
本当にありがとうございまず。
>70
70さんもいろいろありがとうございました。
ロジックは大丈夫です。
いろいろな要因が重なるうちに(主に小さい値どうしの掛け算)
値が小さくなっていってしまったりするだけです。
ここの人はみんな親切で助かりました。
いろいろあって忘れてしまったのですが(すみません)、
tracebackのことを教えてくれたのが一番助けになりました。
ありがとうございました。
ただ、まだプログラム自体は完成してないのでまた聞くかも
しれません(^_^)
0131デフォルトの名無しさん
NGNGwinのアプリケーションFORTRANで作るっていっても、関数だけFortranで作って
メインのところはVC++とかで作っているんですよね?
まさかWinMainから全部Fortranで作ってるとか・・・
013255
NGNGFORTRANのイベントループ(のようなもの)、
見てるだけで目眩がします。算術GOTO文の嵐。
0133デフォルトの名無しさん
NGNGBreakキーを押すと「Break in 685」と表示される…。
う”〜〜〜ん。
0134デフォルトの名無しさん
NGNGF77で書くようにとか仕様があるんですか?
F77でwhile(){ }とかdo{ }while();とか実現しようとすると、goto使わざるを得ないからいやだな。ifとgotoでループ作ってる人が居てびっくり。
0135デフォルトの名無しさん
NGNG一応、F77のしばりはありますね。DO-ENDDOくらいは使っちゃいますけど。
VFは、今度は HP Visual FORTRAN になるのでしょうか?
MPS=>DVF=>CVFと、バージョンあげるたびにメーカーが変わっているような気が......
次バージョン是非、エディタにIntelliSense付けて欲しいな。
あ、FORTRAN.Net になるのか?
0136syukudai
NGNG自分で探してもみつからないので・・
0137デフォルトの名無しさん
NGNGlinear regression でサーチ は?
0138あの・・
NGNGフォートランの場合は配列を引数とするためには、サブルーチン側ではど
のように書けばよいのですか?
subroutine 名前 (x(i),y(i))
みたいな書き方で良いのでしょうか?それとも添え字は要りませんか?
0139デフォルトの名無しさん
NGNG0140あの・・
NGNGわかりました。
もうひとつききたいんですが、そのサブルーチンの後に
subroutine namae (x,y)
dimention x(100)
dimention y(100)
みたいな宣言も必要ですか?
0141デフォルトの名無しさん
NGNG当然配列宣言は必要。宣言がないと通常変数と区別がつかない。
あと、ディメンションじゃなくてディメンジョンね。スペルが
チョト違うYO!
まあ普通は、REAL*8 X(100),Y(100)のように型宣言で配列宣言
も兼ねる書き方をするけど。
それにしても英小文字で書くとFORTRANじゃないみたいだなあ。
頭の固い漏れだけか?(爆
0142名無しさん@カラアゲうまうま
NGNG> それにしても英小文字で書くとFORTRANじゃないみたいだなあ。
禿同。
0143140
NGNGしつこいようですがもうひとつ聞きたいのですがメインプログラムで配列を渡す時は
サブルーチン名(X,Y)でいいですか?それからメインでは、渡す配列は20までしか
確保していないのですが、受け取るほうのサブルーチンで21以上にもアクセスできますか?
subroutine(x,y)
RWAL*8 x(100),y(100)
do 10 i=1,50
z=x(i)+y(i)
みたいなことが書きたいのです・・文法あってるかな・・
0144デフォルトの名無しさん
NGNG0145名無しさん@カラアゲうまうま
NGNG0146デフォルトの名無しさん
NGNGどう違うの?
0147デフォルトの名無しさん
NGNG自殺願望か?
できますよ。
0148デフォルトの名無しさん
NGNG0149C
NGNG無理でないかい。
多分コンパイルエラーか、x(20)以上にアクセスするときに何か実行時エラーが出ると思う。
C言語なら、動くよ。ただ確保したところ以外にいじるとどうなるかは
わからないが。
Fortran最近始めたばかりで余りよく知らないんだが、
関数のなかでもx(100)とかやらなくちゃならないってことは
関数には配列のコピーが渡されるって事か?
0150141
NGNG>関数には配列のコピーが渡されるって事か?
NO。FORTRANの引数はすべてアドレス渡しで、cのような値渡しの
仕組みは一切ない。したがって、
>関数のなかでもx(100)とかやらなくちゃならない
というわけではない。実際、SUBROUTINE側では配列の長さが分から
ないので、REAL*8 X(1) などと宣言したりする。
要するに配列である旨をコンパイラに教えるだけの意味。
まあオプションでOut of Rangeのチェックができるコンパイラもある
けどね。現実的にはそんなチェックをかけたら、使い物にならない(爆
>>143
>メインでは、渡す配列は20までしか確保していないのですが、受け取る
>ほうのサブルーチンで21以上にもアクセスできますか?
>>144-149の言うとおり、できるわけがない。実体(実引数)は必要な
だけ確保しておかなければならないのは当たり前です。
コーリングシーケンスはそれでOK。CALL NAMAE ( X, Y ) などとやる。
勿論配列宣言と型宣言も必要。この場合の配列宣言とは、単に宣言だけ
でなく、領域実体の確保も意味することに注意。
うむ、これでほんとに分かってもらえるかな。ま、とにかく、がんがれ!(w
0151デフォルトの名無しさん
NGNGRWAL*8 x(1),y(1)
0152デフォルトの名無しさん
NGNG引数に多次元配列を渡す場合は、
配列の形状を共有するために、
内側N-1次元分の配列サイズも
引数で渡す。
0153デフォルトの名無しさん
NGNG逆行列を求めるプログラムが
欲しいのですが、これらをを自分で作らずに手に入れる方法などを
どなたかご存知ありませんか?
やはり、自分で作るしかないのでしょうか?
よろしくお願いします。
0154デフォルトの名無しさん
NGNG本屋でタチヨミすれば?
逆行列程度ならネットにおちてる可能性も・・
しかしC言語等に比べるとネットに落ちてる確率は低い。
物理屋さんしか使わないからな・・
0155デフォルトの名無しさん
NGNGその類の数値解析パッケージは、探せばくさるほど転がってるけど。
英語読めるか? 137あたり参照。
0156デフォルトの名無しさん
NGNG0157ショボ鯖缶
NGNGFORTEなんたらってうFORTRANのコンパイラCDがついてたけど
ライセンスは別途購入する必要があるの?
SUNのコンパイラ入れればやっぱ処理速いんですか?
教えてキボンヌ。
0158ショボ鯖缶
NGNGFORTEなんたらってうFORTRANのコンパイラCDがついてたけど
ライセンスは別途購入する必要があるの?
SUNのコンパイラ入れればやっぱ処理速いんですか?
教えてキボンヌ。
0159ショボ鯖缶
NGNGFORTEなんたらってうFORTRANのコンパイラCDがついてたけど
ライセンスは別途購入する必要があるの?
SUNのコンパイラ入れればやっぱ処理速いんですか?
教えてきぼん
0160ショボ鯖缶
NGNG0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG三重でした。氏んできます
0163デフォルトの名無しさん
NGNGVisualStudio.NET対応のVisualFortran.NETとか
HPと合併してFortran止めちゃったりしたら悲しい・・・
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG結構良さそうだね、IntelFortran
でもIntelのって初めて聞いた。アカデミックソフトのカタログにも載ってないし。
これって本当にコンパイラだけみたいだね、開発環境はVisualStudioが必要みたい。
0166デフォルトの名無しさん
NGNGシコシコ数値懐石やってたさ。ところがどっこい、流体計算ではまだ現役。
しかも3000行のソースの中に"go to"が100箇所以上あるスパゲティ・ソース。
構造化プログラミングから入った俺には読解自体がかなりつらい。
0167デフォルトの名無しさん
NGNGあわせてコンパイラに最適化コード吐かせたCより早いのか?
(という実験をそのうちやろう)
0168デフォルトの名無しさん
NGNGまた実際そういう流れってあるの?
必要性が無くても流れで移植とかがはやってるってこと無い?
0169デフォルトの名無しさん
NGNGCはともかく、Javaは無理じゃないか?書き直すことは出来るが
速度や、数学関数の精度が低いだろう。Cでも現場によっては
今ひとつと言われてしまうかもしれない。
その前に、古い時代のスパゲティ・ソースをFortran77や90の
仕様を使った構造化プログラミングに直すのがまず先決のゆな
気がするぞ。
0170デフォルトの名無しさん
NGNG保守性を重視して....。」という話も、スパコンの中で数十時間解析
してる世界だと通じない場合があるよなぁ。「じゃ、あと10億で
クラスターを一台増やしましょう!」なんて気軽にはいえん。
0171デフォルトの名無しさん
NGNGFortranの問題というより、汎用機の時代から
世間のプログラミング作法の常識とはかけ離れて
可読性の低いソースが書きつづけられていることが
問題だとおもふ。
0172デフォルトの名無しさん
NGNGなんにでも特例はある。というかスパコン自体特例なような。
一度使ってみたいが。
0173デフォルトの名無しさん
NGNGいまさら40前後の上司に"go toつかわず、関数作って、CPUに
あわせた最適化コード吐かせて高速化"なんていえんわな......。
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG・再帰関数書けないFORTRANは、引数がヒープ上にあり、大域変数としてアクセスされる
・ベクター計算機用ライブラリは、FORTRANの方が普及してる
・FORTRANしか使えない人にとって、Cを覚えながらプログラム書くより、早く結果が出る
0176名無しさん@カラアゲうまうま
NGNG> ・再帰関数書けないFORTRANは、引数がヒープ上にあり、大域変数としてアクセスされる
レジスタ渡しのほうが速かったりしない?
> ・FORTRANしか使えない人にとって、Cを覚えながらプログラム書くより、早く結果が出る
それは「速い」理由じゃなくて「早い」理由。
0177デフォルトの名無しさん
NGNGとかで、ソースコードにしても基本的に自分さえわかればいいって
感じで書いているから、ソース渡されても解読するのが非常に困難。
ドキュメントなんてまず書かないし、関数のヘッダとかも付けないし、
doループifブロックのインデントないし、とにかく流れが読みにくい。
Fortran77にCの機能くっつけたようなF90にしても、周りの人ほとんどか
古式ゆかしいF77使っていて、F90使っている人なんて皆無に近い。
0178名無しさん@カラアゲうまうま
NGNG0179デフォルトの名無しさん
NGNG禿同
0180デフォルトの名無しさん
NGNGインデントなんて、ifとかループの範囲の行を少し引っ込ませれば
いいだけだから、Fortran用のインデントも何もないと思う。
F77の場合1行64文字位までしか書けないから詰めてるんじゃないかな。
f90ならもっとたくさん書けるけど、まだまだ77信者が多いから
F77形式でやらなくちゃならない。
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNG別に信者というわけではなく、商用コンパイラでしか動かないコードがあり、
うちの研究費では 77 と 90 両方を買うことができないため 77 が優先されました。
せんせー、科研費当てて Fortran90 コンパイラ買ってください...。
0183デフォルトの名無しさん
NGNG無料のコンパイラじゃダメか?
DECのとかintelのとか?
0184デフォルトの名無しさん
NGNGIntelのコンパイラって、無料だったっけ?
といいつつあげてみる
0185182
NGNGしかし、今まで使ってきた商用コンパイラでコンパイルされた
某ライブラリとのリンクしなければならないため、
困ったちゃんな状態に。
Intelでライブラリをコンパイルし直せばよいのですが、
あっちでwarning、こっちでerrorという状態になり(誰だよ、このコード書いたのは..)
あきらめてしまいました。
とうぶんFORTRAN77でいきます...。
0186デフォルトの名無しさん
NGNGなどと書いてみるテスト。
ちなみにわたくしただいまintel fortranでOpenMPの修行中です。ハァハァ
0187デフォルトの名無しさん
NGNGVisual Fortran 5.0でbitmap画像を処理してみたい.
各座標のRGB値を読み取って,10進数で配列に納めたいんですが...
OPEN(10,FILE='01.bmp',ACCESS='DIRECT',recl=1)
OPEN(6,FILE='data.dat')
DO m=1,150
READ(10,rec=m+54) c(m)
WRITE(6,*) m,ichar(c(m))
ENDDO
これじゃ,なんか駄目っぽい.
どこが駄目か教えていただけるとありがたいのですが.
0188デフォルトの名無しさん
NGNGまず読み込むbmpの色深度によって1ピクセルのデータのサイズが変わるけど
その処理をしてないと思った。これはフルカラー(24bit)だったらR,G,B
それぞれ1バイトずつだからまあ24bit限定にすればよいと思うけど。
あと、bmpフォーマットは上下逆(右下?がデータの先頭に来る)
だけどその辺知ってるのかなという気がした。
何をしたいのか書いてくれないと説明のしようがないと思われ。
0189187
NGNGフルカラーを想定しているので,まずヘッダの54バイトを読み飛ばす.
55バイト以降は,BMPの左下からRGB値がBGRの順で並んでて,
配列C(m)は,CHARACTER*1で宣言していますので,
c(1)には最左下のB値
c(2)には最左下のG値
c(3)には最左下のR値
c(4)には最左下の一つ右のピクセルのB値
がそれぞれ文字型で入っていって,
それを,ichar(c(m))で,10進数に直せば
c(1)=120,c(2)=20,・・・
といった具合に,各座標のRGB値を10進数で取り出せるのでは?と思ったわけです.
ところが,バイナリエディタで開いた値とは,違う値が返ってくる.
>文字コードを返すICHAR関数はFORTRANの標準の組み込み関数であるが,
>その値は機種に依存することになる.
ってのが関係してたりするのかな?などと考えて頭がこんがらがって
きたので,ここで質問した次第であります.
===============================================
なんか,見当違いなこと書いちゃってるかもしれませんが,
よろしくお願いします.
0190187
NGNG×間違い
c(1)=120,c(2)=20,・・・
といった具合に,・・・
○正解
ichar(c(1))=120, ichar(c(2))=20,・・・
といった具合に,・・・
スマソ
0191デフォルトの名無しさん
NGNGcが150取ってなかったら落ちるだろ。
0192187
NGNGcの配列のサイズは十分大きくとってあります.
おっしゃる通り,
「bmpの55バイト目から204バイト目を十進で出力する」
というのを意図したプログラムです.
ところが,出力されてくる値が,バイナリエディタで開いて見た値と
異なっている.もうなんでなんだと.
BMPファイル的にはフルカラーなんですが,元画像は白黒CCDカメラで撮った
ものなので,バイナリエディタで開くと,20,20,20,13,13,13,55,55,55・・・
といった具合に,3つ同じ値が連続しています.
ところが,ichar(c(m))で返ってくる値は19,20,20,24・・・
みたいなかんじで,バイナリエディタで開いた値とは異なる.
意味がわからん.といったわけです.
=======================================================
毎回,情報の小出しになっちゃって申し訳ないですが,
よろしくお願いします.
0193デフォルトの名無しさん
NGNGhttp://www.compaq.co.jp/products/dvf/docs/vf-html/pg/pg04_01_07.htm#byterecl
を見ると
>/assume:nobyterecl を指定すると,書式なしファイルの RECL 値が 4 バイト
>(ロングワード) 単位であることを指定したことになります。これが基本設定です。
なんてことが書いてあるから、コンパイルオプションを確認するといいかも。
0194187
NGNGちょっと僕のキャパを超えました.
まださらっと見ただけですが,リンク先,あまり理解できませんヽ(´-`)ノ
所要で外出のため,
明日にでもじっくり読んで考えます.
どうもお世話になります.
0195192
NGNGhttp://wwwoa.ees.hokudai.ac.jp/people/numa/enshu/fileio.html
にもあるけど、recl指定がByte単位のコンパイラ(g77とか)とワード(4Byte)単位の
ものがあると。おなじrecl=1でも前者は1Byte,後者は4byteだと。で、Compaq
fortranはどうやらコンパイルオプション/assume:bytereclを明示的に指定しないと
後者扱いになるよっていう話みたいね。自分はByte単位のコンパイラしか使ったこと
ないんでいまいちわからんが。もし後者だとすると
READ(10,rec=m+54) c(m)
の時点でm=1の場合(1+54)*4=220バイト目から読んでることになるんでないかと。
今回のような用途の場合、54バイトなんて言うバイト単位の読み飛ばしをしたければ
/assume:byterecl をつけた上で
OPEN(10,FILE='01.bmp',FORM='UNFORMATTED',ACCESS='DIRECT',recl=1)
とOPENしてやる必要があるんじゃないでせうか。UNFORMATTEDも明示した方が
確実ではないでせうか。VisualFortranも知らんでしゃしゃり出てスマソだが。
0196193
NGNGすんまへん上の名前の192は193の間違いですた。
0197デフォルトの名無しさん
NGNGWindows上でも利用できますか?
古いワークステーションのプログラムをWindows上で走らせたいのですが、
アーカイブ・ライブラリになってるんです…。
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNGアーカイブは勿論オブジェクトモジュール(コンパイル済みの奴)の集まりなのでしょう?
それをUNIXからWindowsにそのままコピーして動くなんて、理屈から言っても、
ぜ〜〜〜〜ったい無理だと思う。Javaじゃないんだし。そんなことができたら、
ビルおじさんは赤鬼みたく激怒するのでは? 少なくともソースのリコンパイルは
必要でしょう。それで正しく動くかどうかもかなり怪しいと思われるが…。
で、全く話題が変わるが、「くだ質スレ」でint table[256]の各配列要素にすべて32を
初期設定する方法について盛り上がっていたのだが、FORTARNでは次にようにできた
と思うのだが、これでOKでしたっけ?
INTEGER*4 TABLE(256)
DATA TABLE/256*32/
考えてみれば*は乗算の演算子なわけで、256*32の計算結果が1個だけセットされる
ような気もする。DATA文の中では演算子は使えなくて、やはり上のコーディングで
OK? FORTRANから離れて大分経つので、自信がない。誰か詳しい人ヨロピク♪
0200デフォルトの名無しさん
NGNG>DATA TABLE/256*32/
でOKだと思います。DATA文って「宣言文のような見かけの立派な実行文」ですよね。
新しい規格からは削除されるみたいですが、大丈夫。新しい規格でコーディングする
くらいなら誰もFortran使いませんって(笑)。
0201デフォルトの名無しさん
NGNGFORTRANの様な言語は言語仕様を拡張したり文法をいじる必要はない。
開発補助ツールを充実させればいいだけのこと。
0202187
NGNGどうも報告遅くなりますた.
理解もそこそこに,おっしゃる通りにOPENしてみました.
んで,みごと解決!
いや,お世話になりました.感謝感謝です.
0203195
NGNGそりは大変良かったですね。自分もWebで調べただけなんで自信なぞこれっぱかも
ありませんですた。でもCompaq Fortranのサイトは細かいとこまで載ってるんで
とっても(・∀・)イイ!発見。
0204デフォルトの名無しさん
NGNGCなんかより速いって理由があるらしいけど、
何でCよりFortranの方が速いんですか?
コンパイラの最適化とかですか?
それとも言語の仕様とか
0205FORTRANマンセー!
NGNGパソコンレベルの話だとFortranの速度の優位性は特に無いと思いますよ。
今時のコンパイラだとCもFortranも大して変わらないか、むしろCのほうが
速いことも実際あります。スパコンレベルだとFortranユーザーばっかり
なのでメーカーもそれなりにFortranには力を入れているんだと思いますが。
あとこれは聞いた話ですが、Fortranの最適化がCより優れている点は
タコいコードを書いてもそれなりに最適化してくれることだとか。
数値計算する人って計算そのものを研究する人と計算を応用に使う人の
2種類に分けられますが、前者はともかく後者はプログラムに関しては
素人がそろっているのでこういう点では助かるのではないかあと。
まあ、実際そんなことよりもアカデミックならFortranマンセーだろうがっ!
という感じでFortranを使ってる人がほとんどな気が。私だけ?(わら
0206デフォルトの名無しさん
NGNGFORTRANで用が足りるのになんでわざわざC?ってかんじなんだろ
0207デフォルトの名無しさん
NGNGプログラムをメンテしなくてはならない私は、やはりFORTRANが嫌い。
自分が作ったプログラムは、FORTRANでも好きだけど。
0208デフォルトの名無しさん
NGNG本屋行っても、時代遅れのような本しかなくて・・・
0209デフォルトの名無しさん
NGNG入門書が時代遅れって
内容が時代遅れ→Fortran自体が時代遅れなのでヨシ
装丁が時代遅れ→Fortran関連の本なんて古いのしかないんだからヨシ
ですが何か?そうでない入門書って
http://www.pearsoned.co.jp/washo/prog/wa_pro40-j.html
こういうのか?いきなりf90でも良いけど他人のF77コードを読むのが
苦痛になるという諸刃の剣。用途によってはお勧めできない。
0210デフォルトの名無しさん
NGNGその辺のPC関連の書籍扱ってる店では全然ないね。
0211名無しさん
NGNGIMPLICIT NONE
を宣言して,変数を全て自分で型を宣言しないと気が済まない人って
いますか?
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNGCの方を先にやってたから、その方が普通だと思っている。
CからFortranの関数呼び出すとき、値がまともに返らないと思って
いて、関数名の先頭の文字にIを使っていたので、Rか何かくっつけたら
きちんとdoubleが返ってきた。
関数の宣言で、double precision Iなんとか(......)と
やってもimplicit none しない限りだめなの?
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG「fortranには暗黙の型宣言があって、みんなそれを使ってプログラム組んでるのだから、
お前一人がそんな勝手なことをするとわけがわかんなくなる」ということだそうで。。
個人的な好みから、小文字でソース書いてるのですが、「これfortranか?」とも。。
退職が頭をかすめました。
0216デフォルトの名無しさん
NGNGそれはfortranではありません
FORTRANです
0217デフォルトの名無しさん
NGNGそんなことでいちいち「退職」なんて考えてたら、体がいくつあっても
足りんぞ(藁
部長のお叱りはもっともと思われ。君がコーディングしたものを、他人が
読む羽目になることはよくあること。自分だけの基準を勝手に決められた
のでは、読まされる方はたまったものではないよん♪
そもそも>>213がおかしい。
>関数の宣言で、double precision Iなんとか(......)と
>やってもimplicit none しない限りだめなの?
んなこたぁない。Iなんとかの部分をきちんと書いていないと
思われ。大体IをRに変えたら「real」でなく「double」に
なったというのも怪しい…。
0218デフォルトの名無しさん
NGNG退職しる。そもそもそんな奴がFORTRANを使うような職場にいるのが間違い。
CやPascalを書くときならともかく、LXXXXがRealだろうか、とか考えたくもない。
だいいち他の奴のソースとギャップが大きすぎてかえって読みづらいだろ。
0219デフォルトの名無しさん
NGNGIMPLICIT NONEはなるべく、というか必ず宣言すべきでは?
これを勝手に宣言し、さらに各変数の(変数名はそのままに)型宣言するだけでも怒られるの?
その上司はデバッグしたことないのでしょうか???
0220デフォルトの名無しさん
NGNGlapackは数値計算にとっても便利だよ。
0221デフォルトの名無しさん
NGNG0222名無しさん
NGNGprogram test
cimplicit none
integer*4 i
i=10
write(6,'("i=",i10)') j
stop
end
実行環境 Debian GNU/Linux i386
g77 2.95.4-16
$ gcc -o test test.f
$ ./test
i= 134522604
値は実行環境に依るでしょう.
implicit noneのコメントを外せば,
jが宣言されていないからコンパイル出来ません.
「fortran」使いでした.
0223名無しさん
NGNG0224名無しさん
NGNG寝ぼけていました.逝ってきます.
0225デフォルトの名無しさん
NGNGそのようなものはないのでしょうか?
組み込み関数として用意されているのでしょうか?
くわしい方いましたら、教えてください。
0226デフォルトの名無しさん
NGNGコンパイラによるぞ
0227デフォルトの名無しさん
NGNG0228226
NGNGtp://ftp.compaq.co.jp/products/dvf/cvf-help.zip
↑に日本語のマニュアルがある
0229デフォルトの名無しさん
NGNG0230225
NGNGというのはないのですか?
0231デフォルトの名無しさん
NGNG「本当の」乱数というものは現実には存在しないでしょう。
サイコロを振っても「本当の」乱数になるかどうかは疑わしい。
あるところで妥協せざるを得ない。
ただし乱数度を表す指標みたいなものがあって(例えば周期の長さとか)、
どういうロジックで(擬似)乱数を作り出したかにより、その乱数の
「質」の良さ、ひいてはそのロジックの優秀さが判定できるでしょうが。
0232デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGhttp://www.xlsoft.com/jp/products/vtune/download.html
↑にも日本語のマニュアルがある
0235デフォルトの名無しさん
NGNGあ、6.0の日本語マニュアル出てたんだ。気が付かなかったサンクスコ。
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG行列演算になるとFORTRANの方が速い(2倍以上高速になることはザラ)
同じ数値計算アルゴリズムをVC++6プロフェッショナルとVisualFORTRAN6
の両方で比較したことがあったが、FORTRANの方が4〜6倍速くて鬱になった
ことがある。
>あとこれは聞いた話ですが、Fortranの最適化がCより優れている点は
>タコいコードを書いてもそれなりに最適化してくれることだとか。
禿げしく同。C++では注意深くコードを書かないと糞みたいに遅くなる
こと有。
FORTRAN77:言語が単純なので数値計算の問題に集中できる。
C++ :言語が複雑で完全にマスターするのが大変。
数値計算の問題に集中できない。気が散る。
C++を諦めてFORTRANに戻ろうかとも考えている。
でも、あのC++の柔軟性やSTLの便利さは捨て難いけどなぁ。
0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG0240のと
NGNGすると、次のようなエラーになりコンパイルできません。
/subsystem:console
/entry:mainCRTStartup
/igonore:505
/debugtype:cv
/debug:minimal
/pdb:none
C:\DOCUME~1\dfor.lib
libc.lib
dfconsol.lib
dfport.lib
kernel32.lib
/out:test.exe
LINK : fatal error LNK181: cannot open input file "C:\DOCUME~1\dfor.lib"
きっとリンクするときにC:\DOCUME~1\dfor.libの箇所がだめなんだと思うんですが
(実際そのフォルダにはdfor.libはない)、どうしてこんな設定になってるんで
しょうか?
どなたかわかる方いましたら教えてください。
0241デフォルトの名無しさん
NGNGプロジェクトフォルダごとコピーしたんじゃない?
新規プロジェクトで
ソースファイルだけコピーしてみ
0243デフォルトの名無しさん
NGNGうまくいかないんです。誰か助けて。
0〜800くらいまでの乱数を25刻みでいくつづつカウントされるか
チェックしたいんですけど、if文がうまく書けてないみたいで・・・
0244243
NGNGdo j=1,25 箱25個
Y(j)=0 カウント数の箱の初期化
end do
do i=1,300
if(T(i).gt.0.and.T(i).lt.25)
Y(1)=Y(1)+1
else if(T(i).gt.25.and.T(i).lt.50)
Y(2)=Y(2)+1
・・・・・・・・・
・・・・・・・・・
else
Y(25)=Y(25)+1
end if
end do
do ii=1,25
write(*,*)Y(ii)
end do
これじゃY(1)にカウントが150とかいっちゃって、
乱数が一様に分布されなくなっちゃいます。
一様になるはずなんです。
どこが違いますか?
0245デフォルトの名無しさん
NGNGもちろんそうなってるんですよね?
0246デフォルトの名無しさん
NGNGYは明らかに整数型のつもりで使っているらしいから、当然TもINTEGER宣言してある
のでしょう。
いずれにせよ、>>244のコーディング通りなら正しく出ると思います。正しく出ない
原因は(1)実際のコーディングが>>244の通りでない (2)Tに正しい一様乱数が
入っていない。実数で入っている乱数をEQUIVALENCE的に整数型で受けているといった
場合もこの(2)に含まれる。
考えられる原因はこれくらいですかね。
それよりも>>244のロジックに注文をつけたくなります。これだとelseifのネストが
25個もできることになりますよね。これはいかにもかったるいでしょう。
私なら次のようにします。
DO I=1,300
J=T(I)
J=(J-1)/25 + 1
IF ( J .GT. 25 ) J=25
Y(J)=Y(J)+1
END DO
0247デフォルトの名無しさん
NGNGLAPACKだとこれが出来ないっぽいんですが。
何かヒントいただければお願いします。
0248デフォルトの名無しさん
NGNG最大値を出すやりかたがわからないんですが・・
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG文2
とあるとき、if文の影響範囲は文1と文2の両方に及びますか?
thenがあるときとないときでは違うのでしょうか?
0251デフォルトの名無しさん
NGNGおやおや、無視されていますね。
FORTRANから離れて大分経つので自信はないが、私なりの回答を。
ifは文1にしか影響しない。文2はただの独立した文。
if(条件)文1 が、一つの「if文」と見なされるでしょう。
THENをつけた場合は、ELSEかENDIFかが出てくるまでの間がまとめて、
一つの「THEN節」として処理されるのではないでしょうか?
以上、酔っぱらいながらの、昔を思い出しての回答。
間違っているところがあったら、誰か訂正よろしくね♪
0252デフォルトの名無しさん
NGNG大学の本屋にいけないひとは
こういうとこで買うしかないのかな。
http://www.bidders.co.jp/item/10533308
近所の古本屋でも見かけないし
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNGサポートに電話しる!
0255デフォルトの名無しさん
NGNGREAD(5,*)引数
DIMENTION 配列a(3)
DIMENTION 配列b(3)
Z = hoge(引数)
(略)
END
FUNCTION hoge(引数)
DIMENTION 配列a(3)
DIMENTION 配列b(3)
なんたらかんたら
RETURN
END
でいいのでしょうか?
0256名無しさん
NGNG読みにくいです.
PROGRAM TEST
REAL*4 A(3),B(3)
INTEGER*4 I
INTEGER*4 J
READ(5,'(1I)') I
CALL HOGE(I,A,B)
WRITE(6,'("A:",3(1X,F5.2))') (A(J),J=1,3)
WRITE(6,'("B:",3(1X,F5.2))') (B(J),J=1,3)
STOP
END
SUBROUTINE HOGE(I,A,B)
INTEGER*4 I
REAL*4 A(3),B(3)
INTEGER*4 J
DO J=1,3
A(J)=FLOAT(I*J)*0.5
B(J)=FLOAT(I)*2./FLOAT(J)
ENDDO
RETURN
END
0257デフォルトの名無しさん
NGNGそういう読みやすい書き方を紹介してくれる
書籍かサイトご存知ないでしょうか?
0258デフォルトの名無しさん
NGNGEND DOってどのコンパイラでも通るのか?
まぁFORTRANは77しか使ったこと無いから90,95とかはわからんが.
>>257
じゃぁせめて配列サイズも引数に渡してあげましょう.
引数爆発起こしますが変更に耐えられません.
0259デフォルトの名無しさん
NGNG私のお家はもー無いの 去年火事で燃えちゃった
ヤッホー Frotranランラン ヤッホー Frotranランラン
ヤッホー Frotranランラン ヤッホー Frotranランラン
ヤッホー Frotranランラン ヤッホー Frotranランラン
ヤッホー Frotranランラン ヤッホッホー!!
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGなつかすぃなあ。デバッグで行き詰まったりしたとき、
ヤケクソでヤッホー フォートランランラン…♪なんて
やってごまかしたこと数知れず(爆
ところで、>私のお家はもー無いの 去年火事で燃えちゃった
っていうのは故意の替え歌? あと「Frotran」も、わざと?
意味が分からん(汗
>>257
そういうのはセンスと経験(慣れ)の問題で、本を読んだだけで身に付くもの
ではないと思いますよ。とにかく実践ありき。ゴリゴリコーディングして、
経験豊かな人にボロクソにけなされるうちに、コツが分かってきます。
FORTRANに限らず、どんな言語でもそうですけどね♪
0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNG今日のfortranスレはお開きって事で。
0264デフォルトの名無しさん
NGNGDO 10 I=1,10
WRITE(6,'(1I2)') I
10 CONTINUE
ですか?
0265デフォルトの名無しさん
NGNGうん.ラベル管理が死ぬほど億劫だがそうしてる.
gnuと,最近のSunのコンパイラは通るらしいけど,
古めのWSで通らなかった痛い経験があるので使わないことにしてる.
規格厨じゃないが規格外だし
0266デフォルトの名無しさん
NGNG0267259
NGNG火災保険は入っていたけど、子供は天国へ逝っちゃった。
かみさんとも別れちゃった。
おぉブレーネリ 私の居場所はどこ?
0268名無しさん@XEmacs
NGNGA = SQRT(ABS(A))
ELSE
A = 0
ENDIF
だっけ?
0269デフォルトの名無しさん
NGNGA = HAGE
ELSE
A = MAGE
ENDIF
比較演算子と論理演算子はドットで囲まないと
0270名無しさん@XEmacs
NGNG0271デフォルトの名無しさん
NGNG読む方法はないでしょうか?
同じソースでもコンパイラによってはerror during read と出て
読み出しすらできない場合や、読めるけど中身のデータがおかしく
なる場合があります。
readの際にrecl、convert等を適当に指定したりしてみたのですが駄目でした。
書き込みをしたコンパイラを使えばいいのですが、計算時間より
転送時間の方が何十倍も時間がかかってしまうという環境なので
できれば手元のマシンで処理したいのです。
0272デフォルトの名無しさん
NGNGエンディアンが違うんじゃないのかねえ。
0273デフォルトの名無しさん
NGNGFORTRANだと、コンパイルする時にオプションを指定すれば
ビッグエンディアンのデータをそのまま読めた。
--convert bigendianだったかな。
0274デフォルトの名無しさん
NGNGodとか、バイナリエディタ(bviとか)でデータの並びを確認しては
どうでしょうか?
FORTRANでビット演算は出来ないという理解は正しいでしょうか?
0276デフォルトの名無しさん
NGNGLSHIFTとかANDとかあるんだが,
富士通とSunとGNUでは存在を確認した
0277デフォルトの名無しさん
NGNGを書き出すにはどうすればいいのでしょうか。
Cで言えば、
struct SomeType x ;
FILE* fp ;
fwrite( (void*)&x , sizeof( SomeType ) , 1 , fp ) ;
ということがやりたいです。これには、構造体 SomeTypeを
1バイトポインタにキャストできる必要があります。
・書式なし逐次記録で書くと、先頭にバイト長が入ってしまう
REAL*8 :: X(3)
OPEN(98,'a.dat',FORM='UNFORMATTED',ACCESS='SEQUENTIAL)
WRITE(98) X
16進Dump
18 00 00 00 | x(1)のイメージ | x(2)のイメージ | x(3)のイメージ |
(つづく)
0278デフォルトの名無しさん
NGNG・FORTRAN77が引数の型を調べないことを利用して、INTEGER*1の配列として
任意の型を受け取って書く。
以下のようにコーディングできるが、正当な書き方ではない。
SUBROUTINE BWRITE( UnitNo , Buf , N , POS )
INTEGER :: UnitNo , N
INTEGER*1 :: Buf(N)
INTEGER :: I
DO I=POS,POS+N-1
WRITE(UnitNo,REC=I) Buf(I)
END DO
END SUBROUTINE BWRITE
CALL BWRITE(98,X,24,1)
0279デフォルトの名無しさん
NGNG以前FORTRAN77を勉強し、最近、構造型が便利だということでF90を
勉強しだしていますが構造型で少しわからないところがあります。
たとえば
TYPE MyClass1
real :: rdum
integer :: idum
END TYPE MyClass1
としておき、さらに
TYPE MyClass2
TYPE(MyClass1) , ALLOCATABLE :: tdum(:,:,:)
END TYPE
とするとエラーが起こります。
このように自分が作成したTYPEの中でALLOCATABLEを宣言することは無理なのでしょうか?
もし解決方法をご存知の方がいらっしゃったら教えていただけないでしょうか?
よろしくお願いします。
それでは失礼します。
0280デフォルトの名無しさん
NGNGPOINTER使えば?
0281デフォルトの名無しさん
NGNGLINUX上のコンソールで走らせるプログラムを書いているんですが、
Input reading file name > ここのファイル名を入力
とかいう風にやりたいんですが、
write(*,1000)
read(*,1010) FILE
1000 format('Input reading file name > ')
1010 format(A16)
と言う風にやると、“Input reading file name > ”のところで改行されてしまうんです。
この改行を抑制する方法って無いでしょうか。
0282デフォルトの名無しさん
NGNGぎゃぁ!!
固定Formatで書いてるつもりなのに………(汗)
上のソースは固定formatです。
書き忘れましたが環境は、VineLinux2.5にAbsoftのProFortran7.5をインストールしています。
0283デフォルトの名無しさん
NGNG$を付けると改行しません.
HP FORTRANだけの独自拡張だと思っていたのですが,
Linux上のf2c,g77-3.2どちらでも使用できました.
g77-2.95は試していません.
program test
implicit none
integer*2 i
write(6,'("Input number: ",$)')
read(5,'(i2)') i
write(6,'("The number is ",i2)') i
stop
end
0284デフォルトの名無しさん
NGNGありがとうございます!
試したところうまくいきました。
ところで、これってFortran77/90/95とかの規格には含まれてないんですよね?
0285デフォルトの名無しさん
NGNGまた脊髄反射でレスをカキコしてしまった………。
私は、ProFortranを使ってはいますが、未だに固定フォーマットでプログラムを書いてますし、
Fortran77の教科書で書いてます。
でも、もう卒業だからFortranをこれ以上使うとも思えないんですよね………。
0286デフォルトの名無しさん
NGNG構造体のサイズはいじれないんですね。
POINTERですか、一度勉強してみます。
とりあえずできないことが確認できただけでもよかったです。
どうもありがとうございました。
0287デフォルトの名無しさん
NGNG> ところで、これってFortran77/90/95とかの規格には含まれてないんですよね?
HP FORTRANのマニュアルにはFORTRAN77にはない拡張だと書いてありましたが,
FORTRAN90や95の規格に含まれているかどうかは分かりません.
ちなみにCompaq FORTRANでも有効でした.
0288デフォルトの名無しさん
NGNGやってみたんですがPOINTERを使ってもターゲットになる構造体のサイズに依存するんで
構造体の内部変数の配列のサイズを変更した構造体を作ることはできないのでは
ないのでしょうか?
何度もすみませんm(_ _)m
0289デフォルトの名無しさん
NGNGそうですか………。
Fortran90の本を読んでもでていないんで、多分拡張ですよね。
それにしても、Fortran77の本に書かれていた、各行一文字目での制御って
普通の画面でも有効なんでしょうか。
<うちの環境では駄目でした
今更(只今M2で就職決定済み)でFortran覚えても意味無い気がして来たけど趣味
でやってます(笑)
0290デフォルトの名無しさん
NGNG> それにしても、Fortran77の本に書かれていた、各行一文字目での制御って
> 普通の画面でも有効なんでしょうか。
> <うちの環境では駄目でした
意味が分からないのですが、
c comment
のことでしょうか?
「Fortran77の本」とは具体的に何と言う本か?
「普通の画面」とは何のこと?
「うちの環境」とはどんな環境?
「駄目」とはどういう状態のこと?
0291デフォルトの名無しさん
NGNG説明不足でご免なさい。出力を改行させたくない場合、
write(*,'+','kaigyousimasenn')
と言う用にすれば出来ると
ttp://www.amazon.co.jp/exec/obidos/ASIN/4627839812/qid=1035696552/sr=1-3/ref=sr_1_0_3/250-6779604-7744248
ttp://www.amazon.co.jp/exec/obidos/ASIN/4563007455/qid=1035696494/sr=1-19/ref=sr_1_0_19/250-6779604-7744248
の本に書いてあったんです。
このようにしてみたのですが、そのまま画面と言うかターミナルに表示されてしまいまして。
普通の環境とか普通の画面とか言うのはただの私の先入観です。
駄目というのは、改行させないと言う効果が得られず、制御文字(この場合は+)がそのまま
コンソールに表示されてしまったと言うことです。
本には『プリンタ制御』と書かれていたので、コンソールには無効なのかな、と思っています。
環境はLinuxにAbsoftのProFortran7.5をインストールしています。
0292デフォルトの名無しさん
NGNG> 説明不足でご免なさい。出力を改行させたくない場合、
> write(*,'+','kaigyousimasenn')
> と言う用にすれば出来ると
> の本に書いてあったんです。
> このようにしてみたのですが、そのまま画面と言うかターミナルに表示されてしまいまして。
283に書かれたやり方で良いのではないでしょうか?
それでは問題があって、他のやり方を探していると
いうことでしょうか?
0293デフォルトの名無しさん
NGNGいえ、正直なところ、ただの好奇心の範囲でして。
お騒がせして申し訳ありません。
問題自体はあれで解決しました。
お付き合いいただき、どうもありがとうございます。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGどこが違っているのか、おしえてください。おねがいします。
c ex 2.1.1 *** wa,sa,seki,sho,bekijyou no keisan ***
implicit double precision(a-h,o-z)
open(15,file='date211.inp')
open(25,file='date211.out')
read(15,*) a,b
wa = a+b
sa = a-b
seki = a*b
sho = a/b
beki = a**b
c
write(25,*) 'a = ',a, 'b = ',b
write(25,*)
write(25,*) 'wa = ',wa,'sa= ',sa,'seki = ',seki,'sho = ',sho,
& 'beki = ',beki
c
write(6,*) 'a = ',a, 'b = ',b,'c = ',c,'d = ',d
write(6,*)
write(6,*) 'wa = ',wa,'sa = ',sa,'seki = ',seki,'sho = ',sho,
& 'beki = ',beki
stop
end
ちなみに、頭が全部そろってますが、cや&は7列目以降にはかかれていません。
こぴぺしたものなので・・・。
0296デフォルトの名無しさん
NGNGSalfordのお試し版とg77なら
cとdが未初期化だゴルァ
と怒られた以外、ちゃんとコンパイルできたぞ。
0297デフォルトの名無しさん
NGNGさせるにはどうしたらいいのでしょうか?
0298デフォルトの名無しさん
NGNGVisual Fortran だと、FLUSH あるいは COMMITQQ なんてのがありますが。
使用コンパイラのリファレンスを見るべし。
0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNGc ex 2.2.3 addition of angle
implicit double precision(a-h,o-z)
integer dg1,sc1,dg2,sc2,dg,sc
date pi/3.141593/
write(25,*) 'input dg,mn,sc'
write(6,*) 'input dg,mn,sc'
open(15,file='date223.inp')
open(25,file='date223.out')
read(15,*) dg1,mn1,sc1
read(15,*) dg2,mn2,sc2
r=pi/180.0
c
rd1=((sc1/60.0+mn1)/60.0+dg1)*r
rd2=((sc2/60.0+mn2)/60.0+dg2)*r
rd=rd1+rd2
c
wk=rd/r
dg=wk
wk=(wk-dg)*60.0
mn=wk
sc=(wk-mn)*60.0+0.5
write(25,*) 'rad1= ',rad1, 'rad2 = ',rad2,'rd=',rd
write(25,*)
write(25,*) 'angl1 = ',dg1,'deg ',mn1,
& 'min',sc1,'sec'
write(25,*) 'angl2= ',dg2,'deg',mn2,
& 'min ',sc2',sec'
write(25,*) 'total=',dg,'deg',mn,
& 'min',sc,'sec'
stop
end
0301デフォルトの名無しさん
NGNGI/O の番号を変えてみるってのは?
0302デフォルトの名無しさん
NGNG> これも、どこが違うかわらからないので、教えていただけませんか。ずうずうしくてすみません。
「違う」って何でしょう。お使いの環境が不明。
コンパイルに失敗するのか。それともコンパイルは
出来ても実行結果が意図と違うのか。
気付いたところ。
openでstatusを指定していない。
scは整数型として宣言しているのにsc=...の文は60.0を
乗じたり0.5を加えたりしている。更に倍精度実数wkから
整数mnをキャスティングなしで引いている。
0303デフォルトの名無しさん
NGNGpi=4.*atan(1.)のほうがよくない
0304デフォルトの名無しさん
NGNGコンパイル時に、エラーがでるのです。
教科書は、型宣言をしておらず、dateから始まっています。
だから、型宣言が違うということでしょうか。
あまり詳しいことを学ばないまま、レポートが出てしまったので、困っています。
どのように直せばよいのでしょうか
ご指導のほど、お願いします。
0305デフォルトの名無しさん
NGNGdateはいかがなものか。
0306デフォルトの名無しさん
NGNGコンパイラのエラーメッセージ読んでみれば?
もしかしたら、HITACのようなTSS環境だと、メッセージでないのかな?
(ううなつかしい)
あるいは授業のハンドデバッグの宿題だったりして。
で、まじれす
4行目 date でなく、dataでしょう。
22行目 出力変数は、rad1,rad2ではなく、rd1, rd2 でしょう。
27行目 sc2のあとのアポストロフィの位置が間違えてます。
当然、'date223.inp'に適切なデータが記述されていないと
ランタイムで落ちます。
0307306
NGNGレポートかぁ。
書かなきゃよかったかな。
いずれにせよ、業務上であれば、300のようなコードかいてきたら、
殴ります。
0308デフォルトの名無しさん
NGNGしかし、実行段階でやはり、コアダンプします。
学校のPCのため、設定はいじれないんですが…。
どうすればよいのでしょうか
0309デフォルトの名無しさん
NGNGクラッシュする位置を特定してどうしてそこでクラッシュするか考える
やりかたとしては
プログラムをよく読んで脳内で実行
もしくはデバッガをつかう
デバッガが使えなければいちいち write して、
各時点で各変数の値がどうなっているか、どこでクラッシュするか確認する
0310デフォルトの名無しさん
NGNG設定でなくて,プログラム自体が間違っているのでしょう.
図書館でFORTRANの参考書を借りるとかして下さい.
このスレを参考書にするのはどうかと思います.
0311デフォルトの名無しさん
NGNGありがとうございます。処理系に依存するとは知りませんでした。
実際に僕が使っているFujitsu Fortranでは、サービスルーチン
として(つまり組み込みでない)FLUSH()関数が用意されていました。
0312デフォルトの名無しさん
NGNGopen(15,file='date223.inp', status='OLD') くらいは
かいてみそ
date223.inp が無いんじゃないの?
0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNGそれをc++のdowbleの変数に渡したとき、1.10000002384186という値に
化けてしまいます。この数値の再現性は100%です。
なんでごみが混じってしまうのでしょうか。それへの対応法はありますでしょうか?
アドバイスお願いします。
0315デフォルトの名無しさん
NGNGVF6.5、VC++6でやってます。
0316デフォルトの名無しさん
NGNGコンパイラオプションにもよりますが、単純に 1.1 と書くと、通常、
単精度になりますから、せいぜい10進数では7桁程度の精度しかありません。
Z=1.1D0 と書けば、倍精度になりますから、15桁くらいの精度になります。
0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNGfortranソースからフローチャート生成するツールって
ないっすか?検索したけどみつからない。個人的に
ツール作成した神はいませんか?
0319デフォルトの名無しさん
NGNG>>34-38 は?
0320デフォルトの名無しさん
NGNG操作ができるツールみたいなの探してる。
やっぱねぇのかなぁ?ベクターさんではみつからないし。
>>319
0321デフォルトの名無しさん
NGNGそれを勉強するのに適した本とか、WEBページとかありますか?
0322デフォルトの名無しさん
NGNGWindowsであれば、まずはVisualFortranのヘルプとか
ttp://www.compaq.co.jp/products/dvf/visual/jhelp.html
「言語が混在したプログラミング」として、少しばかり記述がある。
「勉強」には少々貧しい内容だが。
このヘルプ、VFもっていなくても
ランゲージリファレンスとして有効だと思うんだけど。
0323デフォルトの名無しさん
NGNGFortranでの計算結果をアニメーションで表したいと思っています.
(例えば振り子の運動など)
どのような方法がありますでしょうか?
Fortranには
Visual Fortran 6.0を用いております.
ご教授ください宜しくお願いします.
0324デフォルトの名無しさん
NGNGfortran95の無料コンパイラって
http://www.fortran.com/
ぐらいしかないかな。
0325315
NGNGfortranで計算結果を適当に書き出して(DATとか)それをVBとかで表示じゃだめ?
俺はそうしてますた・・いちばん簡単だと思う。
>>316 >>317
ありがとうございました。これってFORTRAN使いの方(に限らない?)にはあたりまえの事なんですね。
こんなこと聞いてアホかと怒られました。勉強させていただきました。
0326デフォルトの名無しさん
NGNGKAP or VAST-2 最適化プリプロセッサって、
シングルスレッドのプログラムでも有効ですか?
数値解析のプログラムを使っているんですが、
もしかしたら必須アイテム?
0327デフォルトの名無しさん
NGNG最近、数値計算メインをC++からFortran95に乗り換えました
F77->QB->Pascal->C->C++,VB->C++,VB,perl->LabView,F95,C++,VB,ruby
で、結局fortranに帰ったと Fortran95(・∀・)イイ!!
安いコンパイラと安い解説書があればもっと流行るのになぁ
>323
VFならQuickWinが付属していますので、それを使ってください。
ただし、汎用性もなくなるのでお勧めできませんが。
ヘルプで
Using QuickWin->Displaying Graphics Output
を参照のこと
0328デフォルトの名無しさん
NGNGよろしかったら数値計算部をC++からFORTRANに乗り換えられた理由を教えて
いただけないでしょうか?
0329デフォルトの名無しさん
NGNGまあ、配列の仕様が違うので仕方ないですが、
CやC++は数値演算には向きませんね。
0330デフォルトの名無しさん
NGNG「数値演算」といっても規模によるだろうけど、
具体的には C/C++ とどの程度の差がでるものなの?
俺は C/C++ で数値計算をずっとやっててそれしか知らないので
ちょっと興味がある。
0331デフォルトの名無しさん
NGNGアセンブリ出力見てみれば?
0332デフォルトの名無しさん
NGNG(真っ当な) C プログラムよりも Fortran のプログラムって速いのかな?
関数呼び出しのオーバヘッドとかが違うとしても、
劇的に速度が向上するとは思えないんだけど。
0333デフォルトの名無しさん
NGNGCとFortranの速度差はせいぜい5%程度です(経験的).C++は作りにもよりますが、
Cより遅くなります.速度を上げるために設計に頭を使うというのはどうかと.
C++から乗り換えた理由は,F95がCと同等以上のことが出来るためです.
実際使ってみると,すごくいい.Cよりもよく出来てる(新しいから当然).
特に配列の拡張がすばらしいと思います.また,並列命令がある.
元々Cが数値計算に向かない点として
・配列の添え字が0から始まる(ほとんどの数学ルーチンは1から始まる)
・階乗がない
・複素数がない
・商用ルーチンがいまいち
というのがありましたから,移るのにためらいはありませんでした.
なんで今まで移らなかったかというと,解説書がなかったから(昔はDECのしかなかった)
F77で書くくらいなら,多少遅くてもCを使いますがね.
0334デフォルトの名無しさん
NGNGC++をC的な使い方をしているかぎり,基本的にFORTRANの参照渡しと同じです
から行列計算でもそれほど遅くならないと思います.行列計算の最適化に対する
ノウハウの差が若干でる程度かと...
C++で行列計算をやるときに悲惨なのは,行列クラスを作ってC=A*Bの行列演算
ができるように=演算子や*演算子を書き換えた(オーバーロードした)ときです.
関数(サブルーチン)内で定義した作業用の行列やC++が裏側で勝手につくる行列が,
関数が呼び出されるたびに生成され,また関数から呼び出し側に戻るときに破壊さ
れるような事態が発生しうるのです.しかも,呼び出し側に行列演算結果を渡すの
に値コピーが行われるのです.1000 x 1000の行列だと1000000個のデータの
コピーが...確かに,下手なプログラムを作ると遅くなってしまいます.
でも,FORTRAN77が嫌だったのでは,プログラムが読みにくいのとバグが見つけ
にくく,見つけるのに1ヶ月もかかった経験があるからです(今から考えると
それはプログラムの設計が悪かったからでしょうが).
確かに,fortran95は改善されていますね.でも,この前95で作られたコード
をみたんですが,サブルーチンなんか引数が多いし,やっぱりアレルギー反応
を起こしてしまいました.
で,C++を続けるかfortran95に戻るか迷い中だったものですから...
0335デフォルトの名無しさん
NGNG↓
呼び出し側に行列演算結果を返すのに値コピー
の誤りでした.
0336デフォルトの名無しさん
NGNGfortran95のプログラムには旧形式と新形式があるので,一見F77の
プログラムに見えるものもあります.F95は基本的にはCと同等ですから
引数が多いのはしゃーないです.Cも多いですし.構造体を使って
変数をパッケージすればいくらか改善できるでしょうが
fortran2000ではついにオブジェクト指向が導入されたということなので
期待しているんだけど,いつ実装されるんだか^^
f95の時は実装が97-98年,大型に入ったのが00年,本が出始めたのが
昨年くらいからですからね.他の言語と比べるとゆっくりしてるなぁ
HPFは2000の規格を実装するんだろうか?知ってる人がいたら教えてくらさい
0337デフォルトの名無しさん
NGNGある有名な学者が「究極の言語はObject Fortranだ!」
と言ったとか...
でも,Object fortranの実装には少し時間がかかるだろうなぁ.
C++だってクラスとか継承とか仮想関数だとかで結構複雑になって
ますからねぇ.かなり機能を限定するのでは?
0338デフォルトの名無しさん
NGNGCのサブルーチンだと、配列を2つ引数にとったときに、
その2つの配列が重なっている可能性があるために、最適化が制限されます。
並列計算機のアーキテクチャによっては、この制限が致命的になります。
また、整合配列が使えないので、汎用的な行列計算ルーチンを書くのが面倒な
のも大きな欠点です。
0339デフォルトの名無しさん
NGNGC99のrestrictと整合配列で解決。
0340デフォルトの名無しさん
NGNGCとFORTRAN77では計算速度に最高30%近い差が出ましたよ.
残念ながら(?)GNUよりもFujitsuやSun等の商用コンパイラの方がかなり速いですね.
FORTRAN77の引数やグローバル変数などの問題はもう割り切るしかないです.
0341デフォルトの名無しさん
NGNGぜひFORTRAN77のアセンブリ出力を拝みたいものだ。C以上にいかなる
手段を持って最適化しているのか、後学のために拝見したい。
0342デフォルトの名無しさん
NGNG最高約30%の差が出るのは私が使っている問題の性質と思います.
解を出すために遺伝子座が数千の個体が数十個出来ますし,
その操作手順も数千ステップとかなり煩雑です.
おそらく小さな最適化が積もり積もった結果と思います.
0343デフォルトの名無しさん
NGNGhが0から3まで0.2ずつふえていき、
0<h≦1のときは、p,1<h≦2のときはq,2<h≦3のときはr
となるようなプログラムの作成の仕方を教えてください。
また、配列と入力データには何を入れればわからないので教えてください。
御願いします。
0344デフォルトの名無しさん
NGNG>Cのサブルーチン
いかにもふぉーとらんスレですね。。。
0345デフォルトの名無しさん
NGNG今までfortranやC言語に抵抗があったのですが,ようやくその理由が
わかりました.要するに,私は
「サブルーチン,関数の引数の数が多くなり,また引数を渡す際の記法が
煩わしい言語が嫌い」
なのです.COMMON文やグローバル変数を使えば回避できますが,これが
バグの温床になりがちで昔さんざんひどいめにあいました.
でも,これは「スイカに塩をかけて食べる奴が嫌い,トマトに醤油をか
けて食べる奴が嫌い」といった好みの問題だから,言語論をふりかざし
ても決着はつきませんよね.
>>343
申し訳ないけど,質問の意味がわかりません.
p,q,rは何でしょう? 何がp,q,rになるのでしょう?
hはdoループの制御変数と思いますが,h がp,q,r
になるのなら,doループは正常に作動しないと思います.
>配列と入力データには何を入れればわからないので教えてください。
もっと詳しく書いてくれないとこれも理解できないです.
0346デフォルトの名無しさん
NGNG>でも,これは「スイカに塩をかけて食べる奴が嫌い,トマトに醤油をか
>けて食べる奴が嫌い」といった好みの問題だから,言語論をふりかざし
>ても決着はつきませんよね.
むしろFORTRAN77は,
言語に対する理想論はとりあえずおいといてって感じで割り切って使える人でなければ
使うのは難しいと思います.
計算機丸一日回すのが当たり前というような速さがとにかく欲しいという人向けと思います.
0347デフォルトの名無しさん
NGNGP=r*g*h
Q=r*g*b
みたいなかんじです。
rやgは定数としてはじめに宣言しています。
0348デフォルトの名無しさん
NGNGうーん。有限範囲を持つ物体の逆2乗の重力計算ですかね。
h を素直に do ループで増分して、
if で場合分け程度で解決出来ませんか。
0349デフォルトの名無しさん
NGNGFORTRANの前に日本語での説明の仕方を勉強した方がいいぞ。
h の状態に応じて b の値を変えたいの?
この説明だけでは配列とか入力データとか言われてもわからないよ。
どうせ宿題なんだろ。問題文全部晒してみ。
0350デフォルトの名無しさん
NGNGはい、宿題です(笑。
では、お言葉に甘えて。よろしく御願いします。
hは0から3までの範囲で、0.2おきに示す表を作成するんです。
で
0<h≦1のとき
x=dacos(1-2*h/d)
a1=(x-cos(x)*sin(x))*d**2/8
px=ro*g*b*h**2/2
pz=ro*g*a1*b
zc=2*h/3
xc=p**(zc+cos(x)*d/2)/pz
1<h≦2のとき
x=dacos(2*h/d-1)
a1=(pi-x+cos(x)*sin(x))*d**2/8
px=ro*g*b*h**2/2
pz=ro*g*a1*b
zc=2*h/3
xc=p**(zc-d/2)/pz
0351デフォルトの名無しさん
NGNG2<h≦3のとき
a1=pi*d**2/8
ax=b*d
hg=h-d/2
px=ro*g*a*hg
pz=ro*g*a1*b
z=(3*h*d-2*d**2)/(b*h-3*d)
zc=h-z
xc=px*(h-hg-z)/pz
です。ro=1000、pi=3.141593、g=9.8とはじめにdata文で定義しました。
b,dは入力ファイルから読み込むようにしようと思っています。
問題文では、b=5,d=2と与えられているのですが、はじめからこの数字を使ったほうがいいのですか?
px等の変数については配列を用いること とありますが、これもいまいちわかりません。
今日は2時くらいまでは起きているので、親切な方、ご教授ください。よろしく御願いします。
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNGどのあたりが不明ですか?
問題文は書いたのですが。
0354デフォルトの名無しさん
NGNG例えば、gccでは、未だにソフトウェアパイプライニングも
ベクトル化も並列化も実装されていませんよね。
また、restrictを利用すれば最適化できるのかもしれませんが、
gccでは実装されていません。だから、配列に関するCのコードは
ひどいです。
0355デフォルトの名無しさん
NGNG問題を出した人は、なんのつもりで配列使用の縛りを
入れたんだろう。
f90 で配列演算をさせるつもりなのか、
単に出力表を配列に格納させるつもりなのか。
単に出力するなら配列使わなくてもいいのにねぇ。。。
これって、プログラム自体が目的の宿題っていう感じじゃないね。
なんのアルゴリズムというか手順を修得させる気なんでしょう。
いずれにせよ。。。以下の2点が分からないので
352をはじめ、だれもやる気起きないような気がしマフ
1)この問題の意図は何か?特に配列との関係
2)この問題を受け取った人は、何が分からないのか
というか、単に出力させるだけなら、もう答え出ているじゃん。。。
0356デフォルトの名無しさん
NGNGえーっとですね、fortran77です。はい。
この問題の意図は・・・
多分、doとif文の練習???みたいな。
何がわからないかというと、配列と、
入力データに何を入れるか。
b,dはわかるけど、あとが・・・。
0.2
0.4
0.6
っていれていくのかなぁ。
0357デフォルトの名無しさん
NGNGに、
Object Oriented Programming in Fortran 90/95
J. E. Akin (著)
という書籍があるんだけど、F90やF95でOOPは可能なんだろうか?
MODULE自体は、メンバ変数とメンバ関数を持つことが可能で、PRIVATEやPUBLIC属性
を指定できるから、OOPぽくできるんだと思うんだけど、
CONSTRUCTORなどはないようだしなぁ。
MODULEをクラスと等価であると見ると、そのクラスのインスタンスは、グローバルのような気がする。
USEすれば、どこでも、そのMODULEにアクセスできるから。
なんかF90のMODULEってOOPから見ると、何か変。。。
俺も変。。。
シミュレーション板でも、F90はOOPとか言う意見があるけど、本当かな???
まぁ、F90/95のスレは貴重だから、あげ。
0358デフォルトの名無しさん
NGNGとりあえず、DO, IF文と配列を使う演習問題風にするとこうかな?
後は自分で()の中を書き足して下さい。
PROGRAM HOGE
PARAMETER (RO=1000.,PI=3.141593,G=9.8)
REAL H(N),A1(N),PX(N),PZ(N),XC(N),ZC(N)
(BとDを入力)
DO 100 I=(N回まわす)
H(I)=I*0.2
IF (0≦H(I)≦1) THEN
(0≦h≦1のときの計算)
ELSE IF (1≦H(I)≦2) THEN
(1<h≦2のときの計算)
ELSE IF (2≦H(I)≦3) THEN
(2<h≦3のときの計算)
END IF
100 CONTINUE
WRITE(*,'(6A12)') 'H','A1','PX','PZ','ZC','XC'
(表を出力)
STOP
END
FORTRAN77って ELSEIF 使えたっけ?
0359デフォルトの名無しさん
NGNGdimension ????????????????
data ro/1000/, g/9.8/, pi/3.141593/
open(7,file='input.txt')
open(8,file='output.txt')
read( 7,*) d,b,number
write(6,*) d,b,number
?????????????????
do 10 k=1,number,0.2 (hが0.2ずつ増えていくことをいいたいんですが、初期値等わかりません。)
?????????????
0<h≦1の範囲のとき
if ((h .gt.0).and.(h .le. 1)) then
x=dacos(1-2*h/d)
a1=(x-cos(x)*sin(x))*d**2/8
px=ro*g*b*h**2/2
pz=ro*g*a1*b
zc=2*h/3
xc=px*(zc+cos(x)*d/2)/pz
else if
以下略で。
b,d の値と、データの個数nをinput.txtから読み込ませようと思っています。
????????????となっているあたりと、10 continue の位置もわからないです。
こんな感じでは、だめなのでしょうか。????や、直すべき点をご教授ください。
御願いします。ちなみに、パラメーター表記も未習です。
0360デフォルトの名無しさん
NGNGF90/95 のMODULEって、インスタンスを一つしかもてないのでは?
(インスタンスという言葉を使っていいのかわかりませんが)
あっしは「メンバ関数を持つコモン」「スコープを持つサブルーチン群」
のようなものと解釈しております。
なので、実際にMODULEを使ってOOのようなことをやろうと思うと
すぐ行き詰まるような気が。
違ったら、指摘お願い。
0361(_ _)/
NGNGPROGRAM HOGE
PARAMETER (RO=1000.,PI=3.141593,G=9.8)
REAL H(N),A1(N),PX(N),PZ(N),XC(N),ZC(N)
read( 7,*) d,b,number
write(6,*) d,b,number
dx=0.2
k2=number/dx+1
DO 100 I=1,k2
H(I)=I*0.2
IF (0≦H(I)≦1) THEN
(0≦h≦1のときの計算)
ELSE IF (1≦H(I)≦2) THEN
(1<h≦2のときの計算)
ELSE IF (2≦H(I)≦3) THEN
(2<h≦3のときの計算)
END IF
100 CONTINUE
以下略
0362デフォルトの名無しさん
NGNG358 のように親切じゃないですが、
Do ループの変数を、実数でまわすのは止める習慣を
つけた方がいいっす。
358 の様に整数変数に実数刻みを掛ける方が
将来的に、「安全堅牢」な態度が身に付きます。
あと、プログラミング自体が苦手ではない感じ
なのはソースを見ればわかるのですが
10 continue の位置がわからないとか配列宣言が不明とか
極めて基本的な事なんで、言語リファレンスないし
初心者向けの本に1回ぐらいは目を通した方がいいと思います
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG配列にしたいものを並べればよろしいかと.
362さんが言うように,まずは参考書を読みましょう.
一行ずつ聞くつもりですか?
0365デフォルトの名無しさん
NGNGdimension 名前(要素数1 [, 要素数2, …])
が知りたい訳じゃないですよね?
「何を書けば」と聞かれても「どの様にしたいか」によって答えが変わってきますが
>358 の例なら
H(1)=0.2, A1(1)= hが0.2(=H(1))の時のa1(=pi-x+…)の値, PX(1)= hが0.2の時のpx, …
H(2)=0.4, A1(2)= hが0.4の時のa1の値, PX(2)= hが0.4の時のpxの値, …
H(3)=0.6, A1(3)= hが0.6の時のa1の値, PX(3)= hが0.6の時のpxの値, …
…
といった具合に計算結果を保存したいので
> REAL H(N),A1(N),PX(N),PZ(N),XC(N),ZC(N)
として H,A1,PX,PZ,XC,ZC がそれぞれ要素数N の配列になる様に宣言しています。
後はこれらの配列が上記の内容になる様に DOループ内で計算させて、
全ての計算が終わった後に配列の内容を出力すれば良いのではないでしょうか。
0366デフォルトの名無しさん
NGNGdata ro/1000/, g/9.8/, pi/3.141593/
open(7,file='input.txt')
open(8,file='output.txt')
read( 7,*) d,b,n
write(6,*) d,b,n
h(i)=0.0
do 10 i=1,n,0.2
h(i)=h(i)+i
c-----0<h≦1の範囲のとき
if ((h(i) .gt.0).and.(h(i) .le. 1)) then
x(i)=dacos(1-2*h(i)/d)
a1(i)=(x(i)-cos(x(i))*sin(x(i)))*d**2/8
px(i)=ro*g*b*h(i)**2/2
pz(i)=ro*g*a1(i)*b
zc(i)=2*h(i)/3
xc(i)=px(i)*(zc(i)+cos(x)*d/2)/pz(i)
以下略。
にしたのですが、
do 10 i=1,number,0.2でThird parameter of DO statement must not be zero
*Invalid DO statement
x(i)=dacos(1-2*h(i)/d)で* DACOS is an intrinsic function used with invalid argument(s)
elseif ((h(i) .gt. 2)). and.((h(i) .le.3)) thenで* Invalid IF or ELSEIF statement
とエラーが出てしまうのですが、どのように解決すればよいのですか。
0367デフォルトの名無しさん
NGNGもう一度362を読む.
0368デフォルトの名無しさん
NGNGDo ループの変数を、実数でまわすのは止める
ってやつですか?
この意味もわかりません。
教科書読んでみたんですが、やっぱりわからないので、質問したのですが。
第一行目のz(i)はz(n)のミス。けど、それでも、
そこでエラーが出てるし。
0369デフォルトの名無しさん
NGNG整数型変数iに,整数でない0.2の増分を与えてループさせるのがおかしい.
361を読むべし.
0370デフォルトの名無しさん
NGNG> (x(i)=dacos(…でエラー)
DACOS関数の引数の型と現在のプログラムを比較してみましょう。
なぜここだけ明示的に「DACOS」なのかも疑問ですが。
使用するデータ型の指定は無かったのですか?
> (elseif …でエラー)
括弧の対応
>>378
>(1行目でエラー)
配列の要素数が不定なのが原因。
「hは0から3までの範囲で、0.2おき」と指定があるのなら
必要なデータ数は決まってくるのでは?
0371デフォルトの名無しさん
NGNG1)変数の型、特に数値は整数、実数の区別をはっきり”意識”する
意識するのが面倒ならば、コンパイラにさせるよう
最初に型宣言しておく
→Do でのエラー
2)数学上の逆関数 Arccos が Fortran でどうなっているか
(言語リファレンスで)確認する。特に注意書きを読む。
→DACOS でのエラー
3)2)同様 IF 及び ELSEIF の言語リファレンスを読む
→IF or ELSEIF のエラー
4)配列の宣言を教科書または言語リファレンスで確認する。
特に大きさをどうやって宣言するかはしつこく確認。
→z(n) でのエラー
5)コンパイラーのメッセージ内英単語は、簡単な単語なので
辞書を引く
0372デフォルトの名無しさん
NGNG学生に問題を出すときに制限を付けることはよくあります.配列使用
の縛りは,配列を用いたループの使い方を習得させるためじゃないかな.
特に,代入,初期化,判断文,ループの概念をなかなか理解できない
ようですから.
プログラミングって大学で教えるような技術じゃないんですよね.
単にデータフローを作ってるだけだし.
だから,数値アルゴリズムの授業がメインとなってしまう…
>357
CでもOOPは可能ですから、f90/95でも出来ますよ。
構造体に変数と関数ポインタをパックすればいいので
ただ、OOP言語っていうのは、言語仕様に含まれるという意味だと
個人的に思っているので,f90/95はOOPではないと思いますね
0373デフォルトの名無しさん
NGNGうーん。プログラミング教えるのなんか大変そうですね。
数値アルゴリズムだけだと、構成的な解析分野の数学の証明
、つまるところ逐次近似みたいになるのですかね。
なんかコンピューターのプログラミング教えるのって、
融通が利かない&特別な能力を持つ「変人」へどう指示出すか、
っていうマネジメント教育みたいですね。
0374訴人
NGNGx(i)=dacos(1-2*h(i)/d)で* DACOS →dacos(倍精度実数型)でいいの?acosじゃないの?
elseif ((h(i) .gt. 2)). and.((h(i) .le.3)) thenで* →Ifの使い方は大丈夫?
0375デフォルトの名無しさん
NGNG今、いろいろやってみてるんですけど、やはり・・・・。
do文でiをsに変えてみたんですけど、何も変わらず。
*** PZ has non-integer subscript(s)
などとでてきます。
また、一番初めに*** An adjustable array is only allowed in a subroutine or function
てでてくるのですが、これは
real h(n),x(n),a1(n),px(n),pz(n),xc(n),zc(n),ax(n),hg(n),z(n)
が、問題なのでしょうか。
nはhが0から3まで0.2ずつ増えていくので、n=15なのですが、
nはデータの個数で、h<3のときは、計算自体をSTOPさせるようにしたいのですが、
どうすればいいのでしょうか。
さらに、0<h≦1での計算のプログラム、
hがそうでなかったら、1<h≦2の計算のプログラム、
hがそうでなかったら、2<h≦3の計算のプログラム、
hがそうでなかったら、3<hでSTOPさせようと思っているのですが、
その際に、elseifは何回使ってもよいのですか。
『土木情報処理の基礎』という本を教科書に使っています。
これを参考にしているのですが、説明が不足しているような気がします。
ご教授ください。御願いします。
0376デフォルトの名無しさん
NGNGうーん。本があまり良くなさそうだね。
まあ Fortran なら、 google れば日本語の解説もあるんじゃない。
そうすれば以下の問題は解決する。
1)PZ has non-integer subscript(s)
→変数型の問題。もしその本が変数の型について
触れてなければ直ちに Fortan と付いた別の本も買う。
なお、 do 10 s=1,number,0.2; h(s)=s* x と
do 10 i=1,number; h(i)= i*0.2 * x が同じように
感じるならば徹底して別の本を読み直す事を
おすすめする。
最初の例の h(i) が変なのはなぜか?
h(i) を計算する右辺は、数学的に同じなハズなのに違うのはなぜか?
勝手に変形してはいけません。
2)An adjustable array ...(以下略)
→これは配列の宣言の話。もしその本が配列の宣言について
いろいろな具体例のみならず間違い例が無ければ
やっぱり別の本が必要。
追伸
ここはプログラム系と云う事なので、 Fortran コンパイラー
に付いての情報もあった方がいいと思います。
0377デフォルトの名無しさん
NGNGご指導ありがとうございます。
1)に関して。暗黙の型宣言でiは実数だからsにしたんですけど、
それだけじゃだめなんですね。
まったく同じものにみえてます、はい。
0.2を1/5にするとか・・・・・・・はぁ。
2)に関して。配列ですか。
配列は、dimensionしか習ってないので、たぶん、これしか使えないんですよね。
きっと。
問題に関してもいくつか不明な点もあるので、先生に聞こうと思ってますが。
追伸でご指摘があったので。
CPad for Salford FTN77
というコンパイラーを使ってます。
実行もしてくれるので、便利かなと。
0378デフォルトの名無しさん
NGNG1)
暗黙の型宣言は使わないほうがいいです
Integer やRealで明示的型宣言を使うようにしましょう
ちなみに,1/5は0です…コンパイラによるけど
2)
parameter N=15
real h(N)
なら動くはずです。f77使わないのでうろ覚えだけど
Fortran77のprogram文内には固定サイズ配列しか
置くことが出来ないのです。
0379デフォルトの名無しさん
NGNGいないようです。がんばって学んでください
・エラーがでたら,その部分に注目しよう
例えば,
real h(n),x(n),a1(n),px(n),pz(n),xc(n),zc(n),hg(n),z(i)
の行だけでエラーがでませんか?
・値が怪しいときは,値の変化を追いかけよう.例えば
write(*,*) h(i)
の一文をループに入れて,値を確認しよう(こういう行為をデバッグといいます)
・どれを入力にして,どれを出力して,どれを保持するのか?これはプログラミング
の大きな要素です.よーく考えてください.
・フルプログラムをいきなりべた書きするのは止めよう
自分の能力に自信が持てるまでは,少しずつデバッグを繰り返しながらプログラムを
作り上げる癖をつけましょう.この問題なら,
1.変数宣言だけをつくる→テスト
2.変数を初期化するとこまでつくる→テスト
3.配列h(i)に値を入れる部分と配列h(i)を出力する部分を作る.まず
do i=1,2
として,上手く動くか確かめる→テスト.次に,h>3.0でループが
止まる構造を考える→テスト.
4.ループをi=1,2に戻して,if構文を入れる→テスト.
フルループを回す→テスト.
全ての判断要素を入れる→テスト.
慣れた人でも,いきなり全てべた書きできるわけではありません.天才でもない
限りは,このように少しずつ組み上げていきます.
0380デフォルトの名無しさん
NGNG>379は>377さん宛てでふ
0381デフォルトの名無しさん
NGNGアリガト!(´▽`)。
少しずつがんばってみます。
けど、提出期限もあったり。あわわわ。
ちなみに、既習事項。
dimension
implisit文
if文
do文
組み込み関数
open及びwrite文
このくらいですかね。
これだけでもできるんですかねぇ。
0382デフォルトの名無しさん
NGNGプログラミングに必要な知識は
変数宣言 integer, real,dimension
演算子 +-*/ **
判断 if elsif else .ge. .eq. ...
繰り返し do do while
入出力 open close read write
たったこんだけです.大規模プログラムには,
ユーザーサブルーチン・関数
が加わります.これで,おしまい.どんなものでも作れます.
これは,どんな言語でも同じです.逆に,これらが理解できないと
何も作れません.
初心者は必要な知識が少なすぎて困惑するのかも知れないなぁ
0383デフォルトの名無しさん
NGNGしかし!!!
実行できません。
コンパイルはできているのに、実行できないってあるんですか。
どうすればいいんだああああああーーーーーーーーーーーー。
すみません。取り乱してしまいました。
0384デフォルトの名無しさん
NGNGOSとコンパイラは何?
0385デフォルトの名無しさん
NGNG頼むから,>379を読んでください
・まず,実行できないという表現はありえません
・最も簡単なプログラム write(*,*) "test" は実行できますか?
実行できないなら,そもそもリンク作業を行っていません
実行ファイルの作り方から復習してください
・エラーが起きていますか?
それなら,
・0で割った(overflow,ゼロ割)
・配列のサイズを超えたアクセス(segmentation fault,f77で起きるかどうかしらん)
が考えられます.適当な行に write(*,*) "koko" という文を入れて,そこまで実行
されるかどうか確かめてください. エラーが起きた行を捜します
・単に出力がでないという意味なら,無限ループの可能性が高いです
ループに write(*,*) h(i) という文を入れて,ループが予期した通りに動いているかどうか
確かめましょう
なんか釣られている気がしてきた…
0386デフォルトの名無しさん
NGNGOSは、Me,
コンパイラーはCPad for Salford FTN77です。
>>385
いろいろとありがとうございます。
今日、また確認作業をやってみます。
0387デフォルトの名無しさん
NGNG僕は多分 Arccos ではまっていると思いますね。
0388名無しさんに接続中…
NGNGreal x,y
WRITE(*,*) "n =?"
read(*,*) n
write(*,*) "m =?"
read(*,*) m
wa = m + n
sa = m - n
seki = m * n
sho = m / n
amari = m = n*sho
write(*,*) "m + n = ",wa
write(*,*) "m - n = ",sa
write(*,*) "m * n = ",seki
write(*,*) "m / n = ",sho
write(*,*) "amari = ",amari
c
write(*,*) "x =?"
read(*,*) x
write(*,*) "y =?"
read(*,*) y
write(*,*) "x*y = ",x*y
write(*,*) "x/y = ",x/y
stop
end
こんなのを作ったら、下のようなエラーがでました
0389388
NGNG(0003)のエラーの意味ってなんでしょうか?
■C:\Documents and Settings\Owner\My Documents\fcpad231\Fortran> ftn77 /link 面積.for
[Salford FTN77/Win32 v4.03, Copyright (c) Salford Software Ltd. 1988-1998]
Licensed to: FTN77 Personal Edition
Department: Non-commercial use only
0001) integer m,m,wasa,seki,sho,amari
WARNING - M has already been declared with this data type
0003) WRITE(*,*) "n =?"
*** An alternate return specifier is only allowed in a CALL statement
^C
0390デフォルトの名無しさん
NGNGinteger m,m,wasa,...
↓
integer m,n,wasa,...
0391<_ _>
NGNGamari = m = n*sho
0392388
NGNGinteger m,n
write(*,*) "m =?"
read(*,*) m
write(*,*) "n =?"
read(*,*) n
wa = m + n
write(*,*) "m + n = ",wa
stop
end
0393388
NGNG■C:\Documents and Settings\Owner\My Documents\fcpad231\Fortran> ftn77 /link ydfg.for
[Salford FTN77/Win32 v4.03, Copyright (c) Salford Software Ltd. 1988-1998]
Licensed to: FTN77 Personal Edition
Department: Non-commercial use only
0002) write(*,*) "n =?"
*** An alternate return specifier is only allowed in a CALL statement
0004) write(*,*) "m =?"
*** An alternate return specifier is only allowed in a CALL statement
0007) write(*,*) "m + n = ",wa
0008)
0009)
*** """ found where not expected
*** Invalid input/output list
4 ERRORS [<MAIN@>FTN77 Ver 4.03]
*** Compilation failed
^C
0394388
NGNGwrite(*,*) "m =?"
write(*,*) "n =?"
を消したら、実行できました。
でも、使うときにわかりにくいなぁ。
0395デフォルトの名無しさん
NGNGFortranではwrite(*,*) 'm =?'じゃなかった?(もう、覚えてないよー!)
0396デフォルトの名無しさん
NGNGです。
0397388
NGNGできました。本当にありがとうございました。
0398デフォルトの名無しさん
NGNGていうかこれも実行できたのか?
WRITE(6, '(A,F10.0)') 'm+n=', wa
あたりじゃないと苦しくない?
waよりもiwaとかにしたほうが良いだろうけど
0399デフォルトの名無しさん
NGNGよろしくお願いします!
parameter(N=3)
dimension A(N,N),b(N),x(N)
data a/2,1,4,4,-1,1,6,5,-2/
data b/28,7,21/
do k=1,N-1
do i=k+1,N
p=a(i,k)/a(k,k)
do j=k+1,N
a(i,j)=a(i,j)-p*a(k,j)
end do
b(i)=b(i)-p*b(k)
end do
end do
do i=n,1,-1
temp=0.0
do j=i+1,n
temp=temp+a(i,j)*x(j)
end do
x(i)=(B(i)-temp)/a(i,i)
end do
0400デフォルトの名無しさん
NGNG宿題教えてくんが来るまでは大人な雰囲気のすれだったのに。
みんな親切に教えてあげすぎかも。
0401デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1038024989/
ってことで
>399
サブルーチン法ってなんすか?
0402デフォルトの名無しさん
NGNGつーか、よく見たらガウスの消去法じゃねぇか
なにをサブルーチンにしたいんだよ
サブルーチンの定義から勉強してこい
0403デフォルトの名無しさん
NGNGサブルーチン側で整合配列?使うのかなぁ
0404デフォルトの名無しさん
NGNGprogram program1
parameter(N=3)
dimension A(N,N),b(N),x(N)
data a/2,1,4,4,-1,1,6,5,-2/
data b/28,7,21/
call gauss();
print *,(x(i),i=1,N)
contains
subroutine gauss()
do k=1,N-1
do i=k+1,N
・・・
x(i)=(B(i)-temp)/a(i,i)
end do
end subroutine
end program program1
なんちゃって
0405デフォルトの名無しさん
NGNGでも、a,b,xが大域的配列だとすると、このcontainsは何のために
あるんでしょうか? 'データ晒しあげ'の感がするんですけど。
0406デフォルトの名無しさん
NGNGGNU, Sun, Fujituのコンパイラではすんなり通るソースも Watcom でまともにコンパイルできたこと無いから
速いのかどうかすら分かりません・・・
http://www.openwatcom.org/
inte lのはなぜか FORTRAN95 規格でコンパイルしてしまい,ワーニング出まくるので調べ中です.
0407デフォルトの名無しさん
NGNGcontainsは複雑な入力ルーチンの隔離やmodule内サブルーチンに使いまふ
program main
use UTIL
implicit none
...
call func();
...
end program
module UTIL
real :: grobalVar;
...
contains
subroutine func()
...
end subroutine
end module
0408デフォルトの名無しさん
NGNGifcはコンパイルoption付けるとワーニング消えるよ
0409yuu
NGNGまだ経験が浅く根本的によくわかっていなく、色々と勉強をしている
のですが数ヶ月勉強しただけではわからないことが多すぎて頭がおか
しくなりそうで教えていただきたいのですが、LAPACKの使い方がよく
わかりません。
LAPACKのルーチンをすべてコンパイル時にリンクすることは可能なの
ですか?
リンクの仕方もあまりよくわからないバカものなのですが、LAPACKの
うまい使い方を教えて頂けたらうれしいです。
具体的には非対称固有値問題(NEP)ルーチン名は ZGEEVX を使おうと
思っているのですが、なにかアドバイス頂けたらありがたいです。
0410デフォルトの名無しさん
NGNGそのコンパイルオプションを探してるんですけど,見つからないんです・・・
0411デフォルトの名無しさん
NGNGコンパイラはVisual Fortranですか?それともgccのf77ですか?
Visual Fortranじゃなかったら残念ながら(私には)答えることができません。
あなたが使っているコンパイラに詳しい人がいたらいいんですけど。。。
>LAPACKのルーチンをすべてコンパイル時にリンクすることは可能なの
>ですか?
理解が少し間違っていると思うけど、希望のルーチンはリンクできます。
リンクの仕方には2通りあって、Windowsの場合?、静的なリンク(*.libのファイル
を使う)と動的なリンク(*.dllのファイルを使う)があります。
0412デフォルトの名無しさん
NGNGLAPACKの配布パッケージ内のソースだけで完結しているはず。
ただし、BLASも必要(BLASはLAPACKの配布パッケージにも入っている?)
いきなりルーチンを使うのは無謀だから、まずは、付属の
テストルーチン(ZGEEVXであれば、ZCHKEE.f)の動作確認。
その後、zchkee.fの中から呼び出されるZDRVVXがZGEEVXのドライバ
になっているので、ZDRVVXあたりを見ながら使用法をマスター。
0413412
NGNGちなみに、圧死もVisualFortranでした。
0414yuu
NGNG返事していただきありがとうございます!
コンパイラはAbsoft Pro Fortran for windows 7.5です。
担当教官がほとんどコンパイラの使い方がわかってない
という最悪な状態なので、なのにいつも結果をだせしか
言いません。LAPACKについても分からないらしくここに
きたしだいです。
例えば自分が使いたいZGEEVXのルーチンの中にCALL文が
ある場合は、そのCALLされているルーチン全部リンクさせなければ
いけないのですか??
0415yuu
NGNGありがとうございます!
BLASで検索かけたところ blas.lib f77blas.lib cblas.lib
などがありました。BLASという言葉は今日の昼間色々調べていて
知ったばかりです。計算の精度をよくするようなことが書いてあって
ような。programやり始めて3ヶ月ぐらいであんまり専門用語が分からなく
をうしわけないです。
LAPACK利用手引を見ながらやっているんですが、ZDRVVXのルーチンの説明
がありません。なんとか調べてみたいと思います。
動作確認というのはコンパイラによってやり方がことなるのですか?
まったくやり方がわからない素人にでも、簡単に説明できたら教えてください!
0416デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1038024989/
0417デフォルトの名無しさん
NGNG>担当教官がほとんどコンパイラの使い方がわかってない
>という最悪な状態
最悪じゃありません 普通です(  ̄ー ̄)
ちなみにそういうときの解決法
1.先輩に聞いてみる(そういう研究室には研究実行部隊がいる)
2.学内で他に使っている人を探す(意外といるもんです)
3.Web検索をかける(←最近はもっぱらこれ)
>動作確認というのはコンパイラによってやり方がことなるのですか?
異なります 説明書を読むしかないでふ うちはVFなので知らない
0418デフォルトの名無しさん
NGNGプログラム組まされるような学部に在籍しながら
>programやり始めて3ヶ月ぐらい
つーのと
>担当教官がほとんどコンパイラの使い方がわかってない
>という最悪な状態
つーのはどっこいどっこいな気が・・・
>まったくやり方がわからない素人にでも、簡単に説明できたら教えてください!
御願いだからまず図書室にでも行ってそれなりの入門書を真剣に読んでください.
電算機室のUNIX端末でg77かf77かfrtあたりのコマンドあるか試して見てください.
たいてい
g77 source.f -o binary
のようなコマンド引数でコンパイルできます.
0419デフォルトの名無しさん
NGNG一番最悪なのは
担当教官がある言語の使い方しか分からなくてそれを強制される状態
です^^。
しかし、プログラミングの勉強なんか2週間もあれば足りると思うけどなー
ましてやFortran77。
会社だと1〜2週間くらいしか時間くれないよね…
それで出来ない人は無能って感じだし まぁ、危機感の違いかね
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG>という最悪な状態なので、なのにいつも結果をだせしか
>言いません。LAPACKについても分からないらしく.....
キツイかもしれないけど、思うところがあったとしても
「それを言っちゃぁー、オシマイよ!」。
私は、学校の教官です。自分もその中の一人です。
「どうして大学、高専の先生は見てるだけで、何も言わ
ないんだろう?学生とプログラマが直接、接触してしま
うことが問題なのに。一部の先生は見てるはずだけど。。。」
と思うことはあります。(C/C++と違ってFortranの場合、
プログラマは少ないと思いますが)
0422デフォルトの名無しさん
NGNGなんで問題なんすか?
昔はそもそも大学の先生もプログラミングがよく分からなくて(言語の遷移が
早すぎたので仕方ない)、独学で覚えていたけど。いろいろ本も読んだし、
当時のプロの人に聞いたりもした。別に問題があったとは思えないなぁ。
就職関係?
0423デフォルトの名無しさん
NGNG。。。?
0424デフォルトの名無しさん
NGNG0425421
NGNG学生と会社の接触というと、青田刈りを思い浮かべてしまった
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNGそれは教官がFORTRANを使いたいという意欲がないだけでしょう。
本当は他の言語を使いたいけれど学ぶ暇が無いか、効率よく学ぶ方法をしらないか、とっつきにくてなかなか他の言語で授業をできない、とか。
そういうときこそ、教官は高級言語に詳しそうな学生に頼るべきである、と思う。
>>426
あんた、ほかのスレッドでも同じようなこと書いて回っているようだが、何が言いたいのかな?
荒らしというわけでもないがどうしようもない暇人か?
不自由感じて不満ならどうして欲しいか説明するこった。
0428デフォルトの名無しさん
NGNG大学では未だFortran77が主流なのかね
研究なら分かるけど、授業はどうなんだろう
アメリカではプログラミング授業の90%以上がC,C++,Javaになったと聞いた
ただ、Cを使って初心者用セミナーなんかやると、言語の基本を教えるなら
BasicやFortranの方がいいと思った(最初の数時間くらいは)
プログラムエントリが自由な言語は初心者には向かない
0429412
NGNGそういうところも.....あるといえばある。
0430412
NGNG0431デフォルトの名無しさん
NGNG昔は情報系の先生が他学科から要請を受けてfortranを出張講義することが
多かったけど、その当時、学生だった私は「Fortranなんか。。。」という
教官の露骨な態度を感じました(もちろん、情報系の先生がすべてそう、と
いうわけではない)。しかし、私のときの教官には、a=a+1の意味や配列の
概念ぐらいきちんと教えてほしかった、という思いが今でもあります。
421 != 426 だけど、421のことを言っているんでしょうか?
>荒らしというわけでもないがどうしようもない暇人か?
まぁ、そうかもしれませんね。もう書き込みをいっさい止めようかと考え
始めています(といって、あちこちに書き込んでいたわけではない)。
掲示版に書き込むことは結構つらいし。。。
プログラマの方は(一流のプログラマを目指す)新入社員を指導教育される
立場でもあるから、どうしても新入社員の教育という基準から発言しがち
です。でも、掲示版の質問者は全てがプログラマを目指しているわけでは
ありません。(本当を言うと、私を含めて)学校の先生がもっと積極的に発言
したり、質問に回答してくれればな、と思います(でも、無理だろうなぁ。)
0432ま
NGNG僕が扱っている Fortan ソースコードはアメリカの大学で
最近作ったものです。
後、歴史のあるソースだと Fortran を引きずる事が
多いそうです。
もちろん F77 です。抜けられませんね。
まあプログラム言語もさることながらプログラミング書式作法
やプログラムの設計自体にももっと注目されてほしいです。
なんか悪文を読んでいる感じがするソースコードでちょっと辟易。
0433も
NGNGような部門で、そのアプリを面倒を見ているような部署(=うち)では、
プログラムに関する勉強してきたやつなんてそもそも採用していないものだから、
ごくふつーの理系のお勉強をしてきたやつが入れ替わり担当する。
数値解析系プロは、過去の遺産を引きずっているので必然的にFORTRAN
が多いのだが、まぁ、教養課程でFORTRANくらいは触ったことあるはずだから、
大丈夫だろう、ということでプログラムの開発・メンテナンスの仕事を
与えられる。しかし所詮ド素人なので、滅茶苦茶なコードを書き残して、
しばらくすると他部署へ移動と相成る。
結果として、プログラミングをよく知っていればいるほど
恐ろしくて手が出せなくなる、悪い冗談のような、
かといって廃棄もできないプログラムが受け継がれる。
あああああああかきなおしたい
0434デフォルトの名無しさん
NGNG激しく板違い
0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG結構あるようです。
http://www.google.co.jp/search?q=%E8%AC%9B%E7%BE%A9%E5%86%85%E5%AE%B9+FORTRAN77
0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNG0439デフォルトの名無しさん
NGNGスレ違いですよ。フリーのCコンパイラの話題なら↓でどうぞ。
タダで最強!フリーC/C++コンパイラ
http://pc3.2ch.net/test/read.cgi/tech/1035882599/
ところで、Windows用のフリーで使えるForran90/95コンパイラは
>>324 のF言語(?)だけなのでしょうか?
g77 や Watcom などFORTRAN77のコンパイラなら見つかったのですが…。
04401024
NGNGある点Xから無限まで積分で
求めるプログラムを教えてください。
できれば、シンプソンと台形公式(2重積分)の2通り
お願いします。
0441デフォルトの名無しさん
NGNGスレチガイ
宿題手伝いますYO!!
http://pc3.2ch.net/test/read.cgi/tech/1038024989/
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNGFORTRAN 77 で OpenMP を使いたいのですが,
なにか良い書籍かサイトありますでしょうか?
0444未熟者m(__)m
NGNG『F=sin(x)+cos(x)のとき、x=0,45,90,180の値を求めよ』
って問題なんで、こんな感じで作ったのですが
−−−−−−−−
IMPLICIT NONE
REAL A,Y
WRITE(*,*)'A= '
READ(*,*) A
Y=SIN(A)
WRITE(*,*) Y
STOP
END
−−−−−−−−
動きません(T_T)よろしければ訂正もしく新たなプログラム教えてください。
0445未熟者m(__)m
NGNG書き忘れありました。プログラムはfortran77です
0446デフォルトの名無しさん
NGNGRTFM
マニュアルを読みましょう.
0447デフォルトの名無しさん
NGNG課題は、Fを求めるんだよね?
上のソースはその課題の一部だな。
ソースを見る限り、degreeとradianを混同させている可能性があり、
デタラメな値を返すことが予想されるが、動かないなんて事はないと思う。
7カラム目から書いてなかったら跳び蹴りモノだが。
0448未熟者m(__)m
NGNG0449デフォルトの名無しさん
NGNG結局何が原因で,どうしたら解決したのか
書かないのですか?
0450未熟者m(__)m
NGNGこんな感じです↓
−−−−−−−
IMPLICIT NONE
INTEGER DEG
REAL A,C,S,R,X,F,D
WRITE(*,*)'角度は?'
READ(*,*) D
R=3.14159/180.0
DEG=D
X=R*REAL(DEG)
S=SIN(X)
C=COS(X)
F=S+C
WRITE(*,'(2F8.4)') F
END
−−−−−−−
0451デフォルトの名無しさん
NGNGvisual fortranでcpuの最適化は可能ですか?
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNG確かにできたら凄いな(w
「特定のCPUに合わせた最適化」なら
オンライン・マニュアルで「/architecture」を検索しる!
0454デフォルトの名無しさん
NGNG> cpuの最適化…出来たら面白いな…
そう言う研究は、昔からあるよ。
最近は、FPGA が大規模化してきたから、そのうち実用になるかも。
0455451
NGNG/tune オプションを使うと,生成される最適化されたコード形式を指定す
ることができます。特定の実装に合わせてチューニングを行うことで,実
行時性能を向上させることができます。また,特定の目的に合わせてチューニングされたコードは,他の目的では実行速度が低くなることがあります。
とあったのですがこれが何を意味するのかさっぱりわからんのです.
DF コマンド行で実行可能ってあるのですが,DF コマンド行とはなんでしょうか?
0456デフォルトの名無しさん
NGNG# 今手元にVisual Fortranがないのでマニュアルだけ見て説明すると
> DF コマンド行
「DF」はコマンドライン・コンパイラ。
例えばPentium4で実行したときに一番速くなる様にしたければ
コマンド プロンプト(MS-DOSプロンプト)で
C> df /tune:pn4 hoge.f90
の様に「/tune」オプションでCPUの種類を指定してやれば
Pentium4用に最適化してくれる。(他のCPUでも実行はできる)
またそのプログラムをPentium4でしか実行しない場合は
C> df /arch:pn4 /tune:pn4 hoge.f90
の様に「/arch」オプションを使うと、そのCPU特有の機械語命令を使って
最適化してくれる。(互換性のない他のCPUでは実行できない)
Microsoft ビジュアル開発環境なら「Project Settings」ダイアログボックスの
「Fortran」タブにある「Project Options」のところに「/tune:pn4」等と書き加えればいい。
自分が実行したいマシンのCPUが解らない場合はとりあえず
「/tune:host」とすればコンパイルしたマシンに合わせて最適化してくれる(はず)
0457451
NGNGどもありがとうございます.
早速実行してみます.
0458デフォルトの名無しさん
NGNGIDEからでもプロジェクトの設定で、
FORTRAN - Code Generation
FORTRAN - Optimizations
で設定できるかと
0459451
NGNGこんなんざら?
0460デフォルトの名無しさん
NGNG>>421 ではなくて、 一行しかいていない 愚痴っぽい >>426 のことを言っているんですよ。勘違いして余計なことを気にしていますね。余計なこと書かない方がよかったかな。
FORTARANやるんだったらMathematicaやMATLABのほうが使い勝手が良いかなっておもう。
FORTRAN77はソースコードの解読が比較的楽だから、俺は、もしFORTRANで書かれた短いサンプルプログラムを参考にしてプログラムを作れという課題を出されたらすべでCかJavaに書き直す。
0461デフォルトの名無しさん
NGNGFORTRAN77で書かれたプログラムをFORTRAN90,95用のコンパイラーで
コンパイルするにはどうしたら良いのでしょう?
ちなみにVISUAL FORTRANというコンパイラーをつかってるのですが。
0462デフォルトの名無しさん
NGNGそのままコンパイルするだけでOK。
0463デフォルトの名無しさん
NGNGラムと同等(のつもり)のFortranプログラムとの挙動が一致しないんです。厄
介なのは、パラメータによって一致するときとしないときとがあるんです。正
しい結果のときもあるのでCからFortranサブルーチンを呼ぶ方法は大きく間違っ
てはいないと思っているのですが、何か注意すべき点などありますでしょうか?
ヒントをいただけるとありがたいです。コンパイラはgccとg77です。
0464IP記録実験
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0465デフォルトの名無しさん
NGNGひろゆきは帰った?wwwww
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG本当にそうだったらんなコピペされんでも皆消えとるわ。
0468デフォルトの名無しさん
NGNG添字が2つ以上の配列を値渡しとアドレス渡ししている差では?
0469デフォルトの名無しさん
NGNGってゆってたのにー
プンスカ!!
0470デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGqb : 2ch批判要望 削除議論 削除要請 削除整理
live2 : ニュース速報
tmp : ニュース極東 ちくり裏事情 政治思想 Download
厨房! 人権問題 バカニュース 薬・違法
ゴーマニズム ロビー 最悪 少年犯罪
違反の潰し方 ペット苦手 なんでもあり 学歴
0473デフォルトの名無しさん
NGNG博之が取って無くても国が取ってます。ルートサーバー全部傍受されて記録されています。
同時に、国家機関に対してプライバシー等元からありません。
つまり、只の嘘なのです、 裏の利権団体が作り出した虚構 それがこのサイトです。
従って、 残念ですがそういった反社会的な犯罪は
私も自戒しつつ 暴露します。
すいません。
非常に勝手です。
私に力を頂けますでしょうか>皆さん
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNGあるネット関連会社の社長は、
「いずれにしても2ちゃんねるは資金が底をつけば終わり。
あまり知られていないことだが、2ちゃんねる内部関係者によると今、
大手通信会社系が調査費名目で資金提供している。
だが、それが止まれば続けてはいけないだろう」
と証言する。
2ちゃんねるが判決によって力を失った場合、
資金提供の打ち切りも予想される。
http://ascii24.com/news/reading/causebooks/2002/07/01/636911-000.html
0476デフォルトの名無しさん
NGNG変なのが減っていいと思うけどね
チャット状態の板なんて決ってるでしょ
0477デフォルトの名無しさん
NGNG誤爆キターーーーーーーーーー!!おまいもどんなのか知らないのか?
0478デフォルトの名無しさん
NGNG・報告無しで処理された分を省いた=上記例示183の意見に従っています。恣意的なまとめ反対です。
ちなみに名無し★で1年間強活動していました。
・まとめが好きで好きでたまらないまとめ大好きっ子だった=概ね同意です。
http://qb.2ch.net/test/read.cgi/saku/1038125433/8
・まとめをマメにしてみましょう。
★T氏に確認した時に「コツコツ頑張ってるなぁ。」との お言葉を頂きました。
私はつい先日までリアル中卒2年間引きこもり中3の時酒乱の父の暴力で
リコーン母親家に引き取られました(マジ で頭が悪いので
(なぜか某学士号+国家試験数個持っている罠+未だに司法試験浪人中な罠)
お指導をお待ちしております。m(_ _)m。
0479463
NGNGありがとう。2次元配列を渡してたんだけど、添字の順序が違うのねえ…。
気がつくまで何日も悩んでいました。鬱だ。
ところでここってFortranスレですよね?
0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNG逮捕されるような書き込みをする奴は僅かだろうし
荒らしはどうせ回避策をちゃんと取って来るし
2ちゃんねらは飽きっぽいので今までと変わらんと思う
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNGP2Pとかに潜るんでしょう
0485デフォルトの名無しさん
NGNGということはアドレス渡しですか?
C<>Fortran の多次元配列渡しで
添字順序が違うとなると、添字順序の
マニュアル最適化は面倒ですね。
0486fortrun初心者
NGNGtxtファイルを読み込んでくれず、エラーが出てしまい
ます。こんなエラーが出てきます.
forrtl:severe (256):unformatted I/0 to unit open
for formatted transfers,unit 2,file d:\E\debug\test.txt
プログラムは、下に書きます。
INTEGER A,B,C,D
OPEN(UNIT=2,FILE='test.txt')
READ(2) A
READ(2) B
READ(2) C
D=A
CLOSE(2)
OPEN(4,FILE='D:REN.TXT')
WRITE(4,*) D
CLOSE(4)
STOP
END
初心者の自分にお教え下さい。宜しくお願い致します。
0487デフォルトの名無しさん
NGNG>1 :ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ :03/01/08 17:13 ID:???
>そんなわけで、qbサーバでIPの記録実験をはじめましたー。
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/l20
IP記録実験PART2
http://qb.2ch.net/test/read.cgi/accuse/1042020193/l20
これまでのあらすじは あたりに誰かお願い。
0488デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0489デフォルトの名無しさん
NGNGVisual Fortran のヘルプで Read を引いてみて下さい。
っていうか、それくらいしないとこれから苦労しますよ。
まあ今回1回だけの宿題のつもりなら調べる気は
起きないでしょうが。
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNG全レスです。
0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNGこいつ、気合い入ってるな
IP取られてるのになぁ・・
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNGその期間はセキュリティーの問題上公開されておりませんでした。
今でもそうですが。
その情報をもっているのはISPしか存在しない。
よって答えは一つしか無い。
0501デフォルトの名無しさん
NGNG5秒ほど待てって…
そんなことしてたらテンプレに割り込みがイパーイ入っちゃう(´Д⊂グスン
0502山崎渉
NGNG0503デフォルトの名無しさん
NGNG0504山崎渉
NGNG0505デフォルトの名無しさん
NGNGコンパイルでエラーは無いんですが,
動かすと途中の何も問題ない箇所で勝手にエラーが出て止まってしまうんですが…
素人な質問ですいませんけど…
0506デフォルトの名無しさん
NGNG「エラーが出て止まってしまうんですが」とだけいわれても答えようがない。
どんなプログラムなのかとかエラーメッセージの内容、使った処理系など
が解らないと…。
0507デフォルトの名無しさん
NGNG0508デフォルトの名無しさん
NGNG使った処理系やどんなプログラムというとどういう風に答えれば…
エラーメッセージは
run-time error M6201: MATH
- sqrt:DOMAIN error
・
・ ここらへんはファイル名がとかが表示されてます
・
Incrementally linked image--PC correlation disable
となってます.
ネットで検索してみても,このエラーの意味もよく分からない素人なんで…
たぶん,私の説明内容だと全然分からないかと思いますが…
スイマセンです.
0509デフォルトの名無しさん
NGNGちゃんとエラーメッセージに原因が書いてあるじゃないの…。
SQRT関数の引数が 0より小さくなってる箇所があって、
実行時エラーで止まってる。
もう一度プログラムを見直した方がいいよ。
0510デフォルトの名無しさん
NGNGありがとうございます.
そういう意味だったんですか…
COMPAQのFOTRANのページや本を見ながら何のエラーか調べてたんですが,
よく分からなくて…
プログラム見直してみます.
0511デフォルトの名無しさん
NGNGエラーナンバー出てるから,もし電子媒体のマニュアルあるのならば
M6201で検索すればいい.
0512デフォルトの名無しさん
NGNG数値誤差で微妙に負になってるってことがあるね。
0513デフォルトの名無しさん
NGNG日本語のマニュアルあるのは知ってる?
ttp://www.compaq.co.jp/products/dvf/visual/jhelp.html
0514510
NGNGプログラムと格闘した結果,なんとかミスを探し出して,動かすことができました.
いろいろお世話になりました.
>>513
ええ,知ってました.
それと本を見ながらやってたんですが,M6201のエラーが書いてなくて…
もっとFORTRAN勉強せねば・・・
0515デフォルトの名無しさん
NGNGランタイムエラーでは、引数範囲、ゼロ割、
仮引数の配列サイズ>実引数の配列サイズが主なものかな。
0516デフォルトの名無しさん
NGNGメインプログラムの配列宣言で、配列のサイズに記号定数を使用できること以外に
なにかあるんですか?
イマイチピンとこない。
0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG本当知らん
ふぉんとしらん
フォートラン
0519デフォルトの名無しさん
NGNG・物理定数や換算係数などの文字通り「定数」として使う。
S=3.1415926536D0 * D**2 / 4.0D0 → S=PI * D**2 / 4.0D0
・プログラムを書いた本人しか解らない(本人でさえ時間がたつと忘れてしまう)
「魔法の数字」をなくすために使う。
SIZE = 80 * 25 → SIZE = SCRN_WIDTH * SCRN_HEIGHT
>>517
コンパックに頼み込む。(今はHPか)
0520デフォルトの名無しさん
NGNGパラメータの設定を別個のファイルに置いといて、
Include で各関数で読み込むが吉。
0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNGこんなのがある(使ったことないけど)
ただし、変換先はFortran90
c2f
ttp://www.unics.uni-hannover.de/rrzn/gehrke/c2f.html
0525デフォルトの名無しさん
NGNGZ(x)=Σ[1,∞]1/n^xと定義する。nについての無限和をもっともらしい
上限(理由を議論する)を決めて有限和とすることにより、2≦x≦4
の範囲でZ(x)のグラフを書きなさい。またこのとき数値的に
∫[2,4]1/Z(x)dxをの値を求めよ。
0526525
NGNGreal n,x,s,i
write(*,*) 'n=?'
read(*,*) n
write(*,*) 'x=?'
read(*,*) x
s = 0
do 100 i = 1,n,1
s = s + 1/i**x
100 continue
write(*,*) 'ans=',s
stop
end
0527デフォルトの名無しさん
NGNGふ〜ん、それで。
0528デフォルトの名無しさん
NGNGFORTRAN77、懐かしいねぇ。ACOS77
0529デフォルトの名無しさん
NGNG0530山崎渉
NGNG0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG形状引き継ぎ配列を引数にもつ副プログラム
をCやFortran77から呼ぶことはできるのでしょうか?
Fujitsu Fortranを使っていますが、このことには触れられて
いないので教えてください
0535デフォルトの名無しさん
NGNG計算機固有の問題である桁落ちを考慮して、
逆数の足し算をした方が良いように思われ
0536デフォルトの名無しさん
NGNGline 573 an endfile record was detected in a READ statement...というエラーが出て動きません。
読み込みファイルのエラーのようなんですが、全くの素人なものでどうすれば動くか教えてください。
0537デフォルトの名無しさん
NGNG∵.☆:*・∵.゜.☆.・∴.,★ :*・∵.:☆.。.:*・:* ・∵.+:*・∵.゜ http://jsweb.muvc.net/index.html
★☆★幸福になりたーい!!★☆★
0538デフォルトの名無しさん
NGNGの最後で読み込みができないということ。
(例)
HOGE.TXT
--------
10
20
30
PIYO.F
------
INTEGER I,CNT
OPEN(99,FILE='HOGE.TXT')
DO CNT=1,4
READ(99,*) I
END DO
などと書くと、ファイルには3整数しか書いてないのに、4回読み込んでいる
ので、このエラーが起こる。
すでに、動いていたプログラムのようなので、
1。適切な入力ファイルであるか?
2。UNIXとDOSの改行コードの違いのために、そのままファイルを持ってくると
一行と解釈してくれないかもしれない(DOSのFORTRANを使った経験がないので
確かではないですが。)
を確かめてみるとよろしいのではないでしょうか?
0539デフォルトの名無しさん
NGNGfujitsuFortranてlinuxじゃなかったっけ?使ったことも見たこともないんですが。
まさかvppFortranじゃないよね、PCって書いてあるし…
>>587の人は情報が少なすぎますよ。せめてREAD文周りをさらしてみるとかしないと。
まあ、読ませるファイルがぶっ壊れてる/間違ってる可能性が高いと思われますが。
0540536
NGNGWindowsのfujitsuFortranですが
改行コードの変え方がわからずどうしようもないので
fortranをはじめからすこし学習することにしました。
ありがとうございました。
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNGブラウザで開いて、テキスト形式で保存するのが手っ取りばやい、
後は、どっちも読めるエディタを使うとか。
0543デフォルトの名無しさん
NGNG今fortran90でプログラムしてるんですが、実装以上のメモリを使おうとするとかってにHDD上に仮想メモリとるんですか?
それともエラーになっちゃいますか?
今allocateでたくさん確保しようとしてるので;;;
どうかおねがいします。
0544デフォルトの名無しさん
NGNGOSが仮想メモリをサポートしていれば普通、仮想メモリを確保しに行くでしょう。
どこまで確保できるかはOSと処理系によると思いますが。
0545デフォルトの名無しさん
NGNGレスありがとうございます!!
OSかくのわすれてました;;;win2000でpentium4です。
やはり仮想メモリいきますよね;;;
もし仮想メモリにいってほしくなかったらwin2000の設定で仮想メモリ無しにするしかないのかな・・
0546デフォルトの名無しさん
NGNGコンパイラは何?
0547デフォルトの名無しさん
NGNG行列の計算が簡単に書けるし、ちゃんと構造化できる(w
昔習ったFORTRAN77とはえらい違いだ。
でも90/95の普及率ってどんな感じなんだろう。
大学の研究室とかだと、未だにF77が現役なのかな?
0548デフォルトの名無しさん
NGNGフリーの Fortran90/95 のコンパイラってある?
これが無いからあんま普及しないってのはあるのではないかと
思ったり思わなかったり。気軽に試してみる事が出来ないって
のは結構痛い所だと思うんだけど・・・
0549548
NGNGげ、最近ってこんなのあるんだね・・・知らなかった・・・
g77 が g90 になればもちっと流行ると思うんだけど、
コレとかの知名度が上がればまぁそれなりに普及するんじゃないかなぁ。
0550デフォルトの名無しさん
NGNG>>549 のFコンパイラを試してみたのですが、
ダウンロード・解凍して、binディレクトリにPATHを通したのですが
コンパイルしようとすると
Cannot create output file: No such file or directory
と出てコンパイルできません。
MinGW同梱版のほうも試してみたのですが、同じでした。
なにか他に設定がいるのでしょうか?
OSはWindows XP Homeです。
0551549
NGNGLinux では使えたんですが・・・
という事でcygwin版をインストールしてみました。
とりあえず、F.exeのあるパスの一個上に tmp というディレクトリを作ってみ
るとそのエラーは出なくなると思います。
# ただ、リンカエラーが出るなぁ、ウチだと・・・
とりあえずこれって c へのトランスレート& gcc でコンパイルをしてる
みたいですねぇ・・・
他に何かフリーのfortran90/95のコンパイラってないんでしょうか?
0552549
NGNGどーりでデカいと思った・・・
で、Mingw版の方はpathの設定と tmp ディレクトリの相対位置さえ合ってれば
無事動きました。
ご参考になれば。
0553550
NGNGご指摘の通りtmpディレクトリを作ってみたところ、使えるようになりました。
ありがとうございました。
早速、いくつか小さいプログラムをコンパイルしてみたのですが、
必ず変数宣言が必要だったり、.EQ. などの演算子が使えなかったり、
シングルクォートでくくった文字列が使えなかったりと
全てのFortran90/95のソースがそのままコンパイルできる訳ではないようですね。
とりあえず、自宅でFortran90/95がコンパイルできる環境が手に入ったので
しばらくこれで遊んでみます。
0554デフォルトの名無しさん
NGNGなるとは思わなかったな(藁
0555デフォルトの名無しさん
NGNGSimple is best. ってことだな。
0556549
NGNGってのもあるらしいですなぁ。早く完成しないかなぁ。
0557質問です
NGNGフリーのg77をつかっているんですが、型宣言でDoubleとしてるんですが
繁栄されないんです。フリーだからこんなもんなんですか?
0558デフォルトの名無しさん
NGNGどういう状況なのか書かれていないので、一般的な回答しかできないが
1. 書式なしで結果を出力している。(WRITE(*,*) )
→書式を指定して、結果を確認してみる。
2. 単精度の定数を代入している。(a=3.1415926536)
→a=3.1415926536D0 等とする。
3. 実は倍精度変数を使用していない。(変数名の綴り間違い)
→変数名が正しいか確認する。
コンパイラを疑うより先に、まず自分自身を疑え。
0559デフォルトの名無しさん
NGNG> コンパイラを疑うより先に、まず自分自身を疑え。
いい言葉だねぇ。
ついでに、ユーザーには
プログラムのバグを疑うより先に、まず自分の入力データを疑え。
と言いたい。
横レスすまん。
0560デフォルトの名無しさん
NGNGDouble Precision?
0561デフォルトの名無しさん
NGNGしかし、ユーザーからは、
ユーザーの誤入力を咎めるよりも、まずは誤入力を誘うような設計を何とかしれ。
と切り返される罠。
0562デフォルトの名無しさん
NGNG0563質問です
NGNGimplicit none
double precision x,y,amean,gmean
write(*,*) 'input x , y;'
read(*,*) x, y
amean = (x+y) / 2.0D+0
gmean = (x*y)**0.5D+0
write(*,*) 'Artihmetival mean =', amean
write(*,*) 'Geometric mean =', gmean
end
たとえばなんですが、このプログラムでx=4.1,y=6.5 と入力しても
出力が5.3と5.1623638となるんです。
0564質問です
NGNGうえのをwrite(*,'(d25.16)') で指定したらいけました。
ごめいわくおかけしました
0565デフォルトの名無しさん
NGNGimplicit noneだとかdo-end doだとかdo while-end doだとか90の要素満載です。
完全にFORTRAN77で書けっていわれたら泣くだろうなあ。
0566デフォルトの名無しさん
NGNG賛成。
また、データの誤入力を誤入力と指摘できないプログラムは、
そのこと自体がバグだと思うんですね。
Fortranは、ユーザ=プログラマであることが多いので、
この辺りの設計がおざなりになりがちだと思う。で、他の
人間が使い出すと途端に問題が噴出したりして、結局「なんだよ
この使えねえプログラムはよぉ」ってことになるんだよなあ。
0567デフォルトの名無しさん
NGNG同意。77だけではきつい。
最近は制御文のみならず
IF (ASSOCIATED(TARGETOBJECT)) THEN
TEMP => TARGETOBJECT
てなソースを躊躇無く書いている自分に気づく。
どうせ自分しかソース触らないから、まぁいいか
0568デフォルトの名無しさん
NGNGユーザのデータエラーのみならず、エラー処理あたりって、
意外にいいかげんだったりするんですよね。
統括的なエラー処理の手法(ログシステム、リターンコードの規約などなど)
がまず確立されていて、それから本体のコーディングに入れれば
まだ良いんだろうけど、実際には後付けの場合が多いから、
なんとなくいいかげんになりがち。
結局、ユーザーから文句が来て、デバッガレベルでエラーの原因
を探す羽目に。
「さっきの異常終了の件ですが、データが2カラムずれてます」
0569質問です
NGNGすんません。
g77の奴って4倍精度はないんでしょうか?
0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNG出来ます。
FORTRAN77で良ければ g77, Salford, Watcom など
フリーの物も配布されています。
>>569
手元のMinGW GCC 3.2.1 ではサポートされていませんでした。
0572質問です
NGNGありがとうございました。
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGLinuxならあるよ
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNGint *fluid;
fscanf(fp1,"%*s %d",fluid);
上のをFORTRANで書きたいんだけどどうやるんス?
よろしくおながいします
0580デフォルトの名無しさん
NGNGEND
0581デフォルトの名無しさん
NGNGgetargとかiargcとか使うのに -Vaxlibオプションつけんの面倒だけど
(設定の仕方?)、いい!90はいい。とりあえず型宣言は慣れたから次は
whereとかselsect caseだな(ただだから使えないとかないですよね?)。
77がだめだとは思わないけど、90に慣れたらおそらく離れられなくなりそう。
0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNGf2cで作成される*.cソースは、do_fio()等の関数のように、f2cライブラリに依存する内容になってしまいますが、
f2cライブラリをリンクせずに*.cに変換する簡単な方法Orソフトウェアはないのでしょうか?
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNGやっぱりそれしかないですか。。。ありがとうございます。
GOTOだらけの上、ノーコメントなソースの変換は鬱になります。。。
0588デフォルトの名無しさん
NGNG何のまえぶれもなく1234 continueとかでてくんの?ん、これってdoループの
終端文? それともgo toとのコンビでループさせてんの? それともどっかから
とんでくんのか? だとしたらどっかにdo 1234 i=1,nとかgo to 1234が...ない...
なのでFortranじゃなくてFORTRANができるヒトはいやだ。
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNGまあ、そういう方々はたいていプログラムを作ることが本業ではなく
「正しい計算結果さえ出ればそれでよし」という考え方でやってますからね。
そういえば昔、学校の先生が
「プログラムはあまり長くなると見難くなるから、メインプログラムが
1000行位になったらサブルーチンを使うといいよ」
って教えてくれたっけ。
あの先生、まだ数値計算の授業教えてるのかなぁ…。
0592デフォルトの名無しさん
NGNG「本物のプログラマー」気取りだからさ。
0593デフォルトの名無しさん
NGNGきっと COME FROM文を使ってるんだよ。
0594デフォルトの名無しさん
NGNG自分も、昔の先輩が組んだソース見て、「なんでこんなに読みにくいプログラムの組み方してる
んでしょうね?」って聞いたら、「昔は、メモリの節約や実行速度の向上を頭に入れて作ってい
たからね」と言われました。
なんだか、いいくるめられたような、だまされたような気分です。
0595デフォルトの名無しさん
NGNGマニアだな
0596デフォルトの名無しさん
NGNGIF (A .EQ. B) GOTO 12234
A = C
IF (C .EQ. D) GOTO 4989
C = A
4989 CONTINUE
B = C + A
12234 CONTINUE
A = SUB(5)
みないなソースは日常ですが何か?
GOTOの行き先がGOTOなんて普通です.
あ〜〜〜読みにくいよ!教授!
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG何かいいエディターないですか?
色がカラーじゃないと見にくいんです
0599デフォルトの名無しさん
NGNG秀丸でも使ったら?
変色用ファイルダウンロードして
0600デフォルトの名無しさん
NGNGあんな高いものを使えと言うのですか!?
0601デフォルトの名無しさん
NGNGそんなに高いかなぁ.学生?学生とかフリーじゃなかったっけ?
やなら,Windows用のemacsってあるだろ.あれ使ったら変色するんじゃね?
0602デフォルトの名無しさん
NGNGmaedow
0603デフォルトの名無しさん
NGNG私はここでセフレにしてもらいました♪一緒にH♪ワリキリと☆エッチ♪
■http://pink7.net/yhst/■
0604デフォルトの名無しさん
NGNGFORTRAN77の固定形式のソースを編集するときは
CPad for Salford FTN77 なんかが便利。
http://www.vector.co.jp/soft/dl/win95/prog/se153699.html
>>601-602
emacs系のエディタにもFortran modeがあったね。
学生の頃以来使ってないから使い方忘れちゃったけど(w
キーワードを色付きで表示させたいだけなら
フリーのエディタが沢山あるから色々試してみて
自分に合った物を使えばいいんじゃない?
#そうゆう自分は最近Visual FortranのIDEばかり使ってたりして。
0605デフォルトの名無しさん
NGNGau! BufRead,BufNewFile *.f95 let b:fortran_do_enddo=1
au! BufRead,BufNewFile *.f90 let b:fortran_do_enddo=1
なんて設定しておけば f77 以外でも安心。
0606598
NGNGサンクス
0607デフォルトの名無しさん
NGNG72-73カラム目にかかったとき、文字化けするのは
何とかならないだろうか?
0608デフォルトの名無しさん
NGNGプログラムカード売ってるお店なんてもうないだろうなぁ
0609デフォルトの名無しさん
NGNGボスはそう言って黄ばんだN○CのFORTRANコーディングシートを棚から引っ張り出し、
僕に渡してくれました。
一月ほど前のことです。
冗談かと思ったのですが、顔が大真面目でした。
0610デフォルトの名無しさん
NGNGあれってどんな使い方するの?
プログラミングに影響するわけ?
0611デフォルトの名無しさん
NGNG昔のコンピュータはね、高くて巨大でしかも遅かったからみんな、
カードをもって順番に使ってたの。
そのための整理券なんだよ。
とりあえず、こんなんでいい?
0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNG消しゴムで修正できると言う甘えがバグを作るんだ。
本物のプログラマは一発で正しいプログラムを書くから、穿孔パンチでいいんだ。
0615山崎渉
NGNG0616デフォルトの名無しさん
NGNG0617sage
NGNG0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG重大関心事で、レスがプログラマ板風になるのは仕方ないと思われ。
0620デフォルトの名無しさん
NGNGだったら、プログラマ板に立てればいいんじゃない ?
0621山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0622山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0623デフォルトの名無しさん
NGNGhttp://g95.sourceforge.net/
こんなのがあるんでつね。まださなぎ状態(pupal state)とのことでつが。
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNG早く絶滅して欲しいと思ってますが、何か?
0626デフォルトの名無しさん
NGNGこんなクソ言語使わされる身にもなってくれ。
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNGそれ以外の言語は糞。
0629デフォルトの名無しさん
NGNGFortran95を使うべし。
もしくはF言語。
0630デフォルトの名無しさん
NGNG0631デフォルトの名無しさん
NGNG業務だとね.......
せいぜい、密かにじわりとFORTRAN90/95へ移行とか
固定フォーマットで書けば、どうせだれにもわからん
0632デフォルトの名無しさん
NGNGどーも検索してもロクに引っかからなくって、引っかかるのは
意味不明な記述のみでして…
0633デフォルトの名無しさん
NGNGimplicit none ! implicit は諸悪の根源なので無効化
intrinsic dsin ! 組み込み関数は intrinsic 宣言
double precision bar ! 型チェックのため、一応戻り値の型を指定しておくのが良い
external bar ! 自分で定義した関数は external 宣言
call f(dsin) ! 普通に関数に渡す
call f(bar)
stop
end
! 自分で定義した関数
double precision function bar(a)
implicit none
double precision a
bar = dsin(a)
return
end
subroutine f(func)
implicit none
double precision func ! 普通に戻り値の型を指定しておいて、
double precision pi
parameter(pi = 3.141592653589793D+0)
write(*,*) func(pi) ! 普通に呼べばよい
return
end
! 関数でなくサブルーチンの時は戻り値の型の指定は不要
0634デフォルトの名無しさん
NGNGFortranは構文が単純ゆえ、自動ベクトル化コンパイラが作りやすい
→数値計算用途では最速プログラムを作りやすい(かけた 人×時間 比較)
→市販のバカ高シミュレータは殆どFortran
→よって、Fortran嫌いなプログラマは多いけど滅びない
0635デフォルトの名無しさん
NGNG間違ってる。
Fortranner の洗脳を受けた危険な状態である。
これが真実。
昔はみんな Fortran を使っていた。
→ 研究者は時間がもったいないので他の言語を覚えない。
→ 新しく入ってくる学生はその人たちに Fortran を教えられる。
→ よって、Fortran 嫌いなプログラマは多いけど滅びない。
他の言語覚える気ないもん。みんな。
嫌んなるわ。ホンマ。
> Fortranは構文が単純ゆえ、自動ベクトル化コンパイラが作りやすい
C でもある。
> 数値計算用途では最速プログラムを作りやすい(かけた 人×時間 比較)
C で十分。
Fortran は C よりデバッグが面倒だし、
バグの起こりにくいプログラムを作りにくい。
> 市販のバカ高シミュレータは殆どFortran
ソフトが Fortran で書かれていようが、
自分で作るプログラムまで Fortran にする必要もない。
0638634
NGNG大意 了解。 要するに研究者がメンドクサガリなのねw
一部疑問に再質問スマソ。
>> Fortranは構文が単純ゆえ、自動ベクトル化コンパイラが作りやすい
>C でもある。
VectorCとかパソ用の結構最近のしか知らないんですが
スパコンとか数値計算用WS、最近だとクラスタ用とかでは、何処からでてます?
>> 市販のバカ高シミュレータは殆どFortran
>ソフトが Fortran で書かれていようが、
>自分で作るプログラムまで Fortran にする必要もない。
MARK とか STAR-CD 使ってて、モデルを細かくいじるときは、
Fortranでサブルーチン書かされてるけど、あれ、数値解析担当(ジジイ)が
C嫌ってるだけでCでも書ける?
0639635
NGNG>スパコンとか数値計算用WS、最近だとクラスタ用とかでは、何処からでてます?
使う機会が無いのであることしか知らない。
スマソ。
>C嫌ってるだけでCでも書ける?
コンパイラさえあればどんな環境でも書ける。
C から Fortran の関数を呼べるし、その逆も出来る。
関数とかの名前が変わることがあるけどね。
前か後ろかにアンダースコア '_' をつけないといけないことがある。
あと、Fortran は参照渡しなんで、
C から使う場合は全部ポインタで受けるべし。
ただ、複素数を使う場合だけは Fortran の方が便利かもね。
それも C++ を駆使すれば何とかなるかな。
0640634
NGNG>ただ、複素数を使う場合だけは Fortran の方が便利かもね。
ああ、それ忘れてた。 結構大きい。
>それも C++ を駆使すれば何とかなるかな。
「駆使」しなきゃなんないよね?
特にシミュレータのサブルーチン書きなんか、ジジイと戦うときに
結構大きなマイナスになりそう
#妥協点はFortran90? 、、、今はFortran77を強いられているが、、、(鬱
0641デフォルトの名無しさん
NGNG教授曰く「研究機関ではこれが主流」
0642bloom
NGNG0643デフォルトの名無しさん
NGNG> >> Fortranは構文が単純ゆえ、自動ベクトル化コンパイラが作りやすい
> >C でもある。
>
> VectorCとかパソ用の結構最近のしか知らないんですが
> スパコンとか数値計算用WS、最近だとクラスタ用とかでは、何処からでてます?
知ってる範囲のスパコン用ではFortranコンパイラとC++コンパイラは構文解析の
部分を除けば同一です。それで最適化オプションなんかは同じで、性能も機能も
ほとんど変わらんと思います。そう考えるとどちらのコンパイラも手がけてるところなら
問題ないのかも。
> 大意 了解。 要するに研究者がメンドクサガリなのねw
まあそうなんですけど、大規模計算に限ればHPFのおかげでFortranのほうが生産性は
高いと思います。
>>641
Fortran95で廃止された文法など古い文法を使うと最適化がかかりにくいコンパイラが
最近はあるらしいのでいいんでは?
あ、そういうことではないか。
0644デフォルトの名無しさん
NGNG最近では complex クラスがサポートされてることが多いので、
そうであれば complex クラスで受ければ何も問題ないです。
C++ ならポインタで受けずとも参照で受ければいいので、
C より使いやすいです。
extern "C" つけないといけませんが、そんなことは瑣末なことです。
ただ、古いコンパイラだと complex がサポートされてないことがあるので、
面倒なのはその時ですね。
まぁ、その時は complex ヘッダを適当なところからパクってきて、
それを使えばいいでしょう。
テンプレート使って実装してあれば、ヘッダファイルだけあれば使ます。
ライセンス関係まずければ自分で実装しないといけませんが、
どうせ実装法を変えようが無いので
適当にプログラミングの癖を変えておけばいいでしょう。
0645デフォルトの名無しさん
NGNGprogram test
call cfunc((1D0, 2D0))
stop
end
// b.cpp
#include <iostream>
#include <complex>
using namespace std;
// Fortran での識別子の内部名は C とは違うことがある
#define FC(name) name##_
extern "C" // ここで宣言する関数名は C の命名規約で扱うことの宣言
{
// 本当はちょっと危険な香りのするコードなんですが、
// complex が仮想関数を持ってたり、
// real と imag の定義順が逆だったりという変な実装でなければ
// 大抵大丈夫です。
void FC(cfunc)(complex<double>& comp)
{
cout << comp << endl;
}
}
# コンパイル・リンク・実行
g77 -c a.F
g++ -c b.cpp
g77 a.o b.o -lstdc++
./a
(1,2)
0646デフォルトの名無しさん
NGNGたしかに90が出てから並列化がカスタマイズできるよになったけど
他言語はそうはいかないのか?
0647デフォルトの名無しさん
NGNGを落としてみたんだけど、コンパイルできません。
XPに対応してないなんてことありますか?
WinMeでやってみたら問題なく動いたのですが。
0648デフォルトの名無しさん
NGNG>>634-644あたりの話題が参考になるかと。
>>647
SalfordのFTN77 Personal EditionならWin 2k/XPで使ってます。
どの様な問題でコンパイルできないのかわからないけど、
もう一度、設定等を見直してみては?
0649デフォルトの名無しさん
NGNG2000、XP上でユーザー名に日本語使ってると
海外産ソフトでトラブリがちかと
0650デフォルトの名無しさん
NGNGなるほど。。。
思いっきりユーザー名日本語だわ。
英語にして試してみます。
サンクス
0651デフォルトの名無しさん
NGNG77だとか90ってのはどう違うの?
途中に.EQ.が使えないなんてレスが
あったような気がするけど、じゃイコールは
どうすりゃいいの?
0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNG.LE. <=
.EQ. ==
.NE. /=
.GT. >
.GE. >=
0654デフォルトの名無しさん
NGNG他にも違いは沢山あるので、詳しくは↓を読んでちょうだい。
http://www1.jpn.hp.com/products/software/development/dvf/docs/vf-html/cvf_frame.htm
http://www1.jpn.hp.com/products/software/development/dvf/docs/vf-html/Lr/lr01_04.htm
0655デフォルトの名無しさん
NGNG649に追加
http://www1.jpn.hp.com/products/software/development/dvf/visual/jfaq.html
を読んでみて
だめだったら知らん
0656デフォルトの名無しさん
NGNGありがと、今度試して見る、遅レス スマソ
0657デフォルトの名無しさん
NGNG関数がどうも馴染めん
っつーか再帰使えんならハノイとかどうやって書くんだ?
0658デフォルトの名無しさん
NGNG別に、自分でスタック管理すればハノイの塔くらいはできるだろ。むかしのBasicでもできたし。
0659デフォルトの名無しさん
NGNGFORTRAN専用スレッド
http://pc.2ch.net/test/read.cgi/prog/1052290911/
0660デフォルトの名無しさん
NGNG0661動画直リン
NGNG0662デフォルトの名無しさん
NGNGFortran90 だと使えるみたいね。
0663デフォルトの名無しさん
NGNGmodule hanoi_module
public :: hanoi
contains
recursive subroutine hanoi (number_of_disks, starting_post, goal_post)
integer, intent (in) :: number_of_disks, starting_post, goal_post
integer :: free_post
integer, parameter :: all_posts = 6
if (number_of_disks > 0) then
free_post = all_posts - starting_post - goal_post
call hanoi(number_of_disks - 1, starting_post, free_post)
print *, "Move disk", number_of_disks, &
"from post", starting_post, "to post", goal_post
call hanoi(number_of_disks - 1, free_post, goal_post)
end if
end subroutine hanoi
end module hanoi_module
program test_hanoi
use hanoi_module
integer :: number_of_disks
number_of_disks = 4
call hanoi(number_of_disks, 1, 3)
end program test_hanoi
0664デフォルトの名無しさん
NGNG読みにくい。秀丸でto lower case 使ってソースを小文字にしても、
このスレのリンクにあったf90コンパイラで動くんだろか。
Javaにリプレースをたくらんでいるのでf2jで全部Javaに変換した方が早いかな?
0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNGy argument, a COMMON block object, or an object accessible through host or use a
ssociation [N]
integer::I,N,xG
-----------------^
: Error: An automatic object is invalid in a main program
. [C]
real,dimension(N)::c
-------------------------^
誰かこのエラーの意味をおしえてくれませんか?
0668デフォルトの名無しさん
NGNGそのエラーは
「Nは宣言式にしやがれゴルァ」
という意味です。
http://www1.jpn.hp.com/products/software/development/dvf/docs/vf-html/Lr/lr04_01_07_02.htm
0669デフォルトの名無しさん
NGNGIF文使った場合には絶対にELSEが必要なのでつか??
0670デフォルトの名無しさん
NGNGFORTRAN に限らず、IF に対して絶対に ELSE が必要な言語って見たことない。
0672デフォルトの名無しさん
NGNGFORTRAN95の文法にはびっくーり。時代は進んでしまったのね。
0673デフォルトの名無しさん
NGNGオイラも、研究室でのシミュレーション解析にはFortran90
個人的に使う小道具にはC++使ってるし…
時々、構文がごっちゃになって、エラー探す時に困ったりもするが(w
平気でC++のプログラム書いてる途中に、integerとか.and.とか書いてて、
コンパイル時にエラーって起こられ、なぜだ〜って一瞬本気で思った
時は、マジでこりゃあかんって思った(w
0674デフォルトの名無しさん
NGNGコンパイラはVisual FORTRANを使います。
本屋に行くとFORTRAN77と90がありますが、どの程度違うものなのでしょうか?
過去の先輩の遺産を引き継ぐことになっているのですが
77と90はどっちを勉強した方がいいのでしょうか?
0675デフォルトの名無しさん
NGNGFortran90 … 数値計算向けの普通の言語
FORTRAN77 … オブジェクト指向どころか構造化プログラミングも無用の匠の世界
過去の遺産を受け継ぐのならたぶんFORTRAN77だろうから
とりあえず
可能ならば少しずつF90化していきましょう。
幸運にも先輩がFortran90を使って書いていたら
F O R T R A N 7 7 の こ と は 忘 れ な さ い
0676675
NGNG×とりあえず
○とりあえずFORTRAN77を覚えてから
0677デフォルトの名無しさん
NGNGというわけで、
C++ から Fortran の関数/サブルーチンを使えばいい。
もちろんその逆も。
なんちゃって。半分本気だけど。俺はそうしてるし。
それはともかく、正直構造体がないのは辛いんで、
Fortran90(または95)覚えた方がいい。
Fortran90 を覚えとけば
FORTRAN77 も読めるんで損はないっしょ。
0678山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNGのFCompilerを使って
http://www.math.sci.hiroshima-u.ac.jp/~daishin/keisanA/1998/fortran.html#f2-2
のプログラムをtest.f90としてコンパイルしてみようとしたんですが
コメントのところでエラーがでたのでコメントをはずしてみたのですが、
integer i,xがある1行目でいきなり
E:\test\fortran>f test
Error: test.f90, line 1: syntax error
detected at <end-of-statement>@INTEGER
[F fatal error termination]
のようなエラーがでます。
F77には対応していないのでしょうか?
0681デフォルトの名無しさん
NGNGFortram95から主にFORTRAN77との互換性のために残られている
機能を取り除いたものがF言語。
よってFORTRAN77のソースはそのままでは動かない。
F(Fortran90/95)用に書き直すと以下のようになる。
! Example
!
program example
implicit none
integer :: i, x
do i=1,10
x = 1.0 / real(i)
if (x < 0.5) then
exit
end if
end do
print *, "This program is an example. This program&
& is an example"
end program example
0683デフォルトの名無しさん
NGNGVC++6.0 professional の math.h の sin, cos では25秒
Visual FORTRAN 6.6Bの組込関数 DSIN,DCOSでは16秒
とFORTRANの方が少し速い。
両方ともPentium内部のコプロセッサ使ってると思うけど
どうして差がでるの?
最後の手として、VC++側からFORTRANのDCOS, DSINを無駄なく呼び
出す方法ってありませんか?(そこまでやるか!と我ながら思うけど)
VC++側で
extern "C" {
double& _stdcall DSIN(double& x);
double& _stdcall DCOS(double& x);
}
としただけではリンカエラー
error LNK2001: unresolved external symbol _DSIN@4
error LNK2001: unresolved external symbol _DCOS@4
が出てしまいます.
0684大坊
NGNGどうやったらいいのですか?誰か教えて下さい。
0685デフォルトの名無しさん
NGNGライブラリは指定してるんか ?
0686デフォルトの名無しさん
NGNGDSIN、DCOSなど数学組込関数がVisual FORTRANのどのライブラリに入って
いるかがわからんのです。
Visual Studio上ではVC++とVisual FORTRANのソースコードを共存させて
コンパイルできますが、DCOSやDSINを呼び出してその値を返す関数副プロ
グラムを記述すると計算時間が30秒と元の木阿弥に。。。
0687デフォルトの名無しさん
NGNG10億回でこの程度の差ならまァいいか。。。
0688デフォルトの名無しさん
NGNG/asmfile で出力させたらライブラリ呼ばずにインライン展開してた。
おまけに角度が同じなので FSINCOS命令を使ってsin/cosの値を
同時に計算してる。
0689デフォルトの名無しさん
NGNG1.0 * sin(x) + 2.0 * cos(x) = sqrt(1.0 * 1.0 + 2.0 * 2.0) * sin(x + atan(2.0 / 1.0))
sqrt() と atan() は、定数になるから、sin() の計算と四則演算だけでできるよ。
0690684
NGNG0691アノニマス
NGNGどなたか助けてください。
課題は以下
i,j,kを1以上の整数とする。N=i**2+j**2+k**2としたとき,同じNの値を与える(i,j,k)の組み合わせが何通りあるのかを、
1から100までNについてディスプレイに表示するとともに,ファイルに出力するプログラムを作成せよ。
以上ですが
ヒントによるとdoを4回使うらしいのでうすが…いまいちよく分かりません。
どなたか教えてくださいm(__)m
このような質問が駄目でしたらすいません,m(__)m
0692デフォルトの名無しさん
NGNGd=1.0*cos(cta)+2.0*sin(cta)の計算式をloopするだけではFORTRANが計算を
さぼってしまうので正確には別の計算式も含まれているんですが、、、略。
FORTRANで直接インライン展開となると、VC++側から呼び出しても効果
ないかもしれませんね。あとはIntel C++お試し版で。。。
ありがとうございました。
<<689
三角関数の合成公式ですか。なるほど。
<<690
FORTRAN90コンパイラの種類と、エラー発生と直接関係した部分に絞りこんだ
ソースコードを提示しないとレスはつかないような。
0693デフォルトの名無しさん
NGNG<<688
d=1.0*cos(cta)+2.0*sin(cta)の計算式をloopするだけではFORTRANが計算を
さぼってしまうので正確には別の計算式も含まれているんですが、、、略。
FORTRANで直接インライン展開となると、VC++側から呼び出しても効果
ないかもしれませんね。あとはIntel C++お試し版で。。。
ありがとうございました。
<<689
三角関数の合成公式ですか。なるほど。
<<690
FORTRAN90コンパイラの種類と、エラー発生に直接関係した部分を絞りこんだ
ソースコードを提示しないとレスはつかないような。
0694684
NGNGうむむ、携帯からなんでできるだけ頑張ります
if 〜
^
ここでアンターミネイティッドブロックイグズィストって表示されるんです
そのエラーがでた行を全部消して書き直しても同じエラーが出るんです
0695デフォルトの名無しさん
NGNG友達いないんだな
0696デフォルトの名無しさん
NGNGそれでも分かり難いんだが・・・。
IF〜END IFの対応が崩れているんじゃないかな?
0697デフォルトの名無しさん
NGNG696氏が答えているように、
IF 〜 ENDIF
DO 〜 ENDDO
SELECT CASE 〜END SELECT
などのブロック構造となる構文で、
開始と終了の数が一致していないか、
あるいは、ちゃんと入れ子になっていないと考えられる。
こういう場合、エラーメッセージで示される行番号 は
あまり意味が無い。 IF〜の行で表示されるのであれば、
せいぜい、それより手前のIFブロックを
重点的に調べたほうがいい、くらいの意味しかないと
思われ。
0698デフォルトの名無しさん
NGNGなるほど
以外と簡単なミスかもしれないんですね
ありがとうございました
もいちど確かめてみます
0699デフォルトの名無しさん
NGNGC言語の時は本より「猫でもわかるプログラミング」が理解しやすかったので
似たようなのを期待してしまいます。
0700デフォルトの名無しさん
NGNG>>699
探したけどないね。
リファレンスとか大学あたりのちょっとしたページばかり。
まあ、メジャーなCと比べるのは酷だね。
0701デフォルトの名無しさん
NGNGFORTRAN と C の速度の違いは
アルゴリズムの微妙な違いか、
さもなくば最適化の違いから、
くるものだと思うよ。
0702デフォルトの名無しさん
NGNGC よりは移植性が低くて書き辛いが速い.
ってことでよろしいか?
移植性は,低いですよね.
「77 準拠!」って謳ったプログラムよりも,
「自分の処理系でなら (はぁと」なプログラムが多いみたいだし.
# 現に,今コンパイルが通らず苦戦中...
0703702
NGNG計算に特化した計算機で使うとなれば,
アセンブリじゃ事実上書けないものも出てくるのかな?
それなら,FORTRAN が最も早く書けて速く動くってことになりますね.
配布には向かないようだが...
# 「この(有料)コンパイラでは出来ました.」<--- ゴルァ
0704デフォルトの名無しさん
NGNG一体何が言いたいんだ ?
独り言なら、よそでやってくれ。
> アセンブリじゃ事実上書けないものも出てくるのかな?
なんて書いてるから、電波系の奴か...。
0705デフォルトの名無しさん
NGNGFORTRAN → 科学計算用
C → UNIX システムプログラミング用
ってだけだろう。
0706デフォルトの名無しさん
NGNG移植性の高さを測るのにアセンブリ言語を使うなよ!(笑
FORTRAN77 よりは C の方が書きやすいと思うし(構造体があるから)、
FORTRAN は一般的に言って速い部類に入ると思う。
アセンブリ言語は確かに一番速くなる可能性はあるが、
SIMD を使うのでない限り
深い知識のない人が最適化するよりも
コンパイラのする最適化の方が速かったりすることもある。
もしくは、大して変わらなかったり。
移植性が低いプログラムは、ビット演算とかコマンドラインとか使ってるのかな。
これは FORTRAN77 の仕様が少ないのが悪い! と言っておこう。
0707デフォルトの名無しさん
NGNGFortran計算で現在最速のPC組むとしたらCPU何が良いでしょうかね。
後輩がPen4-3.0GHzでも1ケース半日かかるから何とかしてとなきついてきました。
Athlon XP 3200+が早いのか、Xeon3.06をデュアルにしたほうが早いのか・・・
なお、コンパイラはintel FortranかVisual Fortranを使う予定らしいですが、プログラム自体は過去の遺産の手直しで大幅な変更は期間的に出来ないみたいですね。
ちなみに、私はハード購入担当でプログラムはあんまり詳しくないですので、プログラムの中身については聞かないでくださいな。
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG10年前の古代知識で恐縮だが、
いわゆるRISC系プロセッサのレジスタ・リネーミング(ウィンドウ)やら、
遅延分岐コードやら、パイプラインの管理やら、
アセンブラーで書くのがしんどいテーマは、
現在のIntel X86系プロセッサでも存在すると思う。
むしろ、FORTRANをコード・ジェネレータにして、
一部コードをインライン・アセンブラに置き換える、ってのが
10年前のメモリ非共有並列機のプログラミングで一般的だったみたい、な。
0711デフォルトの名無しさん
NGNG氾濫計算とかの一回分
0712デフォルトの名無しさん
NGNG問題にによるが
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG並列化効率良くないと意味ない罠がありそうだけど。
0715デフォルトの名無しさん
NGNGおれはしにそうだ
0716デフォルトの名無しさん
NGNGC
6001 CONTINUE
EZ(JEL)=(1.0-2.0*POIS)/YM*(SIGMAX(JEL)+SIGMAY(JEL))
1 -(EPSX+EPSY)
とあるのですが、4行目の「1」の意味がわかりません。
行番号と本文の間のスペースに「1」がかかれています。
似たようなもので行番号と本文の間に「C」が書かれているのもあるのですが、同じ意味なのでしょうか?
この「1」や「C」にはどのような意味があるかわからないでしょうか?
ご存知の方いらっしゃればよろしくお願いします。
0717デフォルトの名無しさん
NGNG6001 CONTINUE
EZ(JEL)=(1.0-2.0*POIS)/YM*(SIGMAX(JEL)+SIGMAY(JEL))
1 -(EPSX+EPSY)
なぜか書き込むときスペースがきえてしまっていたのでもう一度
0718デフォルトの名無しさん
NGNG6001 CONTINUE
EZ(JEL)=(1.0-2.0*POIS)/YM*(SIGMAX(JEL)+SIGMAY(JEL))
1 -(EPSX+EPSY)
です。何度もすみません。
0719デフォルトの名無しさん
NGNG↓の「基本的事項」
ttp://lilac.ees.hokudai.ac.jp/people/galapen/datab/lec02/ensyu/ex002.htm
0720デフォルトの名無しさん
NGNGなるほど!とても基本的なことを知らなかったわけですね・・・お恥ずかしい。
的確なアドバイス感謝です!ありがとうございました。
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNGC で言う K&R のようなのがいいです.
ある程度プログラミング言語を分かっている人向けで,
仕様に含まれているか,そうでないかの詳しいところもあるといいです.
図書館に言ってみたところ, 77 の本は乱立していて,選ぶのが難しい状態でした.
完全な初心者でも無いのでなおさらです (要は,中途半端).
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNG今更77? 90か95にしたら?
それとも何か理由があるん?
0725デフォルトの名無しさん
NGNG0726デフォルトの名無しさん
NGNGLinuxが使えるならIntel Fortran Compiler for Linuxがある。
Winは >>549 のFくらいかな。
g95 は完成までまだもうちょっとかかりそうだし。
0727722
NGNGIntel のはフリーじゃないっぽい...
というわけで,まだまだ 77 のお世話になってしまいます.
g95 に期待です.
下手に他の言語をやっているので,
初めて読むなら定番の良書だろう,と思っているのもあります.
よほどでなければ,日本語の本がいいです.
しっかりした解説となると, web では寂しいですね.
0728デフォルトの名無しさん
NGNGWindows版は・・・だろ?Linux版ならC++コンパイラとともにFortranコンパイラの非商用版があったはず。
0729デフォルトの名無しさん
NGNGそれに関するスレ
/opt以下に入れようとするのが激しくむかつく・・・
0730デフォルトの名無しさん
NGNGhttp://www.intel.com/software/products/compilers/flin/eval.htm
0731730
NGNGこれ
http://www.intel.com/software/products/compilers/flin/noncom.htm
0732デフォルトの名無しさん
NGNGttp://www.intel.com/software/products/compilers/flin/noncom.htm
0733732
NGNG0734デフォルトの名無しさん
NGNGIntel Visual Fortran V8.0 は10月販売予定。
http://www1.jpn.hp.com/products/software/development/dvf/intel/transition.html
0735デフォルトの名無しさん
NGNG適当な本で適当に文法を理解しておけば、
あとは別言語からの勘と試行錯誤で何とかなる。
0736722, 727
NGNG処理系依存のものは,知らないで使うのと知っていて使うのでは
大きく違うと思うのです.
計算しか行なわないとなれば,処理系依存は少なさそうですが,
上のレスに「77 の仕様が少ない」とか記述がありますので,
やはり便利な構文があったり無かったりするのでしょう (か?).
仕様のみではどのように辛いか等を知りたいのもあります.
とはいえ,まずは図書館に潜って古き良き本を漁ってみます.
# intel へのポインタを示してくださった方,ありがとうございます.
# 時間の関係で,すぐに取りかかれません...(⊃д`)
0737デフォルトの名無しさん
NGNG上でも言ったけど、ビット演算とコマンドラインが処理系依存筆頭かと。
ビット演算の使用例としては、擬似乱数の MT 法とか。
人によっては end do 禁止! とまで言う人もいるからなぁ。
end do を禁止されると辛いね。
end do 使えないコンパイラを使ったことがないけど、
未だにそんなコンパイラ使ってるところあるのかな?
あとは implicit none はどうだっけ?
あと、include ってどうなんだろ。
教えて詳しい人。
0738デフォルトの名無しさん
NGNG>あとは implicit none はどうだっけ?
implicit noneはプログラムやサブルーチン内で、宣言した変数以外は
使っちゃダメっていう制限を付加するもの。これが無いと、変数宣言無
くても、暗黙の型宣言により、自動で変数をinteger型、またはreal型と
して扱う。
1つ注意しなければならないのは、containでプログラム内や、モジュール
内に含めたサブルーチンでは、implicit noneを入れても、一つ上の
フォーカス?での変数を、宣言無しで使えるんだよな…。
詳しい事は、ヘルプ読むなり、自分で簡単なプログラムを作って
チェックしてください。
>あと、include ってどうなんだろう。
includeはよくわからん(w
0739デフォルトの名無しさん
NGNGhttp://www1.jpn.hp.com/products/software/development/dvf/
知ってる人は、知ってると思うけど、↑Compaq Visual FortranのHPで
落とせる日本語版オンライン・ヘルプは、Fortranの仕様書も含んでるから
これから、Fortranを勉強する人、Fortran95のマニュアルを探してる人
には、重宝するかも。
0740デフォルトの名無しさん
NGNG欲しい人は、なるべく早めに落としておいた方がいいかも。
0741デフォルトの名無しさん
NGNGPDF は英語版しかないの?
しょぼーん。
0742デフォルトの名無しさん
NGNGXLsoft(Intel製開発ソフトの販売代理店)から
Intel Fortran Compiler 6.0 のオンラインマニュアルが
ダウンロードできる(要メアド、約12MB)。
ここのプログラマーズ・リファレンスとライブラリ・リファレンスはpdf。
http://www.xlsoft.com/jp/products/intel/download.html
0743デフォルトの名無しさん
NGNGそのページワラタ
エロサイトみたいなことするなよ(上の方を反転させてみれば分かる)
0744デフォルトの名無しさん
NGNGところでIntel Visual Fortran 8.0 (?) は単独でIDEが使えるのでしょうか?
Intel Fortran と VC++ .Net 2003 Std 買おうと思ってたんだけど、
10月まで待った方がいいのかな?
0745なんでだろう?
NGNG初めてここにお邪魔します。
某社の作成プログラムをCompaq Visual Fortran用にコンバージョンしたときのトラブルを書きます。
Fortran77の環境下であることを、予めお断りしておきます。また、変数名も、コードを特定されるのを
避ける為に変えています。
また、プログラムは、SunのEWS下で動いていました。
dimension a(ndt) , b(ndt)
・
sum = 0.0
do n = 1 , nmx
sum = sum + a(n)*b(n)
end do
上のルーチンを通る前に、a, bの変数を計算する事前処理を行うのですが、入力により、事前処理を
行わずに上のルーチンを通ることがあります。その場合、sumにNaNが入ってしまうことがあります。
これはプログラムの問題でしょうか?それとも、コンパイラの問題でしょうか?
また、これを回避する為のコンパイルオプションがあるでしょうか?
0746なんでだろう?
NGNG続いて、もう一つ・・・。
ファイルのI/Oですが、まず、あるプログラムで、次のように書き出したとします。
dimension numb(20) , idat(20,10)
・
write(nun) mxdt, ( num(i), i = 1 , mxdt ),
& ( ( idat(n,m), n = 1 , num(m+3) ), m = 1 , 3 )
上のステートメントで作ったファイルを別プログラムで次のように読み込みます。
dimension numb(20) , idat(20,10)
・
read(nun) mxdt, ( num(i), i = 1 , mxdt ),
& ( ( idat(n,m), n = 1 , num(m+3) ), m = 1 , 3 )
すると、変数idatには前プログラムで書き込んだ値と異なる値が出力されたのには驚きました。
どう、考えてもプログラム自体、おかしいところはないと思うのですが?
0747デフォルトの名無しさん
NGNG経験的には、プログラムの問題のほうが圧倒的に可能性が高いだろうね
もともと配列壊したりしてない?
ndt < nmx とか。
デバッグモードで実行してる?
0748デフォルトの名無しさん
NGNGうーん。そのコードだけじゃ、よくわからんね。
もちょっと、前から、変数の構造見ないとなんとも…。
でも、Fortran77環境下といってるのに、Fortran90以降の書式が
混在しているように思えるのは、私だけだろうか…
0749なんでだろう?
NGNGこの現象に出くわしたのは、2、3年前のことですが、当時の資料を漁ってやっと思い出しました。
結論からいいますと、>>745のケースについては、a,bをゼロに初期化しているのですが、これを
加算または累積計算していくとsumにNaNが入るのです。
おそらく、コンパイラのレジスタの割り当てか何かにバグがあるのでは?という結論になり、
DOループの中で、IF文を使用することで回避する情けない対策をとりました。
これって、コンパイラのバグではないかと思うのですが、こんな現象に出くわした経験者は
いないかと思い、投稿したのです。
>>747さんの質問のndt < nmxはありません。
また、デバッグモードでの実行は実行メモリが大きすぎて出来ませんでした。
>>748
プログラムは、F77で作成されています。従って、SUNのEWSでもF77環境下で動いていました。
>>746のケースは、私が直接タッチした訳でない(同僚が経験した)のですが、書き込み側の
プログラムを作ったのは私です。
この対策は、同僚が読み込みのフォーマットを少し変えることで切り抜けました。
具体的には、
write(nun) mxdt, ( num(i), i = 1 , mxdt ),
& ( ( idat(n,m), n = 1 , num(m+3) ), m = 1 , 3 )
↓
write(nun) mxdt, ( idum, i = 1 , 3 ),
& ( num(i), i = 1 , 3 ),( idum, i = 7 , mxdt ),
& ( ( idat(n,m), n = 1 , num(m) ), m = 1 , 3 )
これはやはり、コンパイラのバグですよね?
なお、Compaq Visual Fortranのバージョンは6です。
0750デフォルトの名無しさん
NGNGhttp://alink3.uic.to/user/angeler.html
0751なんでだろう?
NGNG>>749の文の中のwriteはreadの間違いです。お詫びします。
0752デフォルトの名無しさん
NGNGそれってただ単に、書き込み側と読み込み側で
バイナリデータの互換性がとれてないだけなん
じゃないの?
http://www1.jpn.hp.com/products/software/development/dvf/docs/vf-html/pg/pg23_04.htm
0753デフォルトの名無しさん
NGNGだとすると最初の a(n)*b(n) も変な値が a,b に
セットされているかもしれませんね。
つまりある変数で a(n) もしくは b(n) に NaN
が入っていたりとかね。
もうちょっと print デバッグすれば解消しそうだ
0754なんでだろう?
NGNG質問したプログラムは、ある某大手会社(誰もが知っている会社です)の研究所から頂いた
プログラムで、現在、ある研究所で動いているプログラムです。
NaNが入る例等は、他のプログラムでも体験しました。
ゴミプログラムでは再現できませんが、共通していることは、プログラム自体大きく、変数が
てんこ盛り、コモンが沢山ということでした。
>>753のprintデバッグのことですが、私も当然、これを行いました。
しかし、doループの中に入れると、NaNが入る現象が消えてノーマルに終了するので、
なかなか判らなかったのです。
これには、相当参りました。原因究明にどれだけの日時を要したことか・・・。
しかも、実行時間が相当かかるのでネ・・・。
>>752のおっしゃるようなバイナリデータの互換性がとれてないということはありえません。
とにかく、根本的理由が判らないまま、うやむやになっています。
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNG0757なんでだろう?
NGNG全部で3万ステップ以上あるプログラムを書き直せと・・・(絶句
0758デフォルトの名無しさん
NGNGたかだか3万ステップでしょ。
私は一人で70万ステップ以上のFEMコード&数値計算ライブラリの構築・維持・アップグレードの面倒みてますよ。
0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNGhttp://www.k-514.com/html/erolink.html
0761デフォルトの名無しさん
NGNGデバッガが使えないのなら、
メモリたくさん積んだ速いマシンで
デバッグオプションを最大限付けて
地道に調べるしか無いかな。
/fpe:3 /debug:full /check:all /math_library:check /traceback /link /incremental:no
0762デフォルトの名無しさん
NGNG>共通していることは、プログラム自体大きく、変数が
>てんこ盛り、コモンが沢山ということでした。
やはりメモリ壊してる可能性大、と
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG1人でも2〜3週間あれば書き直せますな。
0765デフォルトの名無しさん
NGNGREAD (8, 100, END = 20) CODE(NUM), DATA(NUM)
ではなく、
I = 100
READ (8, I, END = 20) CODE(NUM), DATA(NUM)
とすることはできますか?
家にコンパイラがないので実際にすることができないんです
0766そんな低レベルな話よりも
NGNGここが発端だったんだね
いろんな意味ですごいもんだ
http://strangeworld-honten.com/cgi-bin/bbs.cgi
0767デフォルトの名無しさん
NGNGASSIGN 100 TO I
READ (8, I, END = 20) CODE(NUM), DATA(NUM)
なら出来る。
http://www1.jpn.hp.com/products/software/development/dvf/docs/vf-html/az/az02_26.htm
0768なんでだろう?
NGNGそんなこと言ったって、何本もありますよ。第一、客先の意向もあるし、会社が「無駄なことすんな」で
許可してくれないでしょう。
>>761
会社の都合もあるしね・・・(苦笑
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNGそういうことはスキルをつけてから言いな!!
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNGFortran77で1桁目に「'」と書くのはどう言う意味なんでしょうか?
プログラムには
---------------------------------------------
・
・
・
200 CONTINUE
C
RETURN
END
'←ここです
C
C
SUBROUTINE TEST
COMMON/A/ A,B,C,D
-----------------------------------------------
のようになるのです。
0774773
NGNGこれをFortran90のソフトで書くと、
「'」以下のSUBROUTINEが青色に変わらず、無効になってしまいます。
つづりは間違っていないので、「'」なければ当然青色になります。
どなたかご助言ください。お願いいたします。
0775デフォルトの名無しさん
NGNGにて
CHARACTER F_NAME*20
WRITE(6,*) 'ファイル名を入力してください'
READ(5,*) F_NAME
OPEN(UNIT=1,FILE=F_NAME,STATUS='OLD')
って書くと
WARNING - PRINT * and READ * will be affected by this OPEN statement
って警告が出てまともにファイルから読み込めないんですが
どこかおかしいところありますか?
0776デフォルトの名無しさん
NGNG「Fortran90のソフト」とか「青色」とか言われても
超能力者でもない限り、状況がわからん。
おそらくF77の方は「1桁目が空白か数字以外ならその行はコメント」
な処理系なんだろう。
で、F90の方は「'」を文字列の始まりとして認識しているんだろう。
>>775
FTN77 User's Guide (p.102)
> by preconnection; the standard input and output are preconnected to
> units 1 and 2 respectively (units 5 and 6 are respective alternatives).
0777773
NGNG0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNG0780デフォルトの名無しさん
NGNG0781753
NGNGprint デバッグで消える、というのは嫌っすね。
common で、配列サイズの基底がぐちゃぐちゃ
なのは体験したことがありますが。。。
コンパイラオプション等でも関係しているのかな。
デバッグモードで見てみましょうかね。。。
0782753
NGNGああ、後変数初期化なしの挙動はコンパイラ毎に違う
違うんですかね?
常にゼロだとか思わない方がいい気がしますよ。
この場合はオプションで初期化ゼロ設定できたと思います。
ループ入る前に、 a,b 配列を全部出力させないと。。
0783_
NGNG0784_
NGNG0785_
NGNG0786_
NGNG0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNG某教授が企業ではFortrun77が良く使われるっていってんですけど
本当ですか?
0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNGどんな企業だよ?
0791デフォルトの名無しさん
NGNGFortran90ならよく使われている。
0792デフォルトの名無しさん
NGNGうち
0793デフォルトの名無しさん
NGNGあとは分野によって C++, Java, VB, アセンブリ言語, SQL, Fortran90, ... が使われてる。
そして、新言語覚える気力のない人か
古いコードのメンテをさせられてる人か
Fortran90 使いたいけどコンパイラ買う金がない人が
FORTRAN77, COBOL を使っている。
0794デフォルトの名無しさん
NGNG遅レスながらありがとうございました。
手元にあるテキストはFORTRAN77のものなのですが、「'」の記載がなくて意味があるのか
コメントとして使っているのかがわからなかったのです。
ありがとうございました。
ソフト名はVisualFortran6でした。説明不足ですみません。
この点も勉強させていただきありがとうございました。
0795デフォルトの名無しさん
NGNG阪大の某教授も同じ事を言っておられました。
なんでも、企業のシステムにはまだまだFortranで書かれたものが多く、
それをCなどに書き換えるだけでも膨大なコストがかかる。
従って、未だに企業の資産?にはFortranで書かれたものが多いんだそうです。
そこで、Fortranを専門に知っておく必要はないが、文法ぐらいは一通り勉強しておいて損はない。
とのことです。
同じ原理でFortran77のものも結構あるんでしょうね。
僕は講義を受けてただけで、阪大生じゃないんでこれ以上なんともいえないんですけどねw
しかし、本屋にもテキストが置いてないし勉強しにくいです・・
0796え
NGNG下記の様に文字化けしたソースが含まれていてコンパイル・エラーがでます。
これを作った当時、外部で作業をして来てpc98からRS232C経由でVAXに転送して
いましたので、恐らくその時点での文字化けだと思います。
この文字化けを元に戻す方法がないでしょうか。
どなたか教えてください。
^^^^^^^^^^^^^^\\ソース・ファイル\\^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2000 FORMAT(1H //1H ,20X,'車・関・& 車・民荷 象娚愨 (%) ' //
00000434
* 1H ,10X, ' 関・ ---> ', F10.2 /
00000435
* 1H ,10X, ' 民荷 ---> ', F10.2 /
^^^^^^^^^^^^^\\ソース・ファイル\\^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^\\コンパイルの結果\\^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:\sm.for(454) : Error: Unrecognized token '#22' skipped
2030 FORMAT(1H0,10X,' NO. .ヨ・.ー.ヤ?,2X,'.ユ.カ.
?9X, 00000450
------------------------------------------------^
Error executing df.exe.
sm.obj - 6 error(s), 0 warning(s)
^^^^^^^^^^^^^^\\コンパイルの結果\\^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNGまさか…、それなりに名の通ってるエディター使ってれば、大抵の文字コードに
対応してるしそんなことは無いんじゃないの?
つーか、ただの文字コードの違いだけなら、普通、それなりのエディターで一度
開いて、確認ぐらいするだろ…。
って、ことで、文字コードの違いでは無いという前提のもので、上に書かれてる
程度のプログラムなら、ソースをざっと眺めれば、そんなに苦労しないで修正
出来ると思うんだけど。つうか、所詮format文なんだし、そのformatを呼び出してる
大元を見れば、すぐ修正できると思うんだが…。
0800デフォルトの名無しさん
NGNGもう一度文字化けしないようにコピーすりゃええんでないの?
0801デフォルトの名無しさん
NGNGVAXでは「DEC漢字」という文字コードが使われていたらしい。
ttp://www.inet-lab.org/ted/program/prog022.html
この文字コードに対応しているWindows用のエディタは
見たこと無いので(VFだからWinですよね?)
コレが原因ではないかな?
変換則も見つけたがよく解らん。
ttp://www.opengroup.or.jp/jvc/cde/convert.html
0802え
NGNG「DEC漢字」=JIS漢字みたいです。94×94バイトの領域を使ってます。
797さんや799さんの言う様に、何とかやってみます。
0803_
NGNG0804山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0805デフォルトの名無しさん
NGNG(・∀・)イイ!
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGわたしのおうちは、スイスランドよ
きれいなお花で、いっぱいなのよ
やーーっほー、
フォートランランラン、やっほっフォートランランラン、やっほっ
フォートーランランラン、やっほっほ♪
0809デフォルトの名無しさん
NGNGhttp://members.tripod.co.jp/kitaurawa/
0811_
NGNG0812デフォルトの名無しさん
NGNGFortran が隆盛を振るっていた頃は
その程度のものはいくらでもあったんじゃないかと。
0813山崎 渉
NGNG0814デフォルトの名無しさん
NGNG前半の丁寧な対応もうびっくり!荒らしも入ることができないほど.
こんな私も、「ニューメリカルレシピ」をfortranに翻訳して使ってます.
あれ、もともとfortranが発祥なのにね.
もちろん、’ピリオド’を使うのは 科学技術計算屋だからよ〜ん ぴりおど
0815山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0816デフォルトの名無しさん
NGNGニューメリカルレシピをFortran翻訳か…。大変そうだね。
Fortran版ってもう売ってないの?
研究室の先生は持ってるな。
自分のはC版だから、必要な時に借りに行く。
結構ありがたい。
0817デフォルトの名無しさん
NGNG読み比べてないから分かんないけど、
ソース以外のところは C のとそんなに大きく変わりはないと思うから、
文章はニューメリカルレシピ・イン・シーを読んで、
ソースは Numerical Recipes in Fortran 77 を読むってんじゃあかんのかな?
0818デフォルトの名無しさん
NGNGレスサンクス!
817氏の発言だと原著を買えと?高くないですか?もっともそれが一番よい方法と思いますが
0819デフォルトの名無しさん
NGNGFORTRAN77だとアマゾンで\8,359-
この手の書籍としては「こんなものかな」と言った値段ですが
感覚的にはやはりちょっと高いですね・・・。
http://www.amazon.co.jp/exec/obidos/search-handle-url/index=books-us&field-keywords=Numerical%20Recipes&bq=1
0820sage
NGNG思ったほど高くない.むしろ安い!驚きじゃぁ〜〜
0821デフォルトの名無しさん
NGNGさげ違いスマソ
0822デフォルトの名無しさん
NGNGGoogle Directory の Fortran のページ
ttp://directory.google.com/Top/Computers/Programming/Languages/Fortran/
の一番上の Numerical Recipes のサイトからたどってください。
0823デフォルトの名無しさん
NGNGすごいよ!
0824デフォルトの名無しさん
NGNG消費税の計算のプログラムが出ています。
C************消費税の計算******************
WRITE(*,*) '商品の値段?’
REAC(*,*) PRICE
C
VAT = PRICE * 0.05
NPRICE = PRICE + VAT
C
WRITE(*,*) '価格:’,PRICE
WRITE(*,*) '消費税:’,VAT
WRITE(*,*) '消費税込みの価格:’,NPRICE
C
END
では、プログラムを実行して、ためしに商品の値段を”50”円と
入力して、Enterキーを押してください。
DOSプロンプトウィンドウを起動して、コンパイルのコマンドを入力する
とあります。コンパイルのコマンド入力を教えてください。
0825デフォルトの名無しさん
NGNG0826デフォルトの名無しさん
NGNG2.2 GUI 開発環境 (CPad)
FORTRAN コンパイラのインストールが完了しました。これで作ったプログラムをコンパイルして
パソコンで実行できるファイルを生成できる環境を手に入れました。ただ,このままでは,使い勝
手が良くありません。というのも,パソコン上で実行できるファイルを作るには,DOS プロンプト
(DOS 窓)を起動して,コンパイルのコマンドを入力する必要があるからです。コンパイル名やコン
パイルオプションを覚えておく必要があります。また,DOS コマンドを知らない人は困るでしょう。
そこで,GUI の開発環境を開発&公開されている方がいますので,その方が作った「GUI ベース
の開発環境」(CPad)を使ってみましょう。CPad には開発言語に応じて幾つかの種類があります。
今回は,先程インストールした FORTRAN コンパイラ用の CPad である 「CPad for Salford FTN77」
を使います。以下に URL を書いておきますので参考にしてください。なお,CPad のインストール方
法や使い方は,CPad のホームページやヘルプファイルをご覧ください。これといって難しい作業は
ないと思います。
■ CPad : http://hp.vector.co.jp/authors/VA017148/pages/cpad.html
┗ CPad for Salford FTN77 : http://www.vector.co.jp/soft/win95/prog/se153699.html
0827デフォルトの名無しさん
NGNG読んでも細かいことは書いてない(?)ので教えてください。
0828デフォルトの名無しさん
NGNGコンパイラによって違う。
コンパイラのマニュアルを読め。
[c:\unko] f77 消費税.for
0829デフォルトの名無しさん
NGNGマルチポストうぜー
0830デフォルトの名無しさん
NGNG//ジョブ名 JOB CLASS=A,MSGCLASS=O,MSFLEVEL=(1,1)
// EXEC FORTCLG
//FORT.SYSIN DD *
FORTRAN ソース プログラム
//GO.FT05001 DD DSN=入力用データセット名,DISP=SHR
//GO.FT05001 DD DSN=出力用データセット名,DISP=(NEW,CATLG),
// UNIT=SYSDA,SPACE=(TRK,(10,10),RLSE)
//
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNGインテルはいってるになるらしい
0833デフォルトの名無しさん
NGNGにもかかわらず乱れる乱れる。しっかりビラビラ周りを剃りあげたオマンコにバイブが入っていく様子は圧巻です。
3Pシーンでも乱れまくり喘ぎまくりの菜月ちゃんです。
無料ムービーを観てね。
http://66.40.59.78/index.html
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG正しいのですか。わたしはビギナーです。教えてください。
■ このスレッドは過去ログ倉庫に格納されています