1 名前:デフォルトの名無しさん [2006/11/12(日) 17:13:35 ] FORTRAN総合スレッドです。 FORTRAN77/90/95/2003, HPF等、FORTRAN全般に関する話題を書き込んで下さい。 ・FORTRAN関連情報 お約束だが、まずは自分で調べよう www.google.co.jp/ x86で動作するFortranコンパイラ www.nminoru.jp/~nminoru/programming/x86-fortran.html The Fortran Company www.fortran.com/ Polyhedron Software www.polyhedron.co.uk/ Google Directory - Fortran directory.google.com/Top/Computers/Programming/Languages/Fortran/ ・前スレ FORTRAN III pc8.2ch.net/test/read.cgi/tech/1104724162/ FORTRAN II pc5.2ch.net/test/read.cgi/tech/1068351911/ Fortran pc2.2ch.net/test/read.cgi/tech/1003214738/
136 名前:デフォルトの名無しさん [2006/12/06(水) 14:40:20 ] >>134 でも内容も何もわからない人だったら質問をちゃんとしろってのも難しいんじゃないかな??
137 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 20:08:27 ] 質問をしている人間が自分のやってることの内容も何もわからない状態なら、 それこそ答えようがないだろ。 せめて基本的な文法なりソフトの簡単な使い方くらいは自分で調べて それでもダメだったら、何がしたくて何を試したけどどう上手くいかなかったか 程度のことは書いて質問すべきじゃないか。
138 名前:デフォルトの名無しさん [2006/12/07(木) 04:08:19 ] >>137 もっともな意見だが、それが出来ればたいていは自己解決して2chになんか聞きにこなくてすむw
139 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 07:46:51 ] >>137 Exactly
140 名前:デフォルトの名無しさん [2006/12/07(木) 17:42:48 ] >>139 (笑)
141 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 22:56:54 ] Silverfrost (Salford) FTN95 Version 5.00 キタコレ ttp://www.download.com/Silverfrost-FTN95/3000-2069_4-10614581.html?tag=pub ttp://forums.silverfrost.com/viewtopic.php?t=676&start=0&postdays=0&postorder=asc&highlight= .NET 2.0とVisual Studio 2005に対応したらしいが、VS2005は使ってないので詳細は知らん。
142 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 22:06:05 ] Intel FortranでMacアドレス取得する方法ありますか? マニュアル見ても載ってなかったです・・。
143 名前:デフォルトの名無しさん [2006/12/08(金) 23:44:07 ] >>142 C言語でも難しいようだ。標準のWIN32APIでは出来ないので、他の方法をやっているようだ。 安直な方法は、SYSTEM関数でDOSコマンドのipconfig/all を実行し、 その出力からMACアドレスを切り出す方法ジャマイカ?
144 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 23:52:39 ] >>143 やっぱりそうなりますかねー。 自分のOS以外で動作を確かめられないのでちょっと大変;; どうもthx
145 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 10:46:49 ] >>142 Three ways to get your MAC address. www.codeguru.com/Cpp/I-N/network/networkinformation/article.php/c5451 Retrieving Information Using GetNetworkParams msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/creating_a_basic_ip_helper_application.asp IPHLPAPIを使ってWindowsでネットワーク設定いじるプログラムを書く www.geekpage.jp/programming/iphlpapi/ この辺だと思うが、PlatformSDKのライブラリをLINKすれば可能なようだ。 しかし自分でインターフェースを書かないと駄目なので難しそう。 TYPEとかの定義が深いので、インターフェースに必要な定義がどれだけあるのかわからん。
146 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 17:06:14 ] winだったら昔NetBIOSでとったことがある。
147 名前:デフォルトの名無しさん [2006/12/09(土) 20:54:36 ] PROGRAM MAC USE ifwinty IMPLICIT NONE ! INTEGER, PARAMETER :: MAX_ADAPTER_DESCRIPTION_LENGTH = 128 !// arb. INTEGER, PARAMETER :: MAX_ADAPTER_NAME_LENGTH = 256 !// arb. INTEGER, PARAMETER :: MAX_ADAPTER_ADDRESS_LENGTH = 8 !// arb. ! TYPE :: IP_ADDRESS_STRING CHARACTER (4) :: String(4) END TYPE TYPE :: IP_MASK_STRING CHARACTER (4) :: String(4) END TYPE ! TYPE :: t_IP_ADDR_STRING INTEGER (LPLONG) :: pNext TYPE (IP_ADDRESS_STRING) :: IpAddress TYPE (IP_MASK_STRING) :: IpMask INTEGER (DWORD) :: Context END TYPE !
148 名前:デフォルトの名無しさん [2006/12/09(土) 20:55:07 ] TYPE :: t_IP_ADAPTER_INFO INTEGER (4) :: pNext INTEGER (DWORD) :: ComboIndex CHARACTER (LEN = MAX_ADAPTER_NAME_LENGTH + 4) :: AdapterName CHARACTER (LEN = MAX_ADAPTER_DESCRIPTION_LENGTH + 4) :: Description INTEGER (UINT) :: AddressLength INTEGER (BYTE) :: Address(MAX_ADAPTER_ADDRESS_LENGTH) INTEGER (DWORD) :: Index INTEGER (ULONG) :: iType INTEGER (ULONG) :: DhcpEnabled INTEGER (LPLONG) :: pCurrentIpAddress TYPE (t_IP_ADDR_STRING) :: IpAddressList TYPE (t_IP_ADDR_STRING) :: GatewayList TYPE (t_IP_ADDR_STRING) :: DhcpServer INTEGER (BOOL) :: HaveWins TYPE (t_IP_ADDR_STRING) :: PrimaryWinsServer TYPE (t_IP_ADDR_STRING) :: SecondaryWinsServer INTEGER (ULONG) :: LeaseObtained INTEGER (ULONG) :: LeaseExpires; END TYPE ! INTERFACE INTEGER (BOOL) FUNCTION GetAdaptersInfo(arg1, arg2) USE ifwinty !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'GetAdaptersInfo' :: GetAdaptersInfo INTEGER (LPLONG) :: arg1 INTEGER (LPLONG) :: arg2 END FUNCTION END INTERFACE
149 名前:デフォルトの名無しさん [2006/12/09(土) 20:56:42 ] ! TYPE (t_IP_ADAPTER_INFO) :: AdapterInfo(16) TYPE (t_IP_ADDR_STRING) :: CurrentIpAddress INTEGER (DWORD) :: dwRetVal INTEGER (PULONG) :: pdwRetVal INTEGER (BOOL) :: iret CHARACTER (LEN = 128) :: Description dwRetVal = sizeof(AdapterInfo) iret = GetAdaptersInfo(LOC(AdapterInfo), LOC(dwRetVal) ) !PRINT *, AdapterInfo(1)%pNext !PRINT *, AdapterInfo(1)%ComboIndex !PRINT *, AdapterInfo(1)%AddressLength !PRINT *, AdapterInfo(1)%Description(1:128) PRINT '(6Z3)', AdapterInfo(1)%Address(1:AdapterInfo(1)%AddressLength) !PRINT *, AdapterInfo(1)%IpAddressList !PRINT *, AdapterInfo(2)%pNext !PRINT *, AdapterInfo(2)%ComboIndex !PRINT *, AdapterInfo(2)%AddressLength !PRINT *, AdapterInfo(2)%Description(1:128) PRINT '(6Z3)', AdapterInfo(2)%Address(1:AdapterInfo(2)%AddressLength) !PRINT *, AdapterInfo(2)%IpAddressList STOP END PROGRAM MAC とりあえず、これでMACアドレスが取れた。
150 名前:デフォルトの名無しさん [2006/12/09(土) 21:09:05 ] >>142 雪が降っていたので暇つぶしにがんばってみた。 4時間ぐらいかかったが、MACアドレスがIntelFortranで取れた。 方法は>>145 の1番目のリファレンスの3番目の方法を用いた。 型などは、2番目のMSDNに書いてある情報から自分で適当に作ってみた。 TYPEのサイズがC++版で求めているのと一致したので多分OKだろう。自信はないw 漏れはメインフレーム育ちの生粋のFORTRANerで、CもC++はHelloWorld以上のものは 書いたことが無いので、文字列とかポインターの扱いとかが今一自信がない。 コンパイルに必要なのはPlatformSDKだが、漏れはインストールのときに 勝手にインスコされていたようだ。この中のライブラリ IPHlpApi.lib をライブラリに 加えておく必要がある。 Linker>Input>Additional Dependency に、そのまま書けばOKだった。 プロジェクトタイプはコンソールでおk。 >>146 >>145 の記事によるとNetBiosから取る方法は、最近は推奨されないらしい。 ただし取り方は書いてあった。
151 名前:150 [2006/12/09(土) 22:27:56 ] >>149 のメインプログラム部分は、以下に直しておいてくれ。 デバッグ用のゴミを削った。複数のネットワークアダプタにも(とりあえず16個以下だが)対応。 TYPE (t_IP_ADAPTER_INFO) :: AdapterInfo(16) TYPE (t_IP_ADDR_STRING) :: CurrentIpAddress INTEGER (DWORD) :: dwRetVal INTEGER (BOOL) :: iret INTEGER :: i dwRetVal = sizeof(AdapterInfo) iret = GetAdaptersInfo(LOC(AdapterInfo), LOC(dwRetVal) ) IF (iret /= 0) STOP 'Error' DO i = 1, 16 PRINT '(5(Z2.2,"-"), Z2.2)', AdapterInfo(i)%Address(1:AdapterInfo(i)%AddressLength) IF (AdapterInfo(i)%pNext == NULL) EXIT END DO STOP END PROGRAM MAC
152 名前:デフォルトの名無しさん [2006/12/12(火) 14:31:56 ] compaq visual fortran 6.1を使っています。 1つのプロジェクトの中のsource fileのなかには、二つ以上プログラム ファイルを入れてはだめなのでしょうか?ためしに片方のプログラム をコンパイルすると実行時に引っかかってしまいます。 一つを消すと上手くいくのですが…。 では平行して二つのプログラムを作りたい場合どうすればいいのでしょうか? どうかご返答お願いします。
153 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 18:50:15 ] >>152 コードを変更するときには、ワークスペースも変更する必要があるはず。 手っ取り早くするには、コード変更=CVF を一旦終了。
154 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 23:08:08 ] >>152 実行ファイル毎にProjectを作成して、1つのWorkspaceに'Insert Projects into Workspace'で Projectを追加、または'Add New Project to Workspace'で新しいプロジェクトを追加する。 Buildするときは'Set Active Project'でProjectを選んでからBuildするか または'Batch Build'でまとめてBuildする。 CVF6.6の場合だが、6.1でもたぶん同じだろう。
155 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 20:25:50 ] >>153-154 親切にありがとうございました。 ちょっとvisual fortran自体はじめて使ったもので よく分かりませんでしたが聞いて解決しました
156 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 20:33:57 ] ノートパソコンでLAPACKコンパイルすると ファンがぶんぶん回ってうるさいよ〜
157 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 01:01:54 ] >>156 LAPACKで計算をするうようになれば同じこと。
158 名前:デフォルトの名無しさん [2006/12/18(月) 16:58:00 ] 下記の文章をfortran77で表すとどうなるか、教えていただけませんか? ex=2.0**((-1)*(l+1)) i=0 k=0 do 210 while(i.lt.n) i=i+1 k=k+1 if(k.gt.p)then call delay(ivw,p,q,j) else j=k end if if(ivw(j).ne.0) then a(i)=ivw(j)*ex else i=i-1 end if 210 continue
159 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:45:37 ] >>158 whileのループをgoto文を使って書いたら?
160 名前:デフォルトの名無しさん [2006/12/18(月) 23:10:13 ] 計算終了時に、携帯電話へメールで知らせてくれるってことできますか??
161 名前:デフォルトの名無しさん [2006/12/18(月) 23:13:01 ] >>160 シェルスクリプトを書けばいい。
162 名前:f90 mailto:sage [2006/12/19(火) 13:07:00 ] do if(i>=n) exit i=i+1 k=k+1 if(k>p) then call delay(ivw,p,q,j) else j=k end if if(ivw(j)/=0) then a(i)=ivw(j)*ex else i=i-1 end if enddo
163 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 15:45:48 ] Intel fortran9.1使ってるんだけど、system()で定期的に外部プログラムを呼ぶとコミットチャージが時間とともに増え続けてしまうという 症状に悩まされていた。ところが、system()の代わりにsystemqq()を使うと、その症状が出なくなった。 こんな経験した人いる?
164 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 01:03:54 ] SYSTEMってPOSIX互換のルーチンかい? SYSTEMQQはQUICKWINからみか? どっちも使わんなぁw
165 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 20:44:11 ] >>164 じゃあ、外部コマンド起動したいときはどうやってるの?
166 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 00:31:25 ] 外部コマンド呼ばないw Win32で出来る物はWin32でやる。 できないものは諦めるw
167 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 00:48:23 ] コンソールアプリ無視していきなりWin32かよw
168 名前:デフォルトの名無しさん mailto:sage [2006/12/22(金) 01:26:17 ] おまいら仲良くやれよ スクリプトで妥協しとけw
169 名前:デフォルトの名無しさん [2006/12/28(木) 23:25:36 ] オッペン化粧品! OpenMPのいい参考サイトか本はアルカイダ? あぁそれとMPIにしろとか言うなヨーロッパ。
170 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 23:46:15 ] コンパイラの自動並列化だけでがまんs 俺も教えて欲しい。 尼損で検索したら、和書は1冊しか無かった・・・
171 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 00:00:47 ] >>169 いやさ、さっぱり自動並列化されないから、少し知恵をつけてやるかと思って。 2CPUシングルマシンで軽く行きたい。 QuadCoreを買う口実も欲しいw
172 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 03:02:52 ] えー、かなり漠然とした質問ですがちょっとアドバイスをもらえませんか? ある元となる計算コードでは、セルの幅や高さがすべての領域で一定です。 計算する領域は長方形で、 NCX:セルの行(X方向) NCY:セルの列(Y方向) CW:列方向へのセルの幅 CH:行方向へのセルの幅 といった感じです。 また、それぞれのセルには通し番号が割り振られています。 (最初の行を小さいほうから順に1.2.3…と割り振っていって 端に行ったら次の行に移ります) ↑Y 9....... 5678 1234 →X このコードを元に、任意の列以降でセルの大きさを縦横それぞれ 半分にする(面積を1/4)にして(もちろん以降の行、列数は倍になります) 計算するプログラムを書きたいと思います。セルの大きさの変化は何段階か行われます。 (具体的にはY座標依存のある物理量と比較してセルを小さくするかどうか判別します)
173 名前:172 mailto:sage [2006/12/29(金) 03:03:23 ] (続き) しかし、元のコードには例えばセルが何行、何列目かを判別するために NY=(N-1)/NCX+1 NX=N-(NY-1)*NCX のような表現が多様されています。(Nはセルの通し番号) また、逆に行や列の指定からセル番号を判別するようなものもありますし、 座標指定に X=NY*CH みたいな事もしています。 NCX,NCY,CW,CHを配列にして、初期の大きさのセルの領域の行、列数を NCX(1)、NCY(1)に、次の大きさのセルの行、列数をNCX(2)、NCY(2)に、 というようにセルの大きさで領域を分けて考えよう、と思ったのですが、 あるセルが何番目の領域に属するかをいちいち判別するのもめんどくさいですね。 ちょっと上記の判別の式が複雑になってきてしまいます。 (ループで非常に何度も通るところなので出来るかぎり簡単にしたいです) 各セルが何行何列目に属するかと何番目の領域に属するかを 配列に格納しておけばいいかとは思いますが、 プログラムの経験が浅いこともありかなり無駄なことをしていないか不安になってきました。 既存の構造を生かしたり(置換するだけですぱっと終了とか) あまり余計なものを追加しないエレガントなやりかたってありますかね? やっぱり地道にやるしかないでしょうか?長文すみません。
174 名前:172 mailto:sage [2006/12/29(金) 03:14:28 ] すみません、 (誤)X=NY*CH (正)Y=NY*CH です。
175 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 20:26:22 ] >>173 サイズに依存する。 小さいならいったん既存の計算式で求めたセルサイズをテーブルとして保存すればよい。 サイズが大きくてメモリーギリギリまで使っているなら、1回ごとに計算するほうがいい。 567 238 のちな形でサイトを指定してもいいなら、判別の計算式も簡単になるかもしれない。 149 計算機学科の人からはしかられるが、高速でやるにはデータ構造と処理が 切り離せないので、まぁ問題を理解し整理して自分で良く考えろw
176 名前:172 mailto:sage [2007/01/05(金) 18:17:30 ] >>175 遅レス申し訳ない。有難うございます。 やっぱりある程度地道にやるほか無さそうですね。 しこしこやってます。
177 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 20:38:06 ] 若干Fortranから逸れますが、わかる方ご教授ください。 IntelのVisual Fortranで作成したコンソールアプリから VCで作ったLibファイルを呼び出したいです。 簡単に書くと、VCは BOOL PrintMessage() { 中略 } という関数になっています。 これをFortranから呼び出すために、 自分なりにマニュアルを読み、 以下のようにコーディングしてみました。
178 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 20:39:25 ] INTERFACE LOGICAL FUNCTION PrintMessage() !DEC$ ATTRIBUTES STDCALL :: PrintMessage END FUNCTION END INTERFACE LOGICAL LX LX = PrintMessage() しかし、リンク時に_PrintMessageが見つかりません、と リンクエラーが出ます。 解決方法はあるでしょうか? なお、VCから上記VCを呼び出すケースもあるため、 両方Fortranで書けば?というのは無しでお願いしたいです。 一応環境としては、 Visual Studio .NET 2003 + Intel Visual Fortran v9.0 になります。 よろしくお願いします。
179 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 00:52:12 ] >>178 呼び出し規約がSTDCALLの場合、外部名はデフォルトですべて小文字と解釈されてしまうので 大文字・小文字が混在する場合は以下の様にする !DEC$ ATTRIBUTES STDCALL, DECORATE, ALIAS: 'PrintMessage' :: PrintMessage C側の PrintMessage() 関数も __stdcall でコンパイルされている必要がある。 C++の場合は extern "C" も必要。 また、IVFではLOGICALの内部表現(整数値)が奇数のとき真、偶数のとき偽となるので 他言語の関数とLOGICALを受け渡しする場合は注意すること。
180 名前:178 mailto:sage [2007/01/09(火) 21:34:40 ] >>179 レスありがとうございます。 なるほど・・。 F側の大文字小文字対策はマニュアルに書いてありましたが、 いろいろ調整しても結果が同じだったので関係ないと思ってました。 C側の対策は全く見えてませんでした^^ 正直Cはド素人なので上記のようにいわれてすぐに対応できませんが 参考にして調べてみます! ありがとうございました。
181 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 23:27:06 ] >>180 IntelFortranのマニュアル見るとちまちまと書いてあるよ。 DECORATE修飾子が新設されたので、DEC時代に場合分けして書いていたのが すっきりしてうれしい。
182 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 19:42:57 ] >>180 ATTRIBUTES STDCALL, ... ではなく ATTRIBUTES C, ... を使えばC言語の方はいじらなくてもおk。
183 名前:デフォルトの名無しさん [2007/01/12(金) 23:52:31 ] 三つの数値データを与えてその三つの数値の最大値、最小値、中央値、 平均値、標準偏差、不偏分散を求められるプログラムを作成せよ。 わからなくて大変です。 お願いします
184 名前:デフォルトの名無しさん [2007/01/16(火) 12:41:49 ] Fortressどう思います? 数式をそのまま書けるとか、並列化にコンパイラレベルで対応とか・・・ なかなかよさそげですが。 ttp://japan.zdnet.com/news/devsys/story/0,2000056182,20340715,00.htm ttp://slashdot.jp/developers/07/01/15/1521236.shtml
185 名前:デフォルトの名無しさん [2007/01/16(火) 12:45:26 ] >>183 てっとりばやく答えが欲しいなら pc10.2ch.net/test/read.cgi/tech/1164121236/ に行くといいのでは?
186 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 20:18:01 ] 既に答えが出てる。 ていうかマルチ。
187 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 03:15:36 ] >>184 Fortranの資産使えないのにFortran風にする意味がいまいち良く分からん。
188 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 12:05:30 ] >>184 pseudocode をそのままコンパイルしてくれるならうれしい。
189 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 12:55:53 ] >>187 え、使えないの?
190 名前:デフォルトの名無しさん [2007/01/19(金) 23:38:03 ] Salford ftn95でlapack95を使いたいねんけど、どーすればいいん??
191 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 00:43:01 ] >>190 1.NetlibからLAPACKを拾ってくる。 2.どうにかしてblas.libとlapack.lib
192 名前:デフォルトの名無しさん [2007/01/20(土) 00:44:49 ] >>190 1.NetlibからLAPACKを拾ってくる。 2.どうにかしてblas.libとlapack.libをつくる。 3.NetlibからLAPACK95を拾ってくる。 4.どうにかしてlapack95.libとモジュールファイルをつくる。 5. > ftn95 hoge.f90 6. > slink hoge.obj lapack95.lib lapack.lib blas.lib
193 名前:デフォルトの名無しさん [2007/01/20(土) 08:07:50 ] >>192 どもども! どうにかしてってところが問題だが、どうにかしてみます。 どうにかする方法がわかったら、またよろしゅ〜!
194 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 11:45:48 ] 77で動的配列ってできないの? x(i,j) ってしといて ファイルからi,j読み込んでサイズ決めるみたいな感じにしたいんだけど・・
195 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 13:15:50 ] >>194 言語規格としては出来ない。 ただ、コモンとか上のルーチンで大きなワーク配列を取っておいて、 いったん必要なサイズを知った上で下のサブルーチンで作業領域で整合配列を 切って使って似たようなことは出来る。 C言語もK&Rの付録を見るとmallocをそういう感じで実現する例を出している。
196 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 13:38:47 ] 90ならポインター使える。 PGIとか77でもポインター使える処理系もある。 ポインターの使えない77でもCとの合わせ技で可能。
197 名前:デフォルトの名無しさん [2007/01/20(土) 16:25:44 ] >>193 LAPACK(BLAS): ・netlibから lapack-3.1.0.tgz を取ってくる。 blas.lib: ・lapack-3.1.0\BLAS\SRC の中のソース(*.f)を全部コンパイルする。 ・出来たオブジェクトファイルを slim で blas.lib にまとめる。 slim *.obj /file:blas lapack.lib: ・lapack-3.1.0\INSTALL の中の dlamch.f, dsecnd.f, ilaver.f, lsame.f, second.f, slamch.f を lapack-3.1.0\SRC にコピーする。 但し、FTN95には second.f, dsecnd.f で使われている ETIME関数が無いので ETIMEを自作するか CPU_CLOCK, SYSTEM_CLOCK辺りを使って書き換える。 ・lapack-3.1.0\SRC の中のソースを全部コンパイルする。 この際、slaruv.f, dlaruv.f をコンパイルするときは最適化オプションを外す。 ・出来たオブジェクトファイルを slim で lapack.lib にまとめる。 tmglib.lib: ・lapack-3.1.0\TESTING\MATGEN の中のソースを全部コンパイルする。 この際、slaran.f, dlaran.f をコンパイルするときは最適化オプションを外す。 ・出来たオブジェクトファイルを slim で tmglib.lib にまとめる。
198 名前:デフォルトの名無しさん [2007/01/20(土) 16:27:59 ] (>>197 の続き) LAPACK95: ・netlibから lapack95.tgz を取ってきて展開する。 ・lapack95\SRCに移動。 ・la_auxmod.f90 をコンパイルする。 → la_auxmod.mod, la_precision.mod が出来る。 ・f77_lapack_single_double_complex_dcomplex.f をコンパイルする。 → f77_lapack.mod が出来る。 ・f95_lapack_single_double_complex_dcomplex.f をコンパイルする。 → f95_lapack.mod が出来る。 ・la_csygst.f90, la_csygv.f90, la_csygvd.f90, la_csytrd.f90, la_zsygst.f90, la_zsygv.f90, la_zsygvd.f90, la_zsytrd.f90 以外の la_*.f90 をコンパイルする。 ・出来たオブジェクトファイルを slim で lapack95.lib にまとめる。 以上で出来たライブラリファイル(*.lib)を環境変数 LIB で指定したフォルダへ、 モジュールファイル(*.mod)を環境変数 MOD_PATH で指定したフォルダへそれぞれ移す。
199 名前:デフォルトの名無しさん [2007/01/20(土) 17:04:13 ] 関数名を引数に使いたいのですが、EXTERNAL文を呼び出し側で使っても うまくいきません。 下のプログラムなのですが、何処が間違っているんでしょう? External func real func,SUM write(*,*) SUM(func) end real Function SUM(f) External func real f SUM = f(1.0)+f(2.0) return end real Function func(x) real x func = x return end
200 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 19:15:37 ] >>199 SUM() がF90の関数と混同されているんで内科医? SUM0とかにすればおK
201 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 19:22:59 ] >>199 External func → external func, SUM
202 名前:199 mailto:sage [2007/01/20(土) 22:07:45 ] >>200 >>201 、ご指摘の方法で解決することが出来ました。 有難うございます。
203 名前:デフォルトの名無しさん [2007/01/20(土) 22:37:50 ] >>197 ,198 ありがとう〜、格闘の末何とかなりました。 オレもあんたくらい、pcを自由にあやつりたいもんですわ!
204 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 00:37:48 ] 本来ならMakefileを書いて、テストプログラムも含めてmake(MK32)で処理させるべきなのだろうけど FTN95の場合、他のコンパイラとオプションの指定方法が違ったりするから中々面倒くさい。
205 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 07:14:03 ] 質問です。 OPEN (4,FILE=RESULT.OUT,FORM='FORMATTED') このRESULT.OUTを、あるIと言う数値を読み込んで 例えばI=5000ならRESULT5000.OUTのようにしたいんですが、 出来るでしょうか?要するに計算のステップ数に応じて 自動的にファイル名をつけて出力してやりたいんですが、 OPENの中身をいじるだけじゃダメですかね?
206 名前:デフォルトの名無しさん [2007/01/26(金) 10:04:30 ] >>205 その質問は千回くらい出ている。 過去ログ見れ
207 名前:デフォルトの名無しさん [2007/01/28(日) 18:26:34 ] 自分のマシンのフォートランコンパイラコマンドを汁にはどうしたら良いですか? VINELINUX使ってます。
208 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 20:37:47 ] >>207 shell に g77 とか gfortran とか g95 とか ifort とか入れてみる。 使えるようなら no input files などと返ってくる。 なけりゃ自分でインストロールする。
209 名前:デフォルトの名無しさん [2007/01/28(日) 21:47:58 ] 全部使えませんでした。 ifortいれたいのですが、どこでダウンロードできますか?
210 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:54:39 ] >>209 つ google
211 名前:209 [2007/01/28(日) 22:35:38 ] 何度もすみません。 インテルのコンパイラ入れようとしたら下記のメッセージで止まってしまいます。 解決方法を御存じのかたは教えてください。 ./.././data/install_fc.sh: line 1459: ERROR: unable to find command "ls" !: command not found ./.././data/install_fc.sh: line 1463: Please add the location to the above commands to your PATH and re-run the script.: command not found ./.././data/install_fc.sh: line 1464: Please press Enter to continue...: command not found
212 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 22:39:51 ] >>211 > 解決方法を御存じのかたは教えてください。 夜間中学で英語を学びなおす。
213 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 22:48:29 ] つーか lsが見つからんて、どんな環境やねん
214 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:02:48 ] >>211 ttp://www.google.co.jp/search?hl=ja&q=%22unable+to+find+command%22&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
215 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 01:02:12 ] EclispのPhortranってどうよ? とくにLinux上のIntelコンパイラとの組み合わせの使い心地 知りたい
216 名前:デフォルトの名無しさん [2007/02/03(土) 07:25:11 ] Mac OS X 上のgfortran 4.0でコンパイルした時に gfortran: spec failure: unrecognized spec option 'M' というエラーがでるのですが何がまずのでしょう? ちなみに他のマシン(LINUX)のgfortranでは エラーはでません。一応、走るのですが、writeでposition='append'を指定しても既存ファイルに データを付け加えず、完全に上書きしてしまうので困っています。ちなみにLINUX上では うまく行きます。
217 名前:209 [2007/02/04(日) 11:51:06 ] >>214 ありがとうございます。 感謝します。
218 名前:デフォルトの名無しさん [2007/02/15(木) 00:11:54 ] NAGのFortranBuilderのNAGFortran95コンパイラのVersionって5.0?それとも5.1? 5.1なら買いたいんだけど、誰か知ってる人いる?
219 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 15:57:03 ] 全角英数は気持ち悪いというセンスを身に着けてから出直してくれ。
220 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 19:36:46 ] >>219 おい、おまえ 同感
221 名前:デフォルトの名無しさん [2007/02/17(土) 00:00:33 ] >>219 ごめん 訂正させてもらう NAGのFortranBuilderのNAGFortran九五コンパイラのVersionってX.0?それともX.T? X.Tなら買いたいんだけど、誰か知ってる人いる? 全角漢数字かローマ数字をつかえばいいわけだろ?
222 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 00:07:15 ] つまらん
223 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 00:22:25 ] フォートランって今でもリアルに使ってるとこあるのか?w 本物のプログラマは〜、の時代でもすでに時代遅れのダメ言語だったのに
224 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 01:16:58 ] >>223 おまえ、ちょっとそこに正座しろ。 この世間知らずがw いいか、電子計算機の本流はFortranだぞ! スパコン・ランキングの機械で動いているプログラムは基本的にFortranだ。 大体マルチコアで並列化といっているが、MPIもOpenMPも対応コンパイラはFortranか Cしかなくて、Cはあくまでおまけだ。大多数の人間はFortranでプログラム書いてる。 これから並列化が主流になるにつれ、Fortranの天下が再びやってくるのは間違いない! 悔い改めよ!さもなくば地獄の業火に焼かれるべし! 詳しくはマタヨシイエスのサイトを熟知すべし。
225 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 01:22:52 ] 唯一神Fortran
226 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 01:36:08 ] >>221 「全角英数」の意味がわかるようになってから出直してくれ。
227 名前:デフォルトの名無しさん [2007/02/17(土) 01:43:01 ] >>216 gfortran どやっていれたんですか? 俺のmacにははいってないんだてど
228 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 01:53:16 ] >>227 君のMacはハズレだったんだよ。
229 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 01:54:03 ] >>226 おまいら,うぜーから他所でやれ.
230 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 10:54:58 ] >>229 うるせー、>>218 や>>221 のようなグロは見たくねーんだよ。
231 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 23:09:57 ] 最近くだスレのほうがレベルが高いなw
232 名前:デフォルトの名無しさん [2007/02/21(水) 15:40:26 ] >>218 5.1を搭載
233 名前:デフォルトの名無しさん [2007/02/21(水) 22:54:23 ] >>232 dクス! nagのサイトに調べにいったんだが、Windows用はまだ5.0だったので、だめかと思ったが。 安いやつ買って見っかー でもライセンスがウゼーんだよな。
234 名前:デフォルトの名無しさん [2007/02/25(日) 00:31:39 ] Intel Visual Fortran 9.1に付属してくるデバッガ(idb)の詳しい日本語の資料や書籍ってないんでしょうか?
235 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 17:39:49 ] エクセルソフトがコンパイラマニュアルの日本語訳を出していたが、デバッガもあったかな?
236 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:30:36 ] >>235 XLsoftから日本語マニュアルを落としてみましたが、 詳しく載っているのはVisual StudioでのデバッグだけでIDBについては主要なコマンドの説明のみでした。 >IDB に関する詳細は、[スタート] メニューから利用可能なインテル・デバッガーのオンラインマニュアル (英語) を参照してください。 とのことで・・・このマニュアル、完全に日本語訳されてる訳じゃないんですね。 Language Referenceとか英文のままだし。