CustomFloat
説明
CustomFloat
オブジェクトは、指定した語長と仮数部の長さをもつ浮動小数点数値データ型を定義するために使用します。CustomFloat
オブジェクトで定義した浮動小数点データ型は IEEE 754-2008 標準に準拠します。浮動小数点データ型の詳細については、浮動小数点数を参照してください。
作成
構文
説明
入力引数
v
— オブジェクトの値
スカラー | ベクトル | 行列 | 多次元配列
CustomFloat
オブジェクトの値。スカラー、ベクトル、行列または多次元配列として指定します。
データ型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
複素数のサポート: あり
type
— オブジェクトの浮動小数点型
'double'
| 'single'
| 'half'
CustomFloat
オブジェクトの浮動小数点データ型。'double'
、'single'
、または 'half'
のいずれかとして指定します。
次の表は、これらの型のプロパティをまとめたものです。
型 | 語長 | 仮数部の長さ |
---|---|---|
double | 64 | 52 |
single | 32 | 23 |
half | 16 | 10 |
データ型: char
cf
— カスタムの浮動小数点型
CustomFloat
オブジェクト
カスタムの浮動小数点型。CustomFloat
オブジェクトとして指定します。
プロパティ
ExponentBias
— 指数のオフセット値
スカラー整数
指数のオフセット値を表すスカラー整数。
このプロパティを直接変更することはできません。ただし、ExponentLength
プロパティに影響を与える WordLength
プロパティと MantissaLength
プロパティを変更することで、このプロパティを変更できます。浮動小数点データ型の ExponentBias
は次の方程式で計算されます。
ExponentBias = 2e-1-1 | (1) |
ExponentLength
を表します。
データ型: double
ExponentLength
— 指数部を表すビット数
31 未満のスカラー整数
指数部を表すビット数。このプロパティを直接編集することはできません。ただし、MantissaLength
プロパティと WordLength
プロパティを変更することで指数部の長さを変更できます。
ExponentLength
、MantissaLength
、および WordLength
のプロパティの関係は次の方程式で表されます。
WordLength = 1+MantissaLength+ExponentLength | (2) |
ExponentLength
は 31 ビット未満でなければなりません。
データ型: double
MantissaLength
— 仮数部を表すビット数
スカラー整数
仮数部を表すビット数。スカラー整数として指定します。
ExponentLength
、MantissaLength
、および WordLength
のプロパティの関係は次の方程式で表されます。
WordLength = 1+MantissaLength+ExponentLength | (3) |
メモ
ExponentLength
は 31 ビット未満でなければなりません。
例: custfloat.MantissaLength = 14;
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
WordLength
— データ型の総ビット数。
スカラー整数
データ型の総ビット数。スカラー整数として指定します。
ExponentLength
、MantissaLength
、および WordLength
のプロパティの関係は次の方程式で表されます。
WordLength = 1+MantissaLength+ExponentLength | (4) |
メモ
ExponentLength
は 31 ビット未満でなければなりません。
例: custfloat.WordLength = 28;
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
オブジェクト関数
数学と算術
abs | 絶対値と複素数の大きさ |
ceil | 正の無限大方向に丸める |
complex | 複素数配列の作成 |
conj | 複素共役 |
cosh | 双曲線余弦 |
exp | 指数 |
fix | ゼロ方向への丸め |
floor | 負の無限大方向の丸め |
fma | 融合積和演算法を使用した乗算と加算 |
hypot | 二乗和の平方根 (斜辺) |
ldivide | 配列の左除算 |
log | 自然対数 |
log2 | 2 を底とした対数と浮動小数点数分解 |
log10 | 常用対数 (10 を底とする) |
minus | 減算 |
mod | 除算後の剰余 (モジュロ演算) |
mtimes | 行列乗算 |
ndims | 配列の次元数 |
plus | 数値の加算と string の付加 |
pow10 | 基数 10 べき乗と半精度数のスケーリング |
pow2 | 2 を底とする指数と浮動小数点数のスケーリング |
power | 要素単位のべき乗 |
rdivide | 配列の右除算 |
real | 複素数の実数部 |
rem | 除算後の剰余 |
round | 最も近い小数または整数への丸め |
rsqrt | 逆数平方根 |
sqrt | 平方根 |
tanh | 双曲線正接 |
times | 乗算 |
uminus | 単項マイナス |
uplus | 単項プラス |
データ型
配列と行列の演算
言語の基礎
disp | 変数の値を表示 |
例
CustomFloat オブジェクトの作成
この例では、CustomFloat
オブジェクトを作成する方法を示します。
v = pi; x = CustomFloat(v)
x = 3.1416 Data Type: Floating-point: Double-precision WordLength: 64 MantissaLength: 52 ExponentLength: 11 ExponentBias: 1023
CustomFloat
コンストラクターへの入力が double であったため、CustomFloat
オブジェクト x
のデータ型も double です。関数 CustomFloat
に渡される値が single の場合、結果として得られる CustomFloat
オブジェクトも単精度浮動小数点データ型になります。
v = single(pi); x = CustomFloat(v)
x = 3.1416 Data Type: Floating-point: Single-precision WordLength: 32 MantissaLength: 23 ExponentLength: 8 ExponentBias: 127
半精度の CustomFloat オブジェクトの作成
指定した浮動小数点データ型をもつ CustomFloat
オブジェクトを作成するには、関数 CustomFloat
の 2 番目の引数としてデータ型を指定します。
v = pi;
x = CustomFloat(v,'half')
x = 3.1406 Data Type: Floating-point: Half-precision WordLength: 16 MantissaLength: 10 ExponentLength: 5 ExponentBias: 15
指定した語長と仮数部の長さをもつ CustomFloat オブジェクトの作成
関数 CustomFloat
で語長と仮数部の長さを指定します。
v = pi; wl = 16; ml = 4; x = CustomFloat(v,wl,ml)
x = 3.1250 Data Type: Floating-point: Custom-precision WordLength: 16 MantissaLength: 4 ExponentLength: 11 ExponentBias: 1023
倍精度の値と CustomFloat
オブジェクトの仮数部の長さを変更した後の値の差を比較します。
err = zeros(1,12); for ml = 1:12 x = CustomFloat(v,wl,ml); err(ml) = v-double(x); end plot(err); title('Error: v - double(x)'); ylabel('Error'); xlabel('Mantissa Length');
CustomFloat の新しいデータ型への値の型変換
関数 CustomFloat
で 'typecast'
入力引数を使用すると、入力値のビット パターンと指定した語長および仮数部の長さをもつ CustomFloat
オブジェクトが作成されます。
単精度の値を定義します。単精度浮動小数点データ型は語長が 32 ビットで仮数部の長さが 23 ビットです。この単精度値の 2 進数表現を確認します。
v = single(pi); bit_pattern = bin(CustomFloat(v))
bit_pattern = '01000000010010010000111111011011'
ビット パターンは入力値と同じで仮数部の長さが異なる CustomFloat
オブジェクトを定義します。
x = CustomFloat(v, 32, 20, 'typecast')
x = 50.1239 Data Type: Floating-point: Custom-precision WordLength: 32 MantissaLength: 20 ExponentLength: 11 ExponentBias: 1023
CustomFloat
オブジェクトの 2 進数表現を確認し、単精度の入力値のビット パターンと比較します。
bit_pattern2 = bin(x)
bit_pattern2 = '01000000010010010000111111011011'
same = strcmp(bit_pattern, bit_pattern2)
same = logical
1
制限
次の関数はカスタム浮動小数点入力をサポートしていますが、複素数のカスタム浮動小数点入力はサポートされません。
バージョン履歴
R2020a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)