Pythonのfrexp()関数の使い方を徹底解説!仮数と指数の求め方
Pythonのmath.frexp()関数は、数値を「仮数(mantissa)」と「指数(exponent)」に分解するための関数です。数学的な計算処理で広く活用されており、特に浮動小数点数の内部表現を扱う際に便利です。本記事では、Pythonプログラムにおけるfrexp()関数のさまざまな使い方を具体例とともに解説します。
frexp()関数とは
frexp()関数は、与えられた数値xを以下の形式に分解します。
x = m × 2e
ここで、mは仮数(0.5 ≦ |m| < 1 の範囲の浮動小数点数)、eは整数の指数です。この性質により、数値のスケール情報と精度情報を分離して扱うことができます。
構文
frexp()関数を使用する際の基本的な構文と仕様は以下の通りです。
math.frexp(x) 引数: 任意の有効な数値(正・負どちらも可) 戻り値: 指定した数値xの仮数と指数をタプル(m, e)のペアとして返します 例外: xが数値でない場合、TypeErrorが発生します
基本的な使い方:単純な式での実行
まずは、数値に対して直接frexp()関数を適用し、仮数と指数を取得するシンプルな例を見てみましょう。
サンプルコード
import math # 仮数と指数を取得 print(math.frexp(12)) print(math.frexp(10.5))
実行結果
上記のコードを実行すると、以下の出力が得られます。
(0.75, 4) (0.65625, 4)
この結果から、12 = 0.75 × 24、10.5 = 0.65625 × 24 であることが確認できます。つまり、元の数値が仮数と指数の組み合わせとして正しく分解されています。
応用編:リストやタプルの要素に対して使用する
次に、リストやタプルに格納された特定の要素に対してfrexp()関数を適用する例を紹介します。インデックスを指定することで、シーケンス内の任意の要素を処理できます。
サンプルコード
import math listA = [3,9,4,7] tupA = (3.8,12.6,12.5) # 仮数と指数を取得 print(math.frexp(listA[2])) print(math.frexp(tupA[1]))
実行結果
上記のコードを実行すると、以下の出力が得られます。
(0.5, 3) (0.7875, 4)
リストlistAの3番目の要素「4」は 0.5 × 23、タプルtupAの2番目の要素「12.6」は 0.7875 × 24 として分解されていることがわかります。
まとめ
math.frexp()関数を使うことで、任意の数値を仮数と指数のペアに簡単に分解できます。単一の数値だけでなく、リストやタプルなどのデータ構造の要素にも柔軟に適用できるため、科学技術計算やデータ分析の場面で非常に有用です。なお、逆の操作(仮数と指数から元の数値を復元する)にはmath.ldexp()関数を使用しますので、あわせて覚えておくと良いでしょう。
-
Pythonのissubset()関数とは?部分集合の判定方法を実例付きで解説
本記事では、Python標準ライブラリに用意されているissubset()関数の仕組みと使い方について詳しく解説します。 issubset()メソッドは、あるセット(集合)のすべての要素が、引数として渡した別のセットにも含まれている場合にブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。 下の図では、BはAの部分集合です。もしAとBが同一のセットであれば、両者は互いに部分集合の関係にあるといえます。つまり、両方のセットがまったく同じ要素を持っているということを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値
-
Pythonのintersection()関数とは?集合の共通要素(積集合)を求める方法
この記事では、Pythonのセット(集合)に対して実行できるintersection()関数について詳しく解説します。数学における「積集合(インターセクション)」とは、2つの集合から共通する要素を見つけ出すことを指します。構文<セット名>.intersection(<セットa1>, <セットa2>, …)戻り値引数として渡されたすべての集合に共通する要素(積集合)が、新しいセットとして返されます。使用例set_1 = {t,u,t,o,r,i,a,l} set_2 = {p,o,i,n,t} set_3 = {t,u,t} # 2つの集合の積集合 print