トップページ⇒tech
1001コメント411KB

FORTRAN III

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
FORTRAN総合スレッドです。
FORTRAN77/90/95/2003, HPF等、FORTRAN全般に関する話題を書き込んで下さい。

・前スレ
FORTRAN II
http://pc5.2ch.net/test/read.cgi/tech/1068351911/
Fortran
http://pc2.2ch.net/test/read.cgi/tech/1003214738/
03573562005/09/03(土) 08:40:04
Windows XPか、Linux上で
0358デフォルトの名無しさん2005/09/03(土) 09:41:52
コンパイルできればどんなOS上でも動くんじゃないの?
0359デフォルトの名無しさん2005/09/03(土) 11:09:09
>>356
>Fortran IVのプログラムが動くソフト
それは、通常コンパイラと呼ばれるソフトです。
私があなたなら、該当プラットフォーム(OS)上で動くFortranコンパイラを販売している会社を調べ、
その会社に問い合せる。
0360デフォルトの名無しさん2005/09/06(火) 20:52:23
ファイルの中身を全部コピーしたいんですけど、
read文を使う場合、読み込ませる変数を細かく設定しなければいけませんよね?

例えば、
"do i=1,10"
を読ませたかったら、
read(1,*)a1,a2となりますよね?

毎回ファイルの中身が変わるので、それは面倒なんですよ。
とにかく、そのままコピーしたいんですけど、いい手ありませんか?
0361デフォルトの名無しさん2005/09/06(火) 20:56:52
>>360
call system("cp hoge fuga")
0362デフォルトの名無しさん2005/09/06(火) 23:06:16
>>360
ファイルの中身をコピーしてから「何をしたい」のかを
示さないと、>>361のような恐らく望んでいない回答を
されて、再度質問をすることになりはしないか?
03633602005/09/07(水) 14:22:24
>361,362
申し訳ありませんでした。
ファイルに、新たな内容を追加したいということです。
A.datというファイルがあり、そのファイルの最下部にフォートランで計算
した値を追加したいのです。

ですから、新たなファイルをopen文で作成して、A.datファイル全体をコピーして
、そして追加内容をwrite文で書き込もうかと考えています。そのコピーの方法
を教えていただきたかったということです。

もし他にわかりやすい方法があれば、是非教えていただきたいです。
03643602005/09/07(水) 17:54:05
ちなみに、コンパイラはCompaq Visual Fortran 6.6.0使用してます。
0365デフォルトの名無しさん2005/09/07(水) 18:11:12
>>363
単純に A.datに追加書き込みするだけで良いのなら

open(UNIT=1, FILE='A.dat', POSITION='APPEND')
  :
write(1, *) hoge
  :
close(UNIT=1)
0366デフォルトの名無しさん2005/09/07(水) 21:01:12
>>360
ttp://www.uopmu.ees.osakafu-u.ac.jp/~yabu/soft/fortran.html
12. 文字型変数に対する read
15. read 文実行時のエラー処理

でどうですか?
0367デフォルトの名無しさん2005/09/07(水) 21:20:50
>>360
別のファイル名で作成して、call systemを使わないなら
FORTRAN90で

character(len=100) :: buf
open(io1,file='hoge',status='old')
open(io2,file='fuga',status='new')
do
read(io1,'(a)',iostat=iostat) buf
if(iostat/=0) exit
write(io2,'(a)') trim(buf)
enddo
close(io1)
write(io2,'("tekito")')
....
close(io2)
0368デフォルトの名無しさん2005/09/10(土) 01:23:52
配列の大きさを求めた後で配列宣言したいのですが、
プログラムの途中で real::配列 としてもエラーになります。
どうすればよいですか? 
0369デフォルトの名無しさん2005/09/10(土) 02:05:28
自己解決しました
0370デフォルトの名無しさん2005/09/10(土) 14:34:18
>>368
エスパー募集をやめる。
エラーと言っても様々なエラーがある訳で。
0371デフォルトの名無しさん2005/09/14(水) 20:05:19

work_dir に a.out と 01,02…,099,100というディレクトリが既にある
として下さい。その時に、

do j=1,100
i = system("./a.out > memo")
i = system("mv memo ./j")
end do

のような事をしたいのですが、何か上手い方法を御存知の方はいないでしょうか?
system=("")の中で変数を使えないかという事なのですが、どうでしょうか?
ちなみに訳合ってshell scriptで、というのは無理なんです。
0372デフォルトの名無しさん2005/09/14(水) 20:21:41
>371

内部WRITEで文字列を生成してsystemにわたせば?


03733712005/09/14(水) 20:52:12
372さん、書き込みありがとう御座います。
仰ってるのってこんな感じですか?

character ccc*3
do j=1,9
write(ccc,10)j
i = system("./a.out > memo")
i = system("mv memo ./ccc")
end do
10 format('00',i1)

でもこれでは普通に ccc ってファイルができてしまいます・・・。
変数であることをどう認識させるのですか??
$ccc でも @ccc でもうまくいってません。
基本的な質問ですいません。。
0374デフォルトの名無しさん2005/09/14(水) 23:27:39
system("mv memo ./"//ccc)
か
character*100 cbuf
cbuf = "mv memo ./"//ccc
call system(cbuf)
とかでいけるかな

自信はないけど、こんな感じでいけるんじゃね


03753712005/09/15(木) 00:07:02
374様
Thanks a lot !!
これで納期に間に合いそうです!w
m(__)m
0376デフォルトの名無しさん2005/09/15(木) 00:48:33
VBからFortranのdllを呼び出すサンプルプログラムをうpしていただけませんでしょうか?
変数(配列になっているやつも)の引渡しの部分も書かれているやつで。

ネットでサンプルプログラムを探しているのですが、なかなか見つからなくて困っております。
0377デフォルトの名無しさん2005/09/15(木) 01:40:16
>>376
ttp://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/pg/pg18_05.htm
ttp://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/pg/pg08.htm
0378デフォルトの名無しさん2005/09/16(金) 17:17:32
fortran で表形式のデータに対して SQLの sort やjoin みたいなことが出来るライブラリ等は無いでしょうか?
行列演算と、データベース的な処理の両方が必要なのですが、fortranは行列に偏っているように思われます。
(科学技術分野では当然か)
0379デフォルトの名無しさん2005/09/16(金) 19:36:47
>>378
使用したことはないので目的に合うかどうか判りませんが
Windows用ならODBCデータベースにアクセスするライブラリがあるようです。

f90SQL
ttp://www.canaimasoft.com/f90sql/index.htm

Windows Fortranによるデータベースの利用 (3月2日 5-10)
ttp://platypus.lns.tohoku.ac.jp/Program.htm#5th
0380デフォルトの名無しさん2005/09/22(木) 15:33:19
>>379 ありがとうございます。しかしDB操作で無くて、プログラム中でSQL的なデータの加工がしたいので、
それは使えません。自作するしかないかもしれません。
0381デフォルトの名無しさん2005/09/25(日) 12:02:40
Intel FORTRAN9を購入した。
自動で並列化してくれつという宣伝につられた。
確かにタスクマネージャーをみると2個とも計算しているっぽい。
しかし、COMPAQのCVF8でコンパイルしたものと比べて(これは1つのCPUが動いている)
全然変わらない。
試したのはCAVITY流れの非定常計算(自作)で、同じマシンで両者を比較。
PentiumD 820を残った少ない予算で購入したのに・・・。
これまで使っていたPentium4 560のほうが速い。意味がなかった。
FORTRAN77形式で書いたのがまずいのかな。
(でも並列化してくれているし)
0382デフォルトの名無しさん2005/09/25(日) 14:19:03
自動並列化がうまくいく確率なんて相当低そう。
PenDを無駄にしたくないならOpenMPで並列化してみ。
たいして難しくないはず。
0383デフォルトの名無しさん2005/09/25(日) 17:43:00
>>381
自動並列化は全然役に立たない。多分、非常にシンプルなプログラムに限ってその効果が現れると思われ。
382の言うようにOpenMPで自分で並列化していくしかない。
0384デフォルトの名無しさん2005/09/25(日) 19:54:51
>>383
多分、並列化の技術の使いかたをイメージできてないんじゃない?
自動並列化は役に立たないんじゃなくて、上手く並列化されるようにプログラムを変える
数式を解きやすいように変形するのと一緒
0385デフォルトの名無しさん2005/09/26(月) 00:43:42
>>384
それでうまくいけば誰もOpenMPやpthread使わない。

数百行のソースなら簡単だけど。
03863812005/09/26(月) 09:40:25
並列化計算は概要を読んだだけでほとんど勉強していない。
インテルのホームページを読むとこれまでのプログラムのままでも
多少の効果は期待できそうなことが書いてあったので。

自動並列化: インテルVisual Fortran コンパイラには、
ループを自動的にスレッド化する自動並列化機能が搭載されています。
このため、並列化によるマルチプロセッサ上でのアプリケーション・パフォーマンスの改善を
手軽に実現できます。自動並列化機能は安全に並列実行できるループを検出し、
これらのループに関してマルチスレッド・コードを自動的に生成するため、
イタレーションのパーティショニング、データの共有、スレッドのスケジューリング、
同期化といった低レベルの細かい作業をユーザが行わなくても並列化が可能となり、
マルチプロセッサ・システムやハイパー・スレッディング・テクノロジ対応システムの強力な
パフォーマンスを活かすことができます。並列実行ループのベクトル化機能や、
ソフトウェア・ベースのスペキュレーティブ・プリコンピュテーション新機能など、
ハイパー・スレッディング・テクノロジ対応インテルプロセッサでのパフォーマンスの
向上につながる最適化の改良が行われました。


それにしても一応デュアルで動いているのに効果が全くないのは
どういうこと?思ったほど高速化しなかったな、というのは
よくあることだけど、計算が振り分けられれば多少は高速化すると
思うのだが。
タスクマネージャーをみる限りでは2個ともフルに動いていそうなのだが。
0387デフォルトの名無しさん2005/09/26(月) 13:01:56
次のような単純ループのプログラムを自動並列化オプション付きでコンパイルしても、
CPU占有率は75パーセントがいいとこだったよ orz...

program Console1
implicit none
integer i, j, k
integer, parameter :: NLOOP=1000
real(8) :: dum

dum=0.0d0
do i=1, NLOOP
do j=1, NLOOP
do k=1, NLOOP
dum=dum+sin(k*1.0d0)
enddo
enddo
enddo
write(*,*) dum

end program Console1
0388デフォルトの名無しさん2005/09/26(月) 13:20:29
sinなんて関数呼んだら、ループが並列化していいかどうか
判断できないんじゃ?
03893812005/09/26(月) 14:08:23
行列の積だと100%になったよ。
ただし、行列×ベクトルだとコンパイルした時点で並列化してくれない。
もっとも多い計算が行列×ベクトルなのに・・・。
たとえば、これだと100%になった。


PROGRAM REI
IMPLICIT NONE
INTEGER ::I,J
REAL(8),DIMENSION (5000,5000) :: A,B,C
DO I=1,5000
DO J=1,5000
A(I,J) = 1.1d0
B(I,J) = 2.1d0
END DO
END DO
C = MATMUL(A,B)
STOP
END PROGRAM REI
0390デフォルトの名無しさん2005/09/26(月) 14:41:03
>>389
MKLに入ってるblasだったら並列化されてるから、それ使えばいいんじゃない?
0391デフォルトの名無しさん2005/09/26(月) 19:31:31
コンパイラに金を出したみたいだし、タスクマネージャとかいってるから
Winユーザでしょ?
てことはMKLも有償じゃぁ…
0392デフォルトの名無しさん2005/09/26(月) 23:44:50
>>389
って事はベクトルは行列にしてから計算しろってことじゃね?
03933812005/09/27(火) 00:05:57
>>391
お察しの通りWindows版です。
Linuxは扱い方がよくわからず、いろいろ不便なので
(インストールしてネットワークの基本的な設定ができる程度)
軟派ですがWindowsを使っています。
>>392
B(5000,1)にしろということでしょうか?(単純すぎ?)
この方法では並列化しませんでした。
うまいアルゴリズムを考えなくては。
並列化とOpenMP勉強します。
皆様、アドバイスありがとうございました。
0394デフォルトの名無しさん2005/09/27(火) 00:29:17
>>393
なんとなくだがB(5000,5000)のB(x,x)だけ使えばいいんじゃね?
0395デフォルトの名無しさん2005/09/27(火) 15:26:06
>>388
自動並列化がそんなにバカなら使い物にならないな。
0396デフォルトの名無しさん2005/09/29(木) 01:31:25
ご教授おねがいします.

module variables
    real(8),dimension(:,:),allocatable :: x
    integer :: i,j
end module
としてモジュールをつくり,
program main
    use variables
    implicit none
    read(*,*) i,j
    allocate( x(i,j) )
    !ここで配列xに値を代入する操作を行う
    call test()
end program
subroutine test()
    use variables
    implicit none
    !配列xに対する操作・演算を行う
end subroutine

というプログラムを実行した場合,
配列xに代入された値は,サブルーチン内から確実に参照できるのでしょうか?
(正確な値が参照できる保障はあるのでしょうか)
また,モジュール内でallocatable属性の変数を宣言し,
プログラム内で動的確保,サブルーチン等で共有することは
プログラミングの作法として許されているものなのでしょうか?
なお,コンパイラはCompaq Visual Fortran 6.1を使用しています.
よろしくお願いします.
0397デフォルトの名無しさん2005/09/29(木) 20:37:20
>>396
普通はmodule内に、allocateするためのルーチンを作っておいて、それを呼びます。例えば

module variables
implicit none
    real(8),dimension(:,:),allocatable :: x

contains
subroutine alloc_x(n1,n2)
implicit none
integer, intent(IN) :: n1, n2
allocate(x(n1,n2))
end subroutine

end module

みたいな感じで作っておいて、呼び出し側では

use variables
read(i,j)
call alloc_x(i,j)

で配列確保します。メリットはC++ライクなカプセル化ですかね。
03983962005/09/29(木) 23:35:56
>>397
ありがとうございました.

Fortran90で,とりあえず動くプログラムを作ることばかりを考えてやってきてたので,
一度プログラミング作法やFortran90の仕様などをきっちり勉強したいと思います.
0399デフォルトの名無しさん2005/09/30(金) 00:45:16
fortran90でOOPぽいプログラミングするなら

http://www.cs.rpi.edu/~szymansk/OOF90/F90_Objects.html
http://www.amath.washington.edu/~lf/software/CompCPP_F90SciOOP.html

も読んどいたらいいかもね。
0400デフォルトの名無しさん2005/09/30(金) 03:57:35
>>399
そういえば、Fortran2000だったか2005だったかで、OOP支援機能がなんか入るんじゃなかったっけ?
0401デフォルトの名無しさん2005/10/01(土) 12:38:09
>>396
module variables
    real(8),dimension(:,:),allocatable :: x
    integer :: i,j

CONTAINS
subroutine test()
    use variables
    implicit none
    !配列xに対する操作・演算を行う
end subroutine

end module
とするのがこの場合の本来的な型。
0402デフォルトの名無しさん2005/10/02(日) 10:32:07
>>396
module variables
    real(8),dimension(:,:),allocatable :: x
    integer :: i,j
!
CONTAINS
subroutine test()
    use variables
    implicit none
    !配列xに対する操作・演算を行う
end subroutine
!
end module
とするべし。
allocateに関しては問題なし。
0403デフォルトの名無しさん2005/10/02(日) 11:20:50
>>402
subroutine test() 内の use文は不要じゃない?

後、配列の大きさは size() で調べられるから
モジュール内の i, j は不要な気もするけど
そこら辺は好みの問題か。
0404デフォルトの名無しさん2005/10/02(日) 11:47:08
variable::test() みたいに呼べればいいのにな。
0405デフォルトの名無しさん2005/10/02(日) 18:27:28
質問

学生時代ずっとf77ばっかりで
会社に入ってようやくf90をやりました。

配列式、メモリの動的確保、do-enddoとか
便利なところは感じますが疑問もあります。

moduleってどんなメリットがあるのでしょう?

使い方も難しくて利点がよくわかりません。
0406デフォルトの名無しさん2005/10/03(月) 14:12:09
commonとincludeを使わないで良くなるからmoduleのほうが好きだ。
コードもきれいに書けるし。
0407デフォルトの名無しさん2005/10/03(月) 23:05:56
>>405
メリットとしてはcommonに比べて安全に変数を共有できる、とか
モジュール内のサブルーチンを使う時にコンパイラが引数の型チェックをしてくれる
などかな。

使い方はここらへんを参考にして
ttp://ace.phys.h.kyoto-u.ac.jp/~tomita/education/fortran90/sec9.html#9.3.
ttp://www.mri-jma.go.jp/Project/mrinpd/coderule.html
0408デフォルトの名無しさん2005/10/04(火) 18:54:50
研究でVAX FORTRANという言語を使わないといけないんですが
開発環境はどこでダウンロードできますか?
探したんですが見当たらなくて 誰か教えてください。。。
04094052005/10/04(火) 21:26:05
>>406
>>407
ありがとう。

理解したとは言えないけど、なんとなくわかった気がします。

学生時代、研究でドイツ人の書いたf90ソースを改良しなくてはならないのに
f77しか知らずに、moduleとかすごい嫌いになったんですよね、、。

勉強してみようかな、、。

04104052005/10/04(火) 21:27:35
>>407
すいません、追加で質問です。
commonはなぜ危険なのでしょうか?
0411デフォルトの名無しさん2005/10/04(火) 21:40:36
どこで変更しているかが明示されないから
0412デフォルトの名無しさん2005/10/04(火) 21:55:13
commonとequivalenceはgoto文と同じくらい凶悪です。
0413デフォルトの名無しさん2005/10/05(水) 00:20:57
>>408
はい、これ↓。Hobbyistなら非商用に限り無料で使えるOpenVMS
ttp://www.openvmshobbyist.com/

AlphaかVAX用だけどね。

VAX互換で良ければIntel Fortranあたりでも使えば?
(一応、DEC→Compaq→HP→Intelの流れでVAX FORTRANがご先祖様だし)
0414デフォルトの名無しさん2005/10/05(水) 00:23:19
Microsoftがfortranに手を出さないのは何故でしょうか?
0415デフォルトの名無しさん2005/10/05(水) 00:53:36
>>414
つ 【Microsoft Fortran PowerStation】
0416デフォルトの名無しさん2005/10/05(水) 08:05:03
>>413
ありがとうございます
助かりますっ
0417デフォルトの名無しさん2005/10/05(水) 13:15:25
>>415
なんで廃れたのかね?
0418デフォルトの名無しさん2005/10/05(水) 20:48:45
売れないからでしょ
0419デフォルトの名無しさん2005/10/06(木) 00:43:28
姫野ベンチってさ、FortranのよりCの方が30パーセントくらい速いんだけど、そんなもんなの?
0420デフォルトの名無しさん2005/10/06(木) 22:53:30
どのFortranやねん
0421デフォルトの名無しさん2005/10/07(金) 21:05:19
intel visual Fortranの購入を考えているんですが、これのマニュアルにはネット接続環境でないと
アップデートができないとありますが、インストールしたあとでアップデートを受けたい場合には
ネットに接続し、手動でオンライン認証を受ける必要があるんでしょうか?
0422デフォルトの名無しさん2005/10/07(金) 21:49:31
Visual FortranオンリーでGUIなプログラムつくっている人っているのかな?
0423デフォルトの名無しさん2005/10/08(土) 00:39:21
>>421
アップデート方法は基本的に
インテルのプレミアサポートから新しいバージョンを丸ごとダウンロードして
古いバージョンをアンインストール→新しいバージョンをインストール

プレミアサポートにログインするためには予め登録しておいたIDとパスワードが必要。
0424デフォルトの名無しさん2005/10/09(日) 10:49:17
c2fはどこにあるんでしょうか?
>6のリンク先のリンク先は切れているし
c2f.zipでググってもリンク切ればっかりで見当たりませんでした
0425デフォルトの名無しさん2005/10/09(日) 13:39:08
>>424
ttp://home.earthlink.net/~dave_gemini/c2f.zip

ttp://www.talkaboutprogramming.com/group/comp.lang.fortran/messages/161252.html
> I lost my copy of C2F.ZIP file when I changed computers/ISP in last year,
> and now have a request to make it available again.

・・・(´Д`;)
0426デフォルトの名無しさん2005/10/10(月) 00:57:00
>425
ありがとうございます
0427デフォルトの名無しさん2005/10/10(月) 17:34:42
簡単な質問ですいませんが、正の実数Xを入力して
その小数部を出力するにはどうすればいいんですか?
0428デフォルトの名無しさん2005/10/10(月) 17:39:46
簡単な質問ですいませんが、正の実数Xを入力して
その小数部を出力するにはどうすればいいんですか?
0429デフォルトの名無しさん2005/10/10(月) 18:17:14
(Xの小数部) = (実数X) - (Xの小数部を切り捨てた値)
0430デフォルトの名無しさん2005/10/10(月) 18:39:24
x = x - real(int(x))
0431デフォルトの名無しさん2005/10/10(月) 21:41:12
文字処理でcharacter型変数に格納されている文字数を取得したい場合
どうすればよいでしょうか?
C言語ではヌル文字があって比較的簡単だったのですが,Fortranでは無いようなので…
0432デフォルトの名無しさん2005/10/10(月) 21:56:15
WRITE(*,*) LEN_TRIM(' Hello, World! ')
04334312005/10/10(月) 22:00:38
>>432
即レスありがとうございます.
できました!
0434デフォルトの名無しさん2005/10/11(火) 00:37:49
>>429さん>>430さん
ありがとうございます。
お礼を言うのが遅くなってすいません…。
0435デフォルトの名無しさん2005/10/13(木) 08:25:31
Fortran90/95
の入門書としてお勧めの書籍があれば教えてください.

http://www.amazon.co.jp/exec/obidos/ASIN/4894713217/
一応これがいいかなって思っているんですが.
0436デフォルトの名無しさん2005/10/13(木) 12:14:08
IntelのMKLって試用期間過ぎてもスタティックライブラリをリンクして使えてるんだが、こんなもんなの?
0437デフォルトの名無しさん2005/10/13(木) 20:15:15
>>435
俺もその本使ってる。
分かりやすくはないんだけど、本屋で立ち読みした他の本は
もっと分かりにくかったのでその本を買ったよ。

でも、ちょっとFortranに慣れてきたらその本より
ttp://www.rs.kagu.tus.ac.jp/yama/f90/f90-lang.html
の方がよっぽど役に立つよ。
04384352005/10/13(木) 22:47:23
>>437
おおありがとう.
リンク先も参考にさせて頂きます.
0439デフォルトの名無しさん2005/10/18(火) 15:29:33
エラーが出てしまい、自力での解決が難解なので、皆さんの知恵を貸してください。

プログラムの一部に

E(I)=1.0D00/DSQRT(DREAL(X(I,I)))

という行があるのですが、新型のPC&コンパイラにしたところ、今までは出てこなかったエラーが出てきてしまいました。
エラー表示は

fortcom: Warning: ファイル名.f line 2401: This argument's data type is incompatible with this intrinsic procedure; procedure assumed EXTERNAL. [DREAL]
E(I)=1.0D00/DSQRT(DREAL(X(I,I)))
------------------------------^
/tmp/ifortIC65Ir.o(.text+0x18f5d): In function `secula_':
: undefined reference to `dreal_'
/tmp/ifortIC65Ir.o(.text+0x19264): In function `secula_':
: undefined reference to `dreal_'

といった感じです。dreal、dsqrtの両方のdを外せば解決はしますが、精度が低くなりすぎて使えません。
dをつけた状態でコンパイル時にエラーが出なくなるにはどうしたらよろしいでしょうか。

PC構成は、OSがsuse9.1、コンパイラが無料版のintel fortran 9.0です。
古いPCですと、OSがredhat6.2、コンパイラがabsoftのpro fortranです。

よろしくお願いします。
0440デフォルトの名無しさん2005/10/18(火) 15:49:49
dをつけた状態と書きましたが、精度が失われなければ問題ありません。
あるいはより高い精度になる分にも一向に構いません。

ただ、これよりも精度が劣ることがないようにしていただきたいのです。
0441デフォルトの名無しさん2005/10/18(火) 17:39:45
>>439
種別型パラメタがあってないのかも。
・E(I)=1.0D00/DSQRT(DREAL(X(I,I),KIND=8))
・E(I)=1.0D00/DSQRT(DBLE(X(I,I)))
のどっちかでコンパイル通ったりしない?

種別型パラメタって、
REAL*8の"*8"とかREAL(8)の"(8)"ってやつね。
04424392005/10/18(火) 18:27:56
>>441
ありがとうございます。
下の方法にてコンパイルが成功いたしました。

現在実際に計算しています。
精度については結果待ちなので明日にならなければ分かりませんが、
いい結果が出ることを祈ってます。
04434392005/10/19(水) 12:05:12
精度に関しても特に問題ありませんでした。
本当にありがとうございました。
0444ハーピィ2005/10/20(木) 01:07:50
E・∇・ヨノシ <444ゲット♫
0445デフォルトの名無しさん2005/10/22(土) 04:25:33
form='binary' で open して読み書きしたいんだけど g95 だとコンパイルエラーになる・・・
何か対策無い?
0446デフォルトの名無しさん2005/10/22(土) 11:35:33
>>445
form='binary' のかわりに access='stream' を使うとか。
0447デフォルトの名無しさん2005/10/22(土) 14:46:03
普通、 unformatted使わないか?
0448デフォルトの名無しさん2005/10/22(土) 15:51:40
>>446
ありがとー。
access='stream' で望んだ結果が得られました。
0449デフォルトの名無しさん2005/10/24(月) 13:01:06
これいいかも

http://www.nag-j.co.jp/FortranBuilder.htm
0450デフォルトの名無しさん2005/10/28(金) 00:21:02
WinXPユーザーなんですが、
Salford FTN95でコンパイルしたものと
g95でコンパイルしたexeのサイズがぜんぜん違うんです。(10倍ぐらい)
(30行くらいのものです)
Salford FTN95はいちいち最初にメッセージが出るんでコンパイラーを変えたいんですが
g95をこのまま使い続けてもいいんでしょうか。
0451デフォルトの名無しさん2005/10/28(金) 00:26:13
>>450
どっちかがスタティックリンクをしているから大きくなる?
04524502005/10/28(金) 00:47:24
>>451
そうなんですか。気にしないでおきます。たいしたプログラムは組みませんし。
ありがとうございました。

ところで、gfortranとg95はどちらが優れているのでしょうか。
とにかく早く計算したいんです。
別にこの二つに限らないのでWinXPで動くフリーのFortran90コンパイラーを紹介してください。
04534512005/10/28(金) 00:52:20
「早く」ということは、実行速度はともかく短期間で
実行可能なプログラムを作りたいということと考えれば
g95でないかな。gfortranではコンパイル出来なかった
プログラムがg95では出来たことがある。
フリーのコンパイラの件は知らん。
0454デフォルトの名無しさん2005/10/28(金) 12:06:54
>>452
貧乏なら無償のIntel FortranをLinuxにインストール。
金があるなら、Windows版Intel Fortranを買え。アカデミック版なら大した金額じゃない。
お遊び程度なら、Linux上でgfortranかな。
0455デフォルトの名無しさん2005/10/28(金) 16:17:00
>>454
Linux上で、っていう要件を満たせるなら、遊びでも素直にIntel Fortran使ったほうが吉かと。
0456デフォルトの名無しさん2005/10/28(金) 17:37:07
>>452
coLinux上でIFC
■ このスレッドは過去ログ倉庫に格納されています