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 14int 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