algo — C++23 日本語リファレンス GitHub

Fraction

クラス · 分数ライブラリ

template <integer_like T = std::int64_t>
struct Fraction : internal::field_base;

概要

分数ライブラリ

テンプレートパラメータ

名前 説明
T 分子・分母を保持する整数型(既定は std::int64_t)。integer_like を満たせば BigInt など任意精度型も指定できる。

構築・破棄

名前 説明 計算量
(constructor) (1) 0を構築する
(2) 分子 _x、分母 _y の既約分数を構築する
(1) $T$ の構築 $O(1)$ 回分
(2) $M=\max(|_x|,|_y|)$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復

メンバ関数

名前 説明 計算量
to_double doubleへ変換する $T$ から double への変換 $O(1)$ 回分

演算子

名前 説明 計算量
operator+= rhsを加算して既約化する 値の大きさを $M$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
operator-= rhsを減算して既約化する 値の大きさを $M$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
operator*= rhsを乗算して既約化する 値の大きさを $M$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
operator/= rhsで除算して既約化する 値の大きさを $M$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
operator++ (1) 1を加算する
(2) 1を加算する前の値を返す
(1) $T$ の加算 $O(1)$ 回分
(2) $T$ のコピーと加算 $O(1)$ 回分
operator-- (1) 1を減算する
(2) 1を減算する前の値を返す
(1) $T$ の減算 $O(1)$ 回分
(2) $T$ のコピーと減算 $O(1)$ 回分
operator- (1) 符号を反転した値を返す
(2) rhsとの差を返す
値の大きさを $M$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
operator+ rhsとの和を返す 値の大きさを $M$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
operator* rhsとの積を返す 値の大きさを $M$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
operator/ rhsによる商を返す 値の大きさを $M$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
operator== 同じ分数か返す $T$ の比較 $O(1)$ 回分
operator<=> 大小を比較する $T$ の乗算 $O(1)$ 回分
operator<< 浮動小数点数として出力する $T$ から double への変換 $O(1)$ 回分
operator>> 10進小数を厳密な分数として入力する 入力長を $n$ として $O(n)$ と、$T$ 上の既約化1回分

メンバの詳細

(constructor)

// (1)
Fraction();

// (2)
Fraction(T _x, T _y = T(1));

(1) 0を構築する

(2) 分子 _x、分母 _y の既約分数を構築する

operator++

// (1)
Fraction &operator++();

// (2)
Fraction operator++(int);

(1) 1を加算する

(2) 1を加算する前の値を返す

operator–

// (1)
Fraction &operator--();

// (2)
Fraction operator--(int);

(1) 1を減算する

(2) 1を減算する前の値を返す

operator-

// (1)
Fraction operator-() const;

// (2)
Fraction operator-(const Fraction &rhs) const;

(1) 符号を反転した値を返す

(2) rhsとの差を返す

関連項目