brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · fdd1ba1 Raw
57 lines · cpp
1//===-- Unittests for asin ------------------------------------------------===//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/fenv_macros.h"10#include "src/math/asin.h"11#include "test/UnitTest/FPMatcher.h"12#include "test/UnitTest/Test.h"13 14using LlvmLibcAsinTest = LIBC_NAMESPACE::testing::FPTest<double>;15 16TEST_F(LlvmLibcAsinTest, SpecialNumbers) {17  EXPECT_FP_EQ_WITH_EXCEPTION_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::asin(sNaN),18                                           FE_INVALID);19  EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::asin(aNaN));20  EXPECT_FP_EQ_ALL_ROUNDING(zero, LIBC_NAMESPACE::asin(zero));21  EXPECT_FP_EQ_ALL_ROUNDING(neg_zero, LIBC_NAMESPACE::asin(neg_zero));22  EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::asin(inf));23  EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::asin(neg_inf));24  EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::asin(2.0));25  EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::asin(-2.0));26  EXPECT_FP_EQ(0x1.921fb54442d18p0, LIBC_NAMESPACE::asin(1.0));27  EXPECT_FP_EQ(-0x1.921fb54442d18p0, LIBC_NAMESPACE::asin(-1.0));28}29 30#ifdef LIBC_TEST_FTZ_DAZ31 32using namespace LIBC_NAMESPACE::testing;33 34// With FTZ/DAZ flags are set, when the inputs are denormal, the output bit35// pattern might not be exactly 0, but they should all be equal to 0 as floating36// points.37 38TEST_F(LlvmLibcAsinTest, FTZMode) {39  ModifyMXCSR mxcsr(FTZ);40 41  EXPECT_TRUE(zero == LIBC_NAMESPACE::asin(min_denormal));42}43 44TEST_F(LlvmLibcAsinTest, DAZMode) {45  ModifyMXCSR mxcsr(DAZ);46 47  EXPECT_TRUE(zero == LIBC_NAMESPACE::asin(min_denormal));48}49 50TEST_F(LlvmLibcAsinTest, FTZDAZMode) {51  ModifyMXCSR mxcsr(FTZ | DAZ);52 53  EXPECT_TRUE(zero == LIBC_NAMESPACE::asin(min_denormal));54}55 56#endif57