15a83710eSEric Fiselier //===----------------------------------------------------------------------===//
25a83710eSEric Fiselier //
357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65a83710eSEric Fiselier //
75a83710eSEric Fiselier //===----------------------------------------------------------------------===//
85a83710eSEric Fiselier
960d5e0e0SMarshall Clow // test ratio: The static data members num and den shall have the common
105a83710eSEric Fiselier // divisor of the absolute values of N and D:
115a83710eSEric Fiselier
125a83710eSEric Fiselier #include <ratio>
135a83710eSEric Fiselier
14*7fc6a556SMarshall Clow #include "test_macros.h"
15*7fc6a556SMarshall Clow
165a83710eSEric Fiselier template <long long N, long long D, long long eN, long long eD>
test()175a83710eSEric Fiselier void test()
185a83710eSEric Fiselier {
195a83710eSEric Fiselier static_assert((std::ratio<N, D>::num == eN), "");
205a83710eSEric Fiselier static_assert((std::ratio<N, D>::den == eD), "");
215a83710eSEric Fiselier }
225a83710eSEric Fiselier
main(int,char **)232df59c50SJF Bastien int main(int, char**)
245a83710eSEric Fiselier {
255a83710eSEric Fiselier test<1, 1, 1, 1>();
265a83710eSEric Fiselier test<1, 10, 1, 10>();
275a83710eSEric Fiselier test<10, 10, 1, 1>();
285a83710eSEric Fiselier test<10, 1, 10, 1>();
295a83710eSEric Fiselier test<12, 4, 3, 1>();
305a83710eSEric Fiselier test<12, -4, -3, 1>();
315a83710eSEric Fiselier test<-12, 4, -3, 1>();
325a83710eSEric Fiselier test<-12, -4, 3, 1>();
335a83710eSEric Fiselier test<4, 12, 1, 3>();
345a83710eSEric Fiselier test<4, -12, -1, 3>();
355a83710eSEric Fiselier test<-4, 12, -1, 3>();
365a83710eSEric Fiselier test<-4, -12, 1, 3>();
375a83710eSEric Fiselier test<222, 333, 2, 3>();
385a83710eSEric Fiselier test<222, -333, -2, 3>();
395a83710eSEric Fiselier test<-222, 333, -2, 3>();
405a83710eSEric Fiselier test<-222, -333, 2, 3>();
415a83710eSEric Fiselier test<0x7FFFFFFFFFFFFFFFLL, 127, 72624976668147841LL, 1>();
425a83710eSEric Fiselier test<-0x7FFFFFFFFFFFFFFFLL, 127, -72624976668147841LL, 1>();
435a83710eSEric Fiselier test<0x7FFFFFFFFFFFFFFFLL, -127, -72624976668147841LL, 1>();
445a83710eSEric Fiselier test<-0x7FFFFFFFFFFFFFFFLL, -127, 72624976668147841LL, 1>();
452df59c50SJF Bastien
462df59c50SJF Bastien return 0;
475a83710eSEric Fiselier }
48