1read 100read
2012年3月プログラム199: FORTRAN W (954) TOP カテ一覧 スレ一覧 2ch元 削除依頼
くだすれDelphi(超初心者用)その54 (239)
自然言語処理スレッド その3 (462)
オブジェクト指向は本当に正しいのか? (234)
やってて楽しいプログラミング言語は? 3言語 (912)
Java系スクリプト言語Groovy (748)
「Cでプログラミングするには人生は短すぎる」か? (310)

FORTRAN W


1 :06/11/12
FORTRAN総合スレッドです。
FORTRAN77/90/95/2003, HPF等、FORTRAN全般に関する話題を書き込んで下さい。
・FORTRAN関連情報
お約束だが、まずは自分で調べよう
http://www.google.co.jp/
x86で動作するFortranコンパイラ
http://www.nminoru.jp/~nminoru/programming/x86-fortran.html
The Fortran Company
http://www.fortran.com/
Polyhedron Software
http://www.polyhedron.co.uk/
Google Directory - Fortran
http://directory.google.com/Top/Computers/Programming/Languages/Fortran/
・前スレ
FORTRAN III
http://pc8.2ch.net/test/read.cgi/tech/1104724162/
FORTRAN II
http://pc5.2ch.net/test/read.cgi/tech/1068351911/
Fortran
http://pc2.2ch.net/test/read.cgi/tech/1003214738/

2 :06/11/12
・フリー/無料評価版のコンパイラ
The G95 project (Fortran95)
http://www.g95.org/
GCC (g77) (今のところ FORTRAN77)
http://gcc.gnu.org/
Salford FTN77/95 Personal Edition (Fortran77/95, Windows, 要登録)
http://www.salfordsoftware.co.uk/software/downloads/compilers.html
FTN77/95のインストール方法
http://www.coastal-env.k.u-tokyo.ac.jp/koibuchi/fortran.htm
the F Programming Language (Fortran90のサブセット, Win/Linux/Solaris)
http://www.fortran.com/F/compilers.html
Open Watcom Fortran Compiler (FORTRAN77)
http://www.openwatcom.org/
Intel Fortran Compiler (Fortran95, 無料評価版(Win)/非商用バージョン(Linux), 要登録)
http://www.xlsoft.com/jp/products/download/download.html
Lahey/Fujitsu Fortran (期限付きトライアル版は終了した模様)
http://www.lahey.com/downloads.htm
・ドキュメント
Compaq Visual Fortran オンライン・ドキュメント
http://www.xlsoft.com/jp/products/intel/cvf/docs/index.html
Intel Fortran Compiler 日本語版マニュアルのダウンロード (要登録)
http://www.xlsoft.com/jp/products/intel/download.html
富士通Fortranオンラインマニュアル
http://www.cc.nao.ac.jp/fsunman/japanese/Fortran/index.html
FORTRAN77 standard
http://www.swcp.com/~walt/F77_std/f77_std.html
http://www.fortran.com/fortran/F77_std/rjcnf0001.html
JISデータベース
http://www.jisc.go.jp/

3 :06/11/12
  ヽ/l l ニ|ニ           ,.、-''"..;:;:;:;:;:;:;:... `'ヽ、
  (   ( ̄   ̄)      /....:::;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;.....ヽ、/ ̄ ̄ ̄ ̄\/
    ̄    ̄         i_;;、:_;、;_;、;、;、、ィッ.;:;:;:;:;: /  興  F     君
 ,.、-──-- 、.,_     ,、  |      ,,,,,,  / ;:;:;:;:;:;: |   味   O      :
          ``''--イ ,),、,! '''''        \ ;;;;;;;;;_|   が   R      :
              ヾー'゙ |ヒニニュ ャニ,ニニ、> 〉;; / _|   あ  T
       ノ l  ハ  l ヾ トイ `!゙l)_j   ' iリ__, `  }ii l f'ト〉   る  R
    _,,.ノ _ノ / ノ ノ ノノ!_丿 |   l   ` " '''   }ii リノ |   の   A  |\__
      ノ ,、ィ'-=z=F [_   .l! .{   、     ィ!ii;}' ノ|   か   N   |
   -‐''゙_ノ ,ノ  '゙ (ソ   ヽ   {! ゙ー<⌒'     ,ミi;i;}ー'゙ |   ね       |
  、 ィッ>f「  _,,二-   ヽ.  }i、  -===-'  リiii;ツ   |   ?       |
   `〒T〔!|       r ,_ノ _ノ}lli,  -r=‐  ,i;llilili|   > _____/`ヽ、
     ゙、ヽ`!  l   _ _」 // '}llli, ,;i|i;, ,,ii;ilililll'゙リ /  ̄ l l      ,、 ''⌒゙ヽ、
     `ト.、!  lj  (__l、/  |   ゙ト!llllllllllliillllllllヅ_、-゙    /,l l       /
     l ゙ト、     t'゙ |   |  | |、'lトllトllトツ "´    // l l       /
   ,ィ、化ァ ',\       l 〉  |   | | ゙、 //∧    / /  l l     l
(爪((、`ー'′ ', `''t‐--'′〉ト、 |   | |. Vハ彡 ∧  /    |_L、  i | /
 ̄ ̄ ̄`¨`''ー--ニL_   `!、 `! l ̄`''┴--┴'-'゙-─…''"´_,, ィ|  l |/
            h   ヽ ` ', | O``''────…'''"´  O',゙:、  l |/

4 :06/11/12
機種依存文字使うなボケ失せろ

5 :06/11/12
>>4
きたねー言葉使うな糞野郎!


6 :06/11/12
数値積分が使えるフリーの数値計算ライブラリありませんか?

7 :06/11/12
>>6
NetLibへ池。66時代のものがごまんとあるぜ。

8 :06/11/12
IMSLがあるんじゃね?

9 :06/11/12
>>8
IMSLは有料パッケージソフトだぞ。

10 :06/11/12
IMSLは10万以上する予感
LAPACKに積分はふくまれておらんの?

11 :06/11/12
コンパイラより高い・・・

12 :06/11/12
このスレのエキスパートたちは有料パッケージとか使っておられるのですか?

13 :06/11/12
>>7
Netlib行ったが数が多すぎて何がなんだかわからない。
これをどう使えばいいかすらわからない。
見た感じプログラム単体が落っこちているだけにしか見えないが
どうやってってこれを呼び出して使うんだろうか。

14 :06/11/12
>>10
LAPACKは元々、LINPACK+EISPACKで、それぞれ密行列の線形方程式と固有値問題の
ルーチン集なので積分は主題から外れていると思う。
LINPACK、EISPACKは60年代の米英の国家プロジェクトだったように記憶している(記憶曖昧w)。
LAPACKは基本的にそれを77化してBLASの上に統一化し、一部アルゴリズムを改良・拡充した
ものだろう。その辺の経緯や順序はよくわかんね。
>>13
NetLibとはそういうところだw 埃の積もった土蔵見たいなもんだ。
結局、膨大すぎて何が欲しいか分かってないと使えないw
NumericalRecipesのページへ行ってみるのが吉かもしれない。
とりあえず専門家的にはベストで無いにしろ、素人が馬鹿な外れを引かされることは無いはず。
ただ本版のソースはしばしばBug入りなのでめくらめっぽう使うのはヤヴァス
有料ソースは直っていたりするw

15 :06/11/12
初心者は富士通のサブルーチン付きコンパイラ買うのがbestじゃね?
難易度も予算も

16 :06/11/12
Intel Math Kernel Libraryでok

17 :06/11/12
MKLって積分ルーチン入ってるの?

18 :06/11/12
多分ない
というか、フリーで有名どころのパッケージには積分ルーチンは無い予感

19 :06/11/13
以下のプログラムを実行すると、
結果が
1016010618
となります。
なぜでしょうか?訳が分かりません
環境はg95@cygwinです。
program Interpolation
print *,Lorentz(1.5)

end program Interpolation
real function Lorentz(x)
real :: x
Lorentz = 1/(1+25*x*x)
return
end

20 :06/11/13
メインプログラムにLorentzの型定義がないからinteger扱いされてんじゃねーの?

21 :06/11/13
implicit noneで解決しました。
1時間も時間を食いました。

22 :06/11/14
自由書式で書くなら関数・サブルーチンは内部手続きにするか、MODULEにするか
INTERFACE宣言してから使おう。

23 :06/11/14
>>20,22
が正しい。
>>19はあまりに中途半端。きっちりと厳格なF90式で書くか、F77式に暗黙の型を守るべき。

24 :06/11/14
INTEL FORTRAN用のBLAS/LAPACKだが、AMDのcore-math-libraryにWindows用もうpされている。
昔はLinux用の一部ルーチンだけだったが、いまや全ルーチンを網羅したようだ。
漏れはAMDなので、誰かIntelChipでも使えるか試してくれ。
http://developer.amd.com/acml.jsp

25 :06/11/14
fortran中で他のexeを実行できるようにするにはどうしたら良いですか?
fortranで作られたexeなんだけどソースくっつけるのがめんどくさいんで・・・w

26 :06/11/14
>>23
FORTRAN(90)の書籍で、定番の物ってありますか?

27 :06/11/14
これからフォートランを勉強するのですが、
とても解りやすい入門書を教えていだたけませんか?
プログラミング自体、あまり経験がありません。
Cを少しやりました。
よろしくお願いします。

28 :06/11/14
xの値を、1,10,100,1000,10000,100000,1000000の順に変えて
その常用対数、自然対数の値を計算して表示するプログラムを作れ
という課題が出たのですがサッパリ分かりません。
どうかお力添えください。

29 :06/11/14
>>24
Core Duoでもイゴイタ
32bit ifort版はシングルプロセッサ用に最適化されているみたいだが
SSE/SSE2が使えればIntel CPUでもOKのようだ。
>>25
SYSTEM とかそんな感じの関数なりサブルーチンなりが用意されている(ことが多い)。
>>28
X の値を 1 に変える(X に 1 を代入する)
X = 1.
X の常用対数を計算して Y に代入する
Y = LOG10(X)
X の自然対数を計算して Z に代入する
Z = LOG(X)
X, Y, Z の値を順に表示する
WRITE(*,*) X, Y, Z

30 :06/11/14
倍精度実数と4倍精度実数では実行速度は変わってしまいますか?

31 :06/11/14
>>30
死ぬほど違う。 
倍精度までは数値演算プロセッサの助けでハードウェア演算するが、
4倍精度はソフトウェアで浮動小数点演算をするので遅くなる。
64BitCPUなら若干状況は改善するが本質においては変わらない。
DECのアルファーCPUは4倍精度も微妙に早かったが、特殊な命令セットがあったためらしく、
64bitCPUだからといってよくなるわけでもないようだ。

32 :06/11/14
>>29
DO文で書かないといけないのですが
どうすればいいんでしょうか・・

33 :06/11/15
>>31
詳しいレスサンクス!

34 :06/11/15
>>26
残念ながらあまりいい本は無い。
今、手に入りやすいのはこれ。
http://www.amazon.co.jp/gp/product/4563014095
しかし、F77の癖を引きずっていて、あまりいい書き方をしていない。
著者は京大のおっさんらしく、WEBで同等の内容のものを見られる。
アドレスはアマゾンのレビューに書いてある。
英語でよければ、この辺とか、
http://www.lahey.com/elfpage.htm
この辺のEssential Fortranあたりが学習用サブセットになっていて、純粋F90を学べる。
http://www.fortran.com/F/books.html
しかし、現実世界ではF77ソースがあふれているので微妙ではある。
実際上記のものは教育用としてもはやらなかった。

35 :06/11/15
>>32
   PROGRAM chinpopo
   DO 10 i = 0, 6
    x = 10.0**REAL(i)
y = LOG10(x)
z = LOG(x)
WRITE(6, *) INT(x), y, z
10 CONTINUE
   END
>>35

36 :06/11/15
  complex(8) c
において,
  c=(0.d0, 0.d0)
として初期化するのも,
  c=0.d0
として初期化するのも全く同じことなのですか?

37 :06/11/15
DO文を使用して,xの値を,1,10,100,1000,10000,100000,1000000 の順に変えて
その常用対数および自然対数の値を 計算して表示するプログラムを作れ.
なお,計算結果は書式の指定をして,x, log10(x), log(x) の順に表形式で表示すること.
また,計算結果が整数となるものは整数型(In),実数となるものは実数型(Fn.m)または指数型(En.m)で出力すること.
program report5
implicit none
integer :: x
real :: y,z
write (*,*) 'x='
read (*,*) x,log(x),log10(x)
do 10 i = 0.6
x=10.0**real(i)
y=log(x)
z=log10(x)
write (6,)
end do
stop
end program report5
何処がおかしいんでしょうか?

38 :06/11/15
>>37
read (*,*) x,log(x),log10(x)
どこに入れたいの?
たぶん、その穴じゃないわよ

39 :06/11/15
>>37
>read (*,*) x,log(x),log10(x)
>do 10 i = 0.6
>x=10.0**real(i)
>y=log(x)
>z=log10(x)
>write (6,)
ここら辺が間違ってる。
どこが間違いなのかわからないときは、とりあえずコンパイラ様にソースを渡して
文句を言われたところを上から順に直していくのも1つの手だ。
だれかくだすれの次スレ立ててくれ。

40 :06/11/15
>>37
>>35をもういっぺん見ろ!
>>39
重複スレをクダスレにするか?

41 :06/11/17
>>40
タイトル一緒だから混乱しそうw

42 :06/11/17
>>35
WRITE (6,*) が分かりません
>>37の問題の書式の指定はこれでいいんでしょうか

43 :06/11/17
WRITE(6, '(I10, F15.7, F15.7)') x, y, z
もう少し教科書嫁!!
こんな感じでw

44 :06/11/17
>>37 がんばったけど書式がうまくいかなかった。ゴメン
c DO文を使用して,xの値を,
c 1,10,100,1000,10000,100000,1000000 の順に変えて
c その常用対数および自然対数の値を 計算して表示する
c 計算結果は書式の指定をして,x, log10(x), log(x) の順に
c 計算結果が整数となるものは整数型(In),
c 実数となるものは実数型(Fn.m)または指数型(En.m)で出力.
Program report5
Implicit none
INTEGER i
REAL x

do i = 0, 6
x = 10.0**i
write(*, *) aint(x), log10(x), log(x)
end do

stop
end
c 実行結果
c 1.00000 0.000000E+00 0.000000E+00
c 10.0000 1.00000 2.30259
c 100.000 2.00000 4.60517
c 1000.00 3.00000 6.90776
c 10000.0 4.00000 9.21034
c 100000. 5.00000 11.5129
c 0.100000E+07 6.00000 13.8155

45 :06/11/17
program report5
implicit none
integer :: x
real :: y,z
write (*,*) 'x='
DO 10 i = 0, 6
x = 10.0**REAL(i)
y = LOG10(x)
z = LOG(x)
WRITE(6, '(I10, F15.7, F15.7)') x, y, z
10 CONTINUE
END do
stop
end program report5
こうですか?

46 :06/11/17
Program report5
Implicit none
real :: i,x
do i=0, 6
x=10.0**i
write(*, '(i7, f15.7 f15.7)') x, log10(x), log(x)
end do
stop
end
結果
******* 0.0000000 0.0000000
******* 1.0000000 2.3025851
******* 2.0000000 4.6051702
******* 3.0000000 6.9077554
******* 4.0000000 9.2103405
******* 5.0000000 11.5129251
******* 6.0000000 13.8155107
おかげさまでここまで出来たんですが、どうしても*******が出てしまいます><

47 :06/11/17
>>46
「変数の型」を再勉強してから出直してこい。

48 :06/11/18
>>46
write(*, '(i7, f15.7 f15.7)') x, log10(x), log(x)
   ↓
write(*, '(f15.7, f15.7 f15.7)') x, log10(x), log(x)
にしてみよう・・・
xはrealで宣言されてるからformatを整数表示に指定することはできない.

49 :06/11/18
>>48
>>37の問題を読む感じでは、
write(*, '(i7, f15.7 f15.7)') int(x), log10(x), log(x)
を予期していると思われる。
>>46はもう少し貰った回答例をよく吟味しろw

50 :06/11/18
PukiWiki つくってみた
http://www.moecity.jp/home/fortran/
wikiよく知らない。自由に使ってみてくれ。

51 :06/11/18
f90スタイルで学べるいい文書はありませんかね。
英語か日本語でお願い

52 :06/11/18
>>51
Fortran 標準コーディングルール
ttp://www.mri-jma.go.jp/Project/mrinpd/coderule.html
European Standards For Writing and Documenting Exchangeable Fortran 90 Code
ttp://www.meto.gov.uk/research/nwp/numerical/fortran90/f90_standards.html
上の和訳
ttp://www.mri-jma.go.jp/Project/mrinpd/eurostand.html

53 :06/11/18
>>52
>推奨する書き方 real:: x(n), y(n)
>x(1:n) = y(1:n)


>×推奨しない書き方 x(:) = y(:) または x = y
これはかなりうそ臭いと思う。
x=y の場合と違って、コロン指定子を使うと、いったん暗にコンパイラが
テンポラリ配列にコピーするのでたいてい余分な時間がかかる。
しかし漏れが疑問に思うのは、F77では変数と配列に同じ名前をAとA(10)を指定できて
別物に扱われる様に規格で決まっていたと思うのだが、F90で矛盾が起きないのか・・・
それとも、これはJIS規格だけでANSIやMILでは違っていたのか?

54 :06/11/18
>>53
REAL A
DIMENSION A(10)
DO 10 I=1,10
A(I) = REAL(I)
10 CONTINUE
A = 1.23
WRITE(*,*) A
WRITE(*,*) (A(I), I=1,10)
END
規格上どうなってたかは知らないが g77だと
A = 1.23
の部分でコンパイルエラーになった。
g95では(当然)

55 :06/11/18
× g95では(当然)
○ g95では(当然) A は配列全体と解釈された。

56 :06/11/18
>>54
そうじゃなくて
REAL A, A(10)
が可能だったと思う。

57 :06/11/19
hoge.f: In program `MAIN__':
hoge.f:1:
     REAL A,A(10)
         1 2
Invalid declaration of or reference to symbol `a' at (2) [initially seen at (1)]

58 :06/11/19
たしか変数名と配列名は規格上の定義では別物だった記憶がある。
実際のコンパイラでどうなっていたかは知らん。

59 :06/11/20
Fortran90なんですが,
integer a(1:100)=0
みたな初期化の仕方はよくやるんですか?

60 :06/11/20
×みたな
○みたいな
orz

61 :06/11/20
>>60
よくやる。
しかしその初期化はリンク・ロード時に行われるものなので、
実行行でa(1:100)=0と書くのとは微妙に違う。

62 :06/11/20
>>61
レスありがとう

63 :06/11/20
integer a(1:100)=0
↑これって通る?
integer:: じゃないと通らなかった気が。

64 :06/11/20
拡散方程式の境界値問題をオイラー陽解法で解くための
参考プログラムというものが教科書にあり、まわしたのですが
errorは出ないものの上手くまわりませんでした。
アドバイスを願います。
ちなみにMX=41,KM=30,DT=0.01としています。
PARAMETER(NX=51)
DIMENSION U(NX),UU(NX)
C**** INPUT & CALCULATE PARAMETERS
WRITE(*,*) 'MX (<52: MESH POINTS) ? KM (NUMBER OF TIME STEP) ?'
READ(*,*) MX,KM
WRITE(*,*) 'DELTA T: DT ? '
READ(*,*) DT
DX=1./FLOAT(MX-1)
R=DT/DX**2
IH=(MX+1)/2
I5=.05/DT
IF(I5.EQ.0) I5=1
CALL OUTPUT(U,NX,MX,1)
C**** INITIAL CONDITION
DO 10 I=1,MX
X=FLOAT(I-1)/FLOAT(MX-1)
IF(I.LE.IH) THEN
U(I)=X
ELSE
U(I)=1.-X
END IF
10 CONTINUE

65 :06/11/20
C**** MAIN LOOP
DO 20 K=1,KM
U(1)=0.
U(MX)=0.
IF(MOD(K,I5).EQ.1) CALL OUTPUT(U,NX,MX,2)
C
DO 30 I=2,MX-1
UU(I)=R*U(I-1)+(1.-2*R)*U(I)+R*U(I+1)
30 CONTINUE
DO 40 I=2,MX-1
U(I)=UU(I)
40 CONTINUE
C
IF(ABS(U(IH)).GE.10000.) THEN
WRITE(*,*) 'DIVERGE!'
STOP
END IF
C
20 CONTINUE
C
CALL OUTPUT(U,NX,MX,3)
STOP
END
C
SUBROUTINE OUTPUT(U,NX,MX,MM)
CHARACTER Z(60,23)
DIMENSION U(NX)

66 :06/11/20
IF(MM.EQ.1) THEN
DO 10 J=1,23
DO 10 I=2,MX-1
Z(I,J)=' '
10 CONTINUE
DO 20 J=1,23
Z(1,J)=':'
Z(MX,J)=':'
20 CONTINUE
DO 30 I=1,MX
Z(I,1)='-'
Z(I,23)='-'
30 CONTINUE
END IF
IF(MM.EQ.2) THEN
DO 40 I=1,MX
J=U(I)*40+.001
IF(J.GT.23) GO TO 40
Z(I,J)='*'
40 CONTINUE
END IF
IF(MM.EQ.3) THEN
DO 50 J=23,1,-1
WRITE(*,600) (Z(I,J),I=1,60)
50 CONTINUE
600 FORMAT(1H ,60A1)
END IF
RETURN
END

67 :06/11/20
>>63
そうでした
integer :: a(1:100)=0
じゃないと通らんです.

68 :06/11/22

くだすれFORTRAN(超初心者用)その2
http://pc8.2ch.net/test/read.cgi/tech/1164121236/

69 :06/11/22
今度、計算機を3台ばかし構築せねばならないんだが、
CPUはcore2duoとXeonのどちらが良いのだろうか
コンパイラはインテルの非商用フリーのやつを使おうと思っている

70 :06/11/22
Xeon5000番台と比較するならXeon、
Xeon3000番台と比較するならCore2Duoかな

71 :06/11/22
キャッシュに載るならそれでもいいが、メモリーアクセス多いならItanium2で池

72 :06/11/22
お前らが使っている計算機のスペックきぼんぬ
うちは
CPU:Pentium4 3.2GHz
メモリ:1GB
コンパイラ:Intel Fortran コンパイラ
メモリを2GBにしろと進言したが無理だった。

73 :06/11/22
便乗しようじゃあないか.
CPU: Pentium4 3.4GHz
RAM: 1.5GB (DDRPC3200デュアル)
コンパイラ: Intel Fortran Compiler 9.1
OS: Windows XP pro SP2
友人のC2D (T7200) 搭載機使って計算したらノートPCのくせに俺の
デスクより2倍以上速くて鬱ry

74 :06/11/22
これはなんですか???教えてください!!
NO ERRORS,4 WARNINGS [<TDOFS>FTN77 Ver 4.03]
NO ERRORS [<FORVIB>FTN77 Ver 4.03]
NO ERRORS [<COEF0>FTN77 Ver 4.03]
NO ERRORS [<COEF1>FTN77 Ver 4.03]
NO ERRORS [<SOLU>FTN77 Ver 4.03]
NO ERRORS [<F_TAN>FTN77 Ver 4.03]
NO ERRORS [<Z_GK>FTN77 Ver 4.03]
NO ERRORS [<INTARG>FTN77 Ver 4.03]
NO ERRORS [<INTARG3>FTN77 Ver 4.03]
NO ERRORS [<INTARG4>FTN77 Ver 4.03]
NO ERRORS [<INTARG5>FTN77 Ver 4.03]
WARNING the following symbols are missing:
DLAX D:\MyDo\Fortran\1122test.obj
(D:\MYDO\FORTRAN\1122TEST.FOR)
DLAXR D:\MyDo\Fortran\1122test.obj
(D:\MYDO\FORTRAN\1122TEST.FOR)

75 :06/11/22
>>74
エラーはない(おめでと♪)けど、変なのが4つあったよ。
なんか、1122testっていうファイルのDLAX, DLAXRっていう名前が変な感じ。
ちょっと見た方がいいかも・・・(byふぉとらんこんばいら4.03号)。

76 :06/11/22
ありがとうございます☆
今昔の先輩のプログラミングを解析中なだけで、FORTRAN自体を理解してませんが、恥を忍んでお伺いします。
DLAXRというのはたぶんこの部分ですが、どこか変でしょうか?
c **** DLAXR ***************************************
call DLAXR(XX,A,k,hmn,ALU,b,IPP,VWW,icond)
do 110 j=1,mn+1,1
jj=j-1
X(jj)=XX(j)
110 continue
do 111 j=mn+2,hmn,1
jj=j-mn-1
Y(jj)=XX(j)
111 continue
c ***********************************************************
return
end

77 :06/11/22
>>76
わたしもよくわかんないけど、
DLAXRを呼んでるけど、このファイルではまだ定義されてないから
型・(引数の数とかの)形式があってるか不安・・・
よければファイルに書いといてね
たぶん他のファイルで定義されてるんだろうから
とりあえず適当にくっつけるけど、間違っても怒らないでね(byふぉとらんこんぱいら)

78 :06/11/22
>>74
DLAX, DLAXR って名前から察すると、富士通の数値計算ライブラリSSL II を使ってるっぽい。

79 :06/11/22
すれ違いかも知れないが、CoreDuo、Core2DuoでLinuxで動くの?

80 :06/11/22
>Core2DuoでLinuxで
シンタックス・エラー: 解決されない助詞「で」

81 :06/11/22
>>80
nice

82 :06/11/22
>>74
それは>>78にあるように、SSLIIのライブラリを読んでいるので、それが無いと言っている。
SSLIIのライブラリがあるコンパイラ(Fujitsu、Lahey)の奴でやるか、
あるいは他のライブラリで置き換える必要がある。
LU分解っぽいので、LAPACKとか何でもあるべ。

83 :06/11/23
n行m列の行列があり、そこからn行m列のそれぞれの値を一列に直して、それぞれに値について大きい順に並べなおし、元のn行m列に直してみたいのですけどどんなプログラムの方法がありますか?
よければ、教えてください><
ちなみにfortran77を使っています></

84 :06/11/23
>>83
言ってることがよく分からないが、2次元行列を列ごとにソートして、
上から下へ大きい順に並べなおしたいということか?
それなら簡単だ。
1.まず1次元ソートのサブルーチンを用意する。これを SORT(n, x) としよう。
2.列ごとにソートする。
DO 10 i = 1, m
 CALL SORT(N, X(1, i))
10 CONTINUE
これでおk。


85 :06/11/23
>>84さん指摘ありがとうございます
でもちょっと違うのです>< 
たとえば、1 5  9 13
     2 6 10 14
     3 7 11 15
     4 8 12 16
について、
1
2
3

16
といってから順番を変更して
16 12 8 4
15 11 7 3
14 10 6 2
13  9 5 1
という風に並べたいのです

86 :06/11/23
>>85
それならもっと簡単だ。FORTRAN77は配列の先頭アドレスしか渡さない。
次元数とか大きさは気にしない。
また、FORTRANの配列はメモリー上では、列方向に隣り合って1次元に並んでいる。
ゆえに、N*Mの要素数で1次元のソートをすればいい。
1.1次元のソートを用意する。
2.CALL SORT(N*M、X)
これでOK

87 :06/11/24
>>83
元々mixiに書き込んだんだから、解決したらmixiにも書くように。

88 :06/11/24
>>87 
つーか>>83のレベルでは>>86の回答は理解できないんじゃないか。
FORTRANはこういうイカサマ技によって、1次元整数0クリアをつっかって
多次元整数、実数などのクリアーに使えた。一種のPolymorphism wwwww

89 :06/11/24
>86さんありがとうございます
確かに速く知りたいという気がはやりすぎて、いろんな所で質問していますね
ちゃんと自分で理解できたら書いていきたいとは思っているのですけどね
でも、やはりちょっと理解できません^^;
よければ、何か例とかあるとありがたいのですけど><

90 :06/11/24
>>77 
ありがとうございます!
>>78さんの言うとおり、富士通SSLUを使っている様子です。
>>82
LaheyやLAPACKとはどんなものですか??

91 :06/11/24
>>90
ttp://www.google.co.jp/search?q=lahey+fortran
ttp://www.google.co.jp/search?q=lapack+fortran

92 :06/11/24
>>90
Laheyはコンパイラの自社独自開発をやめて、今では富士通のフロントエンドを使っている。
富士通はLinux版しか出していないが、LaheyはWindows版も出している。
富士通が絡んでいるので、プロフェッショナルバージョンを買うとSSLがついてくる。
あとSSLは名古屋大学のNUPACKと密接な関係があるので、netNUMPACが参考に
なるかもしれないし、ならないかもしれないwww
漏れは富士通系はメインには使わなかったのでよく知らんw
LAPACKは固有地問題と線形問題用のサブルーチン集だ。これは国際標準と化してきているので
どこの機械でも動いている。

93 :06/11/24
>>89
PROGRAM unko
REAL a(5, 2)
CALL kintama(5 * 2, a)
DO 10 i = 1, 5
PRINT *, a(i, 1), a(i, 2)
10 CONTINUE
END
C
SUBROUTINE kintama(n, x)
REAL x(n)
DO 10 i = 1, n
x(i) = REAL(i)
10 CONTINUE
RETURN
END
実行結果
1.000000 6.000000
2.000000 7.000000
3.000000 8.000000
4.000000 9.000000
5.000000 10.00000
Press any key to continue
サブルーチン 金玉 で、1次元配列xに1〜nまで順番に数を代入している。
一方、メインルーチンから呼び出すときは、2次元配列を引数(ひきすう)に与えている。
要素数は行×列=10個で渡している。 返ってくる結果を見ると、列方向に連続した値で戻って来ている。
同様のことをSORTでやれば、はじめ二次元にランダムだった数が、
列方向にソートされて戻ってくる。

94 :06/11/25
>>89
>確かに速く知りたいという気がはやりすぎて、いろんな所で質問していますね
それはマルチポストと言って、マナー違反だな。
ここをよーく読んどくように。
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88

95 :06/11/26
FORTRANのエロゲとかないの?

96 :06/11/27
>>53
>x(1:n) = y(1:n)
この書き方って例えば次のような漸化式に使うと
ちゃんと計算してくれない.
x(1)=0
x(2)=1
x(3:n) = 2*x(2:n-1) - 4*x(1:n-2)
自分に自分を代入するような
式だと駄目っぽい (途中から全部0になる).なんで??

97 :06/11/27
>>96
配列の演算はすべて並列計算として処理されるので x の要素が 0 で初期化されていた場合、
x(3) = 2*x(2) - 4*x(1) = 2*1 - 4*0 = 2
x(4) = 2*x(3) - 4*x(2) = 2*0 - 4*1 = -4
x(5) = 2*x(4) - 4*x(3) = 2*0 - 4*0 = 0
x(6) = 2*x(5) - 4*x(4) = 2*0 - 4*0 = 0
・・・
となる。
do i=2,n
x(i) = x(i-1) + 1
end do

x(2:n) = x(1:n-1) + 1
では意味が違うのだ。

98 :06/11/27
>>97
おお〜よくわかりました!
ありがとう

99 :06/11/28
>>96
REAL::A(N, N), B(N, N)
A = A * B
のような状況を考えれば、今のFORTRANの仕様がもっともだと分かる。
行列操作がらみで、この仕様はとても便利。いちいち自分でテンポラリにコピーしなくていい。
あと一応、並列化されたときのことも考慮されてそういう仕様になっているらしい。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【コメント】doxygen【コンソメ】 (489)
NullPointerExceptionを「ぬるぽ」と呼ぶスレ6 (291)
マルチスレッドプログラミング相談室 その8 (922)
ニートの俺が何か開発して食いつなぐスレ (687)
foo (139)
●●●●TCL/TKなら俺に聞け 2●●●● (883)
--log9.info------------------
TRPGにおける忍者について (838)
ボードゲーム・カードゲームの動画 1 (171)
怒りをスレにぶつけるスレ (619)
良いサークル/悪いサークル 九州編 第七版 (460)
中古書店とかで見つけた卓上ゲーム報告スレ:5軒目 (692)
【特撮】レジェンド戦隊のOBとしての資質【神崎スレ16】 (811)
TRPGにおける○○総合スレ (295)
モノトーンミュージアムRPG 演目3 (516)
【ソーサリー】 カーカバートの旅 【外伝】 (498)
【有栖川皇尊=帝】VAを語るスレ 号外【窃盗】 (646)
【天羅WAR】天羅万象&テラ総合スレ【SRS】17 (598)
モンスターハンターTRPG予想スレ (315)
◇オンラインセッション・メン簿スレ30◇ (113)
★▲卓上ゲーム板☆削除依頼&検討スレ その9▲★ (869)
良いサークル/悪いサークル(東海4県版)その11 (879)
卓上ゲームをシグルイ風に語るスレ (719)
--log55.com------------------
【MAZDA】NDロードスター 糞カラー絶許スレ 4
【三菱】ミラージュ Part27【MIRAGE】
ZZTセリカを語ろうPart51
【F60】MINI CROSSOVERミニクロスオーバーVol.6
日本のマイカーは、シルフィだけで十分だよな?w
【MAZDA】NDロードスター 糞カラー絶許スレ 4
BMW 4 Series Part 17【F32 F33 F36 F82】
【SUZUKI】sx4 初代専用スレ 【YB11s】