Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-Maxima入門- 浮動小数点と多倍長浮動小数点(ビッグフロート)

Maximaの浮動少数点には2つの種類があります。通常の浮動少数点と多倍長浮動少数点です。入力で単純に浮動小数点を書くと、それは通常の浮動小数点として扱われます。

(%i1) 3.14*3.14;

$$ \tag{%o1} 9.8596 $$

有理数(分数)を通常の浮動小数点に変換するには組み込み関数float()を使います。通常の浮動小数点の有効桁数は16桁程度です。

(%i2) float(1/7);

$$ \tag{%o2} 0.14285714285714 $$

整数と浮動少数点が混在している計算式の結果は浮動少数点として得られます。

(%i3) 10.0/7;

$$ \tag{%o3} 1.428571428571429 $$

有理数と浮動少数点が混在している計算式の結果は浮動少数点として得られます。

(%i4) 3.0^(1/3);

$$ \tag{%o4} 1.442249570307408 $$

指数部を’e整数’の形式で明示することができます。

(%i5) 324.3e5/17;

$$ \tag{%o5} 1907647.058823529 $$

浮動小数点を有理数に変換することができます。

(%i6) rationalize(%);

$$ \tag{%o6} \frac{8193281729957647}{4294967296} $$

 

ここから先では上記と同じ例をすべて多倍長浮動小数点で計算してみます。多倍長浮動小数点の桁数は任意に設定できます。ここでは30桁に設定しています。設定はシステムが用意している変数fpprecに自然数を設定することで行われます。

(%i7) fpprec:30;

$$ \tag{%o7} 30 $$

また多倍長浮動小数点を入力する際に、通常の浮動小数点と区別するために、数字の後ろに'b整数'を必ずつけます。この整数が指数部として扱われます。

(%i8) 3.14b0*3.14b0;

$$ \tag{%o8} 9.8596B0 $$

組み込み関数float()の代わりにbfloat()を使えば、有理数を多倍長浮動小数点に変換できます。

(%i9) bfloat(1/7);

$$ \tag{%o9} 1.42857142857142857142857142857B-1 $$

多倍長浮動小数点と整数や有理数が混在している計算式を計算した結果は多倍長浮動小数点として得られます。

(%i10) 10.0b0/7;

$$ \tag{%o10} 1.42857142857142857142857142857B0 $$

(%i11) 3.0b0^(1/3);

$$ \tag{%o11} 1.44224957030740838232163831078B0 $$

指数部に0以外を指定してみました。

(%i12) 324.3b5/17;

$$ \tag{%o12} 1.90764705882352941176470588235B6 $$

この多倍長浮動小数点も組み込み関数rationalize()で有理数に変換することができます。

(%i13) rationalize(%);

$$ \tag{%o13} \frac{2306203784123672007983605157647}{1208925819614629174706176} $$