int main(){ Rat one_half = Rat(1, 2); Rat one_third = Rat(1, 3); std::cerr << one_half << std::endl; std::cerr << one_third << std::endl; std::cerr << one_half + one_third << std::endl; std::cerr << one_half + one_third << std::endl; std::cerr << linear_combination(1, 2, 3, 4) << std::endl; std::cerr << linear_combination(one_half, one_half, one_third, one_third) << std::endl; }
int main() { using Rat = __gnu_cxx::_Rational<int>; std::cout << Rat(1, 2) + Rat(1, 3) << '\n'; std::cout << Rat(1, 2) - Rat(1, 3) << '\n'; std::cout << Rat(1, 2) * Rat(1, 3) << '\n'; std::cout << Rat(1, 2) / Rat(1, 3) << '\n'; __gnu_cxx::_Polynomial<Rat> rpoly{{1,2}, {3, 4}, {5, 6}, {7, 8}}; std::cout << "P = " << rpoly << '\n'; for (int i = 0; i <= 10; ++i) std::cout << "P(" << i << ") = " << rpoly(i*1.0) << '\n'; }
Rat operator*(const Rat& r) //*を計算する { return Rat((GetNumer() * r.GetNumer()), (GetDenom() * r.GetDenom())); }
Rat operator+(const Rat& r) //+を計算する { return Rat(((GetNumer() * r.GetDenom()) + (GetDenom() * r.GetNumer())), (GetDenom() * r.GetDenom())); }
Rat operator - ( ) const { return Rat(-num, den); }
static Rat div(const Rat &a, const Rat &b){ return Rat(a.num * b.den, a.den * b.num); }
static Rat mul(const Rat &a, const Rat &b){ return Rat(a.num * b.num, a.den * b.den); }
static Rat sub(const Rat &a, const Rat &b){ return Rat(a.num * b.den - a.den*b.num, a.den * b.den); }
static Rat add(const Rat &a, const Rat &b){ return Rat(a.num * b.den + a.den*b.num, a.den * b.den); }
Rat inv() const { return Rat(den, num); }