184c899b2STue Ly //===-- Unittests for hypotf ----------------------------------------------===// 284c899b2STue Ly // 384c899b2STue Ly // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 484c899b2STue Ly // See https://llvm.org/LICENSE.txt for license information. 584c899b2STue Ly // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 684c899b2STue Ly // 784c899b2STue Ly //===----------------------------------------------------------------------===// 884c899b2STue Ly 984c899b2STue Ly #include "HypotTest.h" 1084c899b2STue Ly 1184c899b2STue Ly #include "src/math/hypotf.h" 1284c899b2STue Ly 1384c899b2STue Ly using LlvmLibcHypotfTest = HypotTestTemplate<float>; 1484c899b2STue Ly 1584c899b2STue Ly TEST_F(LlvmLibcHypotfTest, SpecialNumbers) { 16b6bc9d72SGuillaume Chatelet test_special_numbers(&LIBC_NAMESPACE::hypotf); 1784c899b2STue Ly } 18*0f4b3c40Slntue 19*0f4b3c40Slntue #ifdef LIBC_TEST_FTZ_DAZ 20*0f4b3c40Slntue 21*0f4b3c40Slntue using namespace LIBC_NAMESPACE::testing; 22*0f4b3c40Slntue 23*0f4b3c40Slntue TEST_F(LlvmLibcHypotfTest, FTZMode) { 24*0f4b3c40Slntue ModifyMXCSR mxcsr(FTZ); 25*0f4b3c40Slntue 26*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(min_denormal, min_denormal)); 27*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(min_denormal, max_denormal)); 28*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(max_denormal, min_denormal)); 29*0f4b3c40Slntue EXPECT_FP_EQ(0x1.6a09e4p-126f, 30*0f4b3c40Slntue LIBC_NAMESPACE::hypotf(max_denormal, max_denormal)); 31*0f4b3c40Slntue } 32*0f4b3c40Slntue 33*0f4b3c40Slntue TEST_F(LlvmLibcHypotfTest, DAZMode) { 34*0f4b3c40Slntue ModifyMXCSR mxcsr(DAZ); 35*0f4b3c40Slntue 36*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(min_denormal, min_denormal)); 37*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(min_denormal, max_denormal)); 38*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(max_denormal, min_denormal)); 39*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(max_denormal, max_denormal)); 40*0f4b3c40Slntue } 41*0f4b3c40Slntue 42*0f4b3c40Slntue TEST_F(LlvmLibcHypotfTest, FTZDAZMode) { 43*0f4b3c40Slntue ModifyMXCSR mxcsr(FTZ | DAZ); 44*0f4b3c40Slntue 45*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(min_denormal, min_denormal)); 46*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(min_denormal, max_denormal)); 47*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(max_denormal, min_denormal)); 48*0f4b3c40Slntue EXPECT_FP_EQ(0.0f, LIBC_NAMESPACE::hypotf(max_denormal, max_denormal)); 49*0f4b3c40Slntue } 50*0f4b3c40Slntue 51*0f4b3c40Slntue #endif 52