2012-05-10 4 views
1

type*N表記(real*8、複合* 16など)を使用すると、移植性の問題が発生することがあります。誰もがここで問題を抱えていたのですが、kindを使って解くことができましたか?fortranタイプ* N表記

答えて

5

私はこの特定の問題に問題があったとは言えません。私が知っている限り、現在アクティブなFortranコンパイラはすべて、この非標準的な種類の定義方法を理解しています。

しかし、長年にわたり、私は非標準的な移植性の問題を抱えてきました。最近、私は決して(まれに、非常にまれに)非標準のフィーチャを使用することはなく、私は確かにこのように宣言しません。私は通常、非標準の機能を使用するのは魅力的な利点がある場合にのみ使用しますが、ここではそのような利点はありません。説得力のある唯一の利点は、実行速度の向上、標準のFortranでは難しい(または不可能な)こと、言語機能の本格的な拡張などです。プログラマの利便性は魅力的な利点ではありません。

+1

悪魔の主唱者を再生するだけです。私は(個人的に)単純な利便性として「本物の* 8」を見ません。 'real * 8'と' real(kind = selected_real_kind(15)) 'を比較します。これは、私が望むもの、つまり通常の4バイトの代わりに8バイトを占める浮動小数点数です。どちらが理にかなっていますか?コードは書かれているよりも頻繁に読み込まれるので、それがより容易に理解されることは合理的です。 – mgilson

+0

あなたは私がジャガイモと言うジャガイモを言う。 –

+1

言語の哲学は、必要な精度を指定することです。 10進数の実数の場合。次に、コンパイラはどのタイプを提供するかを決定します。プログラマは、一般的なタイプ(例えば、4バイトの単精度、8バイトの倍精度)で思考するのに圧倒されているので、これは普及していない。 Fortran 2008では、INT8、INT16、INT32、INT64、REAL32、REAL64、REAL128のような、プログラマが望む種類の値が提供されます。 gfortranマニュアルの「組み込みモジュール」の章を参照してください。 –