Home | History | Annotate | Download | only in ratio.comparison
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // test ratio_less
     11 
     12 #include <ratio>
     13 
     14 int main()
     15 {
     16     {
     17     typedef std::ratio<1, 1> R1;
     18     typedef std::ratio<1, 1> R2;
     19     static_assert((!std::ratio_less<R1, R2>::value), "");
     20     }
     21     {
     22     typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1;
     23     typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2;
     24     static_assert((!std::ratio_less<R1, R2>::value), "");
     25     }
     26     {
     27     typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1;
     28     typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2;
     29     static_assert((!std::ratio_less<R1, R2>::value), "");
     30     }
     31     {
     32     typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1;
     33     typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R2;
     34     static_assert((!std::ratio_less<R1, R2>::value), "");
     35     }
     36     {
     37     typedef std::ratio<1, 1> R1;
     38     typedef std::ratio<1, -1> R2;
     39     static_assert((!std::ratio_less<R1, R2>::value), "");
     40     }
     41     {
     42     typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1;
     43     typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2;
     44     static_assert((!std::ratio_less<R1, R2>::value), "");
     45     }
     46     {
     47     typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1;
     48     typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2;
     49     static_assert((std::ratio_less<R1, R2>::value), "");
     50     }
     51     {
     52     typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1;
     53     typedef std::ratio<1, -0x7FFFFFFFFFFFFFFFLL> R2;
     54     static_assert((!std::ratio_less<R1, R2>::value), "");
     55     }
     56     {
     57     typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R1;
     58     typedef std::ratio<0x7FFFFFFFFFFFFFFDLL, 0x7FFFFFFFFFFFFFFCLL> R2;
     59     static_assert((std::ratio_less<R1, R2>::value), "");
     60     }
     61     {
     62     typedef std::ratio<0x7FFFFFFFFFFFFFFDLL, 0x7FFFFFFFFFFFFFFCLL> R1;
     63     typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R2;
     64     static_assert((!std::ratio_less<R1, R2>::value), "");
     65     }
     66     {
     67     typedef std::ratio<-0x7FFFFFFFFFFFFFFDLL, 0x7FFFFFFFFFFFFFFCLL> R1;
     68     typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R2;
     69     static_assert((std::ratio_less<R1, R2>::value), "");
     70     }
     71     {
     72     typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R1;
     73     typedef std::ratio<0x7FFFFFFFFFFFFFFELL, 0x7FFFFFFFFFFFFFFDLL> R2;
     74     static_assert((std::ratio_less<R1, R2>::value), "");
     75     }
     76     {
     77     typedef std::ratio<641981, 1339063> R1;
     78     typedef std::ratio<1291640, 2694141LL> R2;
     79     static_assert((!std::ratio_less<R1, R2>::value), "");
     80     }
     81     {
     82     typedef std::ratio<1291640, 2694141LL> R1;
     83     typedef std::ratio<641981, 1339063> R2;
     84     static_assert((std::ratio_less<R1, R2>::value), "");
     85     }
     86 }
     87