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を構築する
- 計算量: $T$ の構築 $O(1)$ 回分
(2) 分子 _x、分母 _y の既約分数を構築する
- 計算量: $M=\max(|_x|,|_y|)$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
operator++
// (1)
Fraction &operator++();
// (2)
Fraction operator++(int);
(1) 1を加算する
- 計算量: $T$ の加算 $O(1)$ 回分
(2) 1を加算する前の値を返す
- 計算量: $T$ のコピーと加算 $O(1)$ 回分
operator–
// (1)
Fraction &operator--();
// (2)
Fraction operator--(int);
(1) 1を減算する
- 計算量: $T$ の減算 $O(1)$ 回分
(2) 1を減算する前の値を返す
- 計算量: $T$ のコピーと減算 $O(1)$ 回分
operator-
// (1)
Fraction operator-() const;
// (2)
Fraction operator-(const Fraction &rhs) const;
(1) 符号を反転した値を返す
- 計算量: 値の大きさを $M$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
(2) rhsとの差を返す
- 計算量: 値の大きさを $M$ として、$T$ 上の Euclid 法 $O(\log M)$ 反復
関連項目
integer_like— Fraction の要素型に必要な整数演算を表す concept