brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 93c6765 Raw
63 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// test numeric_limits10 11// infinity()12 13#include <limits>14#include <cfloat>15#include <cassert>16 17#include "test_macros.h"18 19template <class T>20void21test(T expected)22{23    assert(std::numeric_limits<T>::infinity() == expected);24    assert(std::numeric_limits<const T>::infinity() == expected);25    assert(std::numeric_limits<volatile T>::infinity() == expected);26    assert(std::numeric_limits<const volatile T>::infinity() == expected);27}28 29extern float zero;30 31int main(int, char**)32{33    test<bool>(false);34    test<char>(0);35    test<signed char>(0);36    test<unsigned char>(0);37    test<wchar_t>(0);38#if TEST_STD_VER > 17 && defined(__cpp_char8_t)39    test<char8_t>(0);40#endif41    test<char16_t>(0);42    test<char32_t>(0);43    test<short>(0);44    test<unsigned short>(0);45    test<int>(0);46    test<unsigned int>(0);47    test<long>(0);48    test<unsigned long>(0);49    test<long long>(0);50    test<unsigned long long>(0);51#ifndef TEST_HAS_NO_INT12852    test<__int128_t>(0);53    test<__uint128_t>(0);54#endif55    test<float>(1.f/zero);56    test<double>(1./zero);57    test<long double>(1./zero);58 59  return 0;60}61 62float zero = 0;63