184c899b2STue Ly //===-- Unittests for sincosf ---------------------------------------------===// 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 9*5748ad84Slntue #include "hdr/math_macros.h" 1084c899b2STue Ly #include "src/__support/FPUtil/FPBits.h" 1184c899b2STue Ly #include "src/errno/libc_errno.h" 1284c899b2STue Ly #include "src/math/sincosf.h" 1384c899b2STue Ly #include "test/UnitTest/FPMatcher.h" 1484c899b2STue Ly #include "test/UnitTest/Test.h" 1584c899b2STue Ly 1684c899b2STue Ly #include <stdint.h> 1784c899b2STue Ly 183fd5113cSlntue using LlvmLibcSinCosfTest = LIBC_NAMESPACE::testing::FPTest<float>; 1984c899b2STue Ly 203fd5113cSlntue TEST_F(LlvmLibcSinCosfTest, SpecialNumbers) { 213eb1e6d8Smichaelrj-google LIBC_NAMESPACE::libc_errno = 0; 2284c899b2STue Ly float sin, cos; 2384c899b2STue Ly 24b6bc9d72SGuillaume Chatelet LIBC_NAMESPACE::sincosf(aNaN, &sin, &cos); 2584c899b2STue Ly EXPECT_FP_EQ(aNaN, cos); 2684c899b2STue Ly EXPECT_FP_EQ(aNaN, sin); 2784c899b2STue Ly EXPECT_MATH_ERRNO(0); 2884c899b2STue Ly 29b6bc9d72SGuillaume Chatelet LIBC_NAMESPACE::sincosf(0.0f, &sin, &cos); 3084c899b2STue Ly EXPECT_FP_EQ(1.0f, cos); 3184c899b2STue Ly EXPECT_FP_EQ(0.0f, sin); 3284c899b2STue Ly EXPECT_MATH_ERRNO(0); 3384c899b2STue Ly 34b6bc9d72SGuillaume Chatelet LIBC_NAMESPACE::sincosf(-0.0f, &sin, &cos); 3584c899b2STue Ly EXPECT_FP_EQ(1.0f, cos); 3684c899b2STue Ly EXPECT_FP_EQ(-0.0f, sin); 3784c899b2STue Ly EXPECT_MATH_ERRNO(0); 3884c899b2STue Ly 39b6bc9d72SGuillaume Chatelet LIBC_NAMESPACE::sincosf(inf, &sin, &cos); 4084c899b2STue Ly EXPECT_FP_EQ(aNaN, cos); 4184c899b2STue Ly EXPECT_FP_EQ(aNaN, sin); 4284c899b2STue Ly EXPECT_MATH_ERRNO(EDOM); 4384c899b2STue Ly 44b6bc9d72SGuillaume Chatelet LIBC_NAMESPACE::sincosf(neg_inf, &sin, &cos); 4584c899b2STue Ly EXPECT_FP_EQ(aNaN, cos); 4684c899b2STue Ly EXPECT_FP_EQ(aNaN, sin); 4784c899b2STue Ly EXPECT_MATH_ERRNO(EDOM); 4884c899b2STue Ly } 49