home | help
std::ratio_add(3)	       C++ Standard Libary	       std::ratio_add(3)

NAME
     std::ratio_add - std::ratio_add

Synopsis
	Defined in header <ratio>
	template< class R1, class R2 >	    (since C++11)
	using ratio_add = /* see below */;

	The alias template std::ratio_add denotes the result of adding two exact
     rational
	fractions represented by the std::ratio specializations R1 and R2.

	The  result  is  a std::ratio specialization std::ratio<U, V>, such that
     given Num ==
	R1::num * R2::den + R2::num * R1::den and Denom  ==  R1::den  *  R2::den
     (computed
	without arithmetic overflow), U is std::ratio<Num, Denom>::num and V is
	std::ratio<Num, Denom>::den.

Notes
	If  U  or  V  is not representable in std::intmax_t, the program is ill-
     formed. If Num
	or Denom is not representable in  std::intmax_t,  the  program	is  ill-
     formed unless the
	implementation yields correct values for U and V.

	The  above definition requires that the result of std::ratio_add<R1, R2>
     be already
	reduced to lowest terms; for example,  std::ratio_add<std::ratio<1,  3>,
     std::ratio<1,
	6>> is the same type as std::ratio<1, 2>.

Example
     // Run this code

      #include <iostream>
      #include <ratio>

      int main()
      {
	  using two_third = std::ratio<2, 3>;
	  using one_sixth = std::ratio<1, 6>;
	  using sum = std::ratio_add<two_third, one_sixth>;

	  std::cout << "2/3 + 1/6 = " << sum::num << '/' << sum::den << '\n';
      }

Output:
      2/3 + 1/6 = 5/6

See also
	ratio_subtract subtracts two ratio objects at compile-time
	(C++11)        (alias template)

http://cppreference.com 	   2024.06.10		       std::ratio_add(3)

home | help