OpenCV 4.5.3(日本語機械翻訳)
クラス | 関数 | 変数

クラス

struct cv::softfloat
struct cv::softdouble

関数

cv::softfloat::softfloat ()
デフォルトコンストラクタ
cv::softfloat::softfloat (const softfloat &c)
コピーコンストラクタ
softfloat & cv::softfloat::operator= (const softfloat &c)
代入コンストラクタ
static const softfloat cv::softfloat::fromRaw (const uint32_t a)
生からの構築[【詳解】(英語]
cv::softfloat::softfloat (const uint32_t)
整数からの構築
cv::softfloat::softfloat (const uint64_t)
cv::softfloat::softfloat (const int32_t)
cv::softfloat::softfloat (const int64_t)
cv::softfloat::softfloat (const float a)
フロートで構築する
cv::softfloat::operator softdouble () const
型のキャスト

cv::softfloat::operator float () const
softfloat cv::softfloat::operator+ (const softfloat &) const
基本的な算術演算
softfloat cv::softfloat::operator- (const softfloat &) const
softfloat cv::softfloat::operator* (const softfloat &) const
softfloat cv::softfloat::operator/ (const softfloat &) const
softfloat cv::softfloat::operator- () const
softfloat cv::softfloat::operator% (const softfloat &) const
リマインダ演算子[【詳解】(英語]
softfloat & cv::softfloat::operator+= (const softfloat &a)
softfloat & cv::softfloat::operator-= (const softfloat &a)
softfloat & cv::softfloat::operator*= (const softfloat &a)
softfloat & cv::softfloat::operator/= (const softfloat &a)
softfloat & cv::softfloat::operator%= (const softfloat &a)
bool cv::softfloat::operator== (const softfloat &) const
比較演算[【詳解】(英語]
bool cv::softfloat::operator!= (const softfloat &) const
bool cv::softfloat::operator> (const softfloat &) const
bool cv::softfloat::operator>= (const softfloat &) const
bool cv::softfloat::operator< (const softfloat &) const
bool cv::softfloat::operator<= (const softfloat &) const
bool cv::softfloat::isNaN () const
NaN 状態表示
bool cv::softfloat::isInf () const
Inf状態の表示
bool cv::softfloat::isSubnormal () const
亜正常数表示
bool cv::softfloat::getSign () const
符号ビットの取得
softfloat cv::softfloat::setSign (bool sign) const
新しい符号ビットを持つコピーの作成
int cv::softfloat::getExp () const
0ベースの指数の取得
softfloat cv::softfloat::setExp (int e) const
新しい0ベースの指数を持つコピーを作成する
softfloat cv::softfloat::getFrac () const
小数部の取得[【詳解】(英語]
softfloat cv::softfloat::setFrac (const softfloat &s) const
符号付きコピーの構築[【詳解】(英語]
static softfloat cv::softfloat::zero ()
ゼロ定数
static softfloat cv::softfloat::inf ()
正の無限大の定数
static softfloat cv::softfloat::nan ()
デフォルトのNaN定数
static softfloat cv::softfloat::one ()
1つの定数
static softfloat cv::softfloat::min ()
最小の正規化された値
static softfloat cv::softfloat::eps ()
1と次の表現可能な値との差
static softfloat cv::softfloat::max ()
最大の有限値
static softfloat cv::softfloat::pi ()
正しい円周率の近似値
cv::softdouble::softdouble ()
デフォルトコンストラクタ
cv::softdouble::softdouble (const softdouble &c)
コピーコンストラクタ
softdouble & cv::softdouble::operator= (const softdouble &c)
代入コンストラクタ
static softdouble cv::softdouble::fromRaw (const uint64_t a)
生からの構築[【詳解】(英語]
cv::softdouble::softdouble (const uint32_t)
整数からの構築
cv::softdouble::softdouble (const uint64_t)
cv::softdouble::softdouble (const int32_t)
cv::softdouble::softdouble (const int64_t)
cv::softdouble::softdouble (const double a)
ダブルからの構築
cv::softdouble::operator softfloat () const
型のキャスト

cv::softdouble::operator double () const
softdouble cv::softdouble::operator+ (const softdouble &) const
基本的な算術演算
softdouble cv::softdouble::operator- (const softdouble &) const
softdouble cv::softdouble::operator* (const softdouble &) const
softdouble cv::softdouble::operator/ (const softdouble &) const
softdouble cv::softdouble::operator- () const
softdouble cv::softdouble::operator% (const softdouble &) const
リマインダ演算子[【詳解】(英語]
softdouble & cv::softdouble::operator+= (const softdouble &a)
softdouble & cv::softdouble::operator-= (const softdouble &a)
softdouble & cv::softdouble::operator*= (const softdouble &a)
softdouble & cv::softdouble::operator/= (const softdouble &a)
softdouble & cv::softdouble::operator%= (const softdouble &a)
bool cv::softdouble::operator== (const softdouble &) const
比較演算[【詳解】(英語]
bool cv::softdouble::operator!= (const softdouble &) const
bool cv::softdouble::operator> (const softdouble &) const
bool cv::softdouble::operator>= (const softdouble &) const
bool cv::softdouble::operator< (const softdouble &) const
bool cv::softdouble::operator<= (const softdouble &) const
bool cv::softdouble::isNaN () const
NaN 状態表示
bool cv::softdouble::isInf () const
Inf状態の表示
bool cv::softdouble::isSubnormal () const
亜正常数表示
bool cv::softdouble::getSign () const
符号ビットの取得
softdouble cv::softdouble::setSign (bool sign) const
新しい符号ビットを持つコピーの作成
int cv::softdouble::getExp () const
0ベースの指数の取得
softdouble cv::softdouble::setExp (int e) const
新しい0ベースの指数を持つコピーを作成する
softdouble cv::softdouble::getFrac () const
小数部の取得[【詳解】(英語]
softdouble cv::softdouble::setFrac (const softdouble &s) const
符号付きコピーの構築[【詳解】(英語]
static softdouble cv::softdouble::zero ()
ゼロ定数
static softdouble cv::softdouble::inf ()
正の無限大の定数
static softdouble cv::softdouble::nan ()
デフォルトのNaN定数
static softdouble cv::softdouble::one ()
1つの定数
static softdouble cv::softdouble::min ()
最小の正規化された値
static softdouble cv::softdouble::eps ()
1と次の表現可能な値との差
static softdouble cv::softdouble::max ()
最大の有限値
static softdouble cv::softdouble::pi ()
正しい円周率の近似値
CV_EXPORTS softfloat cv::mulAdd (const softfloat &a, const softfloat &b, const softfloat &c)
乗算と足し算の融合[【詳解】(英語]
CV_EXPORTS softdouble cv::mulAdd (const softdouble &a, const softdouble &b, const softdouble &c)
CV_EXPORTS softfloat cv::sqrt (const softfloat &a)
平方根
CV_EXPORTS softdouble cv::sqrt (const softdouble &a)
template<typename _Tp >
static _Tp cv::saturate_cast (softfloat a)
飽和キャスト
template<typename _Tp >
static _Tp cv::saturate_cast (softdouble a)
template<>
uchar cv::saturate_cast< uchar > (softfloat a)
template<>
uchar cv::saturate_cast< uchar > (softdouble a)
template<>
schar cv::saturate_cast< schar > (softfloat a)
template<>
schar cv::saturate_cast< schar > (softdouble a)
template<>
ushort cv::saturate_cast< ushort > (softfloat a)
template<>
ushort cv::saturate_cast< ushort > (softdouble a)
template<>
short cv::saturate_cast< short > (softfloat a)
template<>
short cv::saturate_cast< short > (softdouble a)
template<>
int cv::saturate_cast< int > (softfloat a)
template<>
int cv::saturate_cast< int > (softdouble a)
template<>
int64_t cv::saturate_cast< int64_t > (softfloat a)
template<>
int64_t cv::saturate_cast< int64_t > (softdouble a)
template<>
unsigned cv::saturate_cast< unsigned > (softfloat a)
符号なし整数、符号なし長整数への飽和キャスト -1が0xffffffになるように、意図的に負の数をクリップしない。
template<>
unsigned cv::saturate_cast< unsigned > (softdouble a)
template<>
uint64_t cv::saturate_cast< uint64_t > (softfloat a)
template<>
uint64_t cv::saturate_cast< uint64_t > (softdouble a)
softfloat cv::min (const softfloat &a, const softfloat &b)
最小・最大関数
softdouble cv::min (const softdouble &a, const softdouble &b)
softfloat cv::max (const softfloat &a, const softfloat &b)
softdouble cv::max (const softdouble &a, const softdouble &b)
softfloat cv::abs (softfloat a)
絶対値
softdouble cv::abs (softdouble a)
CV_EXPORTS softfloat cv::exp (const softfloat &a)
指数[【詳解】(英語]
CV_EXPORTS softdouble cv::exp (const softdouble &a)
CV_EXPORTS softfloat cv::log (const softfloat &a)
自然対数[【詳解】(英語]
CV_EXPORTS softdouble cv::log (const softdouble &a)
CV_EXPORTS softfloat cv::pow (const softfloat &a, const softfloat &b)
累乗の演算[【詳解】(英語]
CV_EXPORTS softdouble cv::pow (const softdouble &a, const softdouble &b)
CV_EXPORTS softfloat cv::cbrt (const softfloat &a)
キューブルート[【詳解】(英語]
CV_EXPORTS softdouble cv::sin (const softdouble &a)
符号[【詳解】(英語]
CV_EXPORTS softdouble cv::cos (const softdouble &a)
コサイン[【詳解】(英語]

変数

uint32_t cv::softfloat::v
uint64_t cv::softdouble::v

詳解

SoftFloat is a software implementation of floating-point calculations according to IEEE 754 standard. All calculations are done in integers, that's why they are machine-independent and bit-exact. This library can be useful in accuracy-critical parts like look-up tables generation, tests, etc. OpenCV contains a subset of SoftFloat partially rewritten to C++.

Types

There are two basic types: softfloat and softdouble. These types are binary compatible with float and double types respectively and support conversions to/from them. Other types from original SoftFloat library like fp16 or fp128 were thrown away as well as quiet/signaling NaN support, on-the-fly rounding mode switch and exception flags (though exceptions can be implemented in the future).

Operations

Both types support the following:

関数詳解

cbrt()

CV_EXPORTS softfloat cv::cbrt ( const softfloat & a )

キューブルート

特殊なケース

  • cbrt(NaN)は,NaNです。
  • cbrt(+/-Inf)は+/-Inf

cos()

CV_EXPORTS softdouble cv::cos ( const softdouble & a )

コサイン

特殊なケース

  • cos(Inf)またはcos(NaN)がNaNの場合
  • cos(x)が±1に近いときはcos(x)==±1

exp()

CV_EXPORTS softfloat cv::exp ( const softfloat & a )

指数

特殊なケース

  • exp(NaN)はNaN
  • exp(-Inf) == 0
  • exp(+Inf) == +Inf

fromRaw() [1/2]

static const softfloat cv::softfloat::fromRaw ( const uint32_t a )
inline static

生からの構築

生のバイナリ表現から新しい値を構築する

fromRaw() [2/2]

static softdouble cv::softdouble::fromRaw ( const uint64_t a )
inline static

生からの構築

生のバイナリ表現から新しい値を構築する

getFrac() [1/2]

softfloat cv::softfloat::getFrac ( ) const
inline

小数部の取得

1 <= x < 2 の同一符号の数値を返します。

getFrac() [2/2]

softdouble cv::softdouble::getFrac ( ) const
inline

小数部の取得

1 <= x < 2 の同一符号の数値を返します。

log()

CV_EXPORTS softfloat cv::log ( const softfloat & a )

自然対数

特殊なケース

  • log(NaN)、log(x < 0)はNaN。
  • log(0) == -Inf

mulAdd()

CV_EXPORTS softfloat cv::mulAdd ( const softfloat & a,
const softfloat & b,
const softfloat & c
)

乗算と足し算の融合

(a*b)+cを1回の丸めで計算する。

operator%() [1/2]

softdouble cv::softdouble::operator% ( const softdouble & ) const

リマインダ演算子

SoftFloatのオリジナルマニュアルからの引用です。

IEEE標準の剰余演算は、a - n * b という値を計算します。ここで n は a / b に最も近い整数です。オペランドの相対的な大きさに応じて、剰余関数は他のSoftFloat関数よりも実行にかなり時間がかかることがあります。これは、剰余演算自体の固有の特性であり、SoftFloatの実装上の欠陥ではありません。

operator%() [2/2]

softfloat cv::softfloat::operator% ( const softfloat & ) const

リマインダ演算子

SoftFloatのオリジナルマニュアルからの引用です。

IEEE標準の剰余演算は、a - n * b という値を計算します。ここで n は a / b に最も近い整数です。オペランドの相対的な大きさに応じて、剰余関数は他のSoftFloat関数よりも実行にかなり時間がかかることがあります。これは、剰余演算自体の固有の特性であり、SoftFloatの実装上の欠陥ではありません。

operator==() [1/2]

bool cv::softdouble::operator== ( const softdouble & ) const

比較演算

  • NaNを使った演算はすべてfalseを生成します。
    • 唯一の例外は x が NaN の場合で、任意の y に対して x != y となります。
  • 正と負のゼロは等しい

operator==() [2/2]

bool cv::softfloat::operator== ( const softfloat & ) const

比較演算

  • NaNを使った演算はすべてfalseを生成します。
    • 唯一の例外は x が NaN の場合で、任意の y に対して x != y となります。
  • 正と負のゼロは等しい

pow()

CV_EXPORTS softfloat cv::pow ( const softfloat & a,
const softfloat & b
)

累乗の演算

特殊なケース

  • x**NaNは任意のxに対してNaNです。
  • ( |x| == 1 )**Inf は NaN です。
  • ( |x| > 1 )**+Inf または ( |x| < 1 )**-Inf は +Inf です。
  • ( |x| > 1 )**-Inf または ( |x| < 1 )**+Inf は 0 です。
  • x ** 0 == 1 任意のxに対して
  • x ** 任意のxに対して1 == 1
  • NaN ** yは他のどのyに対してもNaNである
  • Inf**(y < 0) == 0
  • Inf**(y < 0)**yは他のどのyに対しても+Infである
  • (x < 0)**yは他のどのyに対してもNaNである(xが整数に正しく丸められない場合)。
  • 0 ** 0 == 1
  • 0 ** (y < 0) は +Inf
  • 0 ** (y > 0) は 0

setFrac() [1/2]

softdouble cv::softdouble::setFrac ( const softdouble & s ) const
inline

符号付きコピーの構築

パラメータで指定された符号を持つ数値のコピーを構築します。

setFrac() [2/2]

softfloat cv::softfloat::setFrac ( const softfloat & s ) const
inline

符号付きコピーの構築

パラメータで指定された符号を持つ数値のコピーを構築します。

sin()

CV_EXPORTS softdouble cv::sin ( const softdouble & a )

符号

特殊なケース

  • sin(Inf)またはsin(NaN)がNaNの場合
  • sin(x)が0に近いときはsin(x) == x