diff options
Diffstat (limited to 'libstdc++-v3/include/std/ratio')
-rw-r--r-- | libstdc++-v3/include/std/ratio | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/libstdc++-v3/include/std/ratio b/libstdc++-v3/include/std/ratio index 74806c4..b999e31 100644 --- a/libstdc++-v3/include/std/ratio +++ b/libstdc++-v3/include/std/ratio @@ -160,6 +160,8 @@ namespace std static const intmax_t den = __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value; + + typedef ratio<num, den> type; }; template<intmax_t _Num, intmax_t _Den> @@ -182,8 +184,17 @@ namespace std __safe_multiply<_R1::num, (_R2::den / __gcd)>::value, __safe_multiply<_R2::num, (_R1::den / __gcd)>::value>::value, __safe_multiply<_R1::den, (_R2::den / __gcd)>::value> type; + + static const intmax_t num = type::num; + static const intmax_t den = type::den; }; + template<typename _R1, typename _R2> + const intmax_t ratio_add<_R1, _R2>::num; + + template<typename _R1, typename _R2> + const intmax_t ratio_add<_R1, _R2>::den; + /// ratio_subtract template<typename _R1, typename _R2> struct ratio_subtract @@ -191,8 +202,17 @@ namespace std typedef typename ratio_add< _R1, ratio<-_R2::num, _R2::den>>::type type; + + static const intmax_t num = type::num; + static const intmax_t den = type::den; }; + template<typename _R1, typename _R2> + const intmax_t ratio_subtract<_R1, _R2>::num; + + template<typename _R1, typename _R2> + const intmax_t ratio_subtract<_R1, _R2>::den; + /// ratio_multiply template<typename _R1, typename _R2> struct ratio_multiply @@ -209,8 +229,17 @@ namespace std (_R2::num / __gcd2)>::value, __safe_multiply<(_R1::den / __gcd2), (_R2::den / __gcd1)>::value> type; + + static const intmax_t num = type::num; + static const intmax_t den = type::den; }; + template<typename _R1, typename _R2> + const intmax_t ratio_multiply<_R1, _R2>::num; + + template<typename _R1, typename _R2> + const intmax_t ratio_multiply<_R1, _R2>::den; + /// ratio_divide template<typename _R1, typename _R2> struct ratio_divide @@ -220,8 +249,17 @@ namespace std typedef typename ratio_multiply< _R1, ratio<_R2::den, _R2::num>>::type type; + + static const intmax_t num = type::num; + static const intmax_t den = type::den; }; + template<typename _R1, typename _R2> + const intmax_t ratio_divide<_R1, _R2>::num; + + template<typename _R1, typename _R2> + const intmax_t ratio_divide<_R1, _R2>::den; + /// ratio_equal template<typename _R1, typename _R2> struct ratio_equal |