都道府県穴埋めゲーム

FORTRAN77(g77)をVine Linux 4.2で使用しています。

立方根の計算をしたいのですが、コンパイル時に"(D)CBRT"がエラーになってしまいます。
原因・代替策など御助言いただければ幸いです。
なお、(D)SQRTは問題なくコンパイル・実行できました。

以下、テスト用ソースとそのコンパイル時のエラーメッセージです。
[ソース]
program a
implicit none
real*8 n
write(*,*)"n= ?"
read(*,*)n
write(*,*)DCBRT(n)
stop
end
[エラーメッセージ]
a.f: In program `a':
a.f:6:
write(*,*)DCBRT(n)
^
Invalid declaration of or reference to symbol `dcbrt' at (^) [initially seen at (^)]

※こちらの画面ではスペースがうまく入りませんので悪しからず。

A 回答 (2件)

自信無し。

普段、fortranの人間じゃないので見るところ自体が間違っているかも。g95でうまくいかず。

cbrt関数は
fortran 77では
http://web.mit.edu/sunsoft_v5.1/www/fortran/f77r …

>Intrinsic functions that are Sun extensions of the ANSI FORTRAN 77 standard are marked with ♦.

ANSI Fortran 77をSunが拡張したものだよ、と言われています。

fortran 90
http://www.nsc.liu.se/~boein/f77to90/a5.html#sec …
にも
fortran 95
http://docs.sun.com/source/819-3684/2_F95_Intrin …
にも載っていませんので、
GNU Fortran 77にはひょっとしたらないのかもしれません。

最初のページに載っていた
a**(1/3)ではうまくいかず、(割り算の戻り値が整数なのかな?)
a**(1.0/3.0)で
5.000000239824943
を出すことが出来ています。誤差はありますが。一応アドバイスまで
    • good
    • 0
この回答へのお礼

ご丁寧に調べていただき、ありがとうございます。

実は(1/3)乗でもうまくいっていなかったので助かりました。

お礼日時:2009/10/24 19:30

まあ、1/3乗すれば済む話だと思いますが



CBRT(Cubuic Root)はANSIの規格にありません。ANSI準拠のF77で確実に使える組み込み関数はのここにあるものだけです。確実に使うには、仕様を拡張したFORTRANか、数学パッケージが必要です。
http://www.fortran.com/F77_std/rjcnf-15.html#sh- …

Sunの外にも、VMSのFORTRAN(VAX FORTRAN)、VMS互換を謳ったRyan McFarlandのFORTRANなどにもあったと記憶しています(まだあるのかな)。
    • good
    • 0
この回答へのお礼

ご助言ありがとうございます。

拡張したものでなければ使えないとは、存じませんでした。
使えるものを探してもみます。

まずは、指数法則をそのまま試させていただきます。

お礼日時:2009/10/24 19:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!