52 lines · cpp
1//===-- Unittests for sincosf ---------------------------------------------===//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/math_macros.h"11#include "hdr/stdint_proxy.h"12#include "src/__support/FPUtil/FPBits.h"13#include "src/math/sincosf.h"14#include "test/UnitTest/FPMatcher.h"15#include "test/UnitTest/Test.h"16 17using LlvmLibcSinCosfTest = LIBC_NAMESPACE::testing::FPTest<float>;18 19TEST_F(LlvmLibcSinCosfTest, SpecialNumbers) {20 float sin, cos;21 22 LIBC_NAMESPACE::sincosf(sNaN, &sin, &cos);23 EXPECT_FP_EQ(aNaN, cos);24 EXPECT_FP_EQ(aNaN, sin);25 EXPECT_MATH_ERRNO(0);26 27 LIBC_NAMESPACE::sincosf(aNaN, &sin, &cos);28 EXPECT_FP_EQ(aNaN, cos);29 EXPECT_FP_EQ(aNaN, sin);30 EXPECT_MATH_ERRNO(0);31 32 LIBC_NAMESPACE::sincosf(0.0f, &sin, &cos);33 EXPECT_FP_EQ(1.0f, cos);34 EXPECT_FP_EQ(0.0f, sin);35 EXPECT_MATH_ERRNO(0);36 37 LIBC_NAMESPACE::sincosf(-0.0f, &sin, &cos);38 EXPECT_FP_EQ(1.0f, cos);39 EXPECT_FP_EQ(-0.0f, sin);40 EXPECT_MATH_ERRNO(0);41 42 LIBC_NAMESPACE::sincosf(inf, &sin, &cos);43 EXPECT_FP_EQ(aNaN, cos);44 EXPECT_FP_EQ(aNaN, sin);45 EXPECT_MATH_ERRNO(EDOM);46 47 LIBC_NAMESPACE::sincosf(neg_inf, &sin, &cos);48 EXPECT_FP_EQ(aNaN, cos);49 EXPECT_FP_EQ(aNaN, sin);50 EXPECT_MATH_ERRNO(EDOM);51}52