]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
6bf7bf6600ceb36d9d0d802de3eb7a5c0faecf62
1 // { dg-do run { target c++11 } }
2 // { dg-require-cstdint "" }
4 // 2008-07-03 Chris Fairles <chris.fairles@gmail.com>
6 // Copyright (C) 2008-2016 Free Software Foundation, Inc.
8 // This file is part of the GNU ISO C++ Library. This library is free
9 // software; you can redistribute it and/or modify it under the
10 // terms of the GNU General Public License as published by the
11 // Free Software Foundation; either version 3, or (at your option)
14 // This library is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 // GNU General Public License for more details.
19 // You should have received a copy of the GNU General Public License
20 // along with this library; see the file COPYING3. If not see
21 // <http://www.gnu.org/licenses/>.
24 #include <testsuite_hooks.h>
26 typedef std::ratio
<1, INTMAX_MAX
> one_over_max
;
27 typedef std::ratio
<2, INTMAX_MAX
> two_over_max
;
28 typedef std::ratio
<INTMAX_MAX
, 1> max_over_one
;
29 typedef std::ratio
<INTMAX_MAX
, 2> max_over_two
;
34 bool test
__attribute__((unused
)) = true;
36 std::ratio_add
<one_over_max
, one_over_max
>::type r1
;
38 VERIFY( r1
.num
== two_over_max::num
);
39 VERIFY( r1
.den
== two_over_max::den
);
42 std::ratio
<INTMAX_MAX
/ 2, INTMAX_MAX
/ 2>,
43 std::ratio
<INTMAX_MAX
/ 2 , INTMAX_MAX
/ 2 + 1>>::type r2
;
45 VERIFY( r2
.num
== INTMAX_MAX
);
46 VERIFY( r2
.den
== (INTMAX_MAX
/ 2) + 1 );
52 bool test
__attribute__((unused
)) = true;
54 std::ratio_subtract
<one_over_max
, one_over_max
>::type r1
;
60 std::ratio
<INTMAX_MAX
/ 2, INTMAX_MAX
/ 2>,
61 std::ratio
<INTMAX_MAX
/ 2 , INTMAX_MAX
/ 2 + 1>>::type r2
;
63 VERIFY( r2
.num
== 1 );
64 VERIFY( r2
.den
== (INTMAX_MAX
/ 2) + 1 );