1b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// The LLVM Compiler Infrastructure 4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// This file is dual licensed under the MIT and the University of Illinois Open 6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Source Licenses. See LICENSE.TXT for details. 7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// test ratio_subtract 11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <ratio> 13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main() 15b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 17b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1, 1> R1; 18b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1, 1> R2; 19b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio_subtract<R1, R2>::type R; 20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert(R::num == 0 && R::den == 1, ""); 21b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 22b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1, 2> R1; 24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1, 1> R2; 25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio_subtract<R1, R2>::type R; 26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert(R::num == -1 && R::den == 2, ""); 27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<-1, 2> R1; 30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1, 1> R2; 31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio_subtract<R1, R2>::type R; 32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert(R::num == -3 && R::den == 2, ""); 33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1, -2> R1; 36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1, 1> R2; 37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio_subtract<R1, R2>::type R; 38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert(R::num == -3 && R::den == 2, ""); 39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 41b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1, 2> R1; 42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<-1, 1> R2; 43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio_subtract<R1, R2>::type R; 44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert(R::num == 3 && R::den == 2, ""); 45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1, 2> R1; 48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1, -1> R2; 49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio_subtract<R1, R2>::type R; 50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert(R::num == 3 && R::den == 2, ""); 51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<56987354, 467584654> R1; 54b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<544668, 22145> R2; 55b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio_subtract<R1, R2>::type R; 56b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert(R::num == -126708206685271LL && R::den == 5177331081415LL, ""); 57b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 58b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 59b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<0> R1; 60b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<0> R2; 61b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio_subtract<R1, R2>::type R; 62b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert(R::num == 0 && R::den == 1, ""); 63b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 64b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 65b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1> R1; 66b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<0> R2; 67b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio_subtract<R1, R2>::type R; 68b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert(R::num == 1 && R::den == 1, ""); 69b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 70b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 71b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<0> R1; 72b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio<1> R2; 73b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::ratio_subtract<R1, R2>::type R; 74b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert(R::num == -1 && R::den == 1, ""); 75b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 76b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 77