• 締切済み

fortran πについて

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

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.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 の記述があてはまるかどうかわかりませんが.

  • fifaile
  • ベストアンサー率25% (622/2403)
回答No.3

parameterで宣言してるのかな? parameter文って数値指定だけで計算をすることはできなかったような。 OK parameter bai = 1000 NG parameter bai = 10**3

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

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

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その計算をしても Fortran的には (FORTRAN的にも) 定数じゃないからなぁ.... あきらめて, おとなしく pi = 3.141592653589793238d0 とか書くんでしょう.

BOY12345
質問者

補足

pi = 3.141592653589793238d0 だったら誤差気にならなくなりますかね~。 少数9桁まで、最終的に表示するので・・・ まぁ、気にはならなそうですね。 piをdatanで定義するのは無理ですかね? implicit real*8 (a-h,o-z)の定義でしてたときは、 特にことわり入れなくても、すんなりと受け入れてくれたのに☆ implicit noneは勉強になります。あやふやが通じないから。

関連するQ&A

専門家に質問してみよう