Fortran 90で書かれたプログラムのマニュアルには、「実際の変数とパラメーターはすべて64ビット精度(つまり、real*8
)で指定されています」と書かれています。
Wikipedia によれば、単精度は32ビット精度に対応しますが、倍精度は64ビット精度に対応するため、プログラムは明らかに倍精度を使用します。
しかし、real*8
はどういう意味ですか?
8
は、8桁が小数点の後に続くことを意味すると思った。ただし、 ウィキペディア は、単精度が通常6-9桁を提供するのに対し、 倍精度 は通常15-17桁を提供すると言います。これは、ステートメント「64ビット精度」がreal*8
と矛盾することを意味しますか?
8は、データ型が使用するbytesの数を指します。
したがって、32ビット整数はinteger*4
同じ行に沿って。
クイック検索が見つかりました このFortranデータ型ガイド には以下が含まれます:
「real * 4」ステートメントは、7桁の精度と-38から+38までの範囲10の大きさを持つ単精度の4バイト実数である変数名を指定します。 「real」ステートメントは、ほぼすべての32ビットコンピューターの「real * 4」ステートメントと同じです。
そして
「real * 8」ステートメントは、15桁の精度と-308から+308までの10の範囲の大きさを持つ倍精度の8バイト実数である変数名を指定します。 「倍精度」ステートメントは、ほぼすべての32ビットコンピューターの「real * 8」ステートメントと同じです。
Fortranで精度を指定するには、少なくとも4つの方法があります。
すでに答えたように、real*8
はバイト数を指定します。多少時代遅れですが、安全なはずです。
新しい方法は「種類」です。組み込み関数を使用して、必要な精度を持つ種類を取得する必要があります。特定の数値で種類を指定すると、コンパイラごとに異なる値が使用されるため、危険です。
さらに別の方法は、ISO_C_Bindingの名前付きタイプを使用することです。 この質問 整数の種類システムについて説明します-実数については非常に似ています。
TYPE
以外のCHARACTER
とともに使用する場合、スター表記(TYPE*n
が呼び出される)は非標準のFortran構文です。
文字タイプに適用される場合、n
文字の配列(またはn
文字の文字列)を作成します。
別のタイプに適用する場合、ストレージサイズをバイト単位で指定します。これは、Fortran 90+では、[〜#〜] kind [〜#〜]の概念が導入されているので、避けるべきです。ストレージサイズを指定すると、非ポータブルアプリケーションが作成されます。