1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <math.h> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <math.h> 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <type_traits> 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert> 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 1683e2c4d877fe2d7793868b1c6a5d9525a7c4d431Marshall Clow#include "hexfloat.h" 170a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_acos() 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(acos((double)0)), double>::value), ""); 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(acosf(0)), float>::value), ""); 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(acosl(0)), long double>::value), ""); 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(acos(1) == 0); 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_asin() 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(asin((double)0)), double>::value), ""); 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(asinf(0)), float>::value), ""); 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(asinl(0)), long double>::value), ""); 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(asin(0) == 0); 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_atan() 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(atan((double)0)), double>::value), ""); 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(atanf(0)), float>::value), ""); 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(atanl(0)), long double>::value), ""); 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(atan(0) == 0); 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_atan2() 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(atan2((double)0, (double)0)), double>::value), ""); 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(atan2f(0,0)), float>::value), ""); 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(atan2l(0,0)), long double>::value), ""); 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(atan2(0,1) == 0); 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_ceil() 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ceil((double)0)), double>::value), ""); 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ceilf(0)), float>::value), ""); 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ceill(0)), long double>::value), ""); 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(ceil(0) == 0); 56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_cos() 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(cos((double)0)), double>::value), ""); 61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(cosf(0)), float>::value), ""); 62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(cosl(0)), long double>::value), ""); 63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(cos(0) == 1); 64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_cosh() 67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(cosh((double)0)), double>::value), ""); 69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(coshf(0)), float>::value), ""); 70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(coshl(0)), long double>::value), ""); 71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(cosh(0) == 1); 72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_exp() 75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(exp((double)0)), double>::value), ""); 77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(expf(0)), float>::value), ""); 78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(expl(0)), long double>::value), ""); 79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(exp(0) == 1); 80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_fabs() 83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fabs((double)0)), double>::value), ""); 85471f3c67db32e9d0592bdd80bfb93765749508a8Marshall Clow static_assert((std::is_same<decltype(fabsf(0.f)), float>::value), ""); 86471f3c67db32e9d0592bdd80bfb93765749508a8Marshall Clow static_assert((std::is_same<decltype(fabsl(0.L)), long double>::value), ""); 87471f3c67db32e9d0592bdd80bfb93765749508a8Marshall Clow assert(fabs(-1.f) == 1); 88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_floor() 91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(floor((double)0)), double>::value), ""); 93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(floorf(0)), float>::value), ""); 94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(floorl(0)), long double>::value), ""); 95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(floor(1) == 1); 96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_fmod() 99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fmod((double)0, (double)0)), double>::value), ""); 101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fmodf(0,0)), float>::value), ""); 102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fmodl(0,0)), long double>::value), ""); 103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(fmod(1.5,1) == .5); 104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_frexp() 107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int ip; 109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(frexp((double)0, &ip)), double>::value), ""); 110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(frexpf(0, &ip)), float>::value), ""); 111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(frexpl(0, &ip)), long double>::value), ""); 112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(frexp(0, &ip) == 0); 113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_ldexp() 116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int ip = 1; 118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ldexp((double)0, ip)), double>::value), ""); 119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ldexpf(0, ip)), float>::value), ""); 120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ldexpl(0, ip)), long double>::value), ""); 121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(ldexp(1, ip) == 2); 122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_log() 125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(log((double)0)), double>::value), ""); 127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(logf(0)), float>::value), ""); 128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(logl(0)), long double>::value), ""); 129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(log(1) == 0); 130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_log10() 133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(log10((double)0)), double>::value), ""); 135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(log10f(0)), float>::value), ""); 136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(log10l(0)), long double>::value), ""); 137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(log10(1) == 0); 138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_modf() 141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(modf((double)0, (double*)0)), double>::value), ""); 143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(modff(0, (float*)0)), float>::value), ""); 144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(modfl(0, (long double*)0)), long double>::value), ""); 145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant double i; 146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(modf(1., &i) == 0); 147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_pow() 150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(pow((double)0, (double)0)), double>::value), ""); 152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(powf(0,0)), float>::value), ""); 153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(powl(0,0)), long double>::value), ""); 154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(pow(1,1) == 1); 155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_sin() 158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(sin((double)0)), double>::value), ""); 160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(sinf(0)), float>::value), ""); 161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(sinl(0)), long double>::value), ""); 162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(sin(0) == 0); 163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_sinh() 166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(sinh((double)0)), double>::value), ""); 168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(sinhf(0)), float>::value), ""); 169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(sinhl(0)), long double>::value), ""); 170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(sinh(0) == 0); 171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_sqrt() 174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(sqrt((double)0)), double>::value), ""); 176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(sqrtf(0)), float>::value), ""); 177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(sqrtl(0)), long double>::value), ""); 178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(sqrt(4) == 2); 179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_tan() 182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tan((double)0)), double>::value), ""); 184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tanf(0)), float>::value), ""); 185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tanl(0)), long double>::value), ""); 186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(tan(0) == 0); 187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_tanh() 190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tanh((double)0)), double>::value), ""); 192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tanhf(0)), float>::value), ""); 193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tanhl(0)), long double>::value), ""); 194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(tanh(0) == 0); 195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_signbit() 198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1990a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(signbit((float)0)), bool>::value), ""); 2000a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(signbit((double)0)), bool>::value), ""); 2010a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(signbit((long double)0)), bool>::value), ""); 202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(signbit(-1.0) == true); 203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_fpclassify() 206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fpclassify((float)0)), int>::value), ""); 208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fpclassify((double)0)), int>::value), ""); 209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fpclassify((long double)0)), int>::value), ""); 210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(fpclassify(-1.0) == FP_NORMAL); 211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_isfinite() 214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2150a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isfinite((float)0)), bool>::value), ""); 2160a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isfinite((double)0)), bool>::value), ""); 2170a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isfinite((long double)0)), bool>::value), ""); 218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(isfinite(-1.0) == true); 219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_isinf() 222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2230a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isinf((float)0)), bool>::value), ""); 2240a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isinf((double)0)), bool>::value), ""); 2250a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isinf((long double)0)), bool>::value), ""); 226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(isinf(-1.0) == false); 227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_isnan() 230bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2310a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isnan((float)0)), bool>::value), ""); 2320a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isnan((double)0)), bool>::value), ""); 2330a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isnan((long double)0)), bool>::value), ""); 234bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(isnan(-1.0) == false); 235bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 236bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 237bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_isnormal() 238bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2390a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isnormal((float)0)), bool>::value), ""); 2400a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isnormal((double)0)), bool>::value), ""); 2410a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isnormal((long double)0)), bool>::value), ""); 242bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(isnormal(-1.0) == true); 243bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 244bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 245bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_isgreater() 246bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2470a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreater((float)0, (float)0)), bool>::value), ""); 2480a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreater((float)0, (double)0)), bool>::value), ""); 2490a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreater((float)0, (long double)0)), bool>::value), ""); 2500a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreater((double)0, (float)0)), bool>::value), ""); 2510a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreater((double)0, (double)0)), bool>::value), ""); 2520a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreater((double)0, (long double)0)), bool>::value), ""); 2530a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreater((long double)0, (float)0)), bool>::value), ""); 2540a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreater((long double)0, (double)0)), bool>::value), ""); 2550a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreater((long double)0, (long double)0)), bool>::value), ""); 256bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(isgreater(-1.0, 0.F) == false); 257bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 258bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_isgreaterequal() 260bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2610a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreaterequal((float)0, (float)0)), bool>::value), ""); 2620a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreaterequal((float)0, (double)0)), bool>::value), ""); 2630a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreaterequal((float)0, (long double)0)), bool>::value), ""); 2640a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreaterequal((double)0, (float)0)), bool>::value), ""); 2650a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreaterequal((double)0, (double)0)), bool>::value), ""); 2660a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreaterequal((double)0, (long double)0)), bool>::value), ""); 2670a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreaterequal((long double)0, (float)0)), bool>::value), ""); 2680a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreaterequal((long double)0, (double)0)), bool>::value), ""); 2690a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isgreaterequal((long double)0, (long double)0)), bool>::value), ""); 270bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(isgreaterequal(-1.0, 0.F) == false); 271bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 272bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 273bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_isless() 274bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2750a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isless((float)0, (float)0)), bool>::value), ""); 2760a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isless((float)0, (double)0)), bool>::value), ""); 2770a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isless((float)0, (long double)0)), bool>::value), ""); 2780a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isless((double)0, (float)0)), bool>::value), ""); 2790a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isless((double)0, (double)0)), bool>::value), ""); 2800a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isless((double)0, (long double)0)), bool>::value), ""); 2810a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isless((long double)0, (float)0)), bool>::value), ""); 2820a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isless((long double)0, (double)0)), bool>::value), ""); 2830a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isless((long double)0, (long double)0)), bool>::value), ""); 284bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(isless(-1.0, 0.F) == true); 285bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 286bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 287bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_islessequal() 288bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2890a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessequal((float)0, (float)0)), bool>::value), ""); 2900a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessequal((float)0, (double)0)), bool>::value), ""); 2910a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessequal((float)0, (long double)0)), bool>::value), ""); 2920a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessequal((double)0, (float)0)), bool>::value), ""); 2930a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessequal((double)0, (double)0)), bool>::value), ""); 2940a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessequal((double)0, (long double)0)), bool>::value), ""); 2950a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessequal((long double)0, (float)0)), bool>::value), ""); 2960a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessequal((long double)0, (double)0)), bool>::value), ""); 2970a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessequal((long double)0, (long double)0)), bool>::value), ""); 298bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(islessequal(-1.0, 0.F) == true); 299bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 300bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 301bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_islessgreater() 302bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3030a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessgreater((float)0, (float)0)), bool>::value), ""); 3040a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessgreater((float)0, (double)0)), bool>::value), ""); 3050a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessgreater((float)0, (long double)0)), bool>::value), ""); 3060a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessgreater((double)0, (float)0)), bool>::value), ""); 3070a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessgreater((double)0, (double)0)), bool>::value), ""); 3080a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessgreater((double)0, (long double)0)), bool>::value), ""); 3090a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessgreater((long double)0, (float)0)), bool>::value), ""); 3100a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessgreater((long double)0, (double)0)), bool>::value), ""); 3110a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(islessgreater((long double)0, (long double)0)), bool>::value), ""); 312bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(islessgreater(-1.0, 0.F) == true); 313bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 314bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 315bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_isunordered() 316bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3170a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isunordered((float)0, (float)0)), bool>::value), ""); 3180a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isunordered((float)0, (double)0)), bool>::value), ""); 3190a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isunordered((float)0, (long double)0)), bool>::value), ""); 3200a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isunordered((double)0, (float)0)), bool>::value), ""); 3210a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isunordered((double)0, (double)0)), bool>::value), ""); 3220a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isunordered((double)0, (long double)0)), bool>::value), ""); 3230a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isunordered((long double)0, (float)0)), bool>::value), ""); 3240a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isunordered((long double)0, (double)0)), bool>::value), ""); 3250a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(isunordered((long double)0, (long double)0)), bool>::value), ""); 326bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(isunordered(-1.0, 0.F) == false); 327bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 328bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 329bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_acosh() 330bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 331bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(acosh((double)0)), double>::value), ""); 332bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(acoshf(0)), float>::value), ""); 333bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(acoshl(0)), long double>::value), ""); 334bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(acosh(1) == 0); 335bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 336bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 337bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_asinh() 338bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 339bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(asinh((double)0)), double>::value), ""); 340bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(asinhf(0)), float>::value), ""); 341bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(asinhl(0)), long double>::value), ""); 342bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(asinh(0) == 0); 343bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 344bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 345bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_atanh() 346bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 347bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(atanh((double)0)), double>::value), ""); 348bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(atanhf(0)), float>::value), ""); 349bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(atanhl(0)), long double>::value), ""); 350bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(atanh(0) == 0); 351bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 352bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 353bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_cbrt() 354bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 355bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(cbrt((double)0)), double>::value), ""); 356bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(cbrtf(0)), float>::value), ""); 357bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(cbrtl(0)), long double>::value), ""); 358bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(cbrt(1) == 1); 359bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 360bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 361bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_copysign() 362bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 363bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(copysign((double)0, (double)0)), double>::value), ""); 364bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(copysignf(0,0)), float>::value), ""); 365bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(copysignl(0,0)), long double>::value), ""); 366bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(copysign(1,1) == 1); 367bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 368bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 369bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_erf() 370bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 371bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(erf((double)0)), double>::value), ""); 372bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(erff(0)), float>::value), ""); 373bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(erfl(0)), long double>::value), ""); 374bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(erf(0) == 0); 375bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 376bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 377bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_erfc() 378bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 379bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(erfc((double)0)), double>::value), ""); 380bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(erfcf(0)), float>::value), ""); 381bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(erfcl(0)), long double>::value), ""); 382bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(erfc(0) == 1); 383bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 384bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 385bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_exp2() 386bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 387bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(exp2((double)0)), double>::value), ""); 388bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(exp2f(0)), float>::value), ""); 389bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(exp2l(0)), long double>::value), ""); 390bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(exp2(1) == 2); 391bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 392bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 393bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_expm1() 394bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 395bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(expm1((double)0)), double>::value), ""); 396bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(expm1f(0)), float>::value), ""); 397bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(expm1l(0)), long double>::value), ""); 398bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(expm1(0) == 0); 399bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 400bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 401bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_fdim() 402bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 403bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fdim((double)0, (double)0)), double>::value), ""); 404bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fdimf(0,0)), float>::value), ""); 405bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fdiml(0,0)), long double>::value), ""); 406bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(fdim(1,0) == 1); 407bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 408bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 409bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_fma() 410bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 411bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fma((double)0, (double)0, (double)0)), double>::value), ""); 412bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fmaf(0,0,0)), float>::value), ""); 413bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fmal(0,0,0)), long double>::value), ""); 414bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(fma(1,1,1) == 2); 415bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 416bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 417bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_fmax() 418bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 419bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fmax((double)0, (double)0)), double>::value), ""); 420bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fmaxf(0,0)), float>::value), ""); 421bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fmaxl(0,0)), long double>::value), ""); 422bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(fmax(1,0) == 1); 423bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 424bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 425bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_fmin() 426bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 427bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fmin((double)0, (double)0)), double>::value), ""); 428bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fminf(0,0)), float>::value), ""); 429bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fminl(0,0)), long double>::value), ""); 430bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(fmin(1,0) == 0); 431bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 432bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 433bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_hypot() 434bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 435bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(hypot((double)0, (double)0)), double>::value), ""); 436bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(hypotf(0,0)), float>::value), ""); 437bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(hypotl(0,0)), long double>::value), ""); 438bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(hypot(3,4) == 5); 439bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 440bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 441bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_ilogb() 442bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 443bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ilogb((double)0)), int>::value), ""); 444bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ilogbf(0)), int>::value), ""); 445bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ilogbl(0)), int>::value), ""); 446bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(ilogb(1) == 0); 447bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 448bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 449bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_lgamma() 450bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 451bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(lgamma((double)0)), double>::value), ""); 452bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(lgammaf(0)), float>::value), ""); 453bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(lgammal(0)), long double>::value), ""); 454bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(lgamma(1) == 0); 455bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 456bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 457bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_llrint() 458bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 459bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(llrint((double)0)), long long>::value), ""); 460bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(llrintf(0)), long long>::value), ""); 461bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(llrintl(0)), long long>::value), ""); 462bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(llrint(1) == 1LL); 463bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 464bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 465bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_llround() 466bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 467bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(llround((double)0)), long long>::value), ""); 468bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(llroundf(0)), long long>::value), ""); 469bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(llroundl(0)), long long>::value), ""); 470bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(llround(1) == 1LL); 471bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 472bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 473bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_log1p() 474bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 475bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(log1p((double)0)), double>::value), ""); 476bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(log1pf(0)), float>::value), ""); 477bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(log1pl(0)), long double>::value), ""); 478bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(log1p(0) == 0); 479bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 480bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 481bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_log2() 482bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 483bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(log2((double)0)), double>::value), ""); 484bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(log2f(0)), float>::value), ""); 485bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(log2l(0)), long double>::value), ""); 486bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(log2(1) == 0); 487bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 488bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 489bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_logb() 490bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 491bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(logb((double)0)), double>::value), ""); 492bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(logbf(0)), float>::value), ""); 493bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(logbl(0)), long double>::value), ""); 494bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(logb(1) == 0); 495bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 496bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 497bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_lrint() 498bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 499bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(lrint((double)0)), long>::value), ""); 500bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(lrintf(0)), long>::value), ""); 501bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(lrintl(0)), long>::value), ""); 502bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(lrint(1) == 1L); 503bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 504bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 505bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_lround() 506bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 507bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(lround((double)0)), long>::value), ""); 508bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(lroundf(0)), long>::value), ""); 509bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(lroundl(0)), long>::value), ""); 510bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(lround(1) == 1L); 511bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 512bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 513bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_nan() 514bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 515bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nan("")), double>::value), ""); 516bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nanf("")), float>::value), ""); 517bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nanl("")), long double>::value), ""); 518bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 519bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 520bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_nearbyint() 521bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 522bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nearbyint((double)0)), double>::value), ""); 523bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nearbyintf(0)), float>::value), ""); 524bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nearbyintl(0)), long double>::value), ""); 525bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(nearbyint(1) == 1); 526bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 527bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 528bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_nextafter() 529bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 530bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nextafter((double)0, (double)0)), double>::value), ""); 531bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nextafterf(0,0)), float>::value), ""); 532bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nextafterl(0,0)), long double>::value), ""); 5330a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant assert(nextafter(0,1) == hexfloat<double>(0x1, 0, -1074)); 534bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 535bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 536bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_nexttoward() 537bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 538bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nexttoward((double)0, (long double)0)), double>::value), ""); 539bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nexttowardf(0, (long double)0)), float>::value), ""); 540bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(nexttowardl(0, (long double)0)), long double>::value), ""); 5410a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant assert(nexttoward(0, 1) == hexfloat<double>(0x1, 0, -1074)); 542bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 543bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 544bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_remainder() 545bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 546bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(remainder((double)0, (double)0)), double>::value), ""); 547bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(remainderf(0,0)), float>::value), ""); 548bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(remainderl(0,0)), long double>::value), ""); 549bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(remainder((int)0, (int)0)), double>::value), ""); 550bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(remainder(0.5,1) == 0.5); 551bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 552bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 553bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_remquo() 554bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 555bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int ip; 556bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(remquo((double)0, (double)0, &ip)), double>::value), ""); 557bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(remquof(0,0, &ip)), float>::value), ""); 558bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(remquol(0,0, &ip)), long double>::value), ""); 559bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(remquo(0.5,1, &ip) == 0.5); 560bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 561bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 562bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_rint() 563bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 564bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(rint((double)0)), double>::value), ""); 565bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(rintf(0)), float>::value), ""); 566bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(rintl(0)), long double>::value), ""); 567bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(rint(1) == 1); 568bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 569bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 570bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_round() 571bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 572bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(round((double)0)), double>::value), ""); 573bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(roundf(0)), float>::value), ""); 574bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(roundl(0)), long double>::value), ""); 575bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(round(1) == 1); 576bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 577bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 578bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_scalbln() 579bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 580bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(scalbln((double)0, (long)0)), double>::value), ""); 581bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(scalblnf(0, (long)0)), float>::value), ""); 582bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(scalblnl(0, (long)0)), long double>::value), ""); 583bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(scalbln(1, 1) == 2); 584bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 585bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 586bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_scalbn() 587bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 588bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(scalbn((double)0, (int)0)), double>::value), ""); 589bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(scalbnf(0, (int)0)), float>::value), ""); 590bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(scalbnl(0, (int)0)), long double>::value), ""); 591bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(scalbn(1, 1) == 2); 592bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 593bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 594bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_tgamma() 595bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 596bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tgamma((double)0)), double>::value), ""); 597bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tgammaf(0)), float>::value), ""); 598bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tgammal(0)), long double>::value), ""); 599bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(tgamma(1) == 1); 600bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 601bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 602bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test_trunc() 603bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 604bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(trunc((double)0)), double>::value), ""); 605bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(truncf(0)), float>::value), ""); 606bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(truncl(0)), long double>::value), ""); 607bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(trunc(1) == 1); 608bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 609bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 610bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 611bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 612bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_acos(); 613bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_asin(); 614bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_atan(); 615bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_atan2(); 616bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_ceil(); 617bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_cos(); 618bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_cosh(); 619bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_exp(); 620bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_fabs(); 621bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_floor(); 622bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_fmod(); 623bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_frexp(); 624bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_ldexp(); 625bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_log(); 626bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_log10(); 627bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_modf(); 628bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_pow(); 629bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_sin(); 630bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_sinh(); 631bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_sqrt(); 632bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_tan(); 633bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_tanh(); 634bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_signbit(); 635bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_fpclassify(); 636bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_isfinite(); 637bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_isinf(); 638bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_isnan(); 639bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_isnormal(); 640bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_isgreater(); 641bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_isgreaterequal(); 642bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_isless(); 643bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_islessequal(); 644bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_islessgreater(); 645bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_isunordered(); 646bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_acosh(); 647bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_asinh(); 648bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_atanh(); 649bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_cbrt(); 650bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_copysign(); 651bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_erf(); 652bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_erfc(); 653bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_exp2(); 654bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_expm1(); 655bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_fdim(); 656bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_fma(); 657bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_fmax(); 658bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_fmin(); 659bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_hypot(); 660bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_ilogb(); 661bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_lgamma(); 662bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_llrint(); 663bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_llround(); 664bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_log1p(); 665bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_log2(); 666bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_logb(); 667bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_lrint(); 668bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_lround(); 669bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_nan(); 670bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_nearbyint(); 671bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_nextafter(); 672bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_nexttoward(); 673bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_remainder(); 674bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_remquo(); 675bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_rint(); 676bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_round(); 677bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_scalbln(); 678bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_scalbn(); 679bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_tgamma(); 680bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test_trunc(); 681bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 682