dポイントプレゼントキャンペーン実施中!

算術計算をするために、πを
pi=4.0d0*datan(1.0d0)
で、定数として置こうとしましたが、
エラーで『datanはThis intrinsic function is invalid in constant expressions.』と出てきました。

型はreal*8 で行いました。
どうしたら、定数として置けるのでしょうか??

A 回答 (4件)

少なくとも Fortran2003 の Final Committee Draft を見る限り, parameter 文/parameter 属性のどちらにおいても*ある種の*計算は可能です>#3.


例えば
REAL, PARAMETER :: ONE = 1.0, Y = 4.1 / 3.0
とか
PARAMETER (MODULUS = MOD (28, 3), NUMBER_OF_SENATORS = 100)
という文が例として挙げられています.
どちらも = のあとは initialization-expr で, しかも困ったことにこの initialization-expr の例に
4.0 * atan(1.0)
が挙げられてます.
まあ, 質問者の fortran というのがどの規格に対応しているかわかりませんから, Fortran2003 FCD の記述があてはまるかどうかわかりませんが.
    • good
    • 1

parameterで宣言してるのかな?


parameter文って数値指定だけで計算をすることはできなかったような。

OK
parameter bai = 1000

NG
parameter bai = 10**3
    • good
    • 0

あ, すみません, とっても嘘つきました. ごめんなさい.


Fortran 2003 の FCD を見てみたら
4.0 * atan(1.0)
が初期化式として使えるって書いてありました.
う~ん, ちょっとわからんけど datan がダメなだけなら総称名 atan を使って
4.0d * atan(1.0d)
でいけそうな気もする.... 根拠は全くなし.
    • good
    • 0

その計算をしても Fortran的には (FORTRAN的にも) 定数じゃないからなぁ....


あきらめて, おとなしく
pi = 3.141592653589793238d0
とか書くんでしょう.

この回答への補足

pi = 3.141592653589793238d0
だったら誤差気にならなくなりますかね~。

少数9桁まで、最終的に表示するので・・・
まぁ、気にはならなそうですね。
piをdatanで定義するのは無理ですかね?

implicit real*8 (a-h,o-z)の定義でしてたときは、
特にことわり入れなくても、すんなりと受け入れてくれたのに☆

implicit noneは勉強になります。あやふやが通じないから。

補足日時:2008/07/16 19:51
    • good
    • 0

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