brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 2b2fa75 Raw
65 lines · cpp
1//===-- Unittests for acos ------------------------------------------------===//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#include "hdr/errno_macros.h"10#include "hdr/fenv_macros.h"11#include "src/math/acos.h"12#include "test/UnitTest/FPMatcher.h"13#include "test/UnitTest/Test.h"14 15using LlvmLibcAcosTest = LIBC_NAMESPACE::testing::FPTest<double>;16 17TEST_F(LlvmLibcAcosTest, SpecialNumbers) {18  EXPECT_FP_EQ_WITH_EXCEPTION_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::acos(sNaN),19                                           FE_INVALID);20  EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::acos(aNaN));21  EXPECT_MATH_ERRNO(0);22  EXPECT_FP_EQ(0x1.921fb54442d18p0, LIBC_NAMESPACE::acos(zero));23  EXPECT_FP_EQ(0x1.921fb54442d18p0, LIBC_NAMESPACE::acos(neg_zero));24 25  EXPECT_FP_EQ_WITH_EXCEPTION_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::acos(inf),26                                           FE_INVALID);27  EXPECT_MATH_ERRNO(EDOM);28  EXPECT_FP_EQ_WITH_EXCEPTION_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::acos(neg_inf),29                                           FE_INVALID);30  EXPECT_MATH_ERRNO(EDOM);31  EXPECT_FP_EQ_WITH_EXCEPTION_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::acos(2.0),32                                           FE_INVALID);33  EXPECT_MATH_ERRNO(EDOM);34  EXPECT_FP_EQ_WITH_EXCEPTION_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::acos(-2.0),35                                           FE_INVALID);36  EXPECT_MATH_ERRNO(EDOM);37  EXPECT_FP_EQ(zero, LIBC_NAMESPACE::acos(1.0));38  EXPECT_FP_EQ(0x1.921fb54442d18p1, LIBC_NAMESPACE::acos(-1.0));39  EXPECT_FP_EQ(0x1.921fb54442d18p0, LIBC_NAMESPACE::acos(0x1.0p-54));40}41 42#ifdef LIBC_TEST_FTZ_DAZ43 44using namespace LIBC_NAMESPACE::testing;45 46TEST_F(LlvmLibcAcosTest, FTZMode) {47  ModifyMXCSR mxcsr(FTZ);48 49  EXPECT_FP_EQ(0x1.921fb54442d18p0, LIBC_NAMESPACE::acos(min_denormal));50}51 52TEST_F(LlvmLibcAcosTest, DAZMode) {53  ModifyMXCSR mxcsr(DAZ);54 55  EXPECT_FP_EQ(0x1.921fb54442d18p0, LIBC_NAMESPACE::acos(min_denormal));56}57 58TEST_F(LlvmLibcAcosTest, FTZDAZMode) {59  ModifyMXCSR mxcsr(FTZ | DAZ);60 61  EXPECT_FP_EQ(0x1.921fb54442d18p0, LIBC_NAMESPACE::acos(min_denormal));62}63 64#endif65